[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...
- To: commits@xxxxxxxxxx
- Subject: [Commits] r18153 - in /fsf/trunk/ports: ./ sysdeps/arm/ sysdeps/arm/armv6t2/ sysdeps/arm/armv7/ sysdeps/arm/bits/ sysdeps/arm/eabi/ sy...
- From: eglibc@xxxxxxxxxx
- Date: Sat, 21 Apr 2012 17:04:56 -0000
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