about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRoland McGrath <roland@hack.frob.com>2014-06-26 15:08:29 -0700
committerRoland McGrath <roland@hack.frob.com>2014-06-26 15:08:29 -0700
commit3cb4de474155c315003746f3de9c408b824abc5e (patch)
tree97ab77bdad076daa6d95670b9cb9ed077670de23
parent354426bb34a7dba084cd1dbef46db0994c48988f (diff)
downloadglibc-3cb4de474155c315003746f3de9c408b824abc5e.tar.gz
glibc-3cb4de474155c315003746f3de9c408b824abc5e.tar.xz
glibc-3cb4de474155c315003746f3de9c408b824abc5e.zip
ARM: Move more aeabi routine magic out of Linux-specific directories
-rw-r--r--ChangeLog31
-rw-r--r--sysdeps/arm/Makefile18
-rw-r--r--sysdeps/arm/libc-aeabi_read_tp.S (renamed from sysdeps/unix/sysv/linux/arm/libc-aeabi_read_tp.S)0
-rw-r--r--sysdeps/arm/nptl-aeabi_unwind_cpp_pr1.c (renamed from sysdeps/unix/sysv/linux/arm/nptl-aeabi_unwind_cpp_pr1.c)0
-rw-r--r--sysdeps/arm/nptl/Makefile13
-rw-r--r--sysdeps/arm/rt-aeabi_unwind_cpp_pr1.c (renamed from sysdeps/unix/sysv/linux/arm/rt-aeabi_unwind_cpp_pr1.c)0
-rw-r--r--sysdeps/unix/sysv/linux/arm/Makefile27
7 files changed, 63 insertions, 26 deletions
diff --git a/ChangeLog b/ChangeLog
index 67b89571d3..85e4c25a85 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,34 @@
+2014-06-26  Roland McGrath  <roland@hack.frob.com>
+
+	* 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  <joseph@codesourcery.com>
 
 	* 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
index 6132afc151..6132afc151 100644
--- a/sysdeps/unix/sysv/linux/arm/libc-aeabi_read_tp.S
+++ b/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
index 7b83522437..7b83522437 100644
--- a/sysdeps/unix/sysv/linux/arm/nptl-aeabi_unwind_cpp_pr1.c
+++ b/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
index 7b83522437..7b83522437 100644
--- a/sysdeps/unix/sysv/linux/arm/rt-aeabi_unwind_cpp_pr1.c
+++ b/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)