[dpdk-stable] patch 'build: fix plugin load on static build' has been queued to stable release 19.11.7

Christian Ehrhardt christian.ehrhardt at canonical.com
Thu Feb 4 12:29:37 CET 2021


Hi,

FYI, your patch has been queued to stable release 19.11.7

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 02/06/21. 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.

Queued patches are on a temporary branch at:
https://github.com/cpaelzer/dpdk-stable-queue

This queued commit can be viewed at:
https://github.com/cpaelzer/dpdk-stable-queue/commit/3f33f5056bba4d8e282a3ed677bd1c9993512a0a

Thanks.

Christian Ehrhardt <christian.ehrhardt at canonical.com>

---
>From 3f33f5056bba4d8e282a3ed677bd1c9993512a0a Mon Sep 17 00:00:00 2001
From: Olivier Matz <olivier.matz at 6wind.com>
Date: Fri, 18 Dec 2020 14:14:22 +0100
Subject: [PATCH] build: fix plugin load on static build

[ upstream commit b031e13d7f0dc7cba9bc5befe968b67832021a59 ]

When dpdk is compiled as static libraries, it is not possible
to load a plugin from an application. We get the following error:

  EAL: librte_pmd_xxxx.so: undefined symbol: per_lcore__rte_errno

This happens because the dpdk symbols are not exported. Add them to the
dynamic symbol table by using '-Wl,--export-dynamic'. This option was
previously present when compiled with Makefiles, it was introduced in
commit f9a08f650211 ("eal: add support for shared object drivers")

Also add it to the pkg-config file.

Fixes: 16ade738fd0d ("app/testpmd: build with meson")
Fixes: 89f0711f9ddf ("examples: build some samples with meson")

Signed-off-by: Olivier Matz <olivier.matz at 6wind.com>
Reviewed-by: Bruce Richardson <bruce.richardson at intel.com>
---
 app/meson.build                   | 6 ++++++
 buildtools/pkg-config/meson.build | 2 +-
 examples/meson.build              | 7 ++++++-
 3 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/app/meson.build b/app/meson.build
index 65d6bc7f85..95c0ecae65 100644
--- a/app/meson.build
+++ b/app/meson.build
@@ -22,6 +22,10 @@ apps = [
 lib_execinfo = cc.find_library('execinfo', required: false)
 
 default_cflags = machine_args
+default_ldflags = []
+if get_option('default_library') == 'static'
+	default_ldflags += ['-Wl,--export-dynamic']
+endif
 
 foreach app:apps
 	build = true
@@ -30,6 +34,7 @@ foreach app:apps
 	sources = []
 	includes = []
 	cflags = default_cflags
+	ldflags = default_ldflags
 	objs = [] # other object files to link against, used e.g. for
 	          # instruction-set optimized versions of code
 
@@ -60,6 +65,7 @@ foreach app:apps
 		executable('dpdk-' + name,
 				sources,
 				c_args: cflags,
+				link_args: ldflags,
 				link_whole: link_libs,
 				dependencies: dep_objs,
 				include_directories: includes,
diff --git a/buildtools/pkg-config/meson.build b/buildtools/pkg-config/meson.build
index 5f19304289..168ee08e58 100644
--- a/buildtools/pkg-config/meson.build
+++ b/buildtools/pkg-config/meson.build
@@ -47,7 +47,7 @@ This is required for a number of static inline functions in the public headers.'
 	                  # if libbsd is not enabled, then this is blank
 	libraries_private: ['-Wl,--whole-archive'] +
 			dpdk_drivers + dpdk_static_libraries +
-			['-Wl,--no-whole-archive']
+			['-Wl,--no-whole-archive', '-Wl,--export-dynamic']
 )
 
 # For static linking with dependencies as shared libraries,
diff --git a/examples/meson.build b/examples/meson.build
index eeeb217ada..25a23dc5da 100644
--- a/examples/meson.build
+++ b/examples/meson.build
@@ -62,6 +62,10 @@ default_cflags = machine_args
 if cc.has_argument('-Wno-format-truncation')
 	default_cflags += '-Wno-format-truncation'
 endif
+default_ldflags = dpdk_extra_ldflags
+if get_option('default_library') == 'static'
+	default_ldflags += ['-Wl,--export-dynamic']
+endif
 
 foreach example: examples
 	name = example.split('/')[-1]
@@ -69,6 +73,7 @@ foreach example: examples
 	sources = []
 	allow_experimental_apis = false
 	cflags = default_cflags
+	ldflags = default_ldflags
 
 	ext_deps = [execinfo]
 	includes = [include_directories(example)]
@@ -93,7 +98,7 @@ foreach example: examples
 		executable('dpdk-' + name, sources,
 			include_directories: includes,
 			link_whole: link_whole_libs,
-			link_args: dpdk_extra_ldflags,
+			link_args: ldflags,
 			c_args: cflags,
 			dependencies: dep_objs)
 	elif not allow_skips
-- 
2.30.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2021-02-04 12:04:33.014735273 +0100
+++ 0122-build-fix-plugin-load-on-static-build.patch	2021-02-04 12:04:28.178789872 +0100
@@ -1 +1 @@
-From b031e13d7f0dc7cba9bc5befe968b67832021a59 Mon Sep 17 00:00:00 2001
+From 3f33f5056bba4d8e282a3ed677bd1c9993512a0a Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit b031e13d7f0dc7cba9bc5befe968b67832021a59 ]
+
@@ -20 +21,0 @@
-Cc: stable at dpdk.org
@@ -31 +32 @@
-index eb74f215a3..fd72d7da68 100644
+index 65d6bc7f85..95c0ecae65 100644
@@ -34 +35 @@
-@@ -25,6 +25,10 @@ apps = [
+@@ -22,6 +22,10 @@ apps = [
@@ -37 +38 @@
- default_cflags = machine_args + ['-DALLOW_EXPERIMENTAL_API']
+ default_cflags = machine_args
@@ -45 +46 @@
-@@ -32,6 +36,7 @@ foreach app:apps
+@@ -30,6 +34,7 @@ foreach app:apps
@@ -53 +54 @@
-@@ -58,6 +63,7 @@ foreach app:apps
+@@ -60,6 +65,7 @@ foreach app:apps
@@ -60 +61 @@
- 				install_rpath: join_paths(get_option('prefix'),
+ 				include_directories: includes,
@@ -75 +76 @@
-index 46ec80919e..f643ec1bad 100644
+index eeeb217ada..25a23dc5da 100644
@@ -78 +79 @@
-@@ -63,6 +63,10 @@ default_cflags = machine_args
+@@ -62,6 +62,10 @@ default_cflags = machine_args
@@ -89 +90 @@
-@@ -70,6 +74,7 @@ foreach example: examples
+@@ -69,6 +73,7 @@ foreach example: examples
@@ -97 +98 @@
-@@ -91,7 +96,7 @@ foreach example: examples
+@@ -93,7 +98,7 @@ foreach example: examples


More information about the stable mailing list