compat: fix symbol version support with meson
Checks
Commit Message
For meson builds, the define to enable the symbol version
macros in rte_compat.h was missing. This led to symbols being
omitted from shared objects. For example, checking rte_distributor.so
with objdump and comparing make and meson built versions:
$ objdump -T make-build/lib/librte_distributor.so | grep _flush
0000000000001b60 g DF .text 00000000000000a7 (DPDK_2.0) rte_distributor_flush
0000000000003f10 g DF .text 0000000000000434 DPDK_17.05 rte_distributor_flush
$ objdump -T meson-build/lib/librte_distributor.so | grep _flush
0000000000001d50 g DF .text 00000000000000fb DPDK_2.0 rte_distributor_flush
Adding in the missing define fixes this.
Fixes: 5b9656b157d3 ("lib: build with meson")
Reported-by: Luca Boccassi <bluca@debian.org>
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
config/rte_config.h | 3 +++
1 file changed, 3 insertions(+)
Comments
On Thu, 2018-08-30 at 18:07 +0100, Bruce Richardson wrote:
> For meson builds, the define to enable the symbol version
> macros in rte_compat.h was missing. This led to symbols being
> omitted from shared objects. For example, checking rte_distributor.so
> with objdump and comparing make and meson built versions:
>
> $ objdump -T make-build/lib/librte_distributor.so | grep _flush
> 0000000000001b60 g DF .text 00000000000000a7
> (DPDK_2.0) rte_distributor_flush
> 0000000000003f10 g DF .text 0000000000000434 DPDK_17.05
> rte_distributor_flush
> $ objdump -T meson-build/lib/librte_distributor.so | grep _flush
> 0000000000001d50 g DF .text 00000000000000fb DPDK_2.0
> rte_distributor_flush
>
> Adding in the missing define fixes this.
>
> Fixes: 5b9656b157d3 ("lib: build with meson")
>
> Reported-by: Luca Boccassi <bluca@debian.org>
> Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
> ---
> config/rte_config.h | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/config/rte_config.h b/config/rte_config.h
> index a8e479774..46775a841 100644
> --- a/config/rte_config.h
> +++ b/config/rte_config.h
> @@ -20,6 +20,9 @@
>
> /****** library defines ********/
>
> +/* compat defines */
> +#define RTE_BUILD_SHARED_LIB
> +
> /* EAL defines */
> #define RTE_MAX_MEMSEG_LISTS 128
> #define RTE_MAX_MEMSEG_PER_LIST 8192
Tested-by: Luca Boccassi <bluca@debian.org>
30/08/2018 19:31, Luca Boccassi:
> On Thu, 2018-08-30 at 18:07 +0100, Bruce Richardson wrote:
> > For meson builds, the define to enable the symbol version
> > macros in rte_compat.h was missing. This led to symbols being
> > omitted from shared objects. For example, checking rte_distributor.so
> > with objdump and comparing make and meson built versions:
> >
> > $ objdump -T make-build/lib/librte_distributor.so | grep _flush
> > 0000000000001b60 g DF .text 00000000000000a7
> > (DPDK_2.0) rte_distributor_flush
> > 0000000000003f10 g DF .text 0000000000000434 DPDK_17.05
> > rte_distributor_flush
> > $ objdump -T meson-build/lib/librte_distributor.so | grep _flush
> > 0000000000001d50 g DF .text 00000000000000fb DPDK_2.0
> > rte_distributor_flush
> >
> > Adding in the missing define fixes this.
> >
> > Fixes: 5b9656b157d3 ("lib: build with meson")
> >
> > Reported-by: Luca Boccassi <bluca@debian.org>
> > Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
>
> Tested-by: Luca Boccassi <bluca@debian.org>
Cc stable?
On Sun, Sep 16, 2018 at 11:14:10AM +0200, Thomas Monjalon wrote:
> 30/08/2018 19:31, Luca Boccassi:
> > On Thu, 2018-08-30 at 18:07 +0100, Bruce Richardson wrote:
> > > For meson builds, the define to enable the symbol version
> > > macros in rte_compat.h was missing. This led to symbols being
> > > omitted from shared objects. For example, checking rte_distributor.so
> > > with objdump and comparing make and meson built versions:
> > >
> > > $ objdump -T make-build/lib/librte_distributor.so | grep _flush
> > > 0000000000001b60 g DF .text 00000000000000a7
> > > (DPDK_2.0) rte_distributor_flush
> > > 0000000000003f10 g DF .text 0000000000000434 DPDK_17.05
> > > rte_distributor_flush
> > > $ objdump -T meson-build/lib/librte_distributor.so | grep _flush
> > > 0000000000001d50 g DF .text 00000000000000fb DPDK_2.0
> > > rte_distributor_flush
> > >
> > > Adding in the missing define fixes this.
> > >
> > > Fixes: 5b9656b157d3 ("lib: build with meson")
> > >
> > > Reported-by: Luca Boccassi <bluca@debian.org>
> > > Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
> >
> > Tested-by: Luca Boccassi <bluca@debian.org>
>
> Cc stable?
>
Yes, will add on a V2.
@@ -20,6 +20,9 @@
/****** library defines ********/
+/* compat defines */
+#define RTE_BUILD_SHARED_LIB
+
/* EAL defines */
#define RTE_MAX_MEMSEG_LISTS 128
#define RTE_MAX_MEMSEG_PER_LIST 8192