diff options
Diffstat (limited to 'configure.in')
-rw-r--r-- | configure.in | 762 |
1 files changed, 339 insertions, 423 deletions
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 <<EOF +AC_CACHE_CHECK(for .previous assembler directive, + libc_cv_asm_previous_directive, [dnl +cat > conftest.s <<EOF .section foo_section .previous EOF +if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&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 <<EOF +.pushsection foo_section +.popsection +EOF if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&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 <<EOF -.pushsection foo_section -.popsection -EOF - if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&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 <<EOF +fi +AC_CACHE_CHECK(for .protected and .hidden assembler directive, + libc_cv_asm_protected_directive, [dnl +cat > conftest.s <<EOF .protected foo foo: .hidden bar bar: EOF - 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 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 <<EOF int foo __attribute__ ((visibility ("hidden"))) = 1; @@ -1338,13 +1321,13 @@ EOF fi rm -f conftest.{c,s} ]) - if test $libc_cv_visibility_attribute != yes; then - AC_MSG_ERROR(compiler support for visibility attribute is required) - fi + if test $libc_cv_visibility_attribute != yes; then + AC_MSG_ERROR(compiler support for visibility attribute is required) fi +fi - if test $libc_cv_visibility_attribute = yes; then - AC_CACHE_CHECK(for broken __attribute__((visibility())), +if test $libc_cv_visibility_attribute = yes; then + AC_CACHE_CHECK(for broken __attribute__((visibility())), libc_cv_broken_visibility_attribute, [cat > conftest.c <<EOF int foo (int x); @@ -1361,36 +1344,36 @@ changequote([,])dnl fi rm -f conftest.c conftest.s ]) - if test $libc_cv_broken_visibility_attribute = yes; then - AC_MSG_ERROR(working compiler support for visibility attribute is required) - fi + if test $libc_cv_broken_visibility_attribute = yes; then + AC_MSG_ERROR(working compiler support for visibility attribute is required) fi +fi - AC_CACHE_CHECK(for broken __attribute__((alias())), - libc_cv_broken_alias_attribute, - [cat > conftest.c <<EOF - extern int foo (int x) __asm ("xyzzy"); - int bar (int x) { return x; } - extern __typeof (bar) foo __attribute ((weak, alias ("bar"))); - extern int dfoo; - extern __typeof (dfoo) dfoo __asm ("abccb"); - int dfoo = 1; +AC_CACHE_CHECK(for broken __attribute__((alias())), + libc_cv_broken_alias_attribute, + [cat > conftest.c <<EOF + extern int foo (int x) __asm ("xyzzy"); + int bar (int x) { return x; } + extern __typeof (bar) foo __attribute ((weak, alias ("bar"))); + extern int dfoo; + extern __typeof (dfoo) dfoo __asm ("abccb"); + int dfoo = 1; EOF - 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_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 <<EOF +AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support, + libc_cv_initfini_array, [dnl +cat > conftest.c <<EOF int _start (void) { return 0; } int __start (void) { return 0; } int foo (void) { return 1; } int (*fp) (void) __attribute__ ((section (".init_array"))) = foo; EOF - 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 +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 <<EOF +AC_CACHE_CHECK(for libunwind-support in compiler, + libc_cv_cc_with_libunwind, [ + cat > conftest.c <<EOF int main (void) { return 0; } EOF - 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) + 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 <<EOF +AC_CACHE_CHECK(for -z nodelete option, + libc_cv_z_nodelete, [dnl +cat > conftest.c <<EOF int _start (void) { return 42; } EOF - 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*]) +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 <<EOF +AC_CACHE_CHECK(for -z nodlopen option, + libc_cv_z_nodlopen, [dnl +cat > conftest.c <<EOF int _start (void) { return 42; } EOF - if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS +if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -fPIC -shared -o conftest.so conftest.c -nostartfiles -nostdlib -Wl,--enable-new-dtags,-z,nodlopen 1>&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 <<EOF +AC_CACHE_CHECK(for -z initfirst option, + libc_cv_z_initfirst, [dnl +cat > conftest.c <<EOF int _start (void) { return 42; } EOF - if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS +if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -fPIC -shared -o conftest.so conftest.c -nostartfiles -nostdlib -Wl,--enable-new-dtags,-z,initfirst 1>&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 <<EOF +AC_CACHE_CHECK(for -Bgroup option, + libc_cv_Bgroup, [dnl +cat > conftest.c <<EOF int _start (void) { return 42; } EOF - 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) +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 <<EOF +AC_CACHE_CHECK(for libgcc_s suffix, + libc_cv_libgcc_s_suffix, [dnl +cat > conftest.c <<EOF int main (void) { return 0; } EOF changequote(,)dnl - libc_cv_libgcc_s_suffix=`${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \ +libc_cv_libgcc_s_suffix=`${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \ -fPIC -shared -shared-libgcc -o conftest.so \ conftest.c -v 2>&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 <<EOF +AC_CACHE_CHECK(for --as-needed option, + libc_cv_as_needed, [dnl +cat > conftest.c <<EOF int main (void) { return 0; } EOF - if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS +if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -fPIC -shared -o conftest.so conftest.c -lgcc_s$libc_cv_libgcc_s_suffix -Wl,--as-needed -nostdlib 1>&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 <<EOF +ASFLAGS_config= +AC_CACHE_CHECK(whether --noexecstack is desirable for .S files, + libc_cv_as_noexecstack, [dnl +cat > conftest.c <<EOF void foo (void) { } EOF - 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) +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 <<EOF +AC_CACHE_CHECK(for -z combreloc, + libc_cv_z_combreloc, [dnl +cat > conftest.c <<EOF extern int bar (int); extern int mumble; int foo (void) { return bar (mumble); } EOF - if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS +if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -fPIC -shared -o conftest.so conftest.c -nostdlib -nostartfiles -Wl,-z,combreloc 1>&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 <<EOF +AC_CACHE_CHECK(for -z execstack, + libc_cv_z_execstack, [dnl +cat > conftest.c <<EOF int _start (void) { return 42; } EOF - 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) +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 <<EOF +AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl +cat > conftest.c <<EOF int foo; main () { return 0;} EOF - 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*]) +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 <<EOF +AC_CACHE_CHECK(for --hash-style option, + libc_cv_hashstyle, [dnl +cat > conftest.c <<EOF int _start (void) { return 42; } 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 +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 <<EOF - static const int foo - __attribute__ ((section ("bar"))) = 1; +AC_CACHE_CHECK(whether cc puts quotes around section names, + libc_cv_have_section_quotes, + [cat > conftest.c <<EOF + static const int foo + __attribute__ ((section ("bar"))) = 1; EOF - 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=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 <<EOF -dnl This sometimes fails to find confdefs.h, for some reason. -dnl [#]line $LINENO "[$]0" -[#]line $LINENO "configure" -#include "confdefs.h" -void underscore_test(void) { -return; } -EOF -if AC_TRY_EVAL(ac_compile); then - if grep _underscore_test conftest* >/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 |