[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