From 37fccd41923a26bb1c3e083b8bc5e398e77a24d1 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Wed, 16 Jul 2014 15:18:36 -0700 Subject: [PATCH] ARM: Clean up EABI-related configury --- ChangeLog | 12 +++++++++ sysdeps/arm/configure | 8 ++++++ sysdeps/arm/configure.ac | 11 ++++++++ sysdeps/arm/preconfigure | 46 +++++++++++++++++++++----------- sysdeps/arm/preconfigure.ac | 29 +++++++++----------- sysdeps/unix/sysv/linux/arm/configure | 9 ------- sysdeps/unix/sysv/linux/arm/configure.ac | 12 --------- 7 files changed, 74 insertions(+), 53 deletions(-) delete mode 100644 sysdeps/unix/sysv/linux/arm/configure delete mode 100644 sysdeps/unix/sysv/linux/arm/configure.ac diff --git a/ChangeLog b/ChangeLog index 3f78f8243e..afe5f84c99 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2014-07-16 Roland McGrath + + * sysdeps/arm/preconfigure.ac: Apply EABI sanity check to arm*, not + just Linux configurations. Test empirically that the compiler sets + __ARM_EABI__, rather than using the tuple to decide. + * sysdeps/arm/preconfigure: Regenerated. + * sysdeps/unix/sysv/linux/arm/configure: File removed. + * sysdeps/unix/sysv/linux/arm/configure.ac: File removed, + contents appended ... + * sysdeps/arm/configure.ac: ... here. + * sysdeps/arm/configure: Regenerated. + 2014-07-15 Roland McGrath * nptl/pthread_kill.c: New file. diff --git a/sysdeps/arm/configure b/sysdeps/arm/configure index 860f41289d..fe86006569 100644 --- a/sysdeps/arm/configure +++ b/sysdeps/arm/configure @@ -210,3 +210,11 @@ else config_vars="$config_vars have-arm-tls-desc = no" fi + +libc_cv_gcc_unwind_find_fde=no + +# Remove -fno-unwind-tables that was added in sysdeps/arm/preconfigure.ac. +CFLAGS=${CFLAGS% -fno-unwind-tables} + +libc_cv_gcc_exceptions=yes +exceptions=-fexceptions diff --git a/sysdeps/arm/configure.ac b/sysdeps/arm/configure.ac index f1d980436b..86c0c08317 100644 --- a/sysdeps/arm/configure.ac +++ b/sysdeps/arm/configure.ac @@ -39,3 +39,14 @@ if test $libc_cv_arm_tls_desc = yes; then else LIBC_CONFIG_VAR([have-arm-tls-desc], [no]) fi + +libc_cv_gcc_unwind_find_fde=no + +# Remove -fno-unwind-tables that was added in sysdeps/arm/preconfigure.ac. +CFLAGS=${CFLAGS% -fno-unwind-tables} + +dnl The normal configure check for gcc -fexecptions fails because it can't +dnl find __aeabi_unwind_cpp_pr0. Work around this here; our GCC definitely +dnl has -fexceptions. +libc_cv_gcc_exceptions=yes +exceptions=-fexceptions diff --git a/sysdeps/arm/preconfigure b/sysdeps/arm/preconfigure index b3124edae2..59d776d5ca 100644 --- a/sysdeps/arm/preconfigure +++ b/sysdeps/arm/preconfigure @@ -3,22 +3,36 @@ case "$machine" in arm*) - case $config_os in - linux-gnueabi*) - # If the compiler enables unwind tables by default, this causes - # problems with undefined symbols in -nostdlib link tests. To - # avoid this, add -fno-unwind-tables here and remove it in - # sysdeps/unix/sysv/linux/arm/configure.ac after those tests have - # been run. - if test "${CFLAGS+set}" != "set"; then - CFLAGS="-g -O2" - fi - CFLAGS="$CFLAGS -fno-unwind-tables" - ;; - linux*) - as_fn_error $? "Old ABI no longer supported" "$LINENO" 5 - ;; - esac + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if !__ARM_EABI__ +#error +#endif +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + as_fn_error $? "Old ABI no longer supported" "$LINENO" 5 +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + # If the compiler enables unwind tables by default, this causes + # problems with undefined symbols in -nostdlib link tests. To + # avoid this, add -fno-unwind-tables here and remove it in + # sysdeps/arm/configure.ac after those tests have been run. + if test "${CFLAGS+set}" != "set"; then + CFLAGS="-g -O2" + fi + CFLAGS="$CFLAGS -fno-unwind-tables" base_machine=arm # Lets ask the compiler which ARM family we've got diff --git a/sysdeps/arm/preconfigure.ac b/sysdeps/arm/preconfigure.ac index 39c86218aa..d78817b83e 100644 --- a/sysdeps/arm/preconfigure.ac +++ b/sysdeps/arm/preconfigure.ac @@ -3,22 +3,19 @@ GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. case "$machine" in arm*) - case $config_os in - linux-gnueabi*) - # If the compiler enables unwind tables by default, this causes - # problems with undefined symbols in -nostdlib link tests. To - # avoid this, add -fno-unwind-tables here and remove it in - # sysdeps/unix/sysv/linux/arm/configure.ac after those tests have - # been run. - if test "${CFLAGS+set}" != "set"; then - CFLAGS="-g -O2" - fi - CFLAGS="$CFLAGS -fno-unwind-tables" - ;; - linux*) - AC_MSG_ERROR([Old ABI no longer supported]) - ;; - esac + AC_TRY_COMPILE([ +#if !__ARM_EABI__ +#error +#endif], [], [], [AC_MSG_ERROR([Old ABI no longer supported])]) + + # If the compiler enables unwind tables by default, this causes + # problems with undefined symbols in -nostdlib link tests. To + # avoid this, add -fno-unwind-tables here and remove it in + # sysdeps/arm/configure.ac after those tests have been run. + if test "${CFLAGS+set}" != "set"; then + CFLAGS="-g -O2" + fi + CFLAGS="$CFLAGS -fno-unwind-tables" base_machine=arm # Lets ask the compiler which ARM family we've got diff --git a/sysdeps/unix/sysv/linux/arm/configure b/sysdeps/unix/sysv/linux/arm/configure deleted file mode 100644 index ef97ff6b3f..0000000000 --- a/sysdeps/unix/sysv/linux/arm/configure +++ /dev/null @@ -1,9 +0,0 @@ -# This file is generated from configure.ac by Autoconf. DO NOT EDIT! - # Local configure fragment for sysdeps/unix/sysv/linux/arm. - -libc_cv_gcc_unwind_find_fde=no -# Remove -fno-unwind-tables that was added in sysdeps/arm/preconfigure.ac. -CFLAGS=${CFLAGS% -fno-unwind-tables} - -libc_cv_gcc_exceptions=yes -exceptions=-fexceptions diff --git a/sysdeps/unix/sysv/linux/arm/configure.ac b/sysdeps/unix/sysv/linux/arm/configure.ac deleted file mode 100644 index 8d4c48b54b..0000000000 --- a/sysdeps/unix/sysv/linux/arm/configure.ac +++ /dev/null @@ -1,12 +0,0 @@ -GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. -# Local configure fragment for sysdeps/unix/sysv/linux/arm. - -libc_cv_gcc_unwind_find_fde=no -# Remove -fno-unwind-tables that was added in sysdeps/arm/preconfigure.ac. -CFLAGS=${CFLAGS% -fno-unwind-tables} - -dnl The normal configure check for gcc -fexecptions fails because it can't -dnl find __aeabi_unwind_cpp_pr0. Work around this here; our GCC definitely -dnl has -fexceptions. -libc_cv_gcc_exceptions=yes -exceptions=-fexceptions -- 2.11.4.GIT