compat: fix symbol version support with meson

Message ID 20180830170701.21443-1-bruce.richardson@intel.com (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers
Series compat: fix symbol version support with meson |

Checks

Context Check Description
ci/checkpatch warning coding style issues
ci/Intel-compilation success Compilation OK

Commit Message

Bruce Richardson Aug. 30, 2018, 5:07 p.m. UTC
  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

Luca Boccassi Aug. 30, 2018, 5:31 p.m. UTC | #1
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>
  
Thomas Monjalon Sept. 16, 2018, 9:14 a.m. UTC | #2
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?
  
Bruce Richardson Sept. 17, 2018, 8:17 a.m. UTC | #3
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.
  

Patch

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