From 3cb4de474155c315003746f3de9c408b824abc5e Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Thu, 26 Jun 2014 15:08:29 -0700 Subject: [PATCH] ARM: Move more aeabi routine magic out of Linux-specific directories --- ChangeLog | 31 +++++++++++++++++++ sysdeps/arm/Makefile | 18 +++++++++-- .../sysv/linux => }/arm/libc-aeabi_read_tp.S | 0 .../arm/nptl-aeabi_unwind_cpp_pr1.c | 0 sysdeps/arm/nptl/Makefile | 13 ++++++++ .../linux => }/arm/rt-aeabi_unwind_cpp_pr1.c | 0 sysdeps/unix/sysv/linux/arm/Makefile | 27 +++------------- 7 files changed, 63 insertions(+), 26 deletions(-) rename sysdeps/{unix/sysv/linux => }/arm/libc-aeabi_read_tp.S (100%) rename sysdeps/{unix/sysv/linux => }/arm/nptl-aeabi_unwind_cpp_pr1.c (100%) rename sysdeps/{unix/sysv/linux => }/arm/rt-aeabi_unwind_cpp_pr1.c (100%) diff --git a/ChangeLog b/ChangeLog index 67b89571d3..85e4c25a85 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,34 @@ +2014-06-26 Roland McGrath + + * sysdeps/unix/sysv/linux/arm/libc-aeabi_read_tp.S: Moved ... + * sysdeps/arm/libc-aeabi_read_tp.S: ... here. + * sysdeps/arm/Makefile [$(subdir) = csu] + (aeabi_routines): Add aeabi_read_tp and libc-aeabi_read_tp here. + (static-only-routines): Add aeabi_read_tp here. + (shared-only-routines): Add libc-aeabi_read_tp here. + (CFLAGS-libc-start.c): Add -fexceptions here. + * sysdeps/unix/sysv/linux/arm/Makefile [$(subdir) = csu] + (sysdep_routines, static-only-routines, shared-only-routines): + Don't add to these here. + (CFLAGS-libc-start.c): Likewise. + + * sysdeps/unix/sysv/linux/arm/nptl-aeabi_unwind_cpp_pr1.c: Moved ... + * sysdeps/arm/nptl-aeabi_unwind_cpp_pr1.c: ... here. + * sysdeps/unix/sysv/linux/arm/rt-aeabi_unwind_cpp_pr1.c: Moved ... + * sysdeps/arm/rt-aeabi_unwind_cpp_pr1.c: ... here. + * sysdeps/arm/Makefile [$(subdir) = rt] + (librt-sysdep_routines, librt-shared-only-routines): + Append rt-aeabi_unwind_cpp_pr1 here. + * sysdeps/unix/sysv/linux/arm/Makefile [$(subdir) = rt] + (librt-sysdep_routines, librt-shared-only-routines): Don't do it here. + * sysdeps/arm/nptl/Makefile [$(subdir) = nptl] + (libpthread-sysdep_routines, libpthread-shared-only-routines): + Append nptl-aeabi_unwind_cpp_pr1 here. + (tests): Filter out tst-cleanupx4 here. + * sysdeps/unix/sysv/linux/arm/Makefile [$(subdir) = nptl] + (libpthread-sysdep_routines, libpthread-shared-only-routines, tests): + Don't do those here. + 2014-06-26 Joseph Myers * scripts/list-sources.sh: Do not handle ports specially. diff --git a/sysdeps/arm/Makefile b/sysdeps/arm/Makefile index a1380487b1..db60a17671 100644 --- a/sysdeps/arm/Makefile +++ b/sysdeps/arm/Makefile @@ -38,11 +38,18 @@ ifeq ($(subdir),csu) gen-as-const-headers += rtld-global-offsets.sym tlsdesc.sym aeabi_constants = aeabi_lcsts aeabi_sighandlers aeabi_math aeabi_routines = aeabi_assert aeabi_localeconv aeabi_errno_addr \ - aeabi_mb_cur_max aeabi_atexit aeabi_memclr aeabi_memcpy \ - aeabi_memmove aeabi_memset + aeabi_mb_cur_max aeabi_atexit aeabi_memclr aeabi_memcpy \ + aeabi_memmove aeabi_memset \ + aeabi_read_tp libc-aeabi_read_tp sysdep_routines += $(aeabi_constants) $(aeabi_routines) -static-only-routines += $(aeabi_constants) +static-only-routines += $(aeabi_constants) aeabi_read_tp +shared-only-routines += libc-aeabi_read_tp + +# In order for unwinding to fail when it falls out of main, we need a +# cantunwind marker. There's one in start.S. To make sure we reach it, add +# unwind tables for __libc_start_main. +CFLAGS-libc-start.c += -fexceptions endif ifeq ($(subdir),gmon) @@ -52,3 +59,8 @@ endif ifeq ($(subdir),debug) CFLAGS-backtrace.c += -funwind-tables endif + +ifeq ($(subdir),rt) +librt-sysdep_routines += rt-aeabi_unwind_cpp_pr1 +librt-shared-only-routines += rt-aeabi_unwind_cpp_pr1 +endif diff --git a/sysdeps/unix/sysv/linux/arm/libc-aeabi_read_tp.S b/sysdeps/arm/libc-aeabi_read_tp.S similarity index 100% rename from sysdeps/unix/sysv/linux/arm/libc-aeabi_read_tp.S rename to sysdeps/arm/libc-aeabi_read_tp.S diff --git a/sysdeps/unix/sysv/linux/arm/nptl-aeabi_unwind_cpp_pr1.c b/sysdeps/arm/nptl-aeabi_unwind_cpp_pr1.c similarity index 100% rename from sysdeps/unix/sysv/linux/arm/nptl-aeabi_unwind_cpp_pr1.c rename to sysdeps/arm/nptl-aeabi_unwind_cpp_pr1.c diff --git a/sysdeps/arm/nptl/Makefile b/sysdeps/arm/nptl/Makefile index 143850e6c8..2c31e76ed2 100644 --- a/sysdeps/arm/nptl/Makefile +++ b/sysdeps/arm/nptl/Makefile @@ -18,3 +18,16 @@ ifeq ($(subdir),csu) gen-as-const-headers += tcb-offsets.sym 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/rt-aeabi_unwind_cpp_pr1.c b/sysdeps/arm/rt-aeabi_unwind_cpp_pr1.c similarity index 100% rename from sysdeps/unix/sysv/linux/arm/rt-aeabi_unwind_cpp_pr1.c rename to sysdeps/arm/rt-aeabi_unwind_cpp_pr1.c diff --git a/sysdeps/unix/sysv/linux/arm/Makefile b/sysdeps/unix/sysv/linux/arm/Makefile index 38275cda81..80c112bc18 100644 --- a/sysdeps/unix/sysv/linux/arm/Makefile +++ b/sysdeps/unix/sysv/linux/arm/Makefile @@ -1,14 +1,3 @@ -ifeq ($(subdir),csu) -# In order for unwinding to fail when it falls out of main, we need a -# cantunwind marker. There's one in start.S. To make sure we reach it, add -# unwind tables for __libc_start_main. -CFLAGS-libc-start.c += -fexceptions - -sysdep_routines += aeabi_read_tp libc-aeabi_read_tp -static-only-routines += aeabi_read_tp -shared-only-routines += libc-aeabi_read_tp -endif - ifeq ($(subdir),elf) sysdep-rtld-routines += aeabi_read_tp libc-do-syscall endif @@ -37,21 +26,13 @@ libcrypt-sysdep_routines += libc-do-syscall endif ifeq ($(subdir),rt) -librt-sysdep_routines += libc-do-syscall rt-aeabi_unwind_cpp_pr1 -librt-shared-only-routines += libc-do-syscall rt-aeabi_unwind_cpp_pr1 +librt-sysdep_routines += libc-do-syscall +librt-shared-only-routines += libc-do-syscall endif ifeq ($(subdir),nptl) -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)) +libpthread-sysdep_routines += libc-do-syscall +libpthread-shared-only-routines += libc-do-syscall endif ifeq ($(subdir),resolv)