43 lines
1.6 KiB
Diff
43 lines
1.6 KiB
Diff
diff --git a/sysdeps/arm/configure.in b/sysdeps/arm/configure.in
|
|
index 706add2..f00b798 100644
|
|
--- a/sysdeps/arm/configure.in
|
|
+++ b/sysdeps/arm/configure.in
|
|
@@ -49,3 +49,20 @@ EOF
|
|
if test $libc_cv_asm_cfi_directive_sections != yes; then
|
|
AC_MSG_ERROR([need .cfi_sections in this configuration])
|
|
fi
|
|
+
|
|
+# We check to see if the compiler and flags are
|
|
+# selecting the hard-float ABI and if they are then
|
|
+# we set libc_cv_arm_pcs_vfp to yes which causes
|
|
+# HAVE_ARM_PCS_VFP to be defined in config.h and
|
|
+# in include/libc-symbols.h and thus available to
|
|
+# shlib-versions to select the appropriate name for
|
|
+# the dynamic linker via %ifdef.
|
|
+AC_CACHE_CHECK([whether the compiler is using the ARM hard-float ABI],
|
|
+ [libc_cv_arm_pcs_vfp],
|
|
+ [AC_EGREP_CPP(yes,[#ifdef __ARM_PCS_VFP
|
|
+ yes
|
|
+ #endif
|
|
+ ], libc_cv_arm_pcs_vfp=yes, libc_cv_arm_pcs_vfp=no)])
|
|
+if test $libc_cv_arm_pcs_vfp = yes; then
|
|
+ AC_DEFINE(HAVE_ARM_PCS_VFP)
|
|
+fi
|
|
|
|
diff -rup c/sysdeps/arm/shlib-versions d/sysdeps/arm/shlib-versions
|
|
--- c/sysdeps/arm/shlib-versions 2012-01-08 22:47:04.000000000 -0700
|
|
+++ d/sysdeps/arm/shlib-versions 2012-05-07 11:57:07.739567660 -0600
|
|
@@ -1,4 +1,10 @@
|
|
arm.*-.*-linux-gnueabi.* DEFAULT GLIBC_2.4
|
|
|
|
-arm.*-.*-linux-gnueabi.* ld=ld-linux.so.3
|
|
+%ifdef HAVE_ARM_PCS_VFP
|
|
+# The EABI-derived hard-float ABI uses a new dynamic linker.
|
|
+arm.*-.*-linux-gnueabi.* ld=ld-linux-armhf.so.3
|
|
+%else
|
|
+# The EABI-derived soft-float ABI continues to use ld-linux.so.3.
|
|
+arm.*-.*-linux-gnueabi.* ld=ld-linux.so.3
|
|
+%endif
|
|
arm.*-.*-linux.* ld=ld-linux.so.2
|
|
|