[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commits] r18153 - in /fsf/trunk/ports: ./ sysdeps/arm/ sysdeps/arm/armv6t2/ sysdeps/arm/armv7/ sysdeps/arm/bits/ sysdeps/arm/eabi/ sy...



Author: eglibc
Date: Sat Apr 21 17:04:56 2012
New Revision: 18153

Log:
Import glibc-ports-mainline for 2012-04-21

Added:
    fsf/trunk/ports/sysdeps/arm/Versions
    fsf/trunk/ports/sysdeps/arm/__longjmp.S
    fsf/trunk/ports/sysdeps/arm/abi-note.S
    fsf/trunk/ports/sysdeps/arm/aeabi_assert.c
    fsf/trunk/ports/sysdeps/arm/aeabi_atexit.c
    fsf/trunk/ports/sysdeps/arm/aeabi_errno_addr.c
    fsf/trunk/ports/sysdeps/arm/aeabi_lcsts.c
    fsf/trunk/ports/sysdeps/arm/aeabi_localeconv.c
    fsf/trunk/ports/sysdeps/arm/aeabi_math.c
    fsf/trunk/ports/sysdeps/arm/aeabi_mb_cur_max.c
    fsf/trunk/ports/sysdeps/arm/aeabi_memclr.c
    fsf/trunk/ports/sysdeps/arm/aeabi_memcpy.c
    fsf/trunk/ports/sysdeps/arm/aeabi_memmove.c
    fsf/trunk/ports/sysdeps/arm/aeabi_memset.c
    fsf/trunk/ports/sysdeps/arm/aeabi_sighandlers.S
    fsf/trunk/ports/sysdeps/arm/aeabi_unwind_cpp_pr1.c
    fsf/trunk/ports/sysdeps/arm/arm-mcount.S
    fsf/trunk/ports/sysdeps/arm/armv6t2/
    fsf/trunk/ports/sysdeps/arm/armv6t2/memchr.S
    fsf/trunk/ports/sysdeps/arm/armv7/
    fsf/trunk/ports/sysdeps/arm/armv7/Implies
    fsf/trunk/ports/sysdeps/arm/backtrace.c
    fsf/trunk/ports/sysdeps/arm/bits/fenv.h
    fsf/trunk/ports/sysdeps/arm/bits/huge_val.h
    fsf/trunk/ports/sysdeps/arm/bits/setjmp.h
    fsf/trunk/ports/sysdeps/arm/fclrexcpt.c
    fsf/trunk/ports/sysdeps/arm/fedisblxcpt.c
    fsf/trunk/ports/sysdeps/arm/feenablxcpt.c
    fsf/trunk/ports/sysdeps/arm/fegetenv.c
    fsf/trunk/ports/sysdeps/arm/fegetexcept.c
    fsf/trunk/ports/sysdeps/arm/fegetround.c
    fsf/trunk/ports/sysdeps/arm/feholdexcpt.c
    fsf/trunk/ports/sysdeps/arm/fesetenv.c
    fsf/trunk/ports/sysdeps/arm/fesetround.c
    fsf/trunk/ports/sysdeps/arm/feupdateenv.c
    fsf/trunk/ports/sysdeps/arm/fgetexcptflg.c
    fsf/trunk/ports/sysdeps/arm/find_exidx.c
    fsf/trunk/ports/sysdeps/arm/fpu_control.h
    fsf/trunk/ports/sysdeps/arm/fraiseexcpt.c
    fsf/trunk/ports/sysdeps/arm/fsetexcptflg.c
    fsf/trunk/ports/sysdeps/arm/ftestexcept.c
    fsf/trunk/ports/sysdeps/arm/jmpbuf-offsets.h
    fsf/trunk/ports/sysdeps/arm/machine-gmon.h
    fsf/trunk/ports/sysdeps/arm/rtld-global-offsets.sym
    fsf/trunk/ports/sysdeps/arm/setfpucw.c
    fsf/trunk/ports/sysdeps/arm/setjmp.S
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/____longjmp_chk.S
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/configure
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/configure.in
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/ftruncate64.c
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/getcontext.S
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/internal_accept4.S
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/internal_recvmmsg.S
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/internal_sendmmsg.S
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/libc-do-syscall.S
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/makecontext.c
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/mmap64.S
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/msgctl.c
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/nptl/Makefile
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/nptl/configure
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/nptl/configure.in
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/nptl/nptl-aeabi_unwind_cpp_pr1.c
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/nptl/rt-aeabi_unwind_cpp_pr1.c
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/nptl/unwind-forcedunwind.c
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/nptl/unwind-resume.c
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/nptl/unwind.h
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/oldgetrlimit.c
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/oldsetrlimit.c
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/pread.c
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/pread64.c
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/pwrite.c
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/pwrite64.c
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/readahead.c
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/semctl.c
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/setcontext.S
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/shmctl.c
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/sigrestorer.S
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/swapcontext.S
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/syscall.S
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/truncate64.c
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/umount.c
Removed:
    fsf/trunk/ports/sysdeps/arm/eabi/
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/eabi/
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/socket.S
Modified:
    fsf/trunk/ports/ChangeLog.arm
    fsf/trunk/ports/ChangeLog.mips
    fsf/trunk/ports/sysdeps/arm/Makefile
    fsf/trunk/ports/sysdeps/arm/preconfigure
    fsf/trunk/ports/sysdeps/arm/shlib-versions
    fsf/trunk/ports/sysdeps/arm/start.S
    fsf/trunk/ports/sysdeps/arm/sysdep.h
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/Makefile
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/clone.S
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/ldsodefs.h
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/sigaction.c
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/syscalls.list
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/sysdep.h
    fsf/trunk/ports/sysdeps/unix/sysv/linux/arm/vfork.S
    fsf/trunk/ports/sysdeps/unix/sysv/linux/mips/mips32/readahead.c

Modified: fsf/trunk/ports/ChangeLog.arm
==============================================================================
--- fsf/trunk/ports/ChangeLog.arm (original)
+++ fsf/trunk/ports/ChangeLog.arm Sat Apr 21 17:04:56 2012
@@ -1,3 +1,283 @@
+2012-04-21  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	[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@xxxxxxx>
 
 	* sysdeps/unix/sysv/linux/arm/ldsodefs.h: Undefine

Modified: fsf/trunk/ports/ChangeLog.mips
==============================================================================
--- fsf/trunk/ports/ChangeLog.mips (original)
+++ fsf/trunk/ports/ChangeLog.mips Sat Apr 21 17:04:56 2012
@@ -1,3 +1,9 @@
+2012-04-21  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	* 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@xxxxxxxxxxxxxxxx>
 
 	* sysdeps/unix/sysv/linux/mips/bits/mman.h (MAP_STACK): Define.

Modified: fsf/trunk/ports/sysdeps/arm/Makefile
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/Makefile (original)
+++ fsf/trunk/ports/sysdeps/arm/Makefile Sat Apr 21 17:04:56 2012
@@ -1,14 +1,35 @@
 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_localeconv aeabi_errno_addr \
+	aeabi_mb_cur_max aeabi_atexit aeabi_memclr aeabi_memcpy \
+	aeabi_memmove aeabi_memset
+
+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
+endif
+
+ifeq ($(subdir),math)
+$(objpfx)libm.so: $(elfobjdir)/ld.so
+endif

Added: fsf/trunk/ports/sysdeps/arm/Versions
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/Versions (added)
+++ fsf/trunk/ports/sysdeps/arm/Versions Sat Apr 21 17:04:56 2012
@@ -1,0 +1,20 @@
+libc {
+  GLIBC_2.4 {
+    # ARM EABI compatibility routines
+    __aeabi_assert;
+    __aeabi_atexit;
+    __aeabi_errno_addr;
+    __aeabi_localeconv;
+    __aeabi_MB_CUR_MAX;
+    __aeabi_memclr; __aeabi_memclr4; __aeabi_memclr8;
+    __aeabi_memcpy; __aeabi_memcpy4; __aeabi_memcpy8;
+    __aeabi_memmove; __aeabi_memmove4; __aeabi_memmove8;
+    __aeabi_memset; __aeabi_memset4; __aeabi_memset8;
+
+    # Helper routines
+    __gnu_Unwind_Find_exidx;
+  }
+  GLIBC_2.8 {
+    __gnu_mcount_nc;
+  }
+}

Added: fsf/trunk/ports/sysdeps/arm/__longjmp.S
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/__longjmp.S (added)
+++ fsf/trunk/ports/sysdeps/arm/__longjmp.S Sat Apr 21 17:04:56 2012
@@ -1,0 +1,111 @@
+/* longjmp for ARM.
+   Copyright (C) 1997, 1998, 2005, 2006, 2009, 2010
+     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.h>
+#define _SETJMP_H
+#define _ASM
+#include <bits/setjmp.h>
+#include <rtld-global-offsets.h>
+
+/* __longjmp(jmpbuf, val) */
+
+ENTRY (__longjmp)
+	mov	ip, r0
+	movs	r0, r1		/* get the return value in place */
+	moveq	r0, #1		/* can't let setjmp() return zero! */
+
+#ifdef CHECK_SP
+	ldr	r4, [ip, #32]	/* jmpbuf's sp */
+	cfi_undefined (r4)
+	CHECK_SP (r4)
+#endif
+	LOADREGS(ia, ip!, {v1-v6, sl, fp, sp, lr})
+	cfi_restore (v1)
+	cfi_restore (v2)
+	cfi_restore (v3)
+	cfi_restore (v4)
+	cfi_restore (v5)
+	cfi_restore (v6)
+	cfi_restore (sl)
+	cfi_restore (fp)
+	cfi_restore (sp)
+	cfi_restore (lr)
+
+#ifdef IS_IN_rtld
+  	ldr	a2, 1f
+	ldr	a3, Lrtld_local_ro
+0:	add	a2, pc, a2
+	add	a2, a2, a3
+	ldr	a2, [a2, #RTLD_GLOBAL_RO_DL_HWCAP_OFFSET]
+#else
+#ifdef PIC
+  	ldr	a2, 1f
+	ldr	a3, Lrtld_global_ro
+0:	add	a2, pc, a2
+	ldr	a2, [a2, a3]
+	ldr	a2, [a2, #RTLD_GLOBAL_RO_DL_HWCAP_OFFSET]
+#else
+	ldr	a2, Lhwcap
+	ldr	a2, [a2, #0]
+#endif
+#endif
+
+	tst	a2, #HWCAP_ARM_VFP
+	beq	Lno_vfp
+
+	/* Restore the VFP registers.  */
+	/* Following instruction is vldmia ip!, {d8-d15}.  */
+	ldc	p11, cr8, [r12], #64
+	/* Restore the floating-point status register.  */
+	ldr     a3, [ip], #4
+	/* Following instruction is fmxr fpscr, a3.  */
+	mcr	p10, 7, a3, cr1, cr0, 0
+Lno_vfp:
+
+	tst	a2, #HWCAP_ARM_IWMMXT
+	beq	Lno_iwmmxt
+
+	/* Restore the call-preserved iWMMXt registers.  */
+	/* Following instructions are wldrd wr10, [ip], #8 (etc.)  */
+	ldcl	p1, cr10, [r12], #8
+	ldcl	p1, cr11, [r12], #8
+	ldcl	p1, cr12, [r12], #8
+	ldcl	p1, cr13, [r12], #8
+	ldcl	p1, cr14, [r12], #8
+	ldcl	p1, cr15, [r12], #8
+Lno_iwmmxt:
+
+	DO_RET(lr)
+
+#ifdef IS_IN_rtld
+1:	.long	_GLOBAL_OFFSET_TABLE_ - 0b - 8
+Lrtld_local_ro:
+	.long	C_SYMBOL_NAME(_rtld_local_ro)(GOTOFF)
+#else
+#ifdef PIC
+1:	.long	_GLOBAL_OFFSET_TABLE_ - 0b - 8
+Lrtld_global_ro:
+	.long	C_SYMBOL_NAME(_rtld_global_ro)(GOT)
+#else
+Lhwcap:
+	.long	C_SYMBOL_NAME(_dl_hwcap)
+#endif
+#endif
+
+END (__longjmp)

Added: fsf/trunk/ports/sysdeps/arm/abi-note.S
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/abi-note.S (added)
+++ fsf/trunk/ports/sysdeps/arm/abi-note.S Sat Apr 21 17:04:56 2012
@@ -1,0 +1,9 @@
+/* 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
+
+#include <csu/abi-note.S>
+

Added: fsf/trunk/ports/sysdeps/arm/aeabi_assert.c
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/aeabi_assert.c (added)
+++ fsf/trunk/ports/sysdeps/arm/aeabi_assert.c Sat Apr 21 17:04:56 2012
@@ -1,0 +1,26 @@
+/* Copyright (C) 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 <assert.h>
+#include <stdlib.h>
+
+void
+__aeabi_assert (const char *assertion, const char *file,
+		unsigned int line)
+{
+  __assert_fail (assertion, file, line, NULL);
+}

Added: fsf/trunk/ports/sysdeps/arm/aeabi_atexit.c
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/aeabi_atexit.c (added)
+++ fsf/trunk/ports/sysdeps/arm/aeabi_atexit.c Sat Apr 21 17:04:56 2012
@@ -1,0 +1,27 @@
+/* Copyright (C) 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 <stdlib.h>
+
+/* Register a function to be called by exit or when a shared library
+   is unloaded.  This routine is like __cxa_atexit, but uses the
+   calling sequence required by the ARM EABI.  */
+int
+__aeabi_atexit (void *arg, void (*func) (void *), void *d)
+{
+  return __cxa_atexit (func, arg, d);
+}

Added: fsf/trunk/ports/sysdeps/arm/aeabi_errno_addr.c
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/aeabi_errno_addr.c (added)
+++ fsf/trunk/ports/sysdeps/arm/aeabi_errno_addr.c Sat Apr 21 17:04:56 2012
@@ -1,0 +1,24 @@
+/* Copyright (C) 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 <errno.h>
+
+volatile int *
+__aeabi_errno_addr (void)
+{
+  return &errno;
+}

Added: fsf/trunk/ports/sysdeps/arm/aeabi_lcsts.c
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/aeabi_lcsts.c (added)
+++ fsf/trunk/ports/sysdeps/arm/aeabi_lcsts.c Sat Apr 21 17:04:56 2012
@@ -1,0 +1,98 @@
+/* Link-time constants for ARM EABI.
+   Copyright (C) 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.
+
+   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/>.  */
+
+/* The ARM EABI requires that we provide ISO compile-time constants as
+   link-time constants.  Some portable applications may reference these.  */
+
+#include <errno.h>
+#include <limits.h>
+#include <locale.h>
+#include <setjmp.h>
+#include <signal.h>
+#include <stdio.h>
+#include <time.h>
+
+#define eabi_constant2(X,Y) const int __aeabi_##X attribute_hidden = Y
+#define eabi_constant(X) const int __aeabi_##X attribute_hidden = X
+
+eabi_constant (EDOM);
+eabi_constant (ERANGE);
+eabi_constant (EILSEQ);
+
+eabi_constant (MB_LEN_MAX);
+
+eabi_constant (LC_COLLATE);
+eabi_constant (LC_CTYPE);
+eabi_constant (LC_MONETARY);
+eabi_constant (LC_NUMERIC);
+eabi_constant (LC_TIME);
+eabi_constant (LC_ALL);
+
+/* The value of __aeabi_JMP_BUF_SIZE is the number of doublewords in a
+   jmp_buf.  */
+eabi_constant2 (JMP_BUF_SIZE, sizeof (jmp_buf) / 8);
+
+eabi_constant (SIGABRT);
+eabi_constant (SIGFPE);
+eabi_constant (SIGILL);
+eabi_constant (SIGINT);
+eabi_constant (SIGSEGV);
+eabi_constant (SIGTERM);
+
+eabi_constant2 (IOFBF, _IOFBF);
+eabi_constant2 (IOLBF, _IOLBF);
+eabi_constant2 (IONBF, _IONBF);
+eabi_constant (BUFSIZ);
+eabi_constant (FOPEN_MAX);
+eabi_constant (TMP_MAX);
+eabi_constant (FILENAME_MAX);
+eabi_constant (L_tmpnam);
+
+FILE *__aeabi_stdin attribute_hidden;
+FILE *__aeabi_stdout attribute_hidden;
+FILE *__aeabi_stderr attribute_hidden;
+
+static void __attribute__ ((used))
+setup_aeabi_stdio (void)
+{
+  __aeabi_stdin = stdin;
+  __aeabi_stdout = stdout;
+  __aeabi_stderr = stderr;
+}
+
+static void (*fp) (void) __attribute__ ((used, section (".preinit_array")))
+  = setup_aeabi_stdio;
+
+eabi_constant (CLOCKS_PER_SEC);

Added: fsf/trunk/ports/sysdeps/arm/aeabi_localeconv.c
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/aeabi_localeconv.c (added)
+++ fsf/trunk/ports/sysdeps/arm/aeabi_localeconv.c Sat Apr 21 17:04:56 2012
@@ -1,0 +1,24 @@
+/* Copyright (C) 2004, 2005, 2008 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 <locale.h>
+
+struct lconv *
+__aeabi_localeconv (void)
+{
+  return __localeconv ();
+}

Added: fsf/trunk/ports/sysdeps/arm/aeabi_math.c
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/aeabi_math.c (added)
+++ fsf/trunk/ports/sysdeps/arm/aeabi_math.c Sat Apr 21 17:04:56 2012
@@ -1,0 +1,41 @@
+/* Copyright (C) 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.
+
+   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 <math.h>
+
+const double __aeabi_HUGE_VAL attribute_hidden = HUGE_VAL;
+const long double __aeabi_HUGE_VALL attribute_hidden = HUGE_VALL;
+const float __aeabi_HUGE_VALF attribute_hidden = HUGE_VALF;
+const float __aeabi_INFINITY attribute_hidden = INFINITY;
+const float __aeabi_NAN attribute_hidden = NAN;

Added: fsf/trunk/ports/sysdeps/arm/aeabi_mb_cur_max.c
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/aeabi_mb_cur_max.c (added)
+++ fsf/trunk/ports/sysdeps/arm/aeabi_mb_cur_max.c Sat Apr 21 17:04:56 2012
@@ -1,0 +1,27 @@
+/* Copyright (C) 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 <langinfo.h>
+#include <locale.h>
+#include <stdlib.h>
+#include <locale/localeinfo.h>
+
+int
+__aeabi_MB_CUR_MAX (void)
+{
+  return MB_CUR_MAX;
+}

Added: fsf/trunk/ports/sysdeps/arm/aeabi_memclr.c
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/aeabi_memclr.c (added)
+++ fsf/trunk/ports/sysdeps/arm/aeabi_memclr.c Sat Apr 21 17:04:56 2012
@@ -1,0 +1,30 @@
+/* Copyright (C) 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 <string.h>
+
+/* Clear memory.  Can't alias to bzero because it's not defined in the
+   same translation unit.  */
+void
+__aeabi_memclr (void *dest, size_t n)
+{
+  __bzero (dest, n);
+}
+
+/* Versions of the above which may assume memory alignment.  */
+strong_alias (__aeabi_memclr, __aeabi_memclr4)
+strong_alias (__aeabi_memclr, __aeabi_memclr8)

Added: fsf/trunk/ports/sysdeps/arm/aeabi_memcpy.c
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/aeabi_memcpy.c (added)
+++ fsf/trunk/ports/sysdeps/arm/aeabi_memcpy.c Sat Apr 21 17:04:56 2012
@@ -1,0 +1,31 @@
+/* Copyright (C) 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 <string.h>
+
+/* Copy memory like memcpy, but no return value required.  Can't alias
+   to memcpy because it's not defined in the same translation
+   unit.  */
+void
+__aeabi_memcpy (void *dest, const void *src, size_t n)
+{
+  memcpy (dest, src, n);
+}
+
+/* Versions of the above which may assume memory alignment.  */
+strong_alias (__aeabi_memcpy, __aeabi_memcpy4)
+strong_alias (__aeabi_memcpy, __aeabi_memcpy8)

Added: fsf/trunk/ports/sysdeps/arm/aeabi_memmove.c
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/aeabi_memmove.c (added)
+++ fsf/trunk/ports/sysdeps/arm/aeabi_memmove.c Sat Apr 21 17:04:56 2012
@@ -1,0 +1,31 @@
+/* Copyright (C) 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 <string.h>
+
+/* Copy memory like memmove, but no return value required.  Can't
+   alias to memmove because it's not defined in the same translation
+   unit.  */
+void
+__aeabi_memmove (void *dest, const void *src, size_t n)
+{
+  memmove (dest, src, n);
+}
+
+/* Versions of the above which may assume memory alignment.  */
+strong_alias (__aeabi_memmove, __aeabi_memmove4)
+strong_alias (__aeabi_memmove, __aeabi_memmove8)

Added: fsf/trunk/ports/sysdeps/arm/aeabi_memset.c
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/aeabi_memset.c (added)
+++ fsf/trunk/ports/sysdeps/arm/aeabi_memset.c Sat Apr 21 17:04:56 2012
@@ -1,0 +1,30 @@
+/* Copyright (C) 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 <string.h>
+
+/* Set memory like memset, but different argument order and no return
+   value required.  */
+void
+__aeabi_memset (void *dest, size_t n, int c)
+{
+  memset (dest, c, n);
+}
+
+/* Versions of the above which may assume memory alignment.  */
+strong_alias (__aeabi_memset, __aeabi_memset4)
+strong_alias (__aeabi_memset, __aeabi_memset8)

Added: fsf/trunk/ports/sysdeps/arm/aeabi_sighandlers.S
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/aeabi_sighandlers.S (added)
+++ fsf/trunk/ports/sysdeps/arm/aeabi_sighandlers.S Sat Apr 21 17:04:56 2012
@@ -1,0 +1,53 @@
+/* Link-time constants for ARM EABI - signal handlers.
+   Copyright (C) 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.
+
+   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/>.  */
+
+/* The ARM EABI defines these as "functions".  */
+
+#include <sysdep.h>
+
+	.global __aeabi_SIG_DFL
+	.hidden __aeabi_SIG_DFL
+	.type __aeabi_SIG_DFL, %function
+	.set __aeabi_SIG_DFL, 0
+
+	.global __aeabi_SIG_IGN
+	.hidden __aeabi_SIG_IGN
+	.type __aeabi_SIG_IGN, %function
+	.set __aeabi_SIG_IGN, 1
+
+	.global __aeabi_SIG_ERR
+	.hidden __aeabi_SIG_ERR
+	.type __aeabi_SIG_ERR, %function
+	.set __aeabi_SIG_ERR, -1

Added: fsf/trunk/ports/sysdeps/arm/aeabi_unwind_cpp_pr1.c
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/aeabi_unwind_cpp_pr1.c (added)
+++ fsf/trunk/ports/sysdeps/arm/aeabi_unwind_cpp_pr1.c Sat Apr 21 17:04:56 2012
@@ -1,0 +1,51 @@
+/* Copyright (C) 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/>.  */
+
+/* Because some objects in ld.so and libc.so are built with
+   -fexceptions, we end up with references to this personality
+   routine.  However, these libraries are not linked against
+   libgcc_eh.a, so we need a dummy definition.   This routine will
+   never actually be called.  */
+
+#include <stdlib.h>
+
+attribute_hidden
+void
+__aeabi_unwind_cpp_pr0 (void)
+{
+#ifndef IS_IN_rtld
+  abort ();
+#endif
+}
+
+attribute_hidden
+void
+__aeabi_unwind_cpp_pr1 (void)
+{
+#ifndef IS_IN_rtld
+  abort ();
+#endif
+}
+
+attribute_hidden
+void
+__aeabi_unwind_cpp_pr2 (void)
+{
+#ifndef IS_IN_rtld
+  abort ();
+#endif
+}

Added: fsf/trunk/ports/sysdeps/arm/arm-mcount.S
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/arm-mcount.S (added)
+++ fsf/trunk/ports/sysdeps/arm/arm-mcount.S Sat Apr 21 17:04:56 2012
@@ -1,0 +1,108 @@
+/* Implementation of profiling support.  ARM EABI version.
+   Copyright (C) 2008, 2009, 2010 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/>.  */
+
+/* Don't call mcount when calling mcount...  */
+#undef PROF
+
+#include <sysdep.h>
+
+
+#ifdef __thumb2__
+	.thumb
+	.syntax unified
+#endif
+
+
+/* Use an assembly stub with a special ABI.  The calling lr has been
+   pushed to the stack (which will be misaligned).  We should preserve
+   all registers except ip and pop a word off the stack.
+
+   NOTE: This assumes mcount_internal does not clobber any non-core
+   (coprocessor) registers.  Currently this is true, but may require
+   additional attention in the future.
+
+   The calling sequence looks something like:
+func:
+   push {lr}
+   bl __gnu_mount_nc
+   <function body>
+*/
+
+ENTRY(__gnu_mcount_nc)
+	push {r0, r1, r2, r3, lr}
+	cfi_adjust_cfa_offset (20)
+	cfi_rel_offset (r0, 0)
+	cfi_rel_offset (r1, 4)
+	cfi_rel_offset (r2, 8)
+	cfi_rel_offset (r3, 12)
+	cfi_rel_offset (lr, 16)
+	bic r1, lr, #1
+	ldr r0, [sp, #20]
+	bl __mcount_internal
+	pop {r0, r1, r2, r3, ip, lr}
+	cfi_adjust_cfa_offset (-24)
+	cfi_restore (r0)
+	cfi_restore (r1)
+	cfi_restore (r2)
+	cfi_restore (r3)
+	cfi_register (lr, ip)
+	bx ip
+END(__gnu_mcount_nc)
+
+
+/* Provide old mcount for backwards compatibility.  This requires
+   code be compiled with APCS frame pointers.  */
+
+ENTRY(_mcount)
+	stmdb sp!, {r0, r1, r2, r3, fp, lr}
+	cfi_adjust_cfa_offset (24)
+	cfi_rel_offset (r0, 0)
+	cfi_rel_offset (r1, 4)
+	cfi_rel_offset (r2, 8)
+	cfi_rel_offset (r3, 12)
+	cfi_rel_offset (fp, 16)
+	cfi_rel_offset (lr, 20)
+#ifdef __thumb2__
+	movs r0, fp
+	ittt ne
+	ldrne r0, [r0, #-4]
+#else
+	movs fp, fp
+	ldrne r0, [fp, #-4]
+#endif
+	movnes r1, lr
+	blne __mcount_internal
+#ifdef __thumb2__
+	ldmia sp!, {r0, r1, r2, r3, fp, pc}
+#else
+	ldmia sp!, {r0, r1, r2, r3, fp, lr}
+	cfi_adjust_cfa_offset (-24)
+	cfi_restore (r0)
+	cfi_restore (r1)
+	cfi_restore (r2)
+	cfi_restore (r3)
+	cfi_restore (fp)
+	cfi_restore (lr)
+	bx lr
+#endif
+END(_mcount)
+
+/* The canonical name for the function is `_mcount' in both C and asm,
+   but some old asm code might assume it's `mcount'.  */
+#undef mcount
+weak_alias (_mcount, mcount)

Added: fsf/trunk/ports/sysdeps/arm/armv6t2/memchr.S
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/armv6t2/memchr.S (added)
+++ fsf/trunk/ports/sysdeps/arm/armv6t2/memchr.S Sat Apr 21 17:04:56 2012
@@ -1,0 +1,163 @@
+/* Copyright (C) 2011 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Code contributed by Dave Gilbert <david.gilbert@xxxxxxxxxx>
+
+   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.h>
+
+@ This memchr routine is optimised on a Cortex-A9 and should work on all ARMv7
+@ and ARMv6T2 processors.  It has a fast path for short sizes, and has an
+@ optimised path for large data sets; the worst case is finding the match early
+@ in a large data set.
+@ Note: The use of cbz/cbnz means it's Thumb only
+
+@ 2011-07-15 david.gilbert@xxxxxxxxxx
+@    Copy from Cortex strings release 21 and change license
+@ http://bazaar.launchpad.net/~linaro-toolchain-dev/cortex-strings/trunk/view/head:/src/linaro-a9/memchr.S
+@    Change function declarations/entry/exit
+@ 2011-12-01 david.gilbert@xxxxxxxxxx
+@    Add some fixes from comments received (including use of ldrd instead ldm)
+@ 2011-12-07 david.gilbert@xxxxxxxxxx
+@    Removed cbz from align loop - can't be taken
+
+@ this lets us check a flag in a 00/ff byte easily in either endianness
+#ifdef __ARMEB__
+#define CHARTSTMASK(c) 1<<(31-(c*8))
+#else
+#define CHARTSTMASK(c) 1<<(c*8)
+#endif
+	.syntax unified
+
+	.text
+	.thumb
+
+@ ---------------------------------------------------------------------------
+	.thumb_func
+	.global memchr
+	.type memchr,%function
+ENTRY(memchr)
+	@ r0 = start of memory to scan
+	@ r1 = character to look for
+	@ r2 = length
+	@ returns r0 = pointer to character or NULL if not found
+	and	r1,r1,#0xff	@ Don't think we can trust the caller to actually pass a char
+
+	cmp	r2,#16		@ If it's short don't bother with anything clever
+	blt	20f
+
+	tst	r0, #7		@ If it's already aligned skip the next bit
+	beq	10f
+
+	@ Work up to an aligned point
+5:
+	ldrb	r3, [r0],#1
+	subs	r2, r2, #1
+	cmp	r3, r1
+	beq	50f		@ If it matches exit found
+	tst	r0, #7
+	bne	5b		@ If not aligned yet then do next byte
+
+10:
+	@ At this point, we are aligned, we know we have at least 8 bytes to work with
+	push	{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)
+
+	cfi_remember_state
+
+	orr	r1, r1, r1, lsl #8	@ expand the match word across to all bytes
+	orr	r1, r1, r1, lsl #16
+	bic	r4, r2, #7	@ Number of double words to work with * 8
+	mvns	r7, #0		@ all F's
+	movs	r3, #0
+
+15:
+	ldrd 	r5,r6, [r0],#8
+	subs	r4, r4, #8
+	eor	r5,r5, r1	@ Get it so that r5,r6 have 00's where the bytes match the target
+	eor	r6,r6, r1
+	uadd8	r5, r5, r7	@ Parallel add 0xff - sets the GE bits for anything that wasn't 0
+	sel	r5, r3, r7	@ bytes are 00 for none-00 bytes, or ff for 00 bytes - NOTE INVERSION
+	uadd8	r6, r6, r7	@ Parallel add 0xff - sets the GE bits for anything that wasn't 0
+	sel	r6, r5, r7	@ chained....bytes are 00 for none-00 bytes, or ff for 00 bytes - NOTE INVERSION
+	cbnz	r6, 60f
+	bne	15b		@ (Flags from the subs above) If not run out of bytes then go around again
+
+	pop	{r4,r5,r6,r7}
+	cfi_adjust_cfa_offset (-16)
+	cfi_restore (r4)
+	cfi_restore (r5)
+	cfi_restore (r6)
+	cfi_restore (r7)
+
+	and	r1,r1,#0xff	@ Get r1 back to a single character from the expansion above
+	and	r2,r2,#7	@ Leave the count remaining as the number after the double words have been done
+
+20:
+	cbz	r2, 40f		@ 0 length or hit the end already then not found
+
+21:  @ Post aligned section, or just a short call
+	ldrb	r3,[r0],#1
+	subs	r2,r2,#1
+	eor	r3,r3,r1	@ r3 = 0 if match - doesn't break flags from sub
+	cbz	r3, 50f
+	bne	21b		@ on r2 flags
+
+40:
+	movs	r0,#0		@ not found
+	DO_RET(lr)
+
+50:
+	subs	r0,r0,#1	@ found
+	DO_RET(lr)
+
+60:  @ We're here because the fast path found a hit - now we have to track down exactly which word it was
+     @ r0 points to the start of the double word after the one that was tested
+     @ r5 has the 00/ff pattern for the first word, r6 has the chained value
+	cfi_restore_state
+	cmp	r5, #0
+	itte	eq
+	moveq	r5, r6		@ the end is in the 2nd word
+	subeq	r0,r0,#3	@ Points to 2nd byte of 2nd word
+	subne	r0,r0,#7	@ or 2nd byte of 1st word
+
+	@ r0 currently points to the 2nd byte of the word containing the hit
+	tst	r5, # CHARTSTMASK(0)	@ 1st character
+	bne	61f
+	adds	r0,r0,#1
+	tst	r5, # CHARTSTMASK(1)	@ 2nd character
+	ittt	eq
+	addeq	r0,r0,#1
+	tsteq	r5, # (3<<15)		@ 2nd & 3rd character
+	@ If not the 3rd must be the last one
+	addeq	r0,r0,#1
+
+61:
+	pop	{r4,r5,r6,r7}
+	cfi_adjust_cfa_offset (-16)
+	cfi_restore (r4)
+	cfi_restore (r5)
+	cfi_restore (r6)
+	cfi_restore (r7)
+
+	subs	r0,r0,#1
+	DO_RET(lr)
+
+END(memchr)
+libc_hidden_builtin_def (memchr)

Added: fsf/trunk/ports/sysdeps/arm/armv7/Implies
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/armv7/Implies (added)
+++ fsf/trunk/ports/sysdeps/arm/armv7/Implies Sat Apr 21 17:04:56 2012
@@ -1,0 +1,2 @@
+# We can do everything that 6T2 can
+arm/armv6t2

Added: fsf/trunk/ports/sysdeps/arm/backtrace.c
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/backtrace.c (added)
+++ fsf/trunk/ports/sysdeps/arm/backtrace.c Sat Apr 21 17:04:56 2012
@@ -1,0 +1,125 @@
+/* Return backtrace of current program state.
+   Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Kazu Hirata <kazu@xxxxxxxxxxxxxxxx>, 2008.
+
+   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 <bits/libc-lock.h>
+#include <dlfcn.h>
+#include <execinfo.h>
+#include <stdlib.h>
+#include <unwind.h>
+
+struct trace_arg
+{
+  void **array;
+  int cnt, size;
+};
+
+#ifdef SHARED
+static _Unwind_Reason_Code (*unwind_backtrace) (_Unwind_Trace_Fn, void *);
+static _Unwind_VRS_Result (*unwind_vrs_get) (_Unwind_Context *,
+					     _Unwind_VRS_RegClass,
+					     _uw,
+					     _Unwind_VRS_DataRepresentation,
+					     void *);
+
+static void *libgcc_handle;
+
+static void
+init (void)
+{
+  libgcc_handle = __libc_dlopen ("libgcc_s.so.1");
+
+  if (libgcc_handle == NULL)
+    return;
+
+  unwind_backtrace = __libc_dlsym (libgcc_handle, "_Unwind_Backtrace");
+  unwind_vrs_get = __libc_dlsym (libgcc_handle, "_Unwind_VRS_Get");
+  if (unwind_vrs_get == NULL)
+    unwind_backtrace = NULL;
+}
+
+/* This function is identical to "_Unwind_GetGR", except that it uses
+   "unwind_vrs_get" instead of "_Unwind_VRS_Get".  */
+static inline _Unwind_Word
+unwind_getgr (_Unwind_Context *context, int regno)
+{
+  _uw val;
+  unwind_vrs_get (context, _UVRSC_CORE, regno, _UVRSD_UINT32, &val);
+  return val;
+}
+
+/* This macro is identical to the _Unwind_GetIP macro, except that it
+   uses "unwind_getgr" instead of "_Unwind_GetGR".  */
+# define unwind_getip(context) \
+  (unwind_getgr (context, 15) & ~(_Unwind_Word)1)
+#else
+# define unwind_backtrace _Unwind_Backtrace
+# define unwind_getip _Unwind_GetIP
+#endif
+
+static _Unwind_Reason_Code
+backtrace_helper (struct _Unwind_Context *ctx, void *a)
+{
+  struct trace_arg *arg = a;
+
+  /* We are first called with address in the __backtrace function.
+     Skip it.  */
+  if (arg->cnt != -1)
+    arg->array[arg->cnt] = (void *) unwind_getip (ctx);
+  if (++arg->cnt == arg->size)
+    return _URC_END_OF_STACK;
+  return _URC_NO_REASON;
+}
+
+int
+__backtrace (array, size)
+     void **array;
+     int size;
+{
+  struct trace_arg arg = { .array = array, .size = size, .cnt = -1 };
+#ifdef SHARED
+  __libc_once_define (static, once);
+
+  __libc_once (once, init);
+  if (unwind_backtrace == NULL)
+    return 0;
+#endif
+
+  if (size >= 1)
+    unwind_backtrace (backtrace_helper, &arg);
+
+  if (arg.cnt > 1 && arg.array[arg.cnt - 1] == NULL)
+    --arg.cnt;
+  return arg.cnt != -1 ? arg.cnt : 0;
+}
+weak_alias (__backtrace, backtrace)
+libc_hidden_def (__backtrace)
+
+
+#ifdef SHARED
+/* Free all resources if necessary.  */
+libc_freeres_fn (free_mem)
+{
+  unwind_backtrace = NULL;
+  if (libgcc_handle != NULL)
+    {
+      __libc_dlclose (libgcc_handle);
+      libgcc_handle = NULL;
+    }
+}
+#endif

Added: fsf/trunk/ports/sysdeps/arm/bits/fenv.h
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/bits/fenv.h (added)
+++ fsf/trunk/ports/sysdeps/arm/bits/fenv.h Sat Apr 21 17:04:56 2012
@@ -1,0 +1,73 @@
+/* Copyright (C) 2004, 2005, 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, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _FENV_H
+# error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
+#endif
+
+/* Define bits representing exceptions in the FPU status word.  */
+enum
+  {
+    FE_INVALID = 1,
+#define FE_INVALID FE_INVALID
+    FE_DIVBYZERO = 2,
+#define FE_DIVBYZERO FE_DIVBYZERO
+    FE_OVERFLOW = 4,
+#define FE_OVERFLOW FE_OVERFLOW
+    FE_UNDERFLOW = 8,
+#define FE_UNDERFLOW FE_UNDERFLOW
+    FE_INEXACT = 16,
+#define FE_INEXACT FE_INEXACT
+  };
+
+/* Amount to shift by to convert an exception to a mask bit.  */
+#define FE_EXCEPT_SHIFT	8
+
+/* All supported exceptions.  */
+#define FE_ALL_EXCEPT	\
+	(FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW | FE_INEXACT)
+
+/* VFP supports all of the four defined rounding modes.  */
+enum
+  {
+    FE_TONEAREST = 0,
+#define FE_TONEAREST FE_TONEAREST
+    FE_UPWARD = 0x400000,
+#define FE_UPWARD FE_UPWARD
+    FE_DOWNWARD = 0x800000,
+#define FE_DOWNWARD FE_DOWNWARD
+    FE_TOWARDZERO = 0xc00000
+#define FE_TOWARDZERO FE_TOWARDZERO
+  };
+
+/* Type representing exception flags. */
+typedef unsigned int fexcept_t;
+
+/* Type representing floating-point environment.  */
+typedef struct
+  {
+    unsigned int __cw;
+  }
+fenv_t;
+
+/* If the default argument is used we use this value.  */
+#define FE_DFL_ENV	((fenv_t *) -1l)
+
+#ifdef __USE_GNU
+/* Floating-point environment where none of the exceptions are masked.  */
+# define FE_NOMASK_ENV  ((const fenv_t *) -2)
+#endif

Added: fsf/trunk/ports/sysdeps/arm/bits/huge_val.h
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/bits/huge_val.h (added)
+++ fsf/trunk/ports/sysdeps/arm/bits/huge_val.h Sat Apr 21 17:04:56 2012
@@ -1,0 +1,54 @@
+/* `HUGE_VAL' constant for IEEE 754 machines (where it is infinity).
+   Used by <stdlib.h> and <math.h> functions for overflow.
+   Copyright (C) 1992, 1995, 1996, 1997, 1999, 2000, 2004
+   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/>.  */
+
+#ifndef _MATH_H
+# error "Never use <bits/huge_val.h> directly; include <math.h> instead."
+#endif
+
+/* IEEE positive infinity (-HUGE_VAL is negative infinity).  */
+
+#if __GNUC_PREREQ(3,3)
+# define HUGE_VAL	(__builtin_huge_val())
+#elif __GNUC_PREREQ(2,96)
+# define HUGE_VAL	(__extension__ 0x1.0p2047)
+#elif defined __GNUC__
+
+# define HUGE_VAL \
+  (__extension__							      \
+   ((union { unsigned __l __attribute__((__mode__(__DI__))); double __d; })   \
+    { __l: 0x7ff0000000000000ULL }).__d)
+
+#else /* not GCC */
+
+# include <endian.h>
+
+typedef union { unsigned char __c[8]; double __d; } __huge_val_t;
+
+# if __BYTE_ORDER == __BIG_ENDIAN
+#  define __HUGE_VAL_bytes	{ 0x7f, 0xf0, 0, 0, 0, 0, 0, 0 }
+# endif
+# if __BYTE_ORDER == __LITTLE_ENDIAN
+#  define __HUGE_VAL_bytes	{ 0, 0, 0, 0, 0, 0, 0xf0, 0x7f }
+# endif
+
+static __huge_val_t __huge_val = { __HUGE_VAL_bytes };
+# define HUGE_VAL	(__huge_val.__d)
+
+#endif	/* GCC.  */

Added: fsf/trunk/ports/sysdeps/arm/bits/setjmp.h
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/bits/setjmp.h (added)
+++ fsf/trunk/ports/sysdeps/arm/bits/setjmp.h Sat Apr 21 17:04:56 2012
@@ -1,0 +1,37 @@
+/* Copyright (C) 2004, 2005, 2006, 2009 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/>.  */
+
+/* Define the machine-dependent type `jmp_buf'.  ARM EABI version.  */
+
+#ifndef _BITS_SETJMP_H
+#define _BITS_SETJMP_H 1
+
+#if !defined _SETJMP_H && !defined _PTHREAD_H
+# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
+#endif
+
+#ifndef _ASM
+/* The exact set of registers saved may depend on the particular core
+   in use, as some coprocessor registers may need to be saved.  The C
+   Library ABI requires that the buffer be 8-byte aligned, and
+   recommends that the buffer contain 64 words.  The first 28 words
+   are occupied by v1-v6, sl, fp, sp, pc, d8-d15, and fpscr.  (Note
+   that d8-15 require 17 words, due to the use of fstmx.)  */
+typedef int __jmp_buf[64] __attribute__((__aligned__ (8)));
+#endif
+
+#endif

Added: fsf/trunk/ports/sysdeps/arm/fclrexcpt.c
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/fclrexcpt.c (added)
+++ fsf/trunk/ports/sysdeps/arm/fclrexcpt.c Sat Apr 21 17:04:56 2012
@@ -1,0 +1,60 @@
+/* Clear given exceptions in current floating-point environment.
+   Copyright (C) 1997,98,99,2000,01,05,11 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 <fenv.h>
+#include <fpu_control.h>
+
+#include <unistd.h>
+#include <ldsodefs.h>
+#include <dl-procinfo.h>
+#include <sysdep.h>
+
+int
+__feclearexcept (int excepts)
+{
+  if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
+    {
+      unsigned long int temp;
+
+      /* Mask out unsupported bits/exceptions.  */
+      excepts &= FE_ALL_EXCEPT;
+
+      /* Get the current floating point status. */
+      _FPU_GETCW (temp);
+
+      /* Clear the relevant bits.  */
+      temp = (temp & ~FE_ALL_EXCEPT) | (temp & FE_ALL_EXCEPT & ~excepts);
+
+      /* Put the new data in effect.  */
+      _FPU_SETCW (temp);
+
+      /* Success.  */
+      return 0;
+    }
+
+  /* Unsupported, so fail unless nothing needs to be done.  */
+  return (excepts != 0);
+}
+
+#include <shlib-compat.h>
+#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
+strong_alias (__feclearexcept, __old_feclearexcept)
+compat_symbol (libm, __old_feclearexcept, feclearexcept, GLIBC_2_1);
+#endif
+
+versioned_symbol (libm, __feclearexcept, feclearexcept, GLIBC_2_2);

Added: fsf/trunk/ports/sysdeps/arm/fedisblxcpt.c
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/fedisblxcpt.c (added)
+++ fsf/trunk/ports/sysdeps/arm/fedisblxcpt.c Sat Apr 21 17:04:56 2012
@@ -1,0 +1,50 @@
+/* Disable floating-point exceptions.
+   Copyright (C) 2001, 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Philip Blundell <philb@xxxxxxx>, 2001.
+
+   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 <fenv.h>
+#include <fpu_control.h>
+
+#include <unistd.h>
+#include <ldsodefs.h>
+#include <dl-procinfo.h>
+#include <sysdep.h>
+
+int
+fedisableexcept (int excepts)
+{
+  if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
+    {
+      unsigned long int new_exc, old_exc;
+
+      _FPU_GETCW(new_exc);
+
+      old_exc = (new_exc >> FE_EXCEPT_SHIFT) & FE_ALL_EXCEPT;
+
+      excepts &= FE_ALL_EXCEPT;
+
+      new_exc &= ~(excepts << FE_EXCEPT_SHIFT);
+
+      _FPU_SETCW(new_exc);
+
+      return old_exc;
+    }
+
+  /* Unsupported, so return -1 for failure.  */
+  return -1;
+}

Added: fsf/trunk/ports/sysdeps/arm/feenablxcpt.c
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/feenablxcpt.c (added)
+++ fsf/trunk/ports/sysdeps/arm/feenablxcpt.c Sat Apr 21 17:04:56 2012
@@ -1,0 +1,50 @@
+/* Enable floating-point exceptions.
+   Copyright (C) 2001, 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Philip Blundell <philb@xxxxxxx>, 2001.
+
+   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 <fenv.h>
+#include <fpu_control.h>
+
+#include <unistd.h>
+#include <ldsodefs.h>
+#include <dl-procinfo.h>
+#include <sysdep.h>
+
+int
+feenableexcept (int excepts)
+{
+  if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
+    {
+      unsigned long int new_exc, old_exc;
+
+      _FPU_GETCW(new_exc);
+
+      old_exc = (new_exc >> FE_EXCEPT_SHIFT) & FE_ALL_EXCEPT;
+
+      excepts &= FE_ALL_EXCEPT;
+
+      new_exc |= (excepts << FE_EXCEPT_SHIFT);
+
+      _FPU_SETCW(new_exc);
+
+      return old_exc;
+    }
+
+  /* Unsupported, so return -1 for failure.  */
+  return -1;
+}

Added: fsf/trunk/ports/sysdeps/arm/fegetenv.c
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/fegetenv.c (added)
+++ fsf/trunk/ports/sysdeps/arm/fegetenv.c Sat Apr 21 17:04:56 2012
@@ -1,0 +1,51 @@
+/* Store current floating-point environment.
+   Copyright (C) 1997,98,99,2000,01,05,10 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 <fenv.h>
+#include <fpu_control.h>
+
+#include <unistd.h>
+#include <ldsodefs.h>
+#include <dl-procinfo.h>
+#include <sysdep.h>
+
+int
+__fegetenv (fenv_t *envp)
+{
+  if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
+    {
+      unsigned long int temp;
+      _FPU_GETCW (temp);
+      envp->__cw = temp;
+
+      /* Success.  */
+      return 0;
+    }
+
+  /* Unsupported, so fail.  */
+  return 1;
+}
+
+#include <shlib-compat.h>
+#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
+strong_alias (__fegetenv, __old_fegetenv)
+compat_symbol (libm, __old_fegetenv, fegetenv, GLIBC_2_1);
+#endif
+
+libm_hidden_ver (__fegetenv, fegetenv)
+versioned_symbol (libm, __fegetenv, fegetenv, GLIBC_2_2);

Added: fsf/trunk/ports/sysdeps/arm/fegetexcept.c
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/fegetexcept.c (added)
+++ fsf/trunk/ports/sysdeps/arm/fegetexcept.c Sat Apr 21 17:04:56 2012
@@ -1,0 +1,42 @@
+/* Get floating-point exceptions.
+   Copyright (C) 2001, 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Philip Blundell <philb@xxxxxxx>, 2001
+
+   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 <fenv.h>
+#include <fpu_control.h>
+
+#include <unistd.h>
+#include <ldsodefs.h>
+#include <dl-procinfo.h>
+#include <sysdep.h>
+
+int
+fegetexcept (void)
+{
+  if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
+    {
+      unsigned long temp;
+
+      _FPU_GETCW (temp);
+
+      return (temp >> FE_EXCEPT_SHIFT) & FE_ALL_EXCEPT;
+    }
+
+  /* Unsupported. Return all exceptions disabled.  */
+  return 0;
+}

Added: fsf/trunk/ports/sysdeps/arm/fegetround.c
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/fegetround.c (added)
+++ fsf/trunk/ports/sysdeps/arm/fegetround.c Sat Apr 21 17:04:56 2012
@@ -1,0 +1,42 @@
+/* Return current rounding direction.
+   Copyright (C) 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 <fenv.h>
+#include <fpu_control.h>
+
+#include <unistd.h>
+#include <ldsodefs.h>
+#include <dl-procinfo.h>
+#include <sysdep.h>
+
+int
+fegetround (void)
+{
+  if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
+    {
+      unsigned int temp;
+
+      /* Get the current environment.  */
+      _FPU_GETCW (temp);
+
+      return temp & FE_TOWARDZERO;
+    }
+
+  /* The current soft-float implementation only handles TONEAREST.  */
+  return FE_TONEAREST;
+}

Added: fsf/trunk/ports/sysdeps/arm/feholdexcpt.c
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/feholdexcpt.c (added)
+++ fsf/trunk/ports/sysdeps/arm/feholdexcpt.c Sat Apr 21 17:04:56 2012
@@ -1,0 +1,53 @@
+/* Store current floating-point environment and clear exceptions.
+   Copyright (C) 1997, 1998, 1999, 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 <fenv.h>
+#include <fpu_control.h>
+
+#include <unistd.h>
+#include <ldsodefs.h>
+#include <dl-procinfo.h>
+#include <sysdep.h>
+
+int
+feholdexcept (fenv_t *envp)
+{
+  if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
+    {
+      unsigned long int temp;
+
+      /* Store the environment.  */
+      _FPU_GETCW(temp);
+      envp->__cw = temp;
+
+      /* Now set all exceptions to non-stop.  */
+      temp &= ~(FE_ALL_EXCEPT << FE_EXCEPT_SHIFT);
+
+      /* And clear all exception flags.  */
+      temp &= ~FE_ALL_EXCEPT;
+
+      _FPU_SETCW(temp);
+
+      return 0;
+    }
+
+  /* Unsupported, so fail.  */
+  return 1;
+}
+
+libm_hidden_def (feholdexcept)

Added: fsf/trunk/ports/sysdeps/arm/fesetenv.c
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/fesetenv.c (added)
+++ fsf/trunk/ports/sysdeps/arm/fesetenv.c Sat Apr 21 17:04:56 2012
@@ -1,0 +1,56 @@
+/* Install given floating-point environment.
+   Copyright (C) 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 <fenv.h>
+#include <fpu_control.h>
+
+#include <unistd.h>
+#include <ldsodefs.h>
+#include <dl-procinfo.h>
+#include <sysdep.h>
+
+int
+__fesetenv (const fenv_t *envp)
+{
+  if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
+    {
+      unsigned int temp;
+
+      _FPU_GETCW (temp);
+      temp &= _FPU_RESERVED;
+
+      if (envp == FE_DFL_ENV)
+	temp |= _FPU_DEFAULT;
+      else if (envp == FE_NOMASK_ENV)
+	temp |= _FPU_IEEE;
+      else
+	temp |= envp->__cw & ~_FPU_RESERVED;
+
+      _FPU_SETCW (temp);
+
+      /* Success.  */
+      return 0;
+    }
+
+  /* Unsupported, so fail.  */
+  return 1;
+}
+
+#include <shlib-compat.h>
+libm_hidden_ver (__fesetenv, fesetenv)
+versioned_symbol (libm, __fesetenv, fesetenv, GLIBC_2_2);

Added: fsf/trunk/ports/sysdeps/arm/fesetround.c
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/fesetround.c (added)
+++ fsf/trunk/ports/sysdeps/arm/fesetround.c Sat Apr 21 17:04:56 2012
@@ -1,0 +1,56 @@
+/* Set current rounding direction.
+   Copyright (C) 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 <fenv.h>
+#include <fpu_control.h>
+
+#include <unistd.h>
+#include <ldsodefs.h>
+#include <dl-procinfo.h>
+#include <sysdep.h>
+
+int
+fesetround (int round)
+{
+  if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
+    {
+      fpu_control_t temp;
+
+      switch (round)
+	{
+	case FE_TONEAREST:
+	case FE_UPWARD:
+	case FE_DOWNWARD:
+	case FE_TOWARDZERO:
+	  _FPU_GETCW (temp);
+	  temp = (temp & ~FE_TOWARDZERO) | round;
+	  _FPU_SETCW (temp);
+	  return 0;
+	default:
+	  return 1;
+	}
+    }
+  else if (round == FE_TONEAREST)
+    /* This is the only supported rounding mode for soft-fp.  */
+    return 0;
+
+  /* Unsupported, so fail.  */
+  return 1;
+}
+
+libm_hidden_def (fesetround)

Added: fsf/trunk/ports/sysdeps/arm/feupdateenv.c
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/feupdateenv.c (added)
+++ fsf/trunk/ports/sysdeps/arm/feupdateenv.c Sat Apr 21 17:04:56 2012
@@ -1,0 +1,59 @@
+/* Install given floating-point environment and raise exceptions.
+   Copyright (C) 1997, 1999, 2000, 2008, 2010 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 1997.
+
+   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 <fenv.h>
+#include <fpu_control.h>
+
+#include <unistd.h>
+#include <ldsodefs.h>
+#include <dl-procinfo.h>
+#include <sysdep.h>
+
+int
+__feupdateenv (const fenv_t *envp)
+{
+  if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
+    {
+      unsigned int temp;
+
+      /* Get the current exception state.  */
+      _FPU_GETCW (temp);
+
+      /* Install new environment.  */
+      fesetenv (envp);
+
+      /* Raise the saved exceptions.  */
+      feraiseexcept (temp & FE_ALL_EXCEPT);
+
+      /* Success.  */
+      return 0;
+    }
+
+  /* Unsupported, so fail.  */
+  return 1;
+}
+
+#include <shlib-compat.h>
+#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
+strong_alias (__feupdateenv, __old_feupdateenv)
+compat_symbol (libm, __old_feupdateenv, feupdateenv, GLIBC_2_1);
+#endif
+
+libm_hidden_ver (__feupdateenv, feupdateenv)
+versioned_symbol (libm, __feupdateenv, feupdateenv, GLIBC_2_2);

Added: fsf/trunk/ports/sysdeps/arm/fgetexcptflg.c
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/fgetexcptflg.c (added)
+++ fsf/trunk/ports/sysdeps/arm/fgetexcptflg.c Sat Apr 21 17:04:56 2012
@@ -1,0 +1,53 @@
+/* Store current representation for exceptions.
+   Copyright (C) 1997, 1999, 2000, 2008 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 1997.
+
+   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 <fenv.h>
+#include <fpu_control.h>
+
+#include <unistd.h>
+#include <ldsodefs.h>
+#include <dl-procinfo.h>
+#include <sysdep.h>
+
+int
+__fegetexceptflag (fexcept_t *flagp, int excepts)
+{
+  if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
+    {
+      unsigned long temp;
+
+      /* Get the current exceptions.  */
+      _FPU_GETCW (temp);
+
+      *flagp = temp & excepts & FE_ALL_EXCEPT;
+
+      /* Success.  */
+      return 0;
+    }
+
+  /* Unsupported, so fail.  */
+  return 1;
+}
+
+#include <shlib-compat.h>
+#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
+strong_alias (__fegetexceptflag, __old_fegetexceptflag)
+compat_symbol (libm, __old_fegetexceptflag, fegetexceptflag, GLIBC_2_1);
+#endif
+versioned_symbol (libm, __fegetexceptflag, fegetexceptflag, GLIBC_2_2);

Added: fsf/trunk/ports/sysdeps/arm/find_exidx.c
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/find_exidx.c (added)
+++ fsf/trunk/ports/sysdeps/arm/find_exidx.c Sat Apr 21 17:04:56 2012
@@ -1,0 +1,79 @@
+/* Copyright (C) 2005, 2008 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 <link.h>
+#include <unwind.h>
+
+struct unw_eh_callback_data
+{
+  _Unwind_Ptr pc;
+  _Unwind_Ptr exidx_start;
+  int exidx_len;
+};
+
+
+/* Callback to determins if the PC lies within an object, and remember the
+   location of the exception index table if it does.  */
+
+static int
+find_exidx_callback (struct dl_phdr_info * info, size_t size, void * ptr)
+{
+  struct unw_eh_callback_data * data;
+  const ElfW(Phdr) *phdr;
+  int i;
+  int match;
+  _Unwind_Ptr load_base;
+
+  data = (struct unw_eh_callback_data *) ptr;
+  load_base = info->dlpi_addr;
+  phdr = info->dlpi_phdr;
+
+  match = 0;
+  for (i = info->dlpi_phnum; i > 0; i--, phdr++)
+    {
+      if (phdr->p_type == PT_LOAD)
+        {
+          _Unwind_Ptr vaddr = phdr->p_vaddr + load_base;
+          if (data->pc >= vaddr && data->pc < vaddr + phdr->p_memsz)
+            match = 1;
+        }
+      else if (phdr->p_type == PT_ARM_EXIDX)
+	{
+	  data->exidx_start = (_Unwind_Ptr) (phdr->p_vaddr + load_base);
+	  data->exidx_len = phdr->p_memsz;
+	}
+    }
+
+  return match;
+}
+
+
+/* Find the exception index table containing PC.  */
+
+_Unwind_Ptr
+__gnu_Unwind_Find_exidx (_Unwind_Ptr pc, int * pcount)
+{
+  struct unw_eh_callback_data data;
+
+  data.pc = pc;
+  data.exidx_start = 0;
+  if (__dl_iterate_phdr (find_exidx_callback, &data) <= 0)
+    return 0;
+
+  *pcount = data.exidx_len / 8;
+  return data.exidx_start;
+}

Added: fsf/trunk/ports/sysdeps/arm/fpu_control.h
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/fpu_control.h (added)
+++ fsf/trunk/ports/sysdeps/arm/fpu_control.h Sat Apr 21 17:04:56 2012
@@ -1,0 +1,63 @@
+/* FPU control word definitions.  ARM VFP version.
+   Copyright (C) 2004, 2005, 2009 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/>.  */
+
+#ifndef _FPU_CONTROL_H
+#define _FPU_CONTROL_H
+
+#if !defined(_LIBC) && defined(__SOFTFP__)
+
+#define _FPU_RESERVED 0xffffffff
+#define _FPU_DEFAULT  0x00000000
+typedef unsigned int fpu_control_t;
+#define _FPU_GETCW(cw) 0
+#define _FPU_SETCW(cw) do { } while (0)
+extern fpu_control_t __fpu_control;
+
+#else
+
+/* masking of interrupts */
+#define _FPU_MASK_IM	0x00000100	/* invalid operation */
+#define _FPU_MASK_ZM	0x00000200	/* divide by zero */
+#define _FPU_MASK_OM	0x00000400	/* overflow */
+#define _FPU_MASK_UM	0x00000800	/* underflow */
+#define _FPU_MASK_PM	0x00001000	/* inexact */
+
+/* Some bits in the FPSCR are not yet defined.  They must be preserved when
+   modifying the contents.  */
+#define _FPU_RESERVED	0x0e08e0e0
+#define _FPU_DEFAULT    0x00000000
+/* Default + exceptions enabled. */
+#define _FPU_IEEE	(_FPU_DEFAULT | 0x00001f00)
+
+/* Type of the control word.  */
+typedef unsigned int fpu_control_t;
+
+/* Macros for accessing the hardware control word.  */
+/* This is fmrx %0, fpscr.  */
+#define _FPU_GETCW(cw) \
+  __asm__ __volatile__ ("mrc p10, 7, %0, cr1, cr0, 0" : "=r" (cw))
+/* This is fmxr fpscr, %0.  */
+#define _FPU_SETCW(cw) \
+  __asm__ __volatile__ ("mcr p10, 7, %0, cr1, cr0, 0" : : "r" (cw))
+
+/* Default control word set at startup.  */
+extern fpu_control_t __fpu_control;
+
+#endif /* __SOFTFP__ */
+
+#endif /* _FPU_CONTROL_H */

Added: fsf/trunk/ports/sysdeps/arm/fraiseexcpt.c
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/fraiseexcpt.c (added)
+++ fsf/trunk/ports/sysdeps/arm/fraiseexcpt.c Sat Apr 21 17:04:56 2012
@@ -1,0 +1,109 @@
+/* Raise given exceptions.
+   Copyright (C) 2004, 2005, 2011 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 <fpu_control.h>
+#include <fenv.h>
+#include <float.h>
+
+#include <unistd.h>
+#include <ldsodefs.h>
+#include <dl-procinfo.h>
+#include <sysdep.h>
+
+int
+feraiseexcept (int excepts)
+{
+  if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
+    {
+      int fpscr;
+      const float fp_zero = 0.0, fp_one = 1.0, fp_max = FLT_MAX,
+                  fp_min = FLT_MIN, fp_1e32 = 1.0e32f, fp_two = 2.0,
+		  fp_three = 3.0;
+
+      /* Raise exceptions represented by EXPECTS.  But we must raise only
+	 one signal at a time.  It is important that if the overflow/underflow
+	 exception and the inexact exception are given at the same time,
+	 the overflow/underflow exception follows the inexact exception.  After
+	 each exception we read from the fpscr, to force the exception to be
+	 raised immediately.  */
+
+      /* There are additional complications because this file may be compiled
+         without VFP support enabled, and we also can't assume that the
+	 assembler has VFP instructions enabled. To get around this we use the
+	 generic coprocessor mnemonics and avoid asking GCC to put float values
+	 in VFP registers.  */
+
+      /* First: invalid exception.  */
+      if (FE_INVALID & excepts)
+	__asm__ __volatile__ (
+	  "ldc p10, cr0, %1\n\t"                        /* flds s0, %1  */
+	  "cdp p10, 8, cr0, cr0, cr0, 0\n\t"            /* fdivs s0, s0, s0  */
+	  "mrc p10, 7, %0, cr1, cr0, 0" : "=r" (fpscr)  /* fmrx %0, fpscr  */
+			                : "m" (fp_zero)
+					: "s0");
+
+      /* Next: division by zero.  */
+      if (FE_DIVBYZERO & excepts)
+	__asm__ __volatile__ (
+	  "ldc p10, cr0, %1\n\t"                        /* flds s0, %1  */
+	  "ldcl p10, cr0, %2\n\t"                       /* flds s1, %2  */
+	  "cdp p10, 8, cr0, cr0, cr0, 1\n\t"            /* fdivs s0, s0, s1  */
+	  "mrc p10, 7, %0, cr1, cr0, 0" : "=r" (fpscr)  /* fmrx %0, fpscr  */
+			                : "m" (fp_one), "m" (fp_zero)
+					: "s0", "s1");
+
+      /* Next: overflow.  */
+      if (FE_OVERFLOW & excepts)
+	/* There's no way to raise overflow without also raising inexact.  */
+	__asm__ __volatile__ (
+	  "ldc p10, cr0, %1\n\t"                        /* flds s0, %1  */
+	  "ldcl p10, cr0, %2\n\t"                       /* flds s1, %2  */
+	  "cdp p10, 3, cr0, cr0, cr0, 1\n\t"            /* fadds s0, s0, s1  */
+	  "mrc p10, 7, %0, cr1, cr0, 0" : "=r" (fpscr)  /* fmrx %0, fpscr  */
+			                : "m" (fp_max), "m" (fp_1e32)
+					: "s0", "s1");
+
+      /* Next: underflow.  */
+      if (FE_UNDERFLOW & excepts)
+	__asm__ __volatile__ (
+	  "ldc p10, cr0, %1\n\t"                        /* flds s0, %1  */
+	  "ldcl p10, cr0, %2\n\t"                       /* flds s1, %2  */
+	  "cdp p10, 8, cr0, cr0, cr0, 1\n\t"            /* fdivs s0, s0, s1  */
+	  "mrc p10, 7, %0, cr1, cr0, 0" : "=r" (fpscr)  /* fmrx %0, fpscr  */
+			                : "m" (fp_min), "m" (fp_three)
+					: "s0", "s1");
+
+      /* Last: inexact.  */
+      if (FE_INEXACT & excepts)
+	__asm__ __volatile__ (
+	  "ldc p10, cr0, %1\n\t"                        /* flds s0, %1  */
+	  "ldcl p10, cr0, %2\n\t"                       /* flds s1, %2  */
+	  "cdp p10, 8, cr0, cr0, cr0, 1\n\t"            /* fdivs s0, s0, s1  */
+	  "mrc p10, 7, %0, cr1, cr0, 0" : "=r" (fpscr)  /* fmrx %0, fpscr  */
+			                : "m" (fp_two), "m" (fp_three)
+					: "s0", "s1");
+
+      /* Success.  */
+      return 0;
+    }
+
+  /* Unsupported, so fail unless nothing needs to be done.  */
+  return (excepts != 0);
+}
+
+libm_hidden_def (feraiseexcept)

Added: fsf/trunk/ports/sysdeps/arm/fsetexcptflg.c
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/fsetexcptflg.c (added)
+++ fsf/trunk/ports/sysdeps/arm/fsetexcptflg.c Sat Apr 21 17:04:56 2012
@@ -1,0 +1,59 @@
+/* Set floating-point environment exception handling.
+   Copyright (C) 1997,98,99,2000,01,05,08,11 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 <fenv.h>
+#include <math.h>
+#include <fpu_control.h>
+
+#include <unistd.h>
+#include <ldsodefs.h>
+#include <dl-procinfo.h>
+#include <sysdep.h>
+
+int
+__fesetexceptflag (const fexcept_t *flagp, int excepts)
+{
+  if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
+    {
+      fexcept_t temp;
+
+      /* Get the current environment.  */
+      _FPU_GETCW (temp);
+
+      /* Set the desired exception mask.  */
+      temp &= ~(excepts & FE_ALL_EXCEPT);
+      temp |= (*flagp & excepts & FE_ALL_EXCEPT);
+
+      /* Save state back to the FPU.  */
+      _FPU_SETCW (temp);
+
+      /* Success.  */
+      return 0;
+    }
+
+  /* Unsupported, so fail unless nothing needs to be done.  */
+  return (excepts != 0);
+}
+
+#include <shlib-compat.h>
+#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
+strong_alias (__fesetexceptflag, __old_fesetexceptflag)
+compat_symbol (libm, __old_fesetexceptflag, fesetexceptflag, GLIBC_2_1);
+#endif
+
+versioned_symbol (libm, __fesetexceptflag, fesetexceptflag, GLIBC_2_2);

Added: fsf/trunk/ports/sysdeps/arm/ftestexcept.c
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/ftestexcept.c (added)
+++ fsf/trunk/ports/sysdeps/arm/ftestexcept.c Sat Apr 21 17:04:56 2012
@@ -1,0 +1,43 @@
+/* Test exception in current environment.
+   Copyright (C) 1997, 1998, 2005, 2010 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 <fenv.h>
+#include <fpu_control.h>
+

[... 3301 lines stripped ...]
_______________________________________________
Commits mailing list
Commits@xxxxxxxxxx
http://eglibc.org/cgi-bin/mailman/listinfo/commits