From 8c6d01f0b11e699d7d9868a5bf1eb6d9054c91a3 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Tue, 13 May 2014 10:04:05 -0700 Subject: Consolidate NPTL configury for ARM/Linux. --- ChangeLog | 20 ++++++++++++++++++++ sysdeps/unix/sysv/linux/arm/Makefile | 16 ++++++++++++---- sysdeps/unix/sysv/linux/arm/Versions | 6 ++++++ sysdeps/unix/sysv/linux/arm/configure | 3 +++ sysdeps/unix/sysv/linux/arm/configure.ac | 6 ++++++ .../unix/sysv/linux/arm/nptl-aeabi_unwind_cpp_pr1.c | 1 + sysdeps/unix/sysv/linux/arm/nptl/Makefile | 17 ----------------- sysdeps/unix/sysv/linux/arm/nptl/Versions | 8 -------- sysdeps/unix/sysv/linux/arm/nptl/configure | 4 ---- sysdeps/unix/sysv/linux/arm/nptl/configure.ac | 8 -------- .../sysv/linux/arm/nptl/nptl-aeabi_unwind_cpp_pr1.c | 1 - .../sysv/linux/arm/nptl/rt-aeabi_unwind_cpp_pr1.c | 1 - .../unix/sysv/linux/arm/rt-aeabi_unwind_cpp_pr1.c | 1 + 13 files changed, 49 insertions(+), 43 deletions(-) create mode 100644 sysdeps/unix/sysv/linux/arm/nptl-aeabi_unwind_cpp_pr1.c delete mode 100644 sysdeps/unix/sysv/linux/arm/nptl/Makefile delete mode 100644 sysdeps/unix/sysv/linux/arm/nptl/Versions delete mode 100644 sysdeps/unix/sysv/linux/arm/nptl/configure delete mode 100644 sysdeps/unix/sysv/linux/arm/nptl/configure.ac delete mode 100644 sysdeps/unix/sysv/linux/arm/nptl/nptl-aeabi_unwind_cpp_pr1.c delete mode 100644 sysdeps/unix/sysv/linux/arm/nptl/rt-aeabi_unwind_cpp_pr1.c create mode 100644 sysdeps/unix/sysv/linux/arm/rt-aeabi_unwind_cpp_pr1.c diff --git a/ChangeLog b/ChangeLog index 7e4715c3cd..685632b01c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,25 @@ 2014-05-13 Roland McGrath + * sysdeps/unix/sysv/linux/arm/Versions (libc: GLIBC_PRIVATE): New set. + * sysdeps/unix/sysv/linux/arm/nptl/Versions: File removed. + + * sysdeps/unix/sysv/linux/arm/Makefile + [$(subdir) = rt] (librt-sysdep_routines, librt-shared-only-routines): + Add rt-aeabi_unwind_cpp_pr1. + [$(subdir) = nptl] (librt-sysdep_routines, librt-shared-only-routines): + Add nptl-aeabi_unwind_cpp_pr1. + [$(subdir) = nptl] (tests): Filter out tst-cleanupx4. + * sysdeps/unix/sysv/linux/arm/nptl/Makefile: File removed. + * sysdeps/unix/sysv/linux/arm/nptl/rt-aeabi_unwind_cpp_pr1.c: Move ... + * sysdeps/unix/sysv/linux/arm/rt-aeabi_unwind_cpp_pr1.c: ... here. + * sysdeps/unix/sysv/linux/arm/nptl/nptl-aeabi_unwind_cpp_pr1.c: Move ... + * sysdeps/unix/sysv/linux/arm/nptl-aeabi_unwind_cpp_pr1.c: ... here. + + * sysdeps/unix/sysv/linux/arm/configure.ac: Force -fexceptions here. + * sysdeps/unix/sysv/linux/arm/configure: Regenerated. + * sysdeps/unix/sysv/linux/arm/nptl/configure.ac: File removed. + * sysdeps/unix/sysv/linux/arm/nptl/configure: File removed. + * sysdeps/unix/sysv/linux/arm/clone.S: Include . Deconditionalize the code that was previously under [RESET_PID]. * sysdeps/unix/sysv/linux/arm/nptl/clone.S: File removed. diff --git a/sysdeps/unix/sysv/linux/arm/Makefile b/sysdeps/unix/sysv/linux/arm/Makefile index aa7526a258..38275cda81 100644 --- a/sysdeps/unix/sysv/linux/arm/Makefile +++ b/sysdeps/unix/sysv/linux/arm/Makefile @@ -37,13 +37,21 @@ libcrypt-sysdep_routines += libc-do-syscall endif ifeq ($(subdir),rt) -librt-sysdep_routines += libc-do-syscall -librt-shared-only-routines += libc-do-syscall +librt-sysdep_routines += libc-do-syscall rt-aeabi_unwind_cpp_pr1 +librt-shared-only-routines += libc-do-syscall rt-aeabi_unwind_cpp_pr1 endif ifeq ($(subdir),nptl) -libpthread-sysdep_routines += libc-do-syscall -libpthread-shared-only-routines += libc-do-syscall +libpthread-sysdep_routines += libc-do-syscall nptl-aeabi_unwind_cpp_pr1 +libpthread-shared-only-routines += libc-do-syscall nptl-aeabi_unwind_cpp_pr1 + +# This test relies on compiling part of the binary with EH information, +# part without, and unwinding through. The .ARM.exidx tables have +# start addresses for EH regions, but no end addresses. Every +# region an exception needs to propogate through must have unwind +# information, or a previous function's unwind table may be used +# by mistake. +tests := $(filter-out tst-cleanupx4,$(tests)) endif ifeq ($(subdir),resolv) diff --git a/sysdeps/unix/sysv/linux/arm/Versions b/sysdeps/unix/sysv/linux/arm/Versions index 1d9e964640..be3f197a32 100644 --- a/sysdeps/unix/sysv/linux/arm/Versions +++ b/sysdeps/unix/sysv/linux/arm/Versions @@ -37,4 +37,10 @@ libc { GLIBC_2.11 { fallocate64; } + GLIBC_PRIVATE { + # A copy of sigaction lives in libpthread, and needs these. + __default_sa_restorer; __default_rt_sa_restorer; + __default_sa_restorer_v1; __default_rt_sa_restorer_v1; + __default_sa_restorer_v2; __default_rt_sa_restorer_v2; + } } diff --git a/sysdeps/unix/sysv/linux/arm/configure b/sysdeps/unix/sysv/linux/arm/configure index 71eb195942..ef97ff6b3f 100644 --- a/sysdeps/unix/sysv/linux/arm/configure +++ b/sysdeps/unix/sysv/linux/arm/configure @@ -4,3 +4,6 @@ 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 index 8e4e20d2b8..8d4c48b54b 100644 --- a/sysdeps/unix/sysv/linux/arm/configure.ac +++ b/sysdeps/unix/sysv/linux/arm/configure.ac @@ -4,3 +4,9 @@ GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. 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/unix/sysv/linux/arm/nptl-aeabi_unwind_cpp_pr1.c b/sysdeps/unix/sysv/linux/arm/nptl-aeabi_unwind_cpp_pr1.c new file mode 100644 index 0000000000..7b83522437 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arm/nptl-aeabi_unwind_cpp_pr1.c @@ -0,0 +1 @@ +#include diff --git a/sysdeps/unix/sysv/linux/arm/nptl/Makefile b/sysdeps/unix/sysv/linux/arm/nptl/Makefile deleted file mode 100644 index ef8076cf3f..0000000000 --- a/sysdeps/unix/sysv/linux/arm/nptl/Makefile +++ /dev/null @@ -1,17 +0,0 @@ -ifeq ($(subdir),rt) -librt-sysdep_routines += rt-aeabi_unwind_cpp_pr1 -librt-shared-only-routines += rt-aeabi_unwind_cpp_pr1 -endif - -ifeq ($(subdir),nptl) -libpthread-sysdep_routines += nptl-aeabi_unwind_cpp_pr1 -libpthread-shared-only-routines += nptl-aeabi_unwind_cpp_pr1 - -# This test relies on compiling part of the binary with EH information, -# part without, and unwinding through. The .ARM.exidx tables have -# start addresses for EH regions, but no end addresses. Every -# region an exception needs to propogate through must have unwind -# information, or a previous function's unwind table may be used -# by mistake. -tests := $(filter-out tst-cleanupx4,$(tests)) -endif diff --git a/sysdeps/unix/sysv/linux/arm/nptl/Versions b/sysdeps/unix/sysv/linux/arm/nptl/Versions deleted file mode 100644 index 435c9212c4..0000000000 --- a/sysdeps/unix/sysv/linux/arm/nptl/Versions +++ /dev/null @@ -1,8 +0,0 @@ -libc { - GLIBC_PRIVATE { - # A copy of sigaction lives in NPTL, and needs these. - __default_sa_restorer; __default_rt_sa_restorer; - __default_sa_restorer_v1; __default_rt_sa_restorer_v1; - __default_sa_restorer_v2; __default_rt_sa_restorer_v2; - } -} diff --git a/sysdeps/unix/sysv/linux/arm/nptl/configure b/sysdeps/unix/sysv/linux/arm/nptl/configure deleted file mode 100644 index a8c34fa3e4..0000000000 --- a/sysdeps/unix/sysv/linux/arm/nptl/configure +++ /dev/null @@ -1,4 +0,0 @@ -# This file is generated from configure.ac by Autoconf. DO NOT EDIT! - -libc_cv_gcc_exceptions=yes -exceptions=-fexceptions diff --git a/sysdeps/unix/sysv/linux/arm/nptl/configure.ac b/sysdeps/unix/sysv/linux/arm/nptl/configure.ac deleted file mode 100644 index 22f6f4b8f2..0000000000 --- a/sysdeps/unix/sysv/linux/arm/nptl/configure.ac +++ /dev/null @@ -1,8 +0,0 @@ -dnl configure fragment for NPTL and ARM/Linux EABI. -GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. - -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/unix/sysv/linux/arm/nptl/nptl-aeabi_unwind_cpp_pr1.c b/sysdeps/unix/sysv/linux/arm/nptl/nptl-aeabi_unwind_cpp_pr1.c deleted file mode 100644 index 7b83522437..0000000000 --- a/sysdeps/unix/sysv/linux/arm/nptl/nptl-aeabi_unwind_cpp_pr1.c +++ /dev/null @@ -1 +0,0 @@ -#include diff --git a/sysdeps/unix/sysv/linux/arm/nptl/rt-aeabi_unwind_cpp_pr1.c b/sysdeps/unix/sysv/linux/arm/nptl/rt-aeabi_unwind_cpp_pr1.c deleted file mode 100644 index 7b83522437..0000000000 --- a/sysdeps/unix/sysv/linux/arm/nptl/rt-aeabi_unwind_cpp_pr1.c +++ /dev/null @@ -1 +0,0 @@ -#include diff --git a/sysdeps/unix/sysv/linux/arm/rt-aeabi_unwind_cpp_pr1.c b/sysdeps/unix/sysv/linux/arm/rt-aeabi_unwind_cpp_pr1.c new file mode 100644 index 0000000000..7b83522437 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arm/rt-aeabi_unwind_cpp_pr1.c @@ -0,0 +1 @@ +#include -- cgit 1.4.1