From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 838E9A0524 for ; Thu, 4 Feb 2021 12:38:23 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7258424078F; Thu, 4 Feb 2021 12:38:23 +0100 (CET) Received: from youngberry.canonical.com (youngberry.canonical.com [91.189.89.112]) by mails.dpdk.org (Postfix) with ESMTP id C5C4124076C for ; Thu, 4 Feb 2021 12:38:20 +0100 (CET) Received: from 2.general.paelzer.uk.vpn ([10.172.196.173] helo=localhost.localdomain) by youngberry.canonical.com with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1l7cxo-0005jf-4L; Thu, 04 Feb 2021 11:38:20 +0000 From: Christian Ehrhardt To: Olivier Matz Cc: Bruce Richardson , dpdk stable Date: Thu, 4 Feb 2021 12:29:37 +0100 Message-Id: <20210204112954.2488123-122-christian.ehrhardt@canonical.com> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20210204112954.2488123-1-christian.ehrhardt@canonical.com> References: <20210204112954.2488123-1-christian.ehrhardt@canonical.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-stable] patch 'build: fix plugin load on static build' has been queued to stable release 19.11.7 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" 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 --- >From 3f33f5056bba4d8e282a3ed677bd1c9993512a0a Mon Sep 17 00:00:00 2001 From: Olivier Matz 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 Reviewed-by: Bruce Richardson --- 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@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