[dpdk-dev] eal: fix build with glibc < 2.12

Message ID 20171025083645.45740-1-ferruh.yigit@intel.com (mailing list archive)
State Accepted, archived
Headers

Checks

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

Commit Message

Ferruh Yigit Oct. 25, 2017, 8:36 a.m. UTC
  build error:
  CC rte_cycles.o
  cc1: warnings being treated as errors
  ...dpdk/lib/librte_eal/common/arch/x86/rte_cycles.c: In function
  ‘rdmsr’:
  ...dpdk/lib/librte_eal/common/arch/x86/rte_cycles.c:67:2: error:
  implicit declaration of function ‘pread’
  ...dpdk/lib/librte_eal/common/arch/x86/rte_cycles.c:67:2: error:
  nested extern declaration of ‘pread’

from pread man page:
pread(), pwrite():
   _XOPEN_SOURCE >= 500
   || /* Since glibc 2.12: */ _POSIX_C_SOURCE >= 200809L

For glibc < 2.12 _XOPEN_SOURCE >= 500 is required.

Adding _GNU_SOURCE define to the file which implies _XOPEN_SOURCE=700

Fixes: ad3516bb4ae1 ("eal/x86: implement arch-specific TSC freq query")
Cc: sergio.gonzalez.monroy@intel.com

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 lib/librte_eal/linuxapp/eal/Makefile | 1 +
 1 file changed, 1 insertion(+)
  

Comments

Sergio Gonzalez Monroy Oct. 26, 2017, 2:05 p.m. UTC | #1
On 25/10/2017 09:36, Ferruh Yigit wrote:
> build error:
>    CC rte_cycles.o
>    cc1: warnings being treated as errors
>    ...dpdk/lib/librte_eal/common/arch/x86/rte_cycles.c: In function
>    ‘rdmsr’:
>    ...dpdk/lib/librte_eal/common/arch/x86/rte_cycles.c:67:2: error:
>    implicit declaration of function ‘pread’
>    ...dpdk/lib/librte_eal/common/arch/x86/rte_cycles.c:67:2: error:
>    nested extern declaration of ‘pread’
>
> from pread man page:
> pread(), pwrite():
>     _XOPEN_SOURCE >= 500
>     || /* Since glibc 2.12: */ _POSIX_C_SOURCE >= 200809L
>
> For glibc < 2.12 _XOPEN_SOURCE >= 500 is required.
>
> Adding _GNU_SOURCE define to the file which implies _XOPEN_SOURCE=700
>
> Fixes: ad3516bb4ae1 ("eal/x86: implement arch-specific TSC freq query")
> Cc: sergio.gonzalez.monroy@intel.com
>
> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
> ---
>   lib/librte_eal/linuxapp/eal/Makefile | 1 +
>   1 file changed, 1 insertion(+)
>
> diff --git a/lib/librte_eal/linuxapp/eal/Makefile b/lib/librte_eal/linuxapp/eal/Makefile
> index 965da6e30..edfb8ff03 100644
> --- a/lib/librte_eal/linuxapp/eal/Makefile
> +++ b/lib/librte_eal/linuxapp/eal/Makefile
> @@ -139,6 +139,7 @@ CFLAGS_eal_common_whitelist.o := -D_GNU_SOURCE
>   CFLAGS_eal_common_options.o := -D_GNU_SOURCE
>   CFLAGS_eal_common_thread.o := -D_GNU_SOURCE
>   CFLAGS_eal_common_lcore.o := -D_GNU_SOURCE
> +CFLAGS_rte_cycles.o := -D_GNU_SOURCE
>   
>   # workaround for a gcc bug with noreturn attribute
>   # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12603

Acked-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
  
Thomas Monjalon Oct. 26, 2017, 9:09 p.m. UTC | #2
26/10/2017 16:05, Gonzalez Monroy, Sergio:
> On 25/10/2017 09:36, Ferruh Yigit wrote:
> > build error:
> >    CC rte_cycles.o
> >    cc1: warnings being treated as errors
> >    ...dpdk/lib/librte_eal/common/arch/x86/rte_cycles.c: In function
> >    ‘rdmsr’:
> >    ...dpdk/lib/librte_eal/common/arch/x86/rte_cycles.c:67:2: error:
> >    implicit declaration of function ‘pread’
> >    ...dpdk/lib/librte_eal/common/arch/x86/rte_cycles.c:67:2: error:
> >    nested extern declaration of ‘pread’
> >
> > from pread man page:
> > pread(), pwrite():
> >     _XOPEN_SOURCE >= 500
> >     || /* Since glibc 2.12: */ _POSIX_C_SOURCE >= 200809L
> >
> > For glibc < 2.12 _XOPEN_SOURCE >= 500 is required.
> >
> > Adding _GNU_SOURCE define to the file which implies _XOPEN_SOURCE=700
> >
> > Fixes: ad3516bb4ae1 ("eal/x86: implement arch-specific TSC freq query")
> > Cc: sergio.gonzalez.monroy@intel.com
> >
> > Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
> 
> Acked-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>

Applied, thanks
  

Patch

diff --git a/lib/librte_eal/linuxapp/eal/Makefile b/lib/librte_eal/linuxapp/eal/Makefile
index 965da6e30..edfb8ff03 100644
--- a/lib/librte_eal/linuxapp/eal/Makefile
+++ b/lib/librte_eal/linuxapp/eal/Makefile
@@ -139,6 +139,7 @@  CFLAGS_eal_common_whitelist.o := -D_GNU_SOURCE
 CFLAGS_eal_common_options.o := -D_GNU_SOURCE
 CFLAGS_eal_common_thread.o := -D_GNU_SOURCE
 CFLAGS_eal_common_lcore.o := -D_GNU_SOURCE
+CFLAGS_rte_cycles.o := -D_GNU_SOURCE
 
 # workaround for a gcc bug with noreturn attribute
 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12603