Message ID | 53347225.9040201@linux.vnet.ibm.com |
---|---|
State | New |
Headers | show |
Ping. On 27-03-2014 15:47, Adhemerval Zanella wrote: > On 21-03-2014 17:10, Roland McGrath wrote: >> It seems questionable to modify CFLAGS for this. It probably belongs in >> CPPFLAGS, to begin with. But I'm not sure I like it modifying the user's >> CPPFLAGS either. It might be best to add a new config.make variable for >> configure-deduced (as opposed to user-specified) CPPFLAGS and accumulate >> into that. It would be an analogue to config-extra-cflags >> (libc_extra_cflags in configure). While you're at it, generalize >> libc_extra_cflags so it accumulates and could be used by sysdeps configure >> fragments, rather than just being single-purpose as it is today. >> > Something like this: > > This patch make the configure adds -D_CALL_ELF=1 when compiler does > not define _CALL_ELF (versions before powerpc64le support). It cleans > up compiler warnings on old compiler where _CALL_ELF is not defined > on powerpc64(be) builds. > > It does by add a new config.make variable for configure-deduced > CPPFLAGS and accumulate into that (confix-extra-cppflags). It also > generalizes libc_extra_cflags so it accumulates in sysdeps configure > fragmenets. > > -- > > * Makeconfig (CPPFLAGS): Add config-extra-cppflags t list. > * config.make.in (config-extra-cppflags): Set it from > libc_extra_cppflags. > * configure.ac (libc_extra_cflags): Make it accumulate over > configure fragments. > (libc_extra_cppflags): New flag. > * configure. Regenerate. > * sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac > (libc_cv_ppc64_def_call_elf): Define it to yes if compiler does not set > _CALL_ELF and add -D_CALL_ELF=1 to libc_extra_cppflags. > * sysdeps/unix/sysv/linux/powerpc/powerpc64/configure: Regenerate. > > --- > > diff --git a/Makeconfig b/Makeconfig > index 3338ab6..f965398 100644 > --- a/Makeconfig > +++ b/Makeconfig > @@ -792,7 +792,8 @@ libio-include = -I$(..)libio > # Note that we can't use -std=* in CPPFLAGS, because it overrides > # the implicit -lang-asm and breaks cpp behavior for .S files--notably > # it causes cpp to stop predefining __ASSEMBLER__. > -CPPFLAGS = $(CPPUNDEFS) $(CPPFLAGS-config) $($(subdir)-CPPFLAGS) \ > +CPPFLAGS = $(config-extra-cppflags) $(CPPUNDEFS) $(CPPFLAGS-config) \ > + $($(subdir)-CPPFLAGS) \ > $(+includes) $(defines) \ > -include $(..)include/libc-symbols.h $(sysdep-CPPFLAGS) \ > $(CPPFLAGS-$(suffix $@)) \ > diff --git a/config.make.in b/config.make.in > index 416fb9e..132d179 100644 > --- a/config.make.in > +++ b/config.make.in > @@ -37,6 +37,7 @@ cflags-cpu = @libc_cv_cc_submachine@ > asflags-cpu = @libc_cv_cc_submachine@ > > config-extra-cflags = @libc_extra_cflags@ > +config-extra-cppflags = @libc_extra_cppflags@ > config-cflags-nofma = @libc_cv_cc_nofma@ > > defines = @DEFINES@ > diff --git a/configure b/configure > index d4b5edb..ee139bb 100755 > --- a/configure > +++ b/configure > @@ -591,6 +591,7 @@ libc_cv_slibdir > old_glibc_headers > use_nscd > libc_cv_gcc_unwind_find_fde > +libc_extra_cppflags > libc_extra_cflags > CPPUNDEFS > sizeof_long_double > @@ -7199,9 +7200,9 @@ fi > $as_echo "$libc_cv_predef_stack_protector" >&6; } > libc_extra_cflags= > if test $libc_cv_predef_stack_protector = yes; then > - libc_extra_cflags=-fno-stack-protector > + libc_extra_cflags+=-fno-stack-protector > fi > - > +libc_extra_cppflags= > > { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker provides __ehdr_start" >&5 > $as_echo_n "checking whether the linker provides __ehdr_start... " >&6; } > @@ -7266,6 +7267,9 @@ $as_echo "running configure fragment for $dir" >&6; } > fi > done > > + > + > + > if test x$libc_cv_gcc_unwind_find_fde = xyes; then > $as_echo "#define EXPORT_UNWIND_FIND_FDE 1" >>confdefs.h > > diff --git a/configure.ac b/configure.ac > index 43bd8a5..46b37b5 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -2042,9 +2042,9 @@ esac], > ]) > libc_extra_cflags= > if test $libc_cv_predef_stack_protector = yes; then > - libc_extra_cflags=-fno-stack-protector > + libc_extra_cflags+=-fno-stack-protector > fi > -AC_SUBST(libc_extra_cflags) > +libc_extra_cppflags= > > AC_CACHE_CHECK([whether the linker provides __ehdr_start], > libc_cv_ehdr_start, [ > @@ -2091,6 +2091,9 @@ for dir in $sysnames; do > fi > done > > +AC_SUBST(libc_extra_cflags) > +AC_SUBST(libc_extra_cppflags) > + > if test x$libc_cv_gcc_unwind_find_fde = xyes; then > AC_DEFINE(EXPORT_UNWIND_FIND_FDE) > fi > diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure b/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure > index fbb6334..7f4a7c4 100644 > --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure > +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure > @@ -163,4 +163,31 @@ default-abi = 64-v2" > else > config_vars="$config_vars > default-abi = 64-v1" > + # Compiler that do not support ELFv2 ABI does not define _CALL_ELF > + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler defines _CALL_ELF" >&5 > +$as_echo_n "checking whether the compiler defines _CALL_ELF... " >&6; } > +if ${libc_cv_ppc64_def_call_elf+:} false; then : > + $as_echo_n "(cached) " >&6 > +else > + cat confdefs.h - <<_ACEOF >conftest.$ac_ext > +/* end confdefs.h. */ > +#ifdef _CALL_ELF > + yes > + #endif > + > +_ACEOF > +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | > + $EGREP "yes" >/dev/null 2>&1; then : > + libc_cv_ppc64_def_call_elf=yes > +else > + libc_cv_ppc64_def_call_elf=no > +fi > +rm -f conftest* > + > +fi > +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_ppc64_def_call_elf" >&5 > +$as_echo "$libc_cv_ppc64_def_call_elf" >&6; } > + if test $libc_cv_ppc64_def_call_elf = no; then > + libc_extra_cppflags+=" -D_CALL_ELF=1" > + fi > fi > diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac b/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac > index c9cd4bc..5733f79 100644 > --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac > +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac > @@ -12,4 +12,14 @@ if test $libc_cv_ppc64_elfv2_abi = yes; then > LIBC_CONFIG_VAR([default-abi], [64-v2]) > else > LIBC_CONFIG_VAR([default-abi], [64-v1]) > + # Compiler that do not support ELFv2 ABI does not define _CALL_ELF > + AC_CACHE_CHECK([whether the compiler defines _CALL_ELF], > + [libc_cv_ppc64_def_call_elf], > + [AC_EGREP_CPP(yes,[#ifdef _CALL_ELF > + yes > + #endif > + ], libc_cv_ppc64_def_call_elf=yes, libc_cv_ppc64_def_call_elf=no)]) > + if test $libc_cv_ppc64_def_call_elf = no; then > + libc_extra_cppflags+=" -D_CALL_ELF=1" > + fi > fi >
Adhemerval Zanella <azanella@linux.vnet.ibm.com> writes: > @@ -7199,9 +7200,9 @@ fi > $as_echo "$libc_cv_predef_stack_protector" >&6; } > libc_extra_cflags= > if test $libc_cv_predef_stack_protector = yes; then > - libc_extra_cflags=-fno-stack-protector > + libc_extra_cflags+=-fno-stack-protector Why is that needed? += is not a POSIX feature. Andreas.
On 03-04-2014 10:06, Andreas Schwab wrote: > Adhemerval Zanella <azanella@linux.vnet.ibm.com> writes: > >> @@ -7199,9 +7200,9 @@ fi >> $as_echo "$libc_cv_predef_stack_protector" >&6; } >> libc_extra_cflags= >> if test $libc_cv_predef_stack_protector = yes; then >> - libc_extra_cflags=-fno-stack-protector >> + libc_extra_cflags+=-fno-stack-protector > Why is that needed? += is not a POSIX feature. > > Andreas. > It was just be pedantic and I wasn't aware it wasn't POSIX. I'll change to libc_extra_cflags=$libc_extra_cflags " FLAGS"
Looks OK except for using += syntax, which is not OK.
On 03-04-2014 16:25, Roland McGrath wrote: > Looks OK except for using += syntax, which is not OK. > Pushed as 7ffa9423020fe331b45a56b804c95929a0398e8b with the += syntax correction.
diff --git a/Makeconfig b/Makeconfig index 3338ab6..f965398 100644 --- a/Makeconfig +++ b/Makeconfig @@ -792,7 +792,8 @@ libio-include = -I$(..)libio # Note that we can't use -std=* in CPPFLAGS, because it overrides # the implicit -lang-asm and breaks cpp behavior for .S files--notably # it causes cpp to stop predefining __ASSEMBLER__. -CPPFLAGS = $(CPPUNDEFS) $(CPPFLAGS-config) $($(subdir)-CPPFLAGS) \ +CPPFLAGS = $(config-extra-cppflags) $(CPPUNDEFS) $(CPPFLAGS-config) \ + $($(subdir)-CPPFLAGS) \ $(+includes) $(defines) \ -include $(..)include/libc-symbols.h $(sysdep-CPPFLAGS) \ $(CPPFLAGS-$(suffix $@)) \ diff --git a/config.make.in b/config.make.in index 416fb9e..132d179 100644 --- a/config.make.in +++ b/config.make.in @@ -37,6 +37,7 @@ cflags-cpu = @libc_cv_cc_submachine@ asflags-cpu = @libc_cv_cc_submachine@ config-extra-cflags = @libc_extra_cflags@ +config-extra-cppflags = @libc_extra_cppflags@ config-cflags-nofma = @libc_cv_cc_nofma@ defines = @DEFINES@ diff --git a/configure b/configure index d4b5edb..ee139bb 100755 --- a/configure +++ b/configure @@ -591,6 +591,7 @@ libc_cv_slibdir old_glibc_headers use_nscd libc_cv_gcc_unwind_find_fde +libc_extra_cppflags libc_extra_cflags CPPUNDEFS sizeof_long_double @@ -7199,9 +7200,9 @@ fi $as_echo "$libc_cv_predef_stack_protector" >&6; } libc_extra_cflags= if test $libc_cv_predef_stack_protector = yes; then - libc_extra_cflags=-fno-stack-protector + libc_extra_cflags+=-fno-stack-protector fi - +libc_extra_cppflags= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker provides __ehdr_start" >&5 $as_echo_n "checking whether the linker provides __ehdr_start... " >&6; } @@ -7266,6 +7267,9 @@ $as_echo "running configure fragment for $dir" >&6; } fi done + + + if test x$libc_cv_gcc_unwind_find_fde = xyes; then $as_echo "#define EXPORT_UNWIND_FIND_FDE 1" >>confdefs.h diff --git a/configure.ac b/configure.ac index 43bd8a5..46b37b5 100644 --- a/configure.ac +++ b/configure.ac @@ -2042,9 +2042,9 @@ esac], ]) libc_extra_cflags= if test $libc_cv_predef_stack_protector = yes; then - libc_extra_cflags=-fno-stack-protector + libc_extra_cflags+=-fno-stack-protector fi -AC_SUBST(libc_extra_cflags) +libc_extra_cppflags= AC_CACHE_CHECK([whether the linker provides __ehdr_start], libc_cv_ehdr_start, [ @@ -2091,6 +2091,9 @@ for dir in $sysnames; do fi done +AC_SUBST(libc_extra_cflags) +AC_SUBST(libc_extra_cppflags) + if test x$libc_cv_gcc_unwind_find_fde = xyes; then AC_DEFINE(EXPORT_UNWIND_FIND_FDE) fi diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure b/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure index fbb6334..7f4a7c4 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure @@ -163,4 +163,31 @@ default-abi = 64-v2" else config_vars="$config_vars default-abi = 64-v1" + # Compiler that do not support ELFv2 ABI does not define _CALL_ELF + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler defines _CALL_ELF" >&5 +$as_echo_n "checking whether the compiler defines _CALL_ELF... " >&6; } +if ${libc_cv_ppc64_def_call_elf+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef _CALL_ELF + yes + #endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "yes" >/dev/null 2>&1; then : + libc_cv_ppc64_def_call_elf=yes +else + libc_cv_ppc64_def_call_elf=no +fi +rm -f conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_ppc64_def_call_elf" >&5 +$as_echo "$libc_cv_ppc64_def_call_elf" >&6; } + if test $libc_cv_ppc64_def_call_elf = no; then + libc_extra_cppflags+=" -D_CALL_ELF=1" + fi fi diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac b/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac index c9cd4bc..5733f79 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac @@ -12,4 +12,14 @@ if test $libc_cv_ppc64_elfv2_abi = yes; then LIBC_CONFIG_VAR([default-abi], [64-v2]) else LIBC_CONFIG_VAR([default-abi], [64-v1]) + # Compiler that do not support ELFv2 ABI does not define _CALL_ELF + AC_CACHE_CHECK([whether the compiler defines _CALL_ELF], + [libc_cv_ppc64_def_call_elf], + [AC_EGREP_CPP(yes,[#ifdef _CALL_ELF + yes + #endif + ], libc_cv_ppc64_def_call_elf=yes, libc_cv_ppc64_def_call_elf=no)]) + if test $libc_cv_ppc64_def_call_elf = no; then + libc_extra_cppflags+=" -D_CALL_ELF=1" + fi fi