DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH 0/2] remove use of weak functions from libraries
@ 2019-04-10 13:45 Bruce Richardson
  2019-04-10 13:45 ` Bruce Richardson
                   ` (4 more replies)
  0 siblings, 5 replies; 25+ messages in thread
From: Bruce Richardson @ 2019-04-10 13:45 UTC (permalink / raw)
  To: konstantin.ananyev, aconole; +Cc: dev, Bruce Richardson

Weak functions don't work well with static library builds as the linker
always picks the first version of a function irrespective of whether it is
weak or not. The solution to this is to use the "whole-archive" flag when
linking, but this has the nasty side-effect that it causes the resulting
binary to be larger than it needs to be.


A further problem with this approach of using "whole-archive" is that one
either needs to link all libraries with this flag or track what libraries
need it or not - the latter being especially a problem for apps not using
the DPDK build system itself (i.e. most apps not shipped with DPDK itself).
For meson builds this information needs to make its way all the way through
to the pkgconfig file generated - not a trivial undertaking.

Thankfully, though, the use of weak functions is limited to use for
multiple functions within a single library, meaning that when the lib is
being built, the build system itself can know whether the "weak" function
is needed or not. This allows us to change the weak function to a
conditionally compiled regular function used in fallback case. This makes
the need for "whole-archive" flag, and any special linking measures for the
library, go away.

[This set does not touch the drivers, only the libraries, since there are
other special linker flags needed for drivers in general, making the
problem less severe for driver .a files.]

Bruce Richardson (2):
  acl: remove use of weak functions
  bpf: remove use of weak functions

 lib/librte_acl/meson.build |  7 ++++++-
 lib/librte_acl/rte_acl.c   | 18 ++++++++++++++----
 lib/librte_bpf/bpf_load.c  |  4 +++-
 lib/librte_bpf/meson.build |  1 +
 mk/rte.app.mk              |  3 ---
 5 files changed, 24 insertions(+), 9 deletions(-)

-- 
2.20.1

^ permalink raw reply	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2019-06-05 14:41 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-04-10 13:45 [dpdk-dev] [PATCH 0/2] remove use of weak functions from libraries Bruce Richardson
2019-04-10 13:45 ` Bruce Richardson
2019-04-10 13:45 ` [dpdk-dev] [PATCH 1/2] acl: remove use of weak functions Bruce Richardson
2019-04-10 13:45   ` Bruce Richardson
2019-04-10 13:54   ` Aaron Conole
2019-04-10 13:54     ` Aaron Conole
2019-04-10 14:02     ` Bruce Richardson
2019-04-10 14:02       ` Bruce Richardson
2019-04-10 14:08       ` Aaron Conole
2019-04-10 14:08         ` Aaron Conole
2019-04-10 14:57   ` Ananyev, Konstantin
2019-04-10 14:57     ` Ananyev, Konstantin
2019-04-10 13:45 ` [dpdk-dev] [PATCH 2/2] bpf: " Bruce Richardson
2019-04-10 13:45   ` Bruce Richardson
2019-04-10 14:07   ` Aaron Conole
2019-04-10 14:07     ` Aaron Conole
2019-04-10 14:27     ` Bruce Richardson
2019-04-10 14:27       ` Bruce Richardson
2019-04-10 14:57   ` Ananyev, Konstantin
2019-04-10 14:57     ` Ananyev, Konstantin
2019-05-27 14:13 ` [dpdk-dev] [PATCH 0/2] remove use of weak functions from libraries David Marchand
2019-05-27 15:41   ` Bruce Richardson
2019-05-27 20:57     ` Aaron Conole
2019-05-28  8:06       ` Bruce Richardson
2019-06-05 14:41 ` Thomas Monjalon

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).