DPDK patches and discussions
 help / color / mirror / Atom feed
From: Aaron Conole <aconole@redhat.com>
To: "Juraj Linkeš" <juraj.linkes@pantheon.tech>
Cc: "dev\@dpdk.org" <dev@dpdk.org>,
	Bruce Richardson <bruce.richardson@intel.com>,
	David Hunt <david.hunt@intel.com>,
	Anatoly Burakov <anatoly.burakov@intel.com>
Subject: Re: [dpdk-dev] Build errors due to duplicate version.map entries in librte_power
Date: Mon, 22 Feb 2021 14:50:18 -0500	[thread overview]
Message-ID: <f7ttuq33mrp.fsf@dhcp-25.97.bos.redhat.com> (raw)
In-Reply-To: <c0bc15d4c60b49e5863f22570706360c@pantheon.tech> ("Juraj \=\?utf-8\?Q\?Linke\=C5\=A1\=22's\?\= message of "Mon, 22 Feb 2021 10:31:15 +0000")

Juraj Linkeš <juraj.linkes@pantheon.tech> writes:

> This seems to have gone unnoticed.
>
> lib/librte_power/version.map specifies
> rte_power_guest_channel_send_msg both under DPDK_21 and EXPERIMENTAL.
>
> This is causing the clang cross-compile job to always fail with the error Aaron provided:
> ld.lld: error: duplicate symbol 'rte_power_guest_channel_send_msg' in version script
>
> Only the clang cross compile jobs are failing. This could be due to
> them using the LLVM linker (ld.lld) and the other clang jobs using the
> default linker.

The LLVM linker might not support all the same symbol versioning - but
ALSO I don't find what we're doing particularly correct - at least
according to:

   https://www.akkadia.org/drepper/dsohowto.pdf

There doesn't seem to be any case where we would have the symbol appear
in multiple versions without using an alias in the code.  And if the
symbol is changed in an incompatible way, then we've really done the
wrong thing.

> I have two questions about this:
> 1. Is this a real failure?

Maybe.  I think we probably wrote a bad version.map, but I don't know
the history of these symbols.  David?  Anything?

> 2. If this is a real failure, should we also use ld.lld in the other clang jobs?

We need to know if this is also an area where the LLVM linker doesn't
support the same featureset as GNU.

> Thanks,
> Juraj
>
>> -----Original Message-----
>> From: dev <dev-bounces@dpdk.org> On Behalf Of Aaron Conole
>> Sent: Monday, February 15, 2021 8:18 PM
>> To: dev@dpdk.org
>> Cc: Bruce Richardson <bruce.richardson@intel.com>; David Hunt
>> <david.hunt@intel.com>; Anatoly Burakov <anatoly.burakov@intel.com>
>> Subject: [dpdk-dev] Build errors due to duplicate version.map entries in
>> librte_power
>> 
>> Greetings,
>> 
>> During CI runs, I've noticed lots of failures from the Travis-CI side all related to
>> librte_power/version.map containing some duplicate symbols.  It seems commit
>> 4d3892dcd77b ("power: make channel message functions public") made the
>> following hunk:
>> 
>> diff --git a/lib/librte_power/version.map b/lib/librte_power/version.map index
>> 69ca9af616..13f0af3b2d 100644
>> --- a/lib/librte_power/version.map
>> +++ b/lib/librte_power/version.map
>> @@ -34,4 +34,8 @@ EXPERIMENTAL {
>>         rte_power_guest_channel_receive_msg;
>>         rte_power_poll_stat_fetch;
>>         rte_power_poll_stat_update;
>> +
>> +       # added in 21.02
>> +       rte_power_guest_channel_receive_msg;
>> +       rte_power_guest_channel_send_msg;
>>  };
>> 
>> 
>> As can be seen, rte_power_guest_channel_receive_msg was added already (it's
>> present in the hunk itself).  The rte_power_guest_channel_send_msg function
>> was added as part of 85ff364f3bd3 ("build: align symbols with global ABI
>> version").
>> 
>> I guess it may not be allowed to have duplicate symbols here, because in travis, I
>> see (only for some builds):
>> 
>> clang  -o lib/librte_power.so.21.1
>> 'lib/lib@@rte_power@sta/librte_power_rte_power.c.o'
>> 'lib/lib@@rte_power@sta/librte_power_power_acpi_cpufreq.c.o'
>> 'lib/lib@@rte_power@sta/librte_power_power_kvm_vm.c.o'
>> 'lib/lib@@rte_power@sta/librte_power_guest_channel.c.o'
>> 'lib/lib@@rte_power@sta/librte_power_rte_power_empty_poll.c.o'
>> 'lib/lib@@rte_power@sta/librte_power_power_pstate_cpufreq.c.o'
>> 'lib/lib@@rte_power@sta/librte_power_rte_power_pmd_mgmt.c.o'
>> 'lib/lib@@rte_power@sta/librte_power_power_common.c.o' -Wl,--no-
>> undefined -Wl,--as-needed -shared -fPIC -Wl,--start-group -Wl,-
>> soname,librte_power.so.21 -Wl,--no-as-needed -pthread -lm -ldl
>> lib/librte_eal.so.21.1 lib/librte_kvargs.so.21.1 lib/librte_telemetry.so.21.1
>> lib/librte_timer.so.21.1 lib/librte_ethdev.so.21.1 lib/librte_net.so.21.1
>> lib/librte_mbuf.so.21.1 lib/librte_mempool.so.21.1 lib/librte_ring.so.21.1
>> lib/librte_meter.so.21.1 -Wl,--end-group -Wl,--version-
>> script=/home/travis/build/ovsrobot/dpdk/lib/librte_power/version.map '-Wl,-
>> rpath,$ORIGIN/' -Wl,-rpath-link,/home/travis/build/ovsrobot/dpdk/build/lib -
>> target aarch64-linux-gnu -fuse-ld=lld --gcc-toolchain=/usr
>> 
>> ld.lld: error: duplicate symbol 'rte_power_guest_channel_send_msg' in version
>> script
>> 
>> Thoughts?
>> 


      reply	other threads:[~2021-02-22 19:50 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-15 19:18 Aaron Conole
2021-02-22 10:31 ` Juraj Linkeš
2021-02-22 19:50   ` Aaron Conole [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f7ttuq33mrp.fsf@dhcp-25.97.bos.redhat.com \
    --to=aconole@redhat.com \
    --cc=anatoly.burakov@intel.com \
    --cc=bruce.richardson@intel.com \
    --cc=david.hunt@intel.com \
    --cc=dev@dpdk.org \
    --cc=juraj.linkes@pantheon.tech \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).