[dpdk-stable] patch 'build/pkg-config: prevent overlinking' has been queued to stable release 19.11.4

luca.boccassi at gmail.com luca.boccassi at gmail.com
Fri Jul 24 14:00:30 CEST 2020


Hi,

FYI, your patch has been queued to stable release 19.11.4

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/26/20. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.

Thanks.

Luca Boccassi

---
>From 48f7fd27f6350603613ad94286535755ed82b4f9 Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson at intel.com>
Date: Tue, 30 Jun 2020 15:14:33 +0100
Subject: [PATCH] build/pkg-config: prevent overlinking

[ backported from upstream commit b98447077b0609750c10b84b7b2e7be0c8504fad ]

Add the --as-needed linker flag to the DPDK library list in the pkg-config
file so as to prevent overlinking. Without this flag, when linking
statically using flags from $(pkg-config --static --libs libdpdk), all DPDK
drivers and libs were statically linked in, but the binary was also
requiring all the shared versions be present to run.

The real root-cause of this issue is that the DPDK libraries need to be
duplicated in the linker command when doing static linking, due to the
behaviour of pkg-config, but since that behaviour cannot be easily changed,
this is a simple workaround to avoid problems.

Signed-off-by: Bruce Richardson <bruce.richardson at intel.com>
Acked-by: Luca Boccassi <bluca at debian.org>
Acked-by: Sunil Pai G <sunil.pai.g at intel.com>
Signed-off-by: Thomas Monjalon <thomas at monjalon.net>
---
 buildtools/pkg-config/meson.build | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/buildtools/pkg-config/meson.build b/buildtools/pkg-config/meson.build
index dacc5dbfb..5f1930428 100644
--- a/buildtools/pkg-config/meson.build
+++ b/buildtools/pkg-config/meson.build
@@ -21,6 +21,11 @@ endif
 # Another requirement is to allow linking dependencies as shared libraries,
 # while linking static DPDK libraries and drivers. It is satisfied by
 # listing the static files in Libs.private with the explicit syntax -l:libfoo.a.
+# As a consequence, the regular DPDK libraries are already listed as static
+# in the field Libs.private. The second occurences of DPDK libraries,
+# included from Requires and used for shared library linkage case,
+# are skipped in the case of static linkage thanks to the flag --as-needed.
+
 
 pkg.generate(name: 'dpdk-libs',
 	filebase: 'libdpdk-libs',
@@ -29,7 +34,7 @@ Use libdpdk.pc instead of this file to query DPDK compile/link arguments''',
 	version: meson.project_version(),
 	subdirs: [get_option('include_subdir_arch'), '.'],
 	extra_cflags: pkg_extra_cflags,
-	libraries: dpdk_libraries,
+	libraries: ['-Wl,--as-needed'] + dpdk_libraries,
 	libraries_private: dpdk_extra_ldflags)
 
 pkg.generate(name: 'DPDK', # main DPDK pkgconfig file
-- 
2.20.1



More information about the stable mailing list