diff --git a/ChangeLog b/ChangeLog index 4be0d03940..17dca3262f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-12-17 H.J. Lu + + * configure.in: Enable multi-arch by default if the assembler + supports gnu_indirect_function symbol type and the architecture + supports it. + 2009-12-23 Ulrich Drepper * include/stdlib.h: Exclude some includes and prototypes if _ISOMAC diff --git a/configure b/configure index ce76653821..49ac30db46 100755 --- a/configure +++ b/configure @@ -724,12 +724,12 @@ INSTALL_PROGRAM sysdeps_add_ons sysnames submachine +multi_arch base_machine add_on_subdirs add_ons libc_cv_nss_crypt experimental_malloc -multi_arch all_warnings force_install bindnow @@ -3801,18 +3801,13 @@ fi if test "${enable_multi_arch+set}" = set; then enableval=$enable_multi_arch; multi_arch=$enableval else - multi_arch=no + multi_arch=default fi -if test x"$multi_arch" = xyes; then - cat >>confdefs.h <<\_ACEOF -#define USE_MULTIARCH 1 -_ACEOF - +if test x"$multi_arch" != xno; then multi_arch_d=/multiarch fi - # Check whether --enable-experimental-malloc was given. if test "${enable_experimental_malloc+set}" = set; then enableval=$enable_experimental_malloc; experimental_malloc=$enableval @@ -4359,6 +4354,44 @@ for b in $base ''; do done done +# If the assembler supports gnu_indirect_function symbol type and the +# architecture supports multi-arch, we enable multi-arch by default. +if test "$multi_arch" = default; then +{ $as_echo "$as_me:$LINENO: checking for assembler gnu_indirect_function symbol type support" >&5 +$as_echo_n "checking for assembler gnu_indirect_function symbol type support... " >&6; } +if test "${libc_cv_asm_gnu_indirect_function+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat > conftest.s <&5 2>&5; +then + libc_cv_asm_gnu_indirect_function=yes +else + libc_cv_asm_gnu_indirect_function=no +fi +rm -f conftest* +fi +{ $as_echo "$as_me:$LINENO: result: $libc_cv_asm_gnu_indirect_function" >&5 +$as_echo "$libc_cv_asm_gnu_indirect_function" >&6; } + multi_arch=no + if test "$libc_cv_asm_gnu_indirect_function" = yes; then + case $sysnames_add_ons$sysnames in + *"$multi_arch_d"*) + multi_arch=yes + ;; + esac + fi +fi +if test x"$multi_arch" = xyes; then + cat >>confdefs.h <<\_ACEOF +#define USE_MULTIARCH 1 +_ACEOF + +fi + + if test -z "$os_used" && test "$os" != none; then { { $as_echo "$as_me:$LINENO: error: Operating system $os is not supported." >&5 $as_echo "$as_me: error: Operating system $os is not supported." >&2;} diff --git a/configure.in b/configure.in index 182c683e50..8e506026b8 100644 --- a/configure.in +++ b/configure.in @@ -272,12 +272,10 @@ AC_ARG_ENABLE([multi-arch], AC_HELP_STRING([--enable-multi-arch], [enable single DSO with optimizations for multiple architectures]), [multi_arch=$enableval], - [multi_arch=no]) -if test x"$multi_arch" = xyes; then - AC_DEFINE(USE_MULTIARCH) + [multi_arch=default]) +if test x"$multi_arch" != xno; then multi_arch_d=/multiarch fi -AC_SUBST(multi_arch) AC_ARG_ENABLE([experimental-malloc], AC_HELP_STRING([--enable-experimental-malloc], @@ -722,6 +720,35 @@ for b in $base ''; do done done +# If the assembler supports gnu_indirect_function symbol type and the +# architecture supports multi-arch, we enable multi-arch by default. +if test "$multi_arch" = default; then +AC_CACHE_CHECK([for assembler gnu_indirect_function symbol type support], + libc_cv_asm_gnu_indirect_function, [dnl +cat > conftest.s <&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; +then + libc_cv_asm_gnu_indirect_function=yes +else + libc_cv_asm_gnu_indirect_function=no +fi +rm -f conftest*]) + multi_arch=no + if test "$libc_cv_asm_gnu_indirect_function" = yes; then + case $sysnames_add_ons$sysnames in + *"$multi_arch_d"*) + multi_arch=yes + ;; + esac + fi +fi +if test x"$multi_arch" = xyes; then + AC_DEFINE(USE_MULTIARCH) +fi +AC_SUBST(multi_arch) + if test -z "$os_used" && test "$os" != none; then AC_MSG_ERROR(Operating system $os is not supported.) fi