]> sourceware.org Git - glibc.git/commitdiff
Enable multiarch whenever possible.
authorH.J. Lu <hongjiu.lu@intel.com>
Thu, 24 Dec 2009 04:22:46 +0000 (20:22 -0800)
committerUlrich Drepper <drepper@redhat.com>
Thu, 24 Dec 2009 04:22:46 +0000 (20:22 -0800)
ChangeLog
configure
configure.in

index 4be0d0394014782c15a9bd688bb06af32e8b3d6f..17dca3262f1cb26b48b34d8b5a90009abd80e628 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2009-12-17  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * 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  <drepper@redhat.com>
 
        * include/stdlib.h: Exclude some includes and prototypes if _ISOMAC
index ce76653821c8b7b173c7db2eb084a5e68ae770d3..49ac30db46fb5da391fe7125ab173bce097394de 100755 (executable)
--- 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 <<EOF
+.type foo,%gnu_indirect_function
+EOF
+if ${CC-cc} -c $ASFLAGS conftest.s 1>&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;}
index 182c683e503946c90dc6ad9f0eeec32c3ad0cf03..8e506026b8d8399af976acd9d61c37808b0a3e45 100644 (file)
@@ -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 <<EOF
+.type foo,%gnu_indirect_function
+EOF
+if ${CC-cc} -c $ASFLAGS conftest.s 1>&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
This page took 0.063326 seconds and 5 git commands to generate.