summaryrefslogtreecommitdiff
path: root/ports
diff options
context:
space:
mode:
authorjoseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d>2012-04-21 17:19:39 +0000
committerjoseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d>2012-04-21 17:19:39 +0000
commitded28410835671021876e845572816d3083efe34 (patch)
treed1f9b748d0c562708657f80cd2830c7582d455f6 /ports
parent854e95fe80cf2750477daaa1fcce14b8ef43418c (diff)
downloadeglibc2-ded28410835671021876e845572816d3083efe34.tar.gz
Merge changes between r17813 and r18165 from /fsf/trunk.
git-svn-id: svn://svn.eglibc.org/trunk@18166 7b3dc134-2b1b-0410-93df-9e9f96275f8d
Diffstat (limited to 'ports')
-rw-r--r--ports/ChangeLog.arm285
-rw-r--r--ports/ChangeLog.hppa25
-rw-r--r--ports/ChangeLog.m68k18
-rw-r--r--ports/ChangeLog.mips6
-rw-r--r--ports/ChangeLog.tile6
-rw-r--r--ports/sysdeps/arm/Makefile35
-rw-r--r--ports/sysdeps/arm/Versions (renamed from ports/sysdeps/arm/eabi/Versions)0
-rw-r--r--ports/sysdeps/arm/__longjmp.S (renamed from ports/sysdeps/arm/eabi/__longjmp.S)0
-rw-r--r--ports/sysdeps/arm/abi-note.S (renamed from ports/sysdeps/arm/eabi/abi-note.S)0
-rw-r--r--ports/sysdeps/arm/aeabi_assert.c (renamed from ports/sysdeps/arm/eabi/aeabi_assert.c)0
-rw-r--r--ports/sysdeps/arm/aeabi_atexit.c (renamed from ports/sysdeps/arm/eabi/aeabi_atexit.c)0
-rw-r--r--ports/sysdeps/arm/aeabi_errno_addr.c (renamed from ports/sysdeps/arm/eabi/aeabi_errno_addr.c)0
-rw-r--r--ports/sysdeps/arm/aeabi_lcsts.c (renamed from ports/sysdeps/arm/eabi/aeabi_lcsts.c)0
-rw-r--r--ports/sysdeps/arm/aeabi_localeconv.c (renamed from ports/sysdeps/arm/eabi/aeabi_localeconv.c)0
-rw-r--r--ports/sysdeps/arm/aeabi_math.c (renamed from ports/sysdeps/arm/eabi/aeabi_math.c)0
-rw-r--r--ports/sysdeps/arm/aeabi_mb_cur_max.c (renamed from ports/sysdeps/arm/eabi/aeabi_mb_cur_max.c)0
-rw-r--r--ports/sysdeps/arm/aeabi_memclr.c (renamed from ports/sysdeps/arm/eabi/aeabi_memclr.c)0
-rw-r--r--ports/sysdeps/arm/aeabi_memcpy.c (renamed from ports/sysdeps/arm/eabi/aeabi_memcpy.c)0
-rw-r--r--ports/sysdeps/arm/aeabi_memmove.c (renamed from ports/sysdeps/arm/eabi/aeabi_memmove.c)0
-rw-r--r--ports/sysdeps/arm/aeabi_memset.c (renamed from ports/sysdeps/arm/eabi/aeabi_memset.c)0
-rw-r--r--ports/sysdeps/arm/aeabi_sighandlers.S (renamed from ports/sysdeps/arm/eabi/aeabi_sighandlers.S)0
-rw-r--r--ports/sysdeps/arm/aeabi_unwind_cpp_pr1.c (renamed from ports/sysdeps/arm/eabi/aeabi_unwind_cpp_pr1.c)0
-rw-r--r--ports/sysdeps/arm/arm-mcount.S (renamed from ports/sysdeps/arm/eabi/arm-mcount.S)0
-rw-r--r--ports/sysdeps/arm/armv6t2/memchr.S (renamed from ports/sysdeps/arm/eabi/armv6t2/memchr.S)0
-rw-r--r--ports/sysdeps/arm/armv7/Implies (renamed from ports/sysdeps/arm/eabi/armv7/Implies)2
-rw-r--r--ports/sysdeps/arm/backtrace.c (renamed from ports/sysdeps/arm/eabi/backtrace.c)0
-rw-r--r--ports/sysdeps/arm/bits/fenv.h (renamed from ports/sysdeps/arm/eabi/bits/fenv.h)0
-rw-r--r--ports/sysdeps/arm/bits/huge_val.h (renamed from ports/sysdeps/arm/eabi/bits/huge_val.h)0
-rw-r--r--ports/sysdeps/arm/bits/predefs.h (renamed from ports/sysdeps/arm/eabi/bits/predefs.h)0
-rw-r--r--ports/sysdeps/arm/bits/setjmp.h (renamed from ports/sysdeps/arm/eabi/bits/setjmp.h)0
-rw-r--r--ports/sysdeps/arm/eabi/Makefile38
-rw-r--r--ports/sysdeps/arm/fclrexcpt.c (renamed from ports/sysdeps/arm/eabi/fclrexcpt.c)0
-rw-r--r--ports/sysdeps/arm/fedisblxcpt.c (renamed from ports/sysdeps/arm/eabi/fedisblxcpt.c)0
-rw-r--r--ports/sysdeps/arm/feenablxcpt.c (renamed from ports/sysdeps/arm/eabi/feenablxcpt.c)0
-rw-r--r--ports/sysdeps/arm/fegetenv.c (renamed from ports/sysdeps/arm/eabi/fegetenv.c)0
-rw-r--r--ports/sysdeps/arm/fegetexcept.c (renamed from ports/sysdeps/arm/eabi/fegetexcept.c)0
-rw-r--r--ports/sysdeps/arm/fegetround.c (renamed from ports/sysdeps/arm/eabi/fegetround.c)0
-rw-r--r--ports/sysdeps/arm/feholdexcpt.c (renamed from ports/sysdeps/arm/eabi/feholdexcpt.c)0
-rw-r--r--ports/sysdeps/arm/fesetenv.c (renamed from ports/sysdeps/arm/eabi/fesetenv.c)0
-rw-r--r--ports/sysdeps/arm/fesetround.c (renamed from ports/sysdeps/arm/eabi/fesetround.c)0
-rw-r--r--ports/sysdeps/arm/feupdateenv.c (renamed from ports/sysdeps/arm/eabi/feupdateenv.c)0
-rw-r--r--ports/sysdeps/arm/fgetexcptflg.c (renamed from ports/sysdeps/arm/eabi/fgetexcptflg.c)0
-rw-r--r--ports/sysdeps/arm/find_exidx.c (renamed from ports/sysdeps/arm/eabi/find_exidx.c)0
-rw-r--r--ports/sysdeps/arm/fpu_control.h (renamed from ports/sysdeps/arm/eabi/fpu_control.h)0
-rw-r--r--ports/sysdeps/arm/fraiseexcpt.c (renamed from ports/sysdeps/arm/eabi/fraiseexcpt.c)0
-rw-r--r--ports/sysdeps/arm/fsetexcptflg.c (renamed from ports/sysdeps/arm/eabi/fsetexcptflg.c)0
-rw-r--r--ports/sysdeps/arm/ftestexcept.c (renamed from ports/sysdeps/arm/eabi/ftestexcept.c)0
-rw-r--r--ports/sysdeps/arm/jmpbuf-offsets.h (renamed from ports/sysdeps/arm/eabi/jmpbuf-offsets.h)0
-rw-r--r--ports/sysdeps/arm/machine-gmon.h (renamed from ports/sysdeps/arm/eabi/machine-gmon.h)0
-rw-r--r--ports/sysdeps/arm/preconfigure4
-rw-r--r--ports/sysdeps/arm/rtld-global-offsets.sym (renamed from ports/sysdeps/arm/eabi/rtld-global-offsets.sym)0
-rw-r--r--ports/sysdeps/arm/setfpucw.c (renamed from ports/sysdeps/arm/eabi/setfpucw.c)0
-rw-r--r--ports/sysdeps/arm/setjmp.S (renamed from ports/sysdeps/arm/eabi/setjmp.S)0
-rw-r--r--ports/sysdeps/arm/shlib-versions1
-rw-r--r--ports/sysdeps/arm/start.S5
-rw-r--r--ports/sysdeps/arm/sysdep.h8
-rw-r--r--ports/sysdeps/hppa/configure56
-rw-r--r--ports/sysdeps/hppa/configure.in45
-rw-r--r--ports/sysdeps/hppa/crti.S80
-rw-r--r--ports/sysdeps/hppa/crtn.S88
-rw-r--r--ports/sysdeps/hppa/dl-fptr.c337
-rw-r--r--ports/sysdeps/hppa/dl-fptr.h5
-rw-r--r--ports/sysdeps/hppa/dl-irel.h47
-rw-r--r--ports/sysdeps/hppa/dl-machine.h6
-rw-r--r--ports/sysdeps/hppa/elf/configure140
-rw-r--r--ports/sysdeps/hppa/elf/configure.in47
-rw-r--r--ports/sysdeps/hppa/elf/initfini.c138
-rw-r--r--ports/sysdeps/hppa/entry.h (renamed from ports/sysdeps/hppa/elf/entry.h)0
-rw-r--r--ports/sysdeps/hppa/start.S (renamed from ports/sysdeps/hppa/elf/start.S)0
-rw-r--r--ports/sysdeps/m68k/m680x0/fpu/e_ilogb.c (renamed from ports/sysdeps/m68k/m680x0/fpu/s_ilogb.c)7
-rw-r--r--ports/sysdeps/m68k/m680x0/fpu/e_ilogbf.c (renamed from ports/sysdeps/m68k/m680x0/fpu/s_ilogbf.c)2
-rw-r--r--ports/sysdeps/m68k/m680x0/fpu/e_ilogbl.c (renamed from ports/sysdeps/m68k/m680x0/fpu/s_ilogbl.c)2
-rw-r--r--ports/sysdeps/m68k/m680x0/fpu/libm-test-ulps67
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/Makefile41
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/____longjmp_chk.S (renamed from ports/sysdeps/unix/sysv/linux/arm/eabi/____longjmp_chk.S)0
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/clone.S21
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/configure (renamed from ports/sysdeps/unix/sysv/linux/arm/eabi/configure)2
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/configure.in (renamed from ports/sysdeps/unix/sysv/linux/arm/eabi/configure.in)2
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/eabi/Makefile42
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/eabi/syscalls.list32
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/eabi/sysdep.h199
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/ftruncate64.c (renamed from ports/sysdeps/unix/sysv/linux/arm/eabi/ftruncate64.c)0
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/getcontext.S (renamed from ports/sysdeps/unix/sysv/linux/arm/eabi/getcontext.S)2
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/internal_accept4.S (renamed from ports/sysdeps/unix/sysv/linux/arm/eabi/internal_accept4.S)0
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/internal_recvmmsg.S (renamed from ports/sysdeps/unix/sysv/linux/arm/eabi/internal_recvmmsg.S)0
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/internal_sendmmsg.S (renamed from ports/sysdeps/unix/sysv/linux/arm/eabi/internal_sendmmsg.S)0
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/ldsodefs.h7
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/libc-do-syscall.S (renamed from ports/sysdeps/unix/sysv/linux/arm/eabi/libc-do-syscall.S)0
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/makecontext.c (renamed from ports/sysdeps/unix/sysv/linux/arm/eabi/makecontext.c)0
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/mmap64.S (renamed from ports/sysdeps/unix/sysv/linux/arm/eabi/mmap64.S)0
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/msgctl.c (renamed from ports/sysdeps/unix/sysv/linux/arm/eabi/msgctl.c)0
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/Makefile (renamed from ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/Makefile)0
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/configure (renamed from ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/configure)0
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/configure.in (renamed from ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/configure.in)0
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/nptl-aeabi_unwind_cpp_pr1.c (renamed from ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/nptl-aeabi_unwind_cpp_pr1.c)0
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/rt-aeabi_unwind_cpp_pr1.c (renamed from ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/rt-aeabi_unwind_cpp_pr1.c)0
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h (renamed from ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/sysdep-cancel.h)0
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/unwind-forcedunwind.c (renamed from ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/unwind-forcedunwind.c)0
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/unwind-resume.c (renamed from ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/unwind-resume.c)0
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/unwind.h (renamed from ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/unwind.h)0
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/oldgetrlimit.c (renamed from ports/sysdeps/unix/sysv/linux/arm/eabi/oldgetrlimit.c)0
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/oldsetrlimit.c (renamed from ports/sysdeps/unix/sysv/linux/arm/eabi/oldsetrlimit.c)0
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/pread.c (renamed from ports/sysdeps/unix/sysv/linux/arm/eabi/pread.c)0
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/pread64.c (renamed from ports/sysdeps/unix/sysv/linux/arm/eabi/pread64.c)0
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/pwrite.c (renamed from ports/sysdeps/unix/sysv/linux/arm/eabi/pwrite.c)0
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/pwrite64.c (renamed from ports/sysdeps/unix/sysv/linux/arm/eabi/pwrite64.c)0
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/readahead.c (renamed from ports/sysdeps/unix/sysv/linux/arm/eabi/readahead.c)0
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/semctl.c (renamed from ports/sysdeps/unix/sysv/linux/arm/eabi/semctl.c)0
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/setcontext.S (renamed from ports/sysdeps/unix/sysv/linux/arm/eabi/setcontext.S)2
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/shmctl.c (renamed from ports/sysdeps/unix/sysv/linux/arm/eabi/shmctl.c)0
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/sigaction.c22
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/sigrestorer.S (renamed from ports/sysdeps/unix/sysv/linux/arm/eabi/sigrestorer.S)0
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/socket.S126
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/swapcontext.S (renamed from ports/sysdeps/unix/sysv/linux/arm/eabi/swapcontext.S)0
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/syscall.S (renamed from ports/sysdeps/unix/sysv/linux/arm/eabi/syscall.S)0
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/syscalls.list35
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/sysdep.h208
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/truncate64.c (renamed from ports/sysdeps/unix/sysv/linux/arm/eabi/truncate64.c)0
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/umount.c (renamed from ports/sysdeps/unix/sysv/linux/arm/eabi/umount.c)0
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/vfork.S6
-rw-r--r--ports/sysdeps/unix/sysv/linux/m68k/bits/mman.h5
-rw-r--r--ports/sysdeps/unix/sysv/linux/mips/mips32/readahead.c2
-rw-r--r--ports/sysdeps/unix/sysv/linux/tile/tilegx/register-dump.h2
-rw-r--r--ports/sysdeps/unix/sysv/linux/tile/tilepro/register-dump.h2
124 files changed, 1348 insertions, 910 deletions
diff --git a/ports/ChangeLog.arm b/ports/ChangeLog.arm
index 491cc920e..908d0bd27 100644
--- a/ports/ChangeLog.arm
+++ b/ports/ChangeLog.arm
@@ -1,3 +1,288 @@
+2012-04-21 Joseph Myers <joseph@codesourcery.com>
+
+ [BZ #13556]
+ * sysdeps/arm/shlib-versions (arm.*-.*-linux.*): Remove old-ABI
+ entry.
+ * sysdeps/arm/start.S: Remove __ARM_EABI__ conditionals.
+ * sysdeps/arm/sysdep.h: Likewise.
+ * sysdeps/unix/sysv/linux/arm/clone.S: Likewise.
+ * sysdeps/unix/sysv/linux/arm/ldsodefs.h: Likewise.
+ * sysdeps/unix/sysv/linux/arm/sigaction.c: Likewise.
+ * sysdeps/unix/sysv/linux/arm/vfork.S: Likewise.
+
+ [BZ #13556]
+ * sysdeps/arm/preconfigure: Don't include /eabi in $machine.
+ * sysdeps/arm/Makefile [subdir = elf] (sysdep_routines): Add
+ setting from eabi/Makefile.
+ [subdir = elf] (sysdep-rtld-routines): Likewise.
+ [subdir = elf] (shared-only-routines): Likewise.
+ [subdir = csu] (gen-as-const-headers): Likewise.
+ [subdir = csu] (aeabi_constants): Likewise.
+ [subdir = csu] (aeabi_routines): Likewise.
+ [subdir = csu] (sysdep_routines): Likewise.
+ [subdir = csu] (static-only-routines): Likewise.
+ [subdir = gmon] (sysdep_routines): Likewise.
+ [subdir = debug] (CFLAGS-backtrace.c): Likewise.
+ [subdir = math] ($(objpfx)libm.so): Add dependency from
+ eabi/Makefile.
+ * sysdeps/arm/eabi/Makefile: Remove.
+ * sysdeps/arm/eabi/Versions: Move to ...
+ * sysdeps/arm/Versions: ... here.
+ * sysdeps/arm/eabi/__longjmp.S: Move to ...
+ * sysdeps/arm/__longjmp.S: ... here.
+ * sysdeps/arm/eabi/abi-note.S: Move to ...
+ * sysdeps/arm/abi-note.S: ... here.
+ * sysdeps/arm/eabi/aeabi_assert.c: Move to ...
+ * sysdeps/arm/aeabi_assert.c: ... here.
+ * sysdeps/arm/eabi/aeabi_atexit.c: Move to ...
+ * sysdeps/arm/aeabi_atexit.c: ... here.
+ * sysdeps/arm/eabi/aeabi_errno_addr.c: Move to ...
+ * sysdeps/arm/aeabi_errno_addr.c: ... here.
+ * sysdeps/arm/eabi/aeabi_lcsts.c: Move to ...
+ * sysdeps/arm/aeabi_lcsts.c: ... here.
+ * sysdeps/arm/eabi/aeabi_localeconv.c: Move to ...
+ * sysdeps/arm/aeabi_localeconv.c: ... here.
+ * sysdeps/arm/eabi/aeabi_math.c: Move to ...
+ * sysdeps/arm/aeabi_math.c: ... here.
+ * sysdeps/arm/eabi/aeabi_mb_cur_max.c: Move to ...
+ * sysdeps/arm/aeabi_mb_cur_max.c: ... here.
+ * sysdeps/arm/eabi/aeabi_memclr.c: Move to ...
+ * sysdeps/arm/aeabi_memclr.c: ... here.
+ * sysdeps/arm/eabi/aeabi_memcpy.c: Move to ...
+ * sysdeps/arm/aeabi_memcpy.c: ... here.
+ * sysdeps/arm/eabi/aeabi_memmove.c: Move to ...
+ * sysdeps/arm/aeabi_memmove.c: ... here.
+ * sysdeps/arm/eabi/aeabi_memset.c: Move to ...
+ * sysdeps/arm/aeabi_memset.c: ... here.
+ * sysdeps/arm/eabi/aeabi_sighandlers.S: Move to ...
+ * sysdeps/arm/aeabi_sighandlers.S: ... here.
+ * sysdeps/arm/eabi/aeabi_unwind_cpp_pr1.c: Move to ...
+ * sysdeps/arm/aeabi_unwind_cpp_pr1.c: ... here.
+ * sysdeps/arm/eabi/arm-mcount.S: Move to ...
+ * sysdeps/arm/arm-mcount.S: ... here.
+ * sysdeps/arm/eabi/backtrace.c: Move to ...
+ * sysdeps/arm/backtrace.c: ... here.
+ * sysdeps/arm/eabi/fclrexcpt.c: Move to ...
+ * sysdeps/arm/fclrexcpt.c: ... here.
+ * sysdeps/arm/eabi/fedisblxcpt.c: Move to ...
+ * sysdeps/arm/fedisblxcpt.c: ... here.
+ * sysdeps/arm/eabi/feenablxcpt.c: Move to ...
+ * sysdeps/arm/feenablxcpt.c: ... here.
+ * sysdeps/arm/eabi/fegetenv.c: Move to ...
+ * sysdeps/arm/fegetenv.c: ... here.
+ * sysdeps/arm/eabi/fegetexcept.c: Move to ...
+ * sysdeps/arm/fegetexcept.c: ... here.
+ * sysdeps/arm/eabi/fegetround.c: Move to ...
+ * sysdeps/arm/fegetround.c: ... here.
+ * sysdeps/arm/eabi/feholdexcpt.c: Move to ...
+ * sysdeps/arm/feholdexcpt.c: ... here.
+ * sysdeps/arm/eabi/fesetenv.c: Move to ...
+ * sysdeps/arm/fesetenv.c: ... here.
+ * sysdeps/arm/eabi/fesetround.c: Move to ...
+ * sysdeps/arm/fesetround.c: ... here.
+ * sysdeps/arm/eabi/feupdateenv.c: Move to ...
+ * sysdeps/arm/feupdateenv.c: ... here.
+ * sysdeps/arm/eabi/fgetexcptflg.c: Move to ...
+ * sysdeps/arm/fgetexcptflg.c: ... here.
+ * sysdeps/arm/eabi/find_exidx.c: Move to ...
+ * sysdeps/arm/find_exidx.c: ... here.
+ * sysdeps/arm/eabi/fpu_control.h: Move to ...
+ * sysdeps/arm/fpu_control.h: ... here.
+ * sysdeps/arm/eabi/fraiseexcpt.c: Move to ...
+ * sysdeps/arm/fraiseexcpt.c: ... here.
+ * sysdeps/arm/eabi/fsetexcptflg.c: Move to ...
+ * sysdeps/arm/fsetexcptflg.c: ... here.
+ * sysdeps/arm/eabi/ftestexcept.c: Move to ...
+ * sysdeps/arm/ftestexcept.c: ... here.
+ * sysdeps/arm/eabi/jmpbuf-offsets.h: Move to ...
+ * sysdeps/arm/jmpbuf-offsets.h: ... here.
+ * sysdeps/arm/eabi/machine-gmon.h: Move to ...
+ * sysdeps/arm/machine-gmon.h: ... here.
+ * sysdeps/arm/eabi/rtld-global-offsets.sym: Move to ...
+ * sysdeps/arm/rtld-global-offsets.sym: ... here.
+ * sysdeps/arm/eabi/setfpucw.c: Move to ...
+ * sysdeps/arm/setfpucw.c: ... here.
+ * sysdeps/arm/eabi/setjmp.S: Move to ...
+ * sysdeps/arm/setjmp.S: ... here.
+ * sysdeps/arm/eabi/armv6t2/memchr.S: Move to ...
+ * sysdeps/arm/armv6t2/memchr.S: ... here.
+ * sysdeps/arm/eabi/armv7/Implies: Move to ...
+ * sysdeps/arm/armv7/Implies: ... here. Remove /eabi from implied
+ directory.
+ * sysdeps/arm/eabi/bits/fenv.h: Move to ...
+ * sysdeps/arm/bits/fenv.h: ... here.
+ * sysdeps/arm/eabi/bits/huge_val.h: Move to ...
+ * sysdeps/arm/bits/huge_val.h: ... here.
+ * sysdeps/arm/eabi/bits/setjmp.h: Move to ...
+ * sysdeps/arm/bits/setjmp.h: ... here.
+ * sysdeps/unix/sysv/linux/arm/getcontext.S: Update directory name
+ in comment.
+ * sysdeps/unix/sysv/linux/arm/setcontext.S: Likewise.
+
+ [BZ #13556]
+ * sysdeps/unix/sysv/linux/arm/socket.S: Remove.
+ * sysdeps/unix/sysv/linux/arm/syscalls.list (syscall): Remove.
+ (oldgetrlimit): Likewise.
+ (oldsetrlimit): Likewise.
+ (syscall): Likewise.
+ (msgget): Add syscall from eabi/syscalls.list.
+ (msgrcv): Likewise.
+ (msgsnd): Likewise.
+ (shmat): Likewise.
+ (shmdt): Likewise.
+ (shmget): Likewise.
+ (semop): Likewise.
+ (semtimedop): Likewise.
+ (semget): Likewise.
+ (accept): Likewise.
+ (bind): Likewise.
+ (connect): Likewise.
+ (getpeername): Likewise.
+ (getsockname): Likewise.
+ (getsockopt): Likewise.
+ (listen): Likewise.
+ (recv): Likewise.
+ (recvfrom): Likewise.
+ (recvmsg): Likewise.
+ (send): Likewise.
+ (sendmsg): Likewise.
+ (sendto): Likewise.
+ (setsockopt): Likewise.
+ (shutdown): Likewise.
+ (socket): Likewise.
+ (socketpair): Likewise.
+ * sysdeps/unix/sysv/linux/arm/eabi/syscalls.list: Remove.
+ * sysdeps/unix/sysv/linux/arm/Makefile [subdir = csu]
+ (CFLAGS-libc-start.c): Add setting from eabi/Makefile.
+ [subdir = rt] (librt-sysdep_routines): Likewise.
+ [subdir = rt] (librt-shared-only-routines): Likewise.
+ [subdir = nptl] (libpthread-sysdep_routines): Likewise.
+ [subdir = nptl] (libpthread-shared-only-routines): Likewise.
+ [subdir = resolv] (libanl-sysdep_routines): Likewise.
+ [subdir = resolv] (libanl-shared-only-routines): Likewise.
+ [subdir = csu] (sysdep_routines): Likewise.
+ [subdir = nscd] (nscd-modules): Likewise.
+ [subdir = nss] (libnss_db-sysdep_routines): Likewise.
+ [subdir = nss] (libnss_db-shared-only-routines): Likewise.
+ [subdir = posix] (LDFLAGS-tst-rfc3484): Likewise.
+ [subdir = posix] (LDFLAGS-tst-rfc3484-2): Likewise.
+ [subdir = posix] (LDFLAGS-tst-rfc3484-3): Likewise.
+ * sysdeps/unix/sysv/linux/arm/eabi/Makefile: Remove.
+ * sysdeps/unix/sysv/linux/arm/sysdep.h (__NR_SYSCALL_BASE): Add
+ test from eabi/sysdep.h.
+ (__NR_stime): Add #undef from eabi/sysdep.h.
+ (__NR_alarm): Likewise.
+ (DO_CALL): Use definition from eabi/sysdep.h.
+ (DOARGS_0): Likewise.
+ (DOARGS_1): Likewise.
+ (DOARGS_2): Likewise.
+ (DOARGS_3): Likewise.
+ (DOARGS_4): Likewise.
+ (DOARGS_5): Likewise.
+ (DOARGS_6): Likewise.
+ (DOARGS_7): Likewise.
+ (UNDOARGS_0): Likewise.
+ (UNDOARGS_1): Likewise.
+ (UNDOARGS_2): Likewise.
+ (UNDOARGS_3): Likewise.
+ (UNDOARGS_4): Likewise.
+ (UNDOARGS_5): Likewise.
+ (UNDOARGS_6): Likewise.
+ (UNDOARGS_7): Likewise.
+ (INTERNAL_SYSCALL_RAW): Likewise.
+ [__thumb__] (LOAD_ARGS_7): Do not define.
+ [__thumb__] (ASM_ARGS_7): Likewise.
+ (INTERNAL_SYSCALL_NCS): Use definition from eabi/sysdep.h.
+ (INTERNAL_SYSCALL_NCS_0): Remove.
+ (INTERNAL_SYSCALL_NCS_1): Likewise.
+ (INTERNAL_SYSCALL_NCS_2): Likewise.
+ (INTERNAL_SYSCALL_NCS_3): Likewise.
+ (INTERNAL_SYSCALL_NCS_4): Likewise.
+ (INTERNAL_SYSCALL_NCS_5): Likewise.
+ * sysdeps/unix/sysv/linux/arm/eabi/sysdep.h: Remove.
+ * sysdeps/unix/sysv/linux/arm/eabi/____longjmp_chk.S: Move to ...
+ * sysdeps/unix/sysv/linux/arm/____longjmp_chk.S: ... here.
+ * sysdeps/unix/sysv/linux/arm/eabi/configure.in: Move to ...
+ * sysdeps/unix/sysv/linux/arm/configure.in: ... here. Update
+ comment.
+ * sysdeps/unix/sysv/linux/arm/eabi/configure: Move to ...
+ * sysdeps/unix/sysv/linux/arm/configure: ... here. Regenerate.
+ * sysdeps/unix/sysv/linux/arm/eabi/ftruncate64.c: Move to ...
+ * sysdeps/unix/sysv/linux/arm/ftruncate64.c: ... here.
+ * sysdeps/unix/sysv/linux/arm/eabi/getcontext.S: Move to ...
+ * sysdeps/unix/sysv/linux/arm/getcontext.S: ... here.
+ * sysdeps/unix/sysv/linux/arm/eabi/internal_accept4.S: Move to ...
+ * sysdeps/unix/sysv/linux/arm/internal_accept4.S: ... here.
+ * sysdeps/unix/sysv/linux/arm/eabi/internal_recvmmsg.S: Move to ...
+ * sysdeps/unix/sysv/linux/arm/internal_recvmmsg.S: ... here.
+ * sysdeps/unix/sysv/linux/arm/eabi/internal_sendmmsg.S: Move to ...
+ * sysdeps/unix/sysv/linux/arm/internal_sendmmsg.S: ... here.
+ * sysdeps/unix/sysv/linux/arm/eabi/libc-do-syscall.S: Move to ...
+ * sysdeps/unix/sysv/linux/arm/libc-do-syscall.S: ... here.
+ * sysdeps/unix/sysv/linux/arm/eabi/makecontext.c: Move to ...
+ * sysdeps/unix/sysv/linux/arm/makecontext.c: ... here.
+ * sysdeps/unix/sysv/linux/arm/eabi/mmap64.S: Move to ...
+ * sysdeps/unix/sysv/linux/arm/mmap64.S: ... here.
+ * sysdeps/unix/sysv/linux/arm/eabi/msgctl.c: Move to ...
+ * sysdeps/unix/sysv/linux/arm/msgctl.c: ... here.
+ * sysdeps/unix/sysv/linux/arm/eabi/oldgetrlimit.c: Move to ...
+ * sysdeps/unix/sysv/linux/arm/oldgetrlimit.c: ... here.
+ * sysdeps/unix/sysv/linux/arm/eabi/oldsetrlimit.c: Move to ...
+ * sysdeps/unix/sysv/linux/arm/oldsetrlimit.c: ... here.
+ * sysdeps/unix/sysv/linux/arm/eabi/pread.c: Move to ...
+ * sysdeps/unix/sysv/linux/arm/pread.c: ... here.
+ * sysdeps/unix/sysv/linux/arm/eabi/pread64.c: Move to ...
+ * sysdeps/unix/sysv/linux/arm/pread64.c: ... here.
+ * sysdeps/unix/sysv/linux/arm/eabi/pwrite.c: Move to ...
+ * sysdeps/unix/sysv/linux/arm/pwrite.c: ... here.
+ * sysdeps/unix/sysv/linux/arm/eabi/pwrite64.c: Move to ...
+ * sysdeps/unix/sysv/linux/arm/pwrite64.c: ... here.
+ * sysdeps/unix/sysv/linux/arm/eabi/readahead.c: Move to ...
+ * sysdeps/unix/sysv/linux/arm/readahead.c: ... here.
+ * sysdeps/unix/sysv/linux/arm/eabi/semctl.c: Move to ...
+ * sysdeps/unix/sysv/linux/arm/semctl.c: ... here.
+ * sysdeps/unix/sysv/linux/arm/eabi/setcontext.S: Move to ...
+ * sysdeps/unix/sysv/linux/arm/setcontext.S: ... here.
+ * sysdeps/unix/sysv/linux/arm/eabi/shmctl.c: Move to ...
+ * sysdeps/unix/sysv/linux/arm/shmctl.c: ... here.
+ * sysdeps/unix/sysv/linux/arm/eabi/sigrestorer.S: Move to ...
+ * sysdeps/unix/sysv/linux/arm/sigrestorer.S: ... here.
+ * sysdeps/unix/sysv/linux/arm/eabi/swapcontext.S: Move to ...
+ * sysdeps/unix/sysv/linux/arm/swapcontext.S: ... here.
+ * sysdeps/unix/sysv/linux/arm/eabi/syscall.S: Move to ...
+ * sysdeps/unix/sysv/linux/arm/syscall.S: ... here.
+ * sysdeps/unix/sysv/linux/arm/eabi/truncate64.c: Move to ...
+ * sysdeps/unix/sysv/linux/arm/truncate64.c: ... here.
+ * sysdeps/unix/sysv/linux/arm/eabi/umount.c: Move to ...
+ * sysdeps/unix/sysv/linux/arm/umount.c: ... here.
+ * sysdeps/unix/sysv/linux/arm/eabi/nptl/Makefile: Move to ...
+ * sysdeps/unix/sysv/linux/arm/nptl/Makefile: ... here.
+ * sysdeps/unix/sysv/linux/arm/eabi/nptl/configure.in: Move to ...
+ * sysdeps/unix/sysv/linux/arm/nptl/configure.in: ... here.
+ * sysdeps/unix/sysv/linux/arm/eabi/nptl/configure: Move to ...
+ * sysdeps/unix/sysv/linux/arm/nptl/configure: ... here.
+ * sysdeps/unix/sysv/linux/arm/eabi/nptl/nptl-aeabi_unwind_cpp_pr1.c:
+ Move to ...
+ * sysdeps/unix/sysv/linux/arm/nptl/nptl-aeabi_unwind_cpp_pr1.c:
+ ... here.
+ * sysdeps/unix/sysv/linux/arm/eabi/nptl/rt-aeabi_unwind_cpp_pr1.c:
+ Move to ...
+ * sysdeps/unix/sysv/linux/arm/nptl/rt-aeabi_unwind_cpp_pr1.c: ... here.
+ * sysdeps/unix/sysv/linux/arm/eabi/nptl/sysdep-cancel.h: Move to ...
+ * sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h: ... here.
+ * sysdeps/unix/sysv/linux/arm/eabi/nptl/unwind-forcedunwind.c:
+ Move to ...
+ * sysdeps/unix/sysv/linux/arm/nptl/unwind-forcedunwind.c: ... here.
+ * sysdeps/unix/sysv/linux/arm/eabi/nptl/unwind-resume.c: Move to ...
+ * sysdeps/unix/sysv/linux/arm/nptl/unwind-resume.c: ... here.
+ * sysdeps/unix/sysv/linux/arm/eabi/nptl/unwind.h: Move to ...
+ * sysdeps/unix/sysv/linux/arm/nptl/unwind.h: ... here.
+
+2012-04-16 Andreas Jaeger <aj@suse.de>
+
+ * sysdeps/unix/sysv/linux/arm/ldsodefs.h: Undefine
+ MORE_ELF_HEADER_DATA to avoid warnings about redefinition.
+
2012-03-28 Joseph Myers <joseph@codesourcery.com>
* sysdeps/unix/sysv/linux/arm/bits/mman.h (MAP_STACK): Define.
diff --git a/ports/ChangeLog.hppa b/ports/ChangeLog.hppa
index 700c78fe0..0c7446e92 100644
--- a/ports/ChangeLog.hppa
+++ b/ports/ChangeLog.hppa
@@ -1,3 +1,28 @@
+2012-04-17 Carlos O'Donell <carlos@systemhalted.org>
+
+ * sysdeps/hppa/dl-irel.h: New file.
+
+2012-04-17 Carlos O'Donell <carlos@systemhalted.org>
+
+ * sysdeps/hppa/dl-fptr.h: Add prototype for _dl_fptr_init.
+ * sysdeps/hppa/dl-fptr.c: New file.
+ * sysdeps/hppa/dl-machine.h (ELF_MACHINE_BEFORE_RTLD_RELOC):
+ Call _dl_fptr_init.
+
+2012-04-17 Carlos O'Donell <carlos@systemhalted.org>
+
+ * sysdeps/hppa/elf/configure: Removed file.
+ * sysdeps/hppa/elf/configure.in: Move to...
+ * sysdeps/hppa/configure.in: ... here.
+ * sysdeps/hppa/configure: Regenerate.
+ * sysdeps/hppa/elf/initfini.c: Removed file.
+ * sysdeps/hppa/crti.S: New file.
+ * sysdeps/hppa/crtn.S: New file.
+ * sysdeps/hppa/elf/entry.h: Moved to ...
+ * sysdeps/hppa/entry.h: ... here.
+ * sysdeps/hppa/elf/start.S: Move to ...
+ * sysdeps/hppa/start.S: ... here.
+
2012-03-22 Carlos O'Donell <carlos@systemhalted.org>
[BZ #6730]
diff --git a/ports/ChangeLog.m68k b/ports/ChangeLog.m68k
index 8108e001c..dda687edd 100644
--- a/ports/ChangeLog.m68k
+++ b/ports/ChangeLog.m68k
@@ -1,3 +1,21 @@
+2012-04-18 Andreas Schwab <schwab@linux-m68k.org>
+
+ * sysdeps/m68k/m680x0/fpu/libm-test-ulps: Update.
+
+2012-04-17 Andreas Schwab <schwab@linux-m68k.org>
+
+ * sysdeps/m68k/m680x0/fpu/e_ilogb.c: Renamed from s_ilogb.c.
+ Define __ieee754_ilogb instead of __ilogb.
+ * sysdeps/m68k/m680x0/fpu/e_ilogbf.c: Renamed from s_ilogbf.c and
+ adjusted.
+ * sysdeps/m68k/m680x0/fpu/e_ilogbl.c: Renamed from s_ilogbl.c and
+ adjusted.
+
+2012-03-28 Andreas Schwab <schwab@linux-m68k.org>
+
+ * sysdeps/unix/sysv/linux/m68k/bits/mman.h (MAP_STACK)
+ (MAP_HUGETLB): Define.
+
2012-03-27 Andreas Schwab <schwab@linux-m68k.org>
* sysdeps/m68k/elf/start.S: Move to ...
diff --git a/ports/ChangeLog.mips b/ports/ChangeLog.mips
index 01f51c0c4..6e0523de8 100644
--- a/ports/ChangeLog.mips
+++ b/ports/ChangeLog.mips
@@ -1,3 +1,9 @@
+2012-04-21 Joseph Myers <joseph@codesourcery.com>
+
+ * sysdeps/unix/sysv/linux/mips/mips32/readahead.c: Include
+ sysdeps/unix/sysv/linux/arm/readahead.c not
+ sysdeps/unix/sysv/linux/arm/eabi/readahead.c.
+
2012-03-28 Joseph Myers <joseph@codesourcery.com>
* sysdeps/unix/sysv/linux/mips/bits/mman.h (MAP_STACK): Define.
diff --git a/ports/ChangeLog.tile b/ports/ChangeLog.tile
index b48d61401..77e03b58f 100644
--- a/ports/ChangeLog.tile
+++ b/ports/ChangeLog.tile
@@ -1,3 +1,9 @@
+2012-04-15 Mike Frysinger <vapier@gentoo.org>
+
+ * sysdeps/unix/sysv/linux/tile/tilegx/register-dump.h: Include
+ <_itoa.h> instead of <stdio-common/_itoa.h>.
+ * sysdeps/unix/sysv/linux/tile/tilepro/register-dump.h: Likewise.
+
2012-03-09 Richard Henderson <rth@twiddle.net>
* sysdeps/tile/math_private.h: Use include_next to
diff --git a/ports/sysdeps/arm/Makefile b/ports/sysdeps/arm/Makefile
index 1a88430a2..69a5a6a11 100644
--- a/ports/sysdeps/arm/Makefile
+++ b/ports/sysdeps/arm/Makefile
@@ -1,14 +1,43 @@
ifeq ($(subdir),elf)
sysdep-dl-routines += tlsdesc dl-tlsdesc
-sysdep_routines += tlsdesc dl-tlsdesc
-sysdep-rtld-routines += tlsdesc dl-tlsdesc
+sysdep_routines += aeabi_unwind_cpp_pr1 find_exidx tlsdesc dl-tlsdesc
+sysdep-rtld-routines += aeabi_unwind_cpp_pr1 tlsdesc dl-tlsdesc
+shared-only-routines += aeabi_unwind_cpp_pr1
endif
ifeq ($(subdir),csu)
-gen-as-const-headers += tlsdesc.sym
+# get offset to rtld_global._dl_hwcap
+gen-as-const-headers += rtld-global-offsets.sym tlsdesc.sym
+aeabi_constants = aeabi_lcsts aeabi_sighandlers aeabi_math
+aeabi_routines = aeabi_assert aeabi_errno_addr \
+ aeabi_mb_cur_max aeabi_atexit aeabi_memclr aeabi_memcpy \
+ aeabi_memmove aeabi_memset
+ifeq (y,$(OPTION_EGLIBC_LOCALE_CODE))
+aeabi_routines += aeabi_localeconv
+endif
+
+sysdep_routines += $(aeabi_constants) $(aeabi_routines)
+static-only-routines += $(aeabi_constants)
endif
# to pull in __aeabi_read_tp, needed for tls
ifeq ($(subdir),malloc)
$(objpfx)libmemusage.so: $(common-objpfx)libc_nonshared.a
endif
+
+ifeq ($(subdir),gmon)
+sysdep_routines += arm-mcount
+endif
+
+ifeq ($(subdir),debug)
+CFLAGS-backtrace.c += -funwind-tables
+CFLAGS-tst-backtrace2.c += -funwind-tables
+CFLAGS-tst-backtrace3.c += -funwind-tables
+CFLAGS-tst-backtrace4.c += -funwind-tables
+CFLAGS-tst-backtrace5.c += -funwind-tables
+CFLAGS-tst-backtrace6.c += -funwind-tables
+endif
+
+ifeq ($(subdir),math)
+$(objpfx)libm.so: $(elfobjdir)/ld.so
+endif
diff --git a/ports/sysdeps/arm/eabi/Versions b/ports/sysdeps/arm/Versions
index 5f2af29c3..5f2af29c3 100644
--- a/ports/sysdeps/arm/eabi/Versions
+++ b/ports/sysdeps/arm/Versions
diff --git a/ports/sysdeps/arm/eabi/__longjmp.S b/ports/sysdeps/arm/__longjmp.S
index cc802c15b..cc802c15b 100644
--- a/ports/sysdeps/arm/eabi/__longjmp.S
+++ b/ports/sysdeps/arm/__longjmp.S
diff --git a/ports/sysdeps/arm/eabi/abi-note.S b/ports/sysdeps/arm/abi-note.S
index 1060c3d28..1060c3d28 100644
--- a/ports/sysdeps/arm/eabi/abi-note.S
+++ b/ports/sysdeps/arm/abi-note.S
diff --git a/ports/sysdeps/arm/eabi/aeabi_assert.c b/ports/sysdeps/arm/aeabi_assert.c
index c8fb18891..c8fb18891 100644
--- a/ports/sysdeps/arm/eabi/aeabi_assert.c
+++ b/ports/sysdeps/arm/aeabi_assert.c
diff --git a/ports/sysdeps/arm/eabi/aeabi_atexit.c b/ports/sysdeps/arm/aeabi_atexit.c
index 5427fae96..5427fae96 100644
--- a/ports/sysdeps/arm/eabi/aeabi_atexit.c
+++ b/ports/sysdeps/arm/aeabi_atexit.c
diff --git a/ports/sysdeps/arm/eabi/aeabi_errno_addr.c b/ports/sysdeps/arm/aeabi_errno_addr.c
index b9ee3a5fd..b9ee3a5fd 100644
--- a/ports/sysdeps/arm/eabi/aeabi_errno_addr.c
+++ b/ports/sysdeps/arm/aeabi_errno_addr.c
diff --git a/ports/sysdeps/arm/eabi/aeabi_lcsts.c b/ports/sysdeps/arm/aeabi_lcsts.c
index c53800d6c..c53800d6c 100644
--- a/ports/sysdeps/arm/eabi/aeabi_lcsts.c
+++ b/ports/sysdeps/arm/aeabi_lcsts.c
diff --git a/ports/sysdeps/arm/eabi/aeabi_localeconv.c b/ports/sysdeps/arm/aeabi_localeconv.c
index 233dc6204..233dc6204 100644
--- a/ports/sysdeps/arm/eabi/aeabi_localeconv.c
+++ b/ports/sysdeps/arm/aeabi_localeconv.c
diff --git a/ports/sysdeps/arm/eabi/aeabi_math.c b/ports/sysdeps/arm/aeabi_math.c
index d7bcd5671..d7bcd5671 100644
--- a/ports/sysdeps/arm/eabi/aeabi_math.c
+++ b/ports/sysdeps/arm/aeabi_math.c
diff --git a/ports/sysdeps/arm/eabi/aeabi_mb_cur_max.c b/ports/sysdeps/arm/aeabi_mb_cur_max.c
index 3c03a9ae3..3c03a9ae3 100644
--- a/ports/sysdeps/arm/eabi/aeabi_mb_cur_max.c
+++ b/ports/sysdeps/arm/aeabi_mb_cur_max.c
diff --git a/ports/sysdeps/arm/eabi/aeabi_memclr.c b/ports/sysdeps/arm/aeabi_memclr.c
index e2974520e..e2974520e 100644
--- a/ports/sysdeps/arm/eabi/aeabi_memclr.c
+++ b/ports/sysdeps/arm/aeabi_memclr.c
diff --git a/ports/sysdeps/arm/eabi/aeabi_memcpy.c b/ports/sysdeps/arm/aeabi_memcpy.c
index 403a7ef52..403a7ef52 100644
--- a/ports/sysdeps/arm/eabi/aeabi_memcpy.c
+++ b/ports/sysdeps/arm/aeabi_memcpy.c
diff --git a/ports/sysdeps/arm/eabi/aeabi_memmove.c b/ports/sysdeps/arm/aeabi_memmove.c
index e824946a7..e824946a7 100644
--- a/ports/sysdeps/arm/eabi/aeabi_memmove.c
+++ b/ports/sysdeps/arm/aeabi_memmove.c
diff --git a/ports/sysdeps/arm/eabi/aeabi_memset.c b/ports/sysdeps/arm/aeabi_memset.c
index b7775f919..b7775f919 100644
--- a/ports/sysdeps/arm/eabi/aeabi_memset.c
+++ b/ports/sysdeps/arm/aeabi_memset.c
diff --git a/ports/sysdeps/arm/eabi/aeabi_sighandlers.S b/ports/sysdeps/arm/aeabi_sighandlers.S
index 082039e9c..082039e9c 100644
--- a/ports/sysdeps/arm/eabi/aeabi_sighandlers.S
+++ b/ports/sysdeps/arm/aeabi_sighandlers.S
diff --git a/ports/sysdeps/arm/eabi/aeabi_unwind_cpp_pr1.c b/ports/sysdeps/arm/aeabi_unwind_cpp_pr1.c
index 5dbbd9b0a..5dbbd9b0a 100644
--- a/ports/sysdeps/arm/eabi/aeabi_unwind_cpp_pr1.c
+++ b/ports/sysdeps/arm/aeabi_unwind_cpp_pr1.c
diff --git a/ports/sysdeps/arm/eabi/arm-mcount.S b/ports/sysdeps/arm/arm-mcount.S
index 5ee66bea0..5ee66bea0 100644
--- a/ports/sysdeps/arm/eabi/arm-mcount.S
+++ b/ports/sysdeps/arm/arm-mcount.S
diff --git a/ports/sysdeps/arm/eabi/armv6t2/memchr.S b/ports/sysdeps/arm/armv6t2/memchr.S
index 69ea320e8..69ea320e8 100644
--- a/ports/sysdeps/arm/eabi/armv6t2/memchr.S
+++ b/ports/sysdeps/arm/armv6t2/memchr.S
diff --git a/ports/sysdeps/arm/eabi/armv7/Implies b/ports/sysdeps/arm/armv7/Implies
index 8a784407f..c6cd0eb87 100644
--- a/ports/sysdeps/arm/eabi/armv7/Implies
+++ b/ports/sysdeps/arm/armv7/Implies
@@ -1,2 +1,2 @@
# We can do everything that 6T2 can
-arm/eabi/armv6t2
+arm/armv6t2
diff --git a/ports/sysdeps/arm/eabi/backtrace.c b/ports/sysdeps/arm/backtrace.c
index 3d839e628..3d839e628 100644
--- a/ports/sysdeps/arm/eabi/backtrace.c
+++ b/ports/sysdeps/arm/backtrace.c
diff --git a/ports/sysdeps/arm/eabi/bits/fenv.h b/ports/sysdeps/arm/bits/fenv.h
index 006ccf528..006ccf528 100644
--- a/ports/sysdeps/arm/eabi/bits/fenv.h
+++ b/ports/sysdeps/arm/bits/fenv.h
diff --git a/ports/sysdeps/arm/eabi/bits/huge_val.h b/ports/sysdeps/arm/bits/huge_val.h
index 6008b1008..6008b1008 100644
--- a/ports/sysdeps/arm/eabi/bits/huge_val.h
+++ b/ports/sysdeps/arm/bits/huge_val.h
diff --git a/ports/sysdeps/arm/eabi/bits/predefs.h b/ports/sysdeps/arm/bits/predefs.h
index aa33225f4..aa33225f4 100644
--- a/ports/sysdeps/arm/eabi/bits/predefs.h
+++ b/ports/sysdeps/arm/bits/predefs.h
diff --git a/ports/sysdeps/arm/eabi/bits/setjmp.h b/ports/sysdeps/arm/bits/setjmp.h
index bdc41ce86..bdc41ce86 100644
--- a/ports/sysdeps/arm/eabi/bits/setjmp.h
+++ b/ports/sysdeps/arm/bits/setjmp.h
diff --git a/ports/sysdeps/arm/eabi/Makefile b/ports/sysdeps/arm/eabi/Makefile
deleted file mode 100644
index 97bb49552..000000000
--- a/ports/sysdeps/arm/eabi/Makefile
+++ /dev/null
@@ -1,38 +0,0 @@
-ifeq ($(subdir),csu)
-aeabi_constants = aeabi_lcsts aeabi_sighandlers aeabi_math
-aeabi_routines = aeabi_assert aeabi_errno_addr \
- aeabi_mb_cur_max aeabi_atexit aeabi_memclr aeabi_memcpy \
- aeabi_memmove aeabi_memset
-ifeq (y,$(OPTION_EGLIBC_LOCALE_CODE))
-aeabi_routines += aeabi_localeconv
-endif
-
-sysdep_routines += $(aeabi_constants) $(aeabi_routines)
-static-only-routines += $(aeabi_constants)
-
-# get offset to rtld_global._dl_hwcap
-gen-as-const-headers += rtld-global-offsets.sym
-endif
-
-ifeq ($(subdir),gmon)
-sysdep_routines += arm-mcount
-endif
-
-ifeq ($(subdir),debug)
-CFLAGS-backtrace.c += -funwind-tables
-CFLAGS-tst-backtrace2.c += -funwind-tables
-CFLAGS-tst-backtrace3.c += -funwind-tables
-CFLAGS-tst-backtrace4.c += -funwind-tables
-CFLAGS-tst-backtrace5.c += -funwind-tables
-CFLAGS-tst-backtrace6.c += -funwind-tables
-endif
-
-ifeq ($(subdir),elf)
-sysdep_routines += aeabi_unwind_cpp_pr1 find_exidx
-shared-only-routines += aeabi_unwind_cpp_pr1
-sysdep-rtld-routines += aeabi_unwind_cpp_pr1
-endif
-
-ifeq ($(subdir),math)
-$(objpfx)libm.so: $(elfobjdir)/ld.so
-endif
diff --git a/ports/sysdeps/arm/eabi/fclrexcpt.c b/ports/sysdeps/arm/fclrexcpt.c
index ddedc3573..ddedc3573 100644
--- a/ports/sysdeps/arm/eabi/fclrexcpt.c
+++ b/ports/sysdeps/arm/fclrexcpt.c
diff --git a/ports/sysdeps/arm/eabi/fedisblxcpt.c b/ports/sysdeps/arm/fedisblxcpt.c
index c9c62a48e..c9c62a48e 100644
--- a/ports/sysdeps/arm/eabi/fedisblxcpt.c
+++ b/ports/sysdeps/arm/fedisblxcpt.c
diff --git a/ports/sysdeps/arm/eabi/feenablxcpt.c b/ports/sysdeps/arm/feenablxcpt.c
index 3b2b934f5..3b2b934f5 100644
--- a/ports/sysdeps/arm/eabi/feenablxcpt.c
+++ b/ports/sysdeps/arm/feenablxcpt.c
diff --git a/ports/sysdeps/arm/eabi/fegetenv.c b/ports/sysdeps/arm/fegetenv.c
index c638635df..c638635df 100644
--- a/ports/sysdeps/arm/eabi/fegetenv.c
+++ b/ports/sysdeps/arm/fegetenv.c
diff --git a/ports/sysdeps/arm/eabi/fegetexcept.c b/ports/sysdeps/arm/fegetexcept.c
index 929d6c5cf..929d6c5cf 100644
--- a/ports/sysdeps/arm/eabi/fegetexcept.c
+++ b/ports/sysdeps/arm/fegetexcept.c
diff --git a/ports/sysdeps/arm/eabi/fegetround.c b/ports/sysdeps/arm/fegetround.c
index df1049706..df1049706 100644
--- a/ports/sysdeps/arm/eabi/fegetround.c
+++ b/ports/sysdeps/arm/fegetround.c
diff --git a/ports/sysdeps/arm/eabi/feholdexcpt.c b/ports/sysdeps/arm/feholdexcpt.c
index 4aed48bb3..4aed48bb3 100644
--- a/ports/sysdeps/arm/eabi/feholdexcpt.c
+++ b/ports/sysdeps/arm/feholdexcpt.c
diff --git a/ports/sysdeps/arm/eabi/fesetenv.c b/ports/sysdeps/arm/fesetenv.c
index 61370325e..61370325e 100644
--- a/ports/sysdeps/arm/eabi/fesetenv.c
+++ b/ports/sysdeps/arm/fesetenv.c
diff --git a/ports/sysdeps/arm/eabi/fesetround.c b/ports/sysdeps/arm/fesetround.c
index 997bd98f5..997bd98f5 100644
--- a/ports/sysdeps/arm/eabi/fesetround.c
+++ b/ports/sysdeps/arm/fesetround.c
diff --git a/ports/sysdeps/arm/eabi/feupdateenv.c b/ports/sysdeps/arm/feupdateenv.c
index 98f265432..98f265432 100644
--- a/ports/sysdeps/arm/eabi/feupdateenv.c
+++ b/ports/sysdeps/arm/feupdateenv.c
diff --git a/ports/sysdeps/arm/eabi/fgetexcptflg.c b/ports/sysdeps/arm/fgetexcptflg.c
index 41661a2e2..41661a2e2 100644
--- a/ports/sysdeps/arm/eabi/fgetexcptflg.c
+++ b/ports/sysdeps/arm/fgetexcptflg.c
diff --git a/ports/sysdeps/arm/eabi/find_exidx.c b/ports/sysdeps/arm/find_exidx.c
index 12ade46d8..12ade46d8 100644
--- a/ports/sysdeps/arm/eabi/find_exidx.c
+++ b/ports/sysdeps/arm/find_exidx.c
diff --git a/ports/sysdeps/arm/eabi/fpu_control.h b/ports/sysdeps/arm/fpu_control.h
index 635bc7d4e..635bc7d4e 100644
--- a/ports/sysdeps/arm/eabi/fpu_control.h
+++ b/ports/sysdeps/arm/fpu_control.h
diff --git a/ports/sysdeps/arm/eabi/fraiseexcpt.c b/ports/sysdeps/arm/fraiseexcpt.c
index 0a4368839..0a4368839 100644
--- a/ports/sysdeps/arm/eabi/fraiseexcpt.c
+++ b/ports/sysdeps/arm/fraiseexcpt.c
diff --git a/ports/sysdeps/arm/eabi/fsetexcptflg.c b/ports/sysdeps/arm/fsetexcptflg.c
index bee51a96a..bee51a96a 100644
--- a/ports/sysdeps/arm/eabi/fsetexcptflg.c
+++ b/ports/sysdeps/arm/fsetexcptflg.c
diff --git a/ports/sysdeps/arm/eabi/ftestexcept.c b/ports/sysdeps/arm/ftestexcept.c
index 06817d2fe..06817d2fe 100644
--- a/ports/sysdeps/arm/eabi/ftestexcept.c
+++ b/ports/sysdeps/arm/ftestexcept.c
diff --git a/ports/sysdeps/arm/eabi/jmpbuf-offsets.h b/ports/sysdeps/arm/jmpbuf-offsets.h
index 642a9657d..642a9657d 100644
--- a/ports/sysdeps/arm/eabi/jmpbuf-offsets.h
+++ b/ports/sysdeps/arm/jmpbuf-offsets.h
diff --git a/ports/sysdeps/arm/eabi/machine-gmon.h b/ports/sysdeps/arm/machine-gmon.h
index 671d6b176..671d6b176 100644
--- a/ports/sysdeps/arm/eabi/machine-gmon.h
+++ b/ports/sysdeps/arm/machine-gmon.h
diff --git a/ports/sysdeps/arm/preconfigure b/ports/sysdeps/arm/preconfigure
index a4967004f..d98c167a9 100644
--- a/ports/sysdeps/arm/preconfigure
+++ b/ports/sysdeps/arm/preconfigure
@@ -7,7 +7,7 @@ arm*)
# Unfortunately it doesn't define any flags for implementations
# that you might pass to -mcpu or -mtune
# Note if you add patterns here you must ensure that
- # an appropriate directory exists in sysdeps/arm/eabi
+ # an appropriate directory exists in sysdeps/arm
archcppflag=`echo "" |
$CC $CFLAGS $CPPFLAGS -E -dM - |
grep __ARM_ARCH |
@@ -35,7 +35,7 @@ arm*)
;;
esac
- machine=arm/eabi/$machine
+ machine=arm/$machine
if [ "${CFLAGS+set}" != "set" ]; then
CFLAGS="-g -O2"
fi
diff --git a/ports/sysdeps/arm/eabi/rtld-global-offsets.sym b/ports/sysdeps/arm/rtld-global-offsets.sym
index ff4e97f2a..ff4e97f2a 100644
--- a/ports/sysdeps/arm/eabi/rtld-global-offsets.sym
+++ b/ports/sysdeps/arm/rtld-global-offsets.sym
diff --git a/ports/sysdeps/arm/eabi/setfpucw.c b/ports/sysdeps/arm/setfpucw.c
index d0cea32b9..d0cea32b9 100644
--- a/ports/sysdeps/arm/eabi/setfpucw.c
+++ b/ports/sysdeps/arm/setfpucw.c
diff --git a/ports/sysdeps/arm/eabi/setjmp.S b/ports/sysdeps/arm/setjmp.S
index 5e3f39cc7..5e3f39cc7 100644
--- a/ports/sysdeps/arm/eabi/setjmp.S
+++ b/ports/sysdeps/arm/setjmp.S
diff --git a/ports/sysdeps/arm/shlib-versions b/ports/sysdeps/arm/shlib-versions
index 491dd0adc..626d58bda 100644
--- a/ports/sysdeps/arm/shlib-versions
+++ b/ports/sysdeps/arm/shlib-versions
@@ -1,4 +1,3 @@
arm.*-.*-linux-gnueabi.* DEFAULT GLIBC_2.4
arm.*-.*-linux-gnueabi.* ld=ld-linux.so.3
-arm.*-.*-linux.* ld=ld-linux.so.2
diff --git a/ports/sysdeps/arm/start.S b/ports/sysdeps/arm/start.S
index a857d8b97..7f3de8c20 100644
--- a/ports/sysdeps/arm/start.S
+++ b/ports/sysdeps/arm/start.S
@@ -1,6 +1,5 @@
/* Startup code for ARM & ELF
- Copyright (C) 1995, 1996, 1997, 1998, 2001, 2002, 2005, 2008
- Free Software Foundation, Inc.
+ Copyright (C) 1995-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -58,14 +57,12 @@
NULL
*/
-#if defined(__ARM_EABI__)
/* Tag_ABI_align8_preserved: This code preserves 8-byte
alignment in any callee. */
.eabi_attribute 25, 1
/* Tag_ABI_align8_needed: This code may require 8-byte alignment from
the caller. */
.eabi_attribute 24, 1
-#endif
#if defined(__thumb2__)
.thumb
diff --git a/ports/sysdeps/arm/sysdep.h b/ports/sysdeps/arm/sysdep.h
index 6d15f798c..7800456f6 100644
--- a/ports/sysdeps/arm/sysdep.h
+++ b/ports/sysdeps/arm/sysdep.h
@@ -77,8 +77,8 @@
/* If compiled for profiling, call `mcount' at the start of each function. */
#ifdef PROF
-/* Call __gnu_mcount_nc if GCC >= 4.4 and abi = EABI. */
-#if __GNUC_PREREQ(4,4) && defined(__ARM_EABI__)
+/* Call __gnu_mcount_nc if GCC >= 4.4. */
+#if __GNUC_PREREQ(4,4)
#define CALL_MCOUNT \
str lr,[sp, #-4]!; \
cfi_adjust_cfa_offset (4); \
@@ -104,19 +104,17 @@
on this system, the asm identifier `syscall_error' intrudes on the
C name space. Make sure we use an innocuous name. */
#define syscall_error __syscall_error
-#if __GNUC_PREREQ(4,4) && defined(__ARM_EABI__)
+#if __GNUC_PREREQ(4,4)
#define mcount __gnu_mcount_nc
#else
#define mcount _mcount
#endif
-#if defined(__ARM_EABI__)
/* Tag_ABI_align8_preserved: This code preserves 8-byte
alignment in any callee. */
.eabi_attribute 25, 1
/* Tag_ABI_align8_needed: This code may require 8-byte alignment from
the caller. */
.eabi_attribute 24, 1
-#endif
#endif /* __ASSEMBLER__ */
diff --git a/ports/sysdeps/hppa/configure b/ports/sysdeps/hppa/configure
index 7441a3279..c47fb6d0a 100644
--- a/ports/sysdeps/hppa/configure
+++ b/ports/sysdeps/hppa/configure
@@ -113,3 +113,59 @@ cat >>confdefs.h <<_ACEOF
#define ASM_LINE_SEP $libc_cv_asm_line_sep
_ACEOF
+
+# Check for support of thread-local storage handling in assembler and
+# linker.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for hppa TLS support" >&5
+$as_echo_n "checking for hppa TLS support... " >&6; }
+if ${libc_cv_hppa_tls+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat > conftest.s <<\EOF
+; Setup tls data
+.section ".tdata","awT",@progbits
+foo: .data 32
+ .text
+; Test general dyanmic relocations
+test0:
+ addil LT'foo-$tls_gdidx$, %r19
+ ldo RT'foo-$tls_gdidx$(%r1), %r26
+ b __tls_get_addr
+ nop
+; Test local dynamic relocations
+test1:
+ addil LT'foo-$tls_ldidx$, %r19
+ b __tls_get_addr
+ ldo RT'foo-$tls_ldidx$(%r1), %r26
+ ldo RR'foo-$tls_dtpoff$(%r1), %r25
+ ; More variables can be loaded...
+; Test initial exec reloctiosn
+test2:
+ mfctl %cr27, %r26
+ addil LT'foo-$tls_ieoff$, %r19
+ ldw RT'foo-$tls_ieoff$(%r1), %r25
+ add %r26, %r25, %r24
+; Test local exec relocations
+test3:
+ mfctl %cr27, %r26
+ addil LR'foo-$tls_leoff$, %r26
+ ldo RR'foo-$tls_leoff$(%r1), %r25
+; Done all the TLS tests.
+EOF
+if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ libc_cv_hppa_tls=yes
+else
+ libc_cv_hppa_tls=no
+fi
+rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_hppa_tls" >&5
+$as_echo "$libc_cv_hppa_tls" >&6; }
+if test $libc_cv_hppa_tls = no; then
+ as_fn_error $? "the assembler must support TLS" "$LINENO" 5
+fi
diff --git a/ports/sysdeps/hppa/configure.in b/ports/sysdeps/hppa/configure.in
index 1ec417b94..57cb941be 100644
--- a/ports/sysdeps/hppa/configure.in
+++ b/ports/sysdeps/hppa/configure.in
@@ -19,3 +19,48 @@ else
fi
rm -f conftest*])
AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep)
+
+# Check for support of thread-local storage handling in assembler and
+# linker.
+AC_CACHE_CHECK(for hppa TLS support, libc_cv_hppa_tls, [dnl
+cat > conftest.s <<\EOF
+; Setup tls data
+.section ".tdata","awT",@progbits
+foo: .data 32
+ .text
+; Test general dyanmic relocations
+test0:
+ addil LT'foo-$tls_gdidx$, %r19
+ ldo RT'foo-$tls_gdidx$(%r1), %r26
+ b __tls_get_addr
+ nop
+; Test local dynamic relocations
+test1:
+ addil LT'foo-$tls_ldidx$, %r19
+ b __tls_get_addr
+ ldo RT'foo-$tls_ldidx$(%r1), %r26
+ ldo RR'foo-$tls_dtpoff$(%r1), %r25
+ ; More variables can be loaded...
+; Test initial exec reloctiosn
+test2:
+ mfctl %cr27, %r26
+ addil LT'foo-$tls_ieoff$, %r19
+ ldw RT'foo-$tls_ieoff$(%r1), %r25
+ add %r26, %r25, %r24
+; Test local exec relocations
+test3:
+ mfctl %cr27, %r26
+ addil LR'foo-$tls_leoff$, %r26
+ ldo RR'foo-$tls_leoff$(%r1), %r25
+; Done all the TLS tests.
+EOF
+dnl
+if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
+ libc_cv_hppa_tls=yes
+else
+ libc_cv_hppa_tls=no
+fi
+rm -f conftest*])
+if test $libc_cv_hppa_tls = no; then
+ AC_MSG_ERROR([the assembler must support TLS])
+fi
diff --git a/ports/sysdeps/hppa/crti.S b/ports/sysdeps/hppa/crti.S
new file mode 100644
index 000000000..4bb81bcac
--- /dev/null
+++ b/ports/sysdeps/hppa/crti.S
@@ -0,0 +1,80 @@
+/* Special .init and .fini section support for HPPA
+ Copyright (C) 2000-2012 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ In addition to the permissions in the GNU Lesser General Public
+ License, the Free Software Foundation gives you unlimited
+ permission to link the compiled version of this file with other
+ programs, and to distribute those programs without any restriction
+ coming from the use of this file. (The GNU Lesser General Public
+ License restrictions do apply in other respects; for example, they
+ cover modification of the file, and distribution when not linked
+ into another program.)
+
+ Note that people who make modified versions of this file are not
+ obligated to grant this special exception for their modified
+ versions; it is their choice whether to do so. The GNU Lesser
+ General Public License gives permission to release a modified
+ version without this exception; this exception also makes it
+ possible to release a modified version which carries forward this
+ exception.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library. If not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* crti.S puts a function prologue at the beginning of the .init and
+ .fini sections and defines global symbols for those addresses, so
+ they can be called as functions. The symbols _init and _fini are
+ magic and cause the linker to emit DT_INIT and DT_FINI. */
+
+#include <libc-symbols.h>
+#include <sysdep.h>
+
+#ifndef PREINIT_FUNCTION
+# define PREINIT_FUNCTION __gmon_start__
+#endif
+
+#ifndef PREINIT_FUNCTION_WEAK
+# define PREINIT_FUNCTION_WEAK 1
+#endif
+
+/* _init prologue. */
+ .section .init, "ax", %progbits
+ .align 4
+ .globl _init
+ .type _init,@function
+_init:
+ stw %rp,-20(%sp)
+ stwm %r4,64(%sp)
+ stw %r19,-32(%sp)
+#if PREINIT_FUNCTION_WEAK
+ bl PREINIT_FUNCTION,%rp
+ copy %r19,%r4 /* delay slot */
+#else
+ bl PREINIT_FUNCTION,%rp
+ copy %r19,%r4 /* delay slot */
+#endif
+ copy %r4,%r19
+
+/* _fini prologue. */
+ .section .fini,"ax",%progbits
+ .align 4
+ .globl _fini
+ .type _fini,@function
+_fini:
+ stw %rp,-20(%sp)
+ stwm %r4,64(%sp)
+ stw %r19,-32(%sp)
+ copy %r19,%r4
+
diff --git a/ports/sysdeps/hppa/crtn.S b/ports/sysdeps/hppa/crtn.S
new file mode 100644
index 000000000..679d739aa
--- /dev/null
+++ b/ports/sysdeps/hppa/crtn.S
@@ -0,0 +1,88 @@
+/* Special .init and .fini section support for HPPA
+ Copyright (C) 2000-2012 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ In addition to the permissions in the GNU Lesser General Public
+ License, the Free Software Foundation gives you unlimited
+ permission to link the compiled version of this file with other
+ programs, and to distribute those programs without any restriction
+ coming from the use of this file. (The GNU Lesser General Public
+ License restrictions do apply in other respects; for example, they
+ cover modification of the file, and distribution when not linked
+ into another program.)
+
+ Note that people who make modified versions of this file are not
+ obligated to grant this special exception for their modified
+ versions; it is their choice whether to do so. The GNU Lesser
+ General Public License gives permission to release a modified
+ version without this exception; this exception also makes it
+ possible to release a modified version which carries forward this
+ exception.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library. If not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+
+/* crtn.S puts function epilogues in the .init and .fini sections
+ corresponding to the prologues in crti.S. */
+
+/* Note that we cannot have a weak undefined __gmon_start__, because
+ that would require this to be PIC, and the linker is currently not
+ able to generate a proper procedure descriptor for _init. Sad but
+ true. Anyway, HPPA is one of those horrible architectures where
+ making the comparison and indirect call is quite expensive (see the
+ comment in sysdeps/generic/initfini.c). */
+ .text
+ .align 4
+ .weak __gmon_start__
+ .type __gmon_start__,@function
+__gmon_start__:
+ .proc
+ .callinfo
+ .entry
+ bv,n %r0(%r2)
+ .exit
+ .procend
+
+/* Here is the tail end of _init. We put __gmon_start before this so
+ that the assembler creates the .PARISC.unwind section for us, ie.
+ with the right attributes. */
+ .section .init, "ax", @progbits
+ ldw -84(%sp),%rp
+ copy %r4,%r19
+ bv %r0(%rp)
+_end_init:
+ ldwm -64(%sp),%r4
+
+/* Our very own unwind info, because the assembler can't handle
+ functions split into two or more pieces. */
+ .section .PARISC.unwind
+ .extern _init
+ .word _init, _end_init
+ .byte 0x08, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08
+
+/* Here is the tail end of _fini. */
+ .section .fini, "ax", @progbits
+ ldw -84(%sp),%rp
+ copy %r4,%r19
+ bv %r0(%rp)
+_end_fini:
+ ldwm -64(%sp),%r4
+
+ .section .PARISC.unwind
+ .extern _fini
+ .word _fini, _end_fini
+ .byte 0x08, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08
+
diff --git a/ports/sysdeps/hppa/dl-fptr.c b/ports/sysdeps/hppa/dl-fptr.c
new file mode 100644
index 000000000..82b25b542
--- /dev/null
+++ b/ports/sysdeps/hppa/dl-fptr.c
@@ -0,0 +1,337 @@
+/* Manage function descriptors. Generic version.
+ Copyright (C) 1999-2012 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <libintl.h>
+#include <unistd.h>
+#include <string.h>
+#include <sys/param.h>
+#include <sys/mman.h>
+#include <link.h>
+#include <ldsodefs.h>
+#include <elf/dynamic-link.h>
+#include <dl-fptr.h>
+#include <atomic.h>
+
+#ifndef ELF_MACHINE_BOOT_FPTR_TABLE_LEN
+/* ELF_MACHINE_BOOT_FPTR_TABLE_LEN should be greater than the number of
+ dynamic symbols in ld.so. */
+# define ELF_MACHINE_BOOT_FPTR_TABLE_LEN 256
+#endif
+
+#ifndef ELF_MACHINE_LOAD_ADDRESS
+# error "ELF_MACHINE_LOAD_ADDRESS is not defined."
+#endif
+
+#ifndef COMPARE_AND_SWAP
+# define COMPARE_AND_SWAP(ptr, old, new) \
+ (catomic_compare_and_exchange_bool_acq (ptr, new, old) == 0)
+#endif
+
+ElfW(Addr) _dl_boot_fptr_table [ELF_MACHINE_BOOT_FPTR_TABLE_LEN];
+
+static struct local
+ {
+ struct fdesc_table *root;
+ struct fdesc *free_list;
+ unsigned int npages; /* # of pages to allocate */
+ /* the next to members MUST be consecutive! */
+ struct fdesc_table boot_table;
+ struct fdesc boot_fdescs[1024];
+ }
+local =
+ {
+#ifdef SHARED
+ /* Address of .boot_table is not known until runtime. */
+ .root = 0,
+#else
+ .root = &local.boot_table,
+#endif
+ .npages = 2,
+ .boot_table =
+ {
+ .len = sizeof (local.boot_fdescs) / sizeof (local.boot_fdescs[0]),
+ .first_unused = 0
+ }
+ };
+
+/* Create a new fdesc table and return a pointer to the first fdesc
+ entry. The fdesc lock must have been acquired already. */
+
+static struct fdesc_table *
+new_fdesc_table (struct local *l, size_t *size)
+{
+ size_t old_npages = l->npages;
+ size_t new_npages = old_npages + old_npages;
+ struct fdesc_table *new_table;
+
+ /* If someone has just created a new table, we return NULL to tell
+ the caller to use the new table. */
+ if (! COMPARE_AND_SWAP (&l->npages, old_npages, new_npages))
+ return (struct fdesc_table *) NULL;
+
+ *size = old_npages * GLRO(dl_pagesize);
+ new_table = __mmap (NULL, *size,
+ PROT_READ | PROT_WRITE, MAP_ANON | MAP_PRIVATE, -1, 0);
+ if (new_table == MAP_FAILED)
+ _dl_signal_error (errno, NULL, NULL,
+ N_("cannot map pages for fdesc table"));
+
+ new_table->len
+ = (*size - sizeof (*new_table)) / sizeof (struct fdesc);
+ new_table->first_unused = 1;
+ return new_table;
+}
+
+/* Must call _dl_fptr_init before using any other function. */
+void
+_dl_fptr_init (void)
+{
+ struct local *l;
+
+ ELF_MACHINE_LOAD_ADDRESS (l, local);
+ l->root = &l->boot_table;
+}
+
+static ElfW(Addr)
+make_fdesc (ElfW(Addr) ip, ElfW(Addr) gp)
+{
+ struct fdesc *fdesc = NULL;
+ struct fdesc_table *root;
+ unsigned int old;
+ struct local *l;
+
+ ELF_MACHINE_LOAD_ADDRESS (l, local);
+
+ retry:
+ root = l->root;
+ while (1)
+ {
+ old = root->first_unused;
+ if (old >= root->len)
+ break;
+ else if (COMPARE_AND_SWAP (&root->first_unused, old, old + 1))
+ {
+ fdesc = &root->fdesc[old];
+ goto install;
+ }
+ }
+
+ if (l->free_list)
+ {
+ /* Get it from free-list. */
+ do
+ {
+ fdesc = l->free_list;
+ if (fdesc == NULL)
+ goto retry;
+ }
+ while (! COMPARE_AND_SWAP ((ElfW(Addr) *) &l->free_list,
+ (ElfW(Addr)) fdesc, fdesc->ip));
+ }
+ else
+ {
+ /* Create a new fdesc table. */
+ size_t size;
+ struct fdesc_table *new_table = new_fdesc_table (l, &size);
+
+ if (new_table == NULL)
+ goto retry;
+
+ new_table->next = root;
+ if (! COMPARE_AND_SWAP ((ElfW(Addr) *) &l->root,
+ (ElfW(Addr)) root,
+ (ElfW(Addr)) new_table))
+ {
+ /* Someone has just installed a new table. Return NULL to
+ tell the caller to use the new table. */
+ __munmap (new_table, size);
+ goto retry;
+ }
+
+ /* Note that the first entry was reserved while allocating the
+ memory for the new page. */
+ fdesc = &new_table->fdesc[0];
+ }
+
+ install:
+ fdesc->ip = ip;
+ fdesc->gp = gp;
+
+ return (ElfW(Addr)) fdesc;
+}
+
+
+static inline ElfW(Addr) * __attribute__ ((always_inline))
+make_fptr_table (struct link_map *map)
+{
+ const ElfW(Sym) *symtab
+ = (const void *) D_PTR (map, l_info[DT_SYMTAB]);
+ const char *strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
+ ElfW(Addr) *fptr_table;
+ size_t size;
+ size_t len;
+
+ /* XXX Apparently the only way to find out the size of the dynamic
+ symbol section is to assume that the string table follows right
+ afterwards... */
+ len = ((strtab - (char *) symtab)
+ / map->l_info[DT_SYMENT]->d_un.d_val);
+ size = ((len * sizeof (fptr_table[0]) + GLRO(dl_pagesize) - 1)
+ & -GLRO(dl_pagesize));
+ /* XXX We don't support here in the moment systems without MAP_ANON.
+ There probably are none for IA-64. In case this is proven wrong
+ we will have to open /dev/null here and use the file descriptor
+ instead of the hard-coded -1. */
+ fptr_table = __mmap (NULL, size,
+ PROT_READ | PROT_WRITE, MAP_ANON | MAP_PRIVATE,
+ -1, 0);
+ if (fptr_table == MAP_FAILED)
+ _dl_signal_error (errno, NULL, NULL,
+ N_("cannot map pages for fptr table"));
+
+ if (COMPARE_AND_SWAP ((ElfW(Addr) *) &map->l_mach.fptr_table,
+ (ElfW(Addr)) NULL, (ElfW(Addr)) fptr_table))
+ map->l_mach.fptr_table_len = len;
+ else
+ __munmap (fptr_table, len * sizeof (fptr_table[0]));
+
+ return map->l_mach.fptr_table;
+}
+
+
+ElfW(Addr)
+_dl_make_fptr (struct link_map *map, const ElfW(Sym) *sym,
+ ElfW(Addr) ip)
+{
+ ElfW(Addr) *ftab = map->l_mach.fptr_table;
+ const ElfW(Sym) *symtab;
+ Elf_Symndx symidx;
+ struct local *l;
+
+ if (__builtin_expect (ftab == NULL, 0))
+ ftab = make_fptr_table (map);
+
+ symtab = (const void *) D_PTR (map, l_info[DT_SYMTAB]);
+ symidx = sym - symtab;
+
+ if (symidx >= map->l_mach.fptr_table_len)
+ _dl_signal_error (0, NULL, NULL,
+ N_("internal error: symidx out of range of fptr table"));
+
+ while (ftab[symidx] == 0)
+ {
+ /* GOT has already been relocated in elf_get_dynamic_info -
+ don't try to relocate it again. */
+ ElfW(Addr) fdesc
+ = make_fdesc (ip, map->l_info[DT_PLTGOT]->d_un.d_ptr);
+
+ if (__builtin_expect (COMPARE_AND_SWAP (&ftab[symidx], (ElfW(Addr)) NULL,
+ fdesc), 1))
+ {
+ /* Noone has updated the entry and the new function
+ descriptor has been installed. */
+#if 0
+ const char *strtab
+ = (const void *) D_PTR (map, l_info[DT_STRTAB]);
+
+ ELF_MACHINE_LOAD_ADDRESS (l, local);
+ if (l->root != &l->boot_table
+ || l->boot_table.first_unused > 20)
+ _dl_debug_printf ("created fdesc symbol `%s' at %lx\n",
+ strtab + sym->st_name, ftab[symidx]);
+#endif
+ break;
+ }
+ else
+ {
+ /* We created a duplicated function descriptor. We put it on
+ free-list. */
+ struct fdesc *f = (struct fdesc *) fdesc;
+
+ ELF_MACHINE_LOAD_ADDRESS (l, local);
+
+ do
+ f->ip = (ElfW(Addr)) l->free_list;
+ while (! COMPARE_AND_SWAP ((ElfW(Addr) *) &l->free_list,
+ f->ip, fdesc));
+ }
+ }
+
+ return ftab[symidx];
+}
+
+
+void
+_dl_unmap (struct link_map *map)
+{
+ ElfW(Addr) *ftab = map->l_mach.fptr_table;
+ struct fdesc *head = NULL, *tail = NULL;
+ size_t i;
+
+ __munmap ((void *) map->l_map_start,
+ map->l_map_end - map->l_map_start);
+
+ if (ftab == NULL)
+ return;
+
+ /* String together the fdesc structures that are being freed. */
+ for (i = 0; i < map->l_mach.fptr_table_len; ++i)
+ {
+ if (ftab[i])
+ {
+ *(struct fdesc **) ftab[i] = head;
+ head = (struct fdesc *) ftab[i];
+ if (tail == NULL)
+ tail = head;
+ }
+ }
+
+ /* Prepend the new list to the free_list: */
+ if (tail)
+ do
+ tail->ip = (ElfW(Addr)) local.free_list;
+ while (! COMPARE_AND_SWAP ((ElfW(Addr) *) &local.free_list,
+ tail->ip, (ElfW(Addr)) head));
+
+ __munmap (ftab, (map->l_mach.fptr_table_len
+ * sizeof (map->l_mach.fptr_table[0])));
+
+ map->l_mach.fptr_table = NULL;
+}
+
+
+ElfW(Addr)
+_dl_lookup_address (const void *address)
+{
+ ElfW(Addr) addr = (ElfW(Addr)) address;
+ struct fdesc_table *t;
+ unsigned long int i;
+
+ for (t = local.root; t != NULL; t = t->next)
+ {
+ i = (struct fdesc *) addr - &t->fdesc[0];
+ if (i < t->first_unused && addr == (ElfW(Addr)) &t->fdesc[i])
+ {
+ addr = t->fdesc[i].ip;
+ break;
+ }
+ }
+
+ return addr;
+}
diff --git a/ports/sysdeps/hppa/dl-fptr.h b/ports/sysdeps/hppa/dl-fptr.h
index 9f998651a..ae504de08 100644
--- a/ports/sysdeps/hppa/dl-fptr.h
+++ b/ports/sysdeps/hppa/dl-fptr.h
@@ -1,5 +1,5 @@
/* Function descriptors. HPPA version.
- Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2003-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -21,6 +21,9 @@
#include <sysdeps/generic/dl-fptr.h>
+/* Initialize function pointer code. Call before relocation processing. */
+extern void _dl_fptr_init (void);
+
/* There are currently 33 dynamic symbols in ld.so.
ELF_MACHINE_BOOT_FPTR_TABLE_LEN needs to be at least that big. */
#define ELF_MACHINE_BOOT_FPTR_TABLE_LEN 64
diff --git a/ports/sysdeps/hppa/dl-irel.h b/ports/sysdeps/hppa/dl-irel.h
new file mode 100644
index 000000000..90928470b
--- /dev/null
+++ b/ports/sysdeps/hppa/dl-irel.h
@@ -0,0 +1,47 @@
+/* Machine-dependent ELF indirect relocation inline functions.
+ HP-PARISC version.
+ Copyright (C) 2012 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _DL_IREL_H
+#define _DL_IREL_H
+
+#include <stdio.h>
+#include <unistd.h>
+#include <dl-fptr.h>
+
+#define ELF_MACHINE_IREL 1
+
+/* Implement enough to get the build going again. */
+#warning "NEED STT_GNU_IFUNC IMPLEMENTATION"
+
+static inline struct fdesc
+__attribute ((always_inline))
+elf_ifunc_invoke (uintptr_t addr)
+{
+ return ((struct fdesc) {0, 0});
+}
+
+static inline void
+__attribute ((always_inline))
+elf_irel (const Elf32_Rel *reloc)
+{
+ return;
+}
+
+#endif /* dl-irel.h */
diff --git a/ports/sysdeps/hppa/dl-machine.h b/ports/sysdeps/hppa/dl-machine.h
index b63e36ee6..1bee330f8 100644
--- a/ports/sysdeps/hppa/dl-machine.h
+++ b/ports/sysdeps/hppa/dl-machine.h
@@ -1,6 +1,5 @@
/* Machine-dependent ELF dynamic relocation inline functions. PA-RISC version.
- Copyright (C) 1995-1997,1999-2003,2011
- Free Software Foundation, Inc.
+ Copyright (C) 1995-2012 Free Software Foundation, Inc.
Contributed by David Huggins-Daines <dhd@debian.org>
This file is part of the GNU C Library.
@@ -63,7 +62,8 @@ __hppa_init_bootstrap_fdesc_table (struct link_map *map)
}
#define ELF_MACHINE_BEFORE_RTLD_RELOC(dynamic_info) \
- __hppa_init_bootstrap_fdesc_table (&bootstrap_map);
+ __hppa_init_bootstrap_fdesc_table (&bootstrap_map); \
+ _dl_fptr_init();
/* Return nonzero iff ELF header is compatible with the running host. */
static inline int
diff --git a/ports/sysdeps/hppa/elf/configure b/ports/sysdeps/hppa/elf/configure
deleted file mode 100644
index d61f35366..000000000
--- a/ports/sysdeps/hppa/elf/configure
+++ /dev/null
@@ -1,140 +0,0 @@
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
- return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
- set +e
- as_fn_set_status $1
- exit $1
-} # as_fn_exit
-if expr a : '\(a\)' >/dev/null 2>&1 &&
- test "X`expr 00001 : '.*\(...\)'`" = X001; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
- as_basename=basename
-else
- as_basename=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
- X"$0" : 'X\(//\)$' \| \
- X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
- sed '/^.*\/\([^/][^/]*\)\/*$/{
- s//\1/
- q
- }
- /^X\/\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\/\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
-
-
- as_lineno_1=$LINENO as_lineno_1a=$LINENO
- as_lineno_2=$LINENO as_lineno_2a=$LINENO
- eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
- test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
- # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
- sed -n '
- p
- /[$]LINENO/=
- ' <$as_myself |
- sed '
- s/[$]LINENO.*/&-/
- t lineno
- b
- :lineno
- N
- :loop
- s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
- t loop
- s/-\n.*//
- ' >$as_me.lineno &&
- chmod +x "$as_me.lineno" ||
- { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
-
- # Don't try to exec as it changes $[0], causing all sort of problems
- # (the dirname of $[0] is not the place where we might find the
- # original and so on. Autoconf is especially sensitive to this).
- . "./$as_me.lineno"
- # Exit status is that of the last command.
- exit
-}
-
-# This file is generated from configure.in by Autoconf. DO NOT EDIT!
- # Local configure fragment for sysdeps/hppa/elf.
-
-# Check for support of thread-local storage handling in assembler and
-# linker.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for hppa TLS support" >&5
-$as_echo_n "checking for hppa TLS support... " >&6; }
-if ${libc_cv_hppa_tls+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat > conftest.s <<\EOF
-; Setup tls data
-.section ".tdata","awT",@progbits
-foo: .data 32
- .text
-; Test general dyanmic relocations
-test0:
- addil LT'foo-$tls_gdidx$, %r19
- ldo RT'foo-$tls_gdidx$(%r1), %r26
- b __tls_get_addr
- nop
-; Test local dynamic relocations
-test1:
- addil LT'foo-$tls_ldidx$, %r19
- b __tls_get_addr
- ldo RT'foo-$tls_ldidx$(%r1), %r26
- ldo RR'foo-$tls_dtpoff$(%r1), %r25
- ; More variables can be loaded...
-; Test initial exec reloctiosn
-test2:
- mfctl %cr27, %r26
- addil LT'foo-$tls_ieoff$, %r19
- ldw RT'foo-$tls_ieoff$(%r1), %r25
- add %r26, %r25, %r24
-; Test local exec relocations
-test3:
- mfctl %cr27, %r26
- addil LR'foo-$tls_leoff$, %r26
- ldo RR'foo-$tls_leoff$(%r1), %r25
-; Done all the TLS tests.
-EOF
-if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }; then
- libc_cv_hppa_tls=yes
-else
- libc_cv_hppa_tls=no
-fi
-rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_hppa_tls" >&5
-$as_echo "$libc_cv_hppa_tls" >&6; }
-if test $libc_cv_hppa_tls = no; then
- as_fn_error $? "the assembler must support TLS" "$LINENO" 5
-fi
diff --git a/ports/sysdeps/hppa/elf/configure.in b/ports/sysdeps/hppa/elf/configure.in
deleted file mode 100644
index e31c880c1..000000000
--- a/ports/sysdeps/hppa/elf/configure.in
+++ /dev/null
@@ -1,47 +0,0 @@
-GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
-# Local configure fragment for sysdeps/hppa/elf.
-
-# Check for support of thread-local storage handling in assembler and
-# linker.
-AC_CACHE_CHECK(for hppa TLS support, libc_cv_hppa_tls, [dnl
-cat > conftest.s <<\EOF
-; Setup tls data
-.section ".tdata","awT",@progbits
-foo: .data 32
- .text
-; Test general dyanmic relocations
-test0:
- addil LT'foo-$tls_gdidx$, %r19
- ldo RT'foo-$tls_gdidx$(%r1), %r26
- b __tls_get_addr
- nop
-; Test local dynamic relocations
-test1:
- addil LT'foo-$tls_ldidx$, %r19
- b __tls_get_addr
- ldo RT'foo-$tls_ldidx$(%r1), %r26
- ldo RR'foo-$tls_dtpoff$(%r1), %r25
- ; More variables can be loaded...
-; Test initial exec reloctiosn
-test2:
- mfctl %cr27, %r26
- addil LT'foo-$tls_ieoff$, %r19
- ldw RT'foo-$tls_ieoff$(%r1), %r25
- add %r26, %r25, %r24
-; Test local exec relocations
-test3:
- mfctl %cr27, %r26
- addil LR'foo-$tls_leoff$, %r26
- ldo RR'foo-$tls_leoff$(%r1), %r25
-; Done all the TLS tests.
-EOF
-dnl
-if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
- libc_cv_hppa_tls=yes
-else
- libc_cv_hppa_tls=no
-fi
-rm -f conftest*])
-if test $libc_cv_hppa_tls = no; then
- AC_MSG_ERROR([the assembler must support TLS])
-fi
diff --git a/ports/sysdeps/hppa/elf/initfini.c b/ports/sysdeps/hppa/elf/initfini.c
deleted file mode 100644
index 90964f504..000000000
--- a/ports/sysdeps/hppa/elf/initfini.c
+++ /dev/null
@@ -1,138 +0,0 @@
-/* Special .init and .fini section support for HPPA
- Copyright (C) 2000, 2002 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file with other
- programs, and to distribute those programs without any restriction
- coming from the use of this file. (The GNU Lesser General Public
- License restrictions do apply in other respects; for example, they
- cover modification of the file, and distribution when not linked
- into another program.)
-
- Note that people who make modified versions of this file are not
- obligated to grant this special exception for their modified
- versions; it is their choice whether to do so. The GNU Lesser
- General Public License gives permission to release a modified
- version without this exception; this exception also makes it
- possible to release a modified version which carries forward this
- exception.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library. If not, see
- <http://www.gnu.org/licenses/>. */
-
-/* This file is compiled into assembly code which is then munged by a sed
- script into two files: crti.s and crtn.s.
-
- * crti.s puts a function prologue at the beginning of the
- .init and .fini sections and defines global symbols for
- those addresses, so they can be called as functions.
-
- * crtn.s puts the corresponding function epilogues
- in the .init and .fini sections. */
-
-/* If we use the standard C version, the linkage table pointer won't
- be properly preserved due to the splitting up of function prologues
- and epilogues. Therefore we write these in assembly to make sure
- they do the right thing.
-
- Note that we cannot have a weak undefined __gmon_start__, because
- that would require this to be PIC, and the linker is currently not
- able to generate a proper procedure descriptor for _init. Sad but
- true. Anyway, HPPA is one of those horrible architectures where
- making the comparison and indirect call is quite expensive (see the
- comment in sysdeps/generic/initfini.c). */
-
-__asm__ ("\
-\n\
-#include \"defs.h\"\n\
-\n\
-/*@HEADER_ENDS*/\n\
-\n\
-/*@_init_PROLOG_BEGINS*/\n\
- .section .init\n\
- .align 4\n\
- .globl _init\n\
- .type _init,@function\n\
-_init:\n\
- stw %rp,-20(%sp)\n\
- stwm %r4,64(%sp)\n\
- stw %r19,-32(%sp)\n\
- bl __gmon_start__,%rp\n\
- copy %r19,%r4 /* delay slot */\n\
- copy %r4,%r19\n\
-/*@_init_PROLOG_ENDS*/\n\
-\n\
-/*@_init_EPILOG_BEGINS*/\n\
- .text\n\
- .align 4\n\
- .weak __gmon_start__\n\
- .type __gmon_start__,@function\n\
-__gmon_start__:\n\
- .proc\n\
- .callinfo\n\
- .entry\n\
- bv,n %r0(%r2)\n\
- .exit\n\
- .procend\n\
-\n\
-/* Here is the tail end of _init. We put __gmon_start before this so\n\
- that the assembler creates the .PARISC.unwind section for us, ie.\n\
- with the right attributes. */\n\
- .section .init\n\
- ldw -84(%sp),%rp\n\
- copy %r4,%r19\n\
- bv %r0(%rp)\n\
-_end_init:\n\
- ldwm -64(%sp),%r4\n\
-\n\
-/* Our very own unwind info, because the assembler can't handle\n\
- functions split into two or more pieces. */\n\
- .section .PARISC.unwind\n\
- .extern _init\n\
- .word _init, _end_init\n\
- .byte 0x08, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08\n\
-\n\
-/*@_init_EPILOG_ENDS*/\n\
-\n\
-/*@_fini_PROLOG_BEGINS*/\n\
- .section .fini\n\
- .align 4\n\
- .globl _fini\n\
- .type _fini,@function\n\
-_fini:\n\
- stw %rp,-20(%sp)\n\
- stwm %r4,64(%sp)\n\
- stw %r19,-32(%sp)\n\
- copy %r19,%r4\n\
-/*@_fini_PROLOG_ENDS*/\n\
-\n\
-/*@_fini_EPILOG_BEGINS*/\n\
- .section .fini\n\
- ldw -84(%sp),%rp\n\
- copy %r4,%r19\n\
- bv %r0(%rp)\n\
-_end_fini:\n\
- ldwm -64(%sp),%r4\n\
-\n\
- .section .PARISC.unwind\n\
- .extern _fini\n\
- .word _fini, _end_fini\n\
- .byte 0x08, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08\n\
-\n\
-/*@_fini_EPILOG_ENDS*/\n\
-\n\
-/*@TRAILER_BEGINS*/\
-");
diff --git a/ports/sysdeps/hppa/elf/entry.h b/ports/sysdeps/hppa/entry.h
index b024db2be..b024db2be 100644
--- a/ports/sysdeps/hppa/elf/entry.h
+++ b/ports/sysdeps/hppa/entry.h
diff --git a/ports/sysdeps/hppa/elf/start.S b/ports/sysdeps/hppa/start.S
index 97196bd52..97196bd52 100644
--- a/ports/sysdeps/hppa/elf/start.S
+++ b/ports/sysdeps/hppa/start.S
diff --git a/ports/sysdeps/m68k/m680x0/fpu/s_ilogb.c b/ports/sysdeps/m68k/m680x0/fpu/e_ilogb.c
index ab4438aea..41c597a01 100644
--- a/ports/sysdeps/m68k/m680x0/fpu/s_ilogb.c
+++ b/ports/sysdeps/m68k/m680x0/fpu/e_ilogb.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -30,7 +30,7 @@
#define m81(func) __m81_u(s(func))
int
-s(__ilogb) (float_type x)
+s(__ieee754_ilogb) (float_type x)
{
float_type result;
unsigned long x_cond;
@@ -45,6 +45,3 @@ s(__ilogb) (float_type x)
__asm ("fgetexp%.x %1, %0" : "=f" (result) : "f" (x));
return (int) result;
}
-
-#define weak_aliasx(a,b) weak_alias(a,b)
-weak_aliasx (s(__ilogb), s(ilogb))
diff --git a/ports/sysdeps/m68k/m680x0/fpu/s_ilogbf.c b/ports/sysdeps/m68k/m680x0/fpu/e_ilogbf.c
index 4031c42ff..34a8cd28e 100644
--- a/ports/sysdeps/m68k/m680x0/fpu/s_ilogbf.c
+++ b/ports/sysdeps/m68k/m680x0/fpu/e_ilogbf.c
@@ -1,3 +1,3 @@
#define SUFF f
#define float_type float
-#include <s_ilogb.c>
+#include <e_ilogb.c>
diff --git a/ports/sysdeps/m68k/m680x0/fpu/s_ilogbl.c b/ports/sysdeps/m68k/m680x0/fpu/e_ilogbl.c
index 9c55a115e..b0e13af6b 100644
--- a/ports/sysdeps/m68k/m680x0/fpu/s_ilogbl.c
+++ b/ports/sysdeps/m68k/m680x0/fpu/e_ilogbl.c
@@ -1,3 +1,3 @@
#define SUFF l
#define float_type long double
-#include <s_ilogb.c>
+#include <e_ilogb.c>
diff --git a/ports/sysdeps/m68k/m680x0/fpu/libm-test-ulps b/ports/sysdeps/m68k/m680x0/fpu/libm-test-ulps
index b153ba9be..9344b512b 100644
--- a/ports/sysdeps/m68k/m680x0/fpu/libm-test-ulps
+++ b/ports/sysdeps/m68k/m680x0/fpu/libm-test-ulps
@@ -876,12 +876,39 @@ idouble: 1
ildouble: 2
ldouble: 2
Test "Imaginary part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
+float: 1
+ifloat: 1
ildouble: 1
ldouble: 1
Test "Real part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
ildouble: 1
ldouble: 1
Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
+float: 1
+ifloat: 1
+ildouble: 2
+ldouble: 2
+Test "Real part of: ctan (0x1p1023 + 1 i) == -0.2254627924997545057926782581695274244229 + 0.8786063118883068695462540226219865087189 i":
+ildouble: 1
+ldouble: 1
+Test "Real part of: ctan (0x1p127 + 1 i) == 0.2446359391192790896381501310437708987204 + 0.9101334047676183761532873794426475906201 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Imaginary part of: ctan (0x1p127 + 1 i) == 0.2446359391192790896381501310437708987204 + 0.9101334047676183761532873794426475906201 i":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: ctan (0x1p16383 + 1 i) == 0.1608598776370396607204448234354670036772 + 0.8133818522051542536316746743877629761488 i":
+ildouble: 1
+ldouble: 1
+Test "Real part of: ctan (0x3.243f6cp-1 + 0 i) == -2.287733242885645987394874673945769518150e7 + 0.0 i":
+float: 1
+ifloat: 1
+Test "Real part of: ctan (1 + 45 i) == 1.490158918874345552942703234806348520895e-39 + 1.000000000000000000000000000000000000001 i":
+ildouble: 1
+ldouble: 1
+Test "Real part of: ctan (1 + 47 i) == 2.729321264492904590777293425576722354636e-41 + 1.0 i":
ildouble: 2
ldouble: 2
@@ -890,11 +917,21 @@ Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686
ildouble: 1
ldouble: 1
Test "Imaginary part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
+float: 1
+ifloat: 1
ildouble: 1
ldouble: 1
+Test "Imaginary part of: ctanh (0 + 0x3.243f6cp-1 i) == 0.0 - 2.287733242885645987394874673945769518150e7 i":
+float: 1
+ifloat: 1
Test "Imaginary part of: ctanh (0 + pi/4 i) == 0.0 + 1.0 i":
double: 1
idouble: 1
+ildouble: 1
+ldouble: 1
+Test "Real part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i":
+float: 1
+ifloat: 1
Test "Imaginary part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i":
double: 1
float: 1
@@ -902,6 +939,26 @@ idouble: 1
ifloat: 1
ildouble: 1
ldouble: 1
+Test "Imaginary part of: ctanh (1 + 0x1p1023 i) == 0.8786063118883068695462540226219865087189 - 0.2254627924997545057926782581695274244229 i":
+ildouble: 1
+ldouble: 1
+Test "Real part of: ctanh (1 + 0x1p127 i) == 0.9101334047676183761532873794426475906201 + 0.2446359391192790896381501310437708987204 i":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: ctanh (1 + 0x1p127 i) == 0.9101334047676183761532873794426475906201 + 0.2446359391192790896381501310437708987204 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Real part of: ctanh (1 + 0x1p16383 i) == 0.8133818522051542536316746743877629761488 + 0.1608598776370396607204448234354670036772 i":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: ctanh (45 + 1 i) == 1.000000000000000000000000000000000000001 + 1.490158918874345552942703234806348520895e-39 i":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: ctanh (47 + 1 i) == 1.0 + 2.729321264492904590777293425576722354636e-41 i":
+ildouble: 2
+ldouble: 2
# erfc
Test "erfc (0.75) == 0.288844366346484868401062165408589223":
@@ -2099,15 +2156,21 @@ ldouble: 1
Function: Real part of "ctan":
double: 1
+float: 1
idouble: 1
+ifloat: 1
ildouble: 2
ldouble: 2
Function: Imaginary part of "ctan":
+float: 1
+ifloat: 1
ildouble: 1
ldouble: 1
Function: Real part of "ctanh":
+float: 1
+ifloat: 1
ildouble: 1
ldouble: 1
@@ -2116,8 +2179,8 @@ double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
+ildouble: 2
+ldouble: 2
Function: "erfc":
float: 1
diff --git a/ports/sysdeps/unix/sysv/linux/arm/Makefile b/ports/sysdeps/unix/sysv/linux/arm/Makefile
index a9817368a..fb1e3a5b9 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/Makefile
+++ b/ports/sysdeps/unix/sysv/linux/arm/Makefile
@@ -1,4 +1,9 @@
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
@@ -24,3 +29,39 @@ endif
ifeq ($(subdir),stdlib)
gen-as-const-headers += ucontext_i.sym
endif
+
+# Add a syscall function to each library that needs one.
+
+ifeq ($(subdir),rt)
+librt-sysdep_routines += libc-do-syscall
+librt-shared-only-routines += libc-do-syscall
+endif
+
+ifeq ($(subdir),nptl)
+libpthread-sysdep_routines += libc-do-syscall
+libpthread-shared-only-routines += libc-do-syscall
+endif
+
+ifeq ($(subdir),resolv)
+libanl-sysdep_routines += libc-do-syscall
+libanl-shared-only-routines += libc-do-syscall
+endif
+
+ifeq ($(subdir),csu)
+sysdep_routines += libc-do-syscall
+endif
+
+ifeq ($(subdir),nscd)
+nscd-modules += libc-do-syscall
+endif
+
+ifeq ($(subdir),nss)
+libnss_db-sysdep_routines += libc-do-syscall
+libnss_db-shared-only-routines += libc-do-syscall
+endif
+
+ifeq ($(subdir),posix)
+LDFLAGS-tst-rfc3484 += $(common-objpfx)csu/libc-do-syscall.o
+LDFLAGS-tst-rfc3484-2 += $(common-objpfx)csu/libc-do-syscall.o
+LDFLAGS-tst-rfc3484-3 += $(common-objpfx)csu/libc-do-syscall.o
+endif
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/____longjmp_chk.S b/ports/sysdeps/unix/sysv/linux/arm/____longjmp_chk.S
index 8ec41521c..8ec41521c 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/____longjmp_chk.S
+++ b/ports/sysdeps/unix/sysv/linux/arm/____longjmp_chk.S
diff --git a/ports/sysdeps/unix/sysv/linux/arm/clone.S b/ports/sysdeps/unix/sysv/linux/arm/clone.S
index 8da41171f..ec042fff9 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/clone.S
+++ b/ports/sysdeps/unix/sysv/linux/arm/clone.S
@@ -1,5 +1,4 @@
-/* Copyright (C) 1996, 1997, 1998, 1999, 2002, 2005, 2008, 2009, 2010
- Free Software Foundation, Inc.
+/* Copyright (C) 1996-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Pat Beirne <patb@corelcomputer.com>
@@ -49,33 +48,19 @@ ENTRY(__clone)
mov ip, r2
#endif
@ new sp is already in r1
-#ifdef __ARM_EABI__
stmfd sp!, {r4, r7}
cfi_adjust_cfa_offset (8)
cfi_rel_offset (r4, 0)
cfi_rel_offset (r7, 4)
-#else
- str r4, [sp, #-8]!
- cfi_adjust_cfa_offset (8)
- cfi_rel_offset (r4, 0)
-#endif
ldr r2, [sp, #8]
ldr r3, [sp, #12]
ldr r4, [sp, #16]
-#ifdef __ARM_EABI__
ldr r7, =SYS_ify(clone)
swi 0x0
-#else
- swi SYS_ify(clone)
-#endif
cfi_endproc
cmp r0, #0
beq 1f
-#ifdef __ARM_EABI__
ldmfd sp!, {r4, r7}
-#else
- ldr r4, [sp], #8
-#endif
blt PLTJMP(C_SYMBOL_NAME(__syscall_error))
RETINSTR(, lr)
@@ -94,12 +79,8 @@ PSEUDO_END (__clone)
mov r1, r0
tst ip, #CLONE_VM
movne r0, #-1
-#ifdef __ARM_EABI__
ldr r7, =SYS_ify(getpid)
swieq 0x0
-#else
- swieq SYS_ify(getpid)
-#endif
str r0, [r1, #PID_OFFSET]
str r0, [r1, #TID_OFFSET]
3:
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/configure b/ports/sysdeps/unix/sysv/linux/arm/configure
index c7e20cfdc..5b5f4c993 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/configure
+++ b/ports/sysdeps/unix/sysv/linux/arm/configure
@@ -1,5 +1,5 @@
# This file is generated from configure.in by Autoconf. DO NOT EDIT!
- # Local configure fragment for sysdeps/unix/sysv/linux/arm/eabi.
+ # Local configure fragment for sysdeps/unix/sysv/linux/arm.
arch_minimum_kernel=2.6.16
libc_cv_gcc_unwind_find_fde=no
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/configure.in b/ports/sysdeps/unix/sysv/linux/arm/configure.in
index cc0e9b5bd..b57c4e37b 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/configure.in
+++ b/ports/sysdeps/unix/sysv/linux/arm/configure.in
@@ -1,5 +1,5 @@
GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
-# Local configure fragment for sysdeps/unix/sysv/linux/arm/eabi.
+# Local configure fragment for sysdeps/unix/sysv/linux/arm.
arch_minimum_kernel=2.6.16
libc_cv_gcc_unwind_find_fde=no
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/Makefile b/ports/sysdeps/unix/sysv/linux/arm/eabi/Makefile
deleted file mode 100644
index b7baae9e9..000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/Makefile
+++ /dev/null
@@ -1,42 +0,0 @@
-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
-endif
-
-# Add a syscall function to each library that needs one.
-
-ifeq ($(subdir),rt)
-librt-sysdep_routines += libc-do-syscall
-librt-shared-only-routines += libc-do-syscall
-endif
-
-ifeq ($(subdir),nptl)
-libpthread-sysdep_routines += libc-do-syscall
-libpthread-shared-only-routines += libc-do-syscall
-endif
-
-ifeq ($(subdir),resolv)
-libanl-sysdep_routines += libc-do-syscall
-libanl-shared-only-routines += libc-do-syscall
-endif
-
-ifeq ($(subdir),csu)
-sysdep_routines += libc-do-syscall
-endif
-
-ifeq ($(subdir),nscd)
-nscd-modules += libc-do-syscall
-endif
-
-ifeq ($(subdir),nss)
-libnss_db-sysdep_routines += libc-do-syscall
-libnss_db-shared-only-routines += libc-do-syscall
-endif
-
-ifeq ($(subdir),posix)
-LDFLAGS-tst-rfc3484 += $(common-objpfx)csu/libc-do-syscall.o
-LDFLAGS-tst-rfc3484-2 += $(common-objpfx)csu/libc-do-syscall.o
-LDFLAGS-tst-rfc3484-3 += $(common-objpfx)csu/libc-do-syscall.o
-endif
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/syscalls.list b/ports/sysdeps/unix/sysv/linux/arm/eabi/syscalls.list
deleted file mode 100644
index e89690247..000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/syscalls.list
+++ /dev/null
@@ -1,32 +0,0 @@
-# File name Caller Syscall name # args Strong name Weak names
-
-# Semaphore and shm system calls. msgctl, shmctl, and semctl have C
-# wrappers (to set __IPC_64).
-msgget - msgget i:ii __msgget msgget
-msgrcv - msgrcv Ci:ibnii __msgrcv msgrcv
-msgsnd - msgsnd Ci:ibni __msgsnd msgsnd
-shmat - shmat i:ipi __shmat shmat
-shmdt - shmdt i:s __shmdt shmdt
-shmget - shmget i:iii __shmget shmget
-semop - semop i:ipi __semop semop
-semtimedop - semtimedop i:ipip semtimedop
-semget - semget i:iii __semget semget
-
-# proper socket implementations:
-accept - accept Ci:iBN __libc_accept __accept accept
-bind - bind i:ipi __bind bind
-connect - connect Ci:ipi __libc_connect __connect_internal __connect connect
-getpeername - getpeername i:ipp __getpeername getpeername
-getsockname - getsockname i:ipp __getsockname getsockname
-getsockopt - getsockopt i:iiiBN __getsockopt getsockopt
-listen - listen i:ii __listen listen
-recv - recv Ci:ibni __libc_recv __recv recv
-recvfrom - recvfrom Ci:ibniBN __libc_recvfrom __recvfrom recvfrom
-recvmsg - recvmsg Ci:ipi __libc_recvmsg __recvmsg recvmsg
-send - send Ci:ibni __libc_send __send send
-sendmsg - sendmsg Ci:ipi __libc_sendmsg __sendmsg sendmsg
-sendto - sendto Ci:ibnibn __libc_sendto __sendto sendto
-setsockopt - setsockopt i:iiibn __setsockopt setsockopt
-shutdown - shutdown i:ii __shutdown shutdown
-socket - socket i:iii __socket socket
-socketpair - socketpair i:iiif __socketpair socketpair
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/sysdep.h b/ports/sysdeps/unix/sysv/linux/arm/eabi/sysdep.h
deleted file mode 100644
index 408142c1a..000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/sysdep.h
+++ /dev/null
@@ -1,199 +0,0 @@
-/* Copyright (C) 2005, 2006, 2007, 2009
- Free Software Foundation, Inc.
-
- This file is part of the GNU C Library.
-
- Contributed by Daniel Jacobowitz <dan@codesourcery.com>, Oct 2005.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library. If not, see
- <http://www.gnu.org/licenses/>. */
-
-#ifndef _LINUX_ARM_EABI_SYSDEP_H
-#define _LINUX_ARM_EABI_SYSDEP_H 1
-
-#include <arm/sysdep.h>
-
-#include <tls.h>
-
-#if __NR_SYSCALL_BASE != 0
-# error Kernel headers are too old
-#endif
-
-/* Don't use stime, even if the kernel headers define it. We have
- settimeofday, and some EABI kernels have removed stime. Similarly
- use setitimer to implement alarm. */
-#undef __NR_stime
-#undef __NR_alarm
-
-/* The ARM EABI user interface passes the syscall number in r7, instead
- of in the swi. This is more efficient, because the kernel does not need
- to fetch the swi from memory to find out the number; which can be painful
- with separate I-cache and D-cache. Make sure to use 0 for the SWI
- argument; otherwise the (optional) compatibility code for APCS binaries
- may be invoked. */
-
-#if defined(__thumb__)
-/* We can not expose the use of r7 to the compiler. GCC (as
- of 4.5) uses r7 as the hard frame pointer for Thumb - although
- for Thumb-2 it isn't obviously a better choice than r11.
- And GCC does not support asms that conflict with the frame
- pointer.
-
- This would be easier if syscall numbers never exceeded 255,
- but they do. For the moment the LOAD_ARGS_7 is sacrificed.
- We can't use push/pop inside the asm because that breaks
- unwinding (i.e. thread cancellation) for this frame. We can't
- locally save and restore r7, because we do not know if this
- function uses r7 or if it is our caller's r7; if it is our caller's,
- then unwinding will fail higher up the stack. So we move the
- syscall out of line and provide its own unwind information. */
-#undef LOAD_ARGS_7
-#undef INTERNAL_SYSCALL_RAW
-#define INTERNAL_SYSCALL_RAW(name, err, nr, args...) \
- ({ \
- register int _a1 asm ("a1"); \
- int _nametmp = name; \
- LOAD_ARGS_##nr (args) \
- register int _name asm ("ip") = _nametmp; \
- asm volatile ("bl __libc_do_syscall" \
- : "=r" (_a1) \
- : "r" (_name) ASM_ARGS_##nr \
- : "memory", "lr"); \
- _a1; })
-#else /* ARM */
-#undef INTERNAL_SYSCALL_RAW
-#define INTERNAL_SYSCALL_RAW(name, err, nr, args...) \
- ({ \
- register int _a1 asm ("r0"), _nr asm ("r7"); \
- LOAD_ARGS_##nr (args) \
- _nr = name; \
- asm volatile ("swi 0x0 @ syscall " #name \
- : "=r" (_a1) \
- : "r" (_nr) ASM_ARGS_##nr \
- : "memory"); \
- _a1; })
-#endif
-
-/* For EABI, non-constant syscalls are actually pretty easy... */
-#undef INTERNAL_SYSCALL_NCS
-#define INTERNAL_SYSCALL_NCS(number, err, nr, args...) \
- INTERNAL_SYSCALL_RAW (number, err, nr, args)
-
-/* We must save and restore r7 (call-saved) for the syscall number.
- We never make function calls from inside here (only potentially
- signal handlers), so we do not bother with doubleword alignment.
-
- Just like the APCS syscall convention, the EABI syscall convention uses
- r0 through r6 for up to seven syscall arguments. None are ever passed to
- the kernel on the stack, although incoming arguments are on the stack for
- syscalls with five or more arguments.
-
- The assembler will convert the literal pool load to a move for most
- syscalls. */
-
-#undef DO_CALL
-#define DO_CALL(syscall_name, args) \
- DOARGS_##args; \
- ldr r7, =SYS_ify (syscall_name); \
- swi 0x0; \
- UNDOARGS_##args
-
-#undef DOARGS_0
-#define DOARGS_0 \
- .fnstart; \
- str r7, [sp, #-4]!; \
- cfi_adjust_cfa_offset (4); \
- cfi_rel_offset (r7, 0); \
- .save { r7 }
-#undef DOARGS_1
-#define DOARGS_1 DOARGS_0
-#undef DOARGS_2
-#define DOARGS_2 DOARGS_0
-#undef DOARGS_3
-#define DOARGS_3 DOARGS_0
-#undef DOARGS_4
-#define DOARGS_4 DOARGS_0
-#undef DOARGS_5
-#define DOARGS_5 \
- .fnstart; \
- stmfd sp!, {r4, r7}; \
- cfi_adjust_cfa_offset (8); \
- cfi_rel_offset (r4, 0); \
- cfi_rel_offset (r7, 4); \
- .save { r4, r7 }; \
- ldr r4, [sp, #8]
-#undef DOARGS_6
-#define DOARGS_6 \
- .fnstart; \
- mov ip, sp; \
- stmfd sp!, {r4, r5, r7}; \
- cfi_adjust_cfa_offset (12); \
- cfi_rel_offset (r4, 0); \
- cfi_rel_offset (r5, 4); \
- cfi_rel_offset (r7, 8); \
- .save { r4, r5, r7 }; \
- ldmia ip, {r4, r5}
-#undef DOARGS_7
-#define DOARGS_7 \
- .fnstart; \
- mov ip, sp; \
- stmfd sp!, {r4, r5, r6, r7}; \
- cfi_adjust_cfa_offset (16); \
- cfi_rel_offset (r4, 0); \
- cfi_rel_offset (r5, 4); \
- cfi_rel_offset (r6, 8); \
- cfi_rel_offset (r7, 12); \
- .save { r4, r5, r6, r7 }; \
- ldmia ip, {r4, r5, r6}
-
-#undef UNDOARGS_0
-#define UNDOARGS_0 \
- ldr r7, [sp], #4; \
- cfi_adjust_cfa_offset (-4); \
- cfi_restore (r7); \
- .fnend
-#undef UNDOARGS_1
-#define UNDOARGS_1 UNDOARGS_0
-#undef UNDOARGS_2
-#define UNDOARGS_2 UNDOARGS_0
-#undef UNDOARGS_3
-#define UNDOARGS_3 UNDOARGS_0
-#undef UNDOARGS_4
-#define UNDOARGS_4 UNDOARGS_0
-#undef UNDOARGS_5
-#define UNDOARGS_5 \
- ldmfd sp!, {r4, r7}; \
- cfi_adjust_cfa_offset (-8); \
- cfi_restore (r4); \
- cfi_restore (r7); \
- .fnend
-#undef UNDOARGS_6
-#define UNDOARGS_6 \
- ldmfd sp!, {r4, r5, r7}; \
- cfi_adjust_cfa_offset (-12); \
- cfi_restore (r4); \
- cfi_restore (r5); \
- cfi_restore (r7); \
- .fnend
-#undef UNDOARGS_7
-#define UNDOARGS_7 \
- ldmfd sp!, {r4, r5, r6, r7}; \
- cfi_adjust_cfa_offset (-16); \
- cfi_restore (r4); \
- cfi_restore (r5); \
- cfi_restore (r6); \
- cfi_restore (r7); \
- .fnend
-
-#endif /* _LINUX_ARM_EABI_SYSDEP_H */
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/ftruncate64.c b/ports/sysdeps/unix/sysv/linux/arm/ftruncate64.c
index ad5eb186c..ad5eb186c 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/ftruncate64.c
+++ b/ports/sysdeps/unix/sysv/linux/arm/ftruncate64.c
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/getcontext.S b/ports/sysdeps/unix/sysv/linux/arm/getcontext.S
index 435eb12c8..116d6e8f3 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/getcontext.S
+++ b/ports/sysdeps/unix/sysv/linux/arm/getcontext.S
@@ -48,7 +48,7 @@ ENTRY(__getcontext)
add r2, r4, #UCONTEXT_SIGMASK
bl PLTJMP(__sigprocmask)
- /* Store FP regs. Much of the FP code is copied from arm/eabi/setjmp.S. */
+ /* Store FP regs. Much of the FP code is copied from arm/setjmp.S. */
#ifdef PIC
ldr r2, 1f
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/internal_accept4.S b/ports/sysdeps/unix/sysv/linux/arm/internal_accept4.S
index eeb5f50a2..eeb5f50a2 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/internal_accept4.S
+++ b/ports/sysdeps/unix/sysv/linux/arm/internal_accept4.S
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/internal_recvmmsg.S b/ports/sysdeps/unix/sysv/linux/arm/internal_recvmmsg.S
index eeb5f50a2..eeb5f50a2 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/internal_recvmmsg.S
+++ b/ports/sysdeps/unix/sysv/linux/arm/internal_recvmmsg.S
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/internal_sendmmsg.S b/ports/sysdeps/unix/sysv/linux/arm/internal_sendmmsg.S
index eeb5f50a2..eeb5f50a2 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/internal_sendmmsg.S
+++ b/ports/sysdeps/unix/sysv/linux/arm/internal_sendmmsg.S
diff --git a/ports/sysdeps/unix/sysv/linux/arm/ldsodefs.h b/ports/sysdeps/unix/sysv/linux/arm/ldsodefs.h
index 839dc1892..8980bb199 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/ldsodefs.h
+++ b/ports/sysdeps/unix/sysv/linux/arm/ldsodefs.h
@@ -1,5 +1,5 @@
/* Run-time dynamic linker data structures for loaded ELF shared objects.
- Copyright (C) 2010 Free Software Foundation, Inc.
+ Copyright (C) 2010, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -23,12 +23,9 @@
#undef VALID_ELF_HEADER
#undef VALID_ELF_OSABI
+#undef MORE_ELF_HEADER_DATA
-#ifdef __ARM_EABI__
#define EXTRA_OSABI ELFOSABI_ARM_AEABI
-#else
-#define EXTRA_OSABI ELFOSABI_ARM
-#endif
#define VALID_ELF_HEADER(hdr,exp,size) \
(memcmp (hdr, exp, size) == 0 \
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/libc-do-syscall.S b/ports/sysdeps/unix/sysv/linux/arm/libc-do-syscall.S
index 0ec81734f..0ec81734f 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/libc-do-syscall.S
+++ b/ports/sysdeps/unix/sysv/linux/arm/libc-do-syscall.S
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/makecontext.c b/ports/sysdeps/unix/sysv/linux/arm/makecontext.c
index d6ae6f0d7..d6ae6f0d7 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/makecontext.c
+++ b/ports/sysdeps/unix/sysv/linux/arm/makecontext.c
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/mmap64.S b/ports/sysdeps/unix/sysv/linux/arm/mmap64.S
index be4dd52de..be4dd52de 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/mmap64.S
+++ b/ports/sysdeps/unix/sysv/linux/arm/mmap64.S
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/msgctl.c b/ports/sysdeps/unix/sysv/linux/arm/msgctl.c
index 38aedadf4..38aedadf4 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/msgctl.c
+++ b/ports/sysdeps/unix/sysv/linux/arm/msgctl.c
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/Makefile b/ports/sysdeps/unix/sysv/linux/arm/nptl/Makefile
index ef8076cf3..ef8076cf3 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/Makefile
+++ b/ports/sysdeps/unix/sysv/linux/arm/nptl/Makefile
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/configure b/ports/sysdeps/unix/sysv/linux/arm/nptl/configure
index 518269913..518269913 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/configure
+++ b/ports/sysdeps/unix/sysv/linux/arm/nptl/configure
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/configure.in b/ports/sysdeps/unix/sysv/linux/arm/nptl/configure.in
index 22f6f4b8f..22f6f4b8f 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/configure.in
+++ b/ports/sysdeps/unix/sysv/linux/arm/nptl/configure.in
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/nptl-aeabi_unwind_cpp_pr1.c b/ports/sysdeps/unix/sysv/linux/arm/nptl/nptl-aeabi_unwind_cpp_pr1.c
index 7b8352243..7b8352243 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/nptl-aeabi_unwind_cpp_pr1.c
+++ b/ports/sysdeps/unix/sysv/linux/arm/nptl/nptl-aeabi_unwind_cpp_pr1.c
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/rt-aeabi_unwind_cpp_pr1.c b/ports/sysdeps/unix/sysv/linux/arm/nptl/rt-aeabi_unwind_cpp_pr1.c
index 7b8352243..7b8352243 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/rt-aeabi_unwind_cpp_pr1.c
+++ b/ports/sysdeps/unix/sysv/linux/arm/nptl/rt-aeabi_unwind_cpp_pr1.c
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/sysdep-cancel.h b/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h
index c26bec3dc..c26bec3dc 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/sysdep-cancel.h
+++ b/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/unwind-forcedunwind.c b/ports/sysdeps/unix/sysv/linux/arm/nptl/unwind-forcedunwind.c
index 29e2c2b00..29e2c2b00 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/unwind-forcedunwind.c
+++ b/ports/sysdeps/unix/sysv/linux/arm/nptl/unwind-forcedunwind.c
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/unwind-resume.c b/ports/sysdeps/unix/sysv/linux/arm/nptl/unwind-resume.c
index 285b99b5e..285b99b5e 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/unwind-resume.c
+++ b/ports/sysdeps/unix/sysv/linux/arm/nptl/unwind-resume.c
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/unwind.h b/ports/sysdeps/unix/sysv/linux/arm/nptl/unwind.h
index 9b6bed8e3..9b6bed8e3 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/unwind.h
+++ b/ports/sysdeps/unix/sysv/linux/arm/nptl/unwind.h
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/oldgetrlimit.c b/ports/sysdeps/unix/sysv/linux/arm/oldgetrlimit.c
index 6e25b021a..6e25b021a 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/oldgetrlimit.c
+++ b/ports/sysdeps/unix/sysv/linux/arm/oldgetrlimit.c
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/oldsetrlimit.c b/ports/sysdeps/unix/sysv/linux/arm/oldsetrlimit.c
index 6e25b021a..6e25b021a 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/oldsetrlimit.c
+++ b/ports/sysdeps/unix/sysv/linux/arm/oldsetrlimit.c
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/pread.c b/ports/sysdeps/unix/sysv/linux/arm/pread.c
index 4efe349e9..4efe349e9 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/pread.c
+++ b/ports/sysdeps/unix/sysv/linux/arm/pread.c
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/pread64.c b/ports/sysdeps/unix/sysv/linux/arm/pread64.c
index 59bd9cfe0..59bd9cfe0 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/pread64.c
+++ b/ports/sysdeps/unix/sysv/linux/arm/pread64.c
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/pwrite.c b/ports/sysdeps/unix/sysv/linux/arm/pwrite.c
index 43788e542..43788e542 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/pwrite.c
+++ b/ports/sysdeps/unix/sysv/linux/arm/pwrite.c
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/pwrite64.c b/ports/sysdeps/unix/sysv/linux/arm/pwrite64.c
index c7bfdaf9f..c7bfdaf9f 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/pwrite64.c
+++ b/ports/sysdeps/unix/sysv/linux/arm/pwrite64.c
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/readahead.c b/ports/sysdeps/unix/sysv/linux/arm/readahead.c
index 2d15b09c4..2d15b09c4 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/readahead.c
+++ b/ports/sysdeps/unix/sysv/linux/arm/readahead.c
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/semctl.c b/ports/sysdeps/unix/sysv/linux/arm/semctl.c
index 145162909..145162909 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/semctl.c
+++ b/ports/sysdeps/unix/sysv/linux/arm/semctl.c
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/setcontext.S b/ports/sysdeps/unix/sysv/linux/arm/setcontext.S
index 78003f52d..b47294773 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/setcontext.S
+++ b/ports/sysdeps/unix/sysv/linux/arm/setcontext.S
@@ -29,7 +29,7 @@ ENTRY(__setcontext)
mov r4, r0
add r0, r0, #UCONTEXT_REGSPACE
- /* Restore the VFP registers. Copied from arm/eabi/__longjmp.S. */
+ /* Restore the VFP registers. Copied from arm/__longjmp.S. */
#ifdef PIC
ldr r2, 1f
ldr r1, Lrtld_global_ro
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/shmctl.c b/ports/sysdeps/unix/sysv/linux/arm/shmctl.c
index c121e9991..c121e9991 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/shmctl.c
+++ b/ports/sysdeps/unix/sysv/linux/arm/shmctl.c
diff --git a/ports/sysdeps/unix/sysv/linux/arm/sigaction.c b/ports/sysdeps/unix/sysv/linux/arm/sigaction.c
index 4f6e8bff9..e7b51c627 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/sigaction.c
+++ b/ports/sysdeps/unix/sysv/linux/arm/sigaction.c
@@ -1,5 +1,4 @@
-/* Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003, 2005, 2006
- Free Software Foundation, Inc.
+/* Copyright (C) 1997-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -35,26 +34,21 @@ int __libc_missing_rt_sigs;
#define SA_RESTORER 0x04000000
-#ifdef __ARM_EABI__
extern void __default_sa_restorer_v1(void);
extern void __default_sa_restorer_v2(void);
extern void __default_rt_sa_restorer_v1(void);
extern void __default_rt_sa_restorer_v2(void);
-# ifdef __ASSUME_SIGFRAME_V2
-# define __default_sa_restorer __default_sa_restorer_v2
-# define __default_rt_sa_restorer __default_rt_sa_restorer_v2
-# else
-# include <ldsodefs.h>
-# define __default_sa_restorer (GLRO(dl_osversion) >= 0x020612 \
+#ifdef __ASSUME_SIGFRAME_V2
+# define __default_sa_restorer __default_sa_restorer_v2
+# define __default_rt_sa_restorer __default_rt_sa_restorer_v2
+#else
+# include <ldsodefs.h>
+# define __default_sa_restorer (GLRO(dl_osversion) >= 0x020612 \
? __default_sa_restorer_v2 \
: __default_sa_restorer_v1)
-# define __default_rt_sa_restorer (GLRO(dl_osversion) >= 0x020612 \
+# define __default_rt_sa_restorer (GLRO(dl_osversion) >= 0x020612 \
? __default_rt_sa_restorer_v2 \
: __default_rt_sa_restorer_v1)
-# endif
-#else
-extern void __default_sa_restorer(void);
-extern void __default_rt_sa_restorer(void);
#endif
/* When RT signals are in use we need to use a different return stub. */
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/sigrestorer.S b/ports/sysdeps/unix/sysv/linux/arm/sigrestorer.S
index b8ae839f5..b8ae839f5 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/sigrestorer.S
+++ b/ports/sysdeps/unix/sysv/linux/arm/sigrestorer.S
diff --git a/ports/sysdeps/unix/sysv/linux/arm/socket.S b/ports/sysdeps/unix/sysv/linux/arm/socket.S
deleted file mode 100644
index 5d238d3ed..000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/socket.S
+++ /dev/null
@@ -1,126 +0,0 @@
-/* Copyright (C) 1995, 1996, 1997, 1998, 2003, 2004, 2005
- Free Software Foundation, Inc.
-
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library. If not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <sysdep-cancel.h>
-#include <socketcall.h>
-
-#define P(a, b) P2(a, b)
-#define P2(a, b) a##b
-
- .text
-/* The socket-oriented system calls are handled unusally in Linux.
- They are all gated through the single `socketcall' system call number.
- `socketcall' takes two arguments: the first is the subcode, specifying
- which socket function is being called; and the second is a pointer to
- the arguments to the specific function.
-
- The .S files for the other calls just #define socket and #include this. */
-
-#ifndef __socket
-# ifndef NO_WEAK_ALIAS
-# define __socket P(__,socket)
-# else
-# define __socket socket
-# endif
-#endif
-
-#define PUSHARGS_1 str a1, [sp, $-4]!
-#define PUSHARGS_2 stmfd sp!, {a1, a2}
-#define PUSHARGS_3 stmfd sp!, {a1, a2, a3}
-#define PUSHARGS_4 stmfd sp!, {a1, a2, a3, a4}
-#define PUSHARGS_5 stmfd sp!, {a1, a2, a3, a4} /* Caller has already pushed arg 5 */
-#define PUSHARGS_6 stmfd sp!, {a1, a2, a3, a4}
-
-#define POPARGS_1 add sp, sp, #4
-#define POPARGS_2 add sp, sp, #8
-#define POPARGS_3 add sp, sp, #12
-#define POPARGS_4 add sp, sp, #16
-#define POPARGS_5 add sp, sp, #16
-#define POPARGS_6 add sp, sp, #16
-
-#ifndef NARGS
-#define NARGS 3 /* If we were called with no wrapper, this is really socket() */
-#endif
-
-#if defined NEED_CANCELLATION && defined CENABLE
- PSEUDO_PROLOGUE
-#endif
-
-.globl __socket
-ENTRY (__socket)
- /* This code previously moved sp into ip and stored the args using
- stmdb ip!, {a1-a4}. It did not modify sp, so the stack never had
- to be restored after the syscall completed. It saved an
- instruction and meant no stack cleanup work was required.
-
- This will not work in the case of a socket call being interrupted
- by a signal. If the signal handler uses any stack the arguments
- to socket will be trashed. The results of a restart of any
- socket call are then unpredictable. */
-
- /* Push args onto the stack. */
- P(PUSHARGS_,NARGS)
-
-#if defined NEED_CANCELLATION && defined CENABLE
- SINGLE_THREAD_P
- bne 1f
-#endif
-
- /* Do the system call trap. */
- mov a1, $P(SOCKOP_,socket)
- mov a2, sp
- swi SYS_ify(socketcall)
-
- /* Pop args off the stack */
- P(POPARGS_,NARGS)
-
- /* r0 is < 0 if there was an error. */
- cmn r0, $124
- RETINSTR(cc, r14)
- b PLTJMP(SYSCALL_ERROR)
-
-#if defined NEED_CANCELLATION && defined CENABLE
-1:
- str lr, [sp, #-4]!
- CENABLE
- mov ip, r0
-
- mov r0, #P(SOCKOP_,socket)
- add r1, sp, #4
- swi SYS_ify(socketcall)
-
- str r0, [sp, #-4]!
- mov r0, ip
- CDISABLE
- ldr r0, [sp], #4
- ldr lr, [sp], #4
-
- P(POPARGS_,NARGS)
-
- /* r0 is < 0 if there was an error. */
- cmn r0, $124
- RETINSTR(cc, r14)
- b PLTJMP(SYSCALL_ERROR)
-#endif
-
-PSEUDO_END (__socket)
-
-#ifndef NO_WEAK_ALIAS
-weak_alias (__socket, socket)
-#endif
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/swapcontext.S b/ports/sysdeps/unix/sysv/linux/arm/swapcontext.S
index 09492d000..09492d000 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/swapcontext.S
+++ b/ports/sysdeps/unix/sysv/linux/arm/swapcontext.S
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/syscall.S b/ports/sysdeps/unix/sysv/linux/arm/syscall.S
index 3faf919d8..3faf919d8 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/syscall.S
+++ b/ports/sysdeps/unix/sysv/linux/arm/syscall.S
diff --git a/ports/sysdeps/unix/sysv/linux/arm/syscalls.list b/ports/sysdeps/unix/sysv/linux/arm/syscalls.list
index 820602b79..b8852d940 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/syscalls.list
+++ b/ports/sysdeps/unix/sysv/linux/arm/syscalls.list
@@ -1,9 +1,36 @@
# File name Caller Syscall name # args Strong name Weak names
-syscall - syscall 7 syscall
-oldgetrlimit EXTRA getrlimit i:ip __old_getrlimit getrlimit@GLIBC_2.0
-oldsetrlimit EXTRA setrlimit i:ip __old_setrlimit setrlimit@GLIBC_2.0
-
prlimit64 EXTRA prlimit64 i:iipp prlimit64
fanotify_mark EXTRA fanotify_mark i:iiiiis fanotify_mark
+
+# Semaphore and shm system calls. msgctl, shmctl, and semctl have C
+# wrappers (to set __IPC_64).
+msgget - msgget i:ii __msgget msgget
+msgrcv - msgrcv Ci:ibnii __msgrcv msgrcv
+msgsnd - msgsnd Ci:ibni __msgsnd msgsnd
+shmat - shmat i:ipi __shmat shmat
+shmdt - shmdt i:s __shmdt shmdt
+shmget - shmget i:iii __shmget shmget
+semop - semop i:ipi __semop semop
+semtimedop - semtimedop i:ipip semtimedop
+semget - semget i:iii __semget semget
+
+# proper socket implementations:
+accept - accept Ci:iBN __libc_accept __accept accept
+bind - bind i:ipi __bind bind
+connect - connect Ci:ipi __libc_connect __connect_internal __connect connect
+getpeername - getpeername i:ipp __getpeername getpeername
+getsockname - getsockname i:ipp __getsockname getsockname
+getsockopt - getsockopt i:iiiBN __getsockopt getsockopt
+listen - listen i:ii __listen listen
+recv - recv Ci:ibni __libc_recv __recv recv
+recvfrom - recvfrom Ci:ibniBN __libc_recvfrom __recvfrom recvfrom
+recvmsg - recvmsg Ci:ipi __libc_recvmsg __recvmsg recvmsg
+send - send Ci:ibni __libc_send __send send
+sendmsg - sendmsg Ci:ipi __libc_sendmsg __sendmsg sendmsg
+sendto - sendto Ci:ibnibn __libc_sendto __sendto sendto
+setsockopt - setsockopt i:iiibn __setsockopt setsockopt
+shutdown - shutdown i:ii __shutdown shutdown
+socket - socket i:iii __socket socket
+socketpair - socketpair i:iiif __socketpair socketpair
diff --git a/ports/sysdeps/unix/sysv/linux/arm/sysdep.h b/ports/sysdeps/unix/sysv/linux/arm/sysdep.h
index 4d08ea9e4..be67c211d 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/sysdep.h
+++ b/ports/sysdeps/unix/sysv/linux/arm/sysdep.h
@@ -1,5 +1,4 @@
-/* Copyright (C) 1992, 93, 1995-2000, 2002, 2003, 2005, 2006, 2009
- Free Software Foundation, Inc.
+/* Copyright (C) 1992-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>, August 1995.
ARM changes by Philip Blundell, <pjb27@cam.ac.uk>, May 1997.
@@ -29,6 +28,16 @@
#include <tls.h>
+#if __NR_SYSCALL_BASE != 0
+# error Kernel headers are too old
+#endif
+
+/* Don't use stime, even if the kernel headers define it. We have
+ settimeofday, and some EABI kernels have removed stime. Similarly
+ use setitimer to implement alarm. */
+#undef __NR_stime
+#undef __NR_alarm
+
/* In order to get __set_errno() definition in INLINE_SYSCALL. */
#ifndef __ASSEMBLER__
#include <errno.h>
@@ -163,8 +172,14 @@ __local_syscall_error: \
# define SYSCALL_ERROR __syscall_error
#endif
+/* The ARM EABI user interface passes the syscall number in r7, instead
+ of in the swi. This is more efficient, because the kernel does not need
+ to fetch the swi from memory to find out the number; which can be painful
+ with separate I-cache and D-cache. Make sure to use 0 for the SWI
+ argument; otherwise the (optional) compatibility code for APCS binaries
+ may be invoked. */
+
/* Linux takes system call args in registers:
- syscall number in the SWI instruction
arg 1 r0
arg 2 r1
arg 3 r2
@@ -190,58 +205,111 @@ __local_syscall_error: \
*/
+/* We must save and restore r7 (call-saved) for the syscall number.
+ We never make function calls from inside here (only potentially
+ signal handlers), so we do not bother with doubleword alignment.
+
+ Just like the APCS syscall convention, the EABI syscall convention uses
+ r0 through r6 for up to seven syscall arguments. None are ever passed to
+ the kernel on the stack, although incoming arguments are on the stack for
+ syscalls with five or more arguments.
+
+ The assembler will convert the literal pool load to a move for most
+ syscalls. */
+
#undef DO_CALL
#define DO_CALL(syscall_name, args) \
DOARGS_##args; \
- swi SYS_ify (syscall_name); \
+ ldr r7, =SYS_ify (syscall_name); \
+ swi 0x0; \
UNDOARGS_##args
-#define DOARGS_0 /* nothing */
-#define DOARGS_1 /* nothing */
-#define DOARGS_2 /* nothing */
-#define DOARGS_3 /* nothing */
-#define DOARGS_4 /* nothing */
-#define DOARGS_5 \
- str r4, [sp, $-4]!; \
+#undef DOARGS_0
+#define DOARGS_0 \
+ .fnstart; \
+ str r7, [sp, #-4]!; \
cfi_adjust_cfa_offset (4); \
+ cfi_rel_offset (r7, 0); \
+ .save { r7 }
+#undef DOARGS_1
+#define DOARGS_1 DOARGS_0
+#undef DOARGS_2
+#define DOARGS_2 DOARGS_0
+#undef DOARGS_3
+#define DOARGS_3 DOARGS_0
+#undef DOARGS_4
+#define DOARGS_4 DOARGS_0
+#undef DOARGS_5
+#define DOARGS_5 \
+ .fnstart; \
+ stmfd sp!, {r4, r7}; \
+ cfi_adjust_cfa_offset (8); \
cfi_rel_offset (r4, 0); \
- ldr r4, [sp, $4]
+ cfi_rel_offset (r7, 4); \
+ .save { r4, r7 }; \
+ ldr r4, [sp, #8]
+#undef DOARGS_6
#define DOARGS_6 \
+ .fnstart; \
mov ip, sp; \
- stmfd sp!, {r4, r5}; \
- cfi_adjust_cfa_offset (8); \
+ stmfd sp!, {r4, r5, r7}; \
+ cfi_adjust_cfa_offset (12); \
cfi_rel_offset (r4, 0); \
cfi_rel_offset (r5, 4); \
+ cfi_rel_offset (r7, 8); \
+ .save { r4, r5, r7 }; \
ldmia ip, {r4, r5}
+#undef DOARGS_7
#define DOARGS_7 \
+ .fnstart; \
mov ip, sp; \
- stmfd sp!, {r4, r5, r6}; \
- cfi_adjust_cfa_offset (12); \
+ stmfd sp!, {r4, r5, r6, r7}; \
+ cfi_adjust_cfa_offset (16); \
cfi_rel_offset (r4, 0); \
cfi_rel_offset (r5, 4); \
cfi_rel_offset (r6, 8); \
+ cfi_rel_offset (r7, 12); \
+ .save { r4, r5, r6, r7 }; \
ldmia ip, {r4, r5, r6}
-#define UNDOARGS_0 /* nothing */
-#define UNDOARGS_1 /* nothing */
-#define UNDOARGS_2 /* nothing */
-#define UNDOARGS_3 /* nothing */
-#define UNDOARGS_4 /* nothing */
-#define UNDOARGS_5 \
- ldr r4, [sp], $4; \
+#undef UNDOARGS_0
+#define UNDOARGS_0 \
+ ldr r7, [sp], #4; \
cfi_adjust_cfa_offset (-4); \
- cfi_restore (r4)
-#define UNDOARGS_6 \
- ldmfd sp!, {r4, r5}; \
+ cfi_restore (r7); \
+ .fnend
+#undef UNDOARGS_1
+#define UNDOARGS_1 UNDOARGS_0
+#undef UNDOARGS_2
+#define UNDOARGS_2 UNDOARGS_0
+#undef UNDOARGS_3
+#define UNDOARGS_3 UNDOARGS_0
+#undef UNDOARGS_4
+#define UNDOARGS_4 UNDOARGS_0
+#undef UNDOARGS_5
+#define UNDOARGS_5 \
+ ldmfd sp!, {r4, r7}; \
cfi_adjust_cfa_offset (-8); \
cfi_restore (r4); \
- cfi_restore (r5)
-#define UNDOARGS_7 \
- ldmfd sp!, {r4, r5, r6}; \
+ cfi_restore (r7); \
+ .fnend
+#undef UNDOARGS_6
+#define UNDOARGS_6 \
+ ldmfd sp!, {r4, r5, r7}; \
cfi_adjust_cfa_offset (-12); \
cfi_restore (r4); \
cfi_restore (r5); \
- cfi_restore (r6)
+ cfi_restore (r7); \
+ .fnend
+#undef UNDOARGS_7
+#define UNDOARGS_7 \
+ ldmfd sp!, {r4, r5, r6, r7}; \
+ cfi_adjust_cfa_offset (-16); \
+ cfi_restore (r4); \
+ cfi_restore (r5); \
+ cfi_restore (r6); \
+ cfi_restore (r7); \
+ .fnend
#else /* not __ASSEMBLER__ */
@@ -260,19 +328,46 @@ __local_syscall_error: \
#undef INTERNAL_SYSCALL_DECL
#define INTERNAL_SYSCALL_DECL(err) do { } while (0)
-#undef INTERNAL_SYSCALL_RAW
-#define INTERNAL_SYSCALL_RAW(name, err, nr, args...) \
- ({ unsigned int _sys_result; \
- { \
- register int _a1 asm ("a1"); \
+#if defined(__thumb__)
+/* We can not expose the use of r7 to the compiler. GCC (as
+ of 4.5) uses r7 as the hard frame pointer for Thumb - although
+ for Thumb-2 it isn't obviously a better choice than r11.
+ And GCC does not support asms that conflict with the frame
+ pointer.
+
+ This would be easier if syscall numbers never exceeded 255,
+ but they do. For the moment the LOAD_ARGS_7 is sacrificed.
+ We can't use push/pop inside the asm because that breaks
+ unwinding (i.e. thread cancellation) for this frame. We can't
+ locally save and restore r7, because we do not know if this
+ function uses r7 or if it is our caller's r7; if it is our caller's,
+ then unwinding will fail higher up the stack. So we move the
+ syscall out of line and provide its own unwind information. */
+# undef INTERNAL_SYSCALL_RAW
+# define INTERNAL_SYSCALL_RAW(name, err, nr, args...) \
+ ({ \
+ register int _a1 asm ("a1"); \
+ int _nametmp = name; \
+ LOAD_ARGS_##nr (args) \
+ register int _name asm ("ip") = _nametmp; \
+ asm volatile ("bl __libc_do_syscall" \
+ : "=r" (_a1) \
+ : "r" (_name) ASM_ARGS_##nr \
+ : "memory", "lr"); \
+ _a1; })
+#else /* ARM */
+# undef INTERNAL_SYSCALL_RAW
+# define INTERNAL_SYSCALL_RAW(name, err, nr, args...) \
+ ({ \
+ register int _a1 asm ("r0"), _nr asm ("r7"); \
LOAD_ARGS_##nr (args) \
- asm volatile ("swi %1 @ syscall " #name \
+ _nr = name; \
+ asm volatile ("swi 0x0 @ syscall " #name \
: "=r" (_a1) \
- : "i" (name) ASM_ARGS_##nr \
+ : "r" (_nr) ASM_ARGS_##nr \
: "memory"); \
- _sys_result = _a1; \
- } \
- (int) _sys_result; })
+ _a1; })
+#endif
#undef INTERNAL_SYSCALL
#define INTERNAL_SYSCALL(name, err, nr, args...) \
@@ -321,29 +416,18 @@ __local_syscall_error: \
LOAD_ARGS_5 (a1, a2, a3, a4, a5) \
register int _v2 asm ("v2") = _v2tmp;
#define ASM_ARGS_6 ASM_ARGS_5, "r" (_v2)
-#define LOAD_ARGS_7(a1, a2, a3, a4, a5, a6, a7) \
- int _v3tmp = (int) (a7); \
- LOAD_ARGS_6 (a1, a2, a3, a4, a5, a6) \
+#ifndef __thumb__
+# define LOAD_ARGS_7(a1, a2, a3, a4, a5, a6, a7) \
+ int _v3tmp = (int) (a7); \
+ LOAD_ARGS_6 (a1, a2, a3, a4, a5, a6) \
register int _v3 asm ("v3") = _v3tmp;
-#define ASM_ARGS_7 ASM_ARGS_6, "r" (_v3)
-
-/* We can't implement non-constant syscalls directly since the syscall
- number is normally encoded in the instruction. So use SYS_syscall. */
-#define INTERNAL_SYSCALL_NCS(number, err, nr, args...) \
- INTERNAL_SYSCALL_NCS_##nr (number, err, args)
-
-#define INTERNAL_SYSCALL_NCS_0(number, err, args...) \
- INTERNAL_SYSCALL (syscall, err, 1, number, args)
-#define INTERNAL_SYSCALL_NCS_1(number, err, args...) \
- INTERNAL_SYSCALL (syscall, err, 2, number, args)
-#define INTERNAL_SYSCALL_NCS_2(number, err, args...) \
- INTERNAL_SYSCALL (syscall, err, 3, number, args)
-#define INTERNAL_SYSCALL_NCS_3(number, err, args...) \
- INTERNAL_SYSCALL (syscall, err, 4, number, args)
-#define INTERNAL_SYSCALL_NCS_4(number, err, args...) \
- INTERNAL_SYSCALL (syscall, err, 5, number, args)
-#define INTERNAL_SYSCALL_NCS_5(number, err, args...) \
- INTERNAL_SYSCALL (syscall, err, 6, number, args)
+# define ASM_ARGS_7 ASM_ARGS_6, "r" (_v3)
+#endif
+
+/* For EABI, non-constant syscalls are actually pretty easy... */
+#undef INTERNAL_SYSCALL_NCS
+#define INTERNAL_SYSCALL_NCS(number, err, nr, args...) \
+ INTERNAL_SYSCALL_RAW (number, err, nr, args)
#endif /* __ASSEMBLER__ */
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/truncate64.c b/ports/sysdeps/unix/sysv/linux/arm/truncate64.c
index 409bf1933..409bf1933 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/truncate64.c
+++ b/ports/sysdeps/unix/sysv/linux/arm/truncate64.c
diff --git a/ports/sysdeps/unix/sysv/linux/arm/eabi/umount.c b/ports/sysdeps/unix/sysv/linux/arm/umount.c
index d9d671f88..d9d671f88 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/umount.c
+++ b/ports/sysdeps/unix/sysv/linux/arm/umount.c
diff --git a/ports/sysdeps/unix/sysv/linux/arm/vfork.S b/ports/sysdeps/unix/sysv/linux/arm/vfork.S
index cbd42e861..99c366d2b 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/vfork.S
+++ b/ports/sysdeps/unix/sysv/linux/arm/vfork.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2002, 2003, 2005 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Philip Blundell <philb@gnu.org>.
@@ -32,7 +32,6 @@ ENTRY (__vfork)
#ifdef SAVE_PID
SAVE_PID
#endif
-#ifdef __ARM_EABI__
/* The DO_CALL macro saves r7 on the stack, to enable generation
of ARM unwind info. Since the stack is initially shared between
parent and child of vfork, that saved value could be corrupted.
@@ -51,9 +50,6 @@ ENTRY (__vfork)
cfi_adjust_cfa_offset (-4)
mov r7, ip
cfi_restore (r7);
-#else
- swi SYS_ify(vfork)
-#endif
#ifdef RESTORE_PID
RESTORE_PID
#endif
diff --git a/ports/sysdeps/unix/sysv/linux/m68k/bits/mman.h b/ports/sysdeps/unix/sysv/linux/m68k/bits/mman.h
index 864f9ea6f..f36193222 100644
--- a/ports/sysdeps/unix/sysv/linux/m68k/bits/mman.h
+++ b/ports/sysdeps/unix/sysv/linux/m68k/bits/mman.h
@@ -1,6 +1,5 @@
/* Definitions for POSIX memory map interface. Linux/m68k version.
- Copyright (C) 1997, 2000, 2003, 2005, 2008, 2009, 2011
- Free Software Foundation, Inc.
+ Copyright (C) 1997-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -63,6 +62,8 @@
# define MAP_NORESERVE 0x04000 /* Don't check for reservations. */
# define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */
# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
+# define MAP_STACK 0x20000 /* Allocation is for a stack. */
+# define MAP_HUGETLB 0x40000 /* Create huge page mapping. */
#endif
/* Flags to `msync'. */
diff --git a/ports/sysdeps/unix/sysv/linux/mips/mips32/readahead.c b/ports/sysdeps/unix/sysv/linux/mips/mips32/readahead.c
index b5b967ce9..80170c3e8 100644
--- a/ports/sysdeps/unix/sysv/linux/mips/mips32/readahead.c
+++ b/ports/sysdeps/unix/sysv/linux/mips/mips32/readahead.c
@@ -1 +1 @@
-#include <sysdeps/unix/sysv/linux/arm/eabi/readahead.c>
+#include <sysdeps/unix/sysv/linux/arm/readahead.c>
diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/register-dump.h b/ports/sysdeps/unix/sysv/linux/tile/tilegx/register-dump.h
index 902176356..d5d06f719 100644
--- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/register-dump.h
+++ b/ports/sysdeps/unix/sysv/linux/tile/tilegx/register-dump.h
@@ -17,7 +17,7 @@
<http://www.gnu.org/licenses/>. */
#include <sys/uio.h>
-#include <stdio-common/_itoa.h>
+#include <_itoa.h>
/* We will print the register dump in this format:
diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilepro/register-dump.h b/ports/sysdeps/unix/sysv/linux/tile/tilepro/register-dump.h
index 3338695bc..9907bbf24 100644
--- a/ports/sysdeps/unix/sysv/linux/tile/tilepro/register-dump.h
+++ b/ports/sysdeps/unix/sysv/linux/tile/tilepro/register-dump.h
@@ -18,7 +18,7 @@
<http://www.gnu.org/licenses/>. */
#include <sys/uio.h>
-#include <stdio-common/_itoa.h>
+#include <_itoa.h>
/* We will print the register dump in this format: