diff --git a/ChangeLog b/ChangeLog index 1d04fca2bd..d33e6554ed 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,31 @@ +2012-01-08 Ulrich Drepper + + * configure.in: Remove --with-elf and --enable-bounded options. + Dont set base_machine for ia64. More non-ELF conditions removed. + Remove testing and setting of leading underscore information. + * config.make.in (build-bounded): Set to no. + * config.h.in: Remove NO_UNDERSCORES entry. + * include/libc-symbols.h: Don't define HAVE_WEAK_SYMBOLS. ELF has + them. + * csu/start.c: Remove !NO_UNDERSCORE code. + * locale/localeinfo.h: Likewise. + * sysdeps/generic/machine-gmon.h: Likewise. + * sysdeps/generic/sysdep.h: Likewise. + * sysdeps/i386/sysdep.h: Likewise. + * sysdeps/ieee754/ldbl-opt/math_ldbl_opt.h: Likewise. + * sysdeps/mach/sysdep.h: Likewise. + * sysdeps/s390/s390-32/sysdep.h: Likewise. + * sysdeps/s390/s390-64/sysdep.h: Likewise. + * sysdeps/sh/sysdep.h: Likewise. + * sysdeps/sparc/sparc32/alloca.S: Likewise. + * sysdeps/unix/i386/sysdep.S: Likewise. + * sysdeps/unix/sparc/start.c: Likewise. + * sysdeps/unix/sparc/sysdep.S: Likewise. + * sysdeps/unix/sparc/sysdep.h: Likewise. + * sysdeps/unix/start.c: Likewise. + * sysdeps/unix/x86_64/sysdep.S: Likewise. + * sysdeps/x86_64/sysdep.h: Likewise. + 2012-01-07 Ulrich Drepper [BZ #13553] diff --git a/config.h.in b/config.h.in index 6534b6e5f7..50d53d4735 100644 --- a/config.h.in +++ b/config.h.in @@ -17,10 +17,6 @@ /* Defined if building with SELinux support & libcap libs are detected. */ #undef HAVE_LIBCAP -/* Define if C symbols are asm symbols. Don't define if C symbols - have a `_' prepended to make the asm symbol. */ -#undef NO_UNDERSCORES - /* Define if weak symbols are available via the `.weak' directive. */ #undef HAVE_ASM_WEAK_DIRECTIVE diff --git a/config.make.in b/config.make.in index a583ebdddd..8c0a4dca63 100644 --- a/config.make.in +++ b/config.make.in @@ -92,7 +92,7 @@ build-static = @static@ build-shared = @shared@ build-pic-default= @libc_cv_pic_default@ build-profile = @profile@ -build-bounded = @bounded@ +build-bounded = no build-static-nss = @static_nss@ add-ons = @add_ons@ add-on-subdirs = @add_on_subdirs@ diff --git a/configure b/configure index f5a21e879a..c4802840c9 100755 --- a/configure +++ b/configure @@ -640,7 +640,6 @@ have_libaudit LIBGD libc_cv_cc_submachine exceptions -libc_cv_have_initfini gnu89_inline libc_cv_ssp fno_unit_at_a_time @@ -765,7 +764,6 @@ with_gd_include with_gd_lib with_fp with_binutils -with_elf with_selinux with_headers with_default_link @@ -773,7 +771,6 @@ enable_sanity_checks enable_check_abi enable_shared enable_profile -enable_bounded enable_versioning enable_oldest_abi enable_stackguard_randomization @@ -1420,9 +1417,8 @@ Optional Features: in special situations) [default=yes] --enable-check-abi do "make check-abi" in "make check" (no/warn/yes) [default=no] - --enable-shared build shared library [default=yes if GNU ld & ELF] + --enable-shared build shared library [default=yes if GNU ld] --enable-profile build profiled library [default=no] - --enable-bounded build with runtime bounds checking [default=no] --disable-versioning do not include versioning information in the library objects [default=yes if supported] --enable-oldest-abi=ABI configure the oldest ABI supported [e.g. 2.2] @@ -1453,7 +1449,6 @@ Optional Packages: --with-gd-lib=DIR find libgd library files in DIR --with-fp if using floating-point hardware [default=yes] --with-binutils=PATH specify location of binutils (as and ld) - --with-elf if using the ELF object format --with-selinux if building with SELinux support --with-headers=PATH location of system headers to use (for example /usr/src/linux/include) [default=compiler default] @@ -3525,14 +3520,6 @@ else fi -# Check whether --with-elf was given. -if test "${with_elf+set}" = set; then : - withval=$with_elf; elf=$withval -else - elf=no -fi - - # Check whether --with-selinux was given. if test "${with_selinux+set}" = set; then : withval=$with_selinux; with_selinux=$withval @@ -3582,7 +3569,7 @@ static=yes if test "${enable_shared+set}" = set; then : enableval=$enable_shared; shared=$enableval else - shared=default + shared=yes fi # Check whether --enable-profile was given. @@ -3592,13 +3579,6 @@ else profile=no fi -# Check whether --enable-bounded was given. -if test "${enable_bounded+set}" = set; then : - enableval=$enable_bounded; bounded=$enableval -else - bounded=no -fi - # Check whether --enable-versioning was given. if test "${enable_versioning+set}" = set; then : enableval=$enable_versioning; enable_versioning=$enableval @@ -4011,7 +3991,6 @@ fi # base_machine, we don't change it. test -n "$base_machine" || case "$machine" in i[34567]86) base_machine=i386 machine=i386/$machine ;; -ia64) base_machine=ia64 machine=ia64 ;; powerpc) base_machine=powerpc machine=powerpc/powerpc32 ;; powerpc64) base_machine=powerpc machine=powerpc/powerpc64 ;; s390) base_machine=s390 machine=s390/s390-32 ;; @@ -4316,22 +4295,20 @@ fi # We have now validated the configuration. -# If using ELF, look for an `elf' subdirectory of each machine directory. +# Look for an `elf' subdirectory of each machine directory. # We prepend these rather than inserting them whereever the machine appears # because things specified by the machine's ELF ABI should override # OS-specific things, and should always be the same for any OS on the # machine (otherwise what's the point of an ABI?). -if test "$elf" = yes; then - elf_dirs= - for d in $add_ons_pfx ''; do - for m in $mach; do - if test -d $srcdir/${d}sysdeps$m/elf; then - elf_dirs="$elf_dirs ${d}sysdeps$m/elf" - fi - done +elf_dirs= +for d in $add_ons_pfx ''; do + for m in $mach; do + if test -d $srcdir/${d}sysdeps$m/elf; then + elf_dirs="$elf_dirs ${d}sysdeps$m/elf" + fi done - sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames" -fi +done +sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames" # Expand the list of system names into a full list of directories @@ -4414,10 +4391,7 @@ $as_echo "$as_me: WARNING: $name/Implies specifies nonexistent $x" >&2;} done # Add the default directories. -default_sysnames=sysdeps/generic -if test "$elf" = yes; then - default_sysnames="sysdeps/generic/elf $default_sysnames" -fi +default_sysnames="sysdeps/generic/elf sysdeps/generic" sysnames="$names $default_sysnames" # The other names were emitted during the scan. @@ -5887,97 +5861,96 @@ else fi -if test $elf = yes && test $shared != no && test $VERSIONING = no; then +if test $shared != no && test $VERSIONING = no; then echo "\ *** WARNING: You should not compile GNU libc without versioning. Not using *** versioning will introduce incompatibilities so that old binaries *** will not run anymore. *** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)." fi -if test $elf = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for .previous assembler directive" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for .previous assembler directive" >&5 $as_echo_n "checking for .previous assembler directive... " >&6; } if ${libc_cv_asm_previous_directive+:} false; then : $as_echo_n "(cached) " >&6 else - cat > conftest.s < conftest.s <&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then - libc_cv_asm_previous_directive=yes - else - libc_cv_asm_previous_directive=no - fi - rm -f conftest* + libc_cv_asm_previous_directive=yes +else + libc_cv_asm_previous_directive=no +fi +rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_asm_previous_directive" >&5 $as_echo "$libc_cv_asm_previous_directive" >&6; } - if test $libc_cv_asm_previous_directive = yes; then - $as_echo "#define HAVE_ASM_PREVIOUS_DIRECTIVE 1" >>confdefs.h +if test $libc_cv_asm_previous_directive = yes; then + $as_echo "#define HAVE_ASM_PREVIOUS_DIRECTIVE 1" >>confdefs.h - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for .popsection assembler directive" >&5 +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for .popsection assembler directive" >&5 $as_echo_n "checking for .popsection assembler directive... " >&6; } if ${libc_cv_asm_popsection_directive+:} false; then : $as_echo_n "(cached) " >&6 else - cat > conftest.s < conftest.s <&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then - libc_cv_asm_popsection_directive=yes - else - libc_cv_asm_popsection_directive=no - fi - rm -f conftest* + libc_cv_asm_popsection_directive=yes + else + libc_cv_asm_popsection_directive=no + fi + rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_asm_popsection_directive" >&5 $as_echo "$libc_cv_asm_popsection_directive" >&6; } - if test $libc_cv_asm_popsection_directive = yes; then - $as_echo "#define HAVE_ASM_POPSECTION_DIRECTIVE 1" >>confdefs.h + if test $libc_cv_asm_popsection_directive = yes; then + $as_echo "#define HAVE_ASM_POPSECTION_DIRECTIVE 1" >>confdefs.h - fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for .protected and .hidden assembler directive" >&5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for .protected and .hidden assembler directive" >&5 $as_echo_n "checking for .protected and .hidden assembler directive... " >&6; } if ${libc_cv_asm_protected_directive+:} false; then : $as_echo_n "(cached) " >&6 else - cat > conftest.s < conftest.s <&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then - libc_cv_asm_protected_directive=yes - else - as_fn_error $? "assembler support for symbol visibility is required" "$LINENO" 5 - fi - rm -f conftest* + libc_cv_asm_protected_directive=yes +else + as_fn_error $? "assembler support for symbol visibility is required" "$LINENO" 5 +fi +rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_asm_protected_directive" >&5 $as_echo "$libc_cv_asm_protected_directive" >&6; } - if test $libc_cv_asm_protected_directive = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether __attribute__((visibility())) is supported" >&5 +if test $libc_cv_asm_protected_directive = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether __attribute__((visibility())) is supported" >&5 $as_echo_n "checking whether __attribute__((visibility())) is supported... " >&6; } if ${libc_cv_visibility_attribute+:} false; then : $as_echo_n "(cached) " >&6 @@ -6004,13 +5977,13 @@ EOF fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_visibility_attribute" >&5 $as_echo "$libc_cv_visibility_attribute" >&6; } - if test $libc_cv_visibility_attribute != yes; then - as_fn_error $? "compiler support for visibility attribute is required" "$LINENO" 5 - fi + if test $libc_cv_visibility_attribute != yes; then + as_fn_error $? "compiler support for visibility attribute is required" "$LINENO" 5 fi +fi - if test $libc_cv_visibility_attribute = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for broken __attribute__((visibility()))" >&5 +if test $libc_cv_visibility_attribute = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for broken __attribute__((visibility()))" >&5 $as_echo_n "checking for broken __attribute__((visibility()))... " >&6; } if ${libc_cv_broken_visibility_attribute+:} false; then : $as_echo_n "(cached) " >&6 @@ -6036,47 +6009,47 @@ EOF fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_broken_visibility_attribute" >&5 $as_echo "$libc_cv_broken_visibility_attribute" >&6; } - if test $libc_cv_broken_visibility_attribute = yes; then - as_fn_error $? "working compiler support for visibility attribute is required" "$LINENO" 5 - fi + if test $libc_cv_broken_visibility_attribute = yes; then + as_fn_error $? "working compiler support for visibility attribute is required" "$LINENO" 5 fi +fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for broken __attribute__((alias()))" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for broken __attribute__((alias()))" >&5 $as_echo_n "checking for broken __attribute__((alias()))... " >&6; } if ${libc_cv_broken_alias_attribute+:} false; then : $as_echo_n "(cached) " >&6 else cat > conftest.c <&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then - if grep 'xyzzy' conftest.s >/dev/null && - grep 'abccb' conftest.s >/dev/null; then - libc_cv_broken_alias_attribute=no - fi - fi - rm -f conftest.c conftest.s + if grep 'xyzzy' conftest.s >/dev/null && + grep 'abccb' conftest.s >/dev/null; then + libc_cv_broken_alias_attribute=no + fi + fi + rm -f conftest.c conftest.s fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_broken_alias_attribute" >&5 $as_echo "$libc_cv_broken_alias_attribute" >&6; } - if test $libc_cv_broken_alias_attribute = yes; then - as_fn_error $? "working alias attribute support required" "$LINENO" 5 - fi +if test $libc_cv_broken_alias_attribute = yes; then + as_fn_error $? "working alias attribute support required" "$LINENO" 5 +fi - if test $libc_cv_visibility_attribute = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to put _rtld_local into .sdata section" >&5 +if test $libc_cv_visibility_attribute = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to put _rtld_local into .sdata section" >&5 $as_echo_n "checking whether to put _rtld_local into .sdata section... " >&6; } if ${libc_cv_have_sdata_section+:} false; then : $as_echo_n "(cached) " >&6 @@ -6092,54 +6065,54 @@ else fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_have_sdata_section" >&5 $as_echo "$libc_cv_have_sdata_section" >&6; } - if test $libc_cv_have_sdata_section = yes; then - $as_echo "#define HAVE_SDATA_SECTION 1" >>confdefs.h + if test $libc_cv_have_sdata_section = yes; then + $as_echo "#define HAVE_SDATA_SECTION 1" >>confdefs.h - fi fi +fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for .preinit_array/.init_array/.fini_array support" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for .preinit_array/.init_array/.fini_array support" >&5 $as_echo_n "checking for .preinit_array/.init_array/.fini_array support... " >&6; } if ${libc_cv_initfini_array+:} false; then : $as_echo_n "(cached) " >&6 else - cat > conftest.c < conftest.c <&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; } - then - if $READELF -S conftest | fgrep INIT_ARRAY > /dev/null; then - libc_cv_initfini_array=yes - else - libc_cv_initfini_array=no - fi +then + if $READELF -S conftest | fgrep INIT_ARRAY > /dev/null; then + libc_cv_initfini_array=yes else libc_cv_initfini_array=no fi - rm -f conftest* +else + libc_cv_initfini_array=no +fi +rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_initfini_array" >&5 $as_echo "$libc_cv_initfini_array" >&6; } - if test $libc_cv_initfini_array != yes; then - as_fn_error $? "Need linker with .init_array/.fini_array support." "$LINENO" 5 - fi +if test $libc_cv_initfini_array != yes; then + as_fn_error $? "Need linker with .init_array/.fini_array support." "$LINENO" 5 +fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use .ctors/.dtors header and trailer" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use .ctors/.dtors header and trailer" >&5 $as_echo_n "checking whether to use .ctors/.dtors header and trailer... " >&6; } if ${libc_cv_ctors_header+:} false; then : $as_echo_n "(cached) " >&6 else - libc_cv_ctors_header=yes - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + libc_cv_ctors_header=yes + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -6181,72 +6154,72 @@ rm -f core conftest.err conftest.$ac_objext \ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_ctors_header" >&5 $as_echo "$libc_cv_ctors_header" >&6; } - if test $libc_cv_ctors_header = no; then - $as_echo "#define NO_CTORS_DTORS_SECTIONS 1" >>confdefs.h +if test $libc_cv_ctors_header = no; then + $as_echo "#define NO_CTORS_DTORS_SECTIONS 1" >>confdefs.h - fi +fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libunwind-support in compiler" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libunwind-support in compiler" >&5 $as_echo_n "checking for libunwind-support in compiler... " >&6; } if ${libc_cv_cc_with_libunwind+:} false; then : $as_echo_n "(cached) " >&6 else - cat > conftest.c < conftest.c <&1 >/dev/null | grep -q " -lunwind "; then - libc_cv_cc_with_libunwind=yes - else - libc_cv_cc_with_libunwind=no - fi - rm -f conftest* + if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -static -o conftest \ + conftest.c -v 2>&1 >/dev/null | grep -q " -lunwind "; then + libc_cv_cc_with_libunwind=yes + else + libc_cv_cc_with_libunwind=no + fi + rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_with_libunwind" >&5 $as_echo "$libc_cv_cc_with_libunwind" >&6; } - if test $libc_cv_cc_with_libunwind = yes; then - $as_echo "#define HAVE_CC_WITH_LIBUNWIND 1" >>confdefs.h +if test $libc_cv_cc_with_libunwind = yes; then + $as_echo "#define HAVE_CC_WITH_LIBUNWIND 1" >>confdefs.h - fi +fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -z nodelete option" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -z nodelete option" >&5 $as_echo_n "checking for -z nodelete option... " >&6; } if ${libc_cv_z_nodelete+:} false; then : $as_echo_n "(cached) " >&6 else - cat > conftest.c < conftest.c <&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; } - then - libc_cv_z_nodelete=yes - else - as_fn_error $? "linker with -z nodelete support required" "$LINENO" 5 - fi - rm -f conftest* +then + libc_cv_z_nodelete=yes +else + as_fn_error $? "linker with -z nodelete support required" "$LINENO" 5 +fi +rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_z_nodelete" >&5 $as_echo "$libc_cv_z_nodelete" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -z nodlopen option" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -z nodlopen option" >&5 $as_echo_n "checking for -z nodlopen option... " >&6; } if ${libc_cv_z_nodlopen+:} false; then : $as_echo_n "(cached) " >&6 else - cat > conftest.c < conftest.c <&5' @@ -6255,25 +6228,25 @@ EOF ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; } - then - libc_cv_z_nodlopen=yes - else - as_fn_error $? "linker with -z nodlopen support required" "$LINENO" 5 - fi - rm -f conftest* +then + libc_cv_z_nodlopen=yes +else + as_fn_error $? "linker with -z nodlopen support required" "$LINENO" 5 +fi +rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_z_nodlopen" >&5 $as_echo "$libc_cv_z_nodlopen" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -z initfirst option" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -z initfirst option" >&5 $as_echo_n "checking for -z initfirst option... " >&6; } if ${libc_cv_z_initfirst+:} false; then : $as_echo_n "(cached) " >&6 else - cat > conftest.c < conftest.c <&5' @@ -6282,45 +6255,45 @@ EOF ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; } - then - libc_cv_z_initfirst=yes - else - as_fn_error $? "linker with -z initfirst support required" "$LINENO" 5 - fi - rm -f conftest* +then + libc_cv_z_initfirst=yes +else + as_fn_error $? "linker with -z initfirst support required" "$LINENO" 5 +fi +rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_z_initfirst" >&5 $as_echo "$libc_cv_z_initfirst" >&6; } - # Add-on fragments can set these for other machines. - libc_commonpagesize=${libc_commonpagesize:-no} - libc_relro_required=${libc_relro_required:-no} - case "$base_machine" in - i[34567]86 | x86_64 | powerpc* | s390*) - libc_commonpagesize=0x1000 - libc_relro_required=yes - ;; - sparc*) - libc_commonpagesize=0x2000 - libc_relro_required=yes - ;; - ia64*) - libc_commonpagesize=0x4000 - ;; - alpha*) - libc_commonpagesize=0x10000 - libc_relro_required=yes - ;; - esac +# Add-on fragments can set these for other machines. +libc_commonpagesize=${libc_commonpagesize:-no} +libc_relro_required=${libc_relro_required:-no} +case "$base_machine" in + i[34567]86 | x86_64 | powerpc* | s390*) + libc_commonpagesize=0x1000 + libc_relro_required=yes + ;; + sparc*) + libc_commonpagesize=0x2000 + libc_relro_required=yes + ;; + ia64*) + libc_commonpagesize=0x4000 + ;; + alpha*) + libc_commonpagesize=0x10000 + libc_relro_required=yes + ;; +esac - if test $libc_commonpagesize != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -z relro option" >&5 +if test $libc_commonpagesize != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -z relro option" >&5 $as_echo_n "checking for -z relro option... " >&6; } if ${libc_cv_z_relro+:} false; then : $as_echo_n "(cached) " >&6 else - libc_cv_z_relro=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + libc_cv_z_relro=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int _start (void) { return 42; } @@ -6335,7 +6308,7 @@ const void *const relro[] = { &_start, &_exit, 0 }; int data[0x10000] = { 1, }; _ACEOF - cat > conftest.awk <<\EOF + cat > conftest.awk <<\EOF BEGIN { result = "no" commonpagesize = strtonum(commonpagesize) @@ -6351,7 +6324,7 @@ $1 == "GNU_RELRO" { } END { print result } EOF - { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -fPIC -shared -o conftest.so conftest.c -nostartfiles -nostdlib -Wl,-z,relro 1>&5' @@ -6360,13 +6333,13 @@ EOF ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; } && - { ac_try='$READELF -Wl conftest.so > conftest.ph' + { ac_try='$READELF -Wl conftest.so > conftest.ph' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; } && - { ac_try=' + { ac_try=' $AWK -v commonpagesize=$libc_commonpagesize -f conftest.awk conftest.ph > conftest.cps ' @@ -6375,76 +6348,76 @@ EOF ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; } && - libc_cv_z_relro=`cat conftest.cps 2>&5` - rm -f conftest* + libc_cv_z_relro=`cat conftest.cps 2>&5` + rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_z_relro" >&5 $as_echo "$libc_cv_z_relro" >&6; } - if { test "x$libc_relro_required" = xyes && - test "x$libc_cv_z_relro" != xyes - } - then - as_fn_error $? "linker with -z relro support required" "$LINENO" 5 - fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: missing architecture parameter to check for working -z relro" >&5 -$as_echo "$as_me: WARNING: missing architecture parameter to check for working -z relro" >&2;} + if { test "x$libc_relro_required" = xyes && + test "x$libc_cv_z_relro" != xyes + } + then + as_fn_error $? "linker with -z relro support required" "$LINENO" 5 fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: missing architecture parameter to check for working -z relro" >&5 +$as_echo "$as_me: WARNING: missing architecture parameter to check for working -z relro" >&2;} +fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -Bgroup option" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -Bgroup option" >&5 $as_echo_n "checking for -Bgroup option... " >&6; } if ${libc_cv_Bgroup+:} false; then : $as_echo_n "(cached) " >&6 else - cat > conftest.c < conftest.c <&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; } - then - libc_cv_Bgroup=yes - else - libc_cv_Bgroup=no - fi - rm -f conftest* +then + libc_cv_Bgroup=yes +else + libc_cv_Bgroup=no +fi +rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_Bgroup" >&5 $as_echo "$libc_cv_Bgroup" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libgcc_s suffix" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libgcc_s suffix" >&5 $as_echo_n "checking for libgcc_s suffix... " >&6; } if ${libc_cv_libgcc_s_suffix+:} false; then : $as_echo_n "(cached) " >&6 else - cat > conftest.c < conftest.c <&1 >/dev/null \ | sed -n 's/^.* -lgcc_s\([^ ]*\) .*$/\1/p'` - rm -f conftest* +rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_libgcc_s_suffix" >&5 $as_echo "$libc_cv_libgcc_s_suffix" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for --as-needed option" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --as-needed option" >&5 $as_echo_n "checking for --as-needed option... " >&6; } if ${libc_cv_as_needed+:} false; then : $as_echo_n "(cached) " >&6 else - cat > conftest.c < conftest.c <&5' @@ -6453,66 +6426,66 @@ EOF ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; } - then - libc_cv_as_needed=yes - else - libc_cv_as_needed=no - fi - rm -f conftest* +then + libc_cv_as_needed=yes +else + libc_cv_as_needed=no +fi +rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_as_needed" >&5 $as_echo "$libc_cv_as_needed" >&6; } - ASFLAGS_config= - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether --noexecstack is desirable for .S files" >&5 +ASFLAGS_config= +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether --noexecstack is desirable for .S files" >&5 $as_echo_n "checking whether --noexecstack is desirable for .S files... " >&6; } if ${libc_cv_as_noexecstack+:} false; then : $as_echo_n "(cached) " >&6 else - cat > conftest.c < conftest.c <&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; } \ - && grep -q .note.GNU-stack conftest.s \ - && { ac_try='${CC-cc} $ASFLAGS -Wa,--noexecstack - -c -o conftest.o conftest.s 1>&5' + && grep -q .note.GNU-stack conftest.s \ + && { ac_try='${CC-cc} $ASFLAGS -Wa,--noexecstack + -c -o conftest.o conftest.s 1>&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; } - then - libc_cv_as_noexecstack=yes - else - libc_cv_as_noexecstack=no - fi - rm -f conftest* +then + libc_cv_as_noexecstack=yes +else + libc_cv_as_noexecstack=no +fi +rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_as_noexecstack" >&5 $as_echo "$libc_cv_as_noexecstack" >&6; } - if test $libc_cv_as_noexecstack = yes; then - ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack" - fi +if test $libc_cv_as_noexecstack = yes; then + ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack" +fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -z combreloc" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -z combreloc" >&5 $as_echo_n "checking for -z combreloc... " >&6; } if ${libc_cv_z_combreloc+:} false; then : $as_echo_n "(cached) " >&6 else - cat > conftest.c < conftest.c <&5' @@ -6521,119 +6494,119 @@ EOF ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; } - then - if $READELF -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then - libc_cv_z_combreloc=yes - else - libc_cv_z_combreloc=no - fi +then + if $READELF -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then + libc_cv_z_combreloc=yes else libc_cv_z_combreloc=no fi - rm -f conftest* +else + libc_cv_z_combreloc=no +fi +rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_z_combreloc" >&5 $as_echo "$libc_cv_z_combreloc" >&6; } - if test "$libc_cv_z_combreloc" = yes; then - $as_echo "#define HAVE_Z_COMBRELOC 1" >>confdefs.h +if test "$libc_cv_z_combreloc" = yes; then + $as_echo "#define HAVE_Z_COMBRELOC 1" >>confdefs.h - fi +fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -z execstack" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -z execstack" >&5 $as_echo_n "checking for -z execstack... " >&6; } if ${libc_cv_z_execstack+:} false; then : $as_echo_n "(cached) " >&6 else - cat > conftest.c < conftest.c <&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; } - then - libc_cv_z_execstack=yes - else - libc_cv_z_execstack=no - fi - rm -f conftest* +then + libc_cv_z_execstack=yes +else + libc_cv_z_execstack=no +fi +rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_z_execstack" >&5 $as_echo "$libc_cv_z_execstack" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -fpie" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -fpie" >&5 $as_echo_n "checking for -fpie... " >&6; } if ${libc_cv_fpie+:} false; then : $as_echo_n "(cached) " >&6 else - cat > conftest.c < conftest.c <&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; } - then - libc_cv_fpie=yes - else - libc_cv_fpie=no - fi - rm -f conftest* +then + libc_cv_fpie=yes +else + libc_cv_fpie=no +fi +rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_fpie" >&5 $as_echo "$libc_cv_fpie" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for --hash-style option" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --hash-style option" >&5 $as_echo_n "checking for --hash-style option... " >&6; } if ${libc_cv_hashstyle+:} false; then : $as_echo_n "(cached) " >&6 else - cat > conftest.c < conftest.c <&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; } - then - libc_cv_hashstyle=yes - else - libc_cv_hashstyle=no - fi - rm -f conftest* +then + libc_cv_hashstyle=yes +else + libc_cv_hashstyle=no +fi +rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_hashstyle" >&5 $as_echo "$libc_cv_hashstyle" >&6; } - # The linker's default -shared behavior is good enough if it - # does these things that our custom linker scripts ensure that - # all allocated NOTE sections come first. - if test "$use_default_link" = default; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sufficient default -shared layout" >&5 +# The linker's default -shared behavior is good enough if it +# does these things that our custom linker scripts ensure that +# all allocated NOTE sections come first. +if test "$use_default_link" = default; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sufficient default -shared layout" >&5 $as_echo_n "checking for sufficient default -shared layout... " >&6; } if ${libc_cv_use_default_link+:} false; then : $as_echo_n "(cached) " >&6 else - libc_cv_use_default_link=no - cat > conftest.s <<\EOF + libc_cv_use_default_link=no + cat > conftest.s <<\EOF .section .note.a,"a",%note .balign 4 .long 4,4,9 @@ -6645,7 +6618,7 @@ else .string "GNU" .string "bar" EOF - if { ac_try=' ${CC-cc} $ASFLAGS -shared -o conftest.so conftest.s 1>&5' + if { ac_try=' ${CC-cc} $ASFLAGS -shared -o conftest.so conftest.s 1>&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -6658,33 +6631,32 @@ EOF b : a H'` - then - libc_seen_a=no libc_seen_b=no - set -- $ac_try - while test $# -ge 2 -a "$1" = NOTE; do - case "$2" in - .note.a) libc_seen_a=yes ;; - .note.b) libc_seen_b=yes ;; - esac - shift 2 - done - case "$libc_seen_a$libc_seen_b" in - yesyes) - libc_cv_use_default_link=yes - ;; - *) - echo >&5 "\ + then + libc_seen_a=no libc_seen_b=no + set -- $ac_try + while test $# -ge 2 -a "$1" = NOTE; do + case "$2" in + .note.a) libc_seen_a=yes ;; + .note.b) libc_seen_b=yes ;; + esac + shift 2 + done + case "$libc_seen_a$libc_seen_b" in + yesyes) + libc_cv_use_default_link=yes + ;; + *) + echo >&5 "\ $libc_seen_a$libc_seen_b from: $ac_try" - ;; - esac - fi - rm -f conftest* + ;; + esac + fi + rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_use_default_link" >&5 $as_echo "$libc_cv_use_default_link" >&6; } - use_default_link=$libc_cv_use_default_link - fi + use_default_link=$libc_cv_use_default_link fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking linker output format" >&5 @@ -6799,145 +6771,32 @@ else fi -if test $elf != yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for .init and .fini sections" >&5 -$as_echo_n "checking for .init and .fini sections... " >&6; } -if ${libc_cv_have_initfini+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -asm (".section .init"); - asm (".section .fini"); - asm ("${libc_cv_dot_text}"); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - libc_cv_have_initfini=yes -else - libc_cv_have_initfini=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_have_initfini" >&5 -$as_echo "$libc_cv_have_initfini" >&6; } - if test $libc_cv_have_initfini = yes; then - $as_echo "#define HAVE_INITFINI 1" >>confdefs.h - - fi -fi - -if test $elf = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc puts quotes around section names" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc puts quotes around section names" >&5 $as_echo_n "checking whether cc puts quotes around section names... " >&6; } if ${libc_cv_have_section_quotes+:} false; then : $as_echo_n "(cached) " >&6 else cat > conftest.c </dev/null; then - libc_cv_have_section_quotes=yes - else - libc_cv_have_section_quotes=no - fi + if ${CC-cc} -S conftest.c -o conftest.s; then + if grep '\.section.*"bar"' conftest.s >/dev/null; then + libc_cv_have_section_quotes=yes else - libc_cv_have_section_quotes=unknown + libc_cv_have_section_quotes=no fi - rm -f conftest.{c,s} + else + libc_cv_have_section_quotes=unknown + fi + rm -f conftest.{c,s} fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_have_section_quotes" >&5 $as_echo "$libc_cv_have_section_quotes" >&6; } - if test $libc_cv_have_section_quotes = yes; then - $as_echo "#define HAVE_SECTION_QUOTES 1" >>confdefs.h - - fi -fi - - - -if test $elf = yes; then - libc_cv_asm_underscores=no -else - if test $ac_cv_prog_cc_works = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _ prefix on C symbol names" >&5 -$as_echo_n "checking for _ prefix on C symbol names... " >&6; } -if ${libc_cv_asm_underscores+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -asm ("_glibc_foobar:"); -int -main () -{ -glibc_foobar (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - libc_cv_asm_underscores=yes -else - libc_cv_asm_underscores=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_asm_underscores" >&5 -$as_echo "$libc_cv_asm_underscores" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _ prefix on C symbol names" >&5 -$as_echo_n "checking for _ prefix on C symbol names... " >&6; } -if ${libc_cv_asm_underscores+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat > conftest.$ac_ext <&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if grep _underscore_test conftest* >/dev/null; then - rm -f conftest* - libc_cv_asm_underscores=yes - else - rm -f conftest* - libc_cv_asm_underscores=no - fi -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -f conftest* - libc_cv_asm_underscores=no -fi -rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_asm_underscores" >&5 -$as_echo "$libc_cv_asm_underscores" >&6; } - fi -fi -if test $libc_cv_asm_underscores = no; then - $as_echo "#define NO_UNDERSCORES 1" >>confdefs.h - -fi +if test $libc_cv_have_section_quotes = yes; then + $as_echo "#define HAVE_SECTION_QUOTES 1" >>confdefs.h -if test $elf = yes; then - libc_cv_weak_symbols=yes fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for assembler .weak directive" >&5 @@ -7902,9 +7761,6 @@ fi -if test $shared = default; then - shared=$elf -fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -fPIC is default" >&5 $as_echo_n "checking whether -fPIC is default... " >&6; } diff --git a/configure.in b/configure.in index 540b83d37f..24d34971d4 100644 --- a/configure.in +++ b/configure.in @@ -77,11 +77,6 @@ AC_ARG_WITH([binutils], [specify location of binutils (as and ld)]), [path_binutils=$withval], [path_binutils='']) -AC_ARG_WITH([elf], - AC_HELP_STRING([--with-elf], - [if using the ELF object format]), - [elf=$withval], - [elf=no]) AC_ARG_WITH([selinux], AC_HELP_STRING([--with-selinux], [if building with SELinux support]), @@ -129,19 +124,14 @@ dnl [static=yes]) static=yes AC_ARG_ENABLE([shared], AC_HELP_STRING([--enable-shared], - [build shared library @<:@default=yes if GNU ld & ELF@:>@]), + [build shared library @<:@default=yes if GNU ld@:>@]), [shared=$enableval], - [shared=default]) + [shared=yes]) AC_ARG_ENABLE([profile], AC_HELP_STRING([--enable-profile], [build profiled library @<:@default=no@:>@]), [profile=$enableval], [profile=no]) -AC_ARG_ENABLE([bounded], - AC_HELP_STRING([--enable-bounded], - [build with runtime bounds checking @<:@default=no@:>@]), - [bounded=$enableval], - [bounded=no]) AC_ARG_ENABLE([versioning], AC_HELP_STRING([--disable-versioning], [do not include versioning information in the library objects @<:@default=yes if supported@:>@]), @@ -510,7 +500,6 @@ changequote(,)dnl # base_machine, we don't change it. test -n "$base_machine" || case "$machine" in i[34567]86) base_machine=i386 machine=i386/$machine ;; -ia64) base_machine=ia64 machine=ia64 ;; powerpc) base_machine=powerpc machine=powerpc/powerpc32 ;; powerpc64) base_machine=powerpc machine=powerpc/powerpc64 ;; s390) base_machine=s390 machine=s390/s390-32 ;; @@ -771,22 +760,20 @@ AC_SUBST(submachine) # We have now validated the configuration. -# If using ELF, look for an `elf' subdirectory of each machine directory. +# Look for an `elf' subdirectory of each machine directory. # We prepend these rather than inserting them whereever the machine appears # because things specified by the machine's ELF ABI should override # OS-specific things, and should always be the same for any OS on the # machine (otherwise what's the point of an ABI?). -if test "$elf" = yes; then - elf_dirs= - for d in $add_ons_pfx ''; do - for m in $mach; do - if test -d $srcdir/${d}sysdeps$m/elf; then - elf_dirs="$elf_dirs ${d}sysdeps$m/elf" - fi - done +elf_dirs= +for d in $add_ons_pfx ''; do + for m in $mach; do + if test -d $srcdir/${d}sysdeps$m/elf; then + elf_dirs="$elf_dirs ${d}sysdeps$m/elf" + fi done - sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames" -fi +done +sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames" # Expand the list of system names into a full list of directories @@ -870,10 +857,7 @@ changequote([,])dnl done # Add the default directories. -default_sysnames=sysdeps/generic -if test "$elf" = yes; then - default_sysnames="sysdeps/generic/elf $default_sysnames" -fi +default_sysnames="sysdeps/generic/elf sysdeps/generic" sysnames="$names $default_sysnames" AC_SUBST(sysnames) # The other names were emitted during the scan. @@ -1267,62 +1251,61 @@ else fi AC_SUBST(VERSIONING) -if test $elf = yes && test $shared != no && test $VERSIONING = no; then +if test $shared != no && test $VERSIONING = no; then echo "\ *** WARNING: You should not compile GNU libc without versioning. Not using *** versioning will introduce incompatibilities so that old binaries *** will not run anymore. *** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)." fi -if test $elf = yes; then - AC_CACHE_CHECK(for .previous assembler directive, - libc_cv_asm_previous_directive, [dnl - cat > conftest.s < conftest.s <&AS_MESSAGE_LOG_FD); then + libc_cv_asm_previous_directive=yes +else + libc_cv_asm_previous_directive=no +fi +rm -f conftest*]) +if test $libc_cv_asm_previous_directive = yes; then + AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE) +else + AC_CACHE_CHECK(for .popsection assembler directive, + libc_cv_asm_popsection_directive, [dnl + cat > conftest.s <&AS_MESSAGE_LOG_FD); then - libc_cv_asm_previous_directive=yes + libc_cv_asm_popsection_directive=yes else - libc_cv_asm_previous_directive=no + libc_cv_asm_popsection_directive=no fi rm -f conftest*]) - if test $libc_cv_asm_previous_directive = yes; then - AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE) - else - AC_CACHE_CHECK(for .popsection assembler directive, - libc_cv_asm_popsection_directive, [dnl - cat > conftest.s <&AS_MESSAGE_LOG_FD); then - libc_cv_asm_popsection_directive=yes - else - libc_cv_asm_popsection_directive=no - fi - rm -f conftest*]) - if test $libc_cv_asm_popsection_directive = yes; then - AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE) - fi + if test $libc_cv_asm_popsection_directive = yes; then + AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE) fi - AC_CACHE_CHECK(for .protected and .hidden assembler directive, - libc_cv_asm_protected_directive, [dnl - cat > conftest.s < conftest.s <&AS_MESSAGE_LOG_FD); then - libc_cv_asm_protected_directive=yes - else - AC_MSG_ERROR(assembler support for symbol visibility is required) - fi - rm -f conftest*]) +if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then + libc_cv_asm_protected_directive=yes +else + AC_MSG_ERROR(assembler support for symbol visibility is required) +fi +rm -f conftest*]) - if test $libc_cv_asm_protected_directive = yes; then - AC_CACHE_CHECK(whether __attribute__((visibility())) is supported, +if test $libc_cv_asm_protected_directive = yes; then + AC_CACHE_CHECK(whether __attribute__((visibility())) is supported, libc_cv_visibility_attribute, [cat > conftest.c < conftest.c < conftest.c < conftest.c <&AS_MESSAGE_LOG_FD); then - if grep 'xyzzy' conftest.s >/dev/null && - grep 'abccb' conftest.s >/dev/null; then - libc_cv_broken_alias_attribute=no - fi - fi - rm -f conftest.c conftest.s - ]) - if test $libc_cv_broken_alias_attribute = yes; then - AC_MSG_ERROR(working alias attribute support required) - fi - - if test $libc_cv_visibility_attribute = yes; then - AC_CACHE_CHECK(whether to put _rtld_local into .sdata section, + libc_cv_broken_alias_attribute=yes + if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then + if grep 'xyzzy' conftest.s >/dev/null && + grep 'abccb' conftest.s >/dev/null; then + libc_cv_broken_alias_attribute=no + fi + fi + rm -f conftest.c conftest.s + ]) +if test $libc_cv_broken_alias_attribute = yes; then + AC_MSG_ERROR(working alias attribute support required) +fi + +if test $libc_cv_visibility_attribute = yes; then + AC_CACHE_CHECK(whether to put _rtld_local into .sdata section, libc_cv_have_sdata_section, [echo "int i;" > conftest.c libc_cv_have_sdata_section=no @@ -1400,43 +1383,43 @@ EOF fi rm -f conftest.c conftest.so ]) - if test $libc_cv_have_sdata_section = yes; then - AC_DEFINE(HAVE_SDATA_SECTION) - fi + if test $libc_cv_have_sdata_section = yes; then + AC_DEFINE(HAVE_SDATA_SECTION) fi +fi - AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support, - libc_cv_initfini_array, [dnl - cat > conftest.c < conftest.c <&AS_MESSAGE_LOG_FD]) - then - if $READELF -S conftest | fgrep INIT_ARRAY > /dev/null; then - libc_cv_initfini_array=yes - else - libc_cv_initfini_array=no - fi +if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -o conftest conftest.c + -static -nostartfiles -nostdlib 1>&AS_MESSAGE_LOG_FD]) +then + if $READELF -S conftest | fgrep INIT_ARRAY > /dev/null; then + libc_cv_initfini_array=yes else libc_cv_initfini_array=no fi - rm -f conftest*]) - if test $libc_cv_initfini_array != yes; then - AC_MSG_ERROR([Need linker with .init_array/.fini_array support.]) - fi +else + libc_cv_initfini_array=no +fi +rm -f conftest*]) +if test $libc_cv_initfini_array != yes; then + AC_MSG_ERROR([Need linker with .init_array/.fini_array support.]) +fi - AC_CACHE_CHECK(whether to use .ctors/.dtors header and trailer, - libc_cv_ctors_header, [dnl - libc_cv_ctors_header=yes - AC_TRY_LINK([], [ +AC_CACHE_CHECK(whether to use .ctors/.dtors header and trailer, + libc_cv_ctors_header, [dnl + libc_cv_ctors_header=yes + AC_TRY_LINK([], [ __attribute__ ((constructor)) void ctor (void) { puts("ctor"); } __attribute__ ((destructor)) void dtor (void) { puts("dtor"); } ], - [dnl + [dnl AS_IF([$READELF -WS conftest$ac_exeext | $AWK ' { gsub(/\@<:@ */, "@<:@") } $2 == ".ctors" || $2 == ".dtors" { @@ -1454,102 +1437,102 @@ __attribute__ ((destructor)) void dtor (void) { puts("dtor"); } ], [dnl AC_MSG_ERROR([missing __attribute__ ((constructor)) support??]) ]) - ]) - if test $libc_cv_ctors_header = no; then - AC_DEFINE(NO_CTORS_DTORS_SECTIONS) - fi +]) +if test $libc_cv_ctors_header = no; then + AC_DEFINE(NO_CTORS_DTORS_SECTIONS) +fi - AC_CACHE_CHECK(for libunwind-support in compiler, - libc_cv_cc_with_libunwind, [ - cat > conftest.c < conftest.c <&1 >/dev/null | grep -q " -lunwind "; then - libc_cv_cc_with_libunwind=yes - else - libc_cv_cc_with_libunwind=no - fi - rm -f conftest*]) - AC_SUBST(libc_cv_cc_with_libunwind) - if test $libc_cv_cc_with_libunwind = yes; then - AC_DEFINE(HAVE_CC_WITH_LIBUNWIND) + if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -static -o conftest \ + conftest.c -v 2>&1 >/dev/null | grep -q " -lunwind "; then + libc_cv_cc_with_libunwind=yes + else + libc_cv_cc_with_libunwind=no fi + rm -f conftest*]) +AC_SUBST(libc_cv_cc_with_libunwind) +if test $libc_cv_cc_with_libunwind = yes; then + AC_DEFINE(HAVE_CC_WITH_LIBUNWIND) +fi - AC_CACHE_CHECK(for -z nodelete option, - libc_cv_z_nodelete, [dnl - cat > conftest.c < conftest.c <&AS_MESSAGE_LOG_FD]) - then - libc_cv_z_nodelete=yes - else - AC_MSG_ERROR(linker with -z nodelete support required) - fi - rm -f conftest*]) +if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS + -fPIC -shared -o conftest.so conftest.c + -nostartfiles -nostdlib + -Wl,--enable-new-dtags,-z,nodelete 1>&AS_MESSAGE_LOG_FD]) +then + libc_cv_z_nodelete=yes +else + AC_MSG_ERROR(linker with -z nodelete support required) +fi +rm -f conftest*]) - AC_CACHE_CHECK(for -z nodlopen option, - libc_cv_z_nodlopen, [dnl - cat > conftest.c < conftest.c <&AS_MESSAGE_LOG_FD]) - then - libc_cv_z_nodlopen=yes - else - AC_MSG_ERROR(linker with -z nodlopen support required) - fi - rm -f conftest*]) +then + libc_cv_z_nodlopen=yes +else + AC_MSG_ERROR(linker with -z nodlopen support required) +fi +rm -f conftest*]) - AC_CACHE_CHECK(for -z initfirst option, - libc_cv_z_initfirst, [dnl - cat > conftest.c < conftest.c <&AS_MESSAGE_LOG_FD]) - then - libc_cv_z_initfirst=yes - else - AC_MSG_ERROR(linker with -z initfirst support required) - fi - rm -f conftest*]) +then + libc_cv_z_initfirst=yes +else + AC_MSG_ERROR(linker with -z initfirst support required) +fi +rm -f conftest*]) - # Add-on fragments can set these for other machines. - libc_commonpagesize=${libc_commonpagesize:-no} - libc_relro_required=${libc_relro_required:-no} - case "$base_machine" in - i[[34567]]86 | x86_64 | powerpc* | s390*) - libc_commonpagesize=0x1000 - libc_relro_required=yes - ;; - sparc*) - libc_commonpagesize=0x2000 - libc_relro_required=yes - ;; - ia64*) - libc_commonpagesize=0x4000 - ;; - alpha*) - libc_commonpagesize=0x10000 - libc_relro_required=yes - ;; - esac +# Add-on fragments can set these for other machines. +libc_commonpagesize=${libc_commonpagesize:-no} +libc_relro_required=${libc_relro_required:-no} +case "$base_machine" in + i[[34567]]86 | x86_64 | powerpc* | s390*) + libc_commonpagesize=0x1000 + libc_relro_required=yes + ;; + sparc*) + libc_commonpagesize=0x2000 + libc_relro_required=yes + ;; + ia64*) + libc_commonpagesize=0x4000 + ;; + alpha*) + libc_commonpagesize=0x10000 + libc_relro_required=yes + ;; +esac - if test $libc_commonpagesize != no; then - AC_CACHE_CHECK(for -z relro option, - libc_cv_z_relro, [dnl - libc_cv_z_relro=no - AC_LANG_CONFTEST([AC_LANG_SOURCE([[ +if test $libc_commonpagesize != no; then + AC_CACHE_CHECK(for -z relro option, + libc_cv_z_relro, [dnl + libc_cv_z_relro=no + AC_LANG_CONFTEST([AC_LANG_SOURCE([[ int _start (void) { return 42; } extern void _exit (int); /* Since these pointers are const, they should go in rodata. @@ -1561,7 +1544,7 @@ const void *const relro[] = { &_start, &_exit, 0 }; follows it, or only very small writable data. */ int data[0x10000] = { 1, }; ]])]) - cat > conftest.awk <<\EOF + cat > conftest.awk <<\EOF BEGIN { result = "no" commonpagesize = strtonum(commonpagesize) @@ -1577,184 +1560,184 @@ $1 == "GNU_RELRO" { } END { print result } EOF - AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS + AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -fPIC -shared -o conftest.so conftest.c -nostartfiles -nostdlib -Wl,-z,relro 1>&AS_MESSAGE_LOG_FD]) && - AC_TRY_COMMAND([$READELF -Wl conftest.so > conftest.ph]) && - AC_TRY_COMMAND([ + AC_TRY_COMMAND([$READELF -Wl conftest.so > conftest.ph]) && + AC_TRY_COMMAND([ $AWK -v commonpagesize=$libc_commonpagesize -f conftest.awk conftest.ph > conftest.cps ]) && - libc_cv_z_relro=`cat conftest.cps 2>&AS_MESSAGE_LOG_FD` - rm -f conftest*]) - if { test "x$libc_relro_required" = xyes && - test "x$libc_cv_z_relro" != xyes - } - then - AC_MSG_ERROR(linker with -z relro support required) - fi - else - AC_MSG_WARN([missing architecture parameter to check for working -z relro]) + libc_cv_z_relro=`cat conftest.cps 2>&AS_MESSAGE_LOG_FD` + rm -f conftest*]) + if { test "x$libc_relro_required" = xyes && + test "x$libc_cv_z_relro" != xyes + } + then + AC_MSG_ERROR(linker with -z relro support required) fi +else + AC_MSG_WARN([missing architecture parameter to check for working -z relro]) +fi - AC_CACHE_CHECK(for -Bgroup option, - libc_cv_Bgroup, [dnl - cat > conftest.c < conftest.c <&AS_MESSAGE_LOG_FD]) - then - libc_cv_Bgroup=yes - else - libc_cv_Bgroup=no - fi - rm -f conftest*]) - AC_SUBST(libc_cv_Bgroup) +if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS + -fPIC -shared -o conftest.so conftest.c + -Wl,-Bgroup -nostdlib 1>&AS_MESSAGE_LOG_FD]) +then + libc_cv_Bgroup=yes +else + libc_cv_Bgroup=no +fi +rm -f conftest*]) +AC_SUBST(libc_cv_Bgroup) - AC_CACHE_CHECK(for libgcc_s suffix, - libc_cv_libgcc_s_suffix, [dnl - cat > conftest.c < conftest.c <&1 >/dev/null \ | sed -n 's/^.* -lgcc_s\([^ ]*\) .*$/\1/p'` changequote([,])dnl - rm -f conftest*]) - AC_SUBST(libc_cv_libgcc_s_suffix) +rm -f conftest*]) +AC_SUBST(libc_cv_libgcc_s_suffix) - AC_CACHE_CHECK(for --as-needed option, - libc_cv_as_needed, [dnl - cat > conftest.c < conftest.c <&AS_MESSAGE_LOG_FD]) - then - libc_cv_as_needed=yes - else - libc_cv_as_needed=no - fi - rm -f conftest*]) - AC_SUBST(libc_cv_as_needed) +then + libc_cv_as_needed=yes +else + libc_cv_as_needed=no +fi +rm -f conftest*]) +AC_SUBST(libc_cv_as_needed) - ASFLAGS_config= - AC_CACHE_CHECK(whether --noexecstack is desirable for .S files, - libc_cv_as_noexecstack, [dnl - cat > conftest.c < conftest.c <&AS_MESSAGE_LOG_FD]) \ - && grep -q .note.GNU-stack conftest.s \ - && AC_TRY_COMMAND([${CC-cc} $ASFLAGS -Wa,--noexecstack - -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD]) - then - libc_cv_as_noexecstack=yes - else - libc_cv_as_noexecstack=no - fi - rm -f conftest*]) - if test $libc_cv_as_noexecstack = yes; then - ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack" - fi - AC_SUBST(ASFLAGS_config) +if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS + -S -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD]) \ + && grep -q .note.GNU-stack conftest.s \ + && AC_TRY_COMMAND([${CC-cc} $ASFLAGS -Wa,--noexecstack + -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD]) +then + libc_cv_as_noexecstack=yes +else + libc_cv_as_noexecstack=no +fi +rm -f conftest*]) +if test $libc_cv_as_noexecstack = yes; then + ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack" +fi +AC_SUBST(ASFLAGS_config) - AC_CACHE_CHECK(for -z combreloc, - libc_cv_z_combreloc, [dnl - cat > conftest.c < conftest.c <&AS_MESSAGE_LOG_FD]) - then +then dnl The following test is a bit weak. We must use a tool which can test dnl cross-platform since the gcc used can be a cross compiler. Without dnl introducing new options this is not easily doable. Instead use a tool dnl which always is cross-platform: readelf. To detect whether -z combreloc dnl look for a section named .rel.dyn. - if $READELF -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then - libc_cv_z_combreloc=yes - else - libc_cv_z_combreloc=no - fi + if $READELF -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then + libc_cv_z_combreloc=yes else libc_cv_z_combreloc=no fi - rm -f conftest*]) - if test "$libc_cv_z_combreloc" = yes; then - AC_DEFINE(HAVE_Z_COMBRELOC) - fi - AC_SUBST(libc_cv_z_combreloc) +else + libc_cv_z_combreloc=no +fi +rm -f conftest*]) +if test "$libc_cv_z_combreloc" = yes; then + AC_DEFINE(HAVE_Z_COMBRELOC) +fi +AC_SUBST(libc_cv_z_combreloc) - AC_CACHE_CHECK(for -z execstack, - libc_cv_z_execstack, [dnl - cat > conftest.c < conftest.c <&AS_MESSAGE_LOG_FD]) - then - libc_cv_z_execstack=yes - else - libc_cv_z_execstack=no - fi - rm -f conftest*]) - AC_SUBST(libc_cv_z_execstack) +if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS + -fPIC -shared -o conftest.so conftest.c + -Wl,-z,execstack -nostdlib + 1>&AS_MESSAGE_LOG_FD]) +then + libc_cv_z_execstack=yes +else + libc_cv_z_execstack=no +fi +rm -f conftest*]) +AC_SUBST(libc_cv_z_execstack) - AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl - cat > conftest.c < conftest.c <&AS_MESSAGE_LOG_FD]) - then - libc_cv_fpie=yes - else - libc_cv_fpie=no - fi - rm -f conftest*]) +if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fpie + -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]) +then + libc_cv_fpie=yes +else + libc_cv_fpie=no +fi +rm -f conftest*]) - AC_SUBST(libc_cv_fpie) +AC_SUBST(libc_cv_fpie) - AC_CACHE_CHECK(for --hash-style option, - libc_cv_hashstyle, [dnl - cat > conftest.c < conftest.c <&AS_MESSAGE_LOG_FD]) - then - libc_cv_hashstyle=yes - else - libc_cv_hashstyle=no - fi - rm -f conftest*]) - AC_SUBST(libc_cv_hashstyle) - - # The linker's default -shared behavior is good enough if it - # does these things that our custom linker scripts ensure that - # all allocated NOTE sections come first. - if test "$use_default_link" = default; then - AC_CACHE_CHECK([for sufficient default -shared layout], - libc_cv_use_default_link, [dnl - libc_cv_use_default_link=no - cat > conftest.s <<\EOF +if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS + -fPIC -shared -o conftest.so conftest.c + -Wl,--hash-style=both -nostdlib 1>&AS_MESSAGE_LOG_FD]) +then + libc_cv_hashstyle=yes +else + libc_cv_hashstyle=no +fi +rm -f conftest*]) +AC_SUBST(libc_cv_hashstyle) + +# The linker's default -shared behavior is good enough if it +# does these things that our custom linker scripts ensure that +# all allocated NOTE sections come first. +if test "$use_default_link" = default; then + AC_CACHE_CHECK([for sufficient default -shared layout], + libc_cv_use_default_link, [dnl + libc_cv_use_default_link=no + cat > conftest.s <<\EOF .section .note.a,"a",%note .balign 4 .long 4,4,9 @@ -1766,7 +1749,7 @@ EOF .string "GNU" .string "bar" EOF - if AC_TRY_COMMAND([dnl + if AC_TRY_COMMAND([dnl ${CC-cc} $ASFLAGS -shared -o conftest.so conftest.s 1>&AS_MESSAGE_LOG_FD]) && ac_try=`$READELF -S conftest.so | sed -n \ ['${x;p;} @@ -1775,30 +1758,29 @@ EOF b : a H']` - then - libc_seen_a=no libc_seen_b=no - set -- $ac_try - while test $# -ge 2 -a "$1" = NOTE; do - case "$2" in - .note.a) libc_seen_a=yes ;; - .note.b) libc_seen_b=yes ;; - esac - shift 2 - done - case "$libc_seen_a$libc_seen_b" in - yesyes) - libc_cv_use_default_link=yes - ;; - *) - echo >&AS_MESSAGE_LOG_FD "\ + then + libc_seen_a=no libc_seen_b=no + set -- $ac_try + while test $# -ge 2 -a "$1" = NOTE; do + case "$2" in + .note.a) libc_seen_a=yes ;; + .note.b) libc_seen_b=yes ;; + esac + shift 2 + done + case "$libc_seen_a$libc_seen_b" in + yesyes) + libc_cv_use_default_link=yes + ;; + *) + echo >&AS_MESSAGE_LOG_FD "\ $libc_seen_a$libc_seen_b from: $ac_try" - ;; - esac - fi - rm -f conftest*]) - use_default_link=$libc_cv_use_default_link + ;; + esac fi + rm -f conftest*]) + use_default_link=$libc_cv_use_default_link fi AC_CACHE_CHECK(linker output format, libc_cv_output_format, [dnl @@ -1870,88 +1852,25 @@ else fi AC_SUBST(gnu89_inline) -if test $elf != yes; then - AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini, - [AC_TRY_COMPILE(, [asm (".section .init"); - asm (".section .fini"); - asm ("${libc_cv_dot_text}");], - libc_cv_have_initfini=yes, - libc_cv_have_initfini=no)]) - AC_SUBST(libc_cv_have_initfini)dnl - if test $libc_cv_have_initfini = yes; then - AC_DEFINE(HAVE_INITFINI) - fi -fi - -if test $elf = yes; then - AC_CACHE_CHECK(whether cc puts quotes around section names, - libc_cv_have_section_quotes, - [cat > conftest.c < conftest.c </dev/null; then - libc_cv_have_section_quotes=yes - else - libc_cv_have_section_quotes=no - fi + if ${CC-cc} -S conftest.c -o conftest.s; then + if grep '\.section.*"bar"' conftest.s >/dev/null; then + libc_cv_have_section_quotes=yes else - libc_cv_have_section_quotes=unknown + libc_cv_have_section_quotes=no fi - rm -f conftest.{c,s} - ]) - if test $libc_cv_have_section_quotes = yes; then - AC_DEFINE(HAVE_SECTION_QUOTES) - fi -fi - -dnl AC_CHECK_ASM_UNDERSCORE([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) -AC_DEFUN(AC_CHECK_ASM_UNDERSCORE, -[cat > conftest.$ac_ext </dev/null; then - ifelse([$1], , :, [rm -f conftest* - $1]) - else - ifelse([$2], , , [rm -f conftest* - $2]) - fi -else - echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD - cat conftest.$ac_ext >&AS_MESSAGE_LOG_FD - ifelse([$2], , , [rm -f conftest* - $2]) -fi -rm -f conftest*]) - -if test $elf = yes; then - libc_cv_asm_underscores=no -else - if test $ac_cv_prog_cc_works = yes; then - AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores, - [AC_TRY_LINK([asm ("_glibc_foobar:");], [glibc_foobar ();], - libc_cv_asm_underscores=yes, - libc_cv_asm_underscores=no)]) - else - AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores, - [AC_CHECK_ASM_UNDERSCORE(libc_cv_asm_underscores=yes, - libc_cv_asm_underscores=no)]) - fi -fi -if test $libc_cv_asm_underscores = no; then - AC_DEFINE(NO_UNDERSCORES) -fi - -if test $elf = yes; then - libc_cv_weak_symbols=yes + else + libc_cv_have_section_quotes=unknown + fi + rm -f conftest.{c,s} + ]) +if test $libc_cv_have_section_quotes = yes; then + AC_DEFINE(HAVE_SECTION_QUOTES) fi AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive, @@ -2314,9 +2233,6 @@ AC_SUBST(ldd_rewrite_script) AC_SUBST(static) AC_SUBST(shared) -if test $shared = default; then - shared=$elf -fi AC_CACHE_CHECK([whether -fPIC is default], libc_cv_pic_default, [libc_cv_pic_default=yes diff --git a/csu/start.c b/csu/start.c index 08f985c482..d7d7a8510d 100644 --- a/csu/start.c +++ b/csu/start.c @@ -8,6 +8,4 @@ /* The first piece of initialized data. */ int __data_start = 0; -#ifdef HAVE_WEAK_SYMBOLS weak_alias (__data_start, data_start) -#endif diff --git a/include/libc-symbols.h b/include/libc-symbols.h index e253722c44..c5402de052 100644 --- a/include/libc-symbols.h +++ b/include/libc-symbols.h @@ -55,24 +55,16 @@ /* The symbols in all the user (non-_) macros are C symbols. */ -#if defined HAVE_ASM_WEAK_DIRECTIVE || defined HAVE_ASM_WEAKEXT_DIRECTIVE -# define HAVE_WEAK_SYMBOLS +#if !defined HAVE_ASM_WEAK_DIRECTIVE && !defined HAVE_ASM_WEAKEXT_DIRECTIVE +# error "weak symbol support needed" #endif #ifndef __SYMBOL_PREFIX -# ifdef NO_UNDERSCORES -# define __SYMBOL_PREFIX -# else -# define __SYMBOL_PREFIX "_" -# endif +# define __SYMBOL_PREFIX #endif #ifndef C_SYMBOL_NAME -# ifdef NO_UNDERSCORES -# define C_SYMBOL_NAME(name) name -# else -# define C_SYMBOL_NAME(name) _##name -# endif +# define C_SYMBOL_NAME(name) name #endif #ifndef ASM_LINE_SEP @@ -104,32 +96,23 @@ # define weak_function __attribute__ ((weak)) # define weak_const_function __attribute__ ((weak, __const__)) -# ifdef HAVE_WEAK_SYMBOLS - /* Define ALIASNAME as a weak alias for NAME. If weak aliases are not available, this defines a strong alias. */ -# define weak_alias(name, aliasname) _weak_alias (name, aliasname) -# define _weak_alias(name, aliasname) \ +# define weak_alias(name, aliasname) _weak_alias (name, aliasname) +# define _weak_alias(name, aliasname) \ extern __typeof (name) aliasname __attribute__ ((weak, alias (#name))); /* Same as WEAK_ALIAS, but mark symbol as hidden. */ -# define weak_hidden_alias(name, aliasname) \ +# define weak_hidden_alias(name, aliasname) \ _weak_hidden_alias (name, aliasname) -# define _weak_hidden_alias(name, aliasname) \ +# define _weak_hidden_alias(name, aliasname) \ extern __typeof (name) aliasname \ __attribute__ ((weak, alias (#name), __visibility__ ("hidden"))); /* Declare SYMBOL as weak undefined symbol (resolved to 0 if not defined). */ -# define weak_extern(symbol) _weak_extern (weak symbol) -# define _weak_extern(expr) _Pragma (#expr) +# define weak_extern(symbol) _weak_extern (weak symbol) +# define _weak_extern(expr) _Pragma (#expr) -# else - -# define weak_alias(name, aliasname) strong_alias(name, aliasname) -# define weak_hidden_alias(name, aliasname) strong_alias(name, aliasname) -# define weak_extern(symbol) /* Nothing. */ - -# endif #else /* __ASSEMBLER__ */ @@ -167,43 +150,36 @@ # endif # endif -# ifdef HAVE_WEAK_SYMBOLS -# ifdef HAVE_ASM_WEAKEXT_DIRECTIVE -# ifdef HAVE_ASM_GLOBAL_DOT_NAME -# define weak_alias(original, alias) \ +# ifdef HAVE_ASM_WEAKEXT_DIRECTIVE +# ifdef HAVE_ASM_GLOBAL_DOT_NAME +# define weak_alias(original, alias) \ .weakext C_SYMBOL_NAME (alias), C_SYMBOL_NAME (original) ASM_LINE_SEP \ .weakext C_SYMBOL_DOT_NAME (alias), C_SYMBOL_DOT_NAME (original) -# else -# define weak_alias(original, alias) \ +# else +# define weak_alias(original, alias) \ .weakext C_SYMBOL_NAME (alias), C_SYMBOL_NAME (original) -# endif -# define weak_extern(symbol) \ +# endif +# define weak_extern(symbol) \ .weakext C_SYMBOL_NAME (symbol) -# else /* ! HAVE_ASM_WEAKEXT_DIRECTIVE */ +# else /* ! HAVE_ASM_WEAKEXT_DIRECTIVE */ -# ifdef HAVE_ASM_GLOBAL_DOT_NAME -# define weak_alias(original, alias) \ +# ifdef HAVE_ASM_GLOBAL_DOT_NAME +# define weak_alias(original, alias) \ .weak C_SYMBOL_NAME (alias) ASM_LINE_SEP \ C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original) ASM_LINE_SEP \ .weak C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP \ C_SYMBOL_DOT_NAME (alias) = C_SYMBOL_DOT_NAME (original) -# else -# define weak_alias(original, alias) \ +# else +# define weak_alias(original, alias) \ .weak C_SYMBOL_NAME (alias) ASM_LINE_SEP \ C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original) -# endif +# endif -# define weak_extern(symbol) \ +# define weak_extern(symbol) \ .weak C_SYMBOL_NAME (symbol) -# endif /* ! HAVE_ASM_WEAKEXT_DIRECTIVE */ - -# else /* ! HAVE_WEAK_SYMBOLS */ - -# define weak_alias(original, alias) strong_alias(original, alias) -# define weak_extern(symbol) /* Nothing */ -# endif /* ! HAVE_WEAK_SYMBOLS */ +# endif /* ! HAVE_ASM_WEAKEXT_DIRECTIVE */ #endif /* __ASSEMBLER__ */ diff --git a/locale/localeinfo.h b/locale/localeinfo.h index 6cf05b2154..3c989ea4f9 100644 --- a/locale/localeinfo.h +++ b/locale/localeinfo.h @@ -1,5 +1,5 @@ /* Declarations for internal libc locale interfaces - Copyright (C) 1995-2003, 2005, 2006, 2007, 2008, 2009, 2010, 2011 + Copyright (C) 1995-2003, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -216,7 +216,7 @@ __libc_tsd_define (extern, __locale_t, LOCALE) unused. We can manage this playing some tricks with weak references. But with thread-local locale settings, it becomes quite ungainly unless we can use __thread variables. So only in that case do we attempt this. */ -#if !defined SHARED && defined HAVE_WEAK_SYMBOLS +#ifndef SHARED # include # define NL_CURRENT_INDIRECT 1 #endif diff --git a/sysdeps/generic/machine-gmon.h b/sysdeps/generic/machine-gmon.h index eb046b068d..7c13fa992e 100644 --- a/sysdeps/generic/machine-gmon.h +++ b/sysdeps/generic/machine-gmon.h @@ -1,5 +1,5 @@ /* Machine-dependent definitions for profiling support. Generic GCC 2 version. - Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 2000, 2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -31,16 +31,10 @@ #endif #include -#ifndef NO_UNDERSCORES -/* The asm symbols for C functions are `_function'. - The canonical name for the counter function is `mcount', no _. */ -void _mcount (void) asm ("mcount"); -#else /* The canonical name for the function is `_mcount' in both C and asm, but some old asm code might assume it's `mcount'. */ void _mcount (void); weak_alias (_mcount, mcount) -#endif static void mcount_internal (u_long frompc, u_long selfpc); diff --git a/sysdeps/generic/sysdep.h b/sysdeps/generic/sysdep.h index eecbd731f6..d1fec5456e 100644 --- a/sysdeps/generic/sysdep.h +++ b/sysdeps/generic/sysdep.h @@ -1,5 +1,5 @@ /* Generic asm macros used on many machines. - Copyright (C) 1991-1993,96,98,2002,2003,2009,2011 + Copyright (C) 1991-1993,96,98,2002,2003,2009,2011,2012 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -21,18 +21,10 @@ #ifndef C_LABEL /* Define a macro we can use to construct the asm name for a C symbol. */ -# ifdef NO_UNDERSCORES -# ifdef __STDC__ -# define C_LABEL(name) name##: -# else -# define C_LABEL(name) name/**/: -# endif +# ifdef __STDC__ +# define C_LABEL(name) name##: # else -# ifdef __STDC__ -# define C_LABEL(name) _##name##: -# else -# define C_LABEL(name) _/**/name/**/: -# endif +# define C_LABEL(name) name/**/: # endif #endif diff --git a/sysdeps/i386/sysdep.h b/sysdeps/i386/sysdep.h index 5a1f6938b0..ffa38edd42 100644 --- a/sysdeps/i386/sysdep.h +++ b/sysdeps/i386/sysdep.h @@ -30,10 +30,6 @@ #define ASM_TYPE_DIRECTIVE(name,typearg) .type name,typearg; #define ASM_SIZE_DIRECTIVE(name) .size name,.-name; -/* In ELF C symbols are asm symbols. */ -#undef NO_UNDERSCORES -#define NO_UNDERSCORES - /* Define an entry point visible from C. @@ -95,13 +91,11 @@ #define CALL_MCOUNT /* Do nothing. */ #endif -#ifdef NO_UNDERSCORES /* Since C identifiers are not normally prefixed with an underscore on this system, the asm identifier `syscall_error' intrudes on the C name space. Make sure we use an innocuous name. */ #define syscall_error __syscall_error #define mcount _mcount -#endif #define PSEUDO(name, syscall_name, args) \ .globl syscall_error; \ diff --git a/sysdeps/ieee754/ldbl-opt/math_ldbl_opt.h b/sysdeps/ieee754/ldbl-opt/math_ldbl_opt.h index 722dcae745..77ab26370d 100644 --- a/sysdeps/ieee754/ldbl-opt/math_ldbl_opt.h +++ b/sysdeps/ieee754/ldbl-opt/math_ldbl_opt.h @@ -20,7 +20,7 @@ long_double_symbol (libc, __GL_##name##_##aliasname, aliasname); # define long_double_symbol_1(lib, local, symbol, version) \ versioned_symbol (lib, local, symbol, version) -#elif defined HAVE_WEAK_SYMBOLS +#else # define ldbl_hidden_def(local, name) libc_hidden_def (name) # define ldbl_strong_alias(name, aliasname) strong_alias (name, aliasname) # define ldbl_weak_alias(name, aliasname) weak_alias (name, aliasname) @@ -33,12 +33,6 @@ # define long_double_symbol_1(lib, local, symbol, version) \ weak_alias (local, symbol) # endif -#else -# define ldbl_hidden_def(local, name) libc_hidden_def (name) -# define ldbl_strong_alias(name, aliasname) strong_alias (name, aliasname) -# define ldbl_weak_alias(name, aliasname) strong_alias (name, aliasname) -# define long_double_symbol_1(lib, local, symbol, version) \ - strong_alias (local, symbol) #endif #ifndef __ASSEMBLER__ diff --git a/sysdeps/mach/sysdep.h b/sysdeps/mach/sysdep.h index bb287a32f4..305bb347ee 100644 --- a/sysdeps/mach/sysdep.h +++ b/sysdeps/mach/sysdep.h @@ -84,8 +84,4 @@ #endif /* Used by some assembly code. */ -#ifdef NO_UNDERSCORES #define C_SYMBOL_NAME(name) name -#else -#define C_SYMBOL_NAME(name) _##name -#endif diff --git a/sysdeps/s390/s390-32/sysdep.h b/sysdeps/s390/s390-32/sysdep.h index 8cb8005a58..6c52caff4f 100644 --- a/sysdeps/s390/s390-32/sysdep.h +++ b/sysdeps/s390/s390-32/sysdep.h @@ -30,10 +30,6 @@ #define ASM_TYPE_DIRECTIVE(name,typearg) .type name,typearg; #define ASM_SIZE_DIRECTIVE(name) .size name,.-name; -/* In ELF C symbols are asm symbols. */ -#undef NO_UNDERSCORES -#define NO_UNDERSCORES - /* Define an entry point visible from C. */ #define ENTRY(name) \ @@ -66,13 +62,11 @@ #define CALL_MCOUNT /* Do nothing. */ #endif -#ifdef NO_UNDERSCORES /* Since C identifiers are not normally prefixed with an underscore on this system, the asm identifier `syscall_error' intrudes on the C name space. Make sure we use an innocuous name. */ #define syscall_error __syscall_error #define mcount _mcount -#endif #define PSEUDO(name, syscall_name, args) \ lose: SYSCALL_PIC_SETUP \ diff --git a/sysdeps/s390/s390-64/sysdep.h b/sysdeps/s390/s390-64/sysdep.h index 68903df64e..b1c9961f15 100644 --- a/sysdeps/s390/s390-64/sysdep.h +++ b/sysdeps/s390/s390-64/sysdep.h @@ -30,10 +30,6 @@ #define ASM_TYPE_DIRECTIVE(name,typearg) .type name,typearg; #define ASM_SIZE_DIRECTIVE(name) .size name,.-name; -/* In ELF C symbols are asm symbols. */ -#undef NO_UNDERSCORES -#define NO_UNDERSCORES - /* Define an entry point visible from C. */ #define ENTRY(name) \ @@ -64,13 +60,11 @@ #define CALL_MCOUNT /* Do nothing. */ #endif -#ifdef NO_UNDERSCORES /* Since C identifiers are not normally prefixed with an underscore on this system, the asm identifier `syscall_error' intrudes on the C name space. Make sure we use an innocuous name. */ #define syscall_error __syscall_error #define mcount _mcount -#endif #define PSEUDO(name, syscall_name, args) \ lose: SYSCALL_PIC_SETUP \ diff --git a/sysdeps/sh/sysdep.h b/sysdeps/sh/sysdep.h index 9f37dc9bac..3ecfa96f0e 100644 --- a/sysdeps/sh/sysdep.h +++ b/sysdeps/sh/sysdep.h @@ -69,12 +69,10 @@ #define CALL_MCOUNT /* Do nothing. */ #endif -#ifdef NO_UNDERSCORES /* Since C identifiers are not normally prefixed with an underscore on this system, the asm identifier `syscall_error' intrudes on the C name space. Make sure we use an innocuous name. */ #define syscall_error __syscall_error #define mcount _mcount -#endif #endif /* __ASSEMBLER__ */ diff --git a/sysdeps/sparc/sparc32/alloca.S b/sysdeps/sparc/sparc32/alloca.S index 42a2c61b46..c1057c13dd 100644 --- a/sysdeps/sparc/sparc32/alloca.S +++ b/sysdeps/sparc/sparc32/alloca.S @@ -1,4 +1,4 @@ -/* Copyright (C) 1994, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1994, 1997, 2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -22,10 +22,6 @@ arguments which it makes relocatable symbols but seem always to be the constant 96; I have no idea what they are for. */ -#ifndef NO_UNDERSCORES -#define __builtin_alloca ___builtin_alloca -#endif - ENTRY (__builtin_alloca) sub %sp, %o0, %sp /* Push some stack space. */ retl /* Return; the returned buffer leaves 96 */ diff --git a/sysdeps/unix/i386/sysdep.S b/sysdeps/unix/i386/sysdep.S index 9f279e15b1..fc5cd67ec0 100644 --- a/sysdeps/unix/i386/sysdep.S +++ b/sysdeps/unix/i386/sysdep.S @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-1997,2000,2002,2004,2005,2011 +/* Copyright (C) 1991-1997,2000,2002,2004,2005,2011,2012 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -30,12 +30,7 @@ .globl C_SYMBOL_NAME(errno) .globl syscall_error -#undef syscall_error -#ifdef NO_UNDERSCORES __syscall_error: -#else -syscall_error: -#endif #if defined (EWOULDBLOCK_sys) && EWOULDBLOCK_sys != EAGAIN /* We translate the system's EWOULDBLOCK error into EAGAIN. The GNU C library always defines EWOULDBLOCK==EAGAIN. diff --git a/sysdeps/unix/sparc/start.c b/sysdeps/unix/sparc/start.c index a664189bb4..6efe69662b 100644 --- a/sysdeps/unix/sparc/start.c +++ b/sysdeps/unix/sparc/start.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991,92,93,94,95,96,97,2004 Free Software Foundation, Inc. +/* Copyright (C) 1991-1997,2004,2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -52,9 +52,7 @@ /* The first piece of initialized data. */ int __data_start = 0; -#ifdef HAVE_WEAK_SYMBOLS weak_alias (__data_start, data_start) -#endif extern void __libc_init (int argc, char **argv, char **envp) __THROW; extern int main (int argc, char **argv, char **envp) __THROW; diff --git a/sysdeps/unix/sparc/sysdep.S b/sysdeps/unix/sparc/sysdep.S index 7e2e4d4e81..5a29275ccc 100644 --- a/sysdeps/unix/sparc/sysdep.S +++ b/sysdeps/unix/sparc/sysdep.S @@ -1,4 +1,4 @@ -/* Copyright (C) 1994, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1994, 1997, 2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -25,12 +25,7 @@ .text .align 2 -#undef syscall_error -#ifdef NO_UNDERSCORES __syscall_error: -#else -syscall_error: -#endif #if defined (EWOULDBLOCK_sys) && EWOULDBLOCK_sys != EAGAIN /* We translate the system's EWOULDBLOCK error into EAGAIN. The GNU C library always defines EWOULDBLOCK==EAGAIN. diff --git a/sysdeps/unix/sparc/sysdep.h b/sysdeps/unix/sparc/sysdep.h index fbfb74c8d9..f83b1c78f8 100644 --- a/sysdeps/unix/sparc/sysdep.h +++ b/sysdeps/unix/sparc/sysdep.h @@ -22,12 +22,10 @@ #ifdef __ASSEMBLER__ -#ifdef NO_UNDERSCORES /* Since C identifiers are not normally prefixed with an underscore on this system, the asm identifier `syscall_error' intrudes on the C name space. Make sure we use an innocuous name. */ #define syscall_error C_SYMBOL_NAME(__syscall_error) -#endif #ifdef PIC #define SETUP_PIC_REG(reg, tmp) \ diff --git a/sysdeps/unix/start.c b/sysdeps/unix/start.c index 2474fc2e7f..e5c5e91335 100644 --- a/sysdeps/unix/start.c +++ b/sysdeps/unix/start.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 93, 1995-1998, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1991, 93, 1995-1998, 2000, 2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -40,9 +40,7 @@ /* The first piece of initialized data. */ int __data_start = 0; -#ifdef HAVE_WEAK_SYMBOLS weak_alias (__data_start, data_start) -#endif #ifdef DUMMIES #define ARG_DUMMIES DUMMIES, @@ -69,13 +67,6 @@ _start () start1 (); } -#ifndef NO_UNDERSCORES -/* Make an alias called `start' (no leading underscore, so it can't - conflict with C symbols) for `_start'. This is the name vendor crt0.o's - tend to use, and thus the name most linkers expect. */ -asm (".set start, __start"); -#endif - #endif /* ARGSUSED */ diff --git a/sysdeps/unix/sysv/i386/sysdep.h b/sysdeps/unix/sysv/i386/sysdep.h deleted file mode 100644 index fedd5ea825..0000000000 --- a/sysdeps/unix/sysv/i386/sysdep.h +++ /dev/null @@ -1,4 +0,0 @@ -/* System V does not precede the asm names of C symbols with a `_'. */ -#define NO_UNDERSCORES - -#include diff --git a/sysdeps/unix/x86_64/sysdep.S b/sysdeps/unix/x86_64/sysdep.S index 908da3c3d5..5239ab1d40 100644 --- a/sysdeps/unix/x86_64/sysdep.S +++ b/sysdeps/unix/x86_64/sysdep.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2001, 2002, 2004, 2005, 2011 Free Software Foundation, Inc. +/* Copyright (C) 2001,2002,2004,2005,2011,2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -30,12 +30,7 @@ .globl C_SYMBOL_NAME(errno) .globl syscall_error -#undef syscall_error -#ifdef NO_UNDERSCORES __syscall_error: -#else -syscall_error: -#endif #if defined (EWOULDBLOCK_sys) && EWOULDBLOCK_sys != EAGAIN /* We translate the system's EWOULDBLOCK error into EAGAIN. The GNU C library always defines EWOULDBLOCK==EAGAIN. diff --git a/sysdeps/x86_64/sysdep.h b/sysdeps/x86_64/sysdep.h index cb8dced8e6..60c02ed576 100644 --- a/sysdeps/x86_64/sysdep.h +++ b/sysdeps/x86_64/sysdep.h @@ -29,10 +29,6 @@ #define ASM_TYPE_DIRECTIVE(name,typearg) .type name,typearg; #define ASM_SIZE_DIRECTIVE(name) .size name,.-name; -/* In ELF C symbols are asm symbols. */ -#undef NO_UNDERSCORES -#define NO_UNDERSCORES - /* Define an entry point visible from C. */ #define ENTRY(name) \ @@ -67,13 +63,11 @@ #define CALL_MCOUNT /* Do nothing. */ #endif -#ifdef NO_UNDERSCORES /* Since C identifiers are not normally prefixed with an underscore on this system, the asm identifier `syscall_error' intrudes on the C name space. Make sure we use an innocuous name. */ #define syscall_error __syscall_error #define mcount _mcount -#endif #define PSEUDO(name, syscall_name, args) \ lose: \