summaryrefslogtreecommitdiff
path: root/ports
diff options
context:
space:
mode:
Diffstat (limited to 'ports')
-rw-r--r--ports/ChangeLog.arm12
-rw-r--r--ports/sysdeps/arm/Implies4
-rw-r--r--ports/sysdeps/arm/Makefile34
-rw-r--r--ports/sysdeps/arm/Versions20
-rw-r--r--ports/sysdeps/arm/__longjmp.S140
-rw-r--r--ports/sysdeps/arm/abi-note.S9
-rw-r--r--ports/sysdeps/arm/add_n.S99
-rw-r--r--ports/sysdeps/arm/addmul_1.S73
-rw-r--r--ports/sysdeps/arm/aeabi_assert.c26
-rw-r--r--ports/sysdeps/arm/aeabi_atexit.c27
-rw-r--r--ports/sysdeps/arm/aeabi_errno_addr.c24
-rw-r--r--ports/sysdeps/arm/aeabi_lcsts.c98
-rw-r--r--ports/sysdeps/arm/aeabi_localeconv.c24
-rw-r--r--ports/sysdeps/arm/aeabi_math.c41
-rw-r--r--ports/sysdeps/arm/aeabi_mb_cur_max.c27
-rw-r--r--ports/sysdeps/arm/aeabi_memclr.c30
-rw-r--r--ports/sysdeps/arm/aeabi_memcpy.c31
-rw-r--r--ports/sysdeps/arm/aeabi_memmove.c31
-rw-r--r--ports/sysdeps/arm/aeabi_memset.c30
-rw-r--r--ports/sysdeps/arm/aeabi_sighandlers.S53
-rw-r--r--ports/sysdeps/arm/aeabi_unwind_cpp_pr1.c51
-rw-r--r--ports/sysdeps/arm/arm-features.h59
-rw-r--r--ports/sysdeps/arm/arm-mcount.S129
-rw-r--r--ports/sysdeps/arm/armv6/rawmemchr.S109
-rw-r--r--ports/sysdeps/arm/armv6/stpcpy.S1
-rw-r--r--ports/sysdeps/arm/armv6/strchr.S147
-rw-r--r--ports/sysdeps/arm/armv6/strcpy.S231
-rw-r--r--ports/sysdeps/arm/armv6/strlen.S103
-rw-r--r--ports/sysdeps/arm/armv6/strrchr.S131
-rw-r--r--ports/sysdeps/arm/armv6t2/Implies2
-rw-r--r--ports/sysdeps/arm/armv6t2/ffs.S36
-rw-r--r--ports/sysdeps/arm/armv6t2/ffsll.S50
-rw-r--r--ports/sysdeps/arm/armv6t2/memchr.S187
-rw-r--r--ports/sysdeps/arm/armv6t2/strlen.S169
-rw-r--r--ports/sysdeps/arm/armv7/Implies2
-rw-r--r--ports/sysdeps/arm/armv7/configure72
-rw-r--r--ports/sysdeps/arm/armv7/configure.ac12
-rw-r--r--ports/sysdeps/arm/armv7/multiarch/Makefile3
-rw-r--r--ports/sysdeps/arm/armv7/multiarch/aeabi_memcpy.c2
-rw-r--r--ports/sysdeps/arm/armv7/multiarch/ifunc-impl-list.c56
-rw-r--r--ports/sysdeps/arm/armv7/multiarch/memcpy.S76
-rw-r--r--ports/sysdeps/arm/armv7/multiarch/memcpy_impl.S917
-rw-r--r--ports/sysdeps/arm/armv7/multiarch/memcpy_neon.S9
-rw-r--r--ports/sysdeps/arm/armv7/multiarch/memcpy_vfp.S7
-rw-r--r--ports/sysdeps/arm/backtrace.c125
-rw-r--r--ports/sysdeps/arm/bits/atomic.h159
-rw-r--r--ports/sysdeps/arm/bits/endian.h10
-rw-r--r--ports/sysdeps/arm/bits/fenv.h82
-rw-r--r--ports/sysdeps/arm/bits/link.h65
-rw-r--r--ports/sysdeps/arm/bits/linkmap.h5
-rw-r--r--ports/sysdeps/arm/bits/mathdef.h55
-rw-r--r--ports/sysdeps/arm/bits/setjmp.h37
-rw-r--r--ports/sysdeps/arm/bsd-_setjmp.S29
-rw-r--r--ports/sysdeps/arm/bsd-setjmp.S28
-rw-r--r--ports/sysdeps/arm/configure205
-rw-r--r--ports/sysdeps/arm/configure.ac46
-rw-r--r--ports/sysdeps/arm/crti.S95
-rw-r--r--ports/sysdeps/arm/crtn.S57
-rw-r--r--ports/sysdeps/arm/dl-irel.h52
-rw-r--r--ports/sysdeps/arm/dl-lookupcfg.h27
-rw-r--r--ports/sysdeps/arm/dl-machine.h662
-rw-r--r--ports/sysdeps/arm/dl-sysdep.h23
-rw-r--r--ports/sysdeps/arm/dl-tls.h31
-rw-r--r--ports/sysdeps/arm/dl-tlsdesc.S226
-rw-r--r--ports/sysdeps/arm/dl-tlsdesc.h62
-rw-r--r--ports/sysdeps/arm/dl-trampoline.S212
-rw-r--r--ports/sysdeps/arm/fclrexcpt.c58
-rw-r--r--ports/sysdeps/arm/fedisblxcpt.c47
-rw-r--r--ports/sysdeps/arm/feenablxcpt.c59
-rw-r--r--ports/sysdeps/arm/fegetenv.c48
-rw-r--r--ports/sysdeps/arm/fegetexcept.c39
-rw-r--r--ports/sysdeps/arm/fegetround.c40
-rw-r--r--ports/sysdeps/arm/feholdexcpt.c50
-rw-r--r--ports/sysdeps/arm/fesetenv.c63
-rw-r--r--ports/sysdeps/arm/fesetround.c53
-rw-r--r--ports/sysdeps/arm/feupdateenv.c56
-rw-r--r--ports/sysdeps/arm/fgetexcptflg.c50
-rw-r--r--ports/sysdeps/arm/find_exidx.c79
-rw-r--r--ports/sysdeps/arm/fpu_control.h63
-rw-r--r--ports/sysdeps/arm/fraiseexcpt.c106
-rw-r--r--ports/sysdeps/arm/frame.h27
-rw-r--r--ports/sysdeps/arm/framestate.c1
-rw-r--r--ports/sysdeps/arm/fsetexcptflg.c56
-rw-r--r--ports/sysdeps/arm/ftestexcept.c40
-rw-r--r--ports/sysdeps/arm/gcc-compat.h35
-rw-r--r--ports/sysdeps/arm/gccframe.h21
-rw-r--r--ports/sysdeps/arm/get-rounding-mode.h42
-rw-r--r--ports/sysdeps/arm/gmp-mparam.h36
-rw-r--r--ports/sysdeps/arm/include/bits/setjmp.h36
-rw-r--r--ports/sysdeps/arm/jmpbuf-unwind.h45
-rw-r--r--ports/sysdeps/arm/ldsodefs.h40
-rw-r--r--ports/sysdeps/arm/libc-tls.c32
-rw-r--r--ports/sysdeps/arm/libm-test-ulps8028
-rw-r--r--ports/sysdeps/arm/machine-gmon.h33
-rw-r--r--ports/sysdeps/arm/math-tests.h32
-rw-r--r--ports/sysdeps/arm/memcpy.S344
-rw-r--r--ports/sysdeps/arm/memmove.S360
-rw-r--r--ports/sysdeps/arm/memset.S78
-rw-r--r--ports/sysdeps/arm/memusage.h20
-rw-r--r--ports/sysdeps/arm/nptl/Makefile20
-rw-r--r--ports/sysdeps/arm/nptl/pthread_spin_lock.c23
-rw-r--r--ports/sysdeps/arm/nptl/pthreaddef.h46
-rw-r--r--ports/sysdeps/arm/nptl/tcb-offsets.sym11
-rw-r--r--ports/sysdeps/arm/nptl/tls.h147
-rw-r--r--ports/sysdeps/arm/preconfigure63
-rw-r--r--ports/sysdeps/arm/preconfigure.ac58
-rw-r--r--ports/sysdeps/arm/rtld-global-offsets.sym7
-rw-r--r--ports/sysdeps/arm/s_fma.c5
-rw-r--r--ports/sysdeps/arm/s_fmaf.c5
-rw-r--r--ports/sysdeps/arm/setfpucw.c43
-rw-r--r--ports/sysdeps/arm/setjmp.S126
-rw-r--r--ports/sysdeps/arm/shlib-versions9
-rw-r--r--ports/sysdeps/arm/soft-fp/sfp-machine.h49
-rw-r--r--ports/sysdeps/arm/sotruss-lib.c49
-rw-r--r--ports/sysdeps/arm/stackinfo.h33
-rw-r--r--ports/sysdeps/arm/start.S148
-rw-r--r--ports/sysdeps/arm/static-stubs.c7
-rw-r--r--ports/sysdeps/arm/strlen.S79
-rw-r--r--ports/sysdeps/arm/sub_n.S2
-rw-r--r--ports/sysdeps/arm/submul_1.S74
-rw-r--r--ports/sysdeps/arm/sys/ucontext.h94
-rw-r--r--ports/sysdeps/arm/sysdep.h288
-rw-r--r--ports/sysdeps/arm/test-fpucw.c5
-rw-r--r--ports/sysdeps/arm/tls-macros.h78
-rw-r--r--ports/sysdeps/arm/tlsdesc.c160
-rw-r--r--ports/sysdeps/arm/tlsdesc.sym15
-rw-r--r--ports/sysdeps/arm/tst-audit.h25
-rw-r--r--ports/sysdeps/arm/unwind-dw2-fde-glibc.c79
-rw-r--r--ports/sysdeps/arm/unwind-pe.c1
-rw-r--r--ports/sysdeps/unix/arm/sysdep.S63
-rw-r--r--ports/sysdeps/unix/arm/sysdep.h29
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/Makefile85
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/Versions40
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/____longjmp_chk.S90
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/aeabi_read_tp.S55
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/alphasort64.c1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/arm-features.h30
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/bits/atomic.h107
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/bits/fcntl.h54
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/bits/hwcap.h42
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/bits/mman.h40
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/bits/shm.h103
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/brk.c41
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/clone.S99
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/configure6
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/configure.ac6
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/dl-cache.h34
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/dl-machine.h30
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/dl-procinfo.c65
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/dl-procinfo.h78
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/fchown.c1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/fcntl.c1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/ftruncate64.c36
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/fxstat.c1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/fxstatat.c1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/getcontext.S115
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/getdents64.c1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/getegid.c1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/geteuid.c1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/getgid.c1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/getgroups.c2
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/getresgid.c1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/getresuid.c1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/getrlimit64.c1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/getuid.c1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/glob64.c1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/internal_accept4.S6
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/internal_recvmmsg.S6
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/internal_sendmmsg.S6
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/ioperm.c279
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/kernel-features.h45
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/lchown.c1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/ldconfig.h25
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/ldsodefs.h73
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/libc-aeabi_read_tp.S1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/libc-do-syscall.S48
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/lockf64.c1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/lxstat.c2
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/makecontext.c73
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/mmap.S64
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/mmap64.S72
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/msgctl.c33
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/Makefile17
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/Versions8
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/bits/pthreadtypes.h184
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/bits/semaphore.h34
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/c++-types.data67
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/clone.S3
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/configure4
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/configure.ac8
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/createthread.c22
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/fork.c30
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/ld.abilist12
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/libBrokenLocale.abilist3
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/libanl.abilist6
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/libc.abilist2145
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/libcrypt.abilist9
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/libdl.abilist11
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/libm.abilist374
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/libnsl.abilist123
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/libpthread.abilist232
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/libresolv.abilist95
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/librt.abilist44
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/libthread_db.abilist42
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/libutil.abilist8
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/localplt.data13
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.c132
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h321
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/nptl-aeabi_unwind_cpp_pr1.c1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/pt-vfork.S34
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/pthread_once.c89
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/rt-aeabi_unwind_cpp_pr1.c1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h242
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/unwind-forcedunwind.c157
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/unwind-resume.c100
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/unwind.h278
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/nptl/vfork.S36
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/oldgetrlimit.c1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/oldgetrlimit64.c1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/oldsetrlimit.c1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/posix_fadvise.c30
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/posix_fadvise64.c55
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/pread.c58
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/pread64.c60
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/profil-counter.h31
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/pwrite.c58
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/pwrite64.c61
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/readahead.c37
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/readdir64.c1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/readdir64_r.c1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/readelflib.c79
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/register-dump.h136
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/scandir64.c1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/semctl.c54
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/setcontext.S104
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/setegid.c1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/seteuid.c1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/setfsgid.c1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/setfsuid.c1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/setgid.c1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/setgroups.c2
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/setregid.c1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/setresgid.c1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/setresuid.c1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/setreuid.c1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/setrlimit.c1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/setuid.c1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/shmctl.c34
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/sigaction.c110
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/sigcontextinfo.h49
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/sigrestorer.S117
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/swapcontext.S63
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/sys/elf.h25
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/sys/io.h47
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/sys/procfs.h122
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/sys/ucontext.h112
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/sys/user.h71
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/syscall.S48
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/syscalls.list38
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/sysdep.S33
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/sysdep.h482
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/truncate64.c35
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/ucontext_i.sym30
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/umount.c30
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/versionsort64.c1
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/vfork.S61
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/xstat.c1
267 files changed, 12 insertions, 26716 deletions
diff --git a/ports/ChangeLog.arm b/ports/ChangeLog.arm
index d23a6cca55..176b766422 100644
--- a/ports/ChangeLog.arm
+++ b/ports/ChangeLog.arm
@@ -1,5 +1,17 @@
+This file describes changes to the ARM port while it was in the ports
+add-on directory. This port is no longer part of an add-on and so
+future changes to it should be listed in the top-level ChangeLog file,
+not here.
+
+
+
2014-02-08 Joseph Myers <joseph@codesourcery.com>
+ * sysdeps/arm: Move directory to ../sysdeps/arm.
+ * sysdeps/unix/arm: Move directory to ../sysdeps.arm.
+ * sysdeps/unix/sysv/linux/arm: Move directory to
+ ../sysdeps/unix/sysv/linux/arm.
+
* sysdeps/unix/sysv/linux/arm/msgctl.c: Move from
sysdeps/unix/sysv/linux/alpha/msgctl.c instead of #include of that
file.
diff --git a/ports/sysdeps/arm/Implies b/ports/sysdeps/arm/Implies
deleted file mode 100644
index 10bd93a160..0000000000
--- a/ports/sysdeps/arm/Implies
+++ /dev/null
@@ -1,4 +0,0 @@
-arm/soft-fp
-wordsize-32
-ieee754/flt-32
-ieee754/dbl-64
diff --git a/ports/sysdeps/arm/Makefile b/ports/sysdeps/arm/Makefile
deleted file mode 100644
index b218e76eac..0000000000
--- a/ports/sysdeps/arm/Makefile
+++ /dev/null
@@ -1,34 +0,0 @@
-gnulib-arch = $(elfobjdir)/libgcc-stubs.a
-static-gnulib-arch = $(elfobjdir)/libgcc-stubs.a
-
-ifeq ($(subdir),elf)
-sysdep-dl-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
-
-$(objpfx)libgcc-stubs.a: $(objpfx)aeabi_unwind_cpp_pr1.os
- $(build-extra-lib)
-
-lib-noranlib: $(objpfx)libgcc-stubs.a
-endif
-
-ifeq ($(subdir),csu)
-# 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
-
-ifeq ($(subdir),gmon)
-sysdep_routines += arm-mcount
-endif
-
-ifeq ($(subdir),debug)
-CFLAGS-backtrace.c += -funwind-tables
-endif
diff --git a/ports/sysdeps/arm/Versions b/ports/sysdeps/arm/Versions
deleted file mode 100644
index 5f2af29c38..0000000000
--- a/ports/sysdeps/arm/Versions
+++ /dev/null
@@ -1,20 +0,0 @@
-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;
- }
-}
diff --git a/ports/sysdeps/arm/__longjmp.S b/ports/sysdeps/arm/__longjmp.S
deleted file mode 100644
index 27c57a12df..0000000000
--- a/ports/sysdeps/arm/__longjmp.S
+++ /dev/null
@@ -1,140 +0,0 @@
-/* longjmp for ARM.
- Copyright (C) 1997-2014 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>
-#include <bits/setjmp.h>
-#include <rtld-global-offsets.h>
-#include <arm-features.h>
-
-/* __longjmp(jmpbuf, val) */
-
-ENTRY (__longjmp)
- mov ip, r0
- movs r0, r1 /* get the return value in place */
- it eq
- moveq r0, #1 /* can't let setjmp() return zero! */
-
-#ifdef CHECK_SP
- sfi_breg ip, \
- ldr r4, [\B, #32] /* jmpbuf's sp */
- cfi_undefined (r4)
-#ifdef PTR_DEMANGLE
- PTR_DEMANGLE (r4, r4, a3, a4)
-#endif
- CHECK_SP (r4)
-#endif
- sfi_sp sfi_breg ip, \
- ldmia \B!, JMP_BUF_REGLIST
-#ifdef PTR_DEMANGLE
- ldr a4, [ip], #4
- PTR_DEMANGLE (a4, a4, a3, a2)
- mov sp, a4
- ldr a4, [ip], #4
- PTR_DEMANGLE2 (lr, a4, a3)
-#else
- ldr sp, [ip], #4
- ldr lr, [ip], #4
-#endif
- 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)
-
-#if !defined ARM_ASSUME_NO_IWMMXT || defined __SOFTFP__
-# define NEED_HWCAP 1
-#endif
-
-#ifdef NEED_HWCAP
-# 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
-#endif
-
-#ifdef __SOFTFP__
- tst a2, #HWCAP_ARM_VFP
- beq .Lno_vfp
-#endif
-
- /* Restore the VFP registers. */
- /* Following instruction is vldmia ip!, {d8-d15}. */
- sfi_breg r12, \
- ldc p11, cr8, [\B], #64
-.Lno_vfp:
-
-#ifndef ARM_ASSUME_NO_IWMMXT
- tst a2, #HWCAP_ARM_IWMMXT
- beq .Lno_iwmmxt
-
- /* Restore the call-preserved iWMMXt registers. */
- /* Following instructions are wldrd wr10, [ip], #8 (etc.) */
- sfi_breg r12, \
- ldcl p1, cr10, [\B], #8
- sfi_breg r12, \
- ldcl p1, cr11, [\B], #8
- sfi_breg r12, \
- ldcl p1, cr12, [\B], #8
- sfi_breg r12, \
- ldcl p1, cr13, [\B], #8
- sfi_breg r12, \
- ldcl p1, cr14, [\B], #8
- sfi_breg r12, \
- ldcl p1, cr15, [\B], #8
-.Lno_iwmmxt:
-#endif
-
- DO_RET(lr)
-
-#ifdef NEED_HWCAP
-# ifdef IS_IN_rtld
-1: .long _GLOBAL_OFFSET_TABLE_ - 0b - PC_OFS
-.Lrtld_local_ro:
- .long C_SYMBOL_NAME(_rtld_local_ro)(GOTOFF)
-# else
-# ifdef PIC
-1: .long _GLOBAL_OFFSET_TABLE_ - 0b - PC_OFS
-.Lrtld_global_ro:
- .long C_SYMBOL_NAME(_rtld_global_ro)(GOT)
-# else
-.Lhwcap:
- .long C_SYMBOL_NAME(_dl_hwcap)
-# endif
-# endif
-#endif
-
-END (__longjmp)
diff --git a/ports/sysdeps/arm/abi-note.S b/ports/sysdeps/arm/abi-note.S
deleted file mode 100644
index 1060c3d280..0000000000
--- a/ports/sysdeps/arm/abi-note.S
+++ /dev/null
@@ -1,9 +0,0 @@
-/* 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>
-
diff --git a/ports/sysdeps/arm/add_n.S b/ports/sysdeps/arm/add_n.S
deleted file mode 100644
index 4cc1ac287f..0000000000
--- a/ports/sysdeps/arm/add_n.S
+++ /dev/null
@@ -1,99 +0,0 @@
-/* mpn_add_n -- add (or subtract) bignums.
- Copyright (C) 2013-2014 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>
-#include <arm-features.h>
-
- .syntax unified
- .text
-
-#ifdef USE_AS_SUB_N
-# define INITC cmp r0, r0
-# define OPC sbcs
-# define RETC sbc r0, r0, r0; neg r0, r0
-# define FUNC __mpn_sub_n
-#else
-# define INITC cmn r0, #0
-# define OPC adcs
-# define RETC mov r0, #0; adc r0, r0, r0
-# define FUNC __mpn_add_n
-#endif
-
-/* mp_limb_t mpn_add_n(res_ptr, src1_ptr, src2_ptr, size) */
-
-ENTRY (FUNC)
- push { r4, r5, r6, r7, r8, r10, lr }
- cfi_adjust_cfa_offset (28)
- cfi_rel_offset (r4, 0)
- cfi_rel_offset (r5, 4)
- cfi_rel_offset (r6, 8)
- cfi_rel_offset (r7, 12)
- cfi_rel_offset (r8, 16)
- cfi_rel_offset (r10, 20)
- cfi_rel_offset (lr, 24)
-
- INITC /* initialize carry flag */
- tst r3, #1 /* count & 1 == 1? */
- add lr, r1, r3, lsl #2 /* compute end src1 */
- beq 1f
-
- sfi_breg r1, \
- ldr r4, [\B], #4 /* do one to make count even */
- sfi_breg r2, \
- ldr r5, [\B], #4
- OPC r4, r4, r5
- teq r1, lr /* end of count? (preserve carry) */
- sfi_breg r0, \
- str r4, [\B], #4
- beq 9f
-1:
- tst r3, #2 /* count & 2 == 2? */
- beq 2f
- sfi_breg r1, \
- ldm \B!, { r4, r5 } /* do two to make count 0 mod 4 */
- sfi_breg r2, \
- ldm \B!, { r6, r7 }
- OPC r4, r4, r6
- OPC r5, r5, r7
- teq r1, lr /* end of count? */
- sfi_breg r0, \
- stm \B!, { r4, r5 }
- beq 9f
-2:
- sfi_breg r1, \
- ldm \B!, { r3, r5, r7, r10 } /* do four each loop */
- sfi_breg r2, \
- ldm \B!, { r4, r6, r8, ip }
- OPC r3, r3, r4
- OPC r5, r5, r6
- OPC r7, r7, r8
- OPC r10, r10, ip
- teq r1, lr
- sfi_breg r0, \
- stm \B!, { r3, r5, r7, r10 }
- bne 2b
-
-9:
- RETC /* copy carry out */
-#ifndef ARM_ALWAYS_BX
- pop { r4, r5, r6, r7, r8, r10, pc }
-#else
- pop { r4, r5, r6, r7, r8, r10, lr }
- bx lr
-#endif
-END (FUNC)
diff --git a/ports/sysdeps/arm/addmul_1.S b/ports/sysdeps/arm/addmul_1.S
deleted file mode 100644
index fab1ae8cd4..0000000000
--- a/ports/sysdeps/arm/addmul_1.S
+++ /dev/null
@@ -1,73 +0,0 @@
-/* mpn_addmul_1 -- multiply and accumulate bignums.
- Copyright (C) 2013-2014 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>
-
- .syntax unified
- .text
-
-@ cycles/limb
-@ StrongArm ?
-@ Cortex-A8 ?
-@ Cortex-A9 ?
-@ Cortex-A15 4
-
-/* mp_limb_t mpn_addmul_1(res_ptr, src1_ptr, size, s2_limb) */
-
-ENTRY (__mpn_addmul_1)
- 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)
-
- sfi_breg r1, \
- ldr r6, [\B], #4
- sfi_breg r0, \
- ldr r5, [\B]
- mov r4, #0 /* init carry in */
- b 1f
-0:
- sfi_breg r1, \
- ldr r6, [\B], #4 /* load next ul */
- adds r7, r4, r5 /* (out, c) = cl + lpl */
- sfi_breg r0, \
- ldr r5, [\B, #4] /* load next rl */
- adc r4, ip, #0 /* cl = hpl + c */
- sfi_breg r0, \
- str r7, [\B], #4
-1:
- mov ip, #0 /* zero-extend rl */
- umlal r5, ip, r6, r3 /* (hpl, lpl) = ul * vl + rl */
- subs r2, r2, #1
- bne 0b
-
- adds r4, r4, r5 /* (out, c) = cl + llpl */
- sfi_breg r0, \
- str r4, [\B]
- adc r0, ip, #0 /* return hpl + c */
-
- pop { r4, r5, r6, r7 }
- cfi_adjust_cfa_offset (-16)
- cfi_restore (r4)
- cfi_restore (r5)
- cfi_restore (r6)
- cfi_restore (r7)
- DO_RET (lr)
-END (__mpn_addmul_1)
diff --git a/ports/sysdeps/arm/aeabi_assert.c b/ports/sysdeps/arm/aeabi_assert.c
deleted file mode 100644
index 0a31ffb4fb..0000000000
--- a/ports/sysdeps/arm/aeabi_assert.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Copyright (C) 2004-2014 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);
-}
diff --git a/ports/sysdeps/arm/aeabi_atexit.c b/ports/sysdeps/arm/aeabi_atexit.c
deleted file mode 100644
index c5c207f4cf..0000000000
--- a/ports/sysdeps/arm/aeabi_atexit.c
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Copyright (C) 2005-2014 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);
-}
diff --git a/ports/sysdeps/arm/aeabi_errno_addr.c b/ports/sysdeps/arm/aeabi_errno_addr.c
deleted file mode 100644
index 160c765a09..0000000000
--- a/ports/sysdeps/arm/aeabi_errno_addr.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Copyright (C) 2004-2014 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;
-}
diff --git a/ports/sysdeps/arm/aeabi_lcsts.c b/ports/sysdeps/arm/aeabi_lcsts.c
deleted file mode 100644
index dac9a17604..0000000000
--- a/ports/sysdeps/arm/aeabi_lcsts.c
+++ /dev/null
@@ -1,98 +0,0 @@
-/* Link-time constants for ARM EABI.
- Copyright (C) 2005-2014 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);
diff --git a/ports/sysdeps/arm/aeabi_localeconv.c b/ports/sysdeps/arm/aeabi_localeconv.c
deleted file mode 100644
index 2a7615f6de..0000000000
--- a/ports/sysdeps/arm/aeabi_localeconv.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Copyright (C) 2004-2014 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 ();
-}
diff --git a/ports/sysdeps/arm/aeabi_math.c b/ports/sysdeps/arm/aeabi_math.c
deleted file mode 100644
index 6b4211fbc5..0000000000
--- a/ports/sysdeps/arm/aeabi_math.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Copyright (C) 2004-2014 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;
diff --git a/ports/sysdeps/arm/aeabi_mb_cur_max.c b/ports/sysdeps/arm/aeabi_mb_cur_max.c
deleted file mode 100644
index ba2cc3a341..0000000000
--- a/ports/sysdeps/arm/aeabi_mb_cur_max.c
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Copyright (C) 2004-2014 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;
-}
diff --git a/ports/sysdeps/arm/aeabi_memclr.c b/ports/sysdeps/arm/aeabi_memclr.c
deleted file mode 100644
index 3bdfb3edf2..0000000000
--- a/ports/sysdeps/arm/aeabi_memclr.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright (C) 2005-2014 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)
diff --git a/ports/sysdeps/arm/aeabi_memcpy.c b/ports/sysdeps/arm/aeabi_memcpy.c
deleted file mode 100644
index 88e2e7bfbb..0000000000
--- a/ports/sysdeps/arm/aeabi_memcpy.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Copyright (C) 2005-2014 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)
diff --git a/ports/sysdeps/arm/aeabi_memmove.c b/ports/sysdeps/arm/aeabi_memmove.c
deleted file mode 100644
index 14961337e2..0000000000
--- a/ports/sysdeps/arm/aeabi_memmove.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Copyright (C) 2005-2014 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)
diff --git a/ports/sysdeps/arm/aeabi_memset.c b/ports/sysdeps/arm/aeabi_memset.c
deleted file mode 100644
index 160cfbb497..0000000000
--- a/ports/sysdeps/arm/aeabi_memset.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright (C) 2005-2014 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)
diff --git a/ports/sysdeps/arm/aeabi_sighandlers.S b/ports/sysdeps/arm/aeabi_sighandlers.S
deleted file mode 100644
index c14193b066..0000000000
--- a/ports/sysdeps/arm/aeabi_sighandlers.S
+++ /dev/null
@@ -1,53 +0,0 @@
-/* Link-time constants for ARM EABI - signal handlers.
- Copyright (C) 2005-2014 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
diff --git a/ports/sysdeps/arm/aeabi_unwind_cpp_pr1.c b/ports/sysdeps/arm/aeabi_unwind_cpp_pr1.c
deleted file mode 100644
index f65061310a..0000000000
--- a/ports/sysdeps/arm/aeabi_unwind_cpp_pr1.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Copyright (C) 2005-2014 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
-}
diff --git a/ports/sysdeps/arm/arm-features.h b/ports/sysdeps/arm/arm-features.h
deleted file mode 100644
index b743756519..0000000000
--- a/ports/sysdeps/arm/arm-features.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/* Macros to test for CPU features on ARM. Generic ARM version.
- Copyright (C) 2012-2014 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 _ARM_ARM_FEATURES_H
-#define _ARM_ARM_FEATURES_H 1
-
-/* An OS-specific arm-features.h file should define ARM_HAVE_VFP to
- an appropriate expression for testing at runtime whether the VFP
- hardware is present. We'll then redefine it to a constant if we
- know at compile time that we can assume VFP. */
-
-#ifndef __SOFTFP__
-/* The compiler is generating VFP instructions, so we're already
- assuming the hardware exists. */
-# undef ARM_HAVE_VFP
-# define ARM_HAVE_VFP 1
-#endif
-
-/* An OS-specific arm-features.h file may define ARM_ASSUME_NO_IWMMXT
- to indicate at compile time that iWMMXt hardware is never present
- at runtime (or that we never care about its state) and so need not
- be checked for. */
-
-/* A more-specific arm-features.h file may define ARM_ALWAYS_BX to indicate
- that instructions using pc as a destination register must never be used,
- so a "bx" (or "blx") instruction is always required. */
-
-/* The log2 of the minimum alignment required for an address that
- is the target of a computed branch (i.e. a "bx" instruction).
- A more-specific arm-features.h file may define this to set a more
- stringent requirement.
-
- Using this only makes sense for code in ARM mode (where instructions
- always have a fixed size of four bytes), or for Thumb-mode code that is
- specifically aligning all the related branch targets to match (since
- Thumb instructions might be either two or four bytes). */
-#ifndef ARM_BX_ALIGN_LOG2
-# define ARM_BX_ALIGN_LOG2 2
-#endif
-
-/* An OS-specific arm-features.h file may define ARM_NO_INDEX_REGISTER to
- indicate that the two-register addressing modes must never be used. */
-
-#endif /* arm-features.h */
diff --git a/ports/sysdeps/arm/arm-mcount.S b/ports/sysdeps/arm/arm-mcount.S
deleted file mode 100644
index 7e433c6ff7..0000000000
--- a/ports/sysdeps/arm/arm-mcount.S
+++ /dev/null
@@ -1,129 +0,0 @@
-/* Implementation of profiling support. ARM EABI version.
- Copyright (C) 2008-2014 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>
-
-#undef mcount
-
-#ifdef __thumb2__
- .thumb
-#endif
- .syntax unified
-
-
-/* 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_mcount_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)
-
-
-#include <gcc-compat.h>
-#include <shlib-compat.h>
-
-/* The new __gnu_mcount_nc entry point was introduced in 4.4, so the
- static library needs the old one only to support older compilers.
- Even in a configuration that only cares about newer compilers, the
- shared library might need it only for strict ABI compatibility. */
-
-#if GCC_COMPAT (4, 3) || SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_19)
-
-/* Provide old mcount for backwards compatibility. This requires
- code be compiled with APCS frame pointers. */
-
-ENTRY(__mcount_arm_compat)
- push {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)
- movs r0, fp
- ittt ne
- sfi_breg r0, \
- ldrne r0, [\B, #-4]
- movsne r1, lr
- blne __mcount_internal
-# if defined (__ARM_ARCH_4T__) && defined (__THUMB_INTERWORK__)
- pop {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
-# else
- pop {r0, r1, r2, r3, fp, pc}
-# endif
-END(__mcount_arm_compat)
-
-#endif
-
-#if GCC_COMPAT (4, 3)
-
-strong_alias (__mcount_arm_compat, _mcount)
-
-/* The canonical name for the function is `_mcount' in both C and asm,
- but some old asm code might assume it's `mcount'. */
-weak_alias (_mcount, mcount)
-
-#elif SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_19)
-
-compat_symbol (libc, __mcount_arm_compat, _mcount, GLIBC_2_0)
-
-strong_alias (__mcount_arm_compat, __mcount_arm_compat_1)
-compat_symbol (libc, __mcount_arm_compat_1, mcount, GLIBC_2_0)
-
-#endif
diff --git a/ports/sysdeps/arm/armv6/rawmemchr.S b/ports/sysdeps/arm/armv6/rawmemchr.S
deleted file mode 100644
index c34fdc6988..0000000000
--- a/ports/sysdeps/arm/armv6/rawmemchr.S
+++ /dev/null
@@ -1,109 +0,0 @@
-/* rawmemchr -- find a byte within an unsized memory block.
- Copyright (C) 2013-2014 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>
-
- .syntax unified
- .text
-
-ENTRY (__rawmemchr)
- @ r0 = start of string
- @ r1 = character to match
- @ returns a pointer to the match, which must be present.
- sfi_breg r0, \
- ldrb r2, [\B] @ load first byte asap
-
- @ To cater to long strings, we want to search through a few
- @ characters until we reach an aligned pointer. To cater to
- @ small strings, we don't want to start doing word operations
- @ immediately. The compromise is a maximum of 16 bytes less
- @ whatever is required to end with an aligned pointer.
- @ r3 = number of characters to search in alignment loop
- and r3, r0, #7
- uxtb r1, r1
- rsb r3, r3, #15 @ 16 - 1 peeled loop iteration
- cmp r2, r1
- it eq
- bxeq lr
-
- @ Loop until we find ...
-1: sfi_breg r0, \
- ldrb r2, [\B, #1]!
- subs r3, r3, #1 @ ... the alignment point
- it ne
- cmpne r2, r1 @ ... or C
- bne 1b
-
- @ Disambiguate the exit possibilites above
- cmp r2, r1 @ Found C
- it eq
- bxeq lr
- add r0, r0, #1
-
- @ So now we're aligned.
- sfi_breg r0, \
- ldrd r2, r3, [\B], #8
- orr r1, r1, r1, lsl #8 @ Replicate C to all bytes
-#ifdef ARCH_HAS_T2
- movw ip, #0x0101
- sfi_pld r0, #64
- movt ip, #0x0101
-#else
- ldr ip, =0x01010101
- sfi_pld r0, #64
-#endif
- orr r1, r1, r1, lsl #16
-
- @ Loop searching for C, 8 bytes at a time.
- @ Subtracting (unsigned saturating) from 1 means result of 1 for
- @ any byte that was originally zero and 0 otherwise. Therefore
- @ we consider the lsb of each byte the "found" bit.
-2: eor r2, r2, r1 @ Convert C bytes to 0
- eor r3, r3, r1
- uqsub8 r2, ip, r2 @ Find C
- uqsub8 r3, ip, r3
- sfi_pld r0, #128
- orrs r3, r3, r2 @ Test both words for found
- it eq
- sfi_breg r0, \
- ldrdeq r2, r3, [\B], #8
- beq 2b
-
- @ Found something. Disambiguate between first and second words.
- @ Adjust r0 to point to the word containing the match.
- @ Adjust r2 to the found bits for the word containing the match.
- cmp r2, #0
- sub r0, r0, #4
- ite eq
- moveq r2, r3
- subne r0, r0, #4
-
- @ Find the bit-offset of the match within the word. Note that the
- @ bit result from clz will be 7 higher than "true", but we'll
- @ immediately discard those bits converting to a byte offset.
-#ifdef __ARMEL__
- rev r2, r2 @ For LE, count from the little end
-#endif
- clz r2, r2
- add r0, r0, r2, lsr #3 @ Adjust the pointer to the found byte
- bx lr
-
-END (__rawmemchr)
-
-weak_alias (__rawmemchr, rawmemchr)
-libc_hidden_def (__rawmemchr)
diff --git a/ports/sysdeps/arm/armv6/stpcpy.S b/ports/sysdeps/arm/armv6/stpcpy.S
deleted file mode 100644
index 21a4f385be..0000000000
--- a/ports/sysdeps/arm/armv6/stpcpy.S
+++ /dev/null
@@ -1 +0,0 @@
-/* Defined in strcpy.S. */
diff --git a/ports/sysdeps/arm/armv6/strchr.S b/ports/sysdeps/arm/armv6/strchr.S
deleted file mode 100644
index e4de0f3323..0000000000
--- a/ports/sysdeps/arm/armv6/strchr.S
+++ /dev/null
@@ -1,147 +0,0 @@
-/* strchr -- find the first instance of C in a nul-terminated string.
- Copyright (C) 2013-2014 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>
-
- .syntax unified
- .text
-
-ENTRY (strchr)
- @ r0 = start of string
- @ r1 = character to match
- @ returns NULL for no match, or a pointer to the match
- sfi_breg r0, \
- ldrb r2, [\B] @ load the first byte asap
- uxtb r1, r1
-
- @ To cater to long strings, we want to search through a few
- @ characters until we reach an aligned pointer. To cater to
- @ small strings, we don't want to start doing word operations
- @ immediately. The compromise is a maximum of 16 bytes less
- @ whatever is required to end with an aligned pointer.
- @ r3 = number of characters to search in alignment loop
- and r3, r0, #7
- rsb r3, r3, #15 @ 16 - 1 peeled loop iteration
- cmp r2, r1 @ Found C?
- it ne
- cmpne r2, #0 @ Found EOS?
- beq 99f
-
- @ Loop until we find ...
-1: sfi_breg r0, \
- ldrb r2, [\B, #1]!
- subs r3, r3, #1 @ ... the aligment point
- it ne
- cmpne r2, r1 @ ... or the character
- it ne
- cmpne r2, #0 @ ... or EOS
- bne 1b
-
- @ Disambiguate the exit possibilites above
- cmp r2, r1 @ Found the character
- it ne
- cmpne r2, #0 @ Found EOS
- beq 99f
- add r0, r0, #1
-
- @ So now we're aligned. Now we actually need a stack frame.
- 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)
-
- sfi_breg r0, \
- ldrd r2, r3, [\B], #8
- orr r1, r1, r1, lsl #8 @ Replicate C to all bytes
-#ifdef ARCH_HAS_T2
- movw ip, #0x0101
- sfi_pld r0, #64
- movt ip, #0x0101
-#else
- ldr ip, =0x01010101
- sfi_pld r0, #64
-#endif
- orr r1, r1, r1, lsl #16
-
- @ Loop searching for EOS or C, 8 bytes at a time.
-2:
- @ Subtracting (unsigned saturating) from 1 means result of 1 for
- @ any byte that was originally zero and 0 otherwise. Therefore
- @ we consider the lsb of each byte the "found" bit.
- uqsub8 r4, ip, r2 @ Find EOS
- eor r6, r2, r1 @ Convert C bytes to 0
- uqsub8 r5, ip, r3
- eor r7, r3, r1
- uqsub8 r6, ip, r6 @ Find C
- sfi_pld r0, #128 @ Prefetch 2 lines ahead
- uqsub8 r7, ip, r7
- orr r4, r4, r6 @ Combine found for EOS and C
- orr r5, r5, r7
- orrs r6, r4, r5 @ Combine the two words
- it eq
- sfi_breg r0, \
- ldrdeq r2, r3, [\B], #8
- beq 2b
-
- @ Found something. Disambiguate between first and second words.
- @ Adjust r0 to point to the word containing the match.
- @ Adjust r2 to the contents of the word containing the match.
- @ Adjust r4 to the found bits for the word containing the match.
- cmp r4, #0
- sub r0, r0, #4
- itte eq
- moveq r4, r5
- moveq r2, r3
- subne r0, r0, #4
-
- @ Find the bit-offset of the match within the word.
-#if defined(__ARMEL__)
- @ For LE, swap the found word so clz searches from the little end.
- rev r4, r4
-#else
- @ For BE, byte swap the word to make it easier to extract the byte.
- rev r2, r2
-#endif
- @ We're counting 0x01 (not 0x80), so the bit offset is 7 too high.
- clz r3, r4
- sub r3, r3, #7
- lsr r2, r2, r3 @ Shift down found byte
- uxtb r1, r1 @ Undo replication of C
- uxtb r2, r2 @ Extract found byte
- add r0, r0, r3, lsr #3 @ Adjust the pointer to the found byte
-
- pop { r4, r5, r6, r7 }
- cfi_adjust_cfa_offset (-16)
- cfi_restore (r4)
- cfi_restore (r5)
- cfi_restore (r6)
- cfi_restore (r7)
-
- @ Disambiguate between EOS and C.
-99:
- cmp r2, r1
- it ne
- movne r0, #0 @ Found EOS, return NULL
- bx lr
-
-END (strchr)
-
-weak_alias (strchr, index)
-libc_hidden_builtin_def (strchr)
diff --git a/ports/sysdeps/arm/armv6/strcpy.S b/ports/sysdeps/arm/armv6/strcpy.S
deleted file mode 100644
index 833a83c28f..0000000000
--- a/ports/sysdeps/arm/armv6/strcpy.S
+++ /dev/null
@@ -1,231 +0,0 @@
-/* strcpy -- copy a nul-terminated string.
- Copyright (C) 2013-2014 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>
-
-/* Endian independent macros for shifting bytes within registers. */
-#ifdef __ARMEB__
-#define lsh_gt lsr
-#define lsh_ls lsl
-#else
-#define lsh_gt lsl
-#define lsh_ls lsr
-#endif
-
- .syntax unified
- .text
-
-ENTRY (__stpcpy)
- @ Signal stpcpy with NULL in IP.
- mov ip, #0
- b 0f
-END (__stpcpy)
-
-weak_alias (__stpcpy, stpcpy)
-libc_hidden_def (__stpcpy)
-libc_hidden_builtin_def (stpcpy)
-
-ENTRY (strcpy)
- @ Signal strcpy with DEST in IP.
- mov ip, r0
-0:
- sfi_pld r0
- sfi_pld r1
-
- @ To cater to long strings, we want 8 byte alignment in the source.
- @ To cater to small strings, we don't want to start that right away.
- @ Loop up to 16 times, less whatever it takes to reach alignment.
- and r3, r1, #7
- rsb r3, r3, #16
-
- @ Loop until we find ...
-1: sfi_breg r1, \
- ldrb r2, [\B], #1
- subs r3, r3, #1 @ ... the alignment point
- sfi_breg r0, \
- strb r2, [\B], #1
- it ne
- cmpne r2, #0 @ ... or EOS
- bne 1b
-
- @ Disambiguate the exit possibilites above
- cmp r2, #0 @ Found EOS
- beq .Lreturn
-
- @ Load the next two words asap
- sfi_breg r1, \
- ldrd r2, r3, [\B], #8
- sfi_pld r0, #64
- sfi_pld r1, #64
-
- @ For longer strings, we actaully need a stack frame.
- 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)
-
- @ Subtracting (unsigned saturating) from 1 for any byte means result
- @ of 1 for any byte that was originally zero and 0 otherwise.
- @ Therefore we consider the lsb of each byte the "found" bit.
-#ifdef ARCH_HAS_T2
- movw r7, #0x0101
- tst r0, #3 @ Test alignment of DEST
- movt r7, #0x0101
-#else
- ldr r7, =0x01010101
- tst r0, #3
-#endif
- bne .Lunaligned
-
- @ So now source (r1) is aligned to 8, and dest (r0) is aligned to 4.
- @ Loop, reading 8 bytes at a time, searching for EOS.
- .balign 16
-2: uqsub8 r4, r7, r2 @ Find EOS
- uqsub8 r5, r7, r3
- sfi_pld r1, #128
- cmp r4, #0 @ EOS in first word?
- sfi_pld r0, #128
- bne 3f
- sfi_breg r0, \
- str r2, [\B], #4
- cmp r5, #0 @ EOS in second word?
- bne 4f
- sfi_breg r0, \
- str r3, [\B], #4
- sfi_breg r1, \
- ldrd r2, r3, [\B], #8
- b 2b
-
-3: sub r1, r1, #4 @ backup to first word
-4: sub r1, r1, #4 @ backup to second word
-
- @ ... then finish up any tail a byte at a time.
- @ Note that we generally back up and re-read source bytes,
- @ but we'll not re-write dest bytes.
-.Lbyte_loop:
- sfi_breg r1, \
- ldrb r2, [\B], #1
- cmp r2, #0
- sfi_breg r0, \
- strb r2, [\B], #1
- bne .Lbyte_loop
-
- pop { r4, r5, r6, r7 }
- cfi_remember_state
- cfi_adjust_cfa_offset (-16)
- cfi_restore (r4)
- cfi_restore (r5)
- cfi_restore (r6)
- cfi_restore (r7)
-
-.Lreturn:
- cmp ip, #0 @ Was this strcpy or stpcpy?
- ite eq
- subeq r0, r0, #1 @ stpcpy: undo post-inc from store
- movne r0, ip @ strcpy: return original dest
- bx lr
-
-.Lunaligned:
- cfi_restore_state
- @ Here, source is aligned to 8, but the destination is not word
- @ aligned. Therefore we have to shift the data in order to be
- @ able to perform aligned word stores.
-
- @ Find out which misalignment we're dealing with.
- tst r0, #1
- beq .Lunaligned2
- tst r0, #2
- bne .Lunaligned3
- @ Fallthru to .Lunaligned1.
-
-.macro unaligned_copy unalign
- @ Prologue to unaligned loop. Seed shifted non-zero bytes.
- uqsub8 r4, r7, r2 @ Find EOS
- uqsub8 r5, r7, r3
- mvns r4, r4 @ EOS in first word?
- it ne
- subne r1, r1, #8
- bne .Lbyte_loop
-#ifdef __ARMEB__
- rev r2, r2 @ Byte stores below need LE data
-#endif
- @ Store a few bytes from the first word.
- @ At the same time we align r0 and shift out bytes from r2.
-.rept 4-\unalign
- sfi_breg r0, \
- strb r2, [\B], #1
- lsr r2, r2, #8
-.endr
-#ifdef __ARMEB__
- rev r2, r2 @ Undo previous rev
-#endif
- @ Rotated unaligned copy loop. The tail of the prologue is
- @ shared with the loop itself.
- .balign 8
-1: mvns r5, r5 @ EOS in second word?
- bne 4f
- @ Combine first and second words
- orr r2, r2, r3, lsh_gt #(\unalign*8)
- @ Save leftover bytes from the two words
- lsh_ls r6, r3, #((4-\unalign)*8)
- sfi_breg r0, \
- str r2, [\B], #4
- @ The "real" start of the unaligned copy loop.
- sfi_breg r1, \
- ldrd r2, r3, [\B], #8 @ Load 8 more bytes
- uqsub8 r4, r7, r2 @ Find EOS
- sfi_pld r1, #128
- uqsub8 r5, r7, r3
- sfi_pld r0, #128
- mvns r4, r4 @ EOS in first word?
- bne 3f
- @ Combine the leftover and the first word
- orr r6, r6, r2, lsh_gt #(\unalign*8)
- @ Discard used bytes from the first word.
- lsh_ls r2, r2, #((4-\unalign)*8)
- sfi_breg r0, \
- str r6, [\B], #4
- b 1b
- @ Found EOS in one of the words; adjust backward
-3: sub r1, r1, #4
- mov r2, r6
-4: sub r1, r1, #4
- @ And store the remaining bytes from the leftover
-#ifdef __ARMEB__
- rev r2, r2
-#endif
-.rept \unalign
- sfi_breg r0, \
- strb r2, [\B], #1
- lsr r2, r2, #8
-.endr
- b .Lbyte_loop
-.endm
-
-.Lunaligned1:
- unaligned_copy 1
-.Lunaligned2:
- unaligned_copy 2
-.Lunaligned3:
- unaligned_copy 3
-
-END (strcpy)
-
-libc_hidden_builtin_def (strcpy)
diff --git a/ports/sysdeps/arm/armv6/strlen.S b/ports/sysdeps/arm/armv6/strlen.S
deleted file mode 100644
index 290d7bc86d..0000000000
--- a/ports/sysdeps/arm/armv6/strlen.S
+++ /dev/null
@@ -1,103 +0,0 @@
-/* strlen -- find the length of a nul-terminated string.
- Copyright (C) 2013-2014 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>
-
- .syntax unified
- .text
-
-ENTRY (strlen)
- @ r0 = start of string
- sfi_breg r0, \
- ldrb r2, [\B] @ load the first byte asap
-
- @ To cater to long strings, we want to search through a few
- @ characters until we reach an aligned pointer. To cater to
- @ small strings, we don't want to start doing word operations
- @ immediately. The compromise is a maximum of 16 bytes less
- @ whatever is required to end with an aligned pointer.
- @ r3 = number of characters to search in alignment loop
- and r3, r0, #7
- mov r1, r0 @ Save the input pointer
- rsb r3, r3, #15 @ 16 - 1 peeled loop iteration
- cmp r2, #0
- beq 99f
-
- @ Loop until we find ...
-1: sfi_breg r0, \
- ldrb r2, [\B, #1]!
- subs r3, r3, #1 @ ... the aligment point
- it ne
- cmpne r2, #0 @ ... or EOS
- bne 1b
-
- @ Disambiguate the exit possibilites above
- cmp r2, #0 @ Found EOS
- beq 99f
- add r0, r0, #1
-
- @ So now we're aligned.
- sfi_breg r0, \
- ldrd r2, r3, [\B], #8
-#ifdef ARCH_HAS_T2
- movw ip, #0x0101
- sfi_pld r0, #64
- movt ip, #0x0101
-#else
- ldr ip, =0x01010101
- sfi_pld r0, #64
-#endif
-
- @ Loop searching for EOS, 8 bytes at a time.
- @ Subtracting (unsigned saturating) from 1 for any byte means that
- @ we get 1 for any byte that was originally zero and 0 otherwise.
- @ Therefore we consider the lsb of each byte the "found" bit.
- .balign 16
-2: uqsub8 r2, ip, r2 @ Find EOS
- uqsub8 r3, ip, r3
- sfi_pld r0, #128 @ Prefetch 2 lines ahead
- orrs r3, r3, r2 @ Combine the two words
- it eq
- sfi_breg r0, \
- ldrdeq r2, r3, [\B], #8
- beq 2b
-
- @ Found something. Disambiguate between first and second words.
- @ Adjust r0 to point to the word containing the match.
- @ Adjust r2 to the found bits for the word containing the match.
- cmp r2, #0
- sub r0, r0, #4
- ite eq
- moveq r2, r3
- subne r0, r0, #4
-
- @ Find the bit-offset of the match within the word. Note that the
- @ bit result from clz will be 7 higher than "true", but we'll
- @ immediately discard those bits converting to a byte offset.
-#ifdef __ARMEL__
- rev r2, r2 @ For LE, count from the little end
-#endif
- clz r2, r2
- add r0, r0, r2, lsr #3 @ Adjust the pointer to the found byte
-99:
- sub r0, r0, r1 @ Subtract input to compute length
- bx lr
-
-END (strlen)
-
-libc_hidden_builtin_def (strlen)
diff --git a/ports/sysdeps/arm/armv6/strrchr.S b/ports/sysdeps/arm/armv6/strrchr.S
deleted file mode 100644
index a1e753c11b..0000000000
--- a/ports/sysdeps/arm/armv6/strrchr.S
+++ /dev/null
@@ -1,131 +0,0 @@
-/* strrchr -- find the last occurence of C in a nul-terminated string
- Copyright (C) 2013-2014 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>
-
- .syntax unified
- .text
-
-ENTRY (strrchr)
- @ r0 = start of string
- @ r1 = character to match
- @ returns NULL for no match, or a pointer to the match
-
- mov r3, r0
- mov r0, #0
- uxtb r1, r1
-
- @ Loop a few times until we're aligned.
- tst r3, #7
- beq 2f
-1: sfi_breg r3, \
- ldrb r2, [\B], #1
- cmp r2, r1 @ Find the character
- it eq
- subeq r0, r3, #1
- cmp r2, #0 @ Find EOS
- it eq
- bxeq lr
- tst r3, #7 @ Find the aligment point
- bne 1b
-
- @ So now we're aligned. Now we actually need a stack frame.
-2: 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)
-
- orr r1, r1, r1, lsl #8 @ Replicate C to all bytes
-#ifdef ARCH_HAS_T2
- movw ip, #0x0101
- movt ip, #0x0101
-#else
- ldr ip, =0x01010101
-#endif
- orr r1, r1, r1, lsl #16
- mov r2, #0 @ No found bits yet
-
- @ Loop searching for EOS and C, 8 bytes at a time.
- @ Any time we find a match in a word, we copy the address of
- @ the word to r0, and the found bits to r2.
-3: sfi_breg r3, \
- ldrd r4, r5, [\B], #8
- @ Subtracting (unsigned saturating) from 1 means result of 1 for
- @ any byte that was originally zero and 0 otherwise. Therefore
- @ we consider the lsb of each byte the "found" bit.
- uqsub8 r6, ip, r4 @ Find EOS
- uqsub8 r7, ip, r5
- eor r4, r4, r1 @ Convert C bytes to 0
- eor r5, r5, r1
- uqsub8 r4, ip, r4 @ Find C
- uqsub8 r5, ip, r5
- cmp r6, #0 @ Found EOS, first word
- bne 4f
- cmp r4, #0 @ Handle C, first word
- itt ne
- subne r0, r3, #8
- movne r2, r4
- cmp r7, #0 @ Found EOS, second word
- bne 5f
- cmp r5, #0 @ Handle C, second word
- itt ne
- subne r0, r3, #4
- movne r2, r5
- b 3b
-
- @ Found EOS in second word; fold to first word.
-5: add r3, r3, #4 @ Dec pointer to 2nd word, with below
- mov r4, r5 @ Overwrite first word C found
- mov r6, r7 @ Overwrite first word EOS found
-
- @ Found EOS. Zap found C after EOS.
-4: sub r3, r3, #8 @ Decrement pointer to first word
-#ifdef __ARMEB__
- @ Byte swap to be congruent with LE, which is easier from here on.
- rev r6, r6 @ Byte swap found EOS,
- rev r4, r4 @ ... this found C
- rev r2, r2 @ ... prev found C
-#endif
- sub r7, r6, #1 @ Toggle EOS lsb and below
- eor r6, r6, r7 @ All bits below and including lsb
- ands r4, r4, r6 @ Zap C above EOS
- itt ne
- movne r2, r4 @ Copy to result, if still non-zero
- movne r0, r3
-
- pop { r4, r5, r6, r7 }
- cfi_adjust_cfa_offset (-16)
- cfi_restore (r4)
- cfi_restore (r5)
- cfi_restore (r6)
- cfi_restore (r7)
-
- @ Adjust the result pointer if we found a word containing C.
- cmp r2, #0
- clz r2, r2 @ Find the bit offset of the last C
- itt ne
- rsbne r2, r2, #32 @ Convert to a count from the right
- addne r0, r0, r2, lsr #3 @ Convert to byte offset and add.
- bx lr
-
-END (strrchr)
-
-weak_alias (strrchr, rindex)
-libc_hidden_builtin_def (strrchr)
diff --git a/ports/sysdeps/arm/armv6t2/Implies b/ports/sysdeps/arm/armv6t2/Implies
deleted file mode 100644
index 20a87fc8a5..0000000000
--- a/ports/sysdeps/arm/armv6t2/Implies
+++ /dev/null
@@ -1,2 +0,0 @@
-# We can do everything that 6 can
-arm/armv6
diff --git a/ports/sysdeps/arm/armv6t2/ffs.S b/ports/sysdeps/arm/armv6t2/ffs.S
deleted file mode 100644
index b61624aedc..0000000000
--- a/ports/sysdeps/arm/armv6t2/ffs.S
+++ /dev/null
@@ -1,36 +0,0 @@
-/* ffs -- find first set bit in an int, from least significant end.
- Copyright (C) 2013-2014 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>
-
- .syntax unified
- .text
-
-ENTRY (__ffs)
- cmp r0, #0
- rbit r0, r0
- itt ne
- clzne r0, r0
- addne r0, r0, #1
- bx lr
-END (__ffs)
-
-weak_alias (__ffs, ffs)
-weak_alias (__ffs, ffsl)
-libc_hidden_def (__ffs)
-libc_hidden_builtin_def (ffs)
diff --git a/ports/sysdeps/arm/armv6t2/ffsll.S b/ports/sysdeps/arm/armv6t2/ffsll.S
deleted file mode 100644
index 204ff80092..0000000000
--- a/ports/sysdeps/arm/armv6t2/ffsll.S
+++ /dev/null
@@ -1,50 +0,0 @@
-/* ffsll -- find first set bit in a long long, from least significant end.
- Copyright (C) 2013-2014 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>
-
- .syntax unified
- .text
-
-ENTRY (ffsll)
- @ If low part is 0, operate on the high part. Ensure that the
- @ word on which we operate is in r0. Set r2 to the bit offset
- @ of the word being considered. Set the flags for the word
- @ being operated on.
-#ifdef __ARMEL__
- cmp r0, #0
- itee ne
- movne r2, #0
- moveq r2, #32
- movseq r0, r1
-#else
- cmp r1, #0
- ittee ne
- movne r2, #0
- movne r0, r1
- moveq r2, #32
- cmpeq r0, #0
-#endif
- @ Perform the ffs on r0.
- rbit r0, r0
- ittt ne
- clzne r0, r0
- addne r2, r2, #1
- addne r0, r0, r2
- bx lr
-END (ffsll)
diff --git a/ports/sysdeps/arm/armv6t2/memchr.S b/ports/sysdeps/arm/armv6t2/memchr.S
deleted file mode 100644
index 65bb94fe70..0000000000
--- a/ports/sysdeps/arm/armv6t2/memchr.S
+++ /dev/null
@@ -1,187 +0,0 @@
-/* Copyright (C) 2011-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Code contributed by Dave Gilbert <david.gilbert@linaro.org>
-
- 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@linaro.org
-@ 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@linaro.org
-@ Add some fixes from comments received (including use of ldrd instead ldm)
-@ 2011-12-07 david.gilbert@linaro.org
-@ 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
-#ifdef NO_THUMB
- .arm
-#else
- .thumb
- .thumb_func
-#endif
- .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:
- sfi_breg r0, \
- ldrb r3, [\B],#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 r6, r2, #7 @ Number of double words to work with * 8
- mvns r7, #0 @ all F's
- movs r3, #0
-
-15:
- sfi_breg r0, \
- ldrd r4,r5, [\B],#8
-#ifndef NO_THUMB
- subs r6, r6, #8
-#endif
- eor r4,r4, r1 @ Get it so that r4,r5 have 00's where the bytes match the target
- eor r5,r5, r1
- uadd8 r4, r4, r7 @ Parallel add 0xff - sets the GE bits for anything that wasn't 0
- sel r4, r3, r7 @ bytes are 00 for none-00 bytes, or ff for 00 bytes - NOTE INVERSION
- uadd8 r5, r5, r7 @ Parallel add 0xff - sets the GE bits for anything that wasn't 0
- sel r5, r4, r7 @ chained....bytes are 00 for none-00 bytes, or ff for 00 bytes - NOTE INVERSION
-#ifndef NO_THUMB
- cbnz r5, 60f
-#else
- cmp r5, #0
- bne 60f
- subs r6, r6, #8
-#endif
- 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:
-#ifndef NO_THUMB
- cbz r2, 40f @ 0 length or hit the end already then not found
-#else
- cmp r2, #0
- beq 40f
-#endif
-
-21: @ Post aligned section, or just a short call
- sfi_breg r0, \
- ldrb r3,[\B],#1
-#ifndef NO_THUMB
- subs r2,r2,#1
- eor r3,r3,r1 @ r3 = 0 if match - doesn't break flags from sub
- cbz r3, 50f
-#else
- eors r3, r3, r1
- beq 50f
- subs r2, r2, #1
-#endif
- 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
- @ r4 has the 00/ff pattern for the first word, r5 has the chained value
- cfi_restore_state
- cmp r4, #0
- itte eq
- moveq r4, r5 @ 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 r4, # CHARTSTMASK(0) @ 1st character
- bne 61f
- adds r0,r0,#1
- tst r4, # CHARTSTMASK(1) @ 2nd character
- ittt eq
- addeq r0,r0,#1
- tsteq r4, # (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)
diff --git a/ports/sysdeps/arm/armv6t2/strlen.S b/ports/sysdeps/arm/armv6t2/strlen.S
deleted file mode 100644
index 1706f6c6b8..0000000000
--- a/ports/sysdeps/arm/armv6t2/strlen.S
+++ /dev/null
@@ -1,169 +0,0 @@
-/* Copyright (C) 2010-2014 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/>. */
-
-/*
- Assumes:
- ARMv6T2, AArch32
-
- */
-
-#include <arm-features.h> /* This might #define NO_THUMB. */
-#include <sysdep.h>
-
-#ifdef __ARMEB__
-#define S2LO lsl
-#define S2HI lsr
-#else
-#define S2LO lsr
-#define S2HI lsl
-#endif
-
-#ifndef NO_THUMB
-/* This code is best on Thumb. */
- .thumb
-#else
-/* Using bne.w explicitly is desirable in Thumb mode because it helps
- align the following label without a nop. In ARM mode there is no
- such difference. */
-.macro bne.w label
- bne \label
-.endm
-
-/* This clobbers the condition codes, which the real Thumb cbnz instruction
- does not do. But it doesn't matter for any of the uses here. */
-.macro cbnz reg, label
- cmp \reg, #0
- bne \label
-.endm
-#endif
-
-/* Parameters and result. */
-#define srcin r0
-#define result r0
-
-/* Internal variables. */
-#define src r1
-#define data1a r2
-#define data1b r3
-#define const_m1 r12
-#define const_0 r4
-#define tmp1 r4 /* Overlaps const_0 */
-#define tmp2 r5
-
- .text
- .p2align 6
-ENTRY(strlen)
- sfi_pld srcin, #0
- strd r4, r5, [sp, #-8]!
- cfi_adjust_cfa_offset (8)
- cfi_rel_offset (r4, 0)
- cfi_rel_offset (r5, 4)
- cfi_remember_state
- bic src, srcin, #7
- mvn const_m1, #0
- ands tmp1, srcin, #7 /* (8 - bytes) to alignment. */
- sfi_pld src, #32
- bne.w .Lmisaligned8
- mov const_0, #0
- mov result, #-8
-.Lloop_aligned:
- /* Bytes 0-7. */
- sfi_breg src, \
- ldrd data1a, data1b, [\B]
- sfi_pld src, #64
- add result, result, #8
-.Lstart_realigned:
- uadd8 data1a, data1a, const_m1 /* Saturating GE<0:3> set. */
- sel data1a, const_0, const_m1 /* Select based on GE<0:3>. */
- uadd8 data1b, data1b, const_m1
- sel data1b, data1a, const_m1 /* Only used if d1a == 0. */
- cbnz data1b, .Lnull_found
-
- /* Bytes 8-15. */
- sfi_breg src, \
- ldrd data1a, data1b, [\B, #8]
- uadd8 data1a, data1a, const_m1 /* Saturating GE<0:3> set. */
- add result, result, #8
- sel data1a, const_0, const_m1 /* Select based on GE<0:3>. */
- uadd8 data1b, data1b, const_m1
- sel data1b, data1a, const_m1 /* Only used if d1a == 0. */
- cbnz data1b, .Lnull_found
-
- /* Bytes 16-23. */
- sfi_breg src, \
- ldrd data1a, data1b, [\B, #16]
- uadd8 data1a, data1a, const_m1 /* Saturating GE<0:3> set. */
- add result, result, #8
- sel data1a, const_0, const_m1 /* Select based on GE<0:3>. */
- uadd8 data1b, data1b, const_m1
- sel data1b, data1a, const_m1 /* Only used if d1a == 0. */
- cbnz data1b, .Lnull_found
-
- /* Bytes 24-31. */
- sfi_breg src, \
- ldrd data1a, data1b, [\B, #24]
- add src, src, #32
- uadd8 data1a, data1a, const_m1 /* Saturating GE<0:3> set. */
- add result, result, #8
- sel data1a, const_0, const_m1 /* Select based on GE<0:3>. */
- uadd8 data1b, data1b, const_m1
- sel data1b, data1a, const_m1 /* Only used if d1a == 0. */
- cmp data1b, #0
- beq .Lloop_aligned
-
-.Lnull_found:
- cmp data1a, #0
- itt eq
- addeq result, result, #4
- moveq data1a, data1b
-#ifndef __ARMEB__
- rev data1a, data1a
-#endif
- clz data1a, data1a
- ldrd r4, r5, [sp], #8
- cfi_adjust_cfa_offset (-8)
- cfi_restore (r4)
- cfi_restore (r5)
- add result, result, data1a, lsr #3 /* Bits -> Bytes. */
- DO_RET(lr)
-
-.Lmisaligned8:
- cfi_restore_state
- sfi_breg src, \
- ldrd data1a, data1b, [\B]
- and tmp2, tmp1, #3
- rsb result, tmp1, #0
- lsl tmp2, tmp2, #3 /* Bytes -> bits. */
- tst tmp1, #4
- sfi_pld src, #64
- S2HI tmp2, const_m1, tmp2
-#ifdef NO_THUMB
- mvn tmp1, tmp2
- orr data1a, data1a, tmp1
- itt ne
- orrne data1b, data1b, tmp1
-#else
- orn data1a, data1a, tmp2
- itt ne
- ornne data1b, data1b, tmp2
-#endif
- movne data1a, const_m1
- mov const_0, #0
- b .Lstart_realigned
-
-END(strlen)
-libc_hidden_builtin_def (strlen)
diff --git a/ports/sysdeps/arm/armv7/Implies b/ports/sysdeps/arm/armv7/Implies
deleted file mode 100644
index c6cd0eb877..0000000000
--- a/ports/sysdeps/arm/armv7/Implies
+++ /dev/null
@@ -1,2 +0,0 @@
-# We can do everything that 6T2 can
-arm/armv6t2
diff --git a/ports/sysdeps/arm/armv7/configure b/ports/sysdeps/arm/armv7/configure
deleted file mode 100644
index 46e5d52df4..0000000000
--- a/ports/sysdeps/arm/armv7/configure
+++ /dev/null
@@ -1,72 +0,0 @@
-# This file is generated from configure.ac by Autoconf. DO NOT EDIT!
- # Local configure fragment for sysdeps/arm/armv7.
-
-# We need binutils 2.21 to ensure that NEON alignments are assembled correctly.
-libc_cv_arm_as_version_ok=yes
-for ac_prog in $AS
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AS+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$AS"; then
- ac_cv_prog_AS="$AS" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_AS="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-AS=$ac_cv_prog_AS
-if test -n "$AS"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
-$as_echo "$AS" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$AS" && break
-done
-
-if test -z "$AS"; then
- ac_verc_fail=yes
-else
- # Found it, now check the version.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of $AS" >&5
-$as_echo_n "checking version of $AS... " >&6; }
- ac_prog_version=`$AS --version 2>&1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
- case $ac_prog_version in
- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
- 2.1[0-9][0-9]*|2.2[1-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*)
- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-
- esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5
-$as_echo "$ac_prog_version" >&6; }
-fi
-if test $ac_verc_fail = yes; then
- libc_cv_arm_as_version_ok=no
-fi
-
-
-if test $libc_cv_arm_as_version_ok != yes; then
- as_fn_error $? "as version too old, at least 2.21 is required" "$LINENO" 5
-fi
diff --git a/ports/sysdeps/arm/armv7/configure.ac b/ports/sysdeps/arm/armv7/configure.ac
deleted file mode 100644
index 01e93ecd36..0000000000
--- a/ports/sysdeps/arm/armv7/configure.ac
+++ /dev/null
@@ -1,12 +0,0 @@
-GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
-# Local configure fragment for sysdeps/arm/armv7.
-
-# We need binutils 2.21 to ensure that NEON alignments are assembled correctly.
-libc_cv_arm_as_version_ok=yes
-AC_CHECK_PROG_VER(AS, $AS, --version,
- [GNU assembler.* \([0-9]*\.[0-9.]*\)],
- [2.1[0-9][0-9]*|2.2[1-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*], libc_cv_arm_as_version_ok=no)
-
-if test $libc_cv_arm_as_version_ok != yes; then
- AC_MSG_ERROR([as version too old, at least 2.21 is required])
-fi
diff --git a/ports/sysdeps/arm/armv7/multiarch/Makefile b/ports/sysdeps/arm/armv7/multiarch/Makefile
deleted file mode 100644
index e834cc937f..0000000000
--- a/ports/sysdeps/arm/armv7/multiarch/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-ifeq ($(subdir),string)
-sysdep_routines += memcpy_neon memcpy_vfp
-endif
diff --git a/ports/sysdeps/arm/armv7/multiarch/aeabi_memcpy.c b/ports/sysdeps/arm/armv7/multiarch/aeabi_memcpy.c
deleted file mode 100644
index c6a2a98a55..0000000000
--- a/ports/sysdeps/arm/armv7/multiarch/aeabi_memcpy.c
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Empty file to override sysdeps/arm version. See memcpy.S for definitions
- of these functions. */
diff --git a/ports/sysdeps/arm/armv7/multiarch/ifunc-impl-list.c b/ports/sysdeps/arm/armv7/multiarch/ifunc-impl-list.c
deleted file mode 100644
index 2515418eda..0000000000
--- a/ports/sysdeps/arm/armv7/multiarch/ifunc-impl-list.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/* Enumerate available IFUNC implementations of a function. ARM version.
- Copyright (C) 2013-2014 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 <stdbool.h>
-#include <string.h>
-#include <ldsodefs.h>
-#include <sysdep.h>
-#include <ifunc-impl-list.h>
-
-/* Fill ARRAY of MAX elements with IFUNC implementations for function
- NAME and return the number of valid entries. */
-
-size_t
-__libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
- size_t max)
-{
- size_t i = 0;
-
- bool use_neon = true;
-#ifdef __ARM_NEON__
-# define __memcpy_neon memcpy
-#else
- use_neon = (GLRO(dl_hwcap) & HWCAP_ARM_NEON) != 0;
-#endif
-
-#ifndef __ARM_NEON__
- bool use_vfp = true;
-# ifdef __SOFTFP__
- use_vfp = (GLRO(dl_hwcap) & HWCAP_ARM_VFP) != 0;
-# endif
-#endif
-
- IFUNC_IMPL (i, name, memcpy,
- IFUNC_IMPL_ADD (array, i, memcpy, use_neon, __memcpy_neon)
-#ifndef __ARM_NEON__
- IFUNC_IMPL_ADD (array, i, memcpy, use_vfp, __memcpy_vfp)
-#endif
- IFUNC_IMPL_ADD (array, i, memcpy, 1, __memcpy_arm));
-
- return i;
-}
diff --git a/ports/sysdeps/arm/armv7/multiarch/memcpy.S b/ports/sysdeps/arm/armv7/multiarch/memcpy.S
deleted file mode 100644
index c4f4e80fb0..0000000000
--- a/ports/sysdeps/arm/armv7/multiarch/memcpy.S
+++ /dev/null
@@ -1,76 +0,0 @@
-/* Multiple versions of memcpy
- All versions must be listed in ifunc-impl-list.c.
- Copyright (C) 2013-2014 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/>. */
-
-/* Thumb requires excess IT instructions here. */
-#define NO_THUMB
-#include <sysdep.h>
-#include <rtld-global-offsets.h>
-
-#ifndef NOT_IN_libc
-/* Under __ARM_NEON__, memcpy_neon.S defines the name memcpy. */
-# ifndef __ARM_NEON__
- .text
-ENTRY(memcpy)
- .type memcpy, %gnu_indirect_function
-# ifdef __SOFTFP__
- ldr r1, .Lmemcpy_arm
- tst r0, #HWCAP_ARM_VFP
- ldrne r1, .Lmemcpy_vfp
-# else
- ldr r1, .Lmemcpy_vfp
-# endif
- tst r0, #HWCAP_ARM_NEON
- ldrne r1, .Lmemcpy_neon
-1:
- add r0, r1, pc
- DO_RET(lr)
-
-# ifdef __SOFTFP__
-.Lmemcpy_arm:
- .long C_SYMBOL_NAME(__memcpy_arm) - 1b - PC_OFS
-# endif
-.Lmemcpy_neon:
- .long C_SYMBOL_NAME(__memcpy_neon) - 1b - PC_OFS
-.Lmemcpy_vfp:
- .long C_SYMBOL_NAME(__memcpy_vfp) - 1b - PC_OFS
-
-END(memcpy)
-
-libc_hidden_builtin_def (memcpy)
-#endif /* Not __ARM_NEON__. */
-
-/* These versions of memcpy are defined not to clobber any VFP or NEON
- registers so they must always call the ARM variant of the memcpy code. */
-strong_alias (__memcpy_arm, __aeabi_memcpy)
-strong_alias (__memcpy_arm, __aeabi_memcpy4)
-strong_alias (__memcpy_arm, __aeabi_memcpy8)
-libc_hidden_def (__memcpy_arm)
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-#undef weak_alias
-#define weak_alias(x, y)
-#undef libc_hidden_def
-#define libc_hidden_def(name)
-
-#define memcpy __memcpy_arm
-
-#endif
-
-#include "memcpy_impl.S"
diff --git a/ports/sysdeps/arm/armv7/multiarch/memcpy_impl.S b/ports/sysdeps/arm/armv7/multiarch/memcpy_impl.S
deleted file mode 100644
index 1562416cf6..0000000000
--- a/ports/sysdeps/arm/armv7/multiarch/memcpy_impl.S
+++ /dev/null
@@ -1,917 +0,0 @@
-/* NEON/VFP/ARM version of memcpy optimized for Cortex-A15.
- Copyright (C) 2013-2014 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/>.
-
- This memcpy routine is optimised for Cortex-A15 cores and takes advantage
- of VFP or NEON when built with the appropriate flags.
-
- Assumptions:
-
- ARMv6 (ARMv7-a if using Neon)
- ARM state
- Unaligned accesses
-
- */
-
-/* Thumb cannot encode negative immediate offsets in memory operations. */
-#ifndef NO_THUMB
-#define NO_THUMB
-#endif
-#include <sysdep.h>
-#include <arm-features.h>
-
- .syntax unified
- /* This implementation requires ARM state. */
- .arm
-
-#ifdef MEMCPY_NEON
-
- .fpu neon
- .arch armv7-a
-# define FRAME_SIZE 4
-# define USE_VFP
-# define USE_NEON
-
-#elif defined (MEMCPY_VFP)
-
- .arch armv6
- .fpu vfpv2
-# define FRAME_SIZE 32
-# define USE_VFP
-
-#else
- .arch armv6
-# define FRAME_SIZE 32
-
-#endif
-
-#define ALIGN(addr, align) addr:align
-
-#define INSN_SIZE 4
-
-/* Call parameters. */
-#define dstin r0
-#define src r1
-#define count r2
-
-/* Locals. */
-#define tmp1 r3
-#define dst ip
-#define tmp2 r8
-
-/* These two macros both work by repeated invocation of the macro
- dispatch_step (not defined here). That macro performs one "step",
- doing one load instruction and one store instruction to copy one
- "unit". On entry, TMP1 contains the number of bytes to be copied,
- a multiple of the unit size. The macro clobbers TMP1 in the
- process of doing a computed jump to the tail containing the
- appropriate number of steps.
-
- In dispatch_7_dword, dispatch_step is invoked seven times, with an
- argument that is 7 for the first and 1 for the last. Units are
- double-words (8 bytes). TMP1 is at most 56.
-
- In dispatch_15_word, dispatch_step is invoked fifteen times,
- with an argument that is 15 for the first and 1 for the last.
- Units are words (4 bytes). TMP1 is at most 60. */
-
-#ifndef ARM_ALWAYS_BX
-# if ARM_BX_ALIGN_LOG2 != 2
-# error case not handled
-# endif
- .macro dispatch_7_dword
- rsb tmp1, tmp1, #((7 * 8) - PC_OFS + INSN_SIZE)
- add pc, pc, tmp1
- dispatch_step 7
- dispatch_step 6
- dispatch_step 5
- dispatch_step 4
- dispatch_step 3
- dispatch_step 2
- dispatch_step 1
- .purgem dispatch_step
- .endm
-
- .macro dispatch_15_word
- rsb tmp1, tmp1, #((15 * 4) - PC_OFS/2 + INSN_SIZE/2)
- add pc, pc, tmp1, lsl #1
- dispatch_step 15
- dispatch_step 14
- dispatch_step 13
- dispatch_step 12
- dispatch_step 11
- dispatch_step 10
- dispatch_step 9
- dispatch_step 8
- dispatch_step 7
- dispatch_step 6
- dispatch_step 5
- dispatch_step 4
- dispatch_step 3
- dispatch_step 2
- dispatch_step 1
- .purgem dispatch_step
- .endm
-#else
-# if ARM_BX_ALIGN_LOG2 < 3
-# error case not handled
-# endif
- .macro dispatch_helper steps, log2_bytes_per_step
- /* TMP1 gets (max_bytes - bytes_to_copy), where max_bytes is
- (STEPS << LOG2_BYTES_PER_STEP).
- So this is (steps_to_skip << LOG2_BYTES_PER_STEP).
- Then it needs further adjustment to compensate for the
- distance between the PC value taken below (0f + PC_OFS)
- and the first step's instructions (1f). */
- rsb tmp1, tmp1, #((\steps << \log2_bytes_per_step) \
- + ((1f - PC_OFS - 0f) \
- >> (ARM_BX_ALIGN_LOG2 - \log2_bytes_per_step)))
- /* Shifting down LOG2_BYTES_PER_STEP gives us the number of
- steps to skip, then shifting up ARM_BX_ALIGN_LOG2 gives us
- the (byte) distance to add to the PC. */
-0: add tmp1, pc, tmp1, lsl #(ARM_BX_ALIGN_LOG2 - \log2_bytes_per_step)
- bx tmp1
- .p2align ARM_BX_ALIGN_LOG2
-1:
- .endm
-
- .macro dispatch_7_dword
- dispatch_helper 7, 3
- .p2align ARM_BX_ALIGN_LOG2
- dispatch_step 7
- .p2align ARM_BX_ALIGN_LOG2
- dispatch_step 6
- .p2align ARM_BX_ALIGN_LOG2
- dispatch_step 5
- .p2align ARM_BX_ALIGN_LOG2
- dispatch_step 4
- .p2align ARM_BX_ALIGN_LOG2
- dispatch_step 3
- .p2align ARM_BX_ALIGN_LOG2
- dispatch_step 2
- .p2align ARM_BX_ALIGN_LOG2
- dispatch_step 1
- .p2align ARM_BX_ALIGN_LOG2
- .purgem dispatch_step
- .endm
-
- .macro dispatch_15_word
- dispatch_helper 15, 2
- dispatch_step 15
- .p2align ARM_BX_ALIGN_LOG2
- dispatch_step 14
- .p2align ARM_BX_ALIGN_LOG2
- dispatch_step 13
- .p2align ARM_BX_ALIGN_LOG2
- dispatch_step 12
- .p2align ARM_BX_ALIGN_LOG2
- dispatch_step 11
- .p2align ARM_BX_ALIGN_LOG2
- dispatch_step 10
- .p2align ARM_BX_ALIGN_LOG2
- dispatch_step 9
- .p2align ARM_BX_ALIGN_LOG2
- dispatch_step 8
- .p2align ARM_BX_ALIGN_LOG2
- dispatch_step 7
- .p2align ARM_BX_ALIGN_LOG2
- dispatch_step 6
- .p2align ARM_BX_ALIGN_LOG2
- dispatch_step 5
- .p2align ARM_BX_ALIGN_LOG2
- dispatch_step 4
- .p2align ARM_BX_ALIGN_LOG2
- dispatch_step 3
- .p2align ARM_BX_ALIGN_LOG2
- dispatch_step 2
- .p2align ARM_BX_ALIGN_LOG2
- dispatch_step 1
- .p2align ARM_BX_ALIGN_LOG2
- .purgem dispatch_step
- .endm
-
-#endif
-
-#ifndef USE_NEON
-/* For bulk copies using GP registers. */
-#define A_l r2 /* Call-clobbered. */
-#define A_h r3 /* Call-clobbered. */
-#define B_l r4
-#define B_h r5
-#define C_l r6
-#define C_h r7
-/* Don't use the pair r8,r9 because in some EABI variants r9 is reserved. */
-#define D_l r10
-#define D_h r11
-#endif
-
-/* Number of lines ahead to pre-fetch data. If you change this the code
- below will need adjustment to compensate. */
-
-#define prefetch_lines 5
-
-#ifdef USE_VFP
- .macro cpy_line_vfp vreg, base
- sfi_breg dst, \
- vstr \vreg, [\B, #\base]
- sfi_breg src, \
- vldr \vreg, [\B, #\base]
- sfi_breg dst, \
- vstr d0, [\B, #\base + 8]
- sfi_breg src, \
- vldr d0, [\B, #\base + 8]
- sfi_breg dst, \
- vstr d1, [\B, #\base + 16]
- sfi_breg src, \
- vldr d1, [\B, #\base + 16]
- sfi_breg dst, \
- vstr d2, [\B, #\base + 24]
- sfi_breg src, \
- vldr d2, [\B, #\base + 24]
- sfi_breg dst, \
- vstr \vreg, [\B, #\base + 32]
- sfi_breg src, \
- vldr \vreg, [\B, #\base + prefetch_lines * 64 - 32]
- sfi_breg dst, \
- vstr d0, [\B, #\base + 40]
- sfi_breg src, \
- vldr d0, [\B, #\base + 40]
- sfi_breg dst, \
- vstr d1, [\B, #\base + 48]
- sfi_breg src, \
- vldr d1, [\B, #\base + 48]
- sfi_breg dst, \
- vstr d2, [\B, #\base + 56]
- sfi_breg src, \
- vldr d2, [\B, #\base + 56]
- .endm
-
- .macro cpy_tail_vfp vreg, base
- sfi_breg dst, \
- vstr \vreg, [\B, #\base]
- sfi_breg src, \
- vldr \vreg, [\B, #\base]
- sfi_breg dst, \
- vstr d0, [\B, #\base + 8]
- sfi_breg src, \
- vldr d0, [\B, #\base + 8]
- sfi_breg dst, \
- vstr d1, [\B, #\base + 16]
- sfi_breg src, \
- vldr d1, [\B, #\base + 16]
- sfi_breg dst, \
- vstr d2, [\B, #\base + 24]
- sfi_breg src, \
- vldr d2, [\B, #\base + 24]
- sfi_breg dst, \
- vstr \vreg, [\B, #\base + 32]
- sfi_breg dst, \
- vstr d0, [\B, #\base + 40]
- sfi_breg src, \
- vldr d0, [\B, #\base + 40]
- sfi_breg dst, \
- vstr d1, [\B, #\base + 48]
- sfi_breg src, \
- vldr d1, [\B, #\base + 48]
- sfi_breg dst, \
- vstr d2, [\B, #\base + 56]
- sfi_breg src, \
- vldr d2, [\B, #\base + 56]
- .endm
-#endif
-
- .p2align 6
-ENTRY(memcpy)
-
- mov dst, dstin /* Preserve dstin, we need to return it. */
- cmp count, #64
- bge .Lcpy_not_short
- /* Deal with small copies quickly by dropping straight into the
- exit block. */
-
-.Ltail63unaligned:
-#ifdef USE_NEON
- /* These need an extra layer of macro just to work around a
- bug in the assembler's parser when an operand starts with
- a {...}. http://sourceware.org/bugzilla/show_bug.cgi?id=15647
- tracks that bug; it was not fixed as of binutils-2.23.2. */
- .macro neon_load_d0 reg
- vld1.8 {d0}, [\reg]!
- .endm
- .macro neon_store_d0 reg
- vst1.8 {d0}, [\reg]!
- .endm
-
- /* These are used by the NaCl sfi_breg macro. */
- .macro _sfi_breg_dmask_neon_load_d0 reg
- _sfi_dmask \reg
- .endm
- .macro _sfi_breg_dmask_neon_store_d0 reg
- _sfi_dmask \reg
- .endm
-
- and tmp1, count, #0x38
- .macro dispatch_step i
- sfi_breg src, neon_load_d0 \B
- sfi_breg dst, neon_store_d0 \B
- .endm
- dispatch_7_dword
-
- tst count, #4
- sfi_breg src, \
- ldrne tmp1, [\B], #4
- sfi_breg dst, \
- strne tmp1, [\B], #4
-#else
- /* Copy up to 15 full words of data. May not be aligned. */
- /* Cannot use VFP for unaligned data. */
- and tmp1, count, #0x3c
- add dst, dst, tmp1
- add src, src, tmp1
- /* Jump directly into the sequence below at the correct offset. */
- .macro dispatch_step i
- sfi_breg src, \
- ldr tmp1, [\B, #-(\i * 4)]
- sfi_breg dst, \
- str tmp1, [\B, #-(\i * 4)]
- .endm
- dispatch_15_word
-#endif
-
- lsls count, count, #31
- sfi_breg src, \
- ldrhcs tmp1, [\B], #2
- sfi_breg src, \
- ldrbne src, [\B] /* Src is dead, use as a scratch. */
- sfi_breg dst, \
- strhcs tmp1, [\B], #2
- sfi_breg dst, \
- strbne src, [\B]
- bx lr
-
-.Lcpy_not_short:
- /* At least 64 bytes to copy, but don't know the alignment yet. */
- str tmp2, [sp, #-FRAME_SIZE]!
- cfi_adjust_cfa_offset (FRAME_SIZE)
- cfi_rel_offset (tmp2, 0)
- cfi_remember_state
- and tmp2, src, #7
- and tmp1, dst, #7
- cmp tmp1, tmp2
- bne .Lcpy_notaligned
-
-#ifdef USE_VFP
- /* Magic dust alert! Force VFP on Cortex-A9. Experiments show
- that the FP pipeline is much better at streaming loads and
- stores. This is outside the critical loop. */
- vmov.f32 s0, s0
-#endif
-
- /* SRC and DST have the same mutual 64-bit alignment, but we may
- still need to pre-copy some bytes to get to natural alignment.
- We bring SRC and DST into full 64-bit alignment. */
- lsls tmp2, dst, #29
- beq 1f
- rsbs tmp2, tmp2, #0
- sub count, count, tmp2, lsr #29
- sfi_breg src, \
- ldrmi tmp1, [\B], #4
- sfi_breg dst, \
- strmi tmp1, [\B], #4
- lsls tmp2, tmp2, #2
- sfi_breg src, \
- ldrhcs tmp1, [\B], #2
- sfi_breg src, \
- ldrbne tmp2, [\B], #1
- sfi_breg dst, \
- strhcs tmp1, [\B], #2
- sfi_breg dst, \
- strbne tmp2, [\B], #1
-
-1:
- subs tmp2, count, #64 /* Use tmp2 for count. */
- blt .Ltail63aligned
-
- cmp tmp2, #512
- bge .Lcpy_body_long
-
-.Lcpy_body_medium: /* Count in tmp2. */
-#ifdef USE_VFP
-1:
- sfi_breg src, \
- vldr d0, [\B, #0]
- subs tmp2, tmp2, #64
- sfi_breg src, \
- vldr d1, [\B, #8]
- sfi_breg dst, \
- vstr d0, [\B, #0]
- sfi_breg src, \
- vldr d0, [\B, #16]
- sfi_breg dst, \
- vstr d1, [\B, #8]
- sfi_breg src, \
- vldr d1, [\B, #24]
- sfi_breg dst, \
- vstr d0, [\B, #16]
- sfi_breg src, \
- vldr d0, [\B, #32]
- sfi_breg dst, \
- vstr d1, [\B, #24]
- sfi_breg src, \
- vldr d1, [\B, #40]
- sfi_breg dst, \
- vstr d0, [\B, #32]
- sfi_breg src, \
- vldr d0, [\B, #48]
- sfi_breg dst, \
- vstr d1, [\B, #40]
- sfi_breg src, \
- vldr d1, [\B, #56]
- sfi_breg dst, \
- vstr d0, [\B, #48]
- add src, src, #64
- sfi_breg dst, \
- vstr d1, [\B, #56]
- add dst, dst, #64
- bge 1b
- tst tmp2, #0x3f
- beq .Ldone
-
-.Ltail63aligned: /* Count in tmp2. */
- and tmp1, tmp2, #0x38
- add dst, dst, tmp1
- add src, src, tmp1
- .macro dispatch_step i
- sfi_breg src, \
- vldr d0, [\B, #-(\i * 8)]
- sfi_breg dst, \
- vstr d0, [\B, #-(\i * 8)]
- .endm
- dispatch_7_dword
-#else
- sub src, src, #8
- sub dst, dst, #8
-1:
- sfi_breg src, \
- ldrd A_l, A_h, [\B, #8]
- sfi_breg dst, \
- strd A_l, A_h, [\B, #8]
- sfi_breg src, \
- ldrd A_l, A_h, [\B, #16]
- sfi_breg dst, \
- strd A_l, A_h, [\B, #16]
- sfi_breg src, \
- ldrd A_l, A_h, [\B, #24]
- sfi_breg dst, \
- strd A_l, A_h, [\B, #24]
- sfi_breg src, \
- ldrd A_l, A_h, [\B, #32]
- sfi_breg dst, \
- strd A_l, A_h, [\B, #32]
- sfi_breg src, \
- ldrd A_l, A_h, [\B, #40]
- sfi_breg dst, \
- strd A_l, A_h, [\B, #40]
- sfi_breg src, \
- ldrd A_l, A_h, [\B, #48]
- sfi_breg dst, \
- strd A_l, A_h, [\B, #48]
- sfi_breg src, \
- ldrd A_l, A_h, [\B, #56]
- sfi_breg dst, \
- strd A_l, A_h, [\B, #56]
- sfi_breg src, \
- ldrd A_l, A_h, [\B, #64]!
- sfi_breg dst, \
- strd A_l, A_h, [\B, #64]!
- subs tmp2, tmp2, #64
- bge 1b
- tst tmp2, #0x3f
- bne 1f
- ldr tmp2,[sp], #FRAME_SIZE
- cfi_adjust_cfa_offset (-FRAME_SIZE)
- cfi_restore (tmp2)
- bx lr
-
- cfi_restore_state
- cfi_remember_state
-1:
- add src, src, #8
- add dst, dst, #8
-
-.Ltail63aligned: /* Count in tmp2. */
- /* Copy up to 7 d-words of data. Similar to Ltail63unaligned, but
- we know that the src and dest are 64-bit aligned so we can use
- LDRD/STRD to improve efficiency. */
- /* TMP2 is now negative, but we don't care about that. The bottom
- six bits still tell us how many bytes are left to copy. */
-
- and tmp1, tmp2, #0x38
- add dst, dst, tmp1
- add src, src, tmp1
- .macro dispatch_step i
- sfi_breg src, \
- ldrd A_l, A_h, [\B, #-(\i * 8)]
- sfi_breg dst, \
- strd A_l, A_h, [\B, #-(\i * 8)]
- .endm
- dispatch_7_dword
-#endif
-
- tst tmp2, #4
- sfi_breg src, \
- ldrne tmp1, [\B], #4
- sfi_breg dst, \
- strne tmp1, [\B], #4
- lsls tmp2, tmp2, #31 /* Count (tmp2) now dead. */
- sfi_breg src, \
- ldrhcs tmp1, [\B], #2
- sfi_breg src, \
- ldrbne tmp2, [\B]
- sfi_breg dst, \
- strhcs tmp1, [\B], #2
- sfi_breg dst, \
- strbne tmp2, [\B]
-
-.Ldone:
- ldr tmp2, [sp], #FRAME_SIZE
- cfi_adjust_cfa_offset (-FRAME_SIZE)
- cfi_restore (tmp2)
- bx lr
-
- cfi_restore_state
- cfi_remember_state
-
-.Lcpy_body_long: /* Count in tmp2. */
-
- /* Long copy. We know that there's at least (prefetch_lines * 64)
- bytes to go. */
-#ifdef USE_VFP
- /* Don't use PLD. Instead, read some data in advance of the current
- copy position into a register. This should act like a PLD
- operation but we won't have to repeat the transfer. */
-
- sfi_breg src, \
- vldr d3, [\B, #0]
- sfi_breg src, \
- vldr d4, [\B, #64]
- sfi_breg src, \
- vldr d5, [\B, #128]
- sfi_breg src, \
- vldr d6, [\B, #192]
- sfi_breg src, \
- vldr d7, [\B, #256]
-
- sfi_breg src, \
- vldr d0, [\B, #8]
- sfi_breg src, \
- vldr d1, [\B, #16]
- sfi_breg src, \
- vldr d2, [\B, #24]
- add src, src, #32
-
- subs tmp2, tmp2, #prefetch_lines * 64 * 2
- blt 2f
-1:
- cpy_line_vfp d3, 0
- cpy_line_vfp d4, 64
- cpy_line_vfp d5, 128
- add dst, dst, #3 * 64
- add src, src, #3 * 64
- cpy_line_vfp d6, 0
- cpy_line_vfp d7, 64
- add dst, dst, #2 * 64
- add src, src, #2 * 64
- subs tmp2, tmp2, #prefetch_lines * 64
- bge 1b
-
-2:
- cpy_tail_vfp d3, 0
- cpy_tail_vfp d4, 64
- cpy_tail_vfp d5, 128
- add src, src, #3 * 64
- add dst, dst, #3 * 64
- cpy_tail_vfp d6, 0
- sfi_breg dst, \
- vstr d7, [\B, #64]
- sfi_breg src, \
- vldr d7, [\B, #64]
- sfi_breg dst, \
- vstr d0, [\B, #64 + 8]
- sfi_breg src, \
- vldr d0, [\B, #64 + 8]
- sfi_breg dst, \
- vstr d1, [\B, #64 + 16]
- sfi_breg src, \
- vldr d1, [\B, #64 + 16]
- sfi_breg dst, \
- vstr d2, [\B, #64 + 24]
- sfi_breg src, \
- vldr d2, [\B, #64 + 24]
- sfi_breg dst, \
- vstr d7, [\B, #64 + 32]
- add src, src, #96
- sfi_breg dst, \
- vstr d0, [\B, #64 + 40]
- sfi_breg dst, \
- vstr d1, [\B, #64 + 48]
- sfi_breg dst, \
- vstr d2, [\B, #64 + 56]
- add dst, dst, #128
- add tmp2, tmp2, #prefetch_lines * 64
- b .Lcpy_body_medium
-#else
- /* Long copy. Use an SMS style loop to maximize the I/O
- bandwidth of the core. We don't have enough spare registers
- to synthesise prefetching, so use PLD operations. */
- /* Pre-bias src and dst. */
- sub src, src, #8
- sub dst, dst, #8
- sfi_pld src, #8
- sfi_pld src, #72
- subs tmp2, tmp2, #64
- sfi_pld src, #136
- sfi_breg src, \
- ldrd A_l, A_h, [\B, #8]
- strd B_l, B_h, [sp, #8]
- cfi_rel_offset (B_l, 8)
- cfi_rel_offset (B_h, 12)
- sfi_breg src, \
- ldrd B_l, B_h, [\B, #16]
- strd C_l, C_h, [sp, #16]
- cfi_rel_offset (C_l, 16)
- cfi_rel_offset (C_h, 20)
- sfi_breg src, \
- ldrd C_l, C_h, [\B, #24]
- strd D_l, D_h, [sp, #24]
- cfi_rel_offset (D_l, 24)
- cfi_rel_offset (D_h, 28)
- sfi_pld src, #200
- sfi_breg src, \
- ldrd D_l, D_h, [\B, #32]!
- b 1f
- .p2align 6
-2:
- sfi_pld src, #232
- sfi_breg dst, \
- strd A_l, A_h, [\B, #40]
- sfi_breg src, \
- ldrd A_l, A_h, [\B, #40]
- sfi_breg dst, \
- strd B_l, B_h, [\B, #48]
- sfi_breg src, \
- ldrd B_l, B_h, [\B, #48]
- sfi_breg dst, \
- strd C_l, C_h, [\B, #56]
- sfi_breg src, \
- ldrd C_l, C_h, [\B, #56]
- sfi_breg dst, \
- strd D_l, D_h, [\B, #64]!
- sfi_breg src, \
- ldrd D_l, D_h, [\B, #64]!
- subs tmp2, tmp2, #64
-1:
- sfi_breg dst, \
- strd A_l, A_h, [\B, #8]
- sfi_breg src, \
- ldrd A_l, A_h, [\B, #8]
- sfi_breg dst, \
- strd B_l, B_h, [\B, #16]
- sfi_breg src, \
- ldrd B_l, B_h, [\B, #16]
- sfi_breg dst, \
- strd C_l, C_h, [\B, #24]
- sfi_breg src, \
- ldrd C_l, C_h, [\B, #24]
- sfi_breg dst, \
- strd D_l, D_h, [\B, #32]
- sfi_breg src, \
- ldrd D_l, D_h, [\B, #32]
- bcs 2b
- /* Save the remaining bytes and restore the callee-saved regs. */
- sfi_breg dst, \
- strd A_l, A_h, [\B, #40]
- add src, src, #40
- sfi_breg dst, \
- strd B_l, B_h, [\B, #48]
- ldrd B_l, B_h, [sp, #8]
- cfi_restore (B_l)
- cfi_restore (B_h)
- sfi_breg dst, \
- strd C_l, C_h, [\B, #56]
- ldrd C_l, C_h, [sp, #16]
- cfi_restore (C_l)
- cfi_restore (C_h)
- sfi_breg dst, \
- strd D_l, D_h, [\B, #64]
- ldrd D_l, D_h, [sp, #24]
- cfi_restore (D_l)
- cfi_restore (D_h)
- add dst, dst, #72
- tst tmp2, #0x3f
- bne .Ltail63aligned
- ldr tmp2, [sp], #FRAME_SIZE
- cfi_adjust_cfa_offset (-FRAME_SIZE)
- cfi_restore (tmp2)
- bx lr
-#endif
-
- cfi_restore_state
- cfi_remember_state
-
-.Lcpy_notaligned:
- sfi_pld src
- sfi_pld src, #64
- /* There's at least 64 bytes to copy, but there is no mutual
- alignment. */
- /* Bring DST to 64-bit alignment. */
- lsls tmp2, dst, #29
- sfi_pld src, #(2 * 64)
- beq 1f
- rsbs tmp2, tmp2, #0
- sub count, count, tmp2, lsr #29
- sfi_breg src, \
- ldrmi tmp1, [\B], #4
- sfi_breg dst, \
- strmi tmp1, [\B], #4
- lsls tmp2, tmp2, #2
- sfi_breg src, \
- ldrbne tmp1, [\B], #1
- sfi_breg src, \
- ldrhcs tmp2, [\B], #2
- sfi_breg dst, \
- strbne tmp1, [\B], #1
- sfi_breg dst, \
- strhcs tmp2, [\B], #2
-1:
- sfi_pld src, #(3 * 64)
- subs count, count, #64
- ldrmi tmp2, [sp], #FRAME_SIZE
- bmi .Ltail63unaligned
- sfi_pld src, #(4 * 64)
-
-#ifdef USE_NEON
- /* These need an extra layer of macro just to work around a
- bug in the assembler's parser when an operand starts with
- a {...}. */
- .macro neon_load_multi reglist, basereg
- vld1.8 {\reglist}, [\basereg]!
- .endm
- .macro neon_store_multi reglist, basereg
- vst1.8 {\reglist}, [ALIGN (\basereg, 64)]!
- .endm
-
- /* These are used by the NaCl sfi_breg macro. */
- .macro _sfi_breg_dmask_neon_load_multi reg
- _sfi_dmask \reg
- .endm
- .macro _sfi_breg_dmask_neon_store_multi reg
- _sfi_dmask \reg
- .endm
-
- sfi_breg src, neon_load_multi d0-d3, \B
- sfi_breg src, neon_load_multi d4-d7, \B
- subs count, count, #64
- bmi 2f
-1:
- sfi_pld src, #(4 * 64)
- sfi_breg dst, neon_store_multi d0-d3, \B
- sfi_breg src, neon_load_multi d0-d3, \B
- sfi_breg dst, neon_store_multi d4-d7, \B
- sfi_breg src, neon_load_multi d4-d7, \B
- subs count, count, #64
- bpl 1b
-2:
- sfi_breg dst, neon_store_multi d0-d3, \B
- sfi_breg dst, neon_store_multi d4-d7, \B
- ands count, count, #0x3f
-#else
- /* Use an SMS style loop to maximize the I/O bandwidth. */
- sub src, src, #4
- sub dst, dst, #8
- subs tmp2, count, #64 /* Use tmp2 for count. */
- sfi_breg src, \
- ldr A_l, [\B, #4]
- sfi_breg src, \
- ldr A_h, [\B, #8]
- strd B_l, B_h, [sp, #8]
- cfi_rel_offset (B_l, 8)
- cfi_rel_offset (B_h, 12)
- sfi_breg src, \
- ldr B_l, [\B, #12]
- sfi_breg src, \
- ldr B_h, [\B, #16]
- strd C_l, C_h, [sp, #16]
- cfi_rel_offset (C_l, 16)
- cfi_rel_offset (C_h, 20)
- sfi_breg src, \
- ldr C_l, [\B, #20]
- sfi_breg src, \
- ldr C_h, [\B, #24]
- strd D_l, D_h, [sp, #24]
- cfi_rel_offset (D_l, 24)
- cfi_rel_offset (D_h, 28)
- sfi_breg src, \
- ldr D_l, [\B, #28]
- sfi_breg src, \
- ldr D_h, [\B, #32]!
- b 1f
- .p2align 6
-2:
- sfi_pld src, #(5 * 64) - (32 - 4)
- sfi_breg dst, \
- strd A_l, A_h, [\B, #40]
- sfi_breg src, \
- ldr A_l, [\B, #36]
- sfi_breg src, \
- ldr A_h, [\B, #40]
- sfi_breg dst, \
- strd B_l, B_h, [\B, #48]
- sfi_breg src, \
- ldr B_l, [\B, #44]
- sfi_breg src, \
- ldr B_h, [\B, #48]
- sfi_breg dst, \
- strd C_l, C_h, [\B, #56]
- sfi_breg src, \
- ldr C_l, [\B, #52]
- sfi_breg src, \
- ldr C_h, [\B, #56]
- sfi_breg dst, \
- strd D_l, D_h, [\B, #64]!
- sfi_breg src, \
- ldr D_l, [\B, #60]
- sfi_breg src, \
- ldr D_h, [\B, #64]!
- subs tmp2, tmp2, #64
-1:
- sfi_breg dst, \
- strd A_l, A_h, [\B, #8]
- sfi_breg src, \
- ldr A_l, [\B, #4]
- sfi_breg src, \
- ldr A_h, [\B, #8]
- sfi_breg dst, \
- strd B_l, B_h, [\B, #16]
- sfi_breg src, \
- ldr B_l, [\B, #12]
- sfi_breg src, \
- ldr B_h, [\B, #16]
- sfi_breg dst, \
- strd C_l, C_h, [\B, #24]
- sfi_breg src, \
- ldr C_l, [\B, #20]
- sfi_breg src, \
- ldr C_h, [\B, #24]
- sfi_breg dst, \
- strd D_l, D_h, [\B, #32]
- sfi_breg src, \
- ldr D_l, [\B, #28]
- sfi_breg src, \
- ldr D_h, [\B, #32]
- bcs 2b
-
- /* Save the remaining bytes and restore the callee-saved regs. */
- sfi_breg dst, \
- strd A_l, A_h, [\B, #40]
- add src, src, #36
- sfi_breg dst, \
- strd B_l, B_h, [\B, #48]
- ldrd B_l, B_h, [sp, #8]
- cfi_restore (B_l)
- cfi_restore (B_h)
- sfi_breg dst, \
- strd C_l, C_h, [\B, #56]
- ldrd C_l, C_h, [sp, #16]
- cfi_restore (C_l)
- cfi_restore (C_h)
- sfi_breg dst, \
- strd D_l, D_h, [\B, #64]
- ldrd D_l, D_h, [sp, #24]
- cfi_restore (D_l)
- cfi_restore (D_h)
- add dst, dst, #72
- ands count, tmp2, #0x3f
-#endif
- ldr tmp2, [sp], #FRAME_SIZE
- cfi_adjust_cfa_offset (-FRAME_SIZE)
- cfi_restore (tmp2)
- bne .Ltail63unaligned
- bx lr
-
-END(memcpy)
-libc_hidden_builtin_def (memcpy)
diff --git a/ports/sysdeps/arm/armv7/multiarch/memcpy_neon.S b/ports/sysdeps/arm/armv7/multiarch/memcpy_neon.S
deleted file mode 100644
index e60d1cc0e1..0000000000
--- a/ports/sysdeps/arm/armv7/multiarch/memcpy_neon.S
+++ /dev/null
@@ -1,9 +0,0 @@
-#ifdef __ARM_NEON__
-/* Under __ARM_NEON__, this file defines memcpy directly. */
-libc_hidden_builtin_def (memcpy)
-#else
-# define memcpy __memcpy_neon
-#endif
-
-#define MEMCPY_NEON
-#include "memcpy_impl.S"
diff --git a/ports/sysdeps/arm/armv7/multiarch/memcpy_vfp.S b/ports/sysdeps/arm/armv7/multiarch/memcpy_vfp.S
deleted file mode 100644
index e008c041ed..0000000000
--- a/ports/sysdeps/arm/armv7/multiarch/memcpy_vfp.S
+++ /dev/null
@@ -1,7 +0,0 @@
-/* Under __ARM_NEON__, memcpy_neon.S defines memcpy directly
- and the __memcpy_vfp code will never be used. */
-#ifndef __ARM_NEON__
-# define MEMCPY_VFP
-# define memcpy __memcpy_vfp
-# include "memcpy_impl.S"
-#endif
diff --git a/ports/sysdeps/arm/backtrace.c b/ports/sysdeps/arm/backtrace.c
deleted file mode 100644
index 15ba506411..0000000000
--- a/ports/sysdeps/arm/backtrace.c
+++ /dev/null
@@ -1,125 +0,0 @@
-/* Return backtrace of current program state.
- Copyright (C) 2008-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Kazu Hirata <kazu@codesourcery.com>, 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
diff --git a/ports/sysdeps/arm/bits/atomic.h b/ports/sysdeps/arm/bits/atomic.h
deleted file mode 100644
index c2d5be5703..0000000000
--- a/ports/sysdeps/arm/bits/atomic.h
+++ /dev/null
@@ -1,159 +0,0 @@
-/* Atomic operations. Pure ARM version.
- Copyright (C) 2002-2014 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 <stdint.h>
-
-typedef int8_t atomic8_t;
-typedef uint8_t uatomic8_t;
-typedef int_fast8_t atomic_fast8_t;
-typedef uint_fast8_t uatomic_fast8_t;
-
-typedef int32_t atomic32_t;
-typedef uint32_t uatomic32_t;
-typedef int_fast32_t atomic_fast32_t;
-typedef uint_fast32_t uatomic_fast32_t;
-
-typedef intptr_t atomicptr_t;
-typedef uintptr_t uatomicptr_t;
-typedef intmax_t atomic_max_t;
-typedef uintmax_t uatomic_max_t;
-
-void __arm_link_error (void);
-
-#ifdef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
-# define atomic_full_barrier() __sync_synchronize ()
-#else
-# define atomic_full_barrier() __arm_assisted_full_barrier ()
-#endif
-
-/* An OS-specific bits/atomic.h file will define this macro if
- the OS can provide something. If not, we'll fail to build
- with a compiler that doesn't supply the operation. */
-#ifndef __arm_assisted_full_barrier
-# define __arm_assisted_full_barrier() __arm_link_error()
-#endif
-
-/* Use the atomic builtins provided by GCC in case the backend provides
- a pattern to do this efficiently. */
-#if __GNUC_PREREQ (4, 7) && defined __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
-
-# define atomic_exchange_acq(mem, value) \
- __atomic_val_bysize (__arch_exchange, int, mem, value, __ATOMIC_ACQUIRE)
-
-# define atomic_exchange_rel(mem, value) \
- __atomic_val_bysize (__arch_exchange, int, mem, value, __ATOMIC_RELEASE)
-
-/* Atomic exchange (without compare). */
-
-# define __arch_exchange_8_int(mem, newval, model) \
- (__arm_link_error (), (typeof (*mem)) 0)
-
-# define __arch_exchange_16_int(mem, newval, model) \
- (__arm_link_error (), (typeof (*mem)) 0)
-
-# define __arch_exchange_32_int(mem, newval, model) \
- __atomic_exchange_n (mem, newval, model)
-
-# define __arch_exchange_64_int(mem, newval, model) \
- (__arm_link_error (), (typeof (*mem)) 0)
-
-/* Compare and exchange with "acquire" semantics, ie barrier after. */
-
-# define atomic_compare_and_exchange_bool_acq(mem, new, old) \
- __atomic_bool_bysize (__arch_compare_and_exchange_bool, int, \
- mem, new, old, __ATOMIC_ACQUIRE)
-
-# define atomic_compare_and_exchange_val_acq(mem, new, old) \
- __atomic_val_bysize (__arch_compare_and_exchange_val, int, \
- mem, new, old, __ATOMIC_ACQUIRE)
-
-/* Compare and exchange with "release" semantics, ie barrier before. */
-
-# define atomic_compare_and_exchange_bool_rel(mem, new, old) \
- __atomic_bool_bysize (__arch_compare_and_exchange_bool, int, \
- mem, new, old, __ATOMIC_RELEASE)
-
-# define atomic_compare_and_exchange_val_rel(mem, new, old) \
- __atomic_val_bysize (__arch_compare_and_exchange_val, int, \
- mem, new, old, __ATOMIC_RELEASE)
-
-/* Compare and exchange.
- For all "bool" routines, we return FALSE if exchange succesful. */
-
-# define __arch_compare_and_exchange_bool_8_int(mem, newval, oldval, model) \
- ({__arm_link_error (); oldval; })
-
-# define __arch_compare_and_exchange_bool_16_int(mem, newval, oldval, model) \
- ({__arm_link_error (); oldval; })
-
-# define __arch_compare_and_exchange_bool_32_int(mem, newval, oldval, model) \
- ({ \
- typeof (*mem) __oldval = (oldval); \
- !__atomic_compare_exchange_n (mem, (void *) &__oldval, newval, 0, \
- model, __ATOMIC_RELAXED); \
- })
-
-# define __arch_compare_and_exchange_bool_64_int(mem, newval, oldval, model) \
- ({__arm_link_error (); oldval; })
-
-# define __arch_compare_and_exchange_val_8_int(mem, newval, oldval, model) \
- ({__arm_link_error (); oldval; })
-
-# define __arch_compare_and_exchange_val_16_int(mem, newval, oldval, model) \
- ({__arm_link_error (); oldval; })
-
-# define __arch_compare_and_exchange_val_32_int(mem, newval, oldval, model) \
- ({ \
- typeof (*mem) __oldval = (oldval); \
- __atomic_compare_exchange_n (mem, (void *) &__oldval, newval, 0, \
- model, __ATOMIC_RELAXED); \
- __oldval; \
- })
-
-# define __arch_compare_and_exchange_val_64_int(mem, newval, oldval, model) \
- ({__arm_link_error (); oldval; })
-
-#elif defined __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
-/* Atomic compare and exchange. */
-# define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
- __sync_val_compare_and_swap ((mem), (oldval), (newval))
-#else
-# define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
- __arm_assisted_compare_and_exchange_val_32_acq ((mem), (newval), (oldval))
-#endif
-
-#if !__GNUC_PREREQ (4, 7) || !defined (__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4)
-/* We don't support atomic operations on any non-word types.
- So make them link errors. */
-# define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
- ({ __arm_link_error (); oldval; })
-
-# define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \
- ({ __arm_link_error (); oldval; })
-
-# define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
- ({ __arm_link_error (); oldval; })
-#endif
-
-/* An OS-specific bits/atomic.h file will define this macro if
- the OS can provide something. If not, we'll fail to build
- with a compiler that doesn't supply the operation. */
-#ifndef __arm_assisted_compare_and_exchange_val_32_acq
-# define __arm_assisted_compare_and_exchange_val_32_acq(mem, newval, oldval) \
- ({ __arm_link_error (); oldval; })
-#endif
diff --git a/ports/sysdeps/arm/bits/endian.h b/ports/sysdeps/arm/bits/endian.h
deleted file mode 100644
index f49f6ab1c9..0000000000
--- a/ports/sysdeps/arm/bits/endian.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef _ENDIAN_H
-# error "Never use <bits/endian.h> directly; include <endian.h> instead."
-#endif
-
-/* ARM can be either big or little endian. */
-#ifdef __ARMEB__
-#define __BYTE_ORDER __BIG_ENDIAN
-#else
-#define __BYTE_ORDER __LITTLE_ENDIAN
-#endif
diff --git a/ports/sysdeps/arm/bits/fenv.h b/ports/sysdeps/arm/bits/fenv.h
deleted file mode 100644
index c7f5876c5c..0000000000
--- a/ports/sysdeps/arm/bits/fenv.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/* Copyright (C) 2004-2014 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 =
-#define FE_INVALID 1
- FE_INVALID,
- FE_DIVBYZERO =
-#define FE_DIVBYZERO 2
- FE_DIVBYZERO,
- FE_OVERFLOW =
-#define FE_OVERFLOW 4
- FE_OVERFLOW,
- FE_UNDERFLOW =
-#define FE_UNDERFLOW 8
- FE_UNDERFLOW,
- FE_INEXACT =
-#define FE_INEXACT 16
- 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 =
-#define FE_TONEAREST 0
- FE_TONEAREST,
- FE_UPWARD =
-#define FE_UPWARD 0x400000
- FE_UPWARD,
- FE_DOWNWARD =
-#define FE_DOWNWARD 0x800000
- FE_DOWNWARD,
- FE_TOWARDZERO =
-#define FE_TOWARDZERO 0xc00000
- 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 ((const 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
diff --git a/ports/sysdeps/arm/bits/link.h b/ports/sysdeps/arm/bits/link.h
deleted file mode 100644
index 9412cf8800..0000000000
--- a/ports/sysdeps/arm/bits/link.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/* Copyright (C) 2005-2014 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 _LINK_H
-# error "Never include <bits/link.h> directly; use <link.h> instead."
-#endif
-
-
-/* Registers for entry into PLT on ARM. */
-typedef struct La_arm_regs
-{
- uint32_t lr_reg[4];
- uint32_t lr_sp;
- uint32_t lr_lr;
- /* Coprocessor registers used for argument passing. The data
- stored here depends on the coprocessors available in the
- system which are used for function calls in the current ABI.
- VFP uses eight 64-bit registers, and iWMMXt uses ten. */
- uint32_t lr_coproc[42];
-} La_arm_regs;
-
-/* Return values for calls from PLT on ARM. */
-typedef struct La_arm_retval
-{
- /* Up to four integer registers can be used for a return value in
- some ABIs (APCS complex long double). */
- uint32_t lrv_reg[4];
-
- /* Any coprocessor registers which might be used to return values
- in the current ABI. */
- uint32_t lrv_coproc[12];
-} La_arm_retval;
-
-
-__BEGIN_DECLS
-
-extern Elf32_Addr la_arm_gnu_pltenter (Elf32_Sym *__sym, unsigned int __ndx,
- uintptr_t *__refcook,
- uintptr_t *__defcook,
- La_arm_regs *__regs,
- unsigned int *__flags,
- const char *__symname,
- long int *__framesizep);
-extern unsigned int la_arm_gnu_pltexit (Elf32_Sym *__sym, unsigned int __ndx,
- uintptr_t *__refcook,
- uintptr_t *__defcook,
- const La_arm_regs *__inregs,
- La_arm_retval *__outregs,
- const char *__symname);
-
-__END_DECLS
diff --git a/ports/sysdeps/arm/bits/linkmap.h b/ports/sysdeps/arm/bits/linkmap.h
deleted file mode 100644
index 7c2b4a6da8..0000000000
--- a/ports/sysdeps/arm/bits/linkmap.h
+++ /dev/null
@@ -1,5 +0,0 @@
-struct link_map_machine
- {
- Elf32_Addr plt; /* Address of .plt */
- void *tlsdesc_table; /* Address of TLS descriptor hash table. */
- };
diff --git a/ports/sysdeps/arm/bits/mathdef.h b/ports/sysdeps/arm/bits/mathdef.h
deleted file mode 100644
index be727e5b8d..0000000000
--- a/ports/sysdeps/arm/bits/mathdef.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/* Copyright (C) 1999-2014 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/>. */
-
-#if !defined _MATH_H && !defined _COMPLEX_H
-# error "Never use <bits/mathdef.h> directly; include <math.h> instead"
-#endif
-
-#if defined __USE_ISOC99 && defined _MATH_H && !defined _MATH_H_MATHDEF
-# define _MATH_H_MATHDEF 1
-
-/* GCC does not promote `float' values to `double'. */
-typedef float float_t; /* `float' expressions are evaluated as
- `float'. */
-typedef double double_t; /* `double' expressions are evaluated as
- `double'. */
-
-/* The values returned by `ilogb' for 0 and NaN respectively. */
-# define FP_ILOGB0 (-2147483647)
-# define FP_ILOGBNAN (2147483647)
-
-/* The GCC 4.6 compiler will define __FP_FAST_FMA{,F,L} if the fma{,f,l}
- builtins are supported. */
-# if __FP_FAST_FMA
-# define FP_FAST_FMA 1
-# endif
-
-# if __FP_FAST_FMAF
-# define FP_FAST_FMAF 1
-# endif
-
-# if __FP_FAST_FMAL
-# define FP_FAST_FMAL 1
-# endif
-
-#endif /* ISO C99 */
-
-#ifndef __NO_LONG_DOUBLE_MATH
-/* Signal that we do not really have a `long double'. This disables the
- declaration of all the `long double' function variants. */
-# define __NO_LONG_DOUBLE_MATH 1
-#endif
diff --git a/ports/sysdeps/arm/bits/setjmp.h b/ports/sysdeps/arm/bits/setjmp.h
deleted file mode 100644
index 41423b2c3b..0000000000
--- a/ports/sysdeps/arm/bits/setjmp.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Copyright (C) 2004-2014 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 __ASSEMBLER__
-/* 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 27 words
- are occupied by v1-v6, sl, fp, sp, pc, and d8-d15. (Note that
- d8-15 require 17 words, due to the use of fstmx.) */
-typedef int __jmp_buf[64] __attribute__((__aligned__ (8)));
-#endif
-
-#endif
diff --git a/ports/sysdeps/arm/bsd-_setjmp.S b/ports/sysdeps/arm/bsd-_setjmp.S
deleted file mode 100644
index e8c5b245bf..0000000000
--- a/ports/sysdeps/arm/bsd-_setjmp.S
+++ /dev/null
@@ -1,29 +0,0 @@
-/* BSD `_setjmp' entry point to `sigsetjmp (..., 0)'. ARM version.
- Copyright (C) 1997-2014 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/>. */
-
-/* This just does a tail-call to `__sigsetjmp (ARG, 1)'.
- We cannot do it in C because it must be a tail-call, so frame-unwinding
- in setjmp doesn't clobber the state restored by longjmp. */
-
-#include <sysdep.h>
-
-ENTRY (_setjmp)
- mov r1, #0
- b PLTJMP(HIDDEN_JUMPTARGET(__sigsetjmp))
-END (_setjmp)
-libc_hidden_def (_setjmp)
diff --git a/ports/sysdeps/arm/bsd-setjmp.S b/ports/sysdeps/arm/bsd-setjmp.S
deleted file mode 100644
index 682e8130f1..0000000000
--- a/ports/sysdeps/arm/bsd-setjmp.S
+++ /dev/null
@@ -1,28 +0,0 @@
-/* BSD `setjmp' entry point to `sigsetjmp (..., 1)'. ARM version.
- Copyright (C) 1997-2014 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/>. */
-
-/* This just does a tail-call to `__sigsetjmp (ARG, 1)'.
- We cannot do it in C because it must be a tail-call, so frame-unwinding
- in setjmp doesn't clobber the state restored by longjmp. */
-
-#include <sysdep.h>
-
-ENTRY (setjmp)
- mov r1, #1
- b PLTJMP(HIDDEN_JUMPTARGET(__sigsetjmp))
-END (setjmp)
diff --git a/ports/sysdeps/arm/configure b/ports/sysdeps/arm/configure
deleted file mode 100644
index d79ef76ec9..0000000000
--- a/ports/sysdeps/arm/configure
+++ /dev/null
@@ -1,205 +0,0 @@
-# This file is generated from configure.ac by Autoconf. DO NOT EDIT!
- # Local configure fragment for sysdeps/arm.
-
-#AC_DEFINE(PI_STATIC_AND_HIDDEN)
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the CFI directive .cfi_sections is supported" >&5
-$as_echo_n "checking whether the CFI directive .cfi_sections is supported... " >&6; }
-if ${libc_cv_asm_cfi_directive_sections+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat > conftest.s <<EOF
- .text
- .cfi_sections .debug_frame, .eh_frame
- .cfi_startproc
- .cfi_endproc
-EOF
- if { ac_try='${CC-cc} $ASFLAGS -c conftest.s 1>&5'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }; then
- libc_cv_asm_cfi_directive_sections=yes
- else
- libc_cv_asm_cfi_directive_sections=no
- fi
- rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_asm_cfi_directive_sections" >&5
-$as_echo "$libc_cv_asm_cfi_directive_sections" >&6; }
-if test $libc_cv_asm_cfi_directive_sections != yes; then
- as_fn_error $? "need .cfi_sections in this configuration" "$LINENO" 5
-fi
-
-# We check to see if the compiler and flags are
-# selecting the hard-float ABI and if they are then
-# we set libc_cv_arm_pcs_vfp to yes which causes
-# HAVE_ARM_PCS_VFP to be defined in config.h and
-# in include/libc-symbols.h and thus available to
-# shlib-versions to select the appropriate name for
-# the dynamic linker via %ifdef.
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if ${ac_cv_path_GREP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -z "$GREP"; then
- ac_path_GREP_found=false
- # Loop through the user's path and test for each of PROGNAME-LIST
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in grep ggrep; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
-# Check for GNU ac_path_GREP and select it if it is found.
- # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
- ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
- ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
- while :
- do
- cat "conftest.in" "conftest.in" >"conftest.tmp"
- mv "conftest.tmp" "conftest.in"
- cp "conftest.in" "conftest.nl"
- $as_echo 'GREP' >> "conftest.nl"
- "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
- as_fn_arith $ac_count + 1 && ac_count=$as_val
- if test $ac_count -gt ${ac_path_GREP_max-0}; then
- # Best one so far, save it but keep looking for a better one
- ac_cv_path_GREP="$ac_path_GREP"
- ac_path_GREP_max=$ac_count
- fi
- # 10*(2^10) chars as input seems more than enough
- test $ac_count -gt 10 && break
- done
- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
- $ac_path_GREP_found && break 3
- done
- done
- done
-IFS=$as_save_IFS
- if test -z "$ac_cv_path_GREP"; then
- as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
- fi
-else
- ac_cv_path_GREP=$GREP
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if ${ac_cv_path_EGREP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
- then ac_cv_path_EGREP="$GREP -E"
- else
- if test -z "$EGREP"; then
- ac_path_EGREP_found=false
- # Loop through the user's path and test for each of PROGNAME-LIST
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in egrep; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
- # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
- ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
- ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
- while :
- do
- cat "conftest.in" "conftest.in" >"conftest.tmp"
- mv "conftest.tmp" "conftest.in"
- cp "conftest.in" "conftest.nl"
- $as_echo 'EGREP' >> "conftest.nl"
- "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
- as_fn_arith $ac_count + 1 && ac_count=$as_val
- if test $ac_count -gt ${ac_path_EGREP_max-0}; then
- # Best one so far, save it but keep looking for a better one
- ac_cv_path_EGREP="$ac_path_EGREP"
- ac_path_EGREP_max=$ac_count
- fi
- # 10*(2^10) chars as input seems more than enough
- test $ac_count -gt 10 && break
- done
- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
- $ac_path_EGREP_found && break 3
- done
- done
- done
-IFS=$as_save_IFS
- if test -z "$ac_cv_path_EGREP"; then
- as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
- fi
-else
- ac_cv_path_EGREP=$EGREP
-fi
-
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler is using the ARM hard-float ABI" >&5
-$as_echo_n "checking whether the compiler is using the ARM hard-float ABI... " >&6; }
-if ${libc_cv_arm_pcs_vfp+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#ifdef __ARM_PCS_VFP
- yes
- #endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "yes" >/dev/null 2>&1; then :
- libc_cv_arm_pcs_vfp=yes
-else
- libc_cv_arm_pcs_vfp=no
-fi
-rm -f conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_arm_pcs_vfp" >&5
-$as_echo "$libc_cv_arm_pcs_vfp" >&6; }
-if test $libc_cv_arm_pcs_vfp = yes; then
- $as_echo "#define HAVE_ARM_PCS_VFP 1" >>confdefs.h
-
- config_vars="$config_vars
-default-abi = hard"
-else
- config_vars="$config_vars
-default-abi = soft"
-fi
diff --git a/ports/sysdeps/arm/configure.ac b/ports/sysdeps/arm/configure.ac
deleted file mode 100644
index d66500b3fd..0000000000
--- a/ports/sysdeps/arm/configure.ac
+++ /dev/null
@@ -1,46 +0,0 @@
-GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
-# Local configure fragment for sysdeps/arm.
-
-dnl It is always possible to access static and hidden symbols in an
-dnl position independent way.
-dnl NOTE: This feature was added by the GCC TLS patches. We should test for
-dnl it. Until we do, don't define it.
-#AC_DEFINE(PI_STATIC_AND_HIDDEN)
-
-AC_CACHE_CHECK([whether the CFI directive .cfi_sections is supported],
- [libc_cv_asm_cfi_directive_sections],
- [cat > conftest.s <<EOF
- .text
- .cfi_sections .debug_frame, .eh_frame
- .cfi_startproc
- .cfi_endproc
-EOF
- if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
- libc_cv_asm_cfi_directive_sections=yes
- else
- libc_cv_asm_cfi_directive_sections=no
- fi
- rm -f conftest*])
-if test $libc_cv_asm_cfi_directive_sections != yes; then
- AC_MSG_ERROR([need .cfi_sections in this configuration])
-fi
-
-# We check to see if the compiler and flags are
-# selecting the hard-float ABI and if they are then
-# we set libc_cv_arm_pcs_vfp to yes which causes
-# HAVE_ARM_PCS_VFP to be defined in config.h and
-# in include/libc-symbols.h and thus available to
-# shlib-versions to select the appropriate name for
-# the dynamic linker via %ifdef.
-AC_CACHE_CHECK([whether the compiler is using the ARM hard-float ABI],
- [libc_cv_arm_pcs_vfp],
- [AC_EGREP_CPP(yes,[#ifdef __ARM_PCS_VFP
- yes
- #endif
- ], libc_cv_arm_pcs_vfp=yes, libc_cv_arm_pcs_vfp=no)])
-if test $libc_cv_arm_pcs_vfp = yes; then
- AC_DEFINE(HAVE_ARM_PCS_VFP)
- LIBC_CONFIG_VAR([default-abi], [hard])
-else
- LIBC_CONFIG_VAR([default-abi], [soft])
-fi
diff --git a/ports/sysdeps/arm/crti.S b/ports/sysdeps/arm/crti.S
deleted file mode 100644
index d053e17ddb..0000000000
--- a/ports/sysdeps/arm/crti.S
+++ /dev/null
@@ -1,95 +0,0 @@
-/* Special .init and .fini section support for ARM.
- Copyright (C) 1995-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file with other
- programs, and to distribute those programs without any restriction
- coming from the use of this file. (The GNU Lesser General Public
- License restrictions do apply in other respects; for example, they
- cover modification of the file, and distribution when not linked
- into another program.)
-
- Note that people who make modified versions of this file are not
- obligated to grant this special exception for their modified
- versions; it is their choice whether to do so. The GNU Lesser
- General Public License gives permission to release a modified
- version without this exception; this exception also makes it
- possible to release a modified version which carries forward this
- exception.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library. If not, see
- <http://www.gnu.org/licenses/>. */
-
-/* crti.S puts a function prologue at the beginning of the .init and
- .fini sections and defines global symbols for those addresses, so
- they can be called as functions. The symbols _init and _fini are
- magic and cause the linker to emit DT_INIT and DT_FINI. */
-
-/* Always build .init and .fini sections in ARM mode. */
-#define NO_THUMB
-#include <libc-symbols.h>
-#include <sysdep.h>
-
-#ifndef PREINIT_FUNCTION
-# define PREINIT_FUNCTION __gmon_start__
-#endif
-
-#ifndef PREINIT_FUNCTION_WEAK
-# define PREINIT_FUNCTION_WEAK 1
-#endif
-
-#if PREINIT_FUNCTION_WEAK
- weak_extern (PREINIT_FUNCTION)
-#else
- .hidden PREINIT_FUNCTION
-#endif
-
-#if PREINIT_FUNCTION_WEAK
- .p2align 2
- .type call_weak_fn, %function
-call_weak_fn:
- ldr r3, .LGOT
- ldr r2, .LGOT+4
-.LPIC:
- add r3, pc, r3
- ldr r2, [r3, r2]
- cmp r2, #0
- bxeq lr
- b PREINIT_FUNCTION
- .p2align 2
-.LGOT:
- .word _GLOBAL_OFFSET_TABLE_-(.LPIC+8)
- .word PREINIT_FUNCTION(GOT)
-#endif
-
- .section .init,"ax",%progbits
- .p2align 2
- .globl _init
- .type _init, %function
-_init:
- push {r3, lr}
-#if PREINIT_FUNCTION_WEAK
- bl call_weak_fn
-#else
- bl PREINIT_FUNCTION
-#endif
-
- .section .fini,"ax",%progbits
- .p2align 2
- .globl _fini
- .type _fini, %function
-_fini:
- push {r3, lr}
diff --git a/ports/sysdeps/arm/crtn.S b/ports/sysdeps/arm/crtn.S
deleted file mode 100644
index d3254ad41f..0000000000
--- a/ports/sysdeps/arm/crtn.S
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Special .init and .fini section support for ARM.
- Copyright (C) 1995-2014 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/>. */
-
-/* Always build .init and .fini sections in ARM mode. */
-#define NO_THUMB
-#include <sysdep.h>
-
-/* crtn.S puts function epilogues in the .init and .fini sections
- corresponding to the prologues in crti.S. */
-
- .section .init,"ax",%progbits
-#ifdef __ARM_ARCH_4T__
- pop {r3, lr}
- bx lr
-#else
- pop {r3, pc}
-#endif
-
- .section .fini,"ax",%progbits
-#ifdef __ARM_ARCH_4T__
- pop {r3, lr}
- bx lr
-#else
- pop {r3, pc}
-#endif
diff --git a/ports/sysdeps/arm/dl-irel.h b/ports/sysdeps/arm/dl-irel.h
deleted file mode 100644
index 5c89ce496b..0000000000
--- a/ports/sysdeps/arm/dl-irel.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Machine-dependent ELF indirect relocation inline functions.
- ARM version.
- Copyright (C) 2009-2014 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 _DL_IREL_H
-#define _DL_IREL_H
-
-#include <stdio.h>
-#include <unistd.h>
-#include <ldsodefs.h>
-
-#define ELF_MACHINE_IREL 1
-
-static inline Elf32_Addr
-__attribute ((always_inline))
-elf_ifunc_invoke (Elf32_Addr addr)
-{
- return ((Elf32_Addr (*) (unsigned long int)) (addr)) (GLRO(dl_hwcap));
-}
-
-static inline void
-__attribute ((always_inline))
-elf_irel (const Elf32_Rel *reloc)
-{
- Elf32_Addr *const reloc_addr = (void *) reloc->r_offset;
- const unsigned long int r_type = ELF32_R_TYPE (reloc->r_info);
-
- if (__builtin_expect (r_type == R_ARM_IRELATIVE, 1))
- {
- Elf32_Addr value = elf_ifunc_invoke (*reloc_addr);
- *reloc_addr = value;
- }
- else
- __libc_fatal ("unexpected reloc type in static binary");
-}
-
-#endif /* dl-irel.h */
diff --git a/ports/sysdeps/arm/dl-lookupcfg.h b/ports/sysdeps/arm/dl-lookupcfg.h
deleted file mode 100644
index 20b6fc626e..0000000000
--- a/ports/sysdeps/arm/dl-lookupcfg.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Configuration of lookup functions.
- Copyright (C) 2006-2014 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 DL_UNMAP_IS_SPECIAL
-
-#include_next <dl-lookupcfg.h>
-
-struct link_map;
-
-extern void internal_function _dl_unmap (struct link_map *map);
-
-#define DL_UNMAP(map) _dl_unmap (map)
diff --git a/ports/sysdeps/arm/dl-machine.h b/ports/sysdeps/arm/dl-machine.h
deleted file mode 100644
index 02d1a5ebdf..0000000000
--- a/ports/sysdeps/arm/dl-machine.h
+++ /dev/null
@@ -1,662 +0,0 @@
-/* Machine-dependent ELF dynamic relocation inline functions. ARM version.
- Copyright (C) 1995-2014 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 dl_machine_h
-#define dl_machine_h
-
-#define ELF_MACHINE_NAME "ARM"
-
-#include <sys/param.h>
-#include <tls.h>
-#include <dl-tlsdesc.h>
-#include <dl-irel.h>
-
-#ifndef CLEAR_CACHE
-# error CLEAR_CACHE definition required to handle TEXTREL
-#endif
-
-/* Return nonzero iff ELF header is compatible with the running host. */
-static inline int __attribute__ ((unused))
-elf_machine_matches_host (const Elf32_Ehdr *ehdr)
-{
- return ehdr->e_machine == EM_ARM;
-}
-
-
-/* Return the link-time address of _DYNAMIC. Conveniently, this is the
- first element of the GOT. */
-static inline Elf32_Addr __attribute__ ((unused))
-elf_machine_dynamic (void)
-{
- /* Declaring this hidden ensures that a PC-relative reference is used. */
- extern const Elf32_Addr _GLOBAL_OFFSET_TABLE_[] attribute_hidden;
- return _GLOBAL_OFFSET_TABLE_[0];
-}
-
-
-/* Return the run-time load address of the shared object. */
-static inline Elf32_Addr __attribute__ ((unused))
-elf_machine_load_address (void)
-{
- extern Elf32_Addr internal_function __dl_start (void *) asm ("_dl_start");
- Elf32_Addr got_addr = (Elf32_Addr) &__dl_start;
- Elf32_Addr pcrel_addr;
-#ifdef __thumb__
- /* Clear the low bit of the funciton address. */
- got_addr &= ~(Elf32_Addr) 1;
-#endif
- asm ("adr %0, _dl_start" : "=r" (pcrel_addr));
- return pcrel_addr - got_addr;
-}
-
-
-/* Set up the loaded object described by L so its unrelocated PLT
- entries will jump to the on-demand fixup code in dl-runtime.c. */
-
-static inline int __attribute__ ((unused))
-elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
-{
- Elf32_Addr *got;
- extern void _dl_runtime_resolve (Elf32_Word);
- extern void _dl_runtime_profile (Elf32_Word);
-
- if (l->l_info[DT_JMPREL] && lazy)
- {
- /* patb: this is different than i386 */
- /* The GOT entries for functions in the PLT have not yet been filled
- in. Their initial contents will arrange when called to push an
- index into the .got section, load ip with &_GLOBAL_OFFSET_TABLE_[3],
- and then jump to _GLOBAL_OFFSET_TABLE[2]. */
- got = (Elf32_Addr *) D_PTR (l, l_info[DT_PLTGOT]);
- /* If a library is prelinked but we have to relocate anyway,
- we have to be able to undo the prelinking of .got.plt.
- The prelinker saved us here address of .plt. */
- if (got[1])
- l->l_mach.plt = got[1] + l->l_addr;
- got[1] = (Elf32_Addr) l; /* Identify this shared object. */
-
- /* The got[2] entry contains the address of a function which gets
- called to get the address of a so far unresolved function and
- jump to it. The profiling extension of the dynamic linker allows
- to intercept the calls to collect information. In this case we
- don't store the address in the GOT so that all future calls also
- end in this function. */
- if (profile)
- {
- got[2] = (Elf32_Addr) &_dl_runtime_profile;
-
- if (GLRO(dl_profile) != NULL
- && _dl_name_match_p (GLRO(dl_profile), l))
- /* Say that we really want profiling and the timers are
- started. */
- GL(dl_profile_map) = l;
- }
- else
- /* This function will get called to fix up the GOT entry indicated by
- the offset on the stack, and then jump to the resolved address. */
- got[2] = (Elf32_Addr) &_dl_runtime_resolve;
- }
-
- if (l->l_info[ADDRIDX (DT_TLSDESC_GOT)] && lazy)
- *(Elf32_Addr*)(D_PTR (l, l_info[ADDRIDX (DT_TLSDESC_GOT)]) + l->l_addr)
- = (Elf32_Addr) &_dl_tlsdesc_lazy_resolver;
-
- return lazy;
-}
-
-#if defined(ARCH_HAS_BX)
-#define BX(x) "bx\t" #x
-#else
-#define BX(x) "mov\tpc, " #x
-#endif
-
-/* Mask identifying addresses reserved for the user program,
- where the dynamic linker should not map anything. */
-#define ELF_MACHINE_USER_ADDRESS_MASK 0xf8000000UL
-
-/* Initial entry point code for the dynamic linker.
- The C function `_dl_start' is the real entry point;
- its return value is the user program's entry point. */
-
-#define RTLD_START asm ("\
-.text\n\
-.globl _start\n\
-.type _start, %function\n\
-.globl _dl_start_user\n\
-.type _dl_start_user, %function\n\
-_start:\n\
- @ we are PIC code, so get global offset table\n\
- ldr sl, .L_GET_GOT\n\
- @ See if we were run as a command with the executable file\n\
- @ name as an extra leading argument.\n\
- ldr r4, .L_SKIP_ARGS\n\
- @ at start time, all the args are on the stack\n\
- mov r0, sp\n\
- bl _dl_start\n\
- @ returns user entry point in r0\n\
-_dl_start_user:\n\
- adr r6, .L_GET_GOT\n\
- add sl, sl, r6\n\
- ldr r4, [sl, r4]\n\
- @ save the entry point in another register\n\
- mov r6, r0\n\
- @ get the original arg count\n\
- ldr r1, [sp]\n\
- @ get the argv address\n\
- add r2, sp, #4\n\
- @ Fix up the stack if necessary.\n\
- cmp r4, #0\n\
- bne .L_fixup_stack\n\
-.L_done_fixup:\n\
- @ compute envp\n\
- add r3, r2, r1, lsl #2\n\
- add r3, r3, #4\n\
- @ now we call _dl_init\n\
- ldr r0, .L_LOADED\n\
- ldr r0, [sl, r0]\n\
- @ call _dl_init\n\
- bl _dl_init_internal(PLT)\n\
- @ load the finalizer function\n\
- ldr r0, .L_FINI_PROC\n\
- add r0, sl, r0\n\
- @ jump to the user_s entry point\n\
- " BX(r6) "\n\
-\n\
- @ iWMMXt and EABI targets require the stack to be eight byte\n\
- @ aligned - shuffle arguments etc.\n\
-.L_fixup_stack:\n\
- @ subtract _dl_skip_args from original arg count\n\
- sub r1, r1, r4\n\
- @ store the new argc in the new stack location\n\
- str r1, [sp]\n\
- @ find the first unskipped argument\n\
- mov r3, r2\n\
- add r4, r2, r4, lsl #2\n\
- @ shuffle argv down\n\
-1: ldr r5, [r4], #4\n\
- str r5, [r3], #4\n\
- cmp r5, #0\n\
- bne 1b\n\
- @ shuffle envp down\n\
-1: ldr r5, [r4], #4\n\
- str r5, [r3], #4\n\
- cmp r5, #0\n\
- bne 1b\n\
- @ shuffle auxv down\n\
-1: ldmia r4!, {r0, r5}\n\
- stmia r3!, {r0, r5}\n\
- cmp r0, #0\n\
- bne 1b\n\
- @ Update _dl_argv\n\
- ldr r3, .L_ARGV\n\
- str r2, [sl, r3]\n\
- b .L_done_fixup\n\
-\n\
-.L_GET_GOT:\n\
- .word _GLOBAL_OFFSET_TABLE_ - .L_GET_GOT\n\
-.L_SKIP_ARGS:\n\
- .word _dl_skip_args(GOTOFF)\n\
-.L_FINI_PROC:\n\
- .word _dl_fini(GOTOFF)\n\
-.L_ARGV:\n\
- .word _dl_argv(GOTOFF)\n\
-.L_LOADED:\n\
- .word _rtld_local(GOTOFF)\n\
-.previous\n\
-");
-
-/* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry or
- TLS variable, so undefined references should not be allowed to
- define the value.
- ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve to one
- of the main executable's symbols, as for a COPY reloc. */
-#ifndef RTLD_BOOTSTRAP
-# define elf_machine_type_class(type) \
- ((((type) == R_ARM_JUMP_SLOT || (type) == R_ARM_TLS_DTPMOD32 \
- || (type) == R_ARM_TLS_DTPOFF32 || (type) == R_ARM_TLS_TPOFF32 \
- || (type) == R_ARM_TLS_DESC) \
- * ELF_RTYPE_CLASS_PLT) \
- | (((type) == R_ARM_COPY) * ELF_RTYPE_CLASS_COPY))
-#else
-#define elf_machine_type_class(type) \
- ((((type) == R_ARM_JUMP_SLOT) * ELF_RTYPE_CLASS_PLT) \
- | (((type) == R_ARM_COPY) * ELF_RTYPE_CLASS_COPY))
-#endif
-
-/* A reloc type used for ld.so cmdline arg lookups to reject PLT entries. */
-#define ELF_MACHINE_JMP_SLOT R_ARM_JUMP_SLOT
-
-/* ARM never uses Elf32_Rela relocations for the dynamic linker.
- Prelinked libraries may use Elf32_Rela though. */
-#define ELF_MACHINE_PLT_REL 1
-
-/* We define an initialization functions. This is called very early in
- _dl_sysdep_start. */
-#define DL_PLATFORM_INIT dl_platform_init ()
-
-static inline void __attribute__ ((unused))
-dl_platform_init (void)
-{
- if (GLRO(dl_platform) != NULL && *GLRO(dl_platform) == '\0')
- /* Avoid an empty string which would disturb us. */
- GLRO(dl_platform) = NULL;
-}
-
-static inline Elf32_Addr
-elf_machine_fixup_plt (struct link_map *map, lookup_t t,
- const Elf32_Rel *reloc,
- Elf32_Addr *reloc_addr, Elf32_Addr value)
-{
- return *reloc_addr = value;
-}
-
-/* Return the final value of a plt relocation. */
-static inline Elf32_Addr
-elf_machine_plt_value (struct link_map *map, const Elf32_Rel *reloc,
- Elf32_Addr value)
-{
- return value;
-}
-
-#endif /* !dl_machine_h */
-
-
-/* ARM never uses Elf32_Rela relocations for the dynamic linker.
- Prelinked libraries may use Elf32_Rela though. */
-#define ELF_MACHINE_NO_RELA defined RTLD_BOOTSTRAP
-
-/* Names of the architecture-specific auditing callback functions. */
-#define ARCH_LA_PLTENTER arm_gnu_pltenter
-#define ARCH_LA_PLTEXIT arm_gnu_pltexit
-
-#ifdef RESOLVE_MAP
-/* Handle a PC24 reloc, including the out-of-range case. */
-auto void
-relocate_pc24 (struct link_map *map, Elf32_Addr value,
- Elf32_Addr *const reloc_addr, Elf32_Sword addend)
-{
- Elf32_Addr new_value;
-
- /* Set NEW_VALUE based on V, and return true iff it overflows 24 bits. */
- inline bool set_new_value (Elf32_Addr v)
- {
- new_value = v + addend - (Elf32_Addr) reloc_addr;
- Elf32_Addr topbits = new_value & 0xfe000000;
- return topbits != 0xfe000000 && topbits != 0x00000000;
- }
-
- if (set_new_value (value))
- {
- /* The PC-relative address doesn't fit in 24 bits! */
-
- static void *fix_page;
- static size_t fix_offset;
- if (fix_page == NULL)
- {
- void *new_page = __mmap (NULL, GLRO(dl_pagesize),
- PROT_READ | PROT_WRITE | PROT_EXEC,
- MAP_PRIVATE | MAP_ANON, -1, 0);
- if (new_page == MAP_FAILED)
- _dl_signal_error (0, map->l_name, NULL,
- "could not map page for fixup");
- fix_page = new_page;
- assert (fix_offset == 0);
- }
-
- Elf32_Word *fix_address = fix_page + fix_offset;
- fix_address[0] = 0xe51ff004; /* ldr pc, [pc, #-4] */
- fix_address[1] = value;
-
- fix_offset += sizeof fix_address[0] * 2;
- if (fix_offset >= GLRO(dl_pagesize))
- {
- fix_page = NULL;
- fix_offset = 0;
- }
-
- if (set_new_value ((Elf32_Addr) fix_address))
- _dl_signal_error (0, map->l_name, NULL,
- "R_ARM_PC24 relocation out of range");
- }
-
- *reloc_addr = (*reloc_addr & 0xff000000) | ((new_value >> 2) & 0x00ffffff);
-}
-
-/* Perform the relocation specified by RELOC and SYM (which is fully resolved).
- MAP is the object containing the reloc. */
-
-auto inline void
-__attribute__ ((always_inline))
-elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
- const Elf32_Sym *sym, const struct r_found_version *version,
- void *const reloc_addr_arg, int skip_ifunc)
-{
- Elf32_Addr *const reloc_addr = reloc_addr_arg;
- const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
-
-#if !defined RTLD_BOOTSTRAP || !defined HAVE_Z_COMBRELOC
- if (__builtin_expect (r_type == R_ARM_RELATIVE, 0))
- {
-# if !defined RTLD_BOOTSTRAP && !defined HAVE_Z_COMBRELOC
- /* This is defined in rtld.c, but nowhere in the static libc.a;
- make the reference weak so static programs can still link.
- This declaration cannot be done when compiling rtld.c
- (i.e. #ifdef RTLD_BOOTSTRAP) because rtld.c contains the
- common defn for _dl_rtld_map, which is incompatible with a
- weak decl in the same file. */
-# ifndef SHARED
- weak_extern (_dl_rtld_map);
-# endif
- if (map != &GL(dl_rtld_map)) /* Already done in rtld itself. */
-# endif
- *reloc_addr += map->l_addr;
- }
-# ifndef RTLD_BOOTSTRAP
- else if (__builtin_expect (r_type == R_ARM_NONE, 0))
- return;
-# endif
- else
-#endif
- {
- const Elf32_Sym *const refsym = sym;
- struct link_map *sym_map = RESOLVE_MAP (&sym, version, r_type);
- Elf32_Addr value = sym_map == NULL ? 0 : sym_map->l_addr + sym->st_value;
-
- if (sym != NULL
- && __builtin_expect (ELFW(ST_TYPE) (sym->st_info) == STT_GNU_IFUNC, 0)
- && __builtin_expect (sym->st_shndx != SHN_UNDEF, 1)
- && __builtin_expect (!skip_ifunc, 1))
- value = elf_ifunc_invoke (value);
-
- switch (r_type)
- {
- case R_ARM_COPY:
- if (sym == NULL)
- /* This can happen in trace mode if an object could not be
- found. */
- break;
- if (sym->st_size > refsym->st_size
- || (GLRO(dl_verbose) && sym->st_size < refsym->st_size))
- {
- const char *strtab;
-
- strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
- _dl_error_printf ("\
-%s: Symbol `%s' has different size in shared object, consider re-linking\n",
- RTLD_PROGNAME, strtab + refsym->st_name);
- }
- memcpy (reloc_addr_arg, (void *) value,
- MIN (sym->st_size, refsym->st_size));
- break;
- case R_ARM_GLOB_DAT:
- case R_ARM_JUMP_SLOT:
-# ifdef RTLD_BOOTSTRAP
- /* Fix weak undefined references. */
- if (sym != NULL && sym->st_value == 0)
- *reloc_addr = 0;
- else
-# endif
- *reloc_addr = value;
- break;
- case R_ARM_ABS32:
- {
- struct unaligned
- {
- Elf32_Addr x;
- } __attribute__ ((packed, may_alias));
-# ifndef RTLD_BOOTSTRAP
- /* This is defined in rtld.c, but nowhere in the static
- libc.a; make the reference weak so static programs can
- still link. This declaration cannot be done when
- compiling rtld.c (i.e. #ifdef RTLD_BOOTSTRAP) because
- rtld.c contains the common defn for _dl_rtld_map, which
- is incompatible with a weak decl in the same file. */
-# ifndef SHARED
- weak_extern (_dl_rtld_map);
-# endif
- if (map == &GL(dl_rtld_map))
- /* Undo the relocation done here during bootstrapping.
- Now we will relocate it anew, possibly using a
- binding found in the user program or a loaded library
- rather than the dynamic linker's built-in definitions
- used while loading those libraries. */
- value -= map->l_addr + refsym->st_value;
-# endif
- /* Support relocations on mis-aligned offsets. */
- ((struct unaligned *) reloc_addr)->x += value;
- break;
- }
- case R_ARM_TLS_DESC:
- {
- struct tlsdesc volatile *td =
- (struct tlsdesc volatile *)reloc_addr;
-
-# ifndef RTLD_BOOTSTRAP
- if (! sym)
- td->entry = _dl_tlsdesc_undefweak;
- else
-# endif
- {
- value = sym->st_value + td->argument.value;
-
-# ifndef RTLD_BOOTSTRAP
-# ifndef SHARED
- CHECK_STATIC_TLS (map, sym_map);
-# else
- if (!TRY_STATIC_TLS (map, sym_map))
- {
- td->argument.pointer
- = _dl_make_tlsdesc_dynamic (sym_map, value);
- td->entry = _dl_tlsdesc_dynamic;
- }
- else
-# endif
-# endif
- {
- td->argument.value = value + sym_map->l_tls_offset;
- td->entry = _dl_tlsdesc_return;
- }
- }
- }
- break;
- case R_ARM_PC24:
- relocate_pc24 (map, value, reloc_addr,
- /* Sign-extend the 24-bit addend in the
- instruction (which counts instructions), and
- then shift it up two so as to count bytes. */
- (((Elf32_Sword) *reloc_addr << 8) >> 8) << 2);
- break;
-#if !defined RTLD_BOOTSTRAP
- case R_ARM_TLS_DTPMOD32:
- /* Get the information from the link map returned by the
- resolv function. */
- if (sym_map != NULL)
- *reloc_addr = sym_map->l_tls_modid;
- break;
-
- case R_ARM_TLS_DTPOFF32:
- if (sym != NULL)
- *reloc_addr += sym->st_value;
- break;
-
- case R_ARM_TLS_TPOFF32:
- if (sym != NULL)
- {
- CHECK_STATIC_TLS (map, sym_map);
- *reloc_addr += sym->st_value + sym_map->l_tls_offset;
- }
- break;
- case R_ARM_IRELATIVE:
- value = map->l_addr + *reloc_addr;
- value = ((Elf32_Addr (*) (int)) value) (GLRO(dl_hwcap));
- *reloc_addr = value;
- break;
-#endif
- default:
- _dl_reloc_bad_type (map, r_type, 0);
- break;
- }
- }
-}
-
-# ifndef RTLD_BOOTSTRAP
-auto inline void
-__attribute__ ((always_inline))
-elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
- const Elf32_Sym *sym, const struct r_found_version *version,
- void *const reloc_addr_arg, int skip_ifunc)
-{
- Elf32_Addr *const reloc_addr = reloc_addr_arg;
- const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
-
- if (__builtin_expect (r_type == R_ARM_RELATIVE, 0))
- *reloc_addr = map->l_addr + reloc->r_addend;
- else if (__builtin_expect (r_type == R_ARM_NONE, 0))
- return;
- else
- {
-# ifndef RESOLVE_CONFLICT_FIND_MAP
- const Elf32_Sym *const refsym = sym;
-# endif
- struct link_map *sym_map = RESOLVE_MAP (&sym, version, r_type);
- Elf32_Addr value = sym_map == NULL ? 0 : sym_map->l_addr + sym->st_value;
-
- if (sym != NULL
- && __builtin_expect (ELFW(ST_TYPE) (sym->st_info) == STT_GNU_IFUNC, 0)
- && __builtin_expect (sym->st_shndx != SHN_UNDEF, 1)
- && __builtin_expect (!skip_ifunc, 1))
- value = elf_ifunc_invoke (value);
-
- switch (r_type)
- {
-# ifndef RESOLVE_CONFLICT_FIND_MAP
- /* Not needed for dl-conflict.c. */
- case R_ARM_COPY:
- if (sym == NULL)
- /* This can happen in trace mode if an object could not be
- found. */
- break;
- if (sym->st_size > refsym->st_size
- || (GLRO(dl_verbose) && sym->st_size < refsym->st_size))
- {
- const char *strtab;
-
- strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
- _dl_error_printf ("\
-%s: Symbol `%s' has different size in shared object, consider re-linking\n",
- RTLD_PROGNAME, strtab + refsym->st_name);
- }
- memcpy (reloc_addr_arg, (void *) value,
- MIN (sym->st_size, refsym->st_size));
- break;
-# endif /* !RESOLVE_CONFLICT_FIND_MAP */
- case R_ARM_GLOB_DAT:
- case R_ARM_JUMP_SLOT:
- case R_ARM_ABS32:
- *reloc_addr = value + reloc->r_addend;
- break;
- case R_ARM_PC24:
- relocate_pc24 (map, value, reloc_addr, reloc->r_addend);
- break;
-#if !defined RTLD_BOOTSTRAP
- case R_ARM_TLS_DTPMOD32:
- /* Get the information from the link map returned by the
- resolv function. */
- if (sym_map != NULL)
- *reloc_addr = sym_map->l_tls_modid;
- break;
-
- case R_ARM_TLS_DTPOFF32:
- *reloc_addr = (sym == NULL ? 0 : sym->st_value) + reloc->r_addend;
- break;
-
- case R_ARM_TLS_TPOFF32:
- if (sym != NULL)
- {
- CHECK_STATIC_TLS (map, sym_map);
- *reloc_addr = (sym->st_value + sym_map->l_tls_offset
- + reloc->r_addend);
- }
- break;
- case R_ARM_IRELATIVE:
- value = map->l_addr + *reloc_addr;
- value = ((Elf32_Addr (*) (int)) value) (GLRO(dl_hwcap));
- *reloc_addr = value;
- break;
-#endif
- default:
- _dl_reloc_bad_type (map, r_type, 0);
- break;
- }
- }
-}
-# endif
-
-auto inline void
-__attribute__ ((always_inline))
-elf_machine_rel_relative (Elf32_Addr l_addr, const Elf32_Rel *reloc,
- void *const reloc_addr_arg)
-{
- Elf32_Addr *const reloc_addr = reloc_addr_arg;
- *reloc_addr += l_addr;
-}
-
-# ifndef RTLD_BOOTSTRAP
-auto inline void
-__attribute__ ((always_inline))
-elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
- void *const reloc_addr_arg)
-{
- Elf32_Addr *const reloc_addr = reloc_addr_arg;
- *reloc_addr = l_addr + reloc->r_addend;
-}
-# endif
-
-auto inline void
-__attribute__ ((always_inline))
-elf_machine_lazy_rel (struct link_map *map,
- Elf32_Addr l_addr, const Elf32_Rel *reloc,
- int skip_ifunc)
-{
- Elf32_Addr *const reloc_addr = (void *) (l_addr + reloc->r_offset);
- const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
- /* Check for unexpected PLT reloc type. */
- if (__builtin_expect (r_type == R_ARM_JUMP_SLOT, 1))
- {
- if (__builtin_expect (map->l_mach.plt, 0) == 0)
- *reloc_addr += l_addr;
- else
- *reloc_addr = map->l_mach.plt;
- }
- else if (__builtin_expect (r_type == R_ARM_TLS_DESC, 1))
- {
- struct tlsdesc volatile *td =
- (struct tlsdesc volatile *)reloc_addr;
-
- /* The linker must have given us the parameter we need in the
- first GOT entry, and left the second one empty. We fill the
- last with the resolver address */
- assert (td->entry == 0);
- td->entry = (void*)(D_PTR (map, l_info[ADDRIDX (DT_TLSDESC_PLT)])
- + map->l_addr);
- }
- else
- _dl_reloc_bad_type (map, r_type, 1);
-}
-
-#endif /* RESOLVE_MAP */
diff --git a/ports/sysdeps/arm/dl-sysdep.h b/ports/sysdeps/arm/dl-sysdep.h
deleted file mode 100644
index e9c86dfc12..0000000000
--- a/ports/sysdeps/arm/dl-sysdep.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/* System-specific settings for dynamic linker code. Alpha version.
- Copyright (C) 2002-2014 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_next <dl-sysdep.h>
-
-/* _dl_argv cannot be attribute_relro, because _dl_start_user
- might write into it after _dl_start returns. */
-#define DL_ARGV_NOT_RELRO 1
diff --git a/ports/sysdeps/arm/dl-tls.h b/ports/sysdeps/arm/dl-tls.h
deleted file mode 100644
index 8dea3672f0..0000000000
--- a/ports/sysdeps/arm/dl-tls.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Thread-local storage handling in the ELF dynamic linker. ARM version.
- Copyright (C) 2005-2014 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/>. */
-
-
-/* Type used for the representation of TLS information in the GOT. */
-typedef struct dl_tls_index
-{
- unsigned long int ti_module;
- unsigned long int ti_offset;
-} tls_index;
-
-
-extern void *__tls_get_addr (tls_index *ti);
-
-/* Value used for dtv entries for which the allocation is delayed. */
-#define TLS_DTV_UNALLOCATED ((void *) -1l)
diff --git a/ports/sysdeps/arm/dl-tlsdesc.S b/ports/sysdeps/arm/dl-tlsdesc.S
deleted file mode 100644
index 1644a32793..0000000000
--- a/ports/sysdeps/arm/dl-tlsdesc.S
+++ /dev/null
@@ -1,226 +0,0 @@
-/* Thread-local storage handling in the ELF dynamic linker. ARM version.
- Copyright (C) 2006-2014 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>
-#include <arm-features.h>
-#include <tls.h>
-#include "tlsdesc.h"
-
- .text
- @ emit debug information with cfi
- @ use arm-specific pseudos for unwinding itself
- CFI_SECTIONS
- .hidden _dl_tlsdesc_return
- .global _dl_tlsdesc_return
- .type _dl_tlsdesc_return,#function
- cfi_startproc
- eabi_fnstart
- .align 2
-_dl_tlsdesc_return:
- sfi_breg r0, \
- ldr r0, [\B]
- BX (lr)
- eabi_fnend
- cfi_endproc
- .size _dl_tlsdesc_return, .-_dl_tlsdesc_return
-
- .hidden _dl_tlsdesc_undefweak
- .global _dl_tlsdesc_undefweak
- .type _dl_tlsdesc_undefweak,#function
- cfi_startproc
- eabi_fnstart
- .align 2
-_dl_tlsdesc_undefweak:
- GET_TLS (r1)
- rsb r0, r0, #0
- BX (lr)
- cfi_endproc
- eabi_fnend
- .size _dl_tlsdesc_undefweak, .-_dl_tlsdesc_undefweak
-
-#ifdef SHARED
- .hidden _dl_tlsdesc_dynamic
- .global _dl_tlsdesc_dynamic
- .type _dl_tlsdesc_dynamic,#function
-
-
-/*
- The assembly code that follows is a rendition of the following
- C code, hand-optimized a little bit.
-
-ptrdiff_t
-_dl_tlsdesc_dynamic(struct tlsdesc *tdp)
-{
- struct tlsdesc_dynamic_arg *td = tdp->argument.pointer;
- dtv_t *dtv = (dtv_t *)THREAD_DTV();
- if (__builtin_expect (td->gen_count <= dtv[0].counter
- && dtv[td->tlsinfo.ti_module].pointer.val
- != TLS_DTV_UNALLOCATED,
- 1))
- return dtv[td->tlsinfo.ti_module].pointer.val +
- td->tlsinfo.ti_offset - __builtin_thread_pointer();
-
- return __tls_get_addr (&td->tlsinfo) - __builtin_thread_pointer();
-}
-
-*/
- cfi_startproc
- eabi_fnstart
- .align 2
-_dl_tlsdesc_dynamic:
- /* Our calling convention is to clobber r0, r1 and the processor
- flags. All others that are modified must be saved */
- eabi_save ({r2,r3,r4,lr})
- push {r2,r3,r4,lr}
- cfi_adjust_cfa_offset (16)
- cfi_rel_offset (r2,0)
- cfi_rel_offset (r3,4)
- cfi_rel_offset (r4,8)
- cfi_rel_offset (lr,12)
- sfi_breg r0, \
- ldr r1, [\B] /* td */
- GET_TLS (lr)
- mov r4, r0 /* r4 = tp */
- sfi_breg r0, \
- ldr r0, [\B]
- sfi_breg r1, \
- ldr r2, [\B, #8] /* gen_count */
- sfi_breg r0, \
- ldr r3, [\B]
- cmp r2, r3
- bhi 1f
- sfi_breg r1, \
- ldr r3, [\B]
-#ifndef ARM_NO_INDEX_REGISTER
- ldr r2, [r0, r3, lsl #3]
-#else
- add lr, r0, r3, lsl #3
- sfi_breg lr, \
- ldr r2, [\B]
-#endif
- cmn r2, #1
- ittt ne
- sfi_breg r1, \
- ldrne r3, [r1, #4]
- addne r3, r2, r3
- rsbne r0, r4, r3
- bne 2f
-1: mov r0, r1
- bl __tls_get_addr
- rsb r0, r4, r0
-2:
-#if ((defined (__ARM_ARCH_4T__) && defined (__THUMB_INTERWORK__)) \
- || defined (ARM_ALWAYS_BX))
- pop {r2,r3,r4, lr}
- cfi_adjust_cfa_offset (-16)
- cfi_restore (lr)
- cfi_restore (r4)
- cfi_restore (r3)
- cfi_restore (r2)
- bx lr
-#else
- pop {r2,r3,r4, pc}
-#endif
- eabi_fnend
- cfi_endproc
- .size _dl_tlsdesc_dynamic, .-_dl_tlsdesc_dynamic
-#endif /* SHARED */
-
-/* lazy resolved for tls descriptors. */
- .hidden _dl_tlsdesc_lazy_resolver
- .global _dl_tlsdesc_lazy_resolver
- .type _dl_tlsdesc_lazy_resolver,#function
- cfi_startproc
- eabi_fnstart
- .align 2
-_dl_tlsdesc_lazy_resolver:
- /* r0 points at the tlsdesc,
- r1 points at the GOT
- r2 was pushed by the trampoline and used as a temp,
- we need to pop it here.
- We push the remaining call-clobbered registers here, and also
- R1 -- to keep the stack correctly aligned. */
- /* Tell the unwinder that r2 has already been pushed. */
- eabi_save ({r2})
- cfi_adjust_cfa_offset (4)
- cfi_rel_offset (r2, 0)
- eabi_save ({r0,r1,r3,ip,lr})
- push {r0, r1, r3, ip, lr}
- cfi_adjust_cfa_offset (20)
- cfi_rel_offset (r0, 0)
- cfi_rel_offset (r1, 4)
- cfi_rel_offset (r3, 8)
- cfi_rel_offset (ip, 12)
- cfi_rel_offset (lr, 16)
- bl _dl_tlsdesc_lazy_resolver_fixup
- pop {r0, r1, r3, ip, lr}
- cfi_adjust_cfa_offset (-20)
- cfi_restore (lr)
- cfi_restore (ip)
- cfi_restore (r3)
- cfi_restore (r1)
- cfi_restore (r0)
- pop {r2}
- cfi_adjust_cfa_offset (-4)
- cfi_restore (r2)
- sfi_breg r0, \
- ldr r1, [\B, #4]
- BX (r1)
- eabi_fnend
- cfi_endproc
- .size _dl_tlsdesc_lazy_resolver, .-_dl_tlsdesc_lazy_resolver
-
-/* Holder for lazy tls descriptors being resolve in another thread.
- Same ABI as the lazy resolver itself. */
- .hidden _dl_tlsdesc_resolve_hold
- .global _dl_tlsdesc_resolve_hold
- .type _dl_tlsdesc_resolve_hold,#function
- cfi_startproc
- eabi_fnstart
- .align 2
-_dl_tlsdesc_resolve_hold:
- /* Tell the unwinder that r2 has already been pushed. */
- eabi_save ({r2})
- cfi_adjust_cfa_offset (4)
- cfi_rel_offset (r2, 0)
- eabi_save ({r0,r1,r3,ip,lr})
- push {r0, r1, r3, ip, lr}
- cfi_adjust_cfa_offset (20)
- cfi_rel_offset (r0, 0)
- cfi_rel_offset (r1, 4)
- cfi_rel_offset (r3, 8)
- cfi_rel_offset (ip, 12)
- cfi_rel_offset (lr, 16)
- adr r2, _dl_tlsdesc_resolve_hold
- bl _dl_tlsdesc_resolve_hold_fixup
- pop {r0, r1, r3, ip, lr}
- cfi_adjust_cfa_offset (-20)
- cfi_restore (lr)
- cfi_restore (ip)
- cfi_restore (r3)
- cfi_restore (r1)
- cfi_restore (r0)
- pop {r2}
- cfi_adjust_cfa_offset (-4)
- cfi_restore (r2)
- sfi_breg r0, \
- ldr r1, [\B, #4]
- BX (r1)
- eabi_fnend
- cfi_endproc
- .size _dl_tlsdesc_resolve_hold, .-_dl_tlsdesc_resolve_hold
diff --git a/ports/sysdeps/arm/dl-tlsdesc.h b/ports/sysdeps/arm/dl-tlsdesc.h
deleted file mode 100644
index 27a5d5d948..0000000000
--- a/ports/sysdeps/arm/dl-tlsdesc.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/* Thread-local storage descriptor handling in the ELF dynamic linker.
- ARM version.
- Copyright (C) 2005-2014 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; witout 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 _ARM_DL_TLSDESC_H
-# define _ARM_DL_TLSDESC_H 1
-
-/* Type used to represent a TLS descriptor in the GOT. */
-struct tlsdesc
-{
- union
- {
- void *pointer;
- long value;
- } argument;
- ptrdiff_t (*entry)(struct tlsdesc *);
-};
-
-
-typedef struct dl_tls_index
-{
- unsigned long int ti_module;
- unsigned long int ti_offset;
-} tls_index;
-
-/* Type used as the argument in a TLS descriptor for a symbol that
- needs dynamic TLS offsets. */
-struct tlsdesc_dynamic_arg
-{
- tls_index tlsinfo;
- size_t gen_count;
-};
-
-extern ptrdiff_t attribute_hidden
- _dl_tlsdesc_return(struct tlsdesc *),
- _dl_tlsdesc_undefweak(struct tlsdesc *),
- _dl_tlsdesc_resolve_hold(struct tlsdesc *),
- _dl_tlsdesc_lazy_resolver(struct tlsdesc *);
-
-# ifdef SHARED
-extern void *_dl_make_tlsdesc_dynamic (struct link_map *map, size_t ti_offset);
-
-extern ptrdiff_t attribute_hidden
- _dl_tlsdesc_dynamic(struct tlsdesc *);
-# endif
-
-#endif
diff --git a/ports/sysdeps/arm/dl-trampoline.S b/ports/sysdeps/arm/dl-trampoline.S
deleted file mode 100644
index 2b7033b896..0000000000
--- a/ports/sysdeps/arm/dl-trampoline.S
+++ /dev/null
@@ -1,212 +0,0 @@
-/* PLT trampolines. ARM version.
- Copyright (C) 2005-2014 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/>. */
-
-/* ??? Needs more rearrangement for the LDM to handle thumb mode. */
-#define NO_THUMB
-#include <sysdep.h>
-#include <libc-symbols.h>
-
- .text
- .globl _dl_runtime_resolve
- .type _dl_runtime_resolve, #function
- CFI_SECTIONS
- cfi_startproc
- .align 2
-_dl_runtime_resolve:
- cfi_adjust_cfa_offset (4)
- cfi_rel_offset (lr, 0)
-
- @ we get called with
- @ stack[0] contains the return address from this call
- @ ip contains &GOT[n+3] (pointer to function)
- @ lr points to &GOT[2]
-
- @ Save arguments. We save r4 to realign the stack.
- push {r0-r4}
- 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)
-
- @ get pointer to linker struct
- ldr r0, [lr, #-4]
-
- @ prepare to call _dl_fixup()
- @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each
- sub r1, ip, lr
- sub r1, r1, #4
- add r1, r1, r1
-
- @ call fixup routine
- bl _dl_fixup
-
- @ save the return
- mov ip, r0
-
- @ get arguments and return address back. We restore r4
- @ only to realign the stack.
- pop {r0-r4,lr}
- cfi_adjust_cfa_offset (-24)
-
- @ jump to the newly found address
- BX(ip)
-
- cfi_endproc
- .size _dl_runtime_resolve, .-_dl_runtime_resolve
-
-#ifndef PROF
- .globl _dl_runtime_profile
- .type _dl_runtime_profile, #function
- CFI_SECTIONS
- cfi_startproc
- .align 2
-_dl_runtime_profile:
- cfi_adjust_cfa_offset (4)
- cfi_rel_offset (lr, 0)
-
- @ we get called with
- @ stack[0] contains the return address from this call
- @ ip contains &GOT[n+3] (pointer to function)
- @ lr points to &GOT[2]
-
- @ Stack layout:
- @ 212 - saved lr
- @ 208 - framesize returned from pltenter
- @ 16 - La_arm_regs
- @ 8 - Saved two arguments to _dl_profile_fixup
- @ 4 - Saved result of _dl_profile_fixup
- @ 0 - outgoing argument to _dl_profile_fixup
- @ For now, we only save the general purpose registers.
-
- sub sp, sp, #196
- cfi_adjust_cfa_offset (196)
- stmia sp, {r0-r3}
- cfi_rel_offset (r0, 0)
- cfi_rel_offset (r1, 4)
- cfi_rel_offset (r2, 8)
- cfi_rel_offset (r3, 12)
-
- sub sp, sp, #16
- cfi_adjust_cfa_offset (16)
-
- @ Save sp and lr.
- add r0, sp, #216
- str r0, [sp, #32]
- ldr r2, [sp, #212]
- str r2, [sp, #36]
-
- @ get pointer to linker struct
- ldr r0, [lr, #-4]
-
- @ prepare to call _dl_profile_fixup()
- @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each
- sub r1, ip, lr
- sub r1, r1, #4
- add r1, r1, r1
-
- @ Save these two arguments for pltexit.
- add r3, sp, #8
- stmia r3!, {r0,r1}
-
- @ Set up extra args for _dl_profile_fixup.
- @ r2 and r3 are already loaded.
- add ip, sp, #208
- str ip, [sp, #0]
-
- @ call profiling fixup routine
- bl _dl_profile_fixup
-
- @ The address to call is now in r0.
-
- @ Check whether we're wrapping this function.
- ldr ip, [sp, #208]
- cmp ip, #0
- bge 1f
- cfi_remember_state
-
- @ save the return
- mov ip, r0
-
- @ get arguments and return address back
- add sp, sp, #16
- cfi_adjust_cfa_offset (-16)
- ldmia sp, {r0-r3,sp,lr}
- cfi_adjust_cfa_offset (-200)
-
- @ jump to the newly found address
- BX(ip)
-
- cfi_restore_state
-1:
- @ The new frame size is in ip.
-
- @ New stack layout:
- @ 268 - saved r7
- @ 264 - saved result of _dl_profile_fixup
- @ 72 - La_arm_regs
- @ 64 - Saved two arguments to _dl_profile_fixup
- @ 0 - La_arm_retval
- @ For now, we only save the general purpose registers.
-
- @ Build the new frame.
- str r7, [sp, #212]
- cfi_rel_offset (r7, 212)
- sub r7, sp, #56
- cfi_def_cfa_register (r7)
- cfi_adjust_cfa_offset (56)
- sub sp, sp, ip
- bic sp, sp, #7
-
- @ Save the _dl_profile_fixup result around the call to memcpy.
- str r0, [r7, #264]
-
- @ Copy the stack arguments.
- mov r0, sp
- add r1, r7, #272
- mov r2, ip
- bl memcpy
-
- @ Call the function.
- add ip, r7, #72
- ldmia ip, {r0-r3}
- ldr ip, [r7, #264]
- BLX(ip)
- stmia r7, {r0-r3}
-
- @ Call pltexit.
- add ip, r7, #64
- ldmia ip, {r0,r1}
- add r2, r7, #72
- add r3, r7, #0
- bl _dl_call_pltexit
-
- @ Return to caller.
- ldmia r7, {r0-r3}
- mov sp, r7
- cfi_def_cfa_register (sp)
- ldr r7, [sp, #268]
- ldr lr, [sp, #92]
- add sp, sp, #272
- cfi_adjust_cfa_offset (-272)
- BX(lr)
-
- cfi_endproc
- .size _dl_runtime_profile, .-_dl_runtime_profile
-#endif
- .previous
diff --git a/ports/sysdeps/arm/fclrexcpt.c b/ports/sysdeps/arm/fclrexcpt.c
deleted file mode 100644
index 8b54114e37..0000000000
--- a/ports/sysdeps/arm/fclrexcpt.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/* Clear given exceptions in current floating-point environment.
- Copyright (C) 1997-2014 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 <arm-features.h>
-
-
-int
-__feclearexcept (int excepts)
-{
- if (ARM_HAVE_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
-
-libm_hidden_ver (__feclearexcept, feclearexcept)
-versioned_symbol (libm, __feclearexcept, feclearexcept, GLIBC_2_2);
diff --git a/ports/sysdeps/arm/fedisblxcpt.c b/ports/sysdeps/arm/fedisblxcpt.c
deleted file mode 100644
index 88da539439..0000000000
--- a/ports/sysdeps/arm/fedisblxcpt.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Disable floating-point exceptions.
- Copyright (C) 2001-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Philip Blundell <philb@gnu.org>, 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 <arm-features.h>
-
-
-int
-fedisableexcept (int excepts)
-{
- if (ARM_HAVE_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;
-}
diff --git a/ports/sysdeps/arm/feenablxcpt.c b/ports/sysdeps/arm/feenablxcpt.c
deleted file mode 100644
index b286ec5565..0000000000
--- a/ports/sysdeps/arm/feenablxcpt.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/* Enable floating-point exceptions.
- Copyright (C) 2001-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Philip Blundell <philb@gnu.org>, 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 <arm-features.h>
-
-
-int
-feenableexcept (int excepts)
-{
- if (ARM_HAVE_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);
-
- if (excepts != 0)
- {
- /* VFPv3 and VFPv4 do not support trapping exceptions, so
- test whether the relevant bits were set and fail if
- not. */
- unsigned int temp;
- _FPU_GETCW (temp);
- if ((temp & (excepts << FE_EXCEPT_SHIFT))
- != (excepts << FE_EXCEPT_SHIFT))
- return -1;
- }
-
- return old_exc;
- }
-
- /* Unsupported, so return -1 for failure. */
- return -1;
-}
diff --git a/ports/sysdeps/arm/fegetenv.c b/ports/sysdeps/arm/fegetenv.c
deleted file mode 100644
index 7003a01304..0000000000
--- a/ports/sysdeps/arm/fegetenv.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Store current floating-point environment.
- Copyright (C) 1997-2014 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 <arm-features.h>
-
-
-int
-__fegetenv (fenv_t *envp)
-{
- if (ARM_HAVE_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);
diff --git a/ports/sysdeps/arm/fegetexcept.c b/ports/sysdeps/arm/fegetexcept.c
deleted file mode 100644
index 5974c63336..0000000000
--- a/ports/sysdeps/arm/fegetexcept.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Get floating-point exceptions.
- Copyright (C) 2001-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Philip Blundell <philb@gnu.org>, 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 <arm-features.h>
-
-
-int
-fegetexcept (void)
-{
- if (ARM_HAVE_VFP)
- {
- unsigned long temp;
-
- _FPU_GETCW (temp);
-
- return (temp >> FE_EXCEPT_SHIFT) & FE_ALL_EXCEPT;
- }
-
- /* Unsupported. Return all exceptions disabled. */
- return 0;
-}
diff --git a/ports/sysdeps/arm/fegetround.c b/ports/sysdeps/arm/fegetround.c
deleted file mode 100644
index cb4cf1bce2..0000000000
--- a/ports/sysdeps/arm/fegetround.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Return current rounding direction.
- Copyright (C) 2004-2014 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 <arm-features.h>
-
-
-int
-fegetround (void)
-{
- if (ARM_HAVE_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;
-}
-libm_hidden_def (fegetround)
diff --git a/ports/sysdeps/arm/feholdexcpt.c b/ports/sysdeps/arm/feholdexcpt.c
deleted file mode 100644
index 9ca673c6fb..0000000000
--- a/ports/sysdeps/arm/feholdexcpt.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Store current floating-point environment and clear exceptions.
- Copyright (C) 1997-2014 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 <arm-features.h>
-
-
-int
-feholdexcept (fenv_t *envp)
-{
- if (ARM_HAVE_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)
diff --git a/ports/sysdeps/arm/fesetenv.c b/ports/sysdeps/arm/fesetenv.c
deleted file mode 100644
index af4f25d47d..0000000000
--- a/ports/sysdeps/arm/fesetenv.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Install given floating-point environment.
- Copyright (C) 2004-2014 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 <arm-features.h>
-
-
-int
-__fesetenv (const fenv_t *envp)
-{
- if (ARM_HAVE_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);
-
- if (envp == FE_NOMASK_ENV)
- {
- /* VFPv3 and VFPv4 do not support trapping exceptions, so
- test whether the relevant bits were set and fail if
- not. */
- _FPU_GETCW (temp);
- if ((temp & _FPU_IEEE) != _FPU_IEEE)
- return 1;
- }
-
- /* 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);
diff --git a/ports/sysdeps/arm/fesetround.c b/ports/sysdeps/arm/fesetround.c
deleted file mode 100644
index 6f533d1992..0000000000
--- a/ports/sysdeps/arm/fesetround.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* Set current rounding direction.
- Copyright (C) 2004-2014 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 <arm-features.h>
-
-
-int
-fesetround (int round)
-{
- if (ARM_HAVE_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)
diff --git a/ports/sysdeps/arm/feupdateenv.c b/ports/sysdeps/arm/feupdateenv.c
deleted file mode 100644
index 58ec5f66db..0000000000
--- a/ports/sysdeps/arm/feupdateenv.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/* Install given floating-point environment and raise exceptions.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 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 <arm-features.h>
-
-
-int
-__feupdateenv (const fenv_t *envp)
-{
- if (ARM_HAVE_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);
diff --git a/ports/sysdeps/arm/fgetexcptflg.c b/ports/sysdeps/arm/fgetexcptflg.c
deleted file mode 100644
index 114597990a..0000000000
--- a/ports/sysdeps/arm/fgetexcptflg.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Store current representation for exceptions.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 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 <arm-features.h>
-
-
-int
-__fegetexceptflag (fexcept_t *flagp, int excepts)
-{
- if (ARM_HAVE_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);
diff --git a/ports/sysdeps/arm/find_exidx.c b/ports/sysdeps/arm/find_exidx.c
deleted file mode 100644
index 39910ed350..0000000000
--- a/ports/sysdeps/arm/find_exidx.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/* Copyright (C) 2005-2014 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;
-}
diff --git a/ports/sysdeps/arm/fpu_control.h b/ports/sysdeps/arm/fpu_control.h
deleted file mode 100644
index 6d54b9bfee..0000000000
--- a/ports/sysdeps/arm/fpu_control.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* FPU control word definitions. ARM VFP version.
- Copyright (C) 2004-2014 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(_LIBC_TEST)) && defined(__SOFTFP__)
-
-#define _FPU_RESERVED 0xffffffff
-#define _FPU_DEFAULT 0x00000000
-typedef unsigned int fpu_control_t;
-#define _FPU_GETCW(cw) (cw) = 0
-#define _FPU_SETCW(cw) (void) (cw)
-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 0x00086060
-#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 */
diff --git a/ports/sysdeps/arm/fraiseexcpt.c b/ports/sysdeps/arm/fraiseexcpt.c
deleted file mode 100644
index 8b320651eb..0000000000
--- a/ports/sysdeps/arm/fraiseexcpt.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/* Raise given exceptions.
- Copyright (C) 2004-2014 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 <arm-features.h>
-
-
-int
-feraiseexcept (int excepts)
-{
- if (ARM_HAVE_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)
diff --git a/ports/sysdeps/arm/frame.h b/ports/sysdeps/arm/frame.h
deleted file mode 100644
index eba5967c3f..0000000000
--- a/ports/sysdeps/arm/frame.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Definition of stack frame structure. ARM/APCS version.
- Copyright (C) 2000-2014 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/>. */
-
-/* This is the APCS stack backtrace structure. */
-struct layout
-{
- struct layout *next;
- void *sp;
- void *return_address;
-};
-
-#define FIRST_FRAME_POINTER ADVANCE_STACK_FRAME (__builtin_frame_address (0))
diff --git a/ports/sysdeps/arm/framestate.c b/ports/sysdeps/arm/framestate.c
deleted file mode 100644
index 710cecca97..0000000000
--- a/ports/sysdeps/arm/framestate.c
+++ /dev/null
@@ -1 +0,0 @@
-/* Empty */
diff --git a/ports/sysdeps/arm/fsetexcptflg.c b/ports/sysdeps/arm/fsetexcptflg.c
deleted file mode 100644
index 0c88c0fa70..0000000000
--- a/ports/sysdeps/arm/fsetexcptflg.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/* Set floating-point environment exception handling.
- Copyright (C) 1997-2014 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 <arm-features.h>
-
-
-int
-__fesetexceptflag (const fexcept_t *flagp, int excepts)
-{
- if (ARM_HAVE_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);
diff --git a/ports/sysdeps/arm/ftestexcept.c b/ports/sysdeps/arm/ftestexcept.c
deleted file mode 100644
index 9295c0fec2..0000000000
--- a/ports/sysdeps/arm/ftestexcept.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Test exception in current environment.
- Copyright (C) 1997-2014 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 <arm-features.h>
-
-
-int
-fetestexcept (int excepts)
-{
- if (ARM_HAVE_VFP)
- {
- fexcept_t temp;
-
- /* Get current exceptions. */
- _FPU_GETCW(temp);
-
- return temp & excepts & FE_ALL_EXCEPT;
- }
-
- /* Unsupported, return 0. */
- return 0;
-}
-libm_hidden_def (fetestexcept)
diff --git a/ports/sysdeps/arm/gcc-compat.h b/ports/sysdeps/arm/gcc-compat.h
deleted file mode 100644
index 680f30e3a7..0000000000
--- a/ports/sysdeps/arm/gcc-compat.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Macros for checking required GCC compatibility. ARM version.
- Copyright (C) 2014 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 _ARM_GCC_COMPAT_H
-#define _ARM_GCC_COMPAT_H 1
-
-#ifndef GCC_COMPAT_VERSION
-# ifdef __ARM_PCS_VFP
-/* The hard-float ABI was first supported in 4.5. */
-# define GCC_COMPAT_VERSION GCC_VERSION (4, 5)
-# else
-/* The EABI configurations (the only ones we handle) were first supported
- in 4.1. */
-# define GCC_COMPAT_VERSION GCC_VERSION (4, 1)
-# endif
-#endif
-
-#include_next <gcc-compat.h>
-
-#endif
diff --git a/ports/sysdeps/arm/gccframe.h b/ports/sysdeps/arm/gccframe.h
deleted file mode 100644
index f417b45791..0000000000
--- a/ports/sysdeps/arm/gccframe.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Definition of object in frame unwind info. arm version.
- Copyright (C) 2001-2014 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 FIRST_PSEUDO_REGISTER 27
-
-#include <sysdeps/generic/gccframe.h>
diff --git a/ports/sysdeps/arm/get-rounding-mode.h b/ports/sysdeps/arm/get-rounding-mode.h
deleted file mode 100644
index 7d6054cd89..0000000000
--- a/ports/sysdeps/arm/get-rounding-mode.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Determine floating-point rounding mode within libc. ARM version.
- Copyright (C) 2012-2014 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 _ARM_GET_ROUNDING_MODE_H
-#define _ARM_GET_ROUNDING_MODE_H 1
-
-#include <arm-features.h>
-#include <fenv.h>
-#include <fpu_control.h>
-
-/* Return the floating-point rounding mode. */
-
-static inline int
-get_rounding_mode (void)
-{
- if (ARM_HAVE_VFP)
- {
- fpu_control_t fc;
-
- _FPU_GETCW (fc);
- return fc & FE_TOWARDZERO;
- }
- else
- return FE_TONEAREST;
-}
-
-#endif /* get-rounding-mode.h */
diff --git a/ports/sysdeps/arm/gmp-mparam.h b/ports/sysdeps/arm/gmp-mparam.h
deleted file mode 100644
index e2276b7bce..0000000000
--- a/ports/sysdeps/arm/gmp-mparam.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* gmp-mparam.h -- Compiler/machine parameter header file.
-
-Copyright (C) 1991-2014 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP 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 MP 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 MP Library. If not, see <http://www.gnu.org/licenses/>. */
-
-#define BITS_PER_MP_LIMB 32
-#define BYTES_PER_MP_LIMB 4
-#define BITS_PER_LONGINT 32
-#define BITS_PER_INT 32
-#define BITS_PER_SHORTINT 16
-#define BITS_PER_CHAR 8
-
-#if defined(__ARMEB__)
-# define IEEE_DOUBLE_MIXED_ENDIAN 0
-# define IEEE_DOUBLE_BIG_ENDIAN 1
-#elif defined(__VFP_FP__)
-# define IEEE_DOUBLE_MIXED_ENDIAN 0
-# define IEEE_DOUBLE_BIG_ENDIAN 0
-#else
-# define IEEE_DOUBLE_BIG_ENDIAN 0
-# define IEEE_DOUBLE_MIXED_ENDIAN 1
-#endif
diff --git a/ports/sysdeps/arm/include/bits/setjmp.h b/ports/sysdeps/arm/include/bits/setjmp.h
deleted file mode 100644
index 220dfe8d96..0000000000
--- a/ports/sysdeps/arm/include/bits/setjmp.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Private jmp_buf-related definitions. ARM EABI version.
- Copyright (C) 2013-2014 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 _INCLUDE_BITS_SETJMP_H
-#define _INCLUDE_BITS_SETJMP_H 1
-
-#ifndef __ASSEMBLER__
-/* Get the public declarations. */
-# include <sysdeps/arm/bits/setjmp.h>
-#endif
-
-#ifndef _ISOMAC
-/* Register list for a ldm/stm instruction to load/store
- the general registers from a __jmp_buf. */
-# define JMP_BUF_REGLIST {v1-v6, sl, fp}
-
-/* Index of __jmp_buf where the sp register resides. */
-# define __JMP_BUF_SP 8
-#endif
-
-#endif /* include/bits/setjmp.h */
diff --git a/ports/sysdeps/arm/jmpbuf-unwind.h b/ports/sysdeps/arm/jmpbuf-unwind.h
deleted file mode 100644
index 4dfba44ef8..0000000000
--- a/ports/sysdeps/arm/jmpbuf-unwind.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Copyright (C) 2005-2014 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 <setjmp.h>
-#include <stdint.h>
-#include <sysdep.h>
-#include <unwind.h>
-
-/* Test if longjmp to JMPBUF would unwind the frame
- containing a local variable at ADDRESS. */
-#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \
- ((void *) (address) < (void *) demangle (jmpbuf[__JMP_BUF_SP]))
-
-#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
- _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj)
-
-static inline uintptr_t __attribute__ ((unused))
-_jmpbuf_sp (__jmp_buf regs)
-{
- uintptr_t sp = regs[__JMP_BUF_SP];
-#ifdef PTR_DEMANGLE
- PTR_DEMANGLE (sp);
-#endif
- return sp;
-}
-
-#define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
- ((uintptr_t) (_address) - (_adj) < _jmpbuf_sp (_jmpbuf) - (_adj))
-
-/* We use the normal longjmp for unwinding. */
-#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val)
diff --git a/ports/sysdeps/arm/ldsodefs.h b/ports/sysdeps/arm/ldsodefs.h
deleted file mode 100644
index 47cbc4f205..0000000000
--- a/ports/sysdeps/arm/ldsodefs.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Run-time dynamic linker data structures for loaded ELF shared objects.
- Copyright (C) 2005-2014 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 _ARM_LDSODEFS_H
-#define _ARM_LDSODEFS_H 1
-
-#include <elf.h>
-
-struct La_arm_regs;
-struct La_arm_retval;
-
-#define ARCH_PLTENTER_MEMBERS \
- Elf32_Addr (*arm_gnu_pltenter) (Elf32_Sym *, unsigned int, uintptr_t *, \
- uintptr_t *, struct La_arm_regs *, \
- unsigned int *, const char *, \
- long int *)
-
-#define ARCH_PLTEXIT_MEMBERS \
- Elf32_Addr (*arm_gnu_pltexit) (Elf32_Sym *, unsigned int, uintptr_t *, \
- uintptr_t *, const struct La_arm_regs *, \
- struct La_arm_retval *, const char *)
-
-#include_next <ldsodefs.h>
-
-#endif
diff --git a/ports/sysdeps/arm/libc-tls.c b/ports/sysdeps/arm/libc-tls.c
deleted file mode 100644
index b364401bbe..0000000000
--- a/ports/sysdeps/arm/libc-tls.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Thread-local storage handling in the ELF dynamic linker. ARM version.
- Copyright (C) 2005-2014 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 <csu/libc-tls.c>
-#include <dl-tls.h>
-
-/* On ARM, linker optimizations are not required, so __tls_get_addr
- can be called even in statically linked binaries. In this case module
- must be always 1 and PT_TLS segment exist in the binary, otherwise it
- would not link. */
-
-void *
-__tls_get_addr (tls_index *ti)
-{
- dtv_t *dtv = THREAD_DTV ();
- return (char *) dtv[1].pointer.val + ti->ti_offset;
-}
diff --git a/ports/sysdeps/arm/libm-test-ulps b/ports/sysdeps/arm/libm-test-ulps
deleted file mode 100644
index 3811ff0309..0000000000
--- a/ports/sysdeps/arm/libm-test-ulps
+++ /dev/null
@@ -1,8028 +0,0 @@
-# Begin of automatic generation
-
-# acos_downward
-Test "acos_downward (-0x8p-4)":
-float: 1
-ifloat: 1
-
-# acos_towardzero
-Test "acos_towardzero (-0x8p-4)":
-float: 1
-ifloat: 1
-
-# acos_upward
-Test "acos_upward (+0)":
-double: 1
-idouble: 1
-Test "acos_upward (-0)":
-double: 1
-idouble: 1
-Test "acos_upward (-0x1p+0)":
-double: 1
-idouble: 1
-Test "acos_upward (-0x4p-1024)":
-double: 1
-idouble: 1
-Test "acos_upward (-0x4p-1076)":
-double: 1
-idouble: 1
-Test "acos_upward (-0x4p-128)":
-double: 1
-idouble: 1
-Test "acos_upward (-0x8p-152)":
-double: 1
-idouble: 1
-Test "acos_upward (-0x8p-972)":
-double: 1
-idouble: 1
-Test "acos_upward (0x1.70ef54646d496p-56)":
-double: 1
-idouble: 1
-Test "acos_upward (0x1.70ef54646d497p-56)":
-double: 1
-idouble: 1
-Test "acos_upward (0x1.70ef54p-56)":
-double: 1
-idouble: 1
-Test "acos_upward (0x1.70ef56p-56)":
-double: 1
-idouble: 1
-Test "acos_upward (0x4p-1024)":
-double: 1
-idouble: 1
-Test "acos_upward (0x4p-1076)":
-double: 1
-idouble: 1
-Test "acos_upward (0x4p-128)":
-double: 1
-idouble: 1
-Test "acos_upward (0x8p-152)":
-double: 1
-idouble: 1
-Test "acos_upward (0x8p-972)":
-double: 1
-idouble: 1
-
-# acosh
-Test "acosh (0x6.4p+4)":
-double: 1
-idouble: 1
-Test "acosh (0xf.ffffffffffff8p+1020)":
-double: 1
-
-# asin_downward
-Test "asin_downward (-0x1p+0)":
-double: 1
-idouble: 1
-Test "asin_downward (-0x8p-4)":
-double: 1
-idouble: 1
-Test "asin_downward (-0xf.fffffff8p-4)":
-double: 1
-idouble: 1
-Test "asin_downward (-0xf.ffffffffffff8p-4)":
-double: 1
-idouble: 1
-Test "asin_downward (-0xf.fffffffffffp-4)":
-double: 1
-idouble: 1
-Test "asin_downward (-0xf.fffffp-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "asin_downward (0x8p-4)":
-float: 1
-ifloat: 1
-
-# asin_towardzero
-Test "asin_towardzero (-0x4p-1024)":
-double: 1
-idouble: 1
-Test "asin_towardzero (-0x4p-1076)":
-double: 1
-idouble: 1
-Test "asin_towardzero (-0x4p-128)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "asin_towardzero (-0x8p-152)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "asin_towardzero (-0x8p-4)":
-float: 1
-ifloat: 1
-Test "asin_towardzero (-0x8p-972)":
-double: 1
-idouble: 1
-Test "asin_towardzero (0x8p-4)":
-float: 1
-ifloat: 1
-
-# asin_upward
-Test "asin_upward (-0x4p-1024)":
-double: 1
-idouble: 1
-Test "asin_upward (-0x4p-1076)":
-double: 1
-idouble: 1
-Test "asin_upward (-0x4p-128)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "asin_upward (-0x8p-152)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "asin_upward (-0x8p-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "asin_upward (-0x8p-972)":
-double: 1
-idouble: 1
-Test "asin_upward (-0xf.fffffff8p-4)":
-double: 1
-idouble: 1
-Test "asin_upward (-0xf.ffffffffffff8p-4)":
-double: 1
-idouble: 1
-Test "asin_upward (-0xf.fffffffffffp-4)":
-double: 1
-idouble: 1
-Test "asin_upward (-0xf.fffffp-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "asin_upward (0x1p+0)":
-double: 1
-idouble: 1
-Test "asin_upward (0x4p-1024)":
-double: 1
-idouble: 1
-Test "asin_upward (0x4p-1076)":
-double: 1
-idouble: 1
-Test "asin_upward (0x4p-128)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "asin_upward (0x8p-152)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "asin_upward (0x8p-972)":
-double: 1
-idouble: 1
-
-# asinh
-Test "asinh (-0xf.ffffffffffff8p+1020)":
-double: 1
-Test "asinh (0xap+0)":
-float: 1
-ifloat: 1
-Test "asinh (0xf.ffffffffffff8p+1020)":
-double: 1
-
-# atan2
-Test "atan2 (-0x1.effe82p-8, -0x7.57d1d8p-12)":
-float: 1
-ifloat: 1
-Test "atan2 (-0xcp-4, -0x1p+0)":
-float: 1
-ifloat: 1
-Test "atan2 (-0xf.fffffp+124, -0x4p-128)":
-float: 1
-ifloat: 1
-Test "atan2 (-0xf.fffffp+124, -0x8p-152)":
-float: 1
-ifloat: 1
-Test "atan2 (0x1.64p+0, 0xe.ep-4)":
-float: 1
-ifloat: 1
-Test "atan2 (0xcp-4, -0x1p+0)":
-float: 1
-ifloat: 1
-Test "atan2 (0xf.fffffp+124, -0x4p-128)":
-float: 1
-ifloat: 1
-Test "atan2 (0xf.fffffp+124, -0x8p-152)":
-float: 1
-ifloat: 1
-
-# atanh
-Test "atanh (-0xcp-4)":
-float: 1
-ifloat: 1
-Test "atanh (0xcp-4)":
-float: 1
-ifloat: 1
-
-# cacos
-Test "Imaginary part of: cacos (+0 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (+0 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: cacos (+0 + 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (+0 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (+0 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: cacos (+0 - 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (-0 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0 + 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (-0 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0 - 1.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacos (-0.25 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0.25 + 1.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0.25 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0.25 - 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0.5 + 0x1.fp-129 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (-0.5 + 0x1p-105 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (-0.5 + 0x1p-112 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (-0.5 + 0x1p-23 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacos (-0.5 + 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0.5 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (-0.5 - 0x1.fp-129 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (-0.5 - 0x1p-105 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (-0.5 - 0x1p-112 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (-0.5 - 0x1p-23 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacos (-0.5 - 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0.5 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (-0x0.fffffffffffff8p0 + 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (-0x0.fffffffffffff8p0 - 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (-0x0.ffffffp0 + 0x1p-23 i)":
-float: 2
-ifloat: 2
-Test "Imaginary part of: cacos (-0x0.ffffffp0 - 0x1p-23 i)":
-float: 2
-ifloat: 2
-Test "Imaginary part of: cacos (-0x1.000002p0 + 0x1p-23 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1.000002p0 - 0x1p-23 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1.fp-10 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (-0x1.fp-10 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacos (-0x1.fp-100 + 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1.fp-100 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1.fp-100 - 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1.fp-100 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1.fp-1000 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (-0x1.fp-1000 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (-0x1.fp-1025 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (-0x1.fp-1025 + 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (-0x1.fp-1025 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (-0x1.fp-1025 - 1.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacos (-0x1.fp-129 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1.fp-129 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1.fp-129 + 0x0.ffffffp0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1.fp-129 + 0x1.000002p0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1.fp-129 + 0x1.fp-129 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1.fp-129 + 0x1p-23 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1.fp-129 + 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1.fp-129 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1.fp-129 + 1.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1.fp-129 + 1.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacos (-0x1.fp-129 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1.fp-129 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1.fp-129 - 0x0.ffffffp0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1.fp-129 - 0x1.000002p0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1.fp-129 - 0x1.fp-129 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1.fp-129 - 0x1p-23 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1.fp-129 - 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1.fp-129 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1.fp-129 - 1.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1.fp-129 - 1.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacos (-0x1.fp-30 + 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1.fp-30 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1.fp-30 - 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1.fp-30 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1p-105 + 0.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1p-105 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1p-105 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1p-105 + 0x1p-105 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1p-105 - 0.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1p-105 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1p-105 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1p-105 - 0x1p-105 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1p-112 + 0.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1p-112 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1p-112 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1p-112 + 0x1p-112 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1p-112 - 0.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1p-112 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1p-112 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1p-112 - 0x1p-112 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1p-23 + 0.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1p-23 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1p-23 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1p-23 + 0x0.ffffffp0 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacos (-0x1p-23 + 0x1.fp-129 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1p-23 + 0x1p-23 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1p-23 - 0.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1p-23 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1p-23 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1p-23 - 0x0.ffffffp0 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacos (-0x1p-23 - 0x1.fp-129 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1p-23 - 0x1p-23 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1p-52 + 0.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1p-52 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1p-52 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1p-52 + 0x1p-52 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1p-52 - 0.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1p-52 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1p-52 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1p-52 - 0x1p-52 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1p-63 + 0.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1p-63 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1p-63 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1p-63 + 0x1p-63 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1p-63 - 0.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1p-63 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1p-63 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-0x1p-63 - 0x1p-63 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-1.0 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-1.0 + 0x1.fp-10 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-1.0 + 0x1p50 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-1.0 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-1.0 - 0x1.fp-10 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-1.0 - 0x1p50 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (-2 - 3 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (0.25 + 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (0.25 - 1.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (0.5 + +0 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacos (0.5 + 0x1.fp-1025 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacos (0.5 + 0x1.fp-129 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0.5 + 0x1.fp-129 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacos (0.5 + 0x1p-105 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0.5 + 0x1p-105 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacos (0.5 + 0x1p-112 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0.5 + 0x1p-112 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0.5 + 0x1p-23 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacos (0.5 + 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacos (0.5 + 0x1p-63 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacos (0.5 + 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (0.5 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacos (0.5 - 0 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacos (0.5 - 0x1.fp-1025 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacos (0.5 - 0x1.fp-129 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0.5 - 0x1.fp-129 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacos (0.5 - 0x1p-105 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0.5 - 0x1p-105 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacos (0.5 - 0x1p-112 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0.5 - 0x1p-112 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0.5 - 0x1p-23 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacos (0.5 - 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacos (0.5 - 0x1p-63 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacos (0.5 - 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (0.5 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0x0.fffffffffffff8p0 + 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0x0.fffffffffffff8p0 - 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacos (0x0.ffffffp0 + 0.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (0x0.ffffffp0 + 0x1.fp-129 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (0x0.ffffffp0 + 0x1p-23 i)":
-float: 2
-ifloat: 2
-Test "Imaginary part of: cacos (0x0.ffffffp0 + 0x1p-23 i)":
-float: 2
-ifloat: 2
-Test "Real part of: cacos (0x0.ffffffp0 - 0.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (0x0.ffffffp0 - 0x1.fp-129 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (0x0.ffffffp0 - 0x1p-23 i)":
-float: 2
-ifloat: 2
-Test "Imaginary part of: cacos (0x0.ffffffp0 - 0x1p-23 i)":
-float: 2
-ifloat: 2
-Test "Real part of: cacos (0x1.0000000000001p0 + 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacos (0x1.0000000000001p0 - 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacos (0x1.000002p0 + 0x1p-23 i)":
-float: 2
-ifloat: 2
-Test "Imaginary part of: cacos (0x1.000002p0 + 0x1p-23 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (0x1.000002p0 - 0x1p-23 i)":
-float: 2
-ifloat: 2
-Test "Imaginary part of: cacos (0x1.000002p0 - 0x1p-23 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (0x1.fp-10 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0x1.fp-10 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0x1.fp-100 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: cacos (0x1.fp-100 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: cacos (0x1.fp-1000 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0x1.fp-1000 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0x1.fp-1025 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0x1.fp-1025 + 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0x1.fp-1025 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0x1.fp-1025 - 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0x1.fp-129 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (0x1.fp-129 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: cacos (0x1.fp-129 + 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0x1.fp-129 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (0x1.fp-129 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: cacos (0x1.fp-129 - 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0x1.fp-30 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: cacos (0x1.fp-30 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: cacos (0x1.fp1023 + 0x1.fp1023 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0x1.fp127 + 0x1.fp127 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0x1p-105 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (0x1p-105 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (0x1p-112 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (0x1p-112 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (0x1p-23 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (0x1p-23 + 0x0.ffffffp0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0x1p-23 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (0x1p-23 - 0x0.ffffffp0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0x1p-52 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (0x1p-52 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (0x1p-63 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (0x1p-63 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (1.0 + 0.25 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacos (1.0 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (1.0 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (1.0 + 0x1.fp-10 i)":
-float: 2
-ifloat: 2
-Test "Imaginary part of: cacos (1.0 + 0x1.fp-10 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (1.0 - 0.25 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacos (1.0 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (1.0 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacos (1.0 - 0x1.fp-10 i)":
-float: 2
-ifloat: 2
-Test "Imaginary part of: cacos (1.0 - 0x1.fp-10 i)":
-float: 1
-ifloat: 1
-
-# cacosh
-Test "Real part of: cacosh (+0 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (+0 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: cacosh (+0 + 1.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (+0 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (+0 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: cacosh (+0 - 1.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-0 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: cacosh (-0 + 1.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-0 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: cacosh (-0 - 1.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0.25 + 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0.25 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: cacosh (-0.25 - 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0.25 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: cacosh (-0.5 + 0x1.fp-129 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0.5 + 0x1p-105 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0.5 + 0x1p-112 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0.5 + 0x1p-23 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0.5 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacosh (-0.5 + 1.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-0.5 - 0x1.fp-129 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0.5 - 0x1p-105 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0.5 - 0x1p-112 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0.5 - 0x1p-23 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0.5 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacosh (-0.5 - 1.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-0x0.fffffffffffff8p0 + 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0x0.fffffffffffff8p0 - 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0x0.ffffffp0 + 0x1p-23 i)":
-float: 2
-ifloat: 2
-Test "Real part of: cacosh (-0x0.ffffffp0 - 0x1p-23 i)":
-float: 2
-ifloat: 2
-Test "Real part of: cacosh (-0x1.000002p0 + 0x1p-23 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-0x1.000002p0 - 0x1p-23 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-0x1.fp-10 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0x1.fp-10 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0x1.fp-100 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1.fp-100 + 1.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-0x1.fp-100 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1.fp-100 - 1.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-0x1.fp-1000 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0x1.fp-1000 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0x1.fp-1025 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0x1.fp-1025 + 1.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0x1.fp-1025 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0x1.fp-1025 - 1.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0x1.fp-129 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1.fp-129 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1.fp-129 + 0x0.ffffffp0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1.fp-129 + 0x1.000002p0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1.fp-129 + 0x1.fp-129 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1.fp-129 + 0x1p-23 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-0x1.fp-129 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1.fp-129 + 1.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-0x1.fp-129 + 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacosh (-0x1.fp-129 + 1.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-0x1.fp-129 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1.fp-129 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1.fp-129 - 0x0.ffffffp0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1.fp-129 - 0x1.000002p0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1.fp-129 - 0x1.fp-129 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1.fp-129 - 0x1p-23 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-0x1.fp-129 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1.fp-129 - 1.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-0x1.fp-129 - 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacosh (-0x1.fp-129 - 1.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-0x1.fp-30 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1.fp-30 + 1.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-0x1.fp-30 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1.fp-30 - 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1p-105 + 0.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-0x1p-105 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1p-105 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1p-105 + 0x1p-105 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1p-105 - 0.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-0x1p-105 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1p-105 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1p-105 - 0x1p-105 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1p-112 + 0.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-0x1p-112 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1p-112 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1p-112 + 0x1p-112 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1p-112 - 0.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-0x1p-112 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1p-112 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1p-112 - 0x1p-112 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1p-23 + 0.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-0x1p-23 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1p-23 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-0x1p-23 + 0x0.ffffffp0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacosh (-0x1p-23 + 0x1.fp-129 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1p-23 + 0x1p-23 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1p-23 - 0.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-0x1p-23 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1p-23 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-0x1p-23 - 0x0.ffffffp0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacosh (-0x1p-23 - 0x1.fp-129 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1p-23 - 0x1p-23 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1p-52 + 0.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-0x1p-52 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1p-52 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1p-52 + 0x1p-52 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1p-52 - 0.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-0x1p-52 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1p-52 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1p-52 - 0x1p-52 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1p-63 + 0.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-0x1p-63 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1p-63 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1p-63 + 0x1p-63 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1p-63 - 0.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-0x1p-63 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1p-63 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-0x1p-63 - 0x1p-63 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-1.0 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-1.0 + 0x1.fp-10 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-1.0 + 0x1p50 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-1.0 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-1.0 - 0x1.fp-10 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-1.0 - 0x1p50 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (-2 - 3 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (0.25 + 1.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (0.25 - 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (0.5 + +0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacosh (0.5 + 0x1.fp-1025 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0.5 + 0x1.fp-129 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacosh (0.5 + 0x1.fp-129 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0.5 + 0x1p-105 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacosh (0.5 + 0x1p-105 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0.5 + 0x1p-112 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacosh (0.5 + 0x1p-112 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0.5 + 0x1p-23 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacosh (0.5 + 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacosh (0.5 + 0x1p-63 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0.5 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacosh (0.5 + 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (0.5 - 0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacosh (0.5 - 0x1.fp-1025 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0.5 - 0x1.fp-129 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacosh (0.5 - 0x1.fp-129 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0.5 - 0x1p-105 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacosh (0.5 - 0x1p-105 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0.5 - 0x1p-112 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacosh (0.5 - 0x1p-112 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0.5 - 0x1p-23 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacosh (0.5 - 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacosh (0.5 - 0x1p-63 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0.5 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacosh (0.5 - 1.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (0x0.fffffffffffff8p0 + 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0x0.fffffffffffff8p0 - 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacosh (0x0.ffffffp0 + 0.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (0x0.ffffffp0 + 0x1.fp-129 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (0x0.ffffffp0 + 0x1p-23 i)":
-float: 2
-ifloat: 2
-Test "Imaginary part of: cacosh (0x0.ffffffp0 + 0x1p-23 i)":
-float: 2
-ifloat: 2
-Test "Imaginary part of: cacosh (0x0.ffffffp0 - 0.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (0x0.ffffffp0 - 0x1.fp-129 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (0x0.ffffffp0 - 0x1p-23 i)":
-float: 2
-ifloat: 2
-Test "Imaginary part of: cacosh (0x0.ffffffp0 - 0x1p-23 i)":
-float: 2
-ifloat: 2
-Test "Imaginary part of: cacosh (0x1.0000000000001p0 + 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacosh (0x1.0000000000001p0 - 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0x1.000002p0 + 0x1p-23 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (0x1.000002p0 + 0x1p-23 i)":
-float: 2
-ifloat: 2
-Test "Real part of: cacosh (0x1.000002p0 - 0x1p-23 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (0x1.000002p0 - 0x1p-23 i)":
-float: 2
-ifloat: 2
-Test "Real part of: cacosh (0x1.fp-10 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0x1.fp-10 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0x1.fp-100 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: cacosh (0x1.fp-100 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: cacosh (0x1.fp-1000 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0x1.fp-1000 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0x1.fp-1025 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0x1.fp-1025 + 1.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0x1.fp-1025 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0x1.fp-1025 - 1.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0x1.fp-129 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (0x1.fp-129 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: cacosh (0x1.fp-129 + 1.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0x1.fp-129 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (0x1.fp-129 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: cacosh (0x1.fp-129 - 1.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0x1.fp-30 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: cacosh (0x1.fp-30 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: cacosh (0x1.fp1023 + 0x1.fp1023 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0x1.fp127 + 0x1.fp127 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0x1p-105 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (0x1p-105 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (0x1p-112 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (0x1p-112 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (0x1p-23 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (0x1p-23 + 0x0.ffffffp0 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0x1p-23 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (0x1p-23 - 0x0.ffffffp0 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0x1p-52 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (0x1p-52 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (0x1p-63 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (0x1p-63 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (1.0 + 0.25 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (1.0 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (1.0 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (1.0 + 0x1.fp-10 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (1.0 + 0x1.fp-10 i)":
-float: 2
-ifloat: 2
-Test "Imaginary part of: cacosh (1.0 - 0.25 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (1.0 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (1.0 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (1.0 - 0x1.fp-10 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (1.0 - 0x1.fp-10 i)":
-float: 2
-ifloat: 2
-
-# casin
-Test "Imaginary part of: casin (+0 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (+0 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (+0 + 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (+0 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (+0 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (+0 - 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0 + 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0 - 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0.25 + 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0.25 - 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0.5 + 0x1.fp-129 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0.5 + 0x1p-105 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0.5 + 0x1p-112 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0.5 + 0x1p-23 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0.5 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0.5 - 0x1.fp-129 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0.5 - 0x1p-105 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0.5 - 0x1p-112 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0.5 - 0x1p-23 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0.5 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0x0.fffffffffffff8p0 + 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0x0.fffffffffffff8p0 - 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0x0.ffffffp0 + 0x1p-23 i)":
-float: 2
-ifloat: 2
-Test "Imaginary part of: casin (-0x0.ffffffp0 - 0x1p-23 i)":
-float: 2
-ifloat: 2
-Test "Imaginary part of: casin (-0x1.000002p0 + 0x1p-23 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0x1.000002p0 - 0x1p-23 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casin (-0x1.fp-10 + 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0x1.fp-10 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Real part of: casin (-0x1.fp-10 - 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0x1.fp-10 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0x1.fp-100 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0x1.fp-100 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0x1.fp-1000 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0x1.fp-1000 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0x1.fp-1025 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0x1.fp-1025 + 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0x1.fp-1025 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0x1.fp-1025 - 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0x1.fp-129 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0x1.fp-129 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0x1.fp-129 + 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0x1.fp-129 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0x1.fp-129 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0x1.fp-129 - 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0x1.fp-30 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0x1.fp-30 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0x1p-105 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0x1p-105 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0x1p-112 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0x1p-112 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casin (-0x1p-23 + 0.5 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0x1p-23 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0x1p-23 + 0x0.ffffffp0 i)":
-double: 1
-idouble: 1
-Test "Real part of: casin (-0x1p-23 + 0x1.000002p0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casin (-0x1p-23 - 0.5 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0x1p-23 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0x1p-23 - 0x0.ffffffp0 i)":
-double: 1
-idouble: 1
-Test "Real part of: casin (-0x1p-23 - 0x1.000002p0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0x1p-52 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0x1p-52 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0x1p-63 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0x1p-63 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casin (-1.0 + 0.25 i)":
-double: 1
-idouble: 1
-Test "Real part of: casin (-1.0 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (-1.0 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (-1.0 + 0x1.fp-10 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casin (-1.0 - 0.25 i)":
-double: 1
-idouble: 1
-Test "Real part of: casin (-1.0 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (-1.0 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (-1.0 - 0x1.fp-10 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (0.25 + 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (0.25 - 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (0.5 + 0x1.fp-129 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0.5 + 0x1p-105 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0.5 + 0x1p-112 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0.5 + 0x1p-23 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0.5 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0.5 - 0x1.fp-129 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0.5 - 0x1p-105 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0.5 - 0x1p-112 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0.5 - 0x1p-23 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0.5 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Real part of: casin (0.75 + 1.25 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (0x0.fffffffffffff8p0 + 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0x0.fffffffffffff8p0 - 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0x0.ffffffp0 + 0x1p-23 i)":
-float: 2
-ifloat: 2
-Test "Imaginary part of: casin (0x0.ffffffp0 - 0x1p-23 i)":
-float: 2
-ifloat: 2
-Test "Imaginary part of: casin (0x1.000002p0 + 0x1p-23 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (0x1.000002p0 - 0x1p-23 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casin (0x1.fp-10 + 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (0x1.fp-10 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Real part of: casin (0x1.fp-10 - 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (0x1.fp-10 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0x1.fp-100 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (0x1.fp-100 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (0x1.fp-1000 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0x1.fp-1000 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0x1.fp-1025 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0x1.fp-1025 + 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0x1.fp-1025 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0x1.fp-1025 - 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0x1.fp-129 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (0x1.fp-129 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (0x1.fp-129 + 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0x1.fp-129 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (0x1.fp-129 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (0x1.fp-129 - 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0x1.fp-30 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (0x1.fp-30 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (0x1.fp1023 + 0x1.fp1023 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0x1.fp127 + 0x1.fp127 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0x1p-105 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (0x1p-105 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (0x1p-112 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (0x1p-112 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casin (0x1p-23 + 0.5 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (0x1p-23 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (0x1p-23 + 0x0.ffffffp0 i)":
-double: 1
-idouble: 1
-Test "Real part of: casin (0x1p-23 + 0x1.000002p0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casin (0x1p-23 - 0.5 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (0x1p-23 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (0x1p-23 - 0x0.ffffffp0 i)":
-double: 1
-idouble: 1
-Test "Real part of: casin (0x1p-23 - 0x1.000002p0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (0x1p-52 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (0x1p-52 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (0x1p-63 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (0x1p-63 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casin (1.0 + 0.25 i)":
-double: 1
-idouble: 1
-Test "Real part of: casin (1.0 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (1.0 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (1.0 + 0x1.fp-10 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casin (1.0 - 0.25 i)":
-double: 1
-idouble: 1
-Test "Real part of: casin (1.0 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (1.0 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (1.0 - 0x1.fp-10 i)":
-float: 1
-ifloat: 1
-
-# casinh
-Test "Imaginary part of: casinh (-0.25 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casinh (-0.25 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-0.5 + +0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (-0.5 + 0x1.fp-129 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (-0.5 + 0x1p-105 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (-0.5 + 0x1p-112 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (-0.5 + 0x1p-23 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casinh (-0.5 + 0x1p-23 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (-0.5 + 0x1p-52 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (-0.5 + 0x1p-63 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (-0.5 + 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casinh (-0.5 + 1.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (-0.5 - 0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (-0.5 - 0x1.fp-129 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (-0.5 - 0x1p-105 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (-0.5 - 0x1p-112 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (-0.5 - 0x1p-23 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casinh (-0.5 - 0x1p-23 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (-0.5 - 0x1p-52 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (-0.5 - 0x1p-63 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (-0.5 - 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casinh (-0.5 - 1.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (-0x0.ffffffp0 + 0x1p-23 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-0x0.ffffffp0 - 0x1p-23 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casinh (-0x1.000002p0 + 0x1p-23 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casinh (-0x1.000002p0 - 0x1p-23 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (-0x1.fp-10 + 1.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (-0x1.fp-10 - 1.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (-0x1.fp-129 + 0.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-0x1.fp-129 - 0.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-0x1p-105 + 0.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-0x1p-105 - 0.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-0x1p-112 + 0.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-0x1p-112 - 0.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-0x1p-23 + 0.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-0x1p-23 + 0x0.ffffffp0 i)":
-float: 2
-ifloat: 2
-Test "Real part of: casinh (-0x1p-23 + 0x1.000002p0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (-0x1p-23 - 0.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-0x1p-23 - 0x0.ffffffp0 i)":
-float: 2
-ifloat: 2
-Test "Real part of: casinh (-0x1p-23 - 0x1.000002p0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (-0x1p-52 + 0x0.fffffffffffff8p0 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-0x1p-52 - 0x0.fffffffffffff8p0 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-1.0 + +0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (-1.0 + 0.25 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (-1.0 + 0.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-1.0 + 0x1.fp-10 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casinh (-1.0 + 0x1.fp-10 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (-1.0 + 0x1.fp-100 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (-1.0 + 0x1.fp-1000 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-1.0 + 0x1.fp-1025 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-1.0 + 0x1.fp-129 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (-1.0 + 0x1.fp-30 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (-1.0 - 0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (-1.0 - 0.25 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (-1.0 - 0.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-1.0 - 0x1.fp-10 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casinh (-1.0 - 0x1.fp-10 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (-1.0 - 0x1.fp-100 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (-1.0 - 0x1.fp-1000 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-1.0 - 0x1.fp-1025 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-1.0 - 0x1.fp-129 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (-1.0 - 0x1.fp-30 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (-1.5 + +0 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-1.5 + 0x1.fp-1025 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-1.5 + 0x1.fp-129 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-1.5 - 0 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-1.5 - 0x1.fp-1025 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-1.5 - 0x1.fp-129 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casinh (0.25 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casinh (0.25 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (0.5 + +0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (0.5 + 0x1.fp-129 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (0.5 + 0x1p-105 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (0.5 + 0x1p-112 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (0.5 + 0x1p-23 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casinh (0.5 + 0x1p-23 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (0.5 + 0x1p-52 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (0.5 + 0x1p-63 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (0.5 + 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casinh (0.5 + 1.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (0.5 - 0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (0.5 - 0x1.fp-129 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (0.5 - 0x1p-105 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (0.5 - 0x1p-112 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (0.5 - 0x1p-23 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casinh (0.5 - 0x1p-23 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (0.5 - 0x1p-52 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (0.5 - 0x1p-63 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (0.5 - 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casinh (0.5 - 1.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (0.75 + 1.25 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casinh (0.75 + 1.25 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (0x0.ffffffp0 + 0x1p-23 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (0x0.ffffffp0 - 0x1p-23 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casinh (0x1.000002p0 + 0x1p-23 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casinh (0x1.000002p0 - 0x1p-23 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (0x1.fp-10 + 1.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (0x1.fp-10 - 1.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (0x1.fp-129 + 0.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (0x1.fp-129 - 0.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (0x1.fp1023 + 0x1.fp1023 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (0x1.fp127 + 0x1.fp127 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (0x1p-105 + 0.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (0x1p-105 - 0.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (0x1p-112 + 0.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (0x1p-112 - 0.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (0x1p-23 + 0.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (0x1p-23 + 0x0.ffffffp0 i)":
-float: 2
-ifloat: 2
-Test "Real part of: casinh (0x1p-23 + 0x1.000002p0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (0x1p-23 - 0.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (0x1p-23 - 0x0.ffffffp0 i)":
-float: 2
-ifloat: 2
-Test "Real part of: casinh (0x1p-23 - 0x1.000002p0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (0x1p-52 + 0x0.fffffffffffff8p0 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (0x1p-52 - 0x0.fffffffffffff8p0 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (1.0 + +0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (1.0 + 0.25 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (1.0 + 0.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (1.0 + 0x1.fp-10 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casinh (1.0 + 0x1.fp-10 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (1.0 + 0x1.fp-100 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (1.0 + 0x1.fp-1000 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (1.0 + 0x1.fp-1025 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (1.0 + 0x1.fp-129 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (1.0 + 0x1.fp-30 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (1.0 - 0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (1.0 - 0.25 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (1.0 - 0.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (1.0 - 0x1.fp-10 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casinh (1.0 - 0x1.fp-10 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (1.0 - 0x1.fp-100 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (1.0 - 0x1.fp-1000 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (1.0 - 0x1.fp-1025 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (1.0 - 0x1.fp-129 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (1.0 - 0x1.fp-30 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (1.5 + +0 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (1.5 + 0x1.fp-1025 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (1.5 + 0x1.fp-129 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (1.5 - 0 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (1.5 - 0x1.fp-1025 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (1.5 - 0x1.fp-129 i)":
-double: 1
-idouble: 1
-
-# catan
-Test "Imaginary part of: catan (-0x0.fffffffffffff8p0 + 0x1p-27 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: catan (-0x0.ffffffp0 + 0x1p-13 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: catan (-0x1.0000000000001p0 - 0x1p-27 i)":
-double: 1
-idouble: 1
-Test "Real part of: catan (-0x1.000002p0 + 0x1p-126 i)":
-float: 1
-ifloat: 1
-Test "Real part of: catan (-0x1.000002p0 + 0x1p-13 i)":
-float: 1
-ifloat: 1
-Test "Real part of: catan (-0x1.000002p0 - 0x1p-126 i)":
-float: 1
-ifloat: 1
-Test "Real part of: catan (-0x1.000002p0 - 0x1p-13 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: catan (-0x1.000002p0 - 0x1p-13 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: catan (-0x1.fp1023 + 0x1.fp1023 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: catan (-0x1.fp1023 - 0x1.fp1023 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: catan (-0x1.fp127 + 0x1.fp127 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: catan (-0x1.fp127 - 0x1.fp127 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: catan (-0x1p-1020 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: catan (-0x1p-1020 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Real part of: catan (-0x1p-13 + 0x1.000002p0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: catan (-0x1p-13 + 1.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: catan (-0x1p-13 - 0x1.000002p0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: catan (-0x1p-13 - 0x1.000002p0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: catan (-0x1p-13 - 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: catan (-0x1p-54 + 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: catan (-0x1p-54 - 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: catan (-0x1p-57 + 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: catan (-0x1p-57 - 1.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: catan (-1.0 + 0x1p-13 i)":
-float: 1
-ifloat: 1
-Test "Real part of: catan (-1.0 - 0x1p-13 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: catan (-2 - 3 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: catan (0x0.fffffffffffff8p0 + 0x1p-27 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: catan (0x0.ffffffp0 + 0x1p-13 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: catan (0x1.0000000000001p0 - 0x1p-27 i)":
-double: 1
-idouble: 1
-Test "Real part of: catan (0x1.000002p0 + 0x1p-126 i)":
-float: 1
-ifloat: 1
-Test "Real part of: catan (0x1.000002p0 + 0x1p-13 i)":
-float: 1
-ifloat: 1
-Test "Real part of: catan (0x1.000002p0 - 0x1p-126 i)":
-float: 1
-ifloat: 1
-Test "Real part of: catan (0x1.000002p0 - 0x1p-13 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: catan (0x1.000002p0 - 0x1p-13 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: catan (0x1.fp1023 + 0x1.fp1023 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: catan (0x1.fp1023 - 0x1.fp1023 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: catan (0x1.fp127 + 0x1.fp127 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: catan (0x1.fp127 - 0x1.fp127 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: catan (0x1p-1020 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: catan (0x1p-1020 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Real part of: catan (0x1p-13 + 0x1.000002p0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: catan (0x1p-13 + 1.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: catan (0x1p-13 - 0x1.000002p0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: catan (0x1p-13 - 0x1.000002p0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: catan (0x1p-13 - 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: catan (0x1p-54 + 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: catan (0x1p-54 - 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: catan (0x1p-57 + 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: catan (0x1p-57 - 1.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: catan (1.0 + 0x1p-13 i)":
-float: 1
-ifloat: 1
-Test "Real part of: catan (1.0 - 0x1p-13 i)":
-float: 1
-ifloat: 1
-
-# catanh
-Test "Real part of: catanh (-0x1.000002p0 + 0x1p-13 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: catanh (-0x1.000002p0 + 0x1p-13 i)":
-float: 1
-ifloat: 1
-Test "Real part of: catanh (-0x1.000002p0 - 0x1p-13 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: catanh (-0x1.000002p0 - 0x1p-13 i)":
-float: 1
-ifloat: 1
-Test "Real part of: catanh (-0x1.fp1023 + 0x1.fp1023 i)":
-double: 1
-idouble: 1
-Test "Real part of: catanh (-0x1.fp1023 - 0x1.fp1023 i)":
-double: 1
-idouble: 1
-Test "Real part of: catanh (-0x1.fp127 + 0x1.fp127 i)":
-double: 1
-idouble: 1
-Test "Real part of: catanh (-0x1.fp127 - 0x1.fp127 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: catanh (-0x1p-126 + 0x1.000002p0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: catanh (-0x1p-126 - 0x1.000002p0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: catanh (-0x1p-13 + 0x1.000002p0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: catanh (-0x1p-13 + 0x1.000002p0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: catanh (-0x1p-13 + 1.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: catanh (-0x1p-13 - 0x1.000002p0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: catanh (-0x1p-13 - 0x1.000002p0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: catanh (-0x1p-13 - 1.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: catanh (-0x1p-27 + 0x1.0000000000001p0 i)":
-double: 1
-idouble: 1
-Test "Real part of: catanh (-0x1p-27 - 0x1.0000000000001p0 i)":
-double: 1
-idouble: 1
-Test "Real part of: catanh (-1.0 + 0x1p-1020 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: catanh (-1.0 + 0x1p-13 i)":
-float: 1
-ifloat: 1
-Test "Real part of: catanh (-1.0 + 0x1p-54 i)":
-float: 1
-ifloat: 1
-Test "Real part of: catanh (-1.0 + 0x1p-57 i)":
-float: 1
-ifloat: 1
-Test "Real part of: catanh (-1.0 - 0x1p-1020 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: catanh (-1.0 - 0x1p-13 i)":
-float: 1
-ifloat: 1
-Test "Real part of: catanh (-1.0 - 0x1p-54 i)":
-float: 1
-ifloat: 1
-Test "Real part of: catanh (-1.0 - 0x1p-57 i)":
-float: 1
-ifloat: 1
-Test "Real part of: catanh (-2 - 3 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: catanh (0x1.000002p0 + 0x1p-13 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: catanh (0x1.000002p0 - 0x1p-13 i)":
-float: 1
-ifloat: 1
-Test "Real part of: catanh (0x1.fp1023 + 0x1.fp1023 i)":
-double: 1
-idouble: 1
-Test "Real part of: catanh (0x1.fp1023 - 0x1.fp1023 i)":
-double: 1
-idouble: 1
-Test "Real part of: catanh (0x1.fp127 + 0x1.fp127 i)":
-double: 1
-idouble: 1
-Test "Real part of: catanh (0x1.fp127 - 0x1.fp127 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: catanh (0x1p-126 + 0x1.000002p0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: catanh (0x1p-126 - 0x1.000002p0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: catanh (0x1p-13 + 0x0.ffffffp0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: catanh (0x1p-13 + 0x1.000002p0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: catanh (0x1p-13 + 1.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: catanh (0x1p-13 - 0x0.ffffffp0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: catanh (0x1p-13 - 0x1.000002p0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: catanh (0x1p-13 - 1.0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: catanh (0x1p-27 + 0x0.fffffffffffff8p0 i)":
-double: 1
-idouble: 1
-Test "Real part of: catanh (0x1p-27 - 0x0.fffffffffffff8p0 i)":
-double: 1
-idouble: 1
-Test "Real part of: catanh (1.0 + 0x1p-1020 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: catanh (1.0 + 0x1p-13 i)":
-float: 1
-ifloat: 1
-Test "Real part of: catanh (1.0 + 0x1p-54 i)":
-float: 1
-ifloat: 1
-Test "Real part of: catanh (1.0 + 0x1p-57 i)":
-float: 1
-ifloat: 1
-Test "Real part of: catanh (1.0 - 0x1p-1020 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: catanh (1.0 - 0x1p-13 i)":
-float: 1
-ifloat: 1
-Test "Real part of: catanh (1.0 - 0x1p-54 i)":
-float: 1
-ifloat: 1
-Test "Real part of: catanh (1.0 - 0x1p-57 i)":
-float: 1
-ifloat: 1
-
-# cbrt
-Test "cbrt (-0x1.bp+4)":
-double: 1
-idouble: 1
-Test "cbrt (-0x4.18937p-12)":
-float: 1
-ifloat: 1
-Test "cbrt (0xcp-4)":
-double: 1
-idouble: 1
-Test "cbrt (0xf.ep-4)":
-double: 1
-idouble: 1
-
-# ccos
-Test "Imaginary part of: ccos (-0x2p+0 - 0x3p+0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ccos (-0xcp-4 + 0x2.c68p+8 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ccos (-0xcp-4 + 0x5.98p+4 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ccos (-0xcp-4 - 0x2.c68p+8 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ccos (-0xcp-4 - 0x5.98p+4 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ccos (0x4p-1076 + 0x5.ap+8 i)":
-double: 1
-idouble: 1
-Test "Real part of: ccos (0xcp-4 + 0x1.4p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ccos (0xcp-4 + 0x1.4p+0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ccos (0xcp-4 + 0x2.c68p+8 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ccos (0xcp-4 + 0x5.98p+4 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ccos (0xcp-4 - 0x2.c68p+8 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ccos (0xcp-4 - 0x5.98p+4 i)":
-float: 1
-ifloat: 1
-
-# ccosh
-Test "Imaginary part of: ccosh (-0x2.c68p+8 + 0xcp-4 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ccosh (-0x2.c68p+8 - 0xcp-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: ccosh (-0x2p+0 - 0x3p+0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ccosh (-0x2p+0 - 0x3p+0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ccosh (-0x5.98p+4 + 0xcp-4 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ccosh (-0x5.98p+4 - 0xcp-4 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ccosh (0x2.c68p+8 + 0xcp-4 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ccosh (0x2.c68p+8 - 0xcp-4 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ccosh (0x5.98p+4 + 0xcp-4 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ccosh (0x5.98p+4 - 0xcp-4 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ccosh (0x5.ap+8 + 0x4p-1076 i)":
-double: 1
-idouble: 1
-Test "Real part of: ccosh (0xcp-4 + 0x1.4p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ccosh (0xcp-4 + 0x1.4p+0 i)":
-float: 1
-ifloat: 1
-
-# cexp
-Test "Imaginary part of: cexp (-0x2p+0 - 0x3p+0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cexp (-0x5.fp+4 + 0xcp-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: cexp (0x1.f4p+8 + 0x8p+1020 i)":
-double: 1
-idouble: 1
-Test "Real part of: cexp (0x2.c5dp+8 + 0xcp-4 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cexp (0x2.c5dp+8 + 0xcp-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: cexp (0x3.2p+4 + 0x8p+124 i)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "Imaginary part of: cexp (0x3.2p+4 + 0x8p+124 i)":
-double: 1
-idouble: 1
-Test "Real part of: cexp (0x5.8cp+4 + 0xcp-4 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cexp (0x5.8cp+4 + 0xcp-4 i)":
-float: 2
-ifloat: 2
-Test "Imaginary part of: cexp (0x5.ap+8 + 0x4p-1076 i)":
-double: 1
-idouble: 1
-Test "Real part of: cexp (0xcp-4 + 0x1.4p+0 i)":
-float: 1
-ifloat: 1
-
-# clog
-Test "Real part of: clog (+0 + 0x4p-1076 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (-0x1.0000000123456p+0 + +0 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (-0x1.0000000123456p+0 + 0x1.2345678p-1000 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (-0x1.0000000123456p+0 + 0x4.8d1598p-32 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (-0x1.0000000123456p+0 + 0x4.8d159ep-32 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (-0x1.0000000123456p+0 + 0x8p-152 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (-0x1.000002p+0 + +0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (-0x1.000002p+0 + 0x4.8d1598p-32 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: clog (-0x1.000002p+0 + 0x4.8d159ep-32 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (-0x1.000002p+0 + 0x4.8d15ap-32 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: clog (-0x1.000002p+0 + 0x8p-152 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog (-0x1.234566p-40 - 0x1p+0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (-0x8p-152 + 0xf.8p+124 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog (-0x8p-152 + 0xf.8p+124 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog (-0x8p-152 + 0xf.fffffp+124 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (-0x8p-152 - 0xf.8p+124 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog (-0x8p-152 - 0xf.8p+124 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog (-0x8p-152 - 0xf.fffffp+124 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (-0xf.8p+124 + 0x8p-152 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (-0xf.8p+124 - 0x8p-152 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x1.0000000000001p+0 + +0 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x1.0000000000001p+0 + 0x1.234566p-60 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x1.0000000000001p+0 + 0x1.23456789p-1000 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x1.0000000000001p+0 + 0x1.23456789p-60 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x1.0000000000001p+0 + 0x1.234568p-60 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x1.0000000000001p+0 + 0x8p-152 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x1.000002p+0 + +0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x1.000002p+0 + 0x1.234566p-60 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x1.000002p+0 + 0x1.234568p-60 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x1.000002p+0 + 0x8p-152 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x1.000566p+0 + 0x4.8dp-12 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x1.48e45e3268d8p-4 + 0xf.f2c64p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x1.48e45ep-4 + 0xf.f2c63p-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x1.48e45ep-4 + 0xf.f2c64p-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x1.8907bc3694fd4p-4 + 0xf.ed1990460bdf8p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x1.8907bc3694fd5p-4 + 0xf.ed1990460bdf8p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x1.c67eccp-4 + 0xf.e6b4d1d7a6e08p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x1.c67eccp-4 + 0xf.e6b4d1d7a6e1p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x1.c67eccp-4 + 0xf.e6b4ep-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x1.c67ecd92a8594p-4 + 0xf.e6b4dp-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x1.c67ecd92a8594p-4 + 0xf.e6b4ep-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x1.c67ecep-4 + 0xf.e6b4d1d7a6e1p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x1p+0 + 0x4.8d1598p-12 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x2.0ce7ba1e4902p-4 + 0xf.de3a3p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x2.82b794p-4 + 0xf.cd42a15bf9a38p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x2.82b795e420b28p-4 + 0xf.cd42a15bf9a3p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x2p-148 + 0x2p-148 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x3.3b8f94p-4 + 0xf.ab873p-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x3.6e17119fb8aacp-4 + 0xf.a0c58p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x3.6e1714p-4 + 0xf.a0c58a83e57cp-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x3.6e1714p-4 + 0xf.a0c58p-4 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog (0x3.6e1714p-4 + 0xf.a0c58p-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x3.6e1714p-4 + 0xf.a0c59p-4 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog (0x3.6e1714p-4 + 0xf.a0c59p-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x3.bea2bcp-4 + 0xf.8e3d619a8d118p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x3.bea2bd62e35p-4 + 0xf.8e3d6p-4 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog (0x3.bea2cp-4 + 0xf.8e3d6p-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x3.bea2cp-4 + 0xf.8e3d7p-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x3.e1d0a105ac4eap-4 + 0xf.859b3d1b06d08p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x3.e1d0ap-4 + 0xf.859b3d1b06d08p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x3.e1d0ap-4 + 0xf.859b3p-4 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog (0x3.e1d0ap-4 + 0xf.859b4p-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x4.0dbf7d40fe1acp-4 + 0xf.7a5c1af8e3ce8p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x4.0dbf7d40fe1acp-4 + 0xf.7a5c1p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x4.7017a2e36807cp-4 + 0xf.5f4a550c9d758p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x4.7017a8p-4 + 0xf.5f4a550c9d76p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x4.7017a8p-4 + 0xf.5f4a6p-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x4.d9e8c8p-4 + 0xf.3f303p-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x4.d9e8cp-4 + 0xf.3f30281507d8p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x4p-1076 + +0 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x4p-1076 + 0x4p-1076 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog (0x5.03p-4 + 0xf.31ep-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x5.318c596a8cb1p-4 + 0xf.22364p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x5.b06b68p-4 + 0xe.f452b965da9fp-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x5.b06b68p-4 + 0xe.f452bp-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x5.b06b7p-4 + 0xe.f452b965da9fp-4 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog (0x5.b06b7p-4 + 0xe.f452bp-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x6.02fd5037c479p-4 + 0xe.d3e21p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x6.02fd5037c479p-4 + 0xe.d3e2p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x6.02fd58p-4 + 0xe.d3e2086dcca8p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x6.02fd58p-4 + 0xe.d3e21p-4 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog (0x6.02fd5p-4 + 0xe.d3e21p-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x6.1c643068cd128p-4 + 0xe.c97c2p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x6.1c6438p-4 + 0xe.c97c2018b4288p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x6.1c6438p-4 + 0xe.c97c2018b428p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x6.1c6438p-4 + 0xe.c97c3p-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x6.2aff83ae6467cp-4 + 0xe.c36a6p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x6.2aff83ae6468p-4 + 0xe.c36a599a86ba8p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x6.2aff83ae6468p-4 + 0xe.c36a5p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x6.2aff88p-4 + 0xe.c36a599a86ba8p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x6.b10b48p-4 + 0xe.8893cbb44925p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x6.b10b4f3520218p-4 + 0xe.8893dp-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x6.b10b5p-4 + 0xe.8893cbb449258p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x6.b10b5p-4 + 0xe.8893cbb44925p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x7.eca921b40e028p-4 + 0xd.e655fp-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x7.eca928p-4 + 0xd.e655e694e5108p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x7.eca928p-4 + 0xd.e655fp-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x7.f2c8d20a1eca4p-4 + 0xd.e2d66p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x7.f2c8d20a1ecap-4 + 0xd.e2d65p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x7.f2c8d8p-4 + 0xd.e2d65939160b8p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x7.f2c8dp-4 + 0xd.e2d65939160bp-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x7.f4b088p-4 + 0xd.e1bf04f3688p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x8.88faep-4 + 0xd.888bdp-4 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog (0x8.88faep-4 + 0xd.888bdp-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x8.88fafp-4 + 0xd.888bdp-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x8.ecbf810c4ae6p-4 + 0xd.47946p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x8.ecbf8p-4 + 0xd.479468b09a37p-4 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog (0x8.ecbf8p-4 + 0xd.47946p-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x8.ecbf9p-4 + 0xd.479468b09a37p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x8p-152 + 0xf.8p+124 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x8p-152 - 0xf.8p+124 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x9.b386fp-4 + 0xc.b9317p-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x9.c1b6ac509a248p-4 + 0xc.ae53de1d5a7dp-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x9.c1b6ac509a248p-4 + 0xc.ae53ep-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x9.c1b6ac509a24p-4 + 0xc.ae53dp-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x9.c1b6ac509a24p-4 + 0xc.ae53ep-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x9.c1b6ap-4 + 0xc.ae53de1d5a7dp-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x9.c1b6ap-4 + 0xc.ae53dp-4 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog (0x9.c1b6ap-4 + 0xc.ae53ep-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0xa.47c0c65bd4928p-4 + 0xc.42a51p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0xa.47c0cp-4 + 0xc.42a51p-4 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog (0xa.47c0cp-4 + 0xc.42a51p-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0xa.afc57p-4 + 0xb.e867932966df8p-4 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog (0xa.afc58p-4 + 0xb.e867ap-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0xa.b96da19075eap-8 + 0xf.fc679p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0xa.b96dap-8 + 0xf.fc67818f89d2p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0xa.b96dap-8 + 0xf.fc678p-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0xa.b96dap-8 + 0xf.fc679p-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0xa.e7de8cc868ff8p-4 + 0xb.b51cbp-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0xa.e7de8p-4 + 0xb.b51cbp-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0xa.e7de9p-4 + 0xb.b51cb9f04d4dp-4 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog (0xa.e7de9p-4 + 0xb.b51cbp-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0xa.ec55b7682e528p-4 + 0xb.b0f24p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0xa.ec55cp-4 + 0xb.b0f2405504a68p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0xa.ec55cp-4 + 0xb.b0f25p-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0xb.263a77543bp-4 + 0xb.79c9ap-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0xb.263a8p-4 + 0xb.79c9bp-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0xf.8p+124 + 0x8p-152 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0xf.8p+124 - 0x8p-152 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0xf.fffffp+124 + 0x8p+1020 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0xf.fffffp-4 + +0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0xf.fffffp-4 + 0x8p-152 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0xf.fffffp-4 + 0xf.fffffp-104 i)":
-float: 1
-ifloat: 1
-
-# clog10
-Test "Imaginary part of: clog10 (-0 + inf i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (-0 - inf i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: clog10 (-0x1.0000000123456p0 + 0x1.2345678p-1000 i)":
-double: 2
-idouble: 2
-Test "Imaginary part of: clog10 (-0x1.0000000123456p0 + 0x1.2345678p-1000 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog10 (-0x1.0000000123456p0 + 0x1.2345678p-30 i)":
-double: 2
-idouble: 2
-Test "Imaginary part of: clog10 (-0x1.0000000123456p0 + 0x1.2345678p-30 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (-0x1.fp+1023 + 0x1p-1074 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (-0x1.fp+1023 - 0x1p-1074 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (-0x1.fp+127 + 0x1p-149 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (-0x1.fp+127 - 0x1p-149 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (-0x1p-1074 + 0x1.fp+1023 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (-0x1p-1074 - 0x1.fp+1023 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (-0x1p-149 + 0x1.fp+127 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (-0x1p-149 - 0x1.fp+127 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (-1.0 + 0x1.234566p-20 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (-2 - 3 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (-3 + inf i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (-3 - inf i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (-inf + 0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (-inf + 1 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (-inf + inf i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (-inf - 0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (-inf - 1 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (0 + inf i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (0 - inf i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: clog10 (0x0.fffffffffffff8p0 + 0x0.fffffffffffff8p-1000 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog10 (0x0.ffffffp0 + 0x0.ffffffp-100 i)":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-Test "Real part of: clog10 (0x1.000566p0 + 0x1.234p-10 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (0x1.000566p0 + 0x1.234p-10 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog10 (0x1.000566p0 + 0x1.234p-100 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (0x1.234566p-30 + 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (0x1.234566p-50 + 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (0x1.234566p-60 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (0x1.fffffep+127 + 0x1.fffffep+127 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: clog10 (0x1.fffffep+127 + 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (0x1.fffffffffffffp+1023 + 0x1.fffffffffffffp+1023 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog10 (0x10673dd0f2481p-51 + 0x7ef1d17cefbd2p-51 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog10 (0x1367a310575591p-54 + 0x3cfcc0a0541f60p-54 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (0x1367a310575591p-54 + 0x3cfcc0a0541f60p-54 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (0x164c74eea876p-45 + 0x16f393482f77p-45 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (0x1a6p-10 + 0x3a5p-10 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (0x1p-1073 + 0x1p-1073 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (0x1p-1074 + 0x1.fp+1023 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog10 (0x1p-1074 + 0x1p-1074 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (0x1p-1074 + 0x1p-1074 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (0x1p-1074 - 0x1.fp+1023 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (0x1p-147 + 0x1p-147 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (0x1p-149 + 0x1.fp+127 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (0x1p-149 + 0x1p-149 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (0x1p-149 - 0x1.fp+127 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (0x1p-509 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (0x1p-510 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (0x1p-511 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (0x1p-61 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (0x1p-62 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (0x1p-63 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: clog10 (0x2818p-15 + 0x798fp-15 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (0x2818p-15 + 0x798fp-15 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog10 (0x2dd46725bp-35 + 0x7783a1284p-35 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog10 (0x2ede88p-23 + 0x771c3fp-23 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (0x2ede88p-23 + 0x771c3fp-23 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog10 (0x4447d7175p-35 + 0x6c445e00ap-35 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (0x5b06b680ea2ccp-52 + 0xef452b965da9fp-52 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (0x9b57bp-20 + 0xcb7b4p-20 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog10 (0xf2p-10 + 0x3e3p-10 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (0xf2p-10 + 0x3e3p-10 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (0xfe961079616p-45 + 0x1bc37e09e6d1p-45 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (1.0 + 0x1.234566p-10 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (3 + inf i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (3 - inf i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (inf + inf i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (inf - inf i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-# cos
-Test "cos (0x1p+120)":
-float: 1
-ifloat: 1
-Test "cos (0x7p+0)":
-float: 1
-ifloat: 1
-Test "cos (0x8p+124)":
-float: 1
-ifloat: 1
-Test "cos (0xc.d4967p-4)":
-float: 1
-ifloat: 1
-
-# cos_downward
-Test "cos_downward (-0x4p-1024)":
-double: 1
-idouble: 1
-Test "cos_downward (-0x4p-1076)":
-double: 1
-idouble: 1
-Test "cos_downward (-0x4p-128)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "cos_downward (-0x8p-152)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "cos_downward (-0x8p-972)":
-double: 1
-idouble: 1
-Test "cos_downward (-0xf.ffffffffffff8p+1020)":
-double: 1
-idouble: 1
-Test "cos_downward (-0xf.fffffp+124)":
-double: 1
-idouble: 1
-Test "cos_downward (0x1.000000cf4a2a2p+0)":
-double: 1
-idouble: 1
-Test "cos_downward (0x1.0000010b239a9p+0)":
-double: 1
-idouble: 1
-Test "cos_downward (0x1.00000162a932bp+0)":
-double: 1
-idouble: 1
-Test "cos_downward (0x1.000002d452a1p+0)":
-double: 1
-idouble: 1
-Test "cos_downward (0x1.000002p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "cos_downward (0x1.000004p+0)":
-float: 1
-ifloat: 1
-Test "cos_downward (0x1.000006p+0)":
-float: 1
-ifloat: 1
-Test "cos_downward (0x1.0c1522p+0)":
-float: 1
-ifloat: 1
-Test "cos_downward (0x1.0c152382d7365p+0)":
-double: 1
-idouble: 1
-Test "cos_downward (0x1.0c1524p+0)":
-float: 1
-ifloat: 1
-Test "cos_downward (0x1.921fb4p+0)":
-float: 1
-ifloat: 1
-Test "cos_downward (0x1.921fb54442d18p+0)":
-double: 1
-idouble: 1
-Test "cos_downward (0x1.921fb6p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "cos_downward (0x1p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "cos_downward (0x1p+120)":
-float: 2
-ifloat: 2
-Test "cos_downward (0x1p+28)":
-double: 1
-idouble: 1
-Test "cos_downward (0x2.182a44p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "cos_downward (0x2.182a4705ae6cap+0)":
-double: 1
-idouble: 1
-Test "cos_downward (0x2.182a48p+0)":
-float: 1
-ifloat: 1
-Test "cos_downward (0x2.1e19e0c9bab24p+72)":
-double: 1
-idouble: 1
-Test "cos_downward (0x2.1e19e4p+72)":
-double: 1
-idouble: 1
-Test "cos_downward (0x2.1e19ep+72)":
-double: 1
-idouble: 1
-Test "cos_downward (0x2p+0)":
-float: 1
-ifloat: 1
-Test "cos_downward (0x3p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "cos_downward (0x4p+48)":
-double: 1
-idouble: 1
-Test "cos_downward (0x4p-1024)":
-double: 1
-idouble: 1
-Test "cos_downward (0x4p-1076)":
-double: 1
-idouble: 1
-Test "cos_downward (0x4p-128)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "cos_downward (0x8p+0)":
-float: 1
-ifloat: 1
-Test "cos_downward (0x8p-152)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "cos_downward (0x8p-972)":
-double: 1
-idouble: 1
-Test "cos_downward (0x9p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "cos_downward (0xa.217bap+12)":
-float: 1
-ifloat: 1
-Test "cos_downward (0xap+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "cos_downward (0xc.d4966d92d1708p-4)":
-double: 1
-idouble: 1
-Test "cos_downward (0xc.d4966d92d171p-4)":
-double: 1
-idouble: 1
-Test "cos_downward (0xc.d4966p-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "cos_downward (0xc.d4967p-4)":
-float: 1
-ifloat: 1
-Test "cos_downward (0xcp-4)":
-double: 1
-idouble: 1
-Test "cos_downward (0xf.ffffffffffff8p+1020)":
-double: 1
-idouble: 1
-Test "cos_downward (0xf.fffffp+124)":
-double: 1
-idouble: 1
-
-# cos_tonearest
-Test "cos_tonearest (0x1p+120)":
-float: 1
-ifloat: 1
-Test "cos_tonearest (0x7p+0)":
-float: 1
-ifloat: 1
-Test "cos_tonearest (0x8p+124)":
-float: 1
-ifloat: 1
-Test "cos_tonearest (0xc.d4967p-4)":
-float: 1
-ifloat: 1
-
-# cos_towardzero
-Test "cos_towardzero (-0x4p-1024)":
-double: 1
-idouble: 1
-Test "cos_towardzero (-0x4p-1076)":
-double: 1
-idouble: 1
-Test "cos_towardzero (-0x4p-128)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "cos_towardzero (-0x8p-152)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "cos_towardzero (-0x8p-972)":
-double: 1
-idouble: 1
-Test "cos_towardzero (-0xf.fffffp+124)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x1.000000cf4a2a2p+0)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x1.0000010b239a9p+0)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x1.00000162a932bp+0)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x1.000002d452a1p+0)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x1.000002p+0)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x1.0c152382d7365p+0)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x1.921fb54442d18p+0)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x1.921fb54442d19p+0)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x1p+0)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x1p+120)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "cos_towardzero (0x2.182a4705ae6ccp+0)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x2.182a48p+0)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x2.1e19e0c9bab24p+72)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x2.1e19e4p+72)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x2.1e19ep+72)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x2p+0)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x4p+0)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x4p+48)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x4p-1024)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x4p-1076)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x4p-128)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "cos_towardzero (0x8p+0)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x8p+1020)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x8p-152)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "cos_towardzero (0x8p-972)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0xc.d4966d92d1708p-4)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0xc.d4966d92d171p-4)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0xc.d4966p-4)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0xcp-4)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0xf.fffffp+124)":
-double: 1
-idouble: 1
-
-# cos_upward
-Test "cos_upward (-0x2p+64)":
-double: 1
-idouble: 1
-Test "cos_upward (0x1.000002p+0)":
-float: 1
-ifloat: 1
-Test "cos_upward (0x1.000004p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "cos_upward (0x1.000005bc7d86dp+0)":
-double: 1
-idouble: 1
-Test "cos_upward (0x1.000006p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "cos_upward (0x1.0c1522p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "cos_upward (0x1.0c152382d7366p+0)":
-double: 1
-idouble: 1
-Test "cos_upward (0x1.0c1524p+0)":
-double: 1
-idouble: 1
-Test "cos_upward (0x1.921fb4p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "cos_upward (0x1.921fb54442d19p+0)":
-double: 1
-idouble: 1
-Test "cos_upward (0x1.921fb6p+0)":
-float: 1
-ifloat: 1
-Test "cos_upward (0x1p+0)":
-float: 1
-ifloat: 1
-Test "cos_upward (0x1p+120)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "cos_upward (0x2.182a44p+0)":
-float: 1
-ifloat: 1
-Test "cos_upward (0x2.182a4705ae6ccp+0)":
-double: 1
-idouble: 1
-Test "cos_upward (0x2.182a48p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "cos_upward (0x2.1e19e4p+72)":
-float: 1
-ifloat: 1
-Test "cos_upward (0x2p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "cos_upward (0x2p+64)":
-double: 1
-idouble: 1
-Test "cos_upward (0x3p+0)":
-float: 1
-ifloat: 1
-Test "cos_upward (0x4p+0)":
-double: 1
-idouble: 1
-Test "cos_upward (0x5p+0)":
-double: 1
-idouble: 1
-Test "cos_upward (0x6p+0)":
-double: 1
-idouble: 1
-Test "cos_upward (0x7p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "cos_upward (0x8p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "cos_upward (0x8p+1020)":
-double: 1
-idouble: 1
-Test "cos_upward (0x8p+124)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "cos_upward (0x9p+0)":
-float: 2
-ifloat: 2
-Test "cos_upward (0xa.217bap+12)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "cos_upward (0xap+0)":
-float: 1
-ifloat: 1
-Test "cos_upward (0xc.d4966p-4)":
-float: 1
-ifloat: 1
-Test "cos_upward (0xc.d4967p-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "cos_upward (0xf.ffffcp+124)":
-double: 1
-idouble: 1
-
-# cosh
-Test "cosh (-0x1p+0)":
-float: 1
-ifloat: 1
-Test "cosh (-0x2.c5e3acp+8)":
-double: 1
-idouble: 1
-Test "cosh (-0x2.c679dp+8)":
-double: 1
-idouble: 1
-Test "cosh (0x2.c5e3acp+8)":
-double: 1
-idouble: 1
-Test "cosh (0x2.c679dp+8)":
-double: 1
-idouble: 1
-
-# cosh_downward
-Test "cosh_downward (-0x2.c5e3bp+8)":
-double: 1
-idouble: 1
-Test "cosh_downward (-0x2.c679d1f73f0fap+8)":
-double: 1
-idouble: 1
-Test "cosh_downward (-0x2.c679dp+8)":
-double: 1
-idouble: 1
-Test "cosh_downward (-0x5.96a7ep+4)":
-float: 1
-ifloat: 1
-Test "cosh_downward (0x1.6p+4)":
-double: 1
-idouble: 1
-Test "cosh_downward (0x1.7p+4)":
-double: 1
-idouble: 1
-Test "cosh_downward (0x2.c5e3bp+8)":
-double: 1
-idouble: 1
-Test "cosh_downward (0x2.c679d1f73f0fap+8)":
-double: 1
-idouble: 1
-Test "cosh_downward (0x2.c679dp+8)":
-double: 1
-idouble: 1
-Test "cosh_downward (0x5.96a7ep+4)":
-float: 1
-ifloat: 1
-
-# cosh_tonearest
-Test "cosh_tonearest (-0x1p+0)":
-float: 1
-ifloat: 1
-Test "cosh_tonearest (-0x2.c5e3acp+8)":
-double: 1
-idouble: 1
-Test "cosh_tonearest (-0x2.c679dp+8)":
-double: 1
-idouble: 1
-Test "cosh_tonearest (0x2.c5e3acp+8)":
-double: 1
-idouble: 1
-Test "cosh_tonearest (0x2.c679dp+8)":
-double: 1
-idouble: 1
-
-# cosh_towardzero
-Test "cosh_towardzero (-0x2.c5e3bp+8)":
-double: 1
-idouble: 1
-Test "cosh_towardzero (-0x2.c679d1f73f0fap+8)":
-double: 1
-idouble: 1
-Test "cosh_towardzero (-0x2.c679dp+8)":
-double: 1
-idouble: 1
-Test "cosh_towardzero (-0x5.96a7ep+4)":
-float: 1
-ifloat: 1
-Test "cosh_towardzero (0x1.6p+4)":
-double: 1
-idouble: 1
-Test "cosh_towardzero (0x1.7p+4)":
-double: 1
-idouble: 1
-Test "cosh_towardzero (0x2.c5e3bp+8)":
-double: 1
-idouble: 1
-Test "cosh_towardzero (0x2.c679d1f73f0fap+8)":
-double: 1
-idouble: 1
-Test "cosh_towardzero (0x2.c679dp+8)":
-double: 1
-idouble: 1
-Test "cosh_towardzero (0x5.96a7ep+4)":
-float: 1
-ifloat: 1
-
-# cosh_upward
-Test "cosh_upward (-0x1p+0)":
-float: 1
-ifloat: 1
-Test "cosh_upward (-0x2.c5e3bp+8)":
-double: 1
-idouble: 1
-Test "cosh_upward (-0x2.c679d1f73f0fap+8)":
-double: 1
-idouble: 1
-Test "cosh_upward (-0x2.c679dp+8)":
-double: 1
-idouble: 1
-Test "cosh_upward (-0x5.96a7e8p+4)":
-double: 1
-idouble: 1
-Test "cosh_upward (-0x5.96a7ep+4)":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-Test "cosh_upward (0x1.8p+4)":
-double: 1
-idouble: 1
-Test "cosh_upward (0x2.c5e3bp+8)":
-double: 1
-idouble: 1
-Test "cosh_upward (0x2.c679d1f73f0fap+8)":
-double: 1
-idouble: 1
-Test "cosh_upward (0x2.c679dp+8)":
-double: 1
-idouble: 1
-Test "cosh_upward (0x3.2p+4)":
-double: 1
-idouble: 1
-Test "cosh_upward (0x5.96a7e8p+4)":
-double: 1
-idouble: 1
-Test "cosh_upward (0x5.96a7ep+4)":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-
-# cpow
-Test "Real part of: cpow (0x2p+0 + 0x3p+0 i, 0x4p+0 + +0 i)":
-double: 1
-float: 4
-idouble: 1
-ifloat: 4
-Test "Imaginary part of: cpow (0x2p+0 + 0x3p+0 i, 0x4p+0 + +0 i)":
-float: 2
-ifloat: 2
-Test "Real part of: cpow (0xcp-4 + 0x1.4p+0 i, +0 + 0x1p+0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cpow (0xcp-4 + 0x1.4p+0 i, 0x1p+0 + 0x1p+0 i)":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-Test "Real part of: cpow (0xcp-4 + 0x1.4p+0 i, 0xcp-4 + 0x1.4p+0 i)":
-double: 1
-float: 4
-idouble: 1
-ifloat: 4
-
-# csin
-Test "Real part of: csin (-0.75 + 710.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: csin (-0.75 + 89.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: csin (-0.75 - 710.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: csin (-0.75 - 89.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: csin (0.75 + 710.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: csin (0.75 + 89.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: csin (0.75 - 710.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: csin (0.75 - 89.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: csin (0x1p-1074 + 1440 i)":
-double: 1
-idouble: 1
-
-# csinh
-Test "Imaginary part of: csinh (-2 - 3 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: csinh (-710.5 + 0.75 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: csinh (-710.5 - 0.75 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: csinh (-89.5 + 0.75 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: csinh (-89.5 - 0.75 i)":
-float: 1
-ifloat: 1
-Test "Real part of: csinh (0.75 + 1.25 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: csinh (0.75 + 1.25 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: csinh (1440 + 0x1p-1074 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: csinh (710.5 + 0.75 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: csinh (710.5 - 0.75 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: csinh (89.5 + 0.75 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: csinh (89.5 - 0.75 i)":
-float: 1
-ifloat: 1
-
-# csqrt
-Test "Real part of: csqrt (-0x2p+0 + 0x3p+0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: csqrt (-0x2p+0 - 0x3p+0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: csqrt (-0x4.000008p-128 - 0x4.000008p-128 i)":
-double: 1
-idouble: 1
-Test "Real part of: csqrt (-0x8p-152 - 0x4p-1076 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: csqrt (0x4.000008p-128 + 0x4.000008p-128 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: csqrt (0x4p-1076 + 0xf.fffffp+124 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: csqrt (0x8p+1020 + 0x8p-152 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: csqrt (0x8p+124 + 0x8p-152 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: csqrt (0x8p-152 + 0x4p-1076 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: csqrt (0x8p-152 + 0x8p-1076 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: csqrt (0x8p-152 + 0xf.fffffp+124 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: csqrt (0xf.ffffffffffff8p+1020 + 0x8p+1020 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: csqrt (0xf.ffffffffffff8p+1020 + 0x8p-152 i)":
-double: 1
-idouble: 1
-Test "Real part of: csqrt (0xf.ffffffffffff8p+1020 + 0xf.ffffffffffff8p+1020 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: csqrt (0xf.ffffffffffff8p+1020 + 0xf.ffffffffffff8p+1020 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: csqrt (0xf.ffffffffffff8p+1020 + 0xf.fffffp+124 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: csqrt (0xf.fffffp+124 + 0x1p+0 i)":
-float: 1
-ifloat: 1
-
-# ctan
-Test "Real part of: ctan (-0x2p+0 - 0x3p+0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ctan (-0x2p+0 - 0x3p+0 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctan (0x1.921fb4p+0 + +0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: ctan (0x1.921fb4p+0 + 0x4p-1076 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctan (0x1.921fb4p+0 + 0x4p-1076 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctan (0x1.921fb4p+0 + 0x8p-152 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ctan (0x1.921fb4p+0 + 0x8p-152 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctan (0x1.921fb54442d19p+0 + +0 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctan (0x1.921fb54442d19p+0 + 0x4p-1076 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctan (0x1.921fb54442d19p+0 + 0x4p-1076 i)":
-double: 2
-idouble: 2
-Test "Real part of: ctan (0x1.921fb54442d19p+0 + 0x8p-152 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctan (0x1.921fb54442d19p+0 + 0x8p-152 i)":
-double: 2
-idouble: 2
-Test "Real part of: ctan (0x1.921fb6p+0 + +0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: ctan (0x1.921fb6p+0 + 0x8p-152 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ctan (0x1.921fb6p+0 + 0x8p-152 i)":
-float: 1
-ifloat: 1
-Test "Real part of: ctan (0x8p+1020 + 0x1p+0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctan (0x8p+124 + 0x1p+0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctan (0xcp-4 + 0x1.4p+0 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctan (0xf.ffffffffffff8p+1020 + 0x1p+0 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctan (0xf.fffffp+124 + 0x1p+0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctan (0xf.fffffp+124 + 0x1p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-# ctan_downward
-Test "Real part of: ctan_downward (-0x2p+0 - 0x3p+0 i)":
-double: 3
-idouble: 3
-Test "Imaginary part of: ctan_downward (-0x2p+0 - 0x3p+0 i)":
-double: 2
-idouble: 2
-Test "Real part of: ctan_downward (0x1.921fb4p+0 + +0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: ctan_downward (0x1.921fb4p+0 + 0x8p-152 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ctan_downward (0x1.921fb4p+0 + 0x8p-152 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctan_downward (0x1.921fb54442d18p+0 + +0 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctan_downward (0x1.921fb54442d18p+0 + 0x4p-1076 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctan_downward (0x1.921fb54442d18p+0 + 0x8p-152 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctan_downward (0x1.921fb6p+0 + +0 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctan_downward (0x1.921fb6p+0 + 0x4p-1076 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctan_downward (0x1.921fb6p+0 + 0x8p-152 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctan_downward (0x1.921fb6p+0 + 0x8p-152 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: ctan_downward (0x1p+0 + 0x2.dp+4 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: ctan_downward (0x8p+1020 + 0x1p+0 i)":
-double: 6
-idouble: 6
-Test "Real part of: ctan_downward (0x8p+124 + 0x1p+0 i)":
-double: 4
-float: 3
-idouble: 4
-ifloat: 3
-Test "Imaginary part of: ctan_downward (0x8p+124 + 0x1p+0 i)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "Real part of: ctan_downward (0xcp-4 + 0x1.4p+0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: ctan_downward (0xf.ffffffffffff8p+1020 + 0x1p+0 i)":
-double: 3
-idouble: 3
-Test "Real part of: ctan_downward (0xf.fffffp+124 + 0x1p+0 i)":
-double: 5
-float: 5
-idouble: 5
-ifloat: 5
-Test "Imaginary part of: ctan_downward (0xf.fffffp+124 + 0x1p+0 i)":
-double: 1
-idouble: 1
-
-# ctan_tonearest
-Test "Real part of: ctan_tonearest (-0x2p+0 - 0x3p+0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ctan_tonearest (-0x2p+0 - 0x3p+0 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctan_tonearest (0x1.921fb4p+0 + +0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: ctan_tonearest (0x1.921fb4p+0 + 0x4p-1076 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctan_tonearest (0x1.921fb4p+0 + 0x4p-1076 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctan_tonearest (0x1.921fb4p+0 + 0x8p-152 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ctan_tonearest (0x1.921fb4p+0 + 0x8p-152 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctan_tonearest (0x1.921fb54442d19p+0 + +0 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctan_tonearest (0x1.921fb54442d19p+0 + 0x4p-1076 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctan_tonearest (0x1.921fb54442d19p+0 + 0x4p-1076 i)":
-double: 2
-idouble: 2
-Test "Real part of: ctan_tonearest (0x1.921fb54442d19p+0 + 0x8p-152 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctan_tonearest (0x1.921fb54442d19p+0 + 0x8p-152 i)":
-double: 2
-idouble: 2
-Test "Real part of: ctan_tonearest (0x1.921fb6p+0 + +0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: ctan_tonearest (0x1.921fb6p+0 + 0x8p-152 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ctan_tonearest (0x1.921fb6p+0 + 0x8p-152 i)":
-float: 1
-ifloat: 1
-Test "Real part of: ctan_tonearest (0x8p+1020 + 0x1p+0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctan_tonearest (0x8p+124 + 0x1p+0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctan_tonearest (0xcp-4 + 0x1.4p+0 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctan_tonearest (0xf.ffffffffffff8p+1020 + 0x1p+0 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctan_tonearest (0xf.fffffp+124 + 0x1p+0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctan_tonearest (0xf.fffffp+124 + 0x1p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-# ctan_towardzero
-Test "Real part of: ctan_towardzero (-0x2p+0 - 0x3p+0 i)":
-double: 5
-float: 3
-idouble: 5
-ifloat: 3
-Test "Imaginary part of: ctan_towardzero (-0x2p+0 - 0x3p+0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctan_towardzero (-0xc.35p+12 - 0xc.35p+12 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: ctan_towardzero (0x1.921fb4p+0 + +0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: ctan_towardzero (0x1.921fb4p+0 + 0x8p-152 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ctan_towardzero (0x1.921fb4p+0 + 0x8p-152 i)":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-Test "Real part of: ctan_towardzero (0x1.921fb54442d18p+0 + +0 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctan_towardzero (0x1.921fb54442d18p+0 + 0x4p-1076 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctan_towardzero (0x1.921fb54442d18p+0 + 0x8p-152 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctan_towardzero (0x1.921fb6p+0 + +0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: ctan_towardzero (0x1.921fb6p+0 + 0x8p-152 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ctan_towardzero (0x1.921fb6p+0 + 0x8p-152 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: ctan_towardzero (0x1p+0 + 0x2.dp+4 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctan_towardzero (0x8p+1020 + 0x1p+0 i)":
-double: 5
-idouble: 5
-Test "Real part of: ctan_towardzero (0x8p+124 + 0x1p+0 i)":
-double: 4
-float: 3
-idouble: 4
-ifloat: 3
-Test "Imaginary part of: ctan_towardzero (0x8p+124 + 0x1p+0 i)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "Imaginary part of: ctan_towardzero (0xc.35p+12 - 0xc.35p+12 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: ctan_towardzero (0xcp-4 + 0x1.4p+0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: ctan_towardzero (0xf.ffffffffffff8p+1020 + 0x1p+0 i)":
-double: 2
-idouble: 2
-Test "Real part of: ctan_towardzero (0xf.fffffp+124 + 0x1p+0 i)":
-double: 4
-float: 2
-idouble: 4
-ifloat: 2
-Test "Imaginary part of: ctan_towardzero (0xf.fffffp+124 + 0x1p+0 i)":
-double: 1
-idouble: 1
-
-# ctan_upward
-Test "Real part of: ctan_upward (-0x2p+0 - 0x3p+0 i)":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-Test "Imaginary part of: ctan_upward (-0x2p+0 - 0x3p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ctan_upward (-0xc.35p+12 + 0xc.35p+12 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ctan_upward (-0xc.35p+12 - 0xc.35p+12 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: ctan_upward (0x1.921fb4p+0 + +0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: ctan_upward (0x1.921fb4p+0 + 0x8p-152 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ctan_upward (0x1.921fb4p+0 + 0x8p-152 i)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "Real part of: ctan_upward (0x1.921fb54442d18p+0 + +0 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctan_upward (0x1.921fb54442d18p+0 + 0x4p-1076 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctan_upward (0x1.921fb54442d18p+0 + 0x4p-1076 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctan_upward (0x1.921fb54442d18p+0 + 0x8p-152 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctan_upward (0x1.921fb54442d19p+0 + +0 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctan_upward (0x1.921fb54442d19p+0 + 0x4p-1076 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctan_upward (0x1.921fb54442d19p+0 + 0x4p-1076 i)":
-double: 2
-idouble: 2
-Test "Real part of: ctan_upward (0x1.921fb54442d19p+0 + 0x8p-152 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctan_upward (0x1.921fb6p+0 + +0 i)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "Real part of: ctan_upward (0x1.921fb6p+0 + 0x4p-1076 i)":
-double: 2
-idouble: 2
-Test "Real part of: ctan_upward (0x1.921fb6p+0 + 0x8p-152 i)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "Imaginary part of: ctan_upward (0x1.921fb6p+0 + 0x8p-152 i)":
-double: 1
-float: 3
-idouble: 1
-ifloat: 3
-Test "Imaginary part of: ctan_upward (0x1p+0 + 0x1.63ap+12 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ctan_upward (0x1p+0 + 0x1.63p+12 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ctan_upward (0x1p+0 + 0x1.63p+8 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ctan_upward (0x1p+0 + 0x1.6dp+8 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: ctan_upward (0x1p+0 + 0x2.dp+4 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ctan_upward (0x1p+0 + 0x2.dp+4 i)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "Real part of: ctan_upward (0x1p+0 + 0x2.fp+4 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctan_upward (0x1p+0 + 0x2.fp+4 i)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "Real part of: ctan_upward (0x8p+1020 + 0x1p+0 i)":
-double: 2
-idouble: 2
-Test "Imaginary part of: ctan_upward (0x8p+1020 + 0x1p+0 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctan_upward (0x8p+124 + 0x1p+0 i)":
-double: 2
-idouble: 2
-Test "Imaginary part of: ctan_upward (0x8p+124 + 0x1p+0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctan_upward (0xc.35p+12 + 0xc.35p+12 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ctan_upward (0xc.35p+12 - 0xc.35p+12 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: ctan_upward (0xcp-4 + 0x1.4p+0 i)":
-double: 2
-idouble: 2
-Test "Imaginary part of: ctan_upward (0xcp-4 + 0x1.4p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: ctan_upward (0xf.ffffffffffff8p+1020 + 0x1p+0 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctan_upward (0xf.fffffp+124 + 0x1p+0 i)":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-
-# ctanh
-Test "Imaginary part of: ctanh (+0 + 0x1.921fb4p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ctanh (+0 + 0x1.921fb54442d19p+0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctanh (+0 + 0x1.921fb6p+0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ctanh (+0 + 0xc.90fdaa22168cp-4 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctanh (+0 + 0xc.90fdap-4 i)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "Imaginary part of: ctanh (+0 + 0xc.90fdbp-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: ctanh (-0x2p+0 - 0x3p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ctanh (-0x2p+0 - 0x3p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ctanh (0x1p+0 + 0x8p+1020 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctanh (0x1p+0 + 0x8p+124 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctanh (0x1p+0 + 0xf.ffffffffffff8p+1020 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctanh (0x1p+0 + 0xf.fffffp+124 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ctanh (0x1p+0 + 0xf.fffffp+124 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctanh (0x4p-1076 + 0x1.921fb4p+0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctanh (0x4p-1076 + 0x1.921fb4p+0 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctanh (0x4p-1076 + 0x1.921fb54442d19p+0 i)":
-double: 2
-idouble: 2
-Test "Imaginary part of: ctanh (0x4p-1076 + 0x1.921fb54442d19p+0 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctanh (0x8p-152 + 0x1.921fb4p+0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctanh (0x8p-152 + 0x1.921fb4p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: ctanh (0x8p-152 + 0x1.921fb54442d19p+0 i)":
-double: 2
-idouble: 2
-Test "Imaginary part of: ctanh (0x8p-152 + 0x1.921fb54442d19p+0 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctanh (0x8p-152 + 0x1.921fb6p+0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ctanh (0x8p-152 + 0x1.921fb6p+0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: ctanh (0xcp-4 + 0x1.4p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ctanh (0xcp-4 + 0x1.4p+0 i)":
-float: 2
-ifloat: 2
-
-# ctanh_downward
-Test "Imaginary part of: ctanh_downward (+0 + 0x1.921fb4p+0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ctanh_downward (+0 + 0x1.921fb54442d18p+0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctanh_downward (+0 + 0x1.921fb6p+0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctanh_downward (+0 + 0xc.90fdap-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: ctanh_downward (-0x2p+0 - 0x3p+0 i)":
-double: 4
-float: 1
-idouble: 4
-ifloat: 1
-Test "Imaginary part of: ctanh_downward (-0x2p+0 - 0x3p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ctanh_downward (0x1p+0 + 0x8p+1020 i)":
-double: 6
-idouble: 6
-Test "Real part of: ctanh_downward (0x1p+0 + 0x8p+124 i)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "Imaginary part of: ctanh_downward (0x1p+0 + 0x8p+124 i)":
-double: 4
-float: 3
-idouble: 4
-ifloat: 3
-Test "Imaginary part of: ctanh_downward (0x1p+0 + 0xf.ffffffffffff8p+1020 i)":
-double: 3
-idouble: 3
-Test "Real part of: ctanh_downward (0x1p+0 + 0xf.fffffp+124 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctanh_downward (0x1p+0 + 0xf.fffffp+124 i)":
-double: 5
-float: 5
-idouble: 5
-ifloat: 5
-Test "Imaginary part of: ctanh_downward (0x2.dp+4 + 0x1p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ctanh_downward (0x4p-1076 + 0x1.921fb54442d18p+0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctanh_downward (0x4p-1076 + 0x1.921fb6p+0 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctanh_downward (0x8p-152 + 0x1.921fb4p+0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctanh_downward (0x8p-152 + 0x1.921fb4p+0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ctanh_downward (0x8p-152 + 0x1.921fb54442d18p+0 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctanh_downward (0x8p-152 + 0x1.921fb6p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ctanh_downward (0x8p-152 + 0x1.921fb6p+0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctanh_downward (0xcp-4 + 0x1.4p+0 i)":
-double: 1
-idouble: 1
-
-# ctanh_tonearest
-Test "Imaginary part of: ctanh_tonearest (+0 + 0x1.921fb4p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ctanh_tonearest (+0 + 0x1.921fb54442d19p+0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctanh_tonearest (+0 + 0x1.921fb6p+0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ctanh_tonearest (+0 + 0xc.90fdaa22168cp-4 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctanh_tonearest (+0 + 0xc.90fdap-4 i)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "Imaginary part of: ctanh_tonearest (+0 + 0xc.90fdbp-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: ctanh_tonearest (-0x2p+0 - 0x3p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ctanh_tonearest (-0x2p+0 - 0x3p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ctanh_tonearest (0x1p+0 + 0x8p+1020 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctanh_tonearest (0x1p+0 + 0x8p+124 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctanh_tonearest (0x1p+0 + 0xf.ffffffffffff8p+1020 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctanh_tonearest (0x1p+0 + 0xf.fffffp+124 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ctanh_tonearest (0x1p+0 + 0xf.fffffp+124 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctanh_tonearest (0x4p-1076 + 0x1.921fb4p+0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctanh_tonearest (0x4p-1076 + 0x1.921fb4p+0 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctanh_tonearest (0x4p-1076 + 0x1.921fb54442d19p+0 i)":
-double: 2
-idouble: 2
-Test "Imaginary part of: ctanh_tonearest (0x4p-1076 + 0x1.921fb54442d19p+0 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctanh_tonearest (0x8p-152 + 0x1.921fb4p+0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctanh_tonearest (0x8p-152 + 0x1.921fb4p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: ctanh_tonearest (0x8p-152 + 0x1.921fb54442d19p+0 i)":
-double: 2
-idouble: 2
-Test "Imaginary part of: ctanh_tonearest (0x8p-152 + 0x1.921fb54442d19p+0 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctanh_tonearest (0x8p-152 + 0x1.921fb6p+0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ctanh_tonearest (0x8p-152 + 0x1.921fb6p+0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: ctanh_tonearest (0xcp-4 + 0x1.4p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ctanh_tonearest (0xcp-4 + 0x1.4p+0 i)":
-float: 2
-ifloat: 2
-
-# ctanh_towardzero
-Test "Imaginary part of: ctanh_towardzero (+0 + 0x1.921fb4p+0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ctanh_towardzero (+0 + 0x1.921fb54442d18p+0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctanh_towardzero (+0 + 0x1.921fb6p+0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: ctanh_towardzero (-0x2p+0 - 0x3p+0 i)":
-double: 2
-idouble: 2
-Test "Imaginary part of: ctanh_towardzero (-0x2p+0 - 0x3p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: ctanh_towardzero (-0xc.35p+12 + 0xc.35p+12 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: ctanh_towardzero (-0xc.35p+12 - 0xc.35p+12 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ctanh_towardzero (0x1p+0 + 0x8p+1020 i)":
-double: 5
-idouble: 5
-Test "Real part of: ctanh_towardzero (0x1p+0 + 0x8p+124 i)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "Imaginary part of: ctanh_towardzero (0x1p+0 + 0x8p+124 i)":
-double: 4
-float: 3
-idouble: 4
-ifloat: 3
-Test "Imaginary part of: ctanh_towardzero (0x1p+0 + 0xf.ffffffffffff8p+1020 i)":
-double: 2
-idouble: 2
-Test "Real part of: ctanh_towardzero (0x1p+0 + 0xf.fffffp+124 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctanh_towardzero (0x1p+0 + 0xf.fffffp+124 i)":
-double: 4
-float: 2
-idouble: 4
-ifloat: 2
-Test "Imaginary part of: ctanh_towardzero (0x2.dp+4 + 0x1p+0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctanh_towardzero (0x4p-1076 + 0x1.921fb54442d18p+0 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctanh_towardzero (0x8p-152 + 0x1.921fb4p+0 i)":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-Test "Imaginary part of: ctanh_towardzero (0x8p-152 + 0x1.921fb4p+0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ctanh_towardzero (0x8p-152 + 0x1.921fb54442d18p+0 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctanh_towardzero (0x8p-152 + 0x1.921fb6p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ctanh_towardzero (0x8p-152 + 0x1.921fb6p+0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ctanh_towardzero (0xcp-4 + 0x1.4p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-# ctanh_upward
-Test "Imaginary part of: ctanh_upward (+0 + 0x1.921fb4p+0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ctanh_upward (+0 + 0x1.921fb54442d18p+0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctanh_upward (+0 + 0x1.921fb54442d19p+0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctanh_upward (+0 + 0x1.921fb6p+0 i)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "Imaginary part of: ctanh_upward (+0 + 0xc.90fdap-4 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ctanh_upward (+0 + 0xc.90fdbp-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: ctanh_upward (-0x2p+0 - 0x3p+0 i)":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-Test "Imaginary part of: ctanh_upward (-0x2p+0 - 0x3p+0 i)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "Real part of: ctanh_upward (-0xc.35p+12 + 0xc.35p+12 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: ctanh_upward (-0xc.35p+12 - 0xc.35p+12 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: ctanh_upward (0x1.63ap+12 + 0x1p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: ctanh_upward (0x1.63p+12 + 0x1p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: ctanh_upward (0x1.63p+8 + 0x1p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: ctanh_upward (0x1.6dp+8 + 0x1p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: ctanh_upward (0x1p+0 + 0x8p+1020 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctanh_upward (0x1p+0 + 0x8p+1020 i)":
-double: 2
-idouble: 2
-Test "Real part of: ctanh_upward (0x1p+0 + 0x8p+124 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctanh_upward (0x1p+0 + 0x8p+124 i)":
-double: 2
-idouble: 2
-Test "Imaginary part of: ctanh_upward (0x1p+0 + 0xf.ffffffffffff8p+1020 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctanh_upward (0x1p+0 + 0xf.fffffp+124 i)":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-Test "Real part of: ctanh_upward (0x2.dp+4 + 0x1p+0 i)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "Imaginary part of: ctanh_upward (0x2.dp+4 + 0x1p+0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: ctanh_upward (0x2.fp+4 + 0x1p+0 i)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "Imaginary part of: ctanh_upward (0x2.fp+4 + 0x1p+0 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctanh_upward (0x4p-1076 + 0x1.921fb54442d18p+0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctanh_upward (0x4p-1076 + 0x1.921fb54442d18p+0 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctanh_upward (0x4p-1076 + 0x1.921fb54442d19p+0 i)":
-double: 2
-idouble: 2
-Test "Imaginary part of: ctanh_upward (0x4p-1076 + 0x1.921fb54442d19p+0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctanh_upward (0x4p-1076 + 0x1.921fb6p+0 i)":
-double: 2
-idouble: 2
-Test "Real part of: ctanh_upward (0x8p-152 + 0x1.921fb4p+0 i)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "Imaginary part of: ctanh_upward (0x8p-152 + 0x1.921fb4p+0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ctanh_upward (0x8p-152 + 0x1.921fb54442d18p+0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctanh_upward (0x8p-152 + 0x1.921fb54442d19p+0 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctanh_upward (0x8p-152 + 0x1.921fb6p+0 i)":
-double: 1
-float: 3
-idouble: 1
-ifloat: 3
-Test "Imaginary part of: ctanh_upward (0x8p-152 + 0x1.921fb6p+0 i)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "Real part of: ctanh_upward (0xc.35p+12 + 0xc.35p+12 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: ctanh_upward (0xc.35p+12 - 0xc.35p+12 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ctanh_upward (0xcp-4 + 0x1.4p+0 i)":
-float: 2
-ifloat: 2
-
-# erf
-Test "erf (0x1.4p+0)":
-double: 1
-idouble: 1
-
-# erfc
-Test "erfc (-0x8p-4)":
-float: 1
-ifloat: 1
-Test "erfc (0x2p+0)":
-double: 1
-idouble: 1
-Test "erfc (0x3.ee6078p+0)":
-double: 1
-idouble: 1
-Test "erfc (0x4.2p+0)":
-double: 1
-idouble: 1
-Test "erfc (0x7.fe8008p+0)":
-float: 1
-ifloat: 1
-Test "erfc (0x7.fffd6p+0)":
-float: 1
-ifloat: 1
-
-# exp10
-Test "exp10 (-0x1.31p+8)":
-double: 1
-idouble: 1
-Test "exp10 (-0x1p+0)":
-double: 1
-idouble: 1
-Test "exp10 (-0x2.4p+4)":
-double: 1
-idouble: 1
-Test "exp10 (0x2.4p+4)":
-double: 1
-idouble: 1
-Test "exp10 (0x3p+0)":
-double: 1
-idouble: 1
-
-# exp10_downward
-Test "exp10_downward (0x2.4p+4)":
-double: 1
-idouble: 1
-
-# exp10_tonearest
-Test "exp10_tonearest (-0x1.31p+8)":
-double: 1
-idouble: 1
-Test "exp10_tonearest (-0x1p+0)":
-double: 1
-idouble: 1
-Test "exp10_tonearest (-0x2.4p+4)":
-double: 1
-idouble: 1
-Test "exp10_tonearest (0x2.4p+4)":
-double: 1
-idouble: 1
-Test "exp10_tonearest (0x3p+0)":
-double: 1
-idouble: 1
-
-# exp10_towardzero
-Test "exp10_towardzero (0x2.4p+4)":
-double: 1
-idouble: 1
-
-# exp10_upward
-Test "exp10_upward (-0x1.344p+12)":
-float: 1
-ifloat: 1
-Test "exp10_upward (-0x1.86ap+16)":
-float: 1
-ifloat: 1
-Test "exp10_upward (-0xf.424p+16)":
-float: 1
-ifloat: 1
-Test "exp10_upward (-0xf.fffffp+124)":
-float: 1
-ifloat: 1
-Test "exp10_upward (0x2.4p+4)":
-double: 1
-idouble: 1
-Test "exp10_upward (0x3p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-# exp_downward
-Test "exp_downward (0x2p+0)":
-double: 1
-idouble: 1
-Test "exp_downward (0x3p+0)":
-double: 1
-idouble: 1
-Test "exp_downward (0x5.8b9028p+4)":
-double: 1
-idouble: 1
-Test "exp_downward (0xcp-4)":
-double: 1
-idouble: 1
-
-# exp_towardzero
-Test "exp_towardzero (0x2p+0)":
-double: 1
-idouble: 1
-Test "exp_towardzero (0x3p+0)":
-double: 1
-idouble: 1
-Test "exp_towardzero (0x5.8b9028p+4)":
-double: 1
-idouble: 1
-Test "exp_towardzero (0xcp-4)":
-double: 1
-idouble: 1
-
-# exp_upward
-Test "exp_upward (-0x2.e870a4p+8)":
-double: 1
-idouble: 1
-Test "exp_upward (-0x2.e870a7e5e88c2p+8)":
-double: 1
-idouble: 1
-Test "exp_upward (-0x2.e870a7e5e88cp+8)":
-double: 1
-idouble: 1
-Test "exp_upward (-0x2.e870a8p+8)":
-double: 1
-idouble: 1
-Test "exp_upward (-0x2.ebe224p+8)":
-double: 1
-idouble: 1
-Test "exp_upward (-0x2.ebe227861639p+8)":
-double: 1
-idouble: 1
-Test "exp_upward (-0x2.ebe228p+8)":
-double: 1
-idouble: 1
-Test "exp_upward (-0x4.d2p+8)":
-double: 1
-idouble: 1
-Test "exp_upward (-0xf.ffffffffffff8p+1020)":
-double: 1
-idouble: 1
-Test "exp_upward (-0xf.fffffp+124)":
-double: 1
-idouble: 1
-Test "exp_upward (0x1p+0)":
-double: 1
-idouble: 1
-Test "exp_upward (0x2.c5cp+8)":
-double: 1
-idouble: 1
-Test "exp_upward (0x3.2p+4)":
-double: 1
-idouble: 1
-
-# expm1
-Test "expm1 (0x1.f4p+8)":
-double: 1
-idouble: 1
-Test "expm1 (0x1p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "expm1 (0xcp-4)":
-double: 1
-idouble: 1
-
-# expm1_downward
-Test "expm1_downward (0x1.f4p+8)":
-double: 1
-idouble: 1
-Test "expm1_downward (0x3.2p+4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "expm1_downward (0x7.fp+4)":
-double: 1
-idouble: 1
-
-# expm1_tonearest
-Test "expm1_tonearest (0x1.f4p+8)":
-double: 1
-idouble: 1
-Test "expm1_tonearest (0x1p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "expm1_tonearest (0xcp-4)":
-double: 1
-idouble: 1
-
-# expm1_towardzero
-Test "expm1_towardzero (-0x1p-100)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "expm1_towardzero (-0x1p-32)":
-float: 1
-ifloat: 1
-Test "expm1_towardzero (-0x1p-64)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "expm1_towardzero (-0x4p-52)":
-float: 1
-ifloat: 1
-Test "expm1_towardzero (-0x8p-32)":
-float: 1
-ifloat: 1
-Test "expm1_towardzero (0x1.f4p+8)":
-double: 1
-idouble: 1
-Test "expm1_towardzero (0x3.2p+4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "expm1_towardzero (0x7.fp+4)":
-double: 1
-idouble: 1
-
-# expm1_upward
-Test "expm1_upward (-0x1p-100)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "expm1_upward (-0x1p-32)":
-float: 1
-ifloat: 1
-Test "expm1_upward (-0x1p-64)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "expm1_upward (-0x4p-52)":
-float: 1
-ifloat: 1
-Test "expm1_upward (-0x8p-32)":
-float: 1
-ifloat: 1
-Test "expm1_upward (0x1p-100)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "expm1_upward (0x1p-32)":
-float: 1
-ifloat: 1
-Test "expm1_upward (0x1p-64)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "expm1_upward (0x4p-52)":
-float: 1
-ifloat: 1
-Test "expm1_upward (0x8p-32)":
-float: 1
-ifloat: 1
-
-# gamma
-Test "gamma (-0x1p-20)":
-double: 1
-idouble: 1
-Test "gamma (-0x2p-16)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "gamma (-0x4p-12)":
-double: 1
-idouble: 1
-Test "gamma (-0x8p-8)":
-double: 1
-idouble: 1
-Test "gamma (0x4p-12)":
-float: 1
-ifloat: 1
-Test "gamma (0x4p-32)":
-double: 1
-idouble: 1
-Test "gamma (0xb.333333333333p-4)":
-double: 1
-idouble: 1
-Test "gamma (0xb.33333p-4)":
-double: 1
-idouble: 1
-
-# hypot
-Test "hypot (-0xb.33334p-4, -0xc.6666666666668p+0)":
-double: 1
-idouble: 1
-Test "hypot (-0xb.33334p-4, 0xc.6666666666668p+0)":
-double: 1
-idouble: 1
-Test "hypot (-0xc.6666666666668p+0, -0xb.33334p-4)":
-double: 1
-idouble: 1
-Test "hypot (-0xc.6666666666668p+0, 0xb.33334p-4)":
-double: 1
-idouble: 1
-Test "hypot (0xb.33334p-4, -0xc.6666666666668p+0)":
-double: 1
-idouble: 1
-Test "hypot (0xb.33334p-4, 0xc.6666666666668p+0)":
-double: 1
-idouble: 1
-Test "hypot (0xc.6666666666668p+0, -0xb.33334p-4)":
-double: 1
-idouble: 1
-Test "hypot (0xc.6666666666668p+0, 0xb.33334p-4)":
-double: 1
-idouble: 1
-
-# j0
-Test "j0 (-0x4p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "j0 (-0xf.fffffp+124)":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-Test "j0 (0x2p+0)":
-float: 2
-ifloat: 2
-Test "j0 (0x4p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "j0 (0x8p+0)":
-float: 1
-ifloat: 1
-Test "j0 (0xap+0)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "j0 (0xcp-4)":
-float: 1
-ifloat: 1
-Test "j0 (0xe.be71dp+104)":
-float: 2
-ifloat: 2
-Test "j0 (0xf.fffffp+124)":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-
-# j1
-Test "j1 (0x1.ff00000000002p+840)":
-double: 1
-idouble: 1
-Test "j1 (0x2p+0)":
-double: 1
-idouble: 1
-Test "j1 (0x4.ffcp+72)":
-double: 1
-idouble: 1
-Test "j1 (0x8p+0)":
-double: 1
-idouble: 1
-Test "j1 (0xap+0)":
-float: 2
-ifloat: 2
-Test "j1 (0xf.ffffffffffff8p+1020)":
-double: 1
-idouble: 1
-Test "j1 (0xf.fffffp+124)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-# jn
-Test "jn (0, -0x4p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "jn (0, 0x2p+0)":
-float: 2
-ifloat: 2
-Test "jn (0, 0x4p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "jn (0, 0x8p+0)":
-float: 1
-ifloat: 1
-Test "jn (0, 0xap+0)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "jn (0, 0xcp-4)":
-float: 1
-ifloat: 1
-Test "jn (1, 0x2p+0)":
-double: 1
-idouble: 1
-Test "jn (1, 0x8p+0)":
-double: 1
-idouble: 1
-Test "jn (1, 0xap+0)":
-float: 2
-ifloat: 2
-Test "jn (10, 0x2p+0)":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-Test "jn (10, 0x2p-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "jn (10, 0xap+0)":
-double: 4
-float: 2
-idouble: 4
-ifloat: 2
-Test "jn (10, 0xcp-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "jn (2, 0x2.67a2a4p+0)":
-float: 1
-ifloat: 1
-Test "jn (2, 0x2.67a2a5d2e3682p+0)":
-double: 1
-idouble: 1
-Test "jn (2, 0x2.67a2a5d2e368p+0)":
-double: 2
-idouble: 2
-Test "jn (2, 0x2.67a2a8p+0)":
-double: 1
-float: 3
-idouble: 1
-ifloat: 3
-Test "jn (2, 0x8p+124)":
-double: 1
-idouble: 1
-Test "jn (2, 0xf.fffb1p+96)":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-Test "jn (2, 0xf.fffffp+124)":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-Test "jn (3, 0x2.67a2a4p+0)":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-Test "jn (3, 0x2.67a2a5d2e3682p+0)":
-double: 1
-idouble: 1
-Test "jn (3, 0x2.67a2a5d2e368p+0)":
-double: 3
-idouble: 3
-Test "jn (3, 0x2.67a2a8p+0)":
-double: 1
-float: 3
-idouble: 1
-ifloat: 3
-Test "jn (3, 0x2p+0)":
-float: 1
-ifloat: 1
-Test "jn (3, 0x2p-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "jn (3, 0xap+0)":
-double: 3
-idouble: 3
-Test "jn (3, 0xcp-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "jn (4, 0x2.67a2a4p+0)":
-float: 1
-ifloat: 1
-Test "jn (4, 0x2.67a2a5d2e3682p+0)":
-double: 1
-idouble: 1
-Test "jn (4, 0x2.67a2a5d2e368p+0)":
-double: 1
-idouble: 1
-Test "jn (4, 0x2.67a2a8p+0)":
-float: 1
-ifloat: 1
-Test "jn (5, 0x2.67a2a4p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "jn (5, 0x2.67a2a5d2e3682p+0)":
-double: 1
-idouble: 1
-Test "jn (5, 0x2.67a2a5d2e368p+0)":
-double: 2
-idouble: 2
-Test "jn (5, 0x2.67a2a8p+0)":
-float: 2
-ifloat: 2
-Test "jn (6, 0x2.67a2a4p+0)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "jn (6, 0x2.67a2a5d2e3682p+0)":
-double: 2
-idouble: 2
-Test "jn (6, 0x2.67a2a5d2e368p+0)":
-double: 4
-idouble: 4
-Test "jn (6, 0x2.67a2a8p+0)":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-Test "jn (7, 0x2.67a2a4p+0)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "jn (7, 0x2.67a2a5d2e368p+0)":
-double: 3
-idouble: 3
-Test "jn (7, 0x2.67a2a8p+0)":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-Test "jn (8, 0x2.67a2a4p+0)":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-Test "jn (8, 0x2.67a2a5d2e3682p+0)":
-double: 1
-idouble: 1
-Test "jn (8, 0x2.67a2a5d2e368p+0)":
-double: 3
-idouble: 3
-Test "jn (8, 0x2.67a2a8p+0)":
-double: 2
-float: 4
-idouble: 2
-ifloat: 4
-Test "jn (9, 0x2.67a2a4p+0)":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
-Test "jn (9, 0x2.67a2a5d2e3682p+0)":
-double: 4
-idouble: 4
-Test "jn (9, 0x2.67a2a5d2e368p+0)":
-double: 1
-idouble: 1
-Test "jn (9, 0x2.67a2a8p+0)":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
-
-# lgamma
-Test "lgamma (-0x1p-20)":
-double: 1
-idouble: 1
-Test "lgamma (-0x2p-16)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "lgamma (-0x4p-12)":
-double: 1
-idouble: 1
-Test "lgamma (-0x8p-8)":
-double: 1
-idouble: 1
-Test "lgamma (0x4p-12)":
-float: 1
-ifloat: 1
-Test "lgamma (0x4p-32)":
-double: 1
-idouble: 1
-Test "lgamma (0xb.333333333333p-4)":
-double: 1
-idouble: 1
-Test "lgamma (0xb.33333p-4)":
-double: 1
-idouble: 1
-
-# log
-Test "log (0x2.b7e15p+0)":
-float: 1
-ifloat: 1
-
-# log10
-Test "log10 (0x2.b7e154p+0)":
-float: 1
-ifloat: 1
-Test "log10 (0xcp-4)":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-
-# log1p
-Test "log1p (-0x4p-4)":
-float: 1
-ifloat: 1
-Test "log1p (0x1.b7e15p+0)":
-float: 1
-ifloat: 1
-
-# pow
-Test "pow (0x1.000002p+0, 0x1p+24)":
-float: 1
-ifloat: 1
-Test "pow (0xf.fffffp-4, -0x1p+24)":
-float: 1
-ifloat: 1
-Test "pow (0xf.fffffp-4, 0x1p+24)":
-float: 1
-ifloat: 1
-
-# pow10
-Test "pow10 (-0x1.31p+8)":
-double: 1
-idouble: 1
-Test "pow10 (-0x1p+0)":
-double: 1
-idouble: 1
-Test "pow10 (-0x2.4p+4)":
-double: 1
-idouble: 1
-Test "pow10 (0x2.4p+4)":
-double: 1
-idouble: 1
-Test "pow10 (0x3p+0)":
-double: 1
-idouble: 1
-
-# pow_downward
-Test "pow_downward (1.5, 1.03125)":
-float: 1
-ifloat: 1
-
-# pow_tonearest
-Test "pow_tonearest (0x1.000002p+0, 0x1p+24)":
-float: 1
-ifloat: 1
-Test "pow_tonearest (0xf.fffffp-4, -0x1p+24)":
-float: 1
-ifloat: 1
-Test "pow_tonearest (0xf.fffffp-4, 0x1p+24)":
-float: 1
-ifloat: 1
-
-# pow_towardzero
-Test "pow_towardzero (1.5, 1.03125)":
-float: 1
-ifloat: 1
-
-# pow_upward
-Test "pow_upward (1.0625, 1.125)":
-float: 1
-ifloat: 1
-
-# sin
-Test "sin (0x1p+0)":
-float: 1
-ifloat: 1
-
-# sin_downward
-Test "sin_downward (-0x1.921fb4p+0)":
-double: 1
-idouble: 1
-Test "sin_downward (-0x1.921fb6p+0)":
-double: 1
-idouble: 1
-Test "sin_downward (-0x2p+64)":
-double: 1
-idouble: 1
-Test "sin_downward (-0x8.60a91c16b9b3p-4)":
-double: 1
-idouble: 1
-Test "sin_downward (-0x8.60a91p-4)":
-double: 1
-idouble: 1
-Test "sin_downward (-0x8.60a92p-4)":
-double: 1
-idouble: 1
-Test "sin_downward (0x1.921fb54442d18p+0)":
-double: 1
-idouble: 1
-Test "sin_downward (0x1.921fb54442d19p+0)":
-double: 1
-idouble: 1
-Test "sin_downward (0x1p+120)":
-float: 1
-ifloat: 1
-Test "sin_downward (0x1p+28)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "sin_downward (0x2.1e19e0c9bab24p+72)":
-double: 1
-idouble: 1
-Test "sin_downward (0x2.1e19ep+72)":
-float: 2
-ifloat: 2
-Test "sin_downward (0x2.553534p+0)":
-double: 1
-idouble: 1
-Test "sin_downward (0x2.5535376715bap+0)":
-double: 1
-idouble: 1
-Test "sin_downward (0x2p+0)":
-double: 1
-idouble: 1
-Test "sin_downward (0x3.be735c19be9fep+0)":
-double: 1
-idouble: 1
-Test "sin_downward (0x3.be736p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "sin_downward (0x3.ec2a0250032a2p+0)":
-double: 1
-idouble: 1
-Test "sin_downward (0x3.ec2a0250032ap+0)":
-double: 1
-idouble: 1
-Test "sin_downward (0x3.ec2ap+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "sin_downward (0x3p+0)":
-float: 1
-ifloat: 1
-Test "sin_downward (0x4.093388p-4)":
-double: 1
-idouble: 1
-Test "sin_downward (0x4.1237e153f7084p+0)":
-double: 1
-idouble: 1
-Test "sin_downward (0x4.1237e153f708p+0)":
-double: 1
-idouble: 1
-Test "sin_downward (0x4.1237ep+0)":
-float: 1
-ifloat: 1
-Test "sin_downward (0x4.c92d08p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "sin_downward (0x4.c92d1p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "sin_downward (0x4p+0)":
-double: 1
-idouble: 1
-Test "sin_downward (0x4p+48)":
-double: 1
-idouble: 1
-Test "sin_downward (0x5.fbec7477d4a84p+0)":
-double: 1
-idouble: 1
-Test "sin_downward (0x5.fbec7477d4a8p+0)":
-double: 1
-idouble: 1
-Test "sin_downward (0x5.fbec78p+0)":
-double: 1
-idouble: 1
-Test "sin_downward (0x5p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "sin_downward (0x6p+0)":
-double: 1
-idouble: 1
-Test "sin_downward (0x8p+0)":
-double: 1
-idouble: 1
-Test "sin_downward (0x8p+1020)":
-double: 1
-idouble: 1
-Test "sin_downward (0x9p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "sin_downward (0xap+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "sin_downward (0xc.d4966d92d1708p-4)":
-double: 1
-idouble: 1
-Test "sin_downward (0xc.d4966p-4)":
-double: 1
-idouble: 1
-Test "sin_downward (0xf.ffffcp+124)":
-double: 1
-idouble: 1
-Test "sin_downward (0xf.ffffffffffff8p+1020)":
-double: 1
-idouble: 1
-Test "sin_downward (0xf.fffffp+124)":
-double: 1
-idouble: 1
-
-# sin_tonearest
-Test "sin_tonearest (0x1p+0)":
-float: 1
-ifloat: 1
-
-# sin_towardzero
-Test "sin_towardzero (-0x1.921fb54442d18p+0)":
-double: 1
-idouble: 1
-Test "sin_towardzero (-0x1.921fb54442d19p+0)":
-double: 1
-idouble: 1
-Test "sin_towardzero (-0x2p+64)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0x1.921fb54442d18p+0)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0x1.921fb54442d19p+0)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0x1p+0)":
-float: 1
-ifloat: 1
-Test "sin_towardzero (0x2.1e19e4p+72)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0x2.1e19ep+72)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "sin_towardzero (0x2.553534p+0)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0x2.5535376715bap+0)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0x2p+0)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0x2p+64)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0x3.be735c19beap+0)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0x3.be735cp+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "sin_towardzero (0x3.ec2a04p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "sin_towardzero (0x4.093388p-4)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0x4.1237e8p+0)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0x4.1237ep+0)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0x4.c92d0ffa4bf04p+0)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0x4.c92d0ffa4bfp+0)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0x4p+48)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0x5.fbec7p+0)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0x8p+0)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0x8p+1020)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0x9p+0)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0xb.fa09ap+100)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0xc.d4966d92d1708p-4)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0xc.d4966p-4)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0xc.d4967p-4)":
-float: 1
-ifloat: 1
-Test "sin_towardzero (0xe.ef3afp-4)":
-float: 1
-ifloat: 1
-Test "sin_towardzero (0xf.ffffcp+124)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0xf.ffffffffffff8p+1020)":
-double: 1
-idouble: 1
-
-# sin_upward
-Test "sin_upward (-0x1.921fb4p+0)":
-float: 1
-ifloat: 1
-Test "sin_upward (-0x1.921fb54442d18p+0)":
-double: 1
-idouble: 1
-Test "sin_upward (-0x1.921fb54442d19p+0)":
-double: 1
-idouble: 1
-Test "sin_upward (-0x1.921fb6p+0)":
-float: 1
-ifloat: 1
-Test "sin_upward (0x1.921fb4p+0)":
-double: 1
-idouble: 1
-Test "sin_upward (0x1.921fb6p+0)":
-double: 1
-idouble: 1
-Test "sin_upward (0x1p+0)":
-double: 1
-idouble: 1
-Test "sin_upward (0x1p+120)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "sin_upward (0x1p+28)":
-float: 1
-ifloat: 1
-Test "sin_upward (0x2.1e19e4p+72)":
-double: 1
-idouble: 1
-Test "sin_upward (0x2.1e19ep+72)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "sin_upward (0x2.5535376715b9ep+0)":
-double: 1
-idouble: 1
-Test "sin_upward (0x2.553538p+0)":
-double: 1
-idouble: 1
-Test "sin_upward (0x2p+0)":
-float: 1
-ifloat: 1
-Test "sin_upward (0x2p+64)":
-double: 1
-idouble: 1
-Test "sin_upward (0x3.be735c19beap+0)":
-double: 1
-idouble: 1
-Test "sin_upward (0x3.be735cp+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "sin_upward (0x3.be736p+0)":
-float: 1
-ifloat: 1
-Test "sin_upward (0x3.ec2a04p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "sin_upward (0x3p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "sin_upward (0x4.093385688a2d4p-4)":
-double: 1
-idouble: 1
-Test "sin_upward (0x4.093385688a2dp-4)":
-double: 1
-idouble: 1
-Test "sin_upward (0x4.09338p-4)":
-double: 1
-idouble: 1
-Test "sin_upward (0x4.1237e8p+0)":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-Test "sin_upward (0x4.1237ep+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "sin_upward (0x4.c92d08p+0)":
-float: 1
-ifloat: 1
-Test "sin_upward (0x4.c92d0ffa4bf04p+0)":
-double: 1
-idouble: 1
-Test "sin_upward (0x4.c92d0ffa4bfp+0)":
-double: 1
-idouble: 1
-Test "sin_upward (0x4.c92d1p+0)":
-float: 1
-ifloat: 1
-Test "sin_upward (0x4p+0)":
-float: 2
-ifloat: 2
-Test "sin_upward (0x4p+48)":
-float: 1
-ifloat: 1
-Test "sin_upward (0x5.fbec7p+0)":
-double: 1
-idouble: 1
-Test "sin_upward (0x5p+0)":
-float: 1
-ifloat: 1
-Test "sin_upward (0x7p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "sin_upward (0x8.60a91c16b9b3p-4)":
-double: 1
-idouble: 1
-Test "sin_upward (0x8.60a91p-4)":
-double: 1
-idouble: 1
-Test "sin_upward (0x8.60a92p-4)":
-double: 1
-idouble: 1
-Test "sin_upward (0x8p+0)":
-float: 1
-ifloat: 1
-Test "sin_upward (0x8p+124)":
-double: 1
-idouble: 1
-Test "sin_upward (0x9p+0)":
-float: 1
-ifloat: 1
-Test "sin_upward (0xap+0)":
-float: 1
-ifloat: 1
-Test "sin_upward (0xb.fa09ap+100)":
-double: 1
-idouble: 1
-Test "sin_upward (0xc.d4966d92d171p-4)":
-double: 1
-idouble: 1
-Test "sin_upward (0xc.d4967p-4)":
-double: 1
-idouble: 1
-Test "sin_upward (0xcp-4)":
-double: 1
-idouble: 1
-Test "sin_upward (0xe.ef3af1b5d8008p-4)":
-double: 1
-idouble: 1
-Test "sin_upward (0xe.ef3af1b5d8p-4)":
-double: 1
-idouble: 1
-Test "sin_upward (0xe.ef3afp-4)":
-double: 1
-idouble: 1
-Test "sin_upward (0xe.ef3bp-4)":
-double: 1
-idouble: 1
-
-# sincos
-Test "sincos (0x1.0c1522p+0) extra output 1":
-float: 1
-ifloat: 1
-Test "sincos (0x1p+120) extra output 2":
-float: 1
-ifloat: 1
-Test "sincos (0x8.60a92p-4) extra output 2":
-float: 1
-ifloat: 1
-Test "sincos (0x8p+124) extra output 2":
-float: 1
-ifloat: 1
-Test "sincos (0xc.d4967p-4) extra output 2":
-float: 1
-ifloat: 1
-
-# sinh_downward
-Test "sinh_downward (0x1.6p+4)":
-double: 1
-idouble: 1
-Test "sinh_downward (0x1.7p+4)":
-double: 1
-idouble: 1
-
-# sinh_towardzero
-Test "sinh_towardzero (0x1.6p+4)":
-double: 1
-idouble: 1
-Test "sinh_towardzero (0x1.7p+4)":
-double: 1
-idouble: 1
-
-# sinh_upward
-Test "sinh_upward (0x1.8p+4)":
-double: 1
-idouble: 1
-Test "sinh_upward (0x8p-32)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-# tan_downward
-Test "tan_downward (-0x2p+64)":
-double: 1
-idouble: 1
-Test "tan_downward (-0xc.908p-4)":
-float: 2
-ifloat: 2
-Test "tan_downward (-0xc.90cp-4)":
-float: 1
-ifloat: 1
-Test "tan_downward (-0xc.90ep-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tan_downward (-0xc.90f8p-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tan_downward (-0xc.90fcp-4)":
-float: 1
-ifloat: 1
-Test "tan_downward (-0xc.90fd8p-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tan_downward (-0xc.90fdap-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tan_downward (-0xc.90fdbp-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tan_downward (-0xc.90fdcp-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tan_downward (-0xc.90fdp-4)":
-float: 1
-ifloat: 1
-Test "tan_downward (-0xc.90fep-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tan_downward (-0xc.90fp-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tan_downward (-0xc.91p-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tan_downward (-0xc.92p-4)":
-double: 1
-idouble: 1
-Test "tan_downward (-0xc.9p-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tan_downward (-0xc.ap-4)":
-double: 1
-idouble: 1
-Test "tan_downward (0x1p+0)":
-double: 1
-idouble: 1
-Test "tan_downward (0x2.1e19e0c9bab24p+72)":
-double: 1
-idouble: 1
-Test "tan_downward (0x2p+0)":
-double: 1
-idouble: 1
-Test "tan_downward (0x3p+0)":
-double: 1
-idouble: 1
-Test "tan_downward (0x4p+0)":
-float: 1
-ifloat: 1
-Test "tan_downward (0x6p+0)":
-double: 1
-idouble: 1
-Test "tan_downward (0x7p+0)":
-double: 1
-idouble: 1
-Test "tan_downward (0x8p+1020)":
-double: 1
-idouble: 1
-Test "tan_downward (0xc.908p-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tan_downward (0xc.90cp-4)":
-double: 1
-idouble: 1
-Test "tan_downward (0xc.90fcp-4)":
-double: 1
-idouble: 1
-Test "tan_downward (0xc.90fdaa22168c8p-4)":
-double: 1
-idouble: 1
-Test "tan_downward (0xc.90fdp-4)":
-double: 1
-idouble: 1
-Test "tan_downward (0xc.92p-4)":
-float: 1
-ifloat: 1
-Test "tan_downward (0xc.94p-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tan_downward (0xc.98p-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tan_downward (0xc.ap-4)":
-float: 1
-ifloat: 1
-Test "tan_downward (0xcp-4)":
-double: 1
-idouble: 1
-
-# tan_towardzero
-Test "tan_towardzero (-0x2p+64)":
-double: 1
-idouble: 1
-Test "tan_towardzero (-0xc.908p-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tan_towardzero (-0xc.90cp-4)":
-double: 1
-idouble: 1
-Test "tan_towardzero (-0xc.90fcp-4)":
-double: 1
-idouble: 1
-Test "tan_towardzero (-0xc.90fdp-4)":
-double: 1
-idouble: 1
-Test "tan_towardzero (-0xc.94p-4)":
-double: 1
-idouble: 1
-Test "tan_towardzero (-0xc.98p-4)":
-double: 1
-idouble: 1
-Test "tan_towardzero (0x1p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tan_towardzero (0x2.1e19e4p+72)":
-double: 1
-idouble: 1
-Test "tan_towardzero (0x2.1e19ep+72)":
-double: 1
-idouble: 1
-Test "tan_towardzero (0x2p+64)":
-double: 1
-idouble: 1
-Test "tan_towardzero (0x5p+0)":
-double: 1
-idouble: 1
-Test "tan_towardzero (0x7p+0)":
-double: 1
-idouble: 1
-Test "tan_towardzero (0x8p+0)":
-double: 1
-idouble: 1
-Test "tan_towardzero (0x9p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tan_towardzero (0xc.908p-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tan_towardzero (0xc.90cp-4)":
-double: 1
-idouble: 1
-Test "tan_towardzero (0xc.90fcp-4)":
-double: 1
-idouble: 1
-Test "tan_towardzero (0xc.90fdaa22168c8p-4)":
-double: 1
-idouble: 1
-Test "tan_towardzero (0xc.90fdp-4)":
-double: 1
-idouble: 1
-Test "tan_towardzero (0xc.94p-4)":
-double: 1
-idouble: 1
-Test "tan_towardzero (0xc.98p-4)":
-double: 1
-idouble: 1
-Test "tan_towardzero (0xcp-4)":
-double: 1
-idouble: 1
-Test "tan_towardzero (0xf.ffffffffffff8p+1020)":
-double: 1
-idouble: 1
-Test "tan_towardzero (0xf.fffffp+124)":
-double: 1
-idouble: 1
-
-# tan_upward
-Test "tan_upward (-0xc.908p-4)":
-double: 1
-idouble: 1
-Test "tan_upward (-0xc.90cp-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tan_upward (-0xc.90ep-4)":
-float: 1
-ifloat: 1
-Test "tan_upward (-0xc.90f8p-4)":
-float: 1
-ifloat: 1
-Test "tan_upward (-0xc.90fcp-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tan_upward (-0xc.90fd8p-4)":
-float: 1
-ifloat: 1
-Test "tan_upward (-0xc.90fdap-4)":
-float: 1
-ifloat: 1
-Test "tan_upward (-0xc.90fdbp-4)":
-float: 1
-ifloat: 1
-Test "tan_upward (-0xc.90fdcp-4)":
-float: 1
-ifloat: 1
-Test "tan_upward (-0xc.90fdp-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tan_upward (-0xc.90fep-4)":
-float: 1
-ifloat: 1
-Test "tan_upward (-0xc.90fp-4)":
-float: 1
-ifloat: 1
-Test "tan_upward (-0xc.91p-4)":
-float: 1
-ifloat: 1
-Test "tan_upward (-0xc.94p-4)":
-double: 1
-idouble: 1
-Test "tan_upward (-0xc.98p-4)":
-double: 1
-idouble: 1
-Test "tan_upward (-0xc.9p-4)":
-float: 1
-ifloat: 1
-Test "tan_upward (0x1p+0)":
-float: 1
-ifloat: 1
-Test "tan_upward (0x2.1e19e4p+72)":
-double: 1
-idouble: 1
-Test "tan_upward (0x2.1e19ep+72)":
-double: 1
-idouble: 1
-Test "tan_upward (0x2p+64)":
-double: 1
-idouble: 1
-Test "tan_upward (0x4p+0)":
-double: 1
-idouble: 1
-Test "tan_upward (0x5p+0)":
-double: 1
-idouble: 1
-Test "tan_upward (0x7p+0)":
-float: 1
-ifloat: 1
-Test "tan_upward (0x8p+0)":
-double: 1
-idouble: 1
-Test "tan_upward (0x9p+0)":
-double: 1
-idouble: 1
-Test "tan_upward (0xap+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tan_upward (0xc.908p-4)":
-float: 1
-ifloat: 1
-Test "tan_upward (0xc.90ep-4)":
-double: 1
-idouble: 1
-Test "tan_upward (0xc.90f8p-4)":
-double: 1
-idouble: 1
-Test "tan_upward (0xc.90fd8p-4)":
-double: 1
-idouble: 1
-Test "tan_upward (0xc.90fdap-4)":
-double: 1
-idouble: 1
-Test "tan_upward (0xc.90fdbp-4)":
-double: 1
-idouble: 1
-Test "tan_upward (0xc.90fdcp-4)":
-double: 1
-idouble: 1
-Test "tan_upward (0xc.90fep-4)":
-double: 1
-idouble: 1
-Test "tan_upward (0xc.90fp-4)":
-double: 1
-idouble: 1
-Test "tan_upward (0xc.91p-4)":
-double: 1
-idouble: 1
-Test "tan_upward (0xc.92p-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tan_upward (0xc.94p-4)":
-float: 1
-ifloat: 1
-Test "tan_upward (0xc.98p-4)":
-float: 1
-ifloat: 1
-Test "tan_upward (0xc.9p-4)":
-double: 1
-idouble: 1
-Test "tan_upward (0xc.ap-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tan_upward (0xcp-4)":
-float: 1
-ifloat: 1
-Test "tan_upward (0xf.ffffffffffff8p+1020)":
-double: 1
-idouble: 1
-Test "tan_upward (0xf.fffffp+124)":
-double: 1
-idouble: 1
-
-# tgamma
-Test "tgamma (-0x1.000002p+0)":
-double: 2
-idouble: 2
-Test "tgamma (-0x1.3ffffep+4)":
-float: 2
-ifloat: 2
-Test "tgamma (-0x1.4000000000001p+4)":
-double: 1
-idouble: 1
-Test "tgamma (-0x1.400002p+4)":
-float: 1
-ifloat: 1
-Test "tgamma (-0x1.dffffep+4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tgamma (-0x1.e000000000001p+4)":
-double: 3
-idouble: 3
-Test "tgamma (-0x1.e00002p+4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tgamma (-0x2.0000000000002p+0)":
-double: 1
-idouble: 1
-Test "tgamma (-0x2.000004p+0)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "tgamma (-0x2.146544p+4)":
-float: 2
-ifloat: 2
-Test "tgamma (-0x2.7fffffffffffep+4)":
-double: 1
-idouble: 1
-Test "tgamma (-0x2.8000000000002p+4)":
-double: 1
-idouble: 1
-Test "tgamma (-0x2.800004p+4)":
-double: 2
-idouble: 2
-Test "tgamma (-0x2.8p+0)":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-Test "tgamma (-0x2.900004p+4)":
-double: 1
-idouble: 1
-Test "tgamma (-0x2.9ffffcp+4)":
-double: 1
-idouble: 1
-Test "tgamma (-0x2.fffffcp+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tgamma (-0x3.000004p+0)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "tgamma (-0x3.1ffffcp+4)":
-double: 1
-idouble: 1
-Test "tgamma (-0x3.1fffffffffffep+4)":
-double: 3
-idouble: 3
-Test "tgamma (-0x3.8p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tgamma (-0x3.fffffcp+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tgamma (-0x3.ffffffffffffep+0)":
-double: 2
-idouble: 2
-Test "tgamma (-0x4.000008p+0)":
-float: 1
-ifloat: 1
-Test "tgamma (-0x4.8p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tgamma (-0x4.fffff8p+0)":
-double: 1
-idouble: 1
-Test "tgamma (-0x4.ffffffffffffcp+0)":
-double: 1
-idouble: 1
-Test "tgamma (-0x5.000008p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tgamma (-0x5.8p+0)":
-double: 1
-idouble: 1
-Test "tgamma (-0x5.ffffffffffffcp+0)":
-double: 1
-idouble: 1
-Test "tgamma (-0x6.000008p+0)":
-float: 2
-ifloat: 2
-Test "tgamma (-0x6.3fffffffffffcp+4)":
-double: 2
-idouble: 2
-Test "tgamma (-0x6.4000000000004p+4)":
-double: 1
-idouble: 1
-Test "tgamma (-0x6.400008p+4)":
-double: 1
-idouble: 1
-Test "tgamma (-0x6.8p+0)":
-float: 1
-ifloat: 1
-Test "tgamma (-0x6.fffff8p+0)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "tgamma (-0x6.ffffffffffffcp+0)":
-double: 4
-idouble: 4
-Test "tgamma (-0x7.0000000000004p+0)":
-double: 3
-idouble: 3
-Test "tgamma (-0x7.000008p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tgamma (-0x7.8p+0)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "tgamma (-0x7.fffff8p+0)":
-double: 3
-float: 1
-idouble: 3
-ifloat: 1
-Test "tgamma (-0x7.ffffffffffffcp+0)":
-double: 3
-idouble: 3
-Test "tgamma (-0x8.00001p+0)":
-double: 2
-idouble: 2
-Test "tgamma (-0x8.8p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tgamma (-0x8p-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tgamma (-0x9.6000000000008p+4)":
-double: 1
-idouble: 1
-Test "tgamma (-0x9.60001p+4)":
-double: 1
-idouble: 1
-Test "tgamma (-0x9.8p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tgamma (-0x9.ffffffffffff8p+0)":
-double: 1
-idouble: 1
-Test "tgamma (-0x9.fffffp+0)":
-float: 1
-ifloat: 1
-Test "tgamma (-0xa.00001p+0)":
-double: 1
-idouble: 1
-Test "tgamma (-0xa.c0001p+4)":
-double: 1
-idouble: 1
-Test "tgamma (-0xf.ffffffffffff8p-4)":
-double: 1
-idouble: 1
-Test "tgamma (-0xf.fffffp-4)":
-float: 1
-ifloat: 1
-Test "tgamma (0x1.28p+4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tgamma (0x1.38p+4)":
-double: 2
-idouble: 2
-Test "tgamma (0x1.78p+4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tgamma (0x1.d8p+4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tgamma (0x1.e8p+4)":
-float: 1
-ifloat: 1
-Test "tgamma (0x1.fffffep+0)":
-float: 1
-ifloat: 1
-Test "tgamma (0x1.fffffffffffffp+0)":
-double: 1
-idouble: 1
-Test "tgamma (0x1p-24)":
-float: 1
-ifloat: 1
-Test "tgamma (0x2.18p+4)":
-float: 1
-ifloat: 1
-Test "tgamma (0x2.28p+4)":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-Test "tgamma (0x2.30a43cp+4)":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-Test "tgamma (0x2.8p+0)":
-float: 2
-ifloat: 2
-Test "tgamma (0x2.fffffcp+0)":
-float: 3
-ifloat: 3
-Test "tgamma (0x3.8p+0)":
-float: 2
-ifloat: 2
-Test "tgamma (0x3.fffffcp+0)":
-float: 1
-ifloat: 1
-Test "tgamma (0x3.ffffffffffffep+0)":
-double: 1
-idouble: 1
-Test "tgamma (0x3p+0)":
-float: 1
-ifloat: 1
-Test "tgamma (0x4.0000000000004p+0)":
-double: 1
-idouble: 1
-Test "tgamma (0x4.8p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tgamma (0x4.ffffffffffffcp+0)":
-double: 1
-idouble: 1
-Test "tgamma (0x4p+0)":
-float: 1
-ifloat: 1
-Test "tgamma (0x5.0000000000004p+0)":
-double: 1
-idouble: 1
-Test "tgamma (0x5.000008p+0)":
-float: 2
-ifloat: 2
-Test "tgamma (0x5.fffff8p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tgamma (0x6.0000000000004p+0)":
-double: 1
-idouble: 1
-Test "tgamma (0x6.000008p+0)":
-float: 2
-ifloat: 2
-Test "tgamma (0x6.8p+0)":
-float: 1
-ifloat: 1
-Test "tgamma (0x6.fffff8p+0)":
-double: 1
-idouble: 1
-Test "tgamma (0x6.ffffffffffffcp+0)":
-double: 4
-idouble: 4
-Test "tgamma (0x6p+0)":
-float: 1
-ifloat: 1
-Test "tgamma (0x7.0000000000004p+0)":
-double: 4
-idouble: 4
-Test "tgamma (0x7.000008p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tgamma (0x7.8p+0)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "tgamma (0x7.fffff8p+0)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "tgamma (0x7.ffffffffffffcp+0)":
-double: 2
-idouble: 2
-Test "tgamma (0x7p+0)":
-double: 1
-idouble: 1
-Test "tgamma (0x8.00001p+0)":
-double: 2
-idouble: 2
-Test "tgamma (0x8.8p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tgamma (0x8p+0)":
-double: 1
-idouble: 1
-Test "tgamma (0x8p-4)":
-float: 1
-ifloat: 1
-Test "tgamma (0x8p-56)":
-double: 1
-idouble: 1
-Test "tgamma (0x9.8p+0)":
-double: 1
-idouble: 1
-Test "tgamma (0x9p+0)":
-double: 1
-idouble: 1
-Test "tgamma (0xa.b9fd72b0fb238p+4)":
-double: 1
-idouble: 1
-Test "tgamma (0xa.b9fd7p+4)":
-double: 2
-idouble: 2
-Test "tgamma (0xap+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-# y0
-Test "y0 (0x1.8p+0)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "y0 (0x1.ff00000000002p+840)":
-double: 1
-idouble: 1
-Test "y0 (0x1p+0)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "y0 (0x1p-20)":
-float: 1
-ifloat: 1
-Test "y0 (0x1p-40)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "y0 (0x1p-80)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "y0 (0x4.ffcp+72)":
-double: 1
-idouble: 1
-Test "y0 (0x4p-112)":
-double: 1
-idouble: 1
-Test "y0 (0x4p-12)":
-double: 1
-idouble: 1
-Test "y0 (0x4p-32)":
-float: 1
-ifloat: 1
-Test "y0 (0x4p-52)":
-float: 1
-ifloat: 1
-Test "y0 (0x4p-72)":
-double: 1
-idouble: 1
-Test "y0 (0x8p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "y0 (0xap+0)":
-float: 1
-ifloat: 1
-Test "y0 (0xf.ffffffffffff8p+1020)":
-double: 1
-idouble: 1
-Test "y0 (0xf.fffffp+124)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-# y1
-Test "y1 (0x1.8p+0)":
-float: 1
-ifloat: 1
-Test "y1 (0x2p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "y1 (0x2p-4)":
-double: 1
-idouble: 1
-Test "y1 (0x4p-12)":
-double: 1
-idouble: 1
-Test "y1 (0x8p+0)":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-Test "y1 (0x9.3f102p+96)":
-double: 1
-idouble: 1
-Test "y1 (0xap+0)":
-double: 3
-float: 1
-idouble: 3
-ifloat: 1
-Test "y1 (0xf.fffffp+124)":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-
-# yn
-Test "yn (-10, 0x1p+0)":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-Test "yn (0, 0x1.8p+0)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "yn (0, 0x1p+0)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "yn (0, 0x8p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "yn (0, 0xap+0)":
-float: 1
-ifloat: 1
-Test "yn (1, 0x1.8p+0)":
-float: 1
-ifloat: 1
-Test "yn (1, 0x2p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "yn (1, 0x2p-4)":
-double: 1
-idouble: 1
-Test "yn (1, 0x8p+0)":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-Test "yn (1, 0xap+0)":
-double: 3
-float: 1
-idouble: 3
-ifloat: 1
-Test "yn (10, 0x1p+0)":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-Test "yn (10, 0x2p+0)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "yn (10, 0x2p-4)":
-double: 1
-idouble: 1
-Test "yn (10, 0xap+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "yn (10, 0xcp-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "yn (2, 0x8p+124)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "yn (2, 0xf.fffb1p+96)":
-double: 1
-idouble: 1
-Test "yn (2, 0xf.ffffffffffff8p+1020)":
-double: 1
-idouble: 1
-Test "yn (2, 0xf.fffffp+124)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "yn (3, 0x2p+0)":
-double: 1
-idouble: 1
-Test "yn (3, 0x2p-4)":
-double: 1
-idouble: 1
-Test "yn (3, 0xap+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "yn (3, 0xcp-4)":
-double: 1
-idouble: 1
-
-# Maximal error of functions:
-Function: "acos_downward":
-float: 1
-ifloat: 1
-
-Function: "acos_towardzero":
-float: 1
-ifloat: 1
-
-Function: "acos_upward":
-double: 1
-idouble: 1
-
-Function: "acosh":
-double: 1
-idouble: 1
-
-Function: "asin_downward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: "asin_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: "asin_upward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: "asinh":
-double: 1
-float: 1
-ifloat: 1
-
-Function: "atan2":
-float: 1
-ifloat: 1
-
-Function: "atanh":
-float: 1
-ifloat: 1
-
-Function: Real part of "cacos":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-
-Function: Imaginary part of "cacos":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-
-Function: Real part of "cacosh":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-
-Function: Imaginary part of "cacosh":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-
-Function: Real part of "casin":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: Imaginary part of "casin":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-
-Function: Real part of "casinh":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-
-Function: Imaginary part of "casinh":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: Real part of "catan":
-float: 1
-ifloat: 1
-
-Function: Imaginary part of "catan":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: Real part of "catanh":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: Imaginary part of "catanh":
-float: 1
-ifloat: 1
-
-Function: "cbrt":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: Real part of "ccos":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: Imaginary part of "ccos":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: Real part of "ccosh":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: Imaginary part of "ccosh":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: Real part of "cexp":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-
-Function: Imaginary part of "cexp":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-
-Function: Real part of "clog":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: Imaginary part of "clog":
-float: 1
-ifloat: 1
-
-Function: Real part of "clog10":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-
-Function: Imaginary part of "clog10":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: "cos":
-float: 1
-ifloat: 1
-
-Function: "cos_downward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-
-Function: "cos_tonearest":
-float: 1
-ifloat: 1
-
-Function: "cos_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: "cos_upward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-
-Function: "cosh":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: "cosh_downward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: "cosh_tonearest":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: "cosh_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: "cosh_upward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-
-Function: Real part of "cpow":
-double: 2
-float: 4
-idouble: 2
-ifloat: 4
-
-Function: Imaginary part of "cpow":
-float: 2
-ifloat: 2
-
-Function: Real part of "csin":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: Real part of "csinh":
-float: 1
-ifloat: 1
-
-Function: Imaginary part of "csinh":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: Real part of "csqrt":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: Imaginary part of "csqrt":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: Real part of "ctan":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: Imaginary part of "ctan":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-
-Function: Real part of "ctan_downward":
-double: 6
-float: 5
-idouble: 6
-ifloat: 5
-
-Function: Imaginary part of "ctan_downward":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-
-Function: Real part of "ctan_tonearest":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: Imaginary part of "ctan_tonearest":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-
-Function: Real part of "ctan_towardzero":
-double: 5
-float: 3
-idouble: 5
-ifloat: 3
-
-Function: Imaginary part of "ctan_towardzero":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-
-Function: Real part of "ctan_upward":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-
-Function: Imaginary part of "ctan_upward":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-
-Function: Real part of "ctanh":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-
-Function: Imaginary part of "ctanh":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-
-Function: Real part of "ctanh_downward":
-double: 4
-float: 1
-idouble: 4
-ifloat: 1
-
-Function: Imaginary part of "ctanh_downward":
-double: 6
-float: 5
-idouble: 6
-ifloat: 5
-
-Function: Real part of "ctanh_tonearest":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-
-Function: Imaginary part of "ctanh_tonearest":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-
-Function: Real part of "ctanh_towardzero":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-
-Function: Imaginary part of "ctanh_towardzero":
-double: 5
-float: 3
-idouble: 5
-ifloat: 3
-
-Function: Real part of "ctanh_upward":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-
-Function: Imaginary part of "ctanh_upward":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-
-Function: "erf":
-double: 1
-idouble: 1
-
-Function: "erfc":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: "exp10":
-double: 1
-idouble: 1
-
-Function: "exp10_downward":
-double: 1
-idouble: 1
-
-Function: "exp10_tonearest":
-double: 1
-idouble: 1
-
-Function: "exp10_towardzero":
-double: 1
-idouble: 1
-
-Function: "exp10_upward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: "exp_downward":
-double: 1
-idouble: 1
-
-Function: "exp_towardzero":
-double: 1
-idouble: 1
-
-Function: "exp_upward":
-double: 1
-idouble: 1
-
-Function: "expm1":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: "expm1_downward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: "expm1_tonearest":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: "expm1_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: "expm1_upward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: "gamma":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: "hypot":
-double: 1
-idouble: 1
-
-Function: "j0":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-
-Function: "j1":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-
-Function: "jn":
-double: 4
-float: 4
-idouble: 4
-ifloat: 4
-
-Function: "lgamma":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: "log":
-float: 1
-ifloat: 1
-
-Function: "log10":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-
-Function: "log1p":
-float: 1
-ifloat: 1
-
-Function: "pow":
-float: 1
-ifloat: 1
-
-Function: "pow10":
-double: 1
-idouble: 1
-
-Function: "pow_downward":
-float: 1
-ifloat: 1
-
-Function: "pow_tonearest":
-float: 1
-ifloat: 1
-
-Function: "pow_towardzero":
-float: 1
-ifloat: 1
-
-Function: "pow_upward":
-float: 1
-ifloat: 1
-
-Function: "sin":
-float: 1
-ifloat: 1
-
-Function: "sin_downward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-
-Function: "sin_tonearest":
-float: 1
-ifloat: 1
-
-Function: "sin_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: "sin_upward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-
-Function: "sincos":
-float: 1
-ifloat: 1
-
-Function: "sinh_downward":
-double: 1
-idouble: 1
-
-Function: "sinh_towardzero":
-double: 1
-idouble: 1
-
-Function: "sinh_upward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: "tan_downward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-
-Function: "tan_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: "tan_upward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: "tgamma":
-double: 4
-float: 3
-idouble: 4
-ifloat: 3
-
-Function: "y0":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-
-Function: "y1":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-
-Function: "yn":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-
-# end of automatic generation
diff --git a/ports/sysdeps/arm/machine-gmon.h b/ports/sysdeps/arm/machine-gmon.h
deleted file mode 100644
index 43e980148d..0000000000
--- a/ports/sysdeps/arm/machine-gmon.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Machine-dependent definitions for profiling support. ARM EABI version.
- Copyright (C) 2008-2014 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>
-
-/* GCC for the ARM cannot compile __builtin_return_address(N) for N != 0,
- so we must use an assembly stub. */
-
-/* We must not pollute the global namespace. */
-#define mcount_internal __mcount_internal
-
-extern void mcount_internal (u_long frompc, u_long selfpc) internal_function;
-#define _MCOUNT_DECL(frompc, selfpc) \
- void internal_function mcount_internal (u_long frompc, u_long selfpc)
-
-
-/* Define MCOUNT as empty since we have the implementation in another file. */
-#define MCOUNT
diff --git a/ports/sysdeps/arm/math-tests.h b/ports/sysdeps/arm/math-tests.h
deleted file mode 100644
index e65f135e97..0000000000
--- a/ports/sysdeps/arm/math-tests.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Configuration for math tests. ARM version.
- Copyright (C) 2013-2014 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/>. */
-
-/* On systems with VFP support, but where glibc is built for
- soft-float, the libgcc functions used in libc and libm do not
- support rounding modes, although fesetround succeeds, and do not
- support exceptions. */
-#ifdef __SOFTFP__
-# define ROUNDING_TESTS_float(MODE) ((MODE) == FE_TONEAREST)
-# define ROUNDING_TESTS_double(MODE) ((MODE) == FE_TONEAREST)
-# define ROUNDING_TESTS_long_double(MODE) ((MODE) == FE_TONEAREST)
-# define EXCEPTION_TESTS_float 0
-# define EXCEPTION_TESTS_double 0
-# define EXCEPTION_TESTS_long_double 0
-#endif
-
-#include_next <math-tests.h>
diff --git a/ports/sysdeps/arm/memcpy.S b/ports/sysdeps/arm/memcpy.S
deleted file mode 100644
index 3e985dad68..0000000000
--- a/ports/sysdeps/arm/memcpy.S
+++ /dev/null
@@ -1,344 +0,0 @@
-/* Copyright (C) 2006-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- Contributed by MontaVista Software, Inc. (written by Nicolas Pitre)
-
- 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/>. */
-
-/* Thumb requires excessive IT insns here. */
-#define NO_THUMB
-#include <sysdep.h>
-#include <arm-features.h>
-
-/*
- * Data preload for architectures that support it (ARM V5TE and above)
- */
-#if (!defined (__ARM_ARCH_2__) && !defined (__ARM_ARCH_3__) \
- && !defined (__ARM_ARCH_3M__) && !defined (__ARM_ARCH_4__) \
- && !defined (__ARM_ARCH_4T__) && !defined (__ARM_ARCH_5__) \
- && !defined (__ARM_ARCH_5T__))
-#define PLD(code...) code
-#else
-#define PLD(code...)
-#endif
-
-/*
- * This can be used to enable code to cacheline align the source pointer.
- * Experiments on tested architectures (StrongARM and XScale) didn't show
- * this a worthwhile thing to do. That might be different in the future.
- */
-//#define CALGN(code...) code
-#define CALGN(code...)
-
-/*
- * Endian independent macros for shifting bytes within registers.
- */
-#ifndef __ARMEB__
-#define PULL lsr
-#define PUSH lsl
-#else
-#define PULL lsl
-#define PUSH lsr
-#endif
-
- .text
- .syntax unified
-
-/* Prototype: void *memcpy(void *dest, const void *src, size_t n); */
-
-ENTRY(memcpy)
-
- push {r0, r4, lr}
- cfi_adjust_cfa_offset (12)
- cfi_rel_offset (r4, 4)
- cfi_rel_offset (lr, 8)
-
- cfi_remember_state
-
- subs r2, r2, #4
- blt 8f
- ands ip, r0, #3
- PLD( sfi_pld r1, #0 )
- bne 9f
- ands ip, r1, #3
- bne 10f
-
-1: subs r2, r2, #(28)
- push {r5 - r8}
- cfi_adjust_cfa_offset (16)
- cfi_rel_offset (r5, 0)
- cfi_rel_offset (r6, 4)
- cfi_rel_offset (r7, 8)
- cfi_rel_offset (r8, 12)
- blt 5f
-
- CALGN( ands ip, r1, #31 )
- CALGN( rsb r3, ip, #32 )
- CALGN( sbcsne r4, r3, r2 ) @ C is always set here
- CALGN( bcs 2f )
- CALGN( adr r4, 6f )
- CALGN( subs r2, r2, r3 ) @ C gets set
-#ifndef ARM_ALWAYS_BX
- CALGN( add pc, r4, ip, lsl #(ARM_BX_ALIGN_LOG2 - 2))
-#else
- CALGN( add r4, r4, ip, lsl #(ARM_BX_ALIGN_LOG2 - 2))
- CALGN( bx r4 )
-#endif
-
- PLD( sfi_pld r1, #0 )
-2: PLD( subs r2, r2, #96 )
- PLD( sfi_pld r1, #28 )
- PLD( blt 4f )
- PLD( sfi_pld r1, #60 )
- PLD( sfi_pld r1, #92 )
-
-3: PLD( sfi_pld r1, #124 )
-4: sfi_breg r1, \
- ldmia \B!, {r3, r4, r5, r6, r7, r8, ip, lr}
- subs r2, r2, #32
- sfi_breg r0, \
- stmia \B!, {r3, r4, r5, r6, r7, r8, ip, lr}
- bge 3b
- PLD( cmn r2, #96 )
- PLD( bge 4b )
-
-5: ands ip, r2, #28
- rsb ip, ip, #32
-#ifndef ARM_ALWAYS_BX
- /* C is always clear here. */
- addne pc, pc, ip, lsl #(ARM_BX_ALIGN_LOG2 - 2)
- b 7f
-#else
- beq 7f
- push {r10}
- cfi_adjust_cfa_offset (4)
- cfi_rel_offset (r10, 0)
- add r10, pc, ip, lsl #(ARM_BX_ALIGN_LOG2 - 2)
- bx r10
-#endif
- .p2align ARM_BX_ALIGN_LOG2
-6: nop
- .p2align ARM_BX_ALIGN_LOG2
- sfi_breg r1, \
- ldr r3, [\B], #4
- .p2align ARM_BX_ALIGN_LOG2
- sfi_breg r1, \
- ldr r4, [\B], #4
- .p2align ARM_BX_ALIGN_LOG2
- sfi_breg r1, \
- ldr r5, [\B], #4
- .p2align ARM_BX_ALIGN_LOG2
- sfi_breg r1, \
- ldr r6, [\B], #4
- .p2align ARM_BX_ALIGN_LOG2
- sfi_breg r1, \
- ldr r7, [\B], #4
- .p2align ARM_BX_ALIGN_LOG2
- sfi_breg r1, \
- ldr r8, [\B], #4
- .p2align ARM_BX_ALIGN_LOG2
- sfi_breg r1, \
- ldr lr, [\B], #4
-
-#ifndef ARM_ALWAYS_BX
- add pc, pc, ip, lsl #(ARM_BX_ALIGN_LOG2 - 2)
- nop
-#else
- add r10, pc, ip, lsl #(ARM_BX_ALIGN_LOG2 - 2)
- bx r10
-#endif
- .p2align ARM_BX_ALIGN_LOG2
- nop
- .p2align ARM_BX_ALIGN_LOG2
- sfi_breg r0, \
- str r3, [\B], #4
- .p2align ARM_BX_ALIGN_LOG2
- sfi_breg r0, \
- str r4, [\B], #4
- .p2align ARM_BX_ALIGN_LOG2
- sfi_breg r0, \
- str r5, [\B], #4
- .p2align ARM_BX_ALIGN_LOG2
- sfi_breg r0, \
- str r6, [\B], #4
- .p2align ARM_BX_ALIGN_LOG2
- sfi_breg r0, \
- str r7, [\B], #4
- .p2align ARM_BX_ALIGN_LOG2
- sfi_breg r0, \
- str r8, [\B], #4
- .p2align ARM_BX_ALIGN_LOG2
- sfi_breg r0, \
- str lr, [\B], #4
-
-#ifdef ARM_ALWAYS_BX
- pop {r10}
- cfi_adjust_cfa_offset (-4)
- cfi_restore (r10)
-#endif
-
- CALGN( bcs 2b )
-
-7: pop {r5 - r8}
- cfi_adjust_cfa_offset (-16)
- cfi_restore (r5)
- cfi_restore (r6)
- cfi_restore (r7)
- cfi_restore (r8)
-
-8: movs r2, r2, lsl #31
- sfi_breg r1, \
- ldrbne r3, [\B], #1
- sfi_breg r1, \
- ldrbcs r4, [\B], #1
- sfi_breg r1, \
- ldrbcs ip, [\B]
- sfi_breg r0, \
- strbne r3, [\B], #1
- sfi_breg r0, \
- strbcs r4, [\B], #1
- sfi_breg r0, \
- strbcs ip, [\B]
-
-#if ((defined (__ARM_ARCH_4T__) && defined(__THUMB_INTERWORK__)) \
- || defined (ARM_ALWAYS_BX))
- pop {r0, r4, lr}
- cfi_adjust_cfa_offset (-12)
- cfi_restore (r4)
- cfi_restore (lr)
- bx lr
-#else
- pop {r0, r4, pc}
-#endif
-
- cfi_restore_state
-
-9: rsb ip, ip, #4
- cmp ip, #2
- sfi_breg r1, \
- ldrbgt r3, [\B], #1
- sfi_breg r1, \
- ldrbge r4, [\B], #1
- sfi_breg r1, \
- ldrb lr, [\B], #1
- sfi_breg r0, \
- strbgt r3, [\B], #1
- sfi_breg r0, \
- strbge r4, [\B], #1
- subs r2, r2, ip
- sfi_breg r0, \
- strb lr, [\B], #1
- blt 8b
- ands ip, r1, #3
- beq 1b
-
-10: bic r1, r1, #3
- cmp ip, #2
- sfi_breg r1, \
- ldr lr, [\B], #4
- beq 17f
- bgt 18f
-
-
- .macro forward_copy_shift pull push
-
- subs r2, r2, #28
- blt 14f
-
- CALGN( ands ip, r1, #31 )
- CALGN( rsb ip, ip, #32 )
- CALGN( sbcsne r4, ip, r2 ) @ C is always set here
- CALGN( subcc r2, r2, ip )
- CALGN( bcc 15f )
-
-11: push {r5 - r8, r10}
- cfi_adjust_cfa_offset (20)
- cfi_rel_offset (r5, 0)
- cfi_rel_offset (r6, 4)
- cfi_rel_offset (r7, 8)
- cfi_rel_offset (r8, 12)
- cfi_rel_offset (r10, 16)
-
- PLD( sfi_pld r1, #0 )
- PLD( subs r2, r2, #96 )
- PLD( sfi_pld r1, #28 )
- PLD( blt 13f )
- PLD( sfi_pld r1, #60 )
- PLD( sfi_pld r1, #92 )
-
-12: PLD( sfi_pld r1, #124 )
-13: sfi_breg r1, \
- ldmia \B!, {r4, r5, r6, r7}
- mov r3, lr, PULL #\pull
- subs r2, r2, #32
- sfi_breg r1, \
- ldmia \B!, {r8, r10, ip, lr}
- orr r3, r3, r4, PUSH #\push
- mov r4, r4, PULL #\pull
- orr r4, r4, r5, PUSH #\push
- mov r5, r5, PULL #\pull
- orr r5, r5, r6, PUSH #\push
- mov r6, r6, PULL #\pull
- orr r6, r6, r7, PUSH #\push
- mov r7, r7, PULL #\pull
- orr r7, r7, r8, PUSH #\push
- mov r8, r8, PULL #\pull
- orr r8, r8, r10, PUSH #\push
- mov r10, r10, PULL #\pull
- orr r10, r10, ip, PUSH #\push
- mov ip, ip, PULL #\pull
- orr ip, ip, lr, PUSH #\push
- sfi_breg r0, \
- stmia \B!, {r3, r4, r5, r6, r7, r8, r10, ip}
- bge 12b
- PLD( cmn r2, #96 )
- PLD( bge 13b )
-
- pop {r5 - r8, r10}
- cfi_adjust_cfa_offset (-20)
- cfi_restore (r5)
- cfi_restore (r6)
- cfi_restore (r7)
- cfi_restore (r8)
- cfi_restore (r10)
-
-14: ands ip, r2, #28
- beq 16f
-
-15: mov r3, lr, PULL #\pull
- sfi_breg r1, \
- ldr lr, [\B], #4
- subs ip, ip, #4
- orr r3, r3, lr, PUSH #\push
- sfi_breg r0, \
- str r3, [\B], #4
- bgt 15b
- CALGN( cmp r2, #0 )
- CALGN( bge 11b )
-
-16: sub r1, r1, #(\push / 8)
- b 8b
-
- .endm
-
-
- forward_copy_shift pull=8 push=24
-
-17: forward_copy_shift pull=16 push=16
-
-18: forward_copy_shift pull=24 push=8
-
-END(memcpy)
-libc_hidden_builtin_def (memcpy)
diff --git a/ports/sysdeps/arm/memmove.S b/ports/sysdeps/arm/memmove.S
deleted file mode 100644
index 04aa7db7b4..0000000000
--- a/ports/sysdeps/arm/memmove.S
+++ /dev/null
@@ -1,360 +0,0 @@
-/* Copyright (C) 2006-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- Contributed by MontaVista Software, Inc. (written by Nicolas Pitre)
-
- 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/>. */
-
-/* Thumb requires excessive IT insns here. */
-#define NO_THUMB
-#include <sysdep.h>
-#include <arm-features.h>
-
-/*
- * Data preload for architectures that support it (ARM V5TE and above)
- */
-#if (!defined (__ARM_ARCH_2__) && !defined (__ARM_ARCH_3__) \
- && !defined (__ARM_ARCH_3M__) && !defined (__ARM_ARCH_4__) \
- && !defined (__ARM_ARCH_4T__) && !defined (__ARM_ARCH_5__) \
- && !defined (__ARM_ARCH_5T__))
-#define PLD(code...) code
-#else
-#define PLD(code...)
-#endif
-
-/*
- * This can be used to enable code to cacheline align the source pointer.
- * Experiments on tested architectures (StrongARM and XScale) didn't show
- * this a worthwhile thing to do. That might be different in the future.
- */
-//#define CALGN(code...) code
-#define CALGN(code...)
-
-/*
- * Endian independent macros for shifting bytes within registers.
- */
-#ifndef __ARMEB__
-#define PULL lsr
-#define PUSH lsl
-#else
-#define PULL lsl
-#define PUSH lsr
-#endif
-
- .text
- .syntax unified
-
-/*
- * Prototype: void *memmove(void *dest, const void *src, size_t n);
- *
- * Note:
- *
- * If the memory regions don't overlap, we simply branch to memcpy which is
- * normally a bit faster. Otherwise the copy is done going downwards.
- */
-
-ENTRY(memmove)
-
- subs ip, r0, r1
- cmphi r2, ip
-#ifdef NOT_IN_libc
- bls memcpy
-#else
- bls HIDDEN_JUMPTARGET(memcpy)
-#endif
-
- push {r0, r4, lr}
- cfi_adjust_cfa_offset (12)
- cfi_rel_offset (r4, 4)
- cfi_rel_offset (lr, 8)
-
- cfi_remember_state
-
- add r1, r1, r2
- add r0, r0, r2
- subs r2, r2, #4
- blt 8f
- ands ip, r0, #3
- PLD( sfi_pld r1, #-4 )
- bne 9f
- ands ip, r1, #3
- bne 10f
-
-1: subs r2, r2, #(28)
- push {r5 - r8}
- cfi_adjust_cfa_offset (16)
- cfi_rel_offset (r5, 0)
- cfi_rel_offset (r6, 4)
- cfi_rel_offset (r7, 8)
- cfi_rel_offset (r8, 12)
- blt 5f
-
- CALGN( ands ip, r1, #31 )
- CALGN( sbcsne r4, ip, r2 ) @ C is always set here
- CALGN( bcs 2f )
- CALGN( adr r4, 6f )
- CALGN( subs r2, r2, ip ) @ C is set here
-#ifndef ARM_ALWAYS_BX
- CALGN( add pc, r4, ip, lsl #(ARM_BX_ALIGN_LOG2 - 2))
-#else
- CALGN( add r4, r4, ip, lsl #(ARM_BX_ALIGN_LOG2 - 2))
- CALGN( bx r4 )
-#endif
-
- PLD( sfi_pld r1, #-4 )
-2: PLD( subs r2, r2, #96 )
- PLD( sfi_pld r1, #-32 )
- PLD( blt 4f )
- PLD( sfi_pld r1, #-64 )
- PLD( sfi_pld r1, #-96 )
-
-3: PLD( sfi_pld r1, #-128 )
-4: sfi_breg r1, \
- ldmdb \B!, {r3, r4, r5, r6, r7, r8, ip, lr}
- subs r2, r2, #32
- sfi_breg r0, \
- stmdb \B!, {r3, r4, r5, r6, r7, r8, ip, lr}
- bge 3b
- PLD( cmn r2, #96 )
- PLD( bge 4b )
-
-5: ands ip, r2, #28
- rsb ip, ip, #32
-#ifndef ARM_ALWAYS_BX
- /* C is always clear here. */
- addne pc, pc, ip, lsl #(ARM_BX_ALIGN_LOG2 - 2)
- b 7f
-#else
- beq 7f
- push {r10}
- cfi_adjust_cfa_offset (4)
- cfi_rel_offset (r10, 0)
- add r10, pc, ip, lsl #(ARM_BX_ALIGN_LOG2 - 2)
- bx r10
-#endif
- .p2align ARM_BX_ALIGN_LOG2
-6: nop
- .p2align ARM_BX_ALIGN_LOG2
- sfi_breg r1, \
- ldr r3, [\B, #-4]!
- .p2align ARM_BX_ALIGN_LOG2
- sfi_breg r1, \
- ldr r4, [\B, #-4]!
- .p2align ARM_BX_ALIGN_LOG2
- sfi_breg r1, \
- ldr r5, [\B, #-4]!
- .p2align ARM_BX_ALIGN_LOG2
- sfi_breg r1, \
- ldr r6, [\B, #-4]!
- .p2align ARM_BX_ALIGN_LOG2
- sfi_breg r1, \
- ldr r7, [\B, #-4]!
- .p2align ARM_BX_ALIGN_LOG2
- sfi_breg r1, \
- ldr r8, [\B, #-4]!
- .p2align ARM_BX_ALIGN_LOG2
- sfi_breg r1, \
- ldr lr, [\B, #-4]!
-
-#ifndef ARM_ALWAYS_BX
- add pc, pc, ip, lsl #(ARM_BX_ALIGN_LOG2 - 2)
- nop
-#else
- add r10, pc, ip, lsl #(ARM_BX_ALIGN_LOG2 - 2)
- bx r10
-#endif
- .p2align ARM_BX_ALIGN_LOG2
- nop
- .p2align ARM_BX_ALIGN_LOG2
- sfi_breg r0, \
- str r3, [\B, #-4]!
- .p2align ARM_BX_ALIGN_LOG2
- sfi_breg r0, \
- str r4, [\B, #-4]!
- .p2align ARM_BX_ALIGN_LOG2
- sfi_breg r0, \
- str r5, [\B, #-4]!
- .p2align ARM_BX_ALIGN_LOG2
- sfi_breg r0, \
- str r6, [\B, #-4]!
- .p2align ARM_BX_ALIGN_LOG2
- sfi_breg r0, \
- str r7, [\B, #-4]!
- .p2align ARM_BX_ALIGN_LOG2
- sfi_breg r0, \
- str r8, [\B, #-4]!
- .p2align ARM_BX_ALIGN_LOG2
- sfi_breg r0, \
- str lr, [\B, #-4]!
-
-#ifdef ARM_ALWAYS_BX
- pop {r10}
- cfi_adjust_cfa_offset (-4)
- cfi_restore (r10)
-#endif
-
- CALGN( bcs 2b )
-
-7: pop {r5 - r8}
- cfi_adjust_cfa_offset (-16)
- cfi_restore (r5)
- cfi_restore (r6)
- cfi_restore (r7)
- cfi_restore (r8)
-
-8: movs r2, r2, lsl #31
- sfi_breg r1, \
- ldrbne r3, [\B, #-1]!
- sfi_breg r1, \
- ldrbcs r4, [\B, #-1]!
- sfi_breg r1, \
- ldrbcs ip, [\B, #-1]
- sfi_breg r0, \
- strbne r3, [\B, #-1]!
- sfi_breg r0, \
- strbcs r4, [\B, #-1]!
- sfi_breg r0, \
- strbcs ip, [\B, #-1]
-
-#if ((defined (__ARM_ARCH_4T__) && defined (__THUMB_INTERWORK__)) \
- || defined (ARM_ALWAYS_BX))
- pop {r0, r4, lr}
- cfi_adjust_cfa_offset (-12)
- cfi_restore (r4)
- cfi_restore (lr)
- bx lr
-#else
- pop {r0, r4, pc}
-#endif
-
- cfi_restore_state
-
-9: cmp ip, #2
- sfi_breg r1, \
- ldrbgt r3, [\B, #-1]!
- sfi_breg r1, \
- ldrbge r4, [\B, #-1]!
- sfi_breg r1, \
- ldrb lr, [\B, #-1]!
- sfi_breg r0, \
- strbgt r3, [\B, #-1]!
- sfi_breg r0, \
- strbge r4, [\B, #-1]!
- subs r2, r2, ip
- sfi_breg r0, \
- strb lr, [\B, #-1]!
- blt 8b
- ands ip, r1, #3
- beq 1b
-
-10: bic r1, r1, #3
- cmp ip, #2
- sfi_breg r1, \
- ldr r3, [\B, #0]
- beq 17f
- blt 18f
-
-
- .macro backward_copy_shift push pull
-
- subs r2, r2, #28
- blt 14f
-
- CALGN( ands ip, r1, #31 )
- CALGN( rsb ip, ip, #32 )
- CALGN( sbcsne r4, ip, r2 ) @ C is always set here
- CALGN( subcc r2, r2, ip )
- CALGN( bcc 15f )
-
-11: push {r5 - r8, r10}
- cfi_adjust_cfa_offset (20)
- cfi_rel_offset (r5, 0)
- cfi_rel_offset (r6, 4)
- cfi_rel_offset (r7, 8)
- cfi_rel_offset (r8, 12)
- cfi_rel_offset (r10, 16)
-
- PLD( sfi_pld r1, #-4 )
- PLD( subs r2, r2, #96 )
- PLD( sfi_pld r1, #-32 )
- PLD( blt 13f )
- PLD( sfi_pld r1, #-64 )
- PLD( sfi_pld r1, #-96 )
-
-12: PLD( sfi_pld r1, #-128 )
-13: sfi_breg r1, \
- ldmdb \B!, {r7, r8, r10, ip}
- mov lr, r3, PUSH #\push
- subs r2, r2, #32
- sfi_breg r1, \
- ldmdb \B!, {r3, r4, r5, r6}
- orr lr, lr, ip, PULL #\pull
- mov ip, ip, PUSH #\push
- orr ip, ip, r10, PULL #\pull
- mov r10, r10, PUSH #\push
- orr r10, r10, r8, PULL #\pull
- mov r8, r8, PUSH #\push
- orr r8, r8, r7, PULL #\pull
- mov r7, r7, PUSH #\push
- orr r7, r7, r6, PULL #\pull
- mov r6, r6, PUSH #\push
- orr r6, r6, r5, PULL #\pull
- mov r5, r5, PUSH #\push
- orr r5, r5, r4, PULL #\pull
- mov r4, r4, PUSH #\push
- orr r4, r4, r3, PULL #\pull
- sfi_breg r0, \
- stmdb \B!, {r4 - r8, r10, ip, lr}
- bge 12b
- PLD( cmn r2, #96 )
- PLD( bge 13b )
-
- pop {r5 - r8, r10}
- cfi_adjust_cfa_offset (-20)
- cfi_restore (r5)
- cfi_restore (r6)
- cfi_restore (r7)
- cfi_restore (r8)
- cfi_restore (r10)
-
-14: ands ip, r2, #28
- beq 16f
-
-15: mov lr, r3, PUSH #\push
- sfi_breg r1, \
- ldr r3, [\B, #-4]!
- subs ip, ip, #4
- orr lr, lr, r3, PULL #\pull
- sfi_breg r0, \
- str lr, [\B, #-4]!
- bgt 15b
- CALGN( cmp r2, #0 )
- CALGN( bge 11b )
-
-16: add r1, r1, #(\pull / 8)
- b 8b
-
- .endm
-
-
- backward_copy_shift push=8 pull=24
-
-17: backward_copy_shift push=16 pull=16
-
-18: backward_copy_shift push=24 pull=8
-
-
-END(memmove)
-libc_hidden_builtin_def (memmove)
diff --git a/ports/sysdeps/arm/memset.S b/ports/sysdeps/arm/memset.S
deleted file mode 100644
index cf04db4634..0000000000
--- a/ports/sysdeps/arm/memset.S
+++ /dev/null
@@ -1,78 +0,0 @@
-/* Copyright (C) 1998-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Philip Blundell <philb@gnu.org>
-
- 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/>. */
-
-/* Thumb requires excessive IT insns here. */
-#define NO_THUMB
-#include <sysdep.h>
-
- .text
- .syntax unified
-
-/* void *memset (dstpp, c, len) */
-
-ENTRY(memset)
- mov r3, r0
- cmp r2, #8
- bcc 2f @ less than 8 bytes to move
-
-1:
- tst r3, #3 @ aligned yet?
- sfi_breg r3, \
- strbne r1, [\B], #1
- subne r2, r2, #1
- bne 1b
-
- and r1, r1, #255 @ clear any sign bits
- orr r1, r1, r1, lsl $8
- orr r1, r1, r1, lsl $16
- mov ip, r1
-
-1:
- subs r2, r2, #8
- sfi_breg r3, \
- stmiacs \B!, {r1, ip} @ store up to 32 bytes per loop iteration
- subscs r2, r2, #8
- sfi_breg r3, \
- stmiacs \B!, {r1, ip}
- subscs r2, r2, #8
- sfi_breg r3, \
- stmiacs \B!, {r1, ip}
- subscs r2, r2, #8
- sfi_breg r3, \
- stmiacs \B!, {r1, ip}
- bcs 1b
-
- and r2, r2, #7
-2:
- subs r2, r2, #1 @ store up to 4 bytes per loop iteration
- sfi_breg r3, \
- strbcs r1, [\B], #1
- subscs r2, r2, #1
- sfi_breg r3, \
- strbcs r1, [\B], #1
- subscs r2, r2, #1
- sfi_breg r3, \
- strbcs r1, [\B], #1
- subscs r2, r2, #1
- sfi_breg r3, \
- strbcs r1, [\B], #1
- bcs 2b
-
- DO_RET(lr)
-END(memset)
-libc_hidden_builtin_def (memset)
diff --git a/ports/sysdeps/arm/memusage.h b/ports/sysdeps/arm/memusage.h
deleted file mode 100644
index 51f276c200..0000000000
--- a/ports/sysdeps/arm/memusage.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Copyright (C) 2000-2014 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 GETSP() ({ register uintptr_t stack_ptr asm ("sp"); stack_ptr; })
-
-#include <sysdeps/generic/memusage.h>
diff --git a/ports/sysdeps/arm/nptl/Makefile b/ports/sysdeps/arm/nptl/Makefile
deleted file mode 100644
index 143850e6c8..0000000000
--- a/ports/sysdeps/arm/nptl/Makefile
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright (C) 2005-2014 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/>.
-
-ifeq ($(subdir),csu)
-gen-as-const-headers += tcb-offsets.sym
-endif
diff --git a/ports/sysdeps/arm/nptl/pthread_spin_lock.c b/ports/sysdeps/arm/nptl/pthread_spin_lock.c
deleted file mode 100644
index 7105c73594..0000000000
--- a/ports/sysdeps/arm/nptl/pthread_spin_lock.c
+++ /dev/null
@@ -1,23 +0,0 @@
-/* Copyright (C) 2008-2014 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 SPIN_LOCK_READS_BETWEEN_CMPXCHG 1000
-
-/* We can't use the normal "#include <nptl/pthread_spin_lock.c>" because
- it will resolve to this very file. Using "sysdeps/.." as reference to the
- top level directory does the job. */
-#include <sysdeps/../nptl/pthread_spin_lock.c>
diff --git a/ports/sysdeps/arm/nptl/pthreaddef.h b/ports/sysdeps/arm/nptl/pthreaddef.h
deleted file mode 100644
index 2488af9828..0000000000
--- a/ports/sysdeps/arm/nptl/pthreaddef.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Copyright (C) 2002-2014 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/>. */
-
-/* Default stack size. */
-#define ARCH_STACK_DEFAULT_SIZE (2 * 1024 * 1024)
-
-/* Required stack pointer alignment at beginning. SSE requires 16
- bytes. */
-#define STACK_ALIGN 16
-
-/* Minimal stack size after allocating thread descriptor and guard size. */
-#define MINIMAL_REST_STACK 2048
-
-/* Alignment requirement for TCB. */
-#define TCB_ALIGNMENT 16
-
-
-/* Location of current stack frame.
-
- __builtin_frame_address (0) returns the value of the hard frame
- pointer, which will point at the location of the saved PC on the
- stack. Below this in memory is the remainder of the linkage info,
- occupying 12 bytes. Therefore in order to address from
- CURRENT_STACK_FRAME using "struct layout", we need to have the macro
- return the hard FP minus 12. Of course, this makes no sense
- without the obsolete APCS stack layout... */
-#define CURRENT_STACK_FRAME (__builtin_frame_address (0) - 12)
-
-
-/* XXX Until we have a better place keep the definitions here. */
-#define __exit_thread_inline(val) \
- INLINE_SYSCALL (exit, 1, (val))
diff --git a/ports/sysdeps/arm/nptl/tcb-offsets.sym b/ports/sysdeps/arm/nptl/tcb-offsets.sym
deleted file mode 100644
index 92cc441d3d..0000000000
--- a/ports/sysdeps/arm/nptl/tcb-offsets.sym
+++ /dev/null
@@ -1,11 +0,0 @@
-#include <sysdep.h>
-#include <tls.h>
-
---
-
--- Derive offsets relative to the thread register.
-#define thread_offsetof(mem) (long)(offsetof(struct pthread, mem) - sizeof(struct pthread))
-
-MULTIPLE_THREADS_OFFSET thread_offsetof (header.multiple_threads)
-PID_OFFSET thread_offsetof (pid)
-TID_OFFSET thread_offsetof (tid)
diff --git a/ports/sysdeps/arm/nptl/tls.h b/ports/sysdeps/arm/nptl/tls.h
deleted file mode 100644
index 8cc0a62173..0000000000
--- a/ports/sysdeps/arm/nptl/tls.h
+++ /dev/null
@@ -1,147 +0,0 @@
-/* Definition for thread-local data handling. NPTL/ARM version.
- Copyright (C) 2005-2014 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 _TLS_H
-#define _TLS_H 1
-
-#include <dl-sysdep.h>
-
-#ifndef __ASSEMBLER__
-# include <stdbool.h>
-# include <stddef.h>
-# include <stdint.h>
-
-/* Type for the dtv. */
-typedef union dtv
-{
- size_t counter;
- struct
- {
- void *val;
- bool is_static;
- } pointer;
-} dtv_t;
-
-#else /* __ASSEMBLER__ */
-# include <tcb-offsets.h>
-#endif /* __ASSEMBLER__ */
-
-
-#ifndef __ASSEMBLER__
-
-/* Get system call information. */
-# include <sysdep.h>
-
-/* The TP points to the start of the thread blocks. */
-# define TLS_DTV_AT_TP 1
-
-/* Get the thread descriptor definition. */
-# include <nptl/descr.h>
-
-typedef struct
-{
- dtv_t *dtv;
- void *private;
-} tcbhead_t;
-
-/* This is the size of the initial TCB. */
-# define TLS_INIT_TCB_SIZE sizeof (tcbhead_t)
-
-/* Alignment requirements for the initial TCB. */
-# define TLS_INIT_TCB_ALIGN 16
-
-/* This is the size of the TCB. */
-# define TLS_TCB_SIZE sizeof (tcbhead_t)
-
-/* This is the size we need before TCB. */
-# define TLS_PRE_TCB_SIZE sizeof (struct pthread)
-
-/* Alignment requirements for the TCB. */
-# define TLS_TCB_ALIGN 16
-
-/* Install the dtv pointer. The pointer passed is to the element with
- index -1 which contain the length. */
-# define INSTALL_DTV(tcbp, dtvp) \
- (((tcbhead_t *) (tcbp))->dtv = (dtvp) + 1)
-
-/* Install new dtv for current thread. */
-# define INSTALL_NEW_DTV(dtv) \
- (THREAD_DTV() = (dtv))
-
-/* Return dtv of given thread descriptor. */
-# define GET_DTV(tcbp) \
- (((tcbhead_t *) (tcbp))->dtv)
-
-/* Code to initially initialize the thread pointer. This might need
- special attention since 'errno' is not yet available and if the
- operation can cause a failure 'errno' must not be touched. */
-# define TLS_INIT_TP(tcbp, secondcall) \
- ({ INTERNAL_SYSCALL_DECL (err); \
- long result_var; \
- result_var = INTERNAL_SYSCALL_ARM (set_tls, err, 1, (tcbp)); \
- INTERNAL_SYSCALL_ERROR_P (result_var, err) \
- ? "unknown error" : NULL; })
-
-/* Return the address of the dtv for the current thread. */
-# define THREAD_DTV() \
- (((tcbhead_t *) __builtin_thread_pointer ())->dtv)
-
-/* Return the thread descriptor for the current thread. */
-# define THREAD_SELF \
- ((struct pthread *)__builtin_thread_pointer () - 1)
-
-/* Magic for libthread_db to know how to do THREAD_SELF. */
-# define DB_THREAD_SELF \
- CONST_THREAD_AREA (32, sizeof (struct pthread))
-
-/* Access to data in the thread descriptor is easy. */
-#define THREAD_GETMEM(descr, member) \
- descr->member
-#define THREAD_GETMEM_NC(descr, member, idx) \
- descr->member[idx]
-#define THREAD_SETMEM(descr, member, value) \
- descr->member = (value)
-#define THREAD_SETMEM_NC(descr, member, idx, value) \
- descr->member[idx] = (value)
-
-/* Get and set the global scope generation counter in struct pthread. */
-#define THREAD_GSCOPE_FLAG_UNUSED 0
-#define THREAD_GSCOPE_FLAG_USED 1
-#define THREAD_GSCOPE_FLAG_WAIT 2
-#define THREAD_GSCOPE_RESET_FLAG() \
- do \
- { int __res \
- = atomic_exchange_rel (&THREAD_SELF->header.gscope_flag, \
- THREAD_GSCOPE_FLAG_UNUSED); \
- if (__res == THREAD_GSCOPE_FLAG_WAIT) \
- lll_futex_wake (&THREAD_SELF->header.gscope_flag, 1, LLL_PRIVATE); \
- } \
- while (0)
-#define THREAD_GSCOPE_SET_FLAG() \
- do \
- { \
- THREAD_SELF->header.gscope_flag = THREAD_GSCOPE_FLAG_USED; \
- atomic_write_barrier (); \
- } \
- while (0)
-#define THREAD_GSCOPE_WAIT() \
- GL(dl_wait_lookup_done) ()
-
-#endif /* __ASSEMBLER__ */
-
-#endif /* tls.h */
diff --git a/ports/sysdeps/arm/preconfigure b/ports/sysdeps/arm/preconfigure
deleted file mode 100644
index b3124edae2..0000000000
--- a/ports/sysdeps/arm/preconfigure
+++ /dev/null
@@ -1,63 +0,0 @@
-# This file is generated from configure.ac by Autoconf. DO NOT EDIT!
- # Local preconfigure fragment for sysdeps/arm
-
-case "$machine" in
-arm*)
- case $config_os in
- linux-gnueabi*)
- # If the compiler enables unwind tables by default, this causes
- # problems with undefined symbols in -nostdlib link tests. To
- # avoid this, add -fno-unwind-tables here and remove it in
- # sysdeps/unix/sysv/linux/arm/configure.ac after those tests have
- # been run.
- if test "${CFLAGS+set}" != "set"; then
- CFLAGS="-g -O2"
- fi
- CFLAGS="$CFLAGS -fno-unwind-tables"
- ;;
- linux*)
- as_fn_error $? "Old ABI no longer supported" "$LINENO" 5
- ;;
- esac
-
- base_machine=arm
- # Lets ask the compiler which ARM family we've got
- # Unfortunately it doesn't define any flags for implementations
- # that you might pass to -mcpu or -mtune
- # Note if you add patterns here you must ensure that
- # an appropriate directory exists in sysdeps/arm
- archcppflag=`$CC $CFLAGS $CPPFLAGS -E -dM -xc /dev/null |
- sed -n 's/^#define \(__ARM_ARCH_[0-9].*__\) .*$/\1/p'`
-
- case "x$archcppflag" in
- x__ARM_ARCH_89*__)
- machine=armv7
- { $as_echo "$as_me:${as_lineno-$LINENO}: Found compiler is configured for something newer than v7 - using v7" >&5
-$as_echo "$as_me: Found compiler is configured for something newer than v7 - using v7" >&6;}
- ;;
-
- x__ARM_ARCH_7A__)
- machine=armv7
- { $as_echo "$as_me:${as_lineno-$LINENO}: Found compiler is configured for $machine" >&5
-$as_echo "$as_me: Found compiler is configured for $machine" >&6;}
- ;;
-
- x__ARM_ARCH_6T2__)
- machine=armv6t2
- { $as_echo "$as_me:${as_lineno-$LINENO}: Found compiler is configured for $machine" >&5
-$as_echo "$as_me: Found compiler is configured for $machine" >&6;}
- ;;
- x__ARM_ARCH_6*__)
- machine=armv6
- { $as_echo "$as_me:${as_lineno-$LINENO}: Found compiler is configured for $machine" >&5
-$as_echo "$as_me: Found compiler is configured for $machine" >&6;}
- ;;
- *)
- machine=arm
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: arm/preconfigure: Did not find ARM architecture type; using default" >&5
-$as_echo "$as_me: WARNING: arm/preconfigure: Did not find ARM architecture type; using default" >&2;}
- ;;
- esac
-
- machine=arm/$machine
-esac
diff --git a/ports/sysdeps/arm/preconfigure.ac b/ports/sysdeps/arm/preconfigure.ac
deleted file mode 100644
index 39c86218aa..0000000000
--- a/ports/sysdeps/arm/preconfigure.ac
+++ /dev/null
@@ -1,58 +0,0 @@
-GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
-# Local preconfigure fragment for sysdeps/arm
-
-case "$machine" in
-arm*)
- case $config_os in
- linux-gnueabi*)
- # If the compiler enables unwind tables by default, this causes
- # problems with undefined symbols in -nostdlib link tests. To
- # avoid this, add -fno-unwind-tables here and remove it in
- # sysdeps/unix/sysv/linux/arm/configure.ac after those tests have
- # been run.
- if test "${CFLAGS+set}" != "set"; then
- CFLAGS="-g -O2"
- fi
- CFLAGS="$CFLAGS -fno-unwind-tables"
- ;;
- linux*)
- AC_MSG_ERROR([Old ABI no longer supported])
- ;;
- esac
-
- base_machine=arm
- # Lets ask the compiler which ARM family we've got
- # Unfortunately it doesn't define any flags for implementations
- # that you might pass to -mcpu or -mtune
- # Note if you add patterns here you must ensure that
- # an appropriate directory exists in sysdeps/arm
- archcppflag=`$CC $CFLAGS $CPPFLAGS -E -dM -xc /dev/null |
- sed -n 's/^#define \(__ARM_ARCH_[0-9].*__\) .*$/\1/p'`
-
- case "x$archcppflag" in
- x__ARM_ARCH_[89]*__)
- machine=armv7
- AC_MSG_NOTICE([Found compiler is configured for something newer than v7 - using v7])
- ;;
-
- x__ARM_ARCH_7A__)
- machine=armv7
- AC_MSG_NOTICE([Found compiler is configured for $machine])
- ;;
-
- x__ARM_ARCH_6T2__)
- machine=armv6t2
- AC_MSG_NOTICE([Found compiler is configured for $machine])
- ;;
- x__ARM_ARCH_6*__)
- machine=armv6
- AC_MSG_NOTICE([Found compiler is configured for $machine])
- ;;
- *)
- machine=arm
- AC_MSG_WARN([arm/preconfigure: Did not find ARM architecture type; using default])
- ;;
- esac
-
- machine=arm/$machine
-esac
diff --git a/ports/sysdeps/arm/rtld-global-offsets.sym b/ports/sysdeps/arm/rtld-global-offsets.sym
deleted file mode 100644
index ff4e97f2a6..0000000000
--- a/ports/sysdeps/arm/rtld-global-offsets.sym
+++ /dev/null
@@ -1,7 +0,0 @@
-#define SHARED 1
-
-#include <ldsodefs.h>
-
-#define rtld_global_ro_offsetof(mem) offsetof (struct rtld_global_ro, mem)
-
-RTLD_GLOBAL_RO_DL_HWCAP_OFFSET rtld_global_ro_offsetof (_dl_hwcap)
diff --git a/ports/sysdeps/arm/s_fma.c b/ports/sysdeps/arm/s_fma.c
deleted file mode 100644
index dc4e27bfc1..0000000000
--- a/ports/sysdeps/arm/s_fma.c
+++ /dev/null
@@ -1,5 +0,0 @@
-#ifdef __SOFTFP__
-# include <soft-fp/fmadf4.c>
-#else
-# include <sysdeps/ieee754/dbl-64/s_fma.c>
-#endif
diff --git a/ports/sysdeps/arm/s_fmaf.c b/ports/sysdeps/arm/s_fmaf.c
deleted file mode 100644
index 550d8b85d3..0000000000
--- a/ports/sysdeps/arm/s_fmaf.c
+++ /dev/null
@@ -1,5 +0,0 @@
-#ifdef __SOFTFP__
-# include <soft-fp/fmasf4.c>
-#else
-# include <sysdeps/ieee754/dbl-64/s_fmaf.c>
-#endif
diff --git a/ports/sysdeps/arm/setfpucw.c b/ports/sysdeps/arm/setfpucw.c
deleted file mode 100644
index 92333eb364..0000000000
--- a/ports/sysdeps/arm/setfpucw.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Set the FPU control word.
- Copyright (C) 1996-2014 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 <math.h>
-#include <fpu_control.h>
-#include <arm-features.h>
-
-
-void
-__setfpucw (fpu_control_t set)
-{
- if (ARM_HAVE_VFP)
- {
- fpu_control_t cw;
-
- /* Fetch the current control word. */
- _FPU_GETCW (cw);
-
- /* Preserve the reserved bits, and set the rest as the user
- specified (or the default, if the user gave zero). */
- cw &= _FPU_RESERVED;
- cw |= set & ~_FPU_RESERVED;
-
- _FPU_SETCW (cw);
- }
-
- /* Do nothing if a VFP unit isn't present. */
-}
diff --git a/ports/sysdeps/arm/setjmp.S b/ports/sysdeps/arm/setjmp.S
deleted file mode 100644
index b0b45ed8da..0000000000
--- a/ports/sysdeps/arm/setjmp.S
+++ /dev/null
@@ -1,126 +0,0 @@
-/* setjmp for ARM.
- Copyright (C) 1997-2014 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>
-#include <bits/setjmp.h>
-#include <rtld-global-offsets.h>
-#include <arm-features.h>
-
-ENTRY (__sigsetjmp)
-#ifdef PTR_MANGLE
- PTR_MANGLE_LOAD (a3, ip)
-#endif
- mov ip, r0
-
- /* Save registers */
- sfi_breg ip, \
- stmia \B!, JMP_BUF_REGLIST
-#ifdef PTR_MANGLE
- mov a4, sp
- PTR_MANGLE2 (a4, a4, a3)
- str a4, [ip], #4
- PTR_MANGLE2 (a4, lr, a3)
- str a4, [ip], #4
-#else
- str sp, [ip], #4
- str lr, [ip], #4
-#endif
-
-#if !defined ARM_ASSUME_NO_IWMMXT || defined __SOFTFP__
-# define NEED_HWCAP 1
-#endif
-
-#ifdef NEED_HWCAP
- /* Check if we have a VFP unit. */
-# ifdef IS_IN_rtld
- ldr a3, 1f
- ldr a4, .Lrtld_local_ro
-0: add a3, pc, a3
- add a3, a3, a4
- ldr a3, [a3, #RTLD_GLOBAL_RO_DL_HWCAP_OFFSET]
-# else
-# ifdef PIC
- ldr a3, 1f
- ldr a4, .Lrtld_global_ro
-0: add a3, pc, a3
- ldr a3, [a3, a4]
- ldr a3, [a3, #RTLD_GLOBAL_RO_DL_HWCAP_OFFSET]
-# else
- ldr a3, .Lhwcap
- ldr a3, [a3, #0]
-# endif
-# endif
-#endif
-
-#ifdef __SOFTFP__
- tst a3, #HWCAP_ARM_VFP
- beq .Lno_vfp
-#endif
-
- /* Store the VFP registers.
- Don't use VFP instructions directly because this code
- is used in non-VFP multilibs. */
- /* Following instruction is vstmia ip!, {d8-d15}. */
- sfi_breg ip, \
- stc p11, cr8, [\B], #64
-.Lno_vfp:
-
-#ifndef ARM_ASSUME_NO_IWMMXT
- tst a3, #HWCAP_ARM_IWMMXT
- beq .Lno_iwmmxt
-
- /* Save the call-preserved iWMMXt registers. */
- /* Following instructions are wstrd wr10, [ip], #8 (etc.) */
- sfi_breg r12, \
- stcl p1, cr10, [\B], #8
- sfi_breg r12, \
- stcl p1, cr11, [\B], #8
- sfi_breg r12, \
- stcl p1, cr12, [\B], #8
- sfi_breg r12, \
- stcl p1, cr13, [\B], #8
- sfi_breg r12, \
- stcl p1, cr14, [\B], #8
- sfi_breg r12, \
- stcl p1, cr15, [\B], #8
-.Lno_iwmmxt:
-#endif
-
- /* Make a tail call to __sigjmp_save; it takes the same args. */
- B PLTJMP(C_SYMBOL_NAME(__sigjmp_save))
-
-#ifdef NEED_HWCAP
-# ifdef IS_IN_rtld
-1: .long _GLOBAL_OFFSET_TABLE_ - 0b - PC_OFS
-.Lrtld_local_ro:
- .long C_SYMBOL_NAME(_rtld_local_ro)(GOTOFF)
-# else
-# ifdef PIC
-1: .long _GLOBAL_OFFSET_TABLE_ - 0b - PC_OFS
-.Lrtld_global_ro:
- .long C_SYMBOL_NAME(_rtld_global_ro)(GOT)
-# else
-.Lhwcap:
- .long C_SYMBOL_NAME(_dl_hwcap)
-# endif
-# endif
-#endif
-
-END (__sigsetjmp)
-
-hidden_def (__sigsetjmp)
diff --git a/ports/sysdeps/arm/shlib-versions b/ports/sysdeps/arm/shlib-versions
deleted file mode 100644
index 1ac597abbb..0000000000
--- a/ports/sysdeps/arm/shlib-versions
+++ /dev/null
@@ -1,9 +0,0 @@
-arm.*-.*-linux-gnueabi.* DEFAULT GLIBC_2.4
-
-%ifdef HAVE_ARM_PCS_VFP
-# The EABI-derived hard-float ABI uses a new dynamic linker.
-arm.*-.*-linux-gnueabi.* ld=ld-linux-armhf.so.3
-%else
-# The EABI-derived soft-float ABI continues to use ld-linux.so.3.
-arm.*-.*-linux-gnueabi.* ld=ld-linux.so.3
-%endif
diff --git a/ports/sysdeps/arm/soft-fp/sfp-machine.h b/ports/sysdeps/arm/soft-fp/sfp-machine.h
deleted file mode 100644
index eba6e35ced..0000000000
--- a/ports/sysdeps/arm/soft-fp/sfp-machine.h
+++ /dev/null
@@ -1,49 +0,0 @@
-#define _FP_W_TYPE_SIZE 32
-#define _FP_W_TYPE unsigned long
-#define _FP_WS_TYPE signed long
-#define _FP_I_TYPE long
-
-#define _FP_MUL_MEAT_S(R,X,Y) \
- _FP_MUL_MEAT_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm)
-#define _FP_MUL_MEAT_D(R,X,Y) \
- _FP_MUL_MEAT_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm)
-#define _FP_MUL_MEAT_Q(R,X,Y) \
- _FP_MUL_MEAT_4_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm)
-
-#define _FP_MUL_MEAT_DW_S(R,X,Y) \
- _FP_MUL_MEAT_DW_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm)
-#define _FP_MUL_MEAT_DW_D(R,X,Y) \
- _FP_MUL_MEAT_DW_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm)
-#define _FP_MUL_MEAT_DW_Q(R,X,Y) \
- _FP_MUL_MEAT_DW_4_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm)
-
-#define _FP_DIV_MEAT_S(R,X,Y) _FP_DIV_MEAT_1_loop(S,R,X,Y)
-#define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_2_udiv(D,R,X,Y)
-#define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_4_udiv(Q,R,X,Y)
-
-#define _FP_NANFRAC_S ((_FP_QNANBIT_S << 1) - 1)
-#define _FP_NANFRAC_D ((_FP_QNANBIT_D << 1) - 1), -1
-#define _FP_NANFRAC_Q ((_FP_QNANBIT_Q << 1) - 1), -1, -1, -1
-#define _FP_NANSIGN_S 0
-#define _FP_NANSIGN_D 0
-#define _FP_NANSIGN_Q 0
-
-#define _FP_KEEPNANFRACP 1
-#define _FP_QNANNEGATEDP 0
-
-/* Someone please check this. */
-#define _FP_CHOOSENAN(fs, wc, R, X, Y, OP) \
- do { \
- if ((_FP_FRAC_HIGH_RAW_##fs(X) & _FP_QNANBIT_##fs) \
- && !(_FP_FRAC_HIGH_RAW_##fs(Y) & _FP_QNANBIT_##fs)) \
- { \
- R##_s = Y##_s; \
- _FP_FRAC_COPY_##wc(R,Y); \
- } \
- else \
- { \
- R##_s = X##_s; \
- _FP_FRAC_COPY_##wc(R,X); \
- } \
- R##_c = FP_CLS_NAN; \
- } while (0)
diff --git a/ports/sysdeps/arm/sotruss-lib.c b/ports/sysdeps/arm/sotruss-lib.c
deleted file mode 100644
index 1f5431c36b..0000000000
--- a/ports/sysdeps/arm/sotruss-lib.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Override generic sotruss-lib.c to define actual functions for ARM.
- Copyright (C) 2012-2014 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 HAVE_ARCH_PLTENTER
-#define HAVE_ARCH_PLTEXIT
-
-#include <elf/sotruss-lib.c>
-
-ElfW(Addr)
-la_arm_gnu_pltenter (ElfW(Sym) *sym __attribute__ ((unused)),
- unsigned int ndx __attribute__ ((unused)),
- uintptr_t *refcook, uintptr_t *defcook,
- La_arm_regs *regs, unsigned int *flags,
- const char *symname, long int *framesizep)
-{
- print_enter (refcook, defcook, symname,
- regs->lr_reg[0], regs->lr_reg[1], regs->lr_reg[2],
- *flags);
-
- /* No need to copy anything, we will not need the parameters in any case. */
- *framesizep = 0;
-
- return sym->st_value;
-}
-
-unsigned int
-la_arm_gnu_pltexit (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook,
- uintptr_t *defcook, const struct La_arm_regs *inregs,
- struct La_arm_retval *outregs, const char *symname)
-{
- print_exit (refcook, defcook, symname, outregs->lrv_reg[0]);
-
- return 0;
-}
diff --git a/ports/sysdeps/arm/stackinfo.h b/ports/sysdeps/arm/stackinfo.h
deleted file mode 100644
index dc08a17894..0000000000
--- a/ports/sysdeps/arm/stackinfo.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Copyright (C) 2001-2014 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/>. */
-
-/* This file contains a bit of information about the stack allocation
- of the processor. */
-
-#ifndef _STACKINFO_H
-#define _STACKINFO_H 1
-
-#include <elf.h>
-
-/* On Arm the stack grows down. */
-#define _STACK_GROWS_DOWN 1
-
-/* Default to an executable stack. PF_X can be overridden if PT_GNU_STACK is
- * present, but it is presumed absent. */
-#define DEFAULT_STACK_PERMS (PF_R|PF_W|PF_X)
-
-#endif /* stackinfo.h */
diff --git a/ports/sysdeps/arm/start.S b/ports/sysdeps/arm/start.S
deleted file mode 100644
index adf6531892..0000000000
--- a/ports/sysdeps/arm/start.S
+++ /dev/null
@@ -1,148 +0,0 @@
-/* Startup code for ARM & ELF
- Copyright (C) 1995-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file with other
- programs, and to distribute those programs without any restriction
- coming from the use of this file. (The GNU Lesser General Public
- License restrictions do apply in other respects; for example, they
- cover modification of the file, and distribution when not linked
- into another program.)
-
- Note that people who make modified versions of this file are not
- obligated to grant this special exception for their modified
- versions; it is their choice whether to do so. The GNU Lesser
- General Public License gives permission to release a modified
- version without this exception; this exception also makes it
- possible to release a modified version which carries forward this
- exception.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library. If not, see
- <http://www.gnu.org/licenses/>. */
-
-/* This is the canonical entry point, usually the first thing in the text
- segment.
-
- Note that the code in the .init section has already been run.
- This includes _init and _libc_init
-
-
- At this entry point, most registers' values are unspecified, except:
-
- a1 Contains a function pointer to be registered with `atexit'.
- This is how the dynamic linker arranges to have DT_FINI
- functions called for shared libraries that have been loaded
- before this code runs.
-
- sp The stack contains the arguments and environment:
- 0(sp) argc
- 4(sp) argv[0]
- ...
- (4*argc)(sp) NULL
- (4*(argc+1))(sp) envp[0]
- ...
- NULL
-*/
-
-/* 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
-
-#if defined(__thumb2__)
- .thumb
- .syntax unified
-#endif
-
- .text
- .globl _start
- .type _start,#function
-_start:
- /* Protect against unhandled exceptions. */
- .fnstart
- /* Clear the frame pointer and link register since this is the outermost frame. */
- mov fp, #0
- mov lr, #0
-
- /* Pop argc off the stack and save a pointer to argv */
- pop { a2 }
- mov a3, sp
-
- /* Push stack limit */
- push { a3 }
-
- /* Push rtld_fini */
- push { a1 }
-
-#ifdef SHARED
- ldr sl, .L_GOT
- adr a4, .L_GOT
- add sl, sl, a4
-
- ldr ip, .L_GOT+4 /* __libc_csu_fini */
- ldr ip, [sl, ip]
-
- push { ip } /* Push __libc_csu_fini */
-
- ldr a4, .L_GOT+8 /* __libc_csu_init */
- ldr a4, [sl, a4]
-
- ldr a1, .L_GOT+12 /* main */
- ldr a1, [sl, a1]
-
- /* __libc_start_main (main, argc, argv, init, fini, rtld_fini, stack_end) */
- /* Let the libc call main and exit with its return code. */
- bl __libc_start_main(PLT)
-#else
- /* Fetch address of __libc_csu_fini */
- ldr ip, =__libc_csu_fini
-
- /* Push __libc_csu_fini */
- push { ip }
-
- /* Set up the other arguments in registers */
- ldr a1, =main
- ldr a4, =__libc_csu_init
-
- /* __libc_start_main (main, argc, argv, init, fini, rtld_fini, stack_end) */
- /* Let the libc call main and exit with its return code. */
- bl __libc_start_main
-#endif
-
- /* should never get here....*/
- bl abort
-
-#ifdef SHARED
- .align 2
-.L_GOT:
- .word _GLOBAL_OFFSET_TABLE_ - .L_GOT
- .word __libc_csu_fini(GOT)
- .word __libc_csu_init(GOT)
- .word main(GOT)
-#endif
-
- .cantunwind
- .fnend
-
-/* Define a symbol for the first piece of initialized data. */
- .data
- .globl __data_start
-__data_start:
- .long 0
- .weak data_start
- data_start = __data_start
diff --git a/ports/sysdeps/arm/static-stubs.c b/ports/sysdeps/arm/static-stubs.c
deleted file mode 100644
index d90d603a95..0000000000
--- a/ports/sysdeps/arm/static-stubs.c
+++ /dev/null
@@ -1,7 +0,0 @@
-/* When building with GCC with static-only libgcc, the dummy
- _Unwind_Resume from static-stubs.c needs to be used together with
- the dummy __aeabi_unwind_cpp_pr* from aeabi_unwind_cpp_pr1.c
- instead of the copies from libgcc. */
-
-#include <elf/static-stubs.c>
-#include <aeabi_unwind_cpp_pr1.c>
diff --git a/ports/sysdeps/arm/strlen.S b/ports/sysdeps/arm/strlen.S
deleted file mode 100644
index c812202bc3..0000000000
--- a/ports/sysdeps/arm/strlen.S
+++ /dev/null
@@ -1,79 +0,0 @@
-/* Copyright (C) 1998-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Code contributed by Matthew Wilcox <willy@odie.barnet.ac.uk>
-
- 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/>. */
-
-/* Thumb requires excessive IT insns here. */
-#define NO_THUMB
-#include <sysdep.h>
-
-/* size_t strlen(const char *S)
- * entry: r0 -> string
- * exit: r0 = len
- */
-
- .syntax unified
- .text
-
-ENTRY(strlen)
- bic r1, r0, $3 @ addr of word containing first byte
- sfi_breg r1, \
- ldr r2, [\B], $4 @ get the first word
- ands r3, r0, $3 @ how many bytes are duff?
- rsb r0, r3, $0 @ get - that number into counter.
- beq Laligned @ skip into main check routine if no
- @ more
-#ifdef __ARMEB__
- orr r2, r2, $0xff000000 @ set this byte to non-zero
- subs r3, r3, $1 @ any more to do?
- orrgt r2, r2, $0x00ff0000 @ if so, set this byte
- subs r3, r3, $1 @ more?
- orrgt r2, r2, $0x0000ff00 @ then set.
-#else
- orr r2, r2, $0x000000ff @ set this byte to non-zero
- subs r3, r3, $1 @ any more to do?
- orrgt r2, r2, $0x0000ff00 @ if so, set this byte
- subs r3, r3, $1 @ more?
- orrgt r2, r2, $0x00ff0000 @ then set.
-#endif
-Laligned: @ here, we have a word in r2. Does it
- tst r2, $0x000000ff @ contain any zeroes?
- tstne r2, $0x0000ff00 @
- tstne r2, $0x00ff0000 @
- tstne r2, $0xff000000 @
- addne r0, r0, $4 @ if not, the string is 4 bytes longer
- sfi_breg r1, \
- ldrne r2, [\B], $4 @ and we continue to the next word
- bne Laligned @
-Llastword: @ drop through to here once we find a
-#ifdef __ARMEB__
- tst r2, $0xff000000 @ word that has a zero byte in it
- addne r0, r0, $1 @
- tstne r2, $0x00ff0000 @ and add up to 3 bytes on to it
- addne r0, r0, $1 @
- tstne r2, $0x0000ff00 @ (if first three all non-zero, 4th
- addne r0, r0, $1 @ must be zero)
-#else
- tst r2, $0x000000ff @ word that has a zero byte in it
- addne r0, r0, $1 @
- tstne r2, $0x0000ff00 @ and add up to 3 bytes on to it
- addne r0, r0, $1 @
- tstne r2, $0x00ff0000 @ (if first three all non-zero, 4th
- addne r0, r0, $1 @ must be zero)
-#endif
- DO_RET(lr)
-END(strlen)
-libc_hidden_builtin_def (strlen)
diff --git a/ports/sysdeps/arm/sub_n.S b/ports/sysdeps/arm/sub_n.S
deleted file mode 100644
index 8eafa41e64..0000000000
--- a/ports/sysdeps/arm/sub_n.S
+++ /dev/null
@@ -1,2 +0,0 @@
-#define USE_AS_SUB_N
-#include "add_n.S"
diff --git a/ports/sysdeps/arm/submul_1.S b/ports/sysdeps/arm/submul_1.S
deleted file mode 100644
index 76b9cda865..0000000000
--- a/ports/sysdeps/arm/submul_1.S
+++ /dev/null
@@ -1,74 +0,0 @@
-/* mpn_submul_1 -- multiply and subtract bignums.
- Copyright (C) 2013-2014 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>
-
- .syntax unified
- .text
-
-@ cycles/limb
-@ StrongArm ?
-@ Cortex-A8 ?
-@ Cortex-A9 ?
-@ Cortex-A15 4
-
-/* mp_limb_t mpn_submul_1(res_ptr, src1_ptr, size, s2_limb) */
-
-ENTRY (__mpn_submul_1)
- 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)
-
- sfi_breg r1, \
- ldr r6, [\B], #4
- sfi_breg r0, \
- ldr r7, [\B]
- mov r4, #0 /* init carry in */
- b 1f
-0:
- sfi_breg r1, \
- ldr r6, [\B], #4 /* load next ul */
- adds r5, r5, r4 /* (lpl, c) = lpl + cl */
- adc r4, ip, #0 /* cl = hpl + c */
- subs r5, r7, r5 /* (lpl, !c) = rl - lpl */
- sfi_breg r0, \
- ldr r7, [\B, #4] /* load next rl */
- it cc
- addcc r4, r4, #1 /* cl += !c */
- sfi_breg r0, \
- str r5, [\B], #4
-1:
- umull r5, ip, r6, r3 /* (hpl, lpl) = ul * vl */
- subs r2, r2, #1
- bne 0b
-
- adds r5, r5, r4 /* (lpl, c) = lpl + cl */
- adc r4, ip, #0 /* cl = hpl + c */
- subs r5, r7, r5 /* (lpl, !c) = rl - lpl */
- sfi_breg r0, \
- str r5, [\B], #4
- it cc
- addcc r4, r4, #1 /* cl += !c */
- mov r0, r4 /* return carry */
-
- pop { r4, r5, r6, r7 }
- DO_RET (lr)
-END (__mpn_submul_1)
diff --git a/ports/sysdeps/arm/sys/ucontext.h b/ports/sysdeps/arm/sys/ucontext.h
deleted file mode 100644
index a913f68884..0000000000
--- a/ports/sysdeps/arm/sys/ucontext.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/* Copyright (C) 1998-2014 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/>. */
-
-/* System V/ARM ABI compliant context switching support. */
-
-#ifndef _SYS_UCONTEXT_H
-#define _SYS_UCONTEXT_H 1
-
-#include <features.h>
-#include <signal.h>
-
-typedef int greg_t;
-
-/* Number of general registers. */
-#define NGREG 16
-
-/* Container for all general registers. */
-typedef greg_t gregset_t[NGREG];
-
-/* Number of each register is the `gregset_t' array. */
-enum
-{
- R0 = 0,
-#define R0 R0
- R1 = 1,
-#define R1 R1
- R2 = 2,
-#define R2 R2
- R3 = 3,
-#define R3 R3
- R4 = 4,
-#define R4 R4
- R5 = 5,
-#define R5 R5
- R6 = 6,
-#define R6 R6
- R7 = 7,
-#define R7 R7
- R8 = 8,
-#define R8 R8
- R9 = 9,
-#define R9 R9
- R10 = 10,
-#define R10 R10
- R11 = 11,
-#define R11 R11
- R12 = 12,
-#define R12 R12
- R13 = 13,
-#define R13 R13
- R14 = 14,
-#define R14 R14
- R15 = 15,
-#define R15 R15
-};
-
-/* Structure to describe FPU registers. */
-typedef struct fpregset
- {
- } fpregset_t;
-
-/* Context to describe whole processor state. */
-typedef struct
- {
- gregset_t gregs;
- fpregset_t fpregs;
- } mcontext_t;
-
-/* Userlevel context. */
-typedef struct ucontext
- {
- unsigned long int uc_flags;
- struct ucontext *uc_link;
- __sigset_t uc_sigmask;
- stack_t uc_stack;
- mcontext_t uc_mcontext;
- long int uc_filler[5];
- } ucontext_t;
-
-#endif /* sys/ucontext.h */
diff --git a/ports/sysdeps/arm/sysdep.h b/ports/sysdeps/arm/sysdep.h
deleted file mode 100644
index 7f34ab042f..0000000000
--- a/ports/sysdeps/arm/sysdep.h
+++ /dev/null
@@ -1,288 +0,0 @@
-/* Assembler macros for ARM.
- Copyright (C) 1997-2014 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 <sysdeps/generic/sysdep.h>
-#include <features.h>
-
-/* The __ARM_ARCH define is provided by gcc 4.8. Construct it otherwise. */
-#ifndef __ARM_ARCH
-# ifdef __ARM_ARCH_2__
-# define __ARM_ARCH 2
-# elif defined (__ARM_ARCH_3__) || defined (__ARM_ARCH_3M__)
-# define __ARM_ARCH 3
-# elif defined (__ARM_ARCH_4__) || defined (__ARM_ARCH_4T__)
-# define __ARM_ARCH 4
-# elif defined (__ARM_ARCH_5__) || defined (__ARM_ARCH_5E__) \
- || defined(__ARM_ARCH_5T__) || defined(__ARM_ARCH_5TE__) \
- || defined(__ARM_ARCH_5TEJ__)
-# define __ARM_ARCH 5
-# elif defined (__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) \
- || defined (__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) \
- || defined (__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__)
-# define __ARM_ARCH 6
-# elif defined (__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) \
- || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) \
- || defined(__ARM_ARCH_7EM__)
-# define __ARM_ARCH 7
-# else
-# error unknown arm architecture
-# endif
-#endif
-
-#if __ARM_ARCH > 4 || defined (__ARM_ARCH_4T__)
-# define ARCH_HAS_BX
-#endif
-#if __ARM_ARCH > 4
-# define ARCH_HAS_BLX
-#endif
-#if __ARM_ARCH > 6 || defined (__ARM_ARCH_6K__) || defined (__ARM_ARCH_6ZK__)
-# define ARCH_HAS_HARD_TP
-#endif
-#if __ARM_ARCH > 6 || defined (__ARM_ARCH_6T2__)
-# define ARCH_HAS_T2
-#endif
-
-#ifdef __ASSEMBLER__
-
-/* Syntactic details of assembler. */
-
-#define ALIGNARG(log2) log2
-#define ASM_SIZE_DIRECTIVE(name) .size name,.-name
-
-#define PLTJMP(_x) _x##(PLT)
-
-#ifdef ARCH_HAS_BX
-# define BX(R) bx R
-# define BXC(C, R) bx##C R
-# ifdef ARCH_HAS_BLX
-# define BLX(R) blx R
-# else
-# define BLX(R) mov lr, pc; bx R
-# endif
-#else
-# define BX(R) mov pc, R
-# define BXC(C, R) mov##C pc, R
-# define BLX(R) mov lr, pc; mov pc, R
-#endif
-
-#define DO_RET(R) BX(R)
-#define RETINSTR(C, R) BXC(C, R)
-
-/* Define an entry point visible from C. */
-#define ENTRY(name) \
- .globl C_SYMBOL_NAME(name); \
- .type C_SYMBOL_NAME(name),%function; \
- .align ALIGNARG(4); \
- C_LABEL(name) \
- CFI_SECTIONS; \
- cfi_startproc; \
- CALL_MCOUNT
-
-#define CFI_SECTIONS \
- .cfi_sections .debug_frame
-
-#undef END
-#define END(name) \
- cfi_endproc; \
- ASM_SIZE_DIRECTIVE(name)
-
-/* If compiled for profiling, call `mcount' at the start of each function. */
-#ifdef PROF
-/* Call __gnu_mcount_nc if GCC >= 4.4. */
-#if __GNUC_PREREQ(4,4)
-#define CALL_MCOUNT \
- push {lr}; \
- cfi_adjust_cfa_offset (4); \
- cfi_rel_offset (lr, 0); \
- bl PLTJMP(mcount); \
- cfi_adjust_cfa_offset (-4); \
- cfi_restore (lr)
-#else /* else call _mcount */
-#define CALL_MCOUNT \
- push {lr}; \
- cfi_adjust_cfa_offset (4); \
- cfi_rel_offset (lr, 0); \
- bl PLTJMP(mcount); \
- pops {lr}; \
- cfi_adjust_cfa_offset (-4); \
- cfi_restore (lr)
-#endif
-#else
-#define CALL_MCOUNT /* Do nothing. */
-#endif
-
-/* Since C identifiers are not normally prefixed with an underscore
- on this system, the asm identifier `syscall_error' intrudes on the
- C name space. Make sure we use an innocuous name. */
-#define syscall_error __syscall_error
-#if __GNUC_PREREQ(4,4)
-#define mcount __gnu_mcount_nc
-#else
-#define mcount _mcount
-#endif
-
-/* 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
-
-/* The thumb2 encoding is reasonably complete. Unless suppressed, use it. */
- .syntax unified
-# if defined(__thumb2__) && !defined(NO_THUMB)
- .thumb
-#else
-# undef __thumb__
-# undef __thumb2__
- .arm
-# endif
-
-/* Load or store to/from a pc-relative EXPR into/from R, using T. */
-# ifdef __thumb2__
-# define LDST_PCREL(OP, R, T, EXPR) \
- ldr T, 98f; \
- .subsection 2; \
-98: .word EXPR - 99f - PC_OFS; \
- .previous; \
-99: add T, T, pc; \
- OP R, [T]
-# else
-# define LDST_PCREL(OP, R, T, EXPR) \
- ldr T, 98f; \
- .subsection 2; \
-98: .word EXPR - 99f - PC_OFS; \
- .previous; \
-99: OP R, [pc, T]
-# endif
-
-/* Load or store to/from a global EXPR into/from R, using T. */
-# define LDST_GLOBAL(OP, R, T, EXPR) \
- ldr T, 99f; \
- ldr R, 100f; \
-98: add T, T, pc; \
- ldr T, [T, R]; \
- .subsection 2; \
-99: .word _GLOBAL_OFFSET_TABLE_ - 98b - PC_OFS; \
-100: .word EXPR##(GOT); \
- .previous; \
- OP R, [T]
-
-/* Cope with negative memory offsets, which thumb can't encode.
- Use NEGOFF_ADJ_BASE to (conditionally) alter the base register,
- and then NEGOFF_OFF1 to use 0 for thumb and the offset for arm,
- or NEGOFF_OFF2 to use A-B for thumb and A for arm. */
-# ifdef __thumb2__
-# define NEGOFF_ADJ_BASE(R, OFF) add R, R, $OFF
-# define NEGOFF_ADJ_BASE2(D, S, OFF) add D, S, $OFF
-# define NEGOFF_OFF1(R, OFF) [R]
-# define NEGOFF_OFF2(R, OFFA, OFFB) [R, $((OFFA) - (OFFB))]
-# else
-# define NEGOFF_ADJ_BASE(R, OFF)
-# define NEGOFF_ADJ_BASE2(D, S, OFF) mov D, S
-# define NEGOFF_OFF1(R, OFF) [R, $OFF]
-# define NEGOFF_OFF2(R, OFFA, OFFB) [R, $OFFA]
-# endif
-
-/* Helper to get the TLS base pointer. The interface is that TMP is a
- register that may be used to hold the LR, if necessary. TMP may be
- LR itself to indicate that LR need not be saved. The base pointer
- is returned in R0. Only R0 and TMP are modified. */
-
-# ifdef ARCH_HAS_HARD_TP
-/* If the cpu has cp15 available, use it. */
-# define GET_TLS(TMP) mrc p15, 0, r0, c13, c0, 3
-# else
-/* At this generic level we have no tricks to pull. Call the ABI routine. */
-# define GET_TLS(TMP) \
- push { r1, r2, r3, lr }; \
- cfi_remember_state; \
- cfi_adjust_cfa_offset (16); \
- cfi_rel_offset (r1, 0); \
- cfi_rel_offset (r2, 4); \
- cfi_rel_offset (r3, 8); \
- cfi_rel_offset (lr, 12); \
- bl __aeabi_read_tp; \
- pop { r1, r2, r3, lr }; \
- cfi_restore_state
-# endif /* ARCH_HAS_HARD_TP */
-
-# ifndef ARM_SFI_MACROS
-# define ARM_SFI_MACROS 1
-/* This assembly macro is prepended to any load/store instruction,
- pulling the base register out of the addressing mode syntax and
- making it the first operand of the macro. For example:
- ldr r0, [r1]
- becomes:
- sfi_breg r1, ldr r0, [\B]
- The \B stands in for the base register that is the first operand
- to the macro, so we can avoid error-prone repetition of the base
- register in two places on the line.
-
- This is used for all memory access through a base register other
- than PC or SP. It's intended to support SFI schemes such as
- Native Client, where the OS will enforce that all load/store
- instructions use a special form. In any such configuration,
- another sysdep.h file will have defined ARM_SFI_MACROS and
- provided its own assembly macros with the same interface. */
-
- .macro sfi_breg basereg, insn, operands:vararg
- .macro _sfi_breg_doit B
- \insn \operands
- .endm
- _sfi_breg_doit \basereg
- .purgem _sfi_breg_doit
- .endm
-
-/* This assembly macro replaces the "pld" instruction.
- The syntax:
- sfi_pld REGISTER, #OFFSET
- is exactly equivalent to:
- sfi_breg REGISTER, pld [\B, #OFFSET]
- (and ", #OFFSET" is optional). We have a separate macro
- only to work around a bug in GAS versions prior to 2.23.2,
- that misparses the sfi_breg macro expansion in this case. */
-
- .macro sfi_pld basereg, offset=#0
- pld [\basereg, \offset]
- .endm
-
-/* This macro precedes any instruction that directly changes the SP.
- It's not needed for push/pop or for any kind of load or store that
- implicitly changes the SP via the ! syntax. */
-# define sfi_sp /* Nothing to do. */
-
-# endif
-
-/* These are the directives used for EABI unwind info.
- Wrap them in macros so another configuration's sysdep.h
- file can define them away if it doesn't use EABI unwind info. */
-# define eabi_fnstart .fnstart
-# define eabi_fnend .fnend
-# define eabi_save(...) .save __VA_ARGS__
-# define eabi_cantunwind .cantunwind
-# define eabi_pad(n) .pad n
-
-#endif /* __ASSEMBLER__ */
-
-/* This number is the offset from the pc at the current location. */
-#ifdef __thumb__
-# define PC_OFS 4
-#else
-# define PC_OFS 8
-#endif
diff --git a/ports/sysdeps/arm/test-fpucw.c b/ports/sysdeps/arm/test-fpucw.c
deleted file mode 100644
index 9fc721c7f4..0000000000
--- a/ports/sysdeps/arm/test-fpucw.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* Defining _LIBC_TEST stops fpu_control.h from defining the
- hard-float versions of macros (for use with dynamic VFP detection)
- when compiling for soft-float. */
-#define _LIBC_TEST
-#include <math/test-fpucw.c>
diff --git a/ports/sysdeps/arm/tls-macros.h b/ports/sysdeps/arm/tls-macros.h
deleted file mode 100644
index e41d3bc5aa..0000000000
--- a/ports/sysdeps/arm/tls-macros.h
+++ /dev/null
@@ -1,78 +0,0 @@
-#ifdef __thumb2__
-#define ARM_PC_OFFSET "4"
-#else
-#define ARM_PC_OFFSET "8"
-#endif
-
-#define TLS_LE(x) \
- ({ int *__result; \
- void *tp = __builtin_thread_pointer (); \
- asm ("ldr %0, 1f; " \
- "add %0, %1, %0; " \
- "b 2f; " \
- ".align 2; " \
- "1: .word " #x "(tpoff); " \
- "2: " \
- : "=&r" (__result) : "r" (tp)); \
- __result; })
-
-#ifdef __thumb2__
-#define TLS_IE(x) \
- ({ int *__result; \
- void *tp = __builtin_thread_pointer (); \
- asm ("ldr %0, 1f; " \
- "3: add %0, pc, %0;" \
- "ldr %0, [%0];" \
- "add %0, %1, %0; " \
- "b 2f; " \
- ".align 2; " \
- "1: .word " #x "(gottpoff) + (. - 3b - 4); " \
- "2: " \
- : "=&r" (__result) : "r" (tp)); \
- __result; })
-#else
-#define TLS_IE(x) \
- ({ int *__result; \
- void *tp = __builtin_thread_pointer (); \
- asm ("ldr %0, 1f; " \
- "3: ldr %0, [pc, %0];" \
- "add %0, %1, %0; " \
- "b 2f; " \
- ".align 2; " \
- "1: .word " #x "(gottpoff) + (. - 3b - 8); " \
- "2: " \
- : "=&r" (__result) : "r" (tp)); \
- __result; })
-#endif
-
-#define TLS_LD(x) \
- ({ char *__result; \
- int __offset; \
- extern void *__tls_get_addr (void *); \
- asm ("ldr %0, 2f; " \
- "1: add %0, pc, %0; " \
- "b 3f; " \
- ".align 2; " \
- "2: .word " #x "(tlsldm) + (. - 1b - "ARM_PC_OFFSET"); " \
- "3: " \
- : "=r" (__result)); \
- __result = (char *)__tls_get_addr (__result); \
- asm ("ldr %0, 1f; " \
- "b 2f; " \
- ".align 2; " \
- "1: .word " #x "(tlsldo); " \
- "2: " \
- : "=r" (__offset)); \
- (int *) (__result + __offset); })
-
-#define TLS_GD(x) \
- ({ int *__result; \
- extern void *__tls_get_addr (void *); \
- asm ("ldr %0, 2f; " \
- "1: add %0, pc, %0; " \
- "b 3f; " \
- ".align 2; " \
- "2: .word " #x "(tlsgd) + (. - 1b - "ARM_PC_OFFSET"); " \
- "3: " \
- : "=r" (__result)); \
- (int *)__tls_get_addr (__result); })
diff --git a/ports/sysdeps/arm/tlsdesc.c b/ports/sysdeps/arm/tlsdesc.c
deleted file mode 100644
index fc754d6c42..0000000000
--- a/ports/sysdeps/arm/tlsdesc.c
+++ /dev/null
@@ -1,160 +0,0 @@
-/* Manage TLS descriptors. ARM version.
- Copyright (C) 2005-2014 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 <ldsodefs.h>
-#include <elf/dynamic-link.h>
-#include <tls.h>
-#include <dl-tlsdesc.h>
-#include <tlsdeschtab.h>
-
-/* This function is used to lazily resolve TLS_DESC REL relocations
- Besides the TLS descriptor itself, we get the module's got address
- as the second parameter. */
-
-void
-attribute_hidden
-_dl_tlsdesc_lazy_resolver_fixup (struct tlsdesc volatile *td,
- Elf32_Addr *got)
-{
- struct link_map *l = (struct link_map *)got[1];
- lookup_t result;
- unsigned long value;
-
- if (_dl_tlsdesc_resolve_early_return_p
- (td, (void*)(D_PTR (l, l_info[ADDRIDX (DT_TLSDESC_PLT)]) + l->l_addr)))
- return;
-
- if (td->argument.value & 0x80000000)
- {
- /* A global symbol, this is the symbol index. */
- /* The code below was borrowed from _dl_fixup(). */
- const Elf_Symndx symndx = td->argument.value ^ 0x80000000;
- const ElfW(Sym) *const symtab
- = (const void *) D_PTR (l, l_info[DT_SYMTAB]);
- const char *strtab = (const void *) D_PTR (l, l_info[DT_STRTAB]);
- const ElfW(Sym) *sym = &symtab[symndx];
-
- /* Look up the target symbol. If the normal lookup rules are not
- used don't look in the global scope. */
- if (ELFW(ST_BIND) (sym->st_info) != STB_LOCAL
- && __builtin_expect (ELFW(ST_VISIBILITY) (sym->st_other), 0) == 0)
- {
- const struct r_found_version *version = NULL;
-
- if (l->l_info[VERSYMIDX (DT_VERSYM)] != NULL)
- {
- const ElfW(Half) *vernum =
- (const void *) D_PTR (l, l_info[VERSYMIDX (DT_VERSYM)]);
- ElfW(Half) ndx = vernum[symndx] & 0x7fff;
- version = &l->l_versions[ndx];
- if (version->hash == 0)
- version = NULL;
- }
-
- result = _dl_lookup_symbol_x
- (strtab + sym->st_name, l, &sym,
- l->l_scope, version, ELF_RTYPE_CLASS_PLT,
- DL_LOOKUP_ADD_DEPENDENCY, NULL);
- if (sym)
- value = sym->st_value;
- else
- {
- td->entry = _dl_tlsdesc_undefweak;
- goto done;
- }
- }
- else
- {
- /* We already found the symbol. The module (and therefore its load
- address) is also known. */
- result = l;
- value = sym->st_value;
- }
- }
- else
- {
- /* A local symbol, this is the offset within our tls section.
- */
- value = td->argument.value;
- result = l;
- }
-
-#ifndef SHARED
- CHECK_STATIC_TLS (l, result);
-#else
- if (!TRY_STATIC_TLS (l, result))
- {
- td->argument.pointer = _dl_make_tlsdesc_dynamic (result, value);
- td->entry = _dl_tlsdesc_dynamic;
- }
- else
-#endif
- {
- td->argument.value = value + result->l_tls_offset;
- td->entry = _dl_tlsdesc_return;
- }
-
- done:
- _dl_tlsdesc_wake_up_held_fixups ();
-}
-
-/* This function is used to avoid busy waiting for other threads to
- complete the lazy relocation. Once another thread wins the race to
- relocate a TLS descriptor, it sets the descriptor up such that this
- function is called to wait until the resolver releases the
- lock. */
-
-void
-attribute_hidden
-_dl_tlsdesc_resolve_hold_fixup (struct tlsdesc volatile *td,
- void *caller)
-{
- /* Maybe we're lucky and can return early. */
- if (caller != td->entry)
- return;
-
- /* Locking here will stop execution until the running resolver runs
- _dl_tlsdesc_wake_up_held_fixups(), releasing the lock.
-
- FIXME: We'd be better off waiting on a condition variable, such
- that we didn't have to hold the lock throughout the relocation
- processing. */
- __rtld_lock_lock_recursive (GL(dl_load_lock));
- __rtld_lock_unlock_recursive (GL(dl_load_lock));
-}
-
-/* Unmap the dynamic object, but also release its TLS descriptor table
- if there is one. */
-
-void
-internal_function
-_dl_unmap (struct link_map *map)
-{
- __munmap ((void *) (map)->l_map_start,
- (map)->l_map_end - (map)->l_map_start);
-
-#if SHARED
- /* _dl_unmap is only called for dlopen()ed libraries, for which
- calling free() is safe, or before we've completed the initial
- relocation, in which case calling free() is probably pointless,
- but still safe. */
- if (map->l_mach.tlsdesc_table)
- htab_delete (map->l_mach.tlsdesc_table);
-#endif
-}
diff --git a/ports/sysdeps/arm/tlsdesc.sym b/ports/sysdeps/arm/tlsdesc.sym
deleted file mode 100644
index 3f3a13e2c4..0000000000
--- a/ports/sysdeps/arm/tlsdesc.sym
+++ /dev/null
@@ -1,15 +0,0 @@
-#include <stddef.h>
-#include <sysdep.h>
-#include <tls.h>
-#include <link.h>
-#include <dl-tlsdesc.h>
-
---
-
--- Abuse tls.h macros to derive offsets relative to the thread register.
-
-TLSDESC_ARG offsetof(struct tlsdesc, argument.pointer)
-
-TLSDESC_GEN_COUNT offsetof(struct tlsdesc_dynamic_arg, gen_count)
-TLSDESC_MODID offsetof(struct tlsdesc_dynamic_arg, tlsinfo.ti_module)
-TLSDESC_MODOFF offsetof(struct tlsdesc_dynamic_arg, tlsinfo.ti_offset)
diff --git a/ports/sysdeps/arm/tst-audit.h b/ports/sysdeps/arm/tst-audit.h
deleted file mode 100644
index 4f46fa0f23..0000000000
--- a/ports/sysdeps/arm/tst-audit.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Definitions for testing PLT entry/exit auditing. ARM version.
-
- Copyright (C) 2005-2014 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 pltenter la_arm_gnu_pltenter
-#define pltexit la_arm_gnu_pltexit
-#define La_regs La_arm_regs
-#define La_retval La_arm_retval
-#define int_retval lrv_reg[0]
diff --git a/ports/sysdeps/arm/unwind-dw2-fde-glibc.c b/ports/sysdeps/arm/unwind-dw2-fde-glibc.c
deleted file mode 100644
index 6b2110c2db..0000000000
--- a/ports/sysdeps/arm/unwind-dw2-fde-glibc.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/* Dummy exception handling and frame unwind runtime interface routines.
- Copyright (C) 2004-2014 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/>. */
-
-/* ARM uses setjmp-longjmp exceptions. However, previous versions of
- GNU libc exported some DWARF-2 exception handling support routines.
- They are not necessary, but older (or broken) configurations of GCC
- will do so. Even though all references to these are weak, because
- they refer to versioned symbols, they must be provided. */
-
-#include <stdlib.h>
-#include <unwind.h>
-#include <unwind-dw2-fde.h>
-
-/* These may be called from startup code, but don't need to do
- anything. */
-
-void __register_frame_info_bases (void *a1, struct object *a2,
- void *a3, void *a4)
-{
-}
-
-void __register_frame_info (void *a1, struct object *a2)
-{
-}
-
-void __register_frame (void *a1)
-{
-}
-
-void __register_frame_info_table_bases (void *a1, struct object *a2,
- void *a3, void *a4)
-{
-}
-
-void __register_frame_info_table (void *a1, struct object *a2)
-{
-}
-
-void __register_frame_table (void *a1)
-{
-}
-
-void *__deregister_frame_info (void *a1)
-{
- return NULL;
-}
-
-void *__deregister_frame_info_bases (void *a1)
-{
- return NULL;
-}
-
-void __deregister_frame (void *a1)
-{
-}
-
-/* This should not be called. */
-
-fde *
-_Unwind_Find_FDE (void *a1, struct dwarf_eh_bases *a2)
-{
- abort ();
-}
diff --git a/ports/sysdeps/arm/unwind-pe.c b/ports/sysdeps/arm/unwind-pe.c
deleted file mode 100644
index 710cecca97..0000000000
--- a/ports/sysdeps/arm/unwind-pe.c
+++ /dev/null
@@ -1 +0,0 @@
-/* Empty */
diff --git a/ports/sysdeps/unix/arm/sysdep.S b/ports/sysdeps/unix/arm/sysdep.S
deleted file mode 100644
index 1a0f093238..0000000000
--- a/ports/sysdeps/unix/arm/sysdep.S
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Copyright (C) 1991-2014 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 _ERRNO_H
-#include <bits/errno.h>
-
-#ifdef IS_IN_rtld
-# include <dl-sysdep.h> /* Defines RTLD_PRIVATE_ERRNO. */
-#endif
-
-#include <tls.h>
-
-#undef syscall_error
-__syscall_error:
-#if defined (EWOULDBLOCK_sys) && EWOULDBLOCK_sys != EAGAIN
- /* We translate the system's EWOULDBLOCK error into EAGAIN.
- The GNU C library always defines EWOULDBLOCK==EAGAIN.
- EWOULDBLOCK_sys is the original number. */
- cmp r0, $EWOULDBLOCK_sys /* Is it the old EWOULDBLOCK? */
- it eq
- moveq r0, $EAGAIN /* Yes; translate it to EAGAIN. */
-#endif
-
-#ifndef IS_IN_rtld
- mov r1, r0
- GET_TLS (r2)
- ldr r2, 1f
-#ifdef __thumb__
-2: add r2, r2, pc
- ldr r2, [r2]
-#else
-2: ldr r2, [pc, r2]
-#endif
- str r1, [r0, r2]
- mvn r0, #0
- DO_RET(lr)
-
-1: .word errno(gottpoff) + (. - 2b - PC_OFS)
-#elif RTLD_PRIVATE_ERRNO
- LDST_PCREL(str, r0, r1, C_SYMBOL_NAME(rtld_errno))
- mvn r0, #0
- DO_RET(r14)
-#else
-#error "Unsupported non-TLS case"
-#endif
-
-#undef __syscall_error
-END (__syscall_error)
diff --git a/ports/sysdeps/unix/arm/sysdep.h b/ports/sysdeps/unix/arm/sysdep.h
deleted file mode 100644
index ad069c33de..0000000000
--- a/ports/sysdeps/unix/arm/sysdep.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Copyright (C) 1997-2014 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 <sysdeps/unix/sysdep.h>
-#include <sysdeps/arm/sysdep.h>
-
-/* Some definitions to allow the assembler in sysdeps/unix/ to build
- without needing ARM-specific versions of all the files. */
-
-#ifdef __ASSEMBLER__
-
-#define ret DO_RET (r14)
-#define MOVE(a,b) mov b,a
-
-#endif
diff --git a/ports/sysdeps/unix/sysv/linux/arm/Makefile b/ports/sysdeps/unix/sysv/linux/arm/Makefile
deleted file mode 100644
index aa7526a258..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/Makefile
+++ /dev/null
@@ -1,85 +0,0 @@
-ifeq ($(subdir),csu)
-# In order for unwinding to fail when it falls out of main, we need a
-# cantunwind marker. There's one in start.S. To make sure we reach it, add
-# unwind tables for __libc_start_main.
-CFLAGS-libc-start.c += -fexceptions
-
-sysdep_routines += aeabi_read_tp libc-aeabi_read_tp
-static-only-routines += aeabi_read_tp
-shared-only-routines += libc-aeabi_read_tp
-endif
-
-ifeq ($(subdir),elf)
-sysdep-rtld-routines += aeabi_read_tp libc-do-syscall
-endif
-
-ifeq ($(subdir),misc)
-sysdep_routines += ioperm
-sysdep_headers += sys/elf.h sys/io.h
-endif
-
-ifeq ($(subdir),signal)
-sysdep_routines += sigrestorer
-endif
-
-ifeq ($(subdir),resource)
-sysdep_routines += oldgetrlimit64
-endif
-
-ifeq ($(subdir),stdlib)
-gen-as-const-headers += ucontext_i.sym
-endif
-
-# Add a syscall function to each library that needs one.
-
-ifeq ($(subdir),crypt)
-libcrypt-sysdep_routines += libc-do-syscall
-endif
-
-ifeq ($(subdir),rt)
-librt-sysdep_routines += libc-do-syscall
-librt-shared-only-routines += libc-do-syscall
-endif
-
-ifeq ($(subdir),nptl)
-libpthread-sysdep_routines += libc-do-syscall
-libpthread-shared-only-routines += libc-do-syscall
-endif
-
-ifeq ($(subdir),resolv)
-libanl-sysdep_routines += libc-do-syscall
-libanl-shared-only-routines += libc-do-syscall
-endif
-
-ifeq ($(subdir),csu)
-sysdep_routines += libc-do-syscall
-endif
-
-ifeq ($(subdir),nscd)
-nscd-modules += libc-do-syscall
-endif
-
-ifeq ($(subdir),nss)
-libnss_db-sysdep_routines += libc-do-syscall
-libnss_db-shared-only-routines += libc-do-syscall
-endif
-
-ifeq ($(subdir),posix)
-LDFLAGS-tst-rfc3484 += $(common-objpfx)csu/libc-do-syscall.o
-LDFLAGS-tst-rfc3484-2 += $(common-objpfx)csu/libc-do-syscall.o
-LDFLAGS-tst-rfc3484-3 += $(common-objpfx)csu/libc-do-syscall.o
-endif
-
-abi-variants := soft hard
-
-ifeq (,$(filter $(default-abi),$(abi-variants)))
-Unknown ABI, must be one of $(abi-variants)
-endif
-
-abi-includes :=
-abi-soft-options := -U__ARM_PCS_VFP
-abi-soft-condition := !defined __ARM_PCS_VFP
-abi-soft-ld-soname := ld-linux.so.3
-abi-hard-options := -D__ARM_PCS_VFP
-abi-hard-condition := defined __ARM_PCS_VFP
-abi-hard-ld-soname := ld-linux-armhf.so.3
diff --git a/ports/sysdeps/unix/sysv/linux/arm/Versions b/ports/sysdeps/unix/sysv/linux/arm/Versions
deleted file mode 100644
index 1d9e964640..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/Versions
+++ /dev/null
@@ -1,40 +0,0 @@
-libc {
- GLIBC_2.0 {
- # Exception handling support functions from libgcc
- __register_frame; __register_frame_table; __deregister_frame;
- __frame_state_for; __register_frame_info_table;
- }
- GLIBC_2.1 {
- ioperm; iopl;
- inb; inw; inl;
- outb; outw; outl;
- }
- GLIBC_2.2 {
- # functions used in other libraries
- __xstat64; __fxstat64; __lxstat64;
-
- # a*
- alphasort64;
-
- # g*
- glob64;
-
- # New rlimit interface
- getrlimit; setrlimit; getrlimit64;
-
- # r*
- readdir64; readdir64_r;
-
- # s*
- scandir64;
-
- # v*
- versionsort64;
- }
- GLIBC_2.3.3 {
- posix_fadvise64; posix_fallocate64;
- }
- GLIBC_2.11 {
- fallocate64;
- }
-}
diff --git a/ports/sysdeps/unix/sysv/linux/arm/____longjmp_chk.S b/ports/sysdeps/unix/sysv/linux/arm/____longjmp_chk.S
deleted file mode 100644
index 96f8b4eb2d..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/____longjmp_chk.S
+++ /dev/null
@@ -1,90 +0,0 @@
-/* Copyright (C) 2009-2014 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>
-
- .section .rodata.str1.1,"aMS",%progbits,1
- .type longjmp_msg,%object
-longjmp_msg:
- .string "longjmp causes uninitialized stack frame"
- .size longjmp_msg, .-longjmp_msg
- .text
-
-#define __longjmp ____longjmp_chk
-
-#ifdef PIC
-# define CALL_FAIL \
- ldr sl, .L_GOT; \
- cfi_undefined (sl); \
-.L_GOT_OFF: \
- add sl, pc, sl; \
- ldr r0, .Lstr; \
- add r0, sl, r0; \
- B PLTJMP(HIDDEN_JUMPTARGET(__fortify_fail)); \
-.L_GOT: \
- .word _GLOBAL_OFFSET_TABLE_-(.L_GOT_OFF+8); \
-.Lstr: \
- .word longjmp_msg(GOTOFF);
-#else
-# define CALL_FAIL \
- ldr r0, .Lstr; \
- B HIDDEN_JUMPTARGET(__fortify_fail); \
-.Lstr: \
- .word longjmp_msg;
-#endif
-
-#define CHECK_SP(reg) \
- cfi_remember_state; \
- cmp sp, reg; \
- bls .Lok; \
- push { r7 }; \
- cfi_adjust_cfa_offset (4); \
- cfi_rel_offset (r7, 0); \
- mov r5, r0; \
- cfi_undefined (r5); \
- mov r7, #SYS_ify(sigaltstack); \
- mov r0, #0; \
- sub sp, sp, #12; /* == sizeof (stack_t) */ \
- cfi_adjust_cfa_offset (12); \
- cfi_remember_state; \
- mov r1, sp; \
- swi #0; \
- cmp r0, #0; \
- bne .Lok2; \
- ldr r1, [sp, #4]; \
- tst r1, #1; \
- beq .Lfail; \
- ldr r2, [sp, #0]; \
- ldr r3, [sp, #8]; \
- add r2, r2, r3; \
- sub r2, r2, reg; \
- cmp r2, r3; \
- bhi .Lok2; \
-.Lfail: \
- add sp, sp, #12; \
- cfi_adjust_cfa_offset (-12); \
- pop { r7 }; \
- cfi_adjust_cfa_offset (-4); \
- cfi_restore (r7); \
- CALL_FAIL \
- cfi_restore_state; \
-.Lok2: \
- mov r0, r5; \
- cfi_restore_state; \
-.Lok:
-
-#include <__longjmp.S>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/aeabi_read_tp.S b/ports/sysdeps/unix/sysv/linux/arm/aeabi_read_tp.S
deleted file mode 100644
index 9351233873..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/aeabi_read_tp.S
+++ /dev/null
@@ -1,55 +0,0 @@
-/* Copyright (C) 2005-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file with other
- programs, and to distribute those programs without any restriction
- coming from the use of this file. (The GNU Lesser General Public
- License restrictions do apply in other respects; for example, they
- cover modification of the file, and distribution when not linked
- into another program.)
-
- Note that people who make modified versions of this file are not
- obligated to grant this special exception for their modified
- versions; it is their choice whether to do so. The GNU Lesser
- General Public License gives permission to release a modified
- version without this exception; this exception also makes it
- possible to release a modified version which carries forward this
- exception.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library. If not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <sysdep.h>
-
-/* GCC will emit calls to this routine under -mtp=soft. Linux has an
- equivalent helper function (which clobbers fewer registers than
- a normal function call) in a high page of memory; tail call to the
- helper. */
-
- .hidden __aeabi_read_tp
-ENTRY (__aeabi_read_tp)
-#ifdef ARCH_HAS_HARD_TP
- mrc p15, 0, r0, c13, c0, 3
- bx lr
-#elif defined(__thumb2__)
- movw r0, #0x0fe0
- movt r0, #0xffff
- bx r0
-#else
- mov r0, #0xffff0fff
- sub pc, r0, #31
-#endif
-END (__aeabi_read_tp)
diff --git a/ports/sysdeps/unix/sysv/linux/arm/alphasort64.c b/ports/sysdeps/unix/sysv/linux/arm/alphasort64.c
deleted file mode 100644
index 0b5ae47d2f..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/alphasort64.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/alphasort64.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/arm-features.h b/ports/sysdeps/unix/sysv/linux/arm/arm-features.h
deleted file mode 100644
index 5c721ef17d..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/arm-features.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Macros to test for CPU features on ARM. Linux version.
- Copyright (C) 2012-2014 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 _LINUX_ARM_FEATURES_H
-#define _LINUX_ARM_FEATURES_H 1
-
-#ifndef __ASSEMBLER__
-# include <ldsodefs.h>
-
-# define ARM_HAVE_VFP (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
-#endif
-
-#include_next <arm-features.h>
-
-#endif /* arm-features.h */
diff --git a/ports/sysdeps/unix/sysv/linux/arm/bits/atomic.h b/ports/sysdeps/unix/sysv/linux/arm/bits/atomic.h
deleted file mode 100644
index cc73684e8a..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/bits/atomic.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/* Atomic operations. ARM/Linux version.
- Copyright (C) 2002-2014 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 <stdint.h>
-
-/* If the compiler doesn't provide a primitive, we'll use this macro
- to get assistance from the kernel. */
-#ifdef __thumb2__
-# define __arm_assisted_full_barrier() \
- __asm__ __volatile__ \
- ("movw\tip, #0x0fa0\n\t" \
- "movt\tip, #0xffff\n\t" \
- "blx\tip" \
- : : : "ip", "lr", "cc", "memory");
-#else
-# define __arm_assisted_full_barrier() \
- __asm__ __volatile__ \
- ("mov\tip, #0xffff0fff\n\t" \
- "mov\tlr, pc\n\t" \
- "add\tpc, ip, #(0xffff0fa0 - 0xffff0fff)" \
- : : : "ip", "lr", "cc", "memory");
-#endif
-
-/* Atomic compare and exchange. This sequence relies on the kernel to
- provide a compare and exchange operation which is atomic on the
- current architecture, either via cleverness on pre-ARMv6 or via
- ldrex / strex on ARMv6.
-
- It doesn't matter what register is used for a_oldval2, but we must
- specify one to work around GCC PR rtl-optimization/21223. Otherwise
- it may cause a_oldval or a_tmp to be moved to a different register.
-
- We use the union trick rather than simply using __typeof (...) in the
- declarations of A_OLDVAL et al because when NEWVAL or OLDVAL is of the
- form *PTR and PTR has a 'volatile ... *' type, then __typeof (*PTR) has
- a 'volatile ...' type and this triggers -Wvolatile-register-var to
- complain about 'register volatile ... asm ("reg")'. */
-#ifdef __thumb2__
-/* Thumb-2 has ldrex/strex. However it does not have barrier instructions,
- so we still need to use the kernel helper. */
-# define __arm_assisted_compare_and_exchange_val_32_acq(mem, newval, oldval) \
- ({ union { __typeof (oldval) a; uint32_t v; } oldval_arg = { .a = (oldval) };\
- union { __typeof (newval) a; uint32_t v; } newval_arg = { .a = (newval) };\
- register uint32_t a_oldval asm ("r0"); \
- register uint32_t a_newval asm ("r1") = newval_arg.v; \
- register __typeof (mem) a_ptr asm ("r2") = (mem); \
- register uint32_t a_tmp asm ("r3"); \
- register uint32_t a_oldval2 asm ("r4") = oldval_arg.v; \
- __asm__ __volatile__ \
- ("0:\tldr\t%[tmp],[%[ptr]]\n\t" \
- "cmp\t%[tmp], %[old2]\n\t" \
- "bne\t1f\n\t" \
- "mov\t%[old], %[old2]\n\t" \
- "movw\t%[tmp], #0x0fc0\n\t" \
- "movt\t%[tmp], #0xffff\n\t" \
- "blx\t%[tmp]\n\t" \
- "bcc\t0b\n\t" \
- "mov\t%[tmp], %[old2]\n\t" \
- "1:" \
- : [old] "=&r" (a_oldval), [tmp] "=&r" (a_tmp) \
- : [new] "r" (a_newval), [ptr] "r" (a_ptr), \
- [old2] "r" (a_oldval2) \
- : "ip", "lr", "cc", "memory"); \
- (__typeof (oldval)) a_tmp; })
-#else
-# define __arm_assisted_compare_and_exchange_val_32_acq(mem, newval, oldval) \
- ({ union { __typeof (oldval) a; uint32_t v; } oldval_arg = { .a = (oldval) };\
- union { __typeof (newval) a; uint32_t v; } newval_arg = { .a = (newval) };\
- register uint32_t a_oldval asm ("r0"); \
- register uint32_t a_newval asm ("r1") = newval_arg.v; \
- register __typeof (mem) a_ptr asm ("r2") = (mem); \
- register uint32_t a_tmp asm ("r3"); \
- register uint32_t a_oldval2 asm ("r4") = oldval_arg.v; \
- __asm__ __volatile__ \
- ("0:\tldr\t%[tmp],[%[ptr]]\n\t" \
- "cmp\t%[tmp], %[old2]\n\t" \
- "bne\t1f\n\t" \
- "mov\t%[old], %[old2]\n\t" \
- "mov\t%[tmp], #0xffff0fff\n\t" \
- "mov\tlr, pc\n\t" \
- "add\tpc, %[tmp], #(0xffff0fc0 - 0xffff0fff)\n\t" \
- "bcc\t0b\n\t" \
- "mov\t%[tmp], %[old2]\n\t" \
- "1:" \
- : [old] "=&r" (a_oldval), [tmp] "=&r" (a_tmp) \
- : [new] "r" (a_newval), [ptr] "r" (a_ptr), \
- [old2] "r" (a_oldval2) \
- : "ip", "lr", "cc", "memory"); \
- (__typeof (oldval)) a_tmp; })
-#endif
-
-#include <sysdeps/arm/bits/atomic.h>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/bits/fcntl.h b/ports/sysdeps/unix/sysv/linux/arm/bits/fcntl.h
deleted file mode 100644
index a5f5f448e8..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/bits/fcntl.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* O_*, F_*, FD_* bit values for Linux.
- Copyright (C) 1995-2014 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 _FCNTL_H
-# error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
-#endif
-
-#define __O_DIRECTORY 040000 /* Must be a directory. */
-#define __O_NOFOLLOW 0100000 /* Do not follow links. */
-#define __O_DIRECT 0200000 /* Direct disk access. */
-#define __O_LARGEFILE 0400000
-
-struct flock
- {
- short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */
- short int l_whence; /* Where `l_start' is relative to (like `lseek'). */
-#ifndef __USE_FILE_OFFSET64
- __off_t l_start; /* Offset where the lock begins. */
- __off_t l_len; /* Size of the locked area; zero means until EOF. */
-#else
- __off64_t l_start; /* Offset where the lock begins. */
- __off64_t l_len; /* Size of the locked area; zero means until EOF. */
-#endif
- __pid_t l_pid; /* Process holding the lock. */
- };
-
-#ifdef __USE_LARGEFILE64
-struct flock64
- {
- short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */
- short int l_whence; /* Where `l_start' is relative to (like `lseek'). */
- __off64_t l_start; /* Offset where the lock begins. */
- __off64_t l_len; /* Size of the locked area; zero means until EOF. */
- __pid_t l_pid; /* Process holding the lock. */
- };
-#endif
-
-/* Include generic Linux declarations. */
-#include <bits/fcntl-linux.h>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/bits/hwcap.h b/ports/sysdeps/unix/sysv/linux/arm/bits/hwcap.h
deleted file mode 100644
index b438d2a02f..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/bits/hwcap.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Defines for bits in AT_HWCAP. ARM Linux version.
- Copyright (C) 2012-2014 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 _SYS_AUXV_H
-# error "Never include <bits/hwcap.h> directly; use <sys/auxv.h> instead."
-#endif
-
-/* The following must match the kernel's <asm/hwcap.h>. */
-#define HWCAP_ARM_SWP 1
-#define HWCAP_ARM_HALF 2
-#define HWCAP_ARM_THUMB 4
-#define HWCAP_ARM_26BIT 8
-#define HWCAP_ARM_FAST_MULT 16
-#define HWCAP_ARM_FPA 32
-#define HWCAP_ARM_VFP 64
-#define HWCAP_ARM_EDSP 128
-#define HWCAP_ARM_JAVA 256
-#define HWCAP_ARM_IWMMXT 512
-#define HWCAP_ARM_CRUNCH 1024
-#define HWCAP_ARM_THUMBEE 2048
-#define HWCAP_ARM_NEON 4096
-#define HWCAP_ARM_VFPv3 8192
-#define HWCAP_ARM_VFPv3D16 16384
-#define HWCAP_ARM_TLS 32768
-#define HWCAP_ARM_VFPv4 65536
-#define HWCAP_ARM_IDIVA 131072
-#define HWCAP_ARM_IDIVT 262144
diff --git a/ports/sysdeps/unix/sysv/linux/arm/bits/mman.h b/ports/sysdeps/unix/sysv/linux/arm/bits/mman.h
deleted file mode 100644
index 8259b96894..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/bits/mman.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Definitions for POSIX memory map interface. Linux/ARM version.
- Copyright (C) 1997-2014 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 _SYS_MMAN_H
-# error "Never use <bits/mman.h> directly; include <sys/mman.h> instead."
-#endif
-
-/* The following definitions basically come from the kernel headers.
- But the kernel header is not namespace clean. */
-
-/* These are Linux-specific. */
-#ifdef __USE_MISC
-# define MAP_GROWSDOWN 0x00100 /* Stack-like segment. */
-# define MAP_DENYWRITE 0x00800 /* ETXTBSY */
-# define MAP_EXECUTABLE 0x01000 /* Mark it as an executable. */
-# define MAP_LOCKED 0x02000 /* Lock the mapping. */
-# define MAP_NORESERVE 0x04000 /* Don't check for reservations. */
-# define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */
-# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
-# define MAP_STACK 0x20000 /* Allocation is for a stack. */
-# define MAP_HUGETLB 0x40000 /* Create huge page mapping. */
-#endif
-
-/* Include generic Linux declarations. */
-#include <bits/mman-linux.h>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/bits/shm.h b/ports/sysdeps/unix/sysv/linux/arm/bits/shm.h
deleted file mode 100644
index a479054495..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/bits/shm.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/* Copyright (C) 1995-2014 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 _SYS_SHM_H
-# error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."
-#endif
-
-#include <bits/types.h>
-
-/* Permission flag for shmget. */
-#define SHM_R 0400 /* or S_IRUGO from <linux/stat.h> */
-#define SHM_W 0200 /* or S_IWUGO from <linux/stat.h> */
-
-/* Flags for `shmat'. */
-#define SHM_RDONLY 010000 /* attach read-only else read-write */
-#define SHM_RND 020000 /* round attach address to SHMLBA */
-#define SHM_REMAP 040000 /* take-over region on attach */
-#define SHM_EXEC 0100000 /* execution access */
-
-/* Commands for `shmctl'. */
-#define SHM_LOCK 11 /* lock segment (root only) */
-#define SHM_UNLOCK 12 /* unlock segment (root only) */
-
-__BEGIN_DECLS
-
-/* Segment low boundary address multiple. */
-#define SHMLBA (__getpagesize () << 2)
-extern int __getpagesize (void) __THROW __attribute__ ((__const__));
-
-
-/* Type to count number of attaches. */
-typedef unsigned long int shmatt_t;
-
-/* Data structure describing a shared memory segment. */
-struct shmid_ds
- {
- struct ipc_perm shm_perm; /* operation permission struct */
- size_t shm_segsz; /* size of segment in bytes */
- __time_t shm_atime; /* time of last shmat() */
- unsigned long int __glibc_reserved1;
- __time_t shm_dtime; /* time of last shmdt() */
- unsigned long int __glibc_reserved2;
- __time_t shm_ctime; /* time of last change by shmctl() */
- unsigned long int __glibc_reserved3;
- __pid_t shm_cpid; /* pid of creator */
- __pid_t shm_lpid; /* pid of last shmop */
- shmatt_t shm_nattch; /* number of current attaches */
- unsigned long int __glibc_reserved4;
- unsigned long int __glibc_reserved5;
- };
-
-#ifdef __USE_MISC
-
-/* ipcs ctl commands */
-# define SHM_STAT 13
-# define SHM_INFO 14
-
-/* shm_mode upper byte flags */
-# define SHM_DEST 01000 /* segment will be destroyed on last detach */
-# define SHM_LOCKED 02000 /* segment will not be swapped */
-# define SHM_HUGETLB 04000 /* segment is mapped via hugetlb */
-# define SHM_NORESERVE 010000 /* don't check for reservations */
-
-struct shminfo
- {
- unsigned long int shmmax;
- unsigned long int shmmin;
- unsigned long int shmmni;
- unsigned long int shmseg;
- unsigned long int shmall;
- unsigned long int __glibc_reserved1;
- unsigned long int __glibc_reserved2;
- unsigned long int __glibc_reserved3;
- unsigned long int __glibc_reserved4;
- };
-
-struct shm_info
- {
- int used_ids;
- unsigned long int shm_tot; /* total allocated shm */
- unsigned long int shm_rss; /* total resident shm */
- unsigned long int shm_swp; /* total swapped shm */
- unsigned long int swap_attempts;
- unsigned long int swap_successes;
- };
-
-#endif /* __USE_MISC */
-
-__END_DECLS
diff --git a/ports/sysdeps/unix/sysv/linux/arm/brk.c b/ports/sysdeps/unix/sysv/linux/arm/brk.c
deleted file mode 100644
index f442b5381d..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/brk.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* brk system call for Linux/ARM.
- Copyright (C) 1995-2014 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>
-#include <unistd.h>
-#include <sysdep.h>
-
-/* This must be initialized data because commons can't have aliases. */
-void *__curbrk = 0;
-
-int
-__brk (void *addr)
-{
- void *newbrk;
-
- __curbrk = newbrk = (void *) INLINE_SYSCALL (brk, 1, addr);
-
- if (newbrk < addr)
- {
- __set_errno (ENOMEM);
- return -1;
- }
-
- return 0;
-}
-weak_alias (__brk, brk)
diff --git a/ports/sysdeps/unix/sysv/linux/arm/clone.S b/ports/sysdeps/unix/sysv/linux/arm/clone.S
deleted file mode 100644
index 03fe9ab728..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/clone.S
+++ /dev/null
@@ -1,99 +0,0 @@
-/* Copyright (C) 1996-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Pat Beirne <patb@corelcomputer.com>
-
- 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/>. */
-
-/* clone() is even more special than fork() as it mucks with stacks
- and invokes a function in the right context after its all over. */
-
-#include <sysdep.h>
-#define _ERRNO_H 1
-#include <bits/errno.h>
-
-#define CLONE_VM 0x00000100
-#define CLONE_THREAD 0x00010000
-
-/* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg,
- pid_t *ptid, struct user_desc *tls, pid_t *ctid); */
-
- .text
-ENTRY(__clone)
- @ sanity check args
- cmp r0, #0
- ite ne
- cmpne r1, #0
- moveq r0, #-EINVAL
- beq PLTJMP(syscall_error)
-
- @ insert the args onto the new stack
- str r3, [r1, #-4]!
- str r0, [r1, #-4]!
-
- @ do the system call
- @ get flags
- mov r0, r2
-#ifdef RESET_PID
- mov ip, r2
-#endif
- @ new sp is already in r1
- push {r4, r7}
- cfi_adjust_cfa_offset (8)
- cfi_rel_offset (r4, 0)
- cfi_rel_offset (r7, 4)
- ldr r2, [sp, #8]
- ldr r3, [sp, #12]
- ldr r4, [sp, #16]
- ldr r7, =SYS_ify(clone)
- swi 0x0
- cfi_endproc
- cmp r0, #0
- beq 1f
- pop {r4, r7}
- blt PLTJMP(C_SYMBOL_NAME(__syscall_error))
- RETINSTR(, lr)
-
- cfi_startproc
-PSEUDO_END (__clone)
-
-1:
- .fnstart
- .cantunwind
-#ifdef RESET_PID
- tst ip, #CLONE_THREAD
- bne 3f
- GET_TLS (lr)
- mov r1, r0
- tst ip, #CLONE_VM
- ldr r7, =SYS_ify(getpid)
- ite ne
- movne r0, #-1
- swieq 0x0
- NEGOFF_ADJ_BASE (r1, TID_OFFSET)
- str r0, NEGOFF_OFF1 (r1, TID_OFFSET)
- str r0, NEGOFF_OFF2 (r1, PID_OFFSET, TID_OFFSET)
-3:
-#endif
- @ pick the function arg and call address off the stack and execute
- ldr r0, [sp, #4]
- ldr ip, [sp], #8
- BLX (ip)
-
- @ and we are done, passing the return value through r0
- b PLTJMP(HIDDEN_JUMPTARGET(_exit))
-
- .fnend
-
-weak_alias (__clone, clone)
diff --git a/ports/sysdeps/unix/sysv/linux/arm/configure b/ports/sysdeps/unix/sysv/linux/arm/configure
deleted file mode 100644
index 71eb195942..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/configure
+++ /dev/null
@@ -1,6 +0,0 @@
-# This file is generated from configure.ac by Autoconf. DO NOT EDIT!
- # Local configure fragment for sysdeps/unix/sysv/linux/arm.
-
-libc_cv_gcc_unwind_find_fde=no
-# Remove -fno-unwind-tables that was added in sysdeps/arm/preconfigure.ac.
-CFLAGS=${CFLAGS% -fno-unwind-tables}
diff --git a/ports/sysdeps/unix/sysv/linux/arm/configure.ac b/ports/sysdeps/unix/sysv/linux/arm/configure.ac
deleted file mode 100644
index 8e4e20d2b8..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/configure.ac
+++ /dev/null
@@ -1,6 +0,0 @@
-GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
-# Local configure fragment for sysdeps/unix/sysv/linux/arm.
-
-libc_cv_gcc_unwind_find_fde=no
-# Remove -fno-unwind-tables that was added in sysdeps/arm/preconfigure.ac.
-CFLAGS=${CFLAGS% -fno-unwind-tables}
diff --git a/ports/sysdeps/unix/sysv/linux/arm/dl-cache.h b/ports/sysdeps/unix/sysv/linux/arm/dl-cache.h
deleted file mode 100644
index 66e6cdbfc6..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/dl-cache.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Support for reading /etc/ld.so.cache files written by Linux ldconfig.
- Copyright (C) 2003-2014 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 <ldconfig.h>
-
-/* In order to support the transition from unmarked objects
- to marked objects we must treat unmarked objects as
- compatible with either FLAG_ARM_LIBHF or FLAG_ARM_LIBSF. */
-#ifdef __ARM_PCS_VFP
-# define _dl_cache_check_flags(flags) \
- ((flags) == (FLAG_ARM_LIBHF | FLAG_ELF_LIBC6) \
- || (flags) == FLAG_ELF_LIBC6)
-#else
-# define _dl_cache_check_flags(flags) \
- ((flags) == (FLAG_ARM_LIBSF | FLAG_ELF_LIBC6) \
- || (flags) == FLAG_ELF_LIBC6)
-#endif
-
-#include_next <dl-cache.h>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/dl-machine.h b/ports/sysdeps/unix/sysv/linux/arm/dl-machine.h
deleted file mode 100644
index 9946db8a56..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/dl-machine.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Machine-dependent ELF dynamic relocation inline functions. ARM/Linux version
- Copyright (C) 1995-2014 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 dl_machine_h
-
-/* This definition is Linux-specific. */
-#define CLEAR_CACHE(BEG,END) \
- INTERNAL_SYSCALL_ARM (cacheflush, , 3, (BEG), (END), 0)
-
-#endif
-
-/* The rest is just machine-specific.
- This #include is outside the #ifndef because the parts of
- dl-machine.h used only by dynamic-link.h are outside the guard. */
-#include <sysdeps/arm/dl-machine.h>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/dl-procinfo.c b/ports/sysdeps/unix/sysv/linux/arm/dl-procinfo.c
deleted file mode 100644
index d304539f0c..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/dl-procinfo.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/* Data for Linux/ARM version of processor capability information.
- Copyright (C) 2001-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Philip Blundell <philb@gnu.org>, 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/>. */
-
-/* This information must be kept in sync with the _DL_HWCAP_COUNT and
- _DL_PLATFORM_COUNT definitions in procinfo.h.
-
- If anything should be added here check whether the size of each string
- is still ok with the given array size.
-
- All the #ifdefs in the definitions ar equite irritating but
- necessary if we want to avoid duplicating the information. There
- are three different modes:
-
- - PROCINFO_DECL is defined. This means we are only interested in
- declarations.
-
- - PROCINFO_DECL is not defined:
-
- + if SHARED is defined the file is included in an array
- initializer. The .element = { ... } syntax is needed.
-
- + if SHARED is not defined a normal array initialization is
- needed.
- */
-
-#ifndef PROCINFO_CLASS
-#define PROCINFO_CLASS
-#endif
-
-#if !defined PROCINFO_DECL && defined SHARED
- ._dl_arm_cap_flags
-#else
-PROCINFO_CLASS const char _dl_arm_cap_flags[19][10]
-#endif
-#ifndef PROCINFO_DECL
-= {
- "swp", "half", "thumb", "26bit", "fastmult", "fpa", "vfp", "edsp",
- "java", "iwmmxt", "crunch", "thumbee", "neon", "vfpv3", "vfpv3d16",
- "tls", "vfpv4", "idiva", "idivt",
- }
-#endif
-#if !defined SHARED || defined PROCINFO_DECL
-;
-#else
-,
-#endif
-
-#undef PROCINFO_DECL
-#undef PROCINFO_CLASS
diff --git a/ports/sysdeps/unix/sysv/linux/arm/dl-procinfo.h b/ports/sysdeps/unix/sysv/linux/arm/dl-procinfo.h
deleted file mode 100644
index 2f8f003e9f..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/dl-procinfo.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/* Linux/ARM version of processor capability information handling macros.
- Copyright (C) 2001-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Philip Blundell <philb@gnu.org>, 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/>. */
-
-#ifndef _DL_PROCINFO_H
-#define _DL_PROCINFO_H 1
-
-#include <ldsodefs.h>
-#include <sysdep.h>
-
-#define _DL_HWCAP_COUNT 19
-
-/* The kernel provides platform data but it is not interesting. */
-#define _DL_HWCAP_PLATFORM 0
-
-
-static inline int
-__attribute__ ((unused))
-_dl_procinfo (unsigned int type, unsigned long int word)
-{
- int i;
-
- /* Fallback to unknown output mechanism. */
- if (type == AT_HWCAP2)
- return -1;
-
- _dl_printf ("AT_HWCAP: ");
-
- for (i = 0; i < _DL_HWCAP_COUNT; ++i)
- if (word & (1 << i))
- _dl_printf (" %s", GLRO(dl_arm_cap_flags)[i]);
-
- _dl_printf ("\n");
-
- return 0;
-}
-
-static inline const char *
-__attribute__ ((unused))
-_dl_hwcap_string (int idx)
-{
- return GLRO(dl_arm_cap_flags)[idx];
-};
-
-#define HWCAP_IMPORTANT (HWCAP_ARM_VFP | HWCAP_ARM_NEON)
-
-static inline int
-__attribute__ ((unused))
-_dl_string_hwcap (const char *str)
-{
- int i;
-
- for (i = 0; i < _DL_HWCAP_COUNT; i++)
- {
- if (strcmp (str, GLRO(dl_arm_cap_flags)[i]) == 0)
- return i;
- }
- return -1;
-};
-
-#define _dl_string_platform(str) (-1)
-
-#endif /* dl-procinfo.h */
diff --git a/ports/sysdeps/unix/sysv/linux/arm/fchown.c b/ports/sysdeps/unix/sysv/linux/arm/fchown.c
deleted file mode 100644
index 3a69ecc9e7..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/fchown.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/fchown.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/fcntl.c b/ports/sysdeps/unix/sysv/linux/arm/fcntl.c
deleted file mode 100644
index ea951bc4f9..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/fcntl.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/fcntl.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/ftruncate64.c b/ports/sysdeps/unix/sysv/linux/arm/ftruncate64.c
deleted file mode 100644
index 49631d4432..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/ftruncate64.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Copyright (C) 1997-2014 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 <sys/types.h>
-#include <errno.h>
-#include <endian.h>
-#include <unistd.h>
-
-#include <sysdep.h>
-#include <sys/syscall.h>
-
-/* Truncate the file FD refers to to LENGTH bytes. */
-int
-__ftruncate64 (int fd, off64_t length)
-{
- unsigned int low = length & 0xffffffff;
- unsigned int high = length >> 32;
- int result = INLINE_SYSCALL (ftruncate64, 4, fd, 0,
- __LONG_LONG_PAIR (high, low));
- return result;
-}
-weak_alias (__ftruncate64, ftruncate64)
diff --git a/ports/sysdeps/unix/sysv/linux/arm/fxstat.c b/ports/sysdeps/unix/sysv/linux/arm/fxstat.c
deleted file mode 100644
index 4f219f0b9d..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/fxstat.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/fxstat.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/fxstatat.c b/ports/sysdeps/unix/sysv/linux/arm/fxstatat.c
deleted file mode 100644
index 0f8b3135d8..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/fxstatat.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/fxstatat.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/getcontext.S b/ports/sysdeps/unix/sysv/linux/arm/getcontext.S
deleted file mode 100644
index b8b7b202b8..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/getcontext.S
+++ /dev/null
@@ -1,115 +0,0 @@
-/* Copyright (C) 2012-2014 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>
-#include <rtld-global-offsets.h>
-
-#include "ucontext_i.h"
-
- .syntax unified
- .text
-
-/* int getcontext (ucontext_t *ucp) */
-
-ENTRY(__getcontext)
- /* No need to save r0-r3, d0-d7, or d16-d31. */
- add r1, r0, #MCONTEXT_ARM_R4
- stmia r1, {r4-r11}
-
- /* Save R13 separately as Thumb can't STM it. */
- str r13, [r0, #MCONTEXT_ARM_SP]
- str r14, [r0, #MCONTEXT_ARM_LR]
- /* Return to LR */
- str r14, [r0, #MCONTEXT_ARM_PC]
- /* Return zero */
- mov r2, #0
- str r2, [r0, #MCONTEXT_ARM_R0]
-
- /* Save ucontext_t * across the next call. */
- mov r4, r0
-
- /* __sigprocmask(SIG_BLOCK, NULL, &(ucontext->uc_sigmask)) */
- mov r0, #SIG_BLOCK
- mov r1, #0
- add r2, r4, #UCONTEXT_SIGMASK
- bl PLTJMP(__sigprocmask)
-
- /* Store FP regs. Much of the FP code is copied from arm/setjmp.S. */
-
-#ifdef PIC
- ldr r2, 1f
- ldr r1, .Lrtld_global_ro
-0: add r2, pc, r2
- ldr r2, [r2, r1]
- ldr r2, [r2, #RTLD_GLOBAL_RO_DL_HWCAP_OFFSET]
-#else
- ldr r2, .Lhwcap
- ldr r2, [r2, #0]
-#endif
-
- add r0, r4, #UCONTEXT_REGSPACE
-
-#ifdef __SOFTFP__
- tst r2, #HWCAP_ARM_VFP
- beq .Lno_vfp
-#endif
-
- /* Store the VFP registers.
- Don't use VFP instructions directly because this code
- is used in non-VFP multilibs. */
- /* Following instruction is vstmia r0!, {d8-d15}. */
- stc p11, cr8, [r0], #64
- /* Store the floating-point status register. */
- /* Following instruction is vmrs r1, fpscr. */
- mrc p10, 7, r1, cr1, cr0, 0
- str r1, [r0], #4
-.Lno_vfp:
-
- tst r2, #HWCAP_ARM_IWMMXT
- beq .Lno_iwmmxt
-
- /* Save the call-preserved iWMMXt registers. */
- /* Following instructions are wstrd wr10, [r0], #8 (etc.) */
- stcl p1, cr10, [r0], #8
- stcl p1, cr11, [r0], #8
- stcl p1, cr12, [r0], #8
- stcl p1, cr13, [r0], #8
- stcl p1, cr14, [r0], #8
- stcl p1, cr15, [r0], #8
-.Lno_iwmmxt:
-
- /* Restore the clobbered R4 and LR. */
- ldr r14, [r4, #MCONTEXT_ARM_LR]
- ldr r4, [r4, #MCONTEXT_ARM_R4]
-
- mov r0, #0
-
- DO_RET(r14)
-
-END(__getcontext)
-
-#ifdef PIC
-1: .long _GLOBAL_OFFSET_TABLE_ - 0b - PC_OFS
-.Lrtld_global_ro:
- .long C_SYMBOL_NAME(_rtld_global_ro)(GOT)
-#else
-.Lhwcap:
- .long C_SYMBOL_NAME(_dl_hwcap)
-#endif
-
-
-weak_alias(__getcontext, getcontext)
diff --git a/ports/sysdeps/unix/sysv/linux/arm/getdents64.c b/ports/sysdeps/unix/sysv/linux/arm/getdents64.c
deleted file mode 100644
index 0c75fb5a06..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/getdents64.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/getdents64.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/getegid.c b/ports/sysdeps/unix/sysv/linux/arm/getegid.c
deleted file mode 100644
index 37b4b4a530..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/getegid.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/getegid.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/geteuid.c b/ports/sysdeps/unix/sysv/linux/arm/geteuid.c
deleted file mode 100644
index ebcb555b5e..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/geteuid.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/geteuid.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/getgid.c b/ports/sysdeps/unix/sysv/linux/arm/getgid.c
deleted file mode 100644
index 0a4d6061f0..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/getgid.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/getgid.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/getgroups.c b/ports/sysdeps/unix/sysv/linux/arm/getgroups.c
deleted file mode 100644
index 102ea24e14..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/getgroups.c
+++ /dev/null
@@ -1,2 +0,0 @@
-/* We also have to rewrite the kernel gid_t to the user land type. */
-#include <sysdeps/unix/sysv/linux/i386/getgroups.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/getresgid.c b/ports/sysdeps/unix/sysv/linux/arm/getresgid.c
deleted file mode 100644
index b703a414cc..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/getresgid.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/getresgid.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/getresuid.c b/ports/sysdeps/unix/sysv/linux/arm/getresuid.c
deleted file mode 100644
index 0b14cefe34..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/getresuid.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/getresuid.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/getrlimit64.c b/ports/sysdeps/unix/sysv/linux/arm/getrlimit64.c
deleted file mode 100644
index fef018f471..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/getrlimit64.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/getrlimit64.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/getuid.c b/ports/sysdeps/unix/sysv/linux/arm/getuid.c
deleted file mode 100644
index d682c79a49..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/getuid.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/getuid.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/glob64.c b/ports/sysdeps/unix/sysv/linux/arm/glob64.c
deleted file mode 100644
index 82a9a296a7..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/glob64.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/glob64.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/internal_accept4.S b/ports/sysdeps/unix/sysv/linux/arm/internal_accept4.S
deleted file mode 100644
index eeb5f50a26..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/internal_accept4.S
+++ /dev/null
@@ -1,6 +0,0 @@
-/* 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
diff --git a/ports/sysdeps/unix/sysv/linux/arm/internal_recvmmsg.S b/ports/sysdeps/unix/sysv/linux/arm/internal_recvmmsg.S
deleted file mode 100644
index eeb5f50a26..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/internal_recvmmsg.S
+++ /dev/null
@@ -1,6 +0,0 @@
-/* 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
diff --git a/ports/sysdeps/unix/sysv/linux/arm/internal_sendmmsg.S b/ports/sysdeps/unix/sysv/linux/arm/internal_sendmmsg.S
deleted file mode 100644
index eeb5f50a26..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/internal_sendmmsg.S
+++ /dev/null
@@ -1,6 +0,0 @@
-/* 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
diff --git a/ports/sysdeps/unix/sysv/linux/arm/ioperm.c b/ports/sysdeps/unix/sysv/linux/arm/ioperm.c
deleted file mode 100644
index 19b79f4bc6..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/ioperm.c
+++ /dev/null
@@ -1,279 +0,0 @@
-/* Copyright (C) 1998-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Phil Blundell, based on the Alpha version by
- David Mosberger.
-
- 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/>. */
-
-/* I/O port access on the ARM is something of a fiction. What we do is to
- map an appropriate area of /dev/mem into user space so that a program
- can blast away at the hardware in such a way as to generate I/O cycles
- on the bus. To insulate user code from dependencies on particular
- hardware we don't allow calls to inb() and friends to be inlined, but
- force them to come through code in here every time. Performance-critical
- registers tend to be memory mapped these days so this should be no big
- problem. */
-
-/* Once upon a time this file used mprotect to enable and disable
- access to particular areas of I/O space. Unfortunately the
- mprotect syscall also has the side effect of enabling caching for
- the area affected (this is a kernel limitation). So we now just
- enable all the ports all of the time. */
-
-#include <errno.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-#include <sys/types.h>
-#include <sys/mman.h>
-
-#include <linux/version.h>
-#include <sys/sysctl.h>
-
-#define PATH_ARM_SYSTYPE "/etc/arm_systype"
-#define PATH_CPUINFO "/proc/cpuinfo"
-
-#define MAX_PORT 0x10000
-
-static struct {
- unsigned long int base;
- unsigned long int io_base;
- unsigned int shift;
- unsigned int initdone; /* since all the above could be 0 */
-} io;
-
-#define IO_BASE_FOOTBRIDGE 0x7c000000
-#define IO_SHIFT_FOOTBRIDGE 0
-
-static struct platform {
- const char *name;
- unsigned long int io_base;
- unsigned int shift;
-} platform[] = {
- /* All currently supported platforms are in fact the same. :-) */
- {"Chalice-CATS", IO_BASE_FOOTBRIDGE, IO_SHIFT_FOOTBRIDGE},
- {"DEC-EBSA285", IO_BASE_FOOTBRIDGE, IO_SHIFT_FOOTBRIDGE},
- {"Corel-NetWinder", IO_BASE_FOOTBRIDGE, IO_SHIFT_FOOTBRIDGE},
- {"Rebel-NetWinder", IO_BASE_FOOTBRIDGE, IO_SHIFT_FOOTBRIDGE},
-};
-
-#define IO_ADDR(port) (io.base + ((port) << io.shift))
-
-/*
- * Initialize I/O system. There are several ways to get the information
- * we need. Each is tried in turn until one succeeds.
- *
- * 1. Sysctl (CTL_BUS, CTL_BUS_ISA, ISA_*). This is the preferred method
- * but not all kernels support it.
- *
- * 2. Read the value (not the contents) of symlink PATH_ARM_SYSTYPE.
- * - If it matches one of the entries in the table above, use the
- * corresponding values.
- * - If it begins with a number, assume this is a previously
- * unsupported system and the values encode, in order,
- * "<io_base>,<port_shift>".
- *
- * 3. Lookup the "system type" field in /proc/cpuinfo. Again, if it
- * matches an entry in the platform[] table, use the corresponding
- * values.
- */
-
-/* The Linux kernel headers renamed this constant between 2.5.26 and
- 2.5.27. It was backported to 2.4 between 2.4.22 and 2.4.23. */
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,23)
-# define BUS_ISA CTL_BUS_ISA
-#endif
-
-static int
-init_iosys (void)
-{
- char systype[256];
- int i, n;
- static int iobase_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_BASE };
- static int ioshift_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_SHIFT };
- size_t len = sizeof(io.base);
-
- if (! __sysctl (iobase_name, 3, &io.io_base, &len, NULL, 0)
- && ! __sysctl (ioshift_name, 3, &io.shift, &len, NULL, 0))
- {
- io.initdone = 1;
- return 0;
- }
-
- n = __readlink (PATH_ARM_SYSTYPE, systype, sizeof (systype) - 1);
- if (n > 0)
- {
- systype[n] = '\0';
- if (isdigit (systype[0]))
- {
- if (sscanf (systype, "%li,%i", &io.io_base, &io.shift) == 2)
- {
- io.initdone = 1;
- return 0;
- }
- /* else we're likely going to fail with the system match below */
- }
- }
- else
- {
- FILE * fp;
-
- fp = fopen (PATH_CPUINFO, "rce");
- if (! fp)
- return -1;
- while ((n = fscanf (fp, "Hardware\t: %256[^\n]\n", systype))
- != EOF)
- {
- if (n == 1)
- break;
- else
- fgets_unlocked (systype, 256, fp);
- }
- fclose (fp);
-
- if (n == EOF)
- {
- /* this can happen if the format of /proc/cpuinfo changes... */
- fprintf (stderr,
- "ioperm: Unable to determine system type.\n"
- "\t(May need " PATH_ARM_SYSTYPE " symlink?)\n");
- __set_errno (ENODEV);
- return -1;
- }
- }
-
- /* translate systype name into i/o system: */
- for (i = 0; i < sizeof (platform) / sizeof (platform[0]); ++i)
- {
- if (strcmp (platform[i].name, systype) == 0)
- {
- io.shift = platform[i].shift;
- io.io_base = platform[i].io_base;
- io.initdone = 1;
- return 0;
- }
- }
-
- /* systype is not a known platform name... */
- __set_errno (ENODEV);
- return -1;
-}
-
-int
-_ioperm (unsigned long int from, unsigned long int num, int turn_on)
-{
- if (! io.initdone && init_iosys () < 0)
- return -1;
-
- /* this test isn't as silly as it may look like; consider overflows! */
- if (from >= MAX_PORT || from + num > MAX_PORT)
- {
- __set_errno (EINVAL);
- return -1;
- }
-
- if (turn_on)
- {
- if (! io.base)
- {
- int fd;
-
- fd = __open ("/dev/mem", O_RDWR);
- if (fd < 0)
- return -1;
-
- io.base =
- (unsigned long int) __mmap (0, MAX_PORT << io.shift,
- PROT_READ | PROT_WRITE,
- MAP_SHARED, fd, io.io_base);
- __close (fd);
- if ((long) io.base == -1)
- return -1;
- }
- }
-
- return 0;
-}
-
-
-int
-_iopl (unsigned int level)
-{
- if (level > 3)
- {
- __set_errno (EINVAL);
- return -1;
- }
- if (level)
- {
- return _ioperm (0, MAX_PORT, 1);
- }
- return 0;
-}
-
-
-void
-_outb (unsigned char b, unsigned long int port)
-{
- *((volatile unsigned char *)(IO_ADDR (port))) = b;
-}
-
-
-void
-_outw (unsigned short b, unsigned long int port)
-{
- *((volatile unsigned short *)(IO_ADDR (port))) = b;
-}
-
-
-void
-_outl (unsigned int b, unsigned long int port)
-{
- *((volatile unsigned long *)(IO_ADDR (port))) = b;
-}
-
-
-unsigned int
-_inb (unsigned long int port)
-{
- return *((volatile unsigned char *)(IO_ADDR (port)));
-}
-
-
-unsigned int
-_inw (unsigned long int port)
-{
- return *((volatile unsigned short *)(IO_ADDR (port)));
-}
-
-
-unsigned int
-_inl (unsigned long int port)
-{
- return *((volatile unsigned long *)(IO_ADDR (port)));
-}
-
-weak_alias (_ioperm, ioperm);
-weak_alias (_iopl, iopl);
-weak_alias (_inb, inb);
-weak_alias (_inw, inw);
-weak_alias (_inl, inl);
-weak_alias (_outb, outb);
-weak_alias (_outw, outw);
-weak_alias (_outl, outl);
diff --git a/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h b/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h
deleted file mode 100644
index 9d7ef877af..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Set flags signalling availability of kernel features based on given
- kernel version number.
- Copyright (C) 2006-2014 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/>. */
-
-/* The utimes syscall was added before 2.6.1. */
-#define __ASSUME_UTIMES 1
-
-/* The signal frame layout changed in 2.6.18. */
-#if __LINUX_KERNEL_VERSION >= 132626
-# define __ASSUME_SIGFRAME_V2 1
-#endif
-
-/* Support for the eventfd2 and signalfd4 syscalls was added in 2.6.27. */
-#if __LINUX_KERNEL_VERSION >= 0x02061b
-# define __ASSUME_EVENTFD2 1
-# define __ASSUME_SIGNALFD4 1
-#endif
-
-/* Support for the accept4 syscall was added in 2.6.36. */
-#if __LINUX_KERNEL_VERSION >= 0x020624
-# define __ASSUME_ACCEPT4 1
-#endif
-
-#include_next <kernel-features.h>
-
-/* Support for pselect6, ppoll and epoll_pwait was added in 2.6.32. */
-#if __LINUX_KERNEL_VERSION < 0x020620
-# undef __ASSUME_PSELECT
-# undef __ASSUME_PPOLL
-#endif
diff --git a/ports/sysdeps/unix/sysv/linux/arm/lchown.c b/ports/sysdeps/unix/sysv/linux/arm/lchown.c
deleted file mode 100644
index c89de99ba2..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/lchown.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/lchown.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/ldconfig.h b/ports/sysdeps/unix/sysv/linux/arm/ldconfig.h
deleted file mode 100644
index 316d82bdb3..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/ldconfig.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Copyright (C) 2001-2014 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 <sysdeps/generic/ldconfig.h>
-
-#define SYSDEP_KNOWN_INTERPRETER_NAMES \
- { "/lib/ld-linux.so.3", FLAG_ELF_LIBC6 }, \
- { "/lib/ld-linux-armhf.so.3", FLAG_ELF_LIBC6 },
-#define SYSDEP_KNOWN_LIBRARY_NAMES \
- { "libc.so.6", FLAG_ELF_LIBC6 }, \
- { "libm.so.6", FLAG_ELF_LIBC6 },
diff --git a/ports/sysdeps/unix/sysv/linux/arm/ldsodefs.h b/ports/sysdeps/unix/sysv/linux/arm/ldsodefs.h
deleted file mode 100644
index 32cdfab64c..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/ldsodefs.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/* Run-time dynamic linker data structures for loaded ELF shared objects.
- Copyright (C) 2010-2014 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 _ARM_LINUX_LDSODEFS_H
-#define _ARM_LINUX_LDSODEFS_H 1
-
-#include_next <ldsodefs.h>
-
-#undef VALID_ELF_HEADER
-#undef VALID_ELF_OSABI
-#undef MORE_ELF_HEADER_DATA
-
-#define EXTRA_OSABI ELFOSABI_ARM_AEABI
-
-#ifdef __ARM_PCS_VFP
-# define VALID_FLOAT_ABI(x) \
- ((EF_ARM_EABI_VERSION ((x)) != EF_ARM_EABI_VER5) \
- || !((x) & EF_ARM_ABI_FLOAT_SOFT))
-#else
-# define VALID_FLOAT_ABI(x) \
- ((EF_ARM_EABI_VERSION ((x)) != EF_ARM_EABI_VER5) \
- || !((x) & EF_ARM_ABI_FLOAT_HARD))
-#endif
-
-#undef VALID_ELF_HEADER
-#define VALID_ELF_HEADER(hdr,exp,size) \
- ((memcmp (hdr, exp, size) == 0 \
- || memcmp (hdr, expected2, size) == 0 \
- || memcmp (hdr, expected3, size) == 0) \
- && VALID_FLOAT_ABI (ehdr->e_flags))
-#define VALID_ELF_OSABI(osabi) (osabi == ELFOSABI_SYSV \
- || osabi == ELFOSABI_GNU \
- || osabi == EXTRA_OSABI)
-#define MORE_ELF_HEADER_DATA \
- static const unsigned char expected2[EI_PAD] = \
- { \
- [EI_MAG0] = ELFMAG0, \
- [EI_MAG1] = ELFMAG1, \
- [EI_MAG2] = ELFMAG2, \
- [EI_MAG3] = ELFMAG3, \
- [EI_CLASS] = ELFW(CLASS), \
- [EI_DATA] = byteorder, \
- [EI_VERSION] = EV_CURRENT, \
- [EI_OSABI] = ELFOSABI_GNU \
- }; \
- static const unsigned char expected3[EI_PAD] = \
- { \
- [EI_MAG0] = ELFMAG0, \
- [EI_MAG1] = ELFMAG1, \
- [EI_MAG2] = ELFMAG2, \
- [EI_MAG3] = ELFMAG3, \
- [EI_CLASS] = ELFW(CLASS), \
- [EI_DATA] = byteorder, \
- [EI_VERSION] = EV_CURRENT, \
- [EI_OSABI] = EXTRA_OSABI \
- }
-
-#endif
diff --git a/ports/sysdeps/unix/sysv/linux/arm/libc-aeabi_read_tp.S b/ports/sysdeps/unix/sysv/linux/arm/libc-aeabi_read_tp.S
deleted file mode 100644
index 6132afc151..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/libc-aeabi_read_tp.S
+++ /dev/null
@@ -1 +0,0 @@
-#include <aeabi_read_tp.S>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/libc-do-syscall.S b/ports/sysdeps/unix/sysv/linux/arm/libc-do-syscall.S
deleted file mode 100644
index d42a94a560..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/libc-do-syscall.S
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Copyright (C) 2010-2014 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>
-
-/* Out-of-line syscall stub. We expect the system call number in ip
- and return the raw result in r0. No registers are clobbered.
- We could avoid using the stack for this, but the goal is accurate
- unwind information - and while there is a reserved prefix in the
- ARM unwind tables for register to register moves, the actual opcodes
- are not defined. */
-
-#if defined(__thumb__)
- .thumb
- .syntax unified
- .hidden __libc_do_syscall
-
-#undef CALL_MCOUNT
-#define CALL_MCOUNT
-
-ENTRY (__libc_do_syscall)
- .fnstart
- push {r7, lr}
- .save {r7, lr}
- cfi_adjust_cfa_offset (8)
- cfi_rel_offset (r7, 0)
- cfi_rel_offset (lr, 4)
- mov r7, ip
- swi 0x0
- pop {r7, pc}
- .fnend
-END (__libc_do_syscall)
-
-#endif /* __thumb__ */
diff --git a/ports/sysdeps/unix/sysv/linux/arm/lockf64.c b/ports/sysdeps/unix/sysv/linux/arm/lockf64.c
deleted file mode 100644
index a88f5a784a..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/lockf64.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/lockf64.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/lxstat.c b/ports/sysdeps/unix/sysv/linux/arm/lxstat.c
deleted file mode 100644
index 2371cd9719..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/lxstat.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/lxstat.c>
-
diff --git a/ports/sysdeps/unix/sysv/linux/arm/makecontext.c b/ports/sysdeps/unix/sysv/linux/arm/makecontext.c
deleted file mode 100644
index 73fbe4a329..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/makecontext.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/* Copyright (C) 2012-2014 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 <stdarg.h>
-#include <ucontext.h>
-
-/* Number of arguments that go in registers. */
-#define NREG_ARGS 4
-
-/* Take a context previously prepared via getcontext() and set to
- call func() with the given int only args. */
-void
-__makecontext (ucontext_t *ucp, void (*func) (void), int argc, ...)
-{
- extern void __startcontext (void);
- unsigned long *funcstack;
- va_list vl;
- unsigned long *regptr;
- unsigned int reg;
- int misaligned;
-
- /* Start at the top of stack. */
- funcstack = (unsigned long *) (ucp->uc_stack.ss_sp + ucp->uc_stack.ss_size);
-
- /* Ensure the stack stays eight byte aligned. */
- misaligned = ((unsigned long) funcstack & 4) != 0;
-
- if ((argc > NREG_ARGS) && (argc & 1) != 0)
- misaligned = !misaligned;
-
- if (misaligned)
- funcstack -= 1;
-
- va_start (vl, argc);
-
- /* Reserve space for the on-stack arguments. */
- if (argc > NREG_ARGS)
- funcstack -= (argc - NREG_ARGS);
-
- ucp->uc_mcontext.arm_sp = (unsigned long) funcstack;
- ucp->uc_mcontext.arm_pc = (unsigned long) func;
-
- /* Exit to startcontext() with the next context in R4 */
- ucp->uc_mcontext.arm_r4 = (unsigned long) ucp->uc_link;
- ucp->uc_mcontext.arm_lr = (unsigned long) __startcontext;
-
- /* The first four arguments go into registers. */
- regptr = &(ucp->uc_mcontext.arm_r0);
-
- for (reg = 0; (reg < argc) && (reg < NREG_ARGS); reg++)
- *regptr++ = va_arg (vl, unsigned long);
-
- /* And the remainder on the stack. */
- for (; reg < argc; reg++)
- *funcstack++ = va_arg (vl, unsigned long);
-
- va_end (vl);
-}
-weak_alias (__makecontext, makecontext)
diff --git a/ports/sysdeps/unix/sysv/linux/arm/mmap.S b/ports/sysdeps/unix/sysv/linux/arm/mmap.S
deleted file mode 100644
index 0383bb5547..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/mmap.S
+++ /dev/null
@@ -1,64 +0,0 @@
-/* Copyright (C) 1998-2014 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 EINVAL 22
-
- .text
-
-ENTRY (__mmap)
- /* shuffle args */
- push { r5 }
- cfi_adjust_cfa_offset (4)
- cfi_rel_offset (r5, 0)
- ldr r5, [sp, #8]
- push { r4 }
- cfi_adjust_cfa_offset (4)
- cfi_rel_offset (r4, 0)
- cfi_remember_state
- ldr r4, [sp, #8]
-
- /* convert offset to pages */
- movs ip, r5, lsl #20
- bne .Linval
- mov r5, r5, lsr #12
-
- /* do the syscall */
- DO_CALL (mmap2, 0)
-
- /* restore registers */
-2:
- pop { r4 }
- cfi_adjust_cfa_offset (-4)
- cfi_restore (r4)
- pop { r5 }
- cfi_adjust_cfa_offset (-4)
- cfi_restore (r5)
-
- cmn r0, $4096
- it cc
- RETINSTR(cc, lr)
- b PLTJMP(syscall_error)
-
- cfi_restore_state
-.Linval:
- mov r0, #-EINVAL
- b 2b
-PSEUDO_END (__mmap)
-
-weak_alias (__mmap, mmap)
diff --git a/ports/sysdeps/unix/sysv/linux/arm/mmap64.S b/ports/sysdeps/unix/sysv/linux/arm/mmap64.S
deleted file mode 100644
index eae522988c..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/mmap64.S
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Copyright (C) 2000-2014 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>
-
- .syntax unified
-
-#define EINVAL 22
-
-#ifdef __ARMEB__
-# define LOW_OFFSET 8 + 4
-/* The initial + 4 is for the stack postdecrement. */
-# define HIGH_OFFSET 4 + 8 + 0
-#else
-# define LOW_OFFSET 8 + 0
-# define HIGH_OFFSET 4 + 8 + 4
-#endif
-
- /* The mmap2 system call takes six arguments, all in registers. */
- .text
-ENTRY (__mmap64)
- ldr ip, [sp, $LOW_OFFSET]
- push { r5 }
- cfi_adjust_cfa_offset (4)
- cfi_rel_offset (r5, 0)
- ldr r5, [sp, $HIGH_OFFSET]
- push { r4 }
- cfi_adjust_cfa_offset (4)
- cfi_rel_offset (r4, 0)
- cfi_remember_state
- movs r4, ip, lsl $20 @ check that offset is page-aligned
- mov ip, ip, lsr $12
- it eq
- movseq r4, r5, lsr $12 @ check for overflow
- bne .Linval
- ldr r4, [sp, $8] @ load fd
- orr r5, ip, r5, lsl $20 @ compose page offset
- DO_CALL (mmap2, 0)
- cmn r0, $4096
- pop {r4, r5}
- cfi_adjust_cfa_offset (-8)
- cfi_restore (r4)
- cfi_restore (r5)
- it cc
- RETINSTR(cc, lr)
- b PLTJMP(syscall_error)
-
- cfi_restore_state
-.Linval:
- mov r0, $-EINVAL
- pop {r4, r5}
- cfi_adjust_cfa_offset (-8)
- cfi_restore (r4)
- cfi_restore (r5)
- b PLTJMP(syscall_error)
-PSEUDO_END (__mmap64)
-
-weak_alias (__mmap64, mmap64)
diff --git a/ports/sysdeps/unix/sysv/linux/arm/msgctl.c b/ports/sysdeps/unix/sysv/linux/arm/msgctl.c
deleted file mode 100644
index a0b6cb4372..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/msgctl.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Copyright (C) 1995-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
-
- 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>
-#include <sys/msg.h>
-#include <ipc_priv.h>
-#include <sysdep.h>
-#include <sys/syscall.h>
-
-
-int
-__new_msgctl (int msqid, int cmd, struct msqid_ds *buf)
-{
- return INLINE_SYSCALL (msgctl, 3, msqid, cmd | __IPC_64, buf);
-}
-
-#include <shlib-compat.h>
-versioned_symbol (libc, __new_msgctl, msgctl, GLIBC_2_2);
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/Makefile b/ports/sysdeps/unix/sysv/linux/arm/nptl/Makefile
deleted file mode 100644
index ef8076cf3f..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/Makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-ifeq ($(subdir),rt)
-librt-sysdep_routines += rt-aeabi_unwind_cpp_pr1
-librt-shared-only-routines += rt-aeabi_unwind_cpp_pr1
-endif
-
-ifeq ($(subdir),nptl)
-libpthread-sysdep_routines += nptl-aeabi_unwind_cpp_pr1
-libpthread-shared-only-routines += nptl-aeabi_unwind_cpp_pr1
-
-# This test relies on compiling part of the binary with EH information,
-# part without, and unwinding through. The .ARM.exidx tables have
-# start addresses for EH regions, but no end addresses. Every
-# region an exception needs to propogate through must have unwind
-# information, or a previous function's unwind table may be used
-# by mistake.
-tests := $(filter-out tst-cleanupx4,$(tests))
-endif
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/Versions b/ports/sysdeps/unix/sysv/linux/arm/nptl/Versions
deleted file mode 100644
index 435c9212c4..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/Versions
+++ /dev/null
@@ -1,8 +0,0 @@
-libc {
- GLIBC_PRIVATE {
- # A copy of sigaction lives in NPTL, and needs these.
- __default_sa_restorer; __default_rt_sa_restorer;
- __default_sa_restorer_v1; __default_rt_sa_restorer_v1;
- __default_sa_restorer_v2; __default_rt_sa_restorer_v2;
- }
-}
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/bits/pthreadtypes.h b/ports/sysdeps/unix/sysv/linux/arm/nptl/bits/pthreadtypes.h
deleted file mode 100644
index 26edce54fe..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/bits/pthreadtypes.h
+++ /dev/null
@@ -1,184 +0,0 @@
-/* Copyright (C) 2002-2014 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 _BITS_PTHREADTYPES_H
-#define _BITS_PTHREADTYPES_H 1
-
-#include <endian.h>
-
-#define __SIZEOF_PTHREAD_ATTR_T 36
-#define __SIZEOF_PTHREAD_MUTEX_T 24
-#define __SIZEOF_PTHREAD_MUTEXATTR_T 4
-#define __SIZEOF_PTHREAD_COND_T 48
-#define __SIZEOF_PTHREAD_COND_COMPAT_T 12
-#define __SIZEOF_PTHREAD_CONDATTR_T 4
-#define __SIZEOF_PTHREAD_RWLOCK_T 32
-#define __SIZEOF_PTHREAD_RWLOCKATTR_T 8
-#define __SIZEOF_PTHREAD_BARRIER_T 20
-#define __SIZEOF_PTHREAD_BARRIERATTR_T 4
-
-
-/* Thread identifiers. The structure of the attribute type is not
- exposed on purpose. */
-typedef unsigned long int pthread_t;
-
-
-union pthread_attr_t
-{
- char __size[__SIZEOF_PTHREAD_ATTR_T];
- long int __align;
-};
-#ifndef __have_pthread_attr_t
-typedef union pthread_attr_t pthread_attr_t;
-# define __have_pthread_attr_t 1
-#endif
-
-
-typedef struct __pthread_internal_slist
-{
- struct __pthread_internal_slist *__next;
-} __pthread_slist_t;
-
-
-/* Data structures for mutex handling. The structure of the attribute
- type is not exposed on purpose. */
-typedef union
-{
- struct __pthread_mutex_s
- {
- int __lock;
- unsigned int __count;
- int __owner;
- /* KIND must stay at this position in the structure to maintain
- binary compatibility. */
- int __kind;
- unsigned int __nusers;
- __extension__ union
- {
- int __spins;
- __pthread_slist_t __list;
- };
- } __data;
- char __size[__SIZEOF_PTHREAD_MUTEX_T];
- long int __align;
-} pthread_mutex_t;
-
-typedef union
-{
- char __size[__SIZEOF_PTHREAD_MUTEXATTR_T];
- long int __align;
-} pthread_mutexattr_t;
-
-
-/* Data structure for conditional variable handling. The structure of
- the attribute type is not exposed on purpose. */
-typedef union
-{
- struct
- {
- int __lock;
- unsigned int __futex;
- __extension__ unsigned long long int __total_seq;
- __extension__ unsigned long long int __wakeup_seq;
- __extension__ unsigned long long int __woken_seq;
- void *__mutex;
- unsigned int __nwaiters;
- unsigned int __broadcast_seq;
- } __data;
- char __size[__SIZEOF_PTHREAD_COND_T];
- __extension__ long long int __align;
-} pthread_cond_t;
-
-typedef union
-{
- char __size[__SIZEOF_PTHREAD_CONDATTR_T];
- long int __align;
-} pthread_condattr_t;
-
-
-/* Keys for thread-specific data */
-typedef unsigned int pthread_key_t;
-
-
-/* Once-only execution */
-typedef int pthread_once_t;
-
-
-#if defined __USE_UNIX98 || defined __USE_XOPEN2K
-/* Data structure for read-write lock variable handling. The
- structure of the attribute type is not exposed on purpose. */
-typedef union
-{
- struct
- {
- int __lock;
- unsigned int __nr_readers;
- unsigned int __readers_wakeup;
- unsigned int __writer_wakeup;
- unsigned int __nr_readers_queued;
- unsigned int __nr_writers_queued;
-#if __BYTE_ORDER == __BIG_ENDIAN
- unsigned char __pad1;
- unsigned char __pad2;
- unsigned char __shared;
- /* FLAGS must stay at this position in the structure to maintain
- binary compatibility. */
- unsigned char __flags;
-#else
- /* FLAGS must stay at this position in the structure to maintain
- binary compatibility. */
- unsigned char __flags;
- unsigned char __shared;
- unsigned char __pad1;
- unsigned char __pad2;
-#endif
- int __writer;
- } __data;
- char __size[__SIZEOF_PTHREAD_RWLOCK_T];
- long int __align;
-} pthread_rwlock_t;
-
-typedef union
-{
- char __size[__SIZEOF_PTHREAD_RWLOCKATTR_T];
- long int __align;
-} pthread_rwlockattr_t;
-#endif
-
-
-#ifdef __USE_XOPEN2K
-/* POSIX spinlock data type. */
-typedef volatile int pthread_spinlock_t;
-
-
-/* POSIX barriers data type. The structure of the type is
- deliberately not exposed. */
-typedef union
-{
- char __size[__SIZEOF_PTHREAD_BARRIER_T];
- long int __align;
-} pthread_barrier_t;
-
-typedef union
-{
- char __size[__SIZEOF_PTHREAD_BARRIERATTR_T];
- int __align;
-} pthread_barrierattr_t;
-#endif
-
-
-#endif /* bits/pthreadtypes.h */
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/bits/semaphore.h b/ports/sysdeps/unix/sysv/linux/arm/nptl/bits/semaphore.h
deleted file mode 100644
index 50d3a11ebd..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/bits/semaphore.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Copyright (C) 2002-2014 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 _SEMAPHORE_H
-# error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
-#endif
-
-
-#define __SIZEOF_SEM_T 16
-
-
-/* Value returned if `sem_open' failed. */
-#define SEM_FAILED ((sem_t *) 0)
-
-
-typedef union
-{
- char __size[__SIZEOF_SEM_T];
- long int __align;
-} sem_t;
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/c++-types.data b/ports/sysdeps/unix/sysv/linux/arm/nptl/c++-types.data
deleted file mode 100644
index fde53bf337..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/c++-types.data
+++ /dev/null
@@ -1,67 +0,0 @@
-blkcnt64_t:x
-blkcnt_t:l
-blksize_t:l
-caddr_t:Pc
-clockid_t:i
-clock_t:l
-daddr_t:i
-dev_t:y
-fd_mask:l
-fsblkcnt64_t:y
-fsblkcnt_t:m
-fsfilcnt64_t:y
-fsfilcnt_t:m
-fsid_t:8__fsid_t
-gid_t:j
-id_t:j
-ino64_t:y
-ino_t:m
-int16_t:s
-int32_t:i
-int64_t:x
-int8_t:a
-intptr_t:i
-key_t:i
-loff_t:x
-mode_t:j
-nlink_t:j
-off64_t:x
-off_t:l
-pid_t:i
-pthread_attr_t:14pthread_attr_t
-pthread_barrier_t:17pthread_barrier_t
-pthread_barrierattr_t:21pthread_barrierattr_t
-pthread_cond_t:14pthread_cond_t
-pthread_condattr_t:18pthread_condattr_t
-pthread_key_t:j
-pthread_mutex_t:15pthread_mutex_t
-pthread_mutexattr_t:19pthread_mutexattr_t
-pthread_once_t:i
-pthread_rwlock_t:16pthread_rwlock_t
-pthread_rwlockattr_t:20pthread_rwlockattr_t
-pthread_spinlock_t:i
-pthread_t:m
-quad_t:x
-register_t:i
-rlim64_t:y
-rlim_t:m
-sigset_t:10__sigset_t
-size_t:j
-socklen_t:j
-ssize_t:i
-suseconds_t:l
-time_t:l
-u_char:h
-uid_t:j
-uint:j
-u_int:j
-u_int16_t:t
-u_int32_t:j
-u_int64_t:y
-u_int8_t:h
-ulong:m
-u_long:m
-u_quad_t:y
-useconds_t:j
-ushort:t
-u_short:t
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/clone.S b/ports/sysdeps/unix/sysv/linux/arm/nptl/clone.S
deleted file mode 100644
index 23750b3f88..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/clone.S
+++ /dev/null
@@ -1,3 +0,0 @@
-#define RESET_PID
-#include <tcb-offsets.h>
-#include "../clone.S"
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/configure b/ports/sysdeps/unix/sysv/linux/arm/nptl/configure
deleted file mode 100644
index a8c34fa3e4..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/configure
+++ /dev/null
@@ -1,4 +0,0 @@
-# This file is generated from configure.ac by Autoconf. DO NOT EDIT!
-
-libc_cv_gcc_exceptions=yes
-exceptions=-fexceptions
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/configure.ac b/ports/sysdeps/unix/sysv/linux/arm/nptl/configure.ac
deleted file mode 100644
index 22f6f4b8f2..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/configure.ac
+++ /dev/null
@@ -1,8 +0,0 @@
-dnl configure fragment for NPTL and ARM/Linux EABI.
-GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
-
-dnl The normal configure check for gcc -fexecptions fails because it can't
-dnl find __aeabi_unwind_cpp_pr0. Work around this here; our GCC definitely
-dnl has -fexceptions.
-libc_cv_gcc_exceptions=yes
-exceptions=-fexceptions
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/createthread.c b/ports/sysdeps/unix/sysv/linux/arm/nptl/createthread.c
deleted file mode 100644
index 5e96513ca8..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/createthread.c
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Copyright (C) 2005-2014 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/>. */
-
-/* Value passed to 'clone' for initialization of the thread register. */
-#define TLS_VALUE (pd + 1)
-
-/* Get the real implementation. */
-#include <nptl/sysdeps/pthread/createthread.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/fork.c b/ports/sysdeps/unix/sysv/linux/arm/nptl/fork.c
deleted file mode 100644
index 0fbea176c3..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/fork.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright (C) 2005-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Phil Blundell <pb@nexus.co.uk>, 2005
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library. If not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <sched.h>
-#include <signal.h>
-#include <sysdep.h>
-#include <tls.h>
-
-
-#define ARCH_FORK() \
- INLINE_SYSCALL (clone, 5, \
- CLONE_CHILD_SETTID | CLONE_CHILD_CLEARTID | SIGCHLD, \
- NULL, NULL, NULL, &THREAD_SELF->tid)
-
-#include <nptl/sysdeps/unix/sysv/linux/fork.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/ld.abilist b/ports/sysdeps/unix/sysv/linux/arm/nptl/ld.abilist
deleted file mode 100644
index 8eac745dd1..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/ld.abilist
+++ /dev/null
@@ -1,12 +0,0 @@
-GLIBC_2.4
- GLIBC_2.4 A
- __libc_memalign F
- __libc_stack_end D 0x4
- __stack_chk_guard D 0x4
- __tls_get_addr F
- _dl_mcount F
- _r_debug D 0x14
- calloc F
- free F
- malloc F
- realloc F
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/libBrokenLocale.abilist b/ports/sysdeps/unix/sysv/linux/arm/nptl/libBrokenLocale.abilist
deleted file mode 100644
index 9c795c6e96..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/libBrokenLocale.abilist
+++ /dev/null
@@ -1,3 +0,0 @@
-GLIBC_2.4
- GLIBC_2.4 A
- __ctype_get_mb_cur_max F
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/libanl.abilist b/ports/sysdeps/unix/sysv/linux/arm/nptl/libanl.abilist
deleted file mode 100644
index e10833ed25..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/libanl.abilist
+++ /dev/null
@@ -1,6 +0,0 @@
-GLIBC_2.4
- GLIBC_2.4 A
- gai_cancel F
- gai_error F
- gai_suspend F
- getaddrinfo_a F
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/libc.abilist b/ports/sysdeps/unix/sysv/linux/arm/nptl/libc.abilist
deleted file mode 100644
index ce45208b5f..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/libc.abilist
+++ /dev/null
@@ -1,2145 +0,0 @@
-GLIBC_2.10
- GLIBC_2.10 A
- __cxa_at_quick_exit F
- __posix_getopt F
- accept4 F
- endsgent F
- fallocate F
- fgetsgent F
- fgetsgent_r F
- getsgent F
- getsgent_r F
- getsgnam F
- getsgnam_r F
- malloc_info F
- preadv F
- preadv64 F
- psiginfo F
- putsgent F
- pwritev F
- pwritev64 F
- quick_exit F
- register_printf_modifier F
- register_printf_specifier F
- register_printf_type F
- setsgent F
- sgetsgent F
- sgetsgent_r F
-GLIBC_2.11
- GLIBC_2.11 A
- __longjmp_chk F
- execvpe F
- fallocate64 F
- mkostemps F
- mkostemps64 F
- mkstemps F
- mkstemps64 F
-GLIBC_2.12
- GLIBC_2.12 A
- _sys_errlist D 0x21c
- _sys_nerr D 0x4
- ntp_gettimex F
- recvmmsg F
- sys_errlist D 0x21c
- sys_nerr D 0x4
-GLIBC_2.13
- GLIBC_2.13 A
- fanotify_init F
- fanotify_mark F
- prlimit F
- prlimit64 F
-GLIBC_2.14
- GLIBC_2.14 A
- clock_adjtime F
- name_to_handle_at F
- open_by_handle_at F
- sendmmsg F
- setns F
- syncfs F
-GLIBC_2.15
- GLIBC_2.15 A
- __fdelt_chk F
- __fdelt_warn F
- posix_spawn F
- posix_spawnp F
- process_vm_readv F
- process_vm_writev F
- scandirat F
- scandirat64 F
-GLIBC_2.16
- GLIBC_2.16 A
- __getauxval F
- __poll_chk F
- __ppoll_chk F
- aligned_alloc F
- c16rtomb F
- c32rtomb F
- getauxval F
- mbrtoc16 F
- mbrtoc32 F
- timespec_get F
-GLIBC_2.17
- GLIBC_2.17 A
- clock_getcpuclockid F
- clock_getres F
- clock_gettime F
- clock_nanosleep F
- clock_settime F
- secure_getenv F
-GLIBC_2.18
- GLIBC_2.18 A
- __cxa_thread_atexit_impl F
-GLIBC_2.4
- GLIBC_2.4 A
- _Exit F
- _IO_2_1_stderr_ D 0xa0
- _IO_2_1_stdin_ D 0xa0
- _IO_2_1_stdout_ D 0xa0
- _IO_adjust_column F
- _IO_adjust_wcolumn F
- _IO_default_doallocate F
- _IO_default_finish F
- _IO_default_pbackfail F
- _IO_default_uflow F
- _IO_default_xsgetn F
- _IO_default_xsputn F
- _IO_do_write F
- _IO_doallocbuf F
- _IO_fclose F
- _IO_fdopen F
- _IO_feof F
- _IO_ferror F
- _IO_fflush F
- _IO_fgetpos F
- _IO_fgetpos64 F
- _IO_fgets F
- _IO_file_attach F
- _IO_file_close F
- _IO_file_close_it F
- _IO_file_doallocate F
- _IO_file_finish F
- _IO_file_fopen F
- _IO_file_init F
- _IO_file_jumps D 0x54
- _IO_file_open F
- _IO_file_overflow F
- _IO_file_read F
- _IO_file_seek F
- _IO_file_seekoff F
- _IO_file_setbuf F
- _IO_file_stat F
- _IO_file_sync F
- _IO_file_underflow F
- _IO_file_write F
- _IO_file_xsputn F
- _IO_flockfile F
- _IO_flush_all F
- _IO_flush_all_linebuffered F
- _IO_fopen F
- _IO_fprintf F
- _IO_fputs F
- _IO_fread F
- _IO_free_backup_area F
- _IO_free_wbackup_area F
- _IO_fsetpos F
- _IO_fsetpos64 F
- _IO_ftell F
- _IO_ftrylockfile F
- _IO_funlockfile F
- _IO_fwrite F
- _IO_getc F
- _IO_getline F
- _IO_getline_info F
- _IO_gets F
- _IO_init F
- _IO_init_marker F
- _IO_init_wmarker F
- _IO_iter_begin F
- _IO_iter_end F
- _IO_iter_file F
- _IO_iter_next F
- _IO_least_wmarker F
- _IO_link_in F
- _IO_list_all D 0x4
- _IO_list_lock F
- _IO_list_resetlock F
- _IO_list_unlock F
- _IO_marker_delta F
- _IO_marker_difference F
- _IO_padn F
- _IO_peekc_locked F
- _IO_popen F
- _IO_printf F
- _IO_proc_close F
- _IO_proc_open F
- _IO_putc F
- _IO_puts F
- _IO_remove_marker F
- _IO_seekmark F
- _IO_seekoff F
- _IO_seekpos F
- _IO_seekwmark F
- _IO_setb F
- _IO_setbuffer F
- _IO_setvbuf F
- _IO_sgetn F
- _IO_sprintf F
- _IO_sputbackc F
- _IO_sputbackwc F
- _IO_sscanf F
- _IO_str_init_readonly F
- _IO_str_init_static F
- _IO_str_overflow F
- _IO_str_pbackfail F
- _IO_str_seekoff F
- _IO_str_underflow F
- _IO_sungetc F
- _IO_sungetwc F
- _IO_switch_to_get_mode F
- _IO_switch_to_main_wget_area F
- _IO_switch_to_wbackup_area F
- _IO_switch_to_wget_mode F
- _IO_un_link F
- _IO_ungetc F
- _IO_unsave_markers F
- _IO_unsave_wmarkers F
- _IO_vfprintf F
- _IO_vfscanf F
- _IO_vsprintf F
- _IO_wdefault_doallocate F
- _IO_wdefault_finish F
- _IO_wdefault_pbackfail F
- _IO_wdefault_uflow F
- _IO_wdefault_xsgetn F
- _IO_wdefault_xsputn F
- _IO_wdo_write F
- _IO_wdoallocbuf F
- _IO_wfile_jumps D 0x54
- _IO_wfile_overflow F
- _IO_wfile_seekoff F
- _IO_wfile_sync F
- _IO_wfile_underflow F
- _IO_wfile_xsputn F
- _IO_wmarker_delta F
- _IO_wsetb F
- __adjtimex F
- __aeabi_MB_CUR_MAX F
- __aeabi_assert F
- __aeabi_atexit F
- __aeabi_errno_addr F
- __aeabi_localeconv F
- __aeabi_memclr F
- __aeabi_memclr4 F
- __aeabi_memclr8 F
- __aeabi_memcpy F
- __aeabi_memcpy4 F
- __aeabi_memcpy8 F
- __aeabi_memmove F
- __aeabi_memmove4 F
- __aeabi_memmove8 F
- __aeabi_memset F
- __aeabi_memset4 F
- __aeabi_memset8 F
- __after_morecore_hook D 0x4
- __argz_count F
- __argz_next F
- __argz_stringify F
- __asprintf F
- __assert F
- __assert_fail F
- __assert_perror_fail F
- __backtrace F
- __backtrace_symbols F
- __backtrace_symbols_fd F
- __bsd_getpgrp F
- __bzero F
- __check_rhosts_file D 0x4
- __chk_fail F
- __clone F
- __close F
- __cmsg_nxthdr F
- __confstr_chk F
- __connect F
- __ctype_b_loc F
- __ctype_get_mb_cur_max F
- __ctype_tolower_loc F
- __ctype_toupper_loc F
- __curbrk D 0x4
- __cxa_atexit F
- __cxa_finalize F
- __cyg_profile_func_enter F
- __cyg_profile_func_exit F
- __daylight D 0x4
- __dcgettext F
- __default_morecore F
- __dgettext F
- __dup2 F
- __duplocale F
- __endmntent F
- __environ D 0x4
- __errno_location F
- __fbufsize F
- __fcntl F
- __ffs F
- __fgets_chk F
- __fgets_unlocked_chk F
- __fgetws_chk F
- __fgetws_unlocked_chk F
- __finite F
- __finitef F
- __finitel F
- __flbf F
- __fork F
- __fpending F
- __fprintf_chk F
- __fpu_control D 0x4
- __fpurge F
- __freadable F
- __freading F
- __free_hook D 0x4
- __freelocale F
- __fsetlocking F
- __fwprintf_chk F
- __fwritable F
- __fwriting F
- __fxstat F
- __fxstat64 F
- __fxstatat F
- __fxstatat64 F
- __getcwd_chk F
- __getdelim F
- __getdomainname_chk F
- __getgroups_chk F
- __gethostname_chk F
- __getlogin_r_chk F
- __getmntent_r F
- __getpagesize F
- __getpgid F
- __getpid F
- __gets_chk F
- __gettimeofday F
- __getwd_chk F
- __gmtime_r F
- __gnu_Unwind_Find_exidx F
- __h_errno_location F
- __isalnum_l F
- __isalpha_l F
- __isascii_l F
- __isblank_l F
- __iscntrl_l F
- __isctype F
- __isdigit_l F
- __isgraph_l F
- __isinf F
- __isinff F
- __isinfl F
- __islower_l F
- __isnan F
- __isnanf F
- __isnanl F
- __isprint_l F
- __ispunct_l F
- __isspace_l F
- __isupper_l F
- __iswalnum_l F
- __iswalpha_l F
- __iswblank_l F
- __iswcntrl_l F
- __iswctype F
- __iswctype_l F
- __iswdigit_l F
- __iswgraph_l F
- __iswlower_l F
- __iswprint_l F
- __iswpunct_l F
- __iswspace_l F
- __iswupper_l F
- __iswxdigit_l F
- __isxdigit_l F
- __ivaliduser F
- __key_decryptsession_pk_LOCAL D 0x4
- __key_encryptsession_pk_LOCAL D 0x4
- __key_gendes_LOCAL D 0x4
- __libc_allocate_rtsig F
- __libc_calloc F
- __libc_current_sigrtmax F
- __libc_current_sigrtmin F
- __libc_free F
- __libc_freeres F
- __libc_init_first F
- __libc_mallinfo F
- __libc_malloc F
- __libc_mallopt F
- __libc_memalign F
- __libc_pvalloc F
- __libc_realloc F
- __libc_sa_len F
- __libc_start_main F
- __libc_valloc F
- __lseek F
- __lxstat F
- __lxstat64 F
- __malloc_hook D 0x4
- __malloc_initialize_hook D 0x4
- __mbrlen F
- __mbrtowc F
- __mbsnrtowcs_chk F
- __mbsrtowcs_chk F
- __mbstowcs_chk F
- __memalign_hook D 0x4
- __memcpy_chk F
- __memmove_chk F
- __mempcpy F
- __mempcpy_chk F
- __mempcpy_small F
- __memset_chk F
- __monstartup F
- __morecore D 0x4
- __nanosleep F
- __newlocale F
- __nl_langinfo_l F
- __nss_configure_lookup F
- __nss_database_lookup F
- __nss_group_lookup F
- __nss_hostname_digits_dots F
- __nss_hosts_lookup F
- __nss_next F
- __nss_passwd_lookup F
- __open F
- __open64 F
- __overflow F
- __pipe F
- __poll F
- __pread64 F
- __pread64_chk F
- __pread_chk F
- __printf_chk F
- __printf_fp F
- __profile_frequency F
- __progname D 0x4
- __progname_full D 0x4
- __ptsname_r_chk F
- __pwrite64 F
- __rawmemchr F
- __rcmd_errstr D 0x4
- __read F
- __read_chk F
- __readlink_chk F
- __realloc_hook D 0x4
- __realpath_chk F
- __recv_chk F
- __recvfrom_chk F
- __register_atfork F
- __res_init F
- __res_nclose F
- __res_ninit F
- __res_randomid F
- __res_state F
- __rpc_thread_createerr F
- __rpc_thread_svc_fdset F
- __rpc_thread_svc_max_pollfd F
- __rpc_thread_svc_pollfd F
- __sbrk F
- __sched_get_priority_max F
- __sched_get_priority_min F
- __sched_getparam F
- __sched_getscheduler F
- __sched_setscheduler F
- __sched_yield F
- __secure_getenv F
- __select F
- __send F
- __setmntent F
- __setpgid F
- __sigaction F
- __sigaddset F
- __sigdelset F
- __sigismember F
- __signbit F
- __signbitf F
- __sigpause F
- __sigsetjmp F
- __sigsuspend F
- __snprintf_chk F
- __sprintf_chk F
- __stack_chk_fail F
- __statfs F
- __stpcpy F
- __stpcpy_chk F
- __stpcpy_small F
- __stpncpy F
- __stpncpy_chk F
- __strcasecmp F
- __strcasecmp_l F
- __strcasestr F
- __strcat_chk F
- __strcoll_l F
- __strcpy_chk F
- __strcpy_small F
- __strcspn_c1 F
- __strcspn_c2 F
- __strcspn_c3 F
- __strdup F
- __strerror_r F
- __strfmon_l F
- __strftime_l F
- __strncasecmp_l F
- __strncat_chk F
- __strncpy_chk F
- __strndup F
- __strpbrk_c2 F
- __strpbrk_c3 F
- __strsep_1c F
- __strsep_2c F
- __strsep_3c F
- __strsep_g F
- __strspn_c1 F
- __strspn_c2 F
- __strspn_c3 F
- __strtod_internal F
- __strtod_l F
- __strtof_internal F
- __strtof_l F
- __strtok_r F
- __strtok_r_1c F
- __strtol_internal F
- __strtol_l F
- __strtold_internal F
- __strtold_l F
- __strtoll_internal F
- __strtoll_l F
- __strtoul_internal F
- __strtoul_l F
- __strtoull_internal F
- __strtoull_l F
- __strverscmp F
- __strxfrm_l F
- __swprintf_chk F
- __sysconf F
- __sysctl F
- __syslog_chk F
- __sysv_signal F
- __timezone D 0x4
- __toascii_l F
- __tolower_l F
- __toupper_l F
- __towctrans F
- __towctrans_l F
- __towlower_l F
- __towupper_l F
- __ttyname_r_chk F
- __tzname D 0x8
- __uflow F
- __underflow F
- __uselocale F
- __vfork F
- __vfprintf_chk F
- __vfscanf F
- __vfwprintf_chk F
- __vprintf_chk F
- __vsnprintf F
- __vsnprintf_chk F
- __vsprintf_chk F
- __vsscanf F
- __vswprintf_chk F
- __vsyslog_chk F
- __vwprintf_chk F
- __wait F
- __waitpid F
- __wcpcpy_chk F
- __wcpncpy_chk F
- __wcrtomb_chk F
- __wcscasecmp_l F
- __wcscat_chk F
- __wcscoll_l F
- __wcscpy_chk F
- __wcsftime_l F
- __wcsncasecmp_l F
- __wcsncat_chk F
- __wcsncpy_chk F
- __wcsnrtombs_chk F
- __wcsrtombs_chk F
- __wcstod_internal F
- __wcstod_l F
- __wcstof_internal F
- __wcstof_l F
- __wcstol_internal F
- __wcstol_l F
- __wcstold_internal F
- __wcstold_l F
- __wcstoll_internal F
- __wcstoll_l F
- __wcstombs_chk F
- __wcstoul_internal F
- __wcstoul_l F
- __wcstoull_internal F
- __wcstoull_l F
- __wcsxfrm_l F
- __wctomb_chk F
- __wctrans_l F
- __wctype_l F
- __wmemcpy_chk F
- __wmemmove_chk F
- __wmempcpy_chk F
- __wmemset_chk F
- __woverflow F
- __wprintf_chk F
- __write F
- __wuflow F
- __wunderflow F
- __xmknod F
- __xmknodat F
- __xpg_basename F
- __xpg_sigpause F
- __xpg_strerror_r F
- __xstat F
- __xstat64 F
- _authenticate F
- _dl_mcount_wrapper F
- _dl_mcount_wrapper_check F
- _environ D 0x4
- _exit F
- _flushlbf F
- _libc_intl_domainname D 0x5
- _longjmp F
- _mcleanup F
- _mcount F
- _nl_default_dirname D 0x12
- _nl_domain_bindings D 0x4
- _nl_msg_cat_cntr D 0x4
- _null_auth D 0xc
- _obstack_allocated_p F
- _obstack_begin F
- _obstack_begin_1 F
- _obstack_free F
- _obstack_memory_used F
- _obstack_newchunk F
- _res D 0x200
- _res_hconf D 0x30
- _rpc_dtablesize F
- _seterr_reply F
- _setjmp F
- _sys_errlist D 0x210
- _sys_nerr D 0x4
- _sys_siglist D 0x104
- _tolower F
- _toupper F
- a64l F
- abort F
- abs F
- accept F
- access F
- acct F
- addmntent F
- addseverity F
- adjtime F
- adjtimex F
- advance F
- alarm F
- alphasort F
- alphasort64 F
- argp_err_exit_status D 0x4
- argp_error F
- argp_failure F
- argp_help F
- argp_parse F
- argp_program_bug_address D 0x4
- argp_program_version D 0x4
- argp_program_version_hook D 0x4
- argp_state_help F
- argp_usage F
- argz_add F
- argz_add_sep F
- argz_append F
- argz_count F
- argz_create F
- argz_create_sep F
- argz_delete F
- argz_extract F
- argz_insert F
- argz_next F
- argz_replace F
- argz_stringify F
- asctime F
- asctime_r F
- asprintf F
- atof F
- atoi F
- atol F
- atoll F
- authdes_create F
- authdes_getucred F
- authdes_pk_create F
- authnone_create F
- authunix_create F
- authunix_create_default F
- backtrace F
- backtrace_symbols F
- backtrace_symbols_fd F
- basename F
- bcmp F
- bcopy F
- bdflush F
- bind F
- bind_textdomain_codeset F
- bindresvport F
- bindtextdomain F
- brk F
- bsd_signal F
- bsearch F
- btowc F
- bzero F
- calloc F
- callrpc F
- canonicalize_file_name F
- capget F
- capset F
- catclose F
- catgets F
- catopen F
- cbc_crypt F
- cfgetispeed F
- cfgetospeed F
- cfmakeraw F
- cfree F
- cfsetispeed F
- cfsetospeed F
- cfsetspeed F
- chdir F
- chflags F
- chmod F
- chown F
- chroot F
- clearenv F
- clearerr F
- clearerr_unlocked F
- clnt_broadcast F
- clnt_create F
- clnt_pcreateerror F
- clnt_perrno F
- clnt_perror F
- clnt_spcreateerror F
- clnt_sperrno F
- clnt_sperror F
- clntraw_create F
- clnttcp_create F
- clntudp_bufcreate F
- clntudp_create F
- clntunix_create F
- clock F
- clone F
- close F
- closedir F
- closelog F
- confstr F
- connect F
- copysign F
- copysignf F
- copysignl F
- creat F
- creat64 F
- create_module F
- ctermid F
- ctime F
- ctime_r F
- cuserid F
- daemon F
- daylight D 0x4
- dcgettext F
- dcngettext F
- delete_module F
- des_setparity F
- dgettext F
- difftime F
- dirfd F
- dirname F
- div F
- dl_iterate_phdr F
- dngettext F
- dprintf F
- drand48 F
- drand48_r F
- dup F
- dup2 F
- duplocale F
- dysize F
- eaccess F
- ecb_crypt F
- ecvt F
- ecvt_r F
- endaliasent F
- endfsent F
- endgrent F
- endhostent F
- endmntent F
- endnetent F
- endnetgrent F
- endprotoent F
- endpwent F
- endrpcent F
- endservent F
- endspent F
- endttyent F
- endusershell F
- endutent F
- endutxent F
- environ D 0x4
- envz_add F
- envz_entry F
- envz_get F
- envz_merge F
- envz_remove F
- envz_strip F
- epoll_create F
- epoll_ctl F
- epoll_wait F
- erand48 F
- erand48_r F
- err F
- error F
- error_at_line F
- error_message_count D 0x4
- error_one_per_line D 0x4
- error_print_progname D 0x4
- errx F
- ether_aton F
- ether_aton_r F
- ether_hostton F
- ether_line F
- ether_ntoa F
- ether_ntoa_r F
- ether_ntohost F
- euidaccess F
- execl F
- execle F
- execlp F
- execv F
- execve F
- execvp F
- exit F
- faccessat F
- fattach F
- fchdir F
- fchflags F
- fchmod F
- fchmodat F
- fchown F
- fchownat F
- fclose F
- fcloseall F
- fcntl F
- fcvt F
- fcvt_r F
- fdatasync F
- fdetach F
- fdopen F
- fdopendir F
- feof F
- feof_unlocked F
- ferror F
- ferror_unlocked F
- fexecve F
- fflush F
- fflush_unlocked F
- ffs F
- ffsl F
- ffsll F
- fgetc F
- fgetc_unlocked F
- fgetgrent F
- fgetgrent_r F
- fgetpos F
- fgetpos64 F
- fgetpwent F
- fgetpwent_r F
- fgets F
- fgets_unlocked F
- fgetspent F
- fgetspent_r F
- fgetwc F
- fgetwc_unlocked F
- fgetws F
- fgetws_unlocked F
- fgetxattr F
- fileno F
- fileno_unlocked F
- finite F
- finitef F
- finitel F
- flistxattr F
- flock F
- flockfile F
- fmemopen F
- fmtmsg F
- fnmatch F
- fopen F
- fopen64 F
- fopencookie F
- fork F
- fpathconf F
- fprintf F
- fputc F
- fputc_unlocked F
- fputs F
- fputs_unlocked F
- fputwc F
- fputwc_unlocked F
- fputws F
- fputws_unlocked F
- fread F
- fread_unlocked F
- free F
- freeaddrinfo F
- freeifaddrs F
- freelocale F
- fremovexattr F
- freopen F
- freopen64 F
- frexp F
- frexpf F
- frexpl F
- fscanf F
- fseek F
- fseeko F
- fseeko64 F
- fsetpos F
- fsetpos64 F
- fsetxattr F
- fstatfs F
- fstatfs64 F
- fstatvfs F
- fstatvfs64 F
- fsync F
- ftell F
- ftello F
- ftello64 F
- ftime F
- ftok F
- ftruncate F
- ftruncate64 F
- ftrylockfile F
- fts_children F
- fts_close F
- fts_open F
- fts_read F
- fts_set F
- ftw F
- ftw64 F
- funlockfile F
- futimes F
- futimesat F
- fwide F
- fwprintf F
- fwrite F
- fwrite_unlocked F
- fwscanf F
- gai_strerror F
- gcvt F
- get_avphys_pages F
- get_current_dir_name F
- get_kernel_syms F
- get_myaddress F
- get_nprocs F
- get_nprocs_conf F
- get_phys_pages F
- getaddrinfo F
- getaliasbyname F
- getaliasbyname_r F
- getaliasent F
- getaliasent_r F
- getc F
- getc_unlocked F
- getchar F
- getchar_unlocked F
- getcontext F
- getcwd F
- getdate F
- getdate_err D 0x4
- getdate_r F
- getdelim F
- getdirentries F
- getdirentries64 F
- getdomainname F
- getdtablesize F
- getegid F
- getenv F
- geteuid F
- getfsent F
- getfsfile F
- getfsspec F
- getgid F
- getgrent F
- getgrent_r F
- getgrgid F
- getgrgid_r F
- getgrnam F
- getgrnam_r F
- getgrouplist F
- getgroups F
- gethostbyaddr F
- gethostbyaddr_r F
- gethostbyname F
- gethostbyname2 F
- gethostbyname2_r F
- gethostbyname_r F
- gethostent F
- gethostent_r F
- gethostid F
- gethostname F
- getifaddrs F
- getipv4sourcefilter F
- getitimer F
- getline F
- getloadavg F
- getlogin F
- getlogin_r F
- getmntent F
- getmntent_r F
- getmsg F
- getnameinfo F
- getnetbyaddr F
- getnetbyaddr_r F
- getnetbyname F
- getnetbyname_r F
- getnetent F
- getnetent_r F
- getnetgrent F
- getnetgrent_r F
- getnetname F
- getopt F
- getopt_long F
- getopt_long_only F
- getpagesize F
- getpass F
- getpeername F
- getpgid F
- getpgrp F
- getpid F
- getpmsg F
- getppid F
- getpriority F
- getprotobyname F
- getprotobyname_r F
- getprotobynumber F
- getprotobynumber_r F
- getprotoent F
- getprotoent_r F
- getpt F
- getpublickey F
- getpw F
- getpwent F
- getpwent_r F
- getpwnam F
- getpwnam_r F
- getpwuid F
- getpwuid_r F
- getresgid F
- getresuid F
- getrlimit F
- getrlimit64 F
- getrpcbyname F
- getrpcbyname_r F
- getrpcbynumber F
- getrpcbynumber_r F
- getrpcent F
- getrpcent_r F
- getrpcport F
- getrusage F
- gets F
- getsecretkey F
- getservbyname F
- getservbyname_r F
- getservbyport F
- getservbyport_r F
- getservent F
- getservent_r F
- getsid F
- getsockname F
- getsockopt F
- getsourcefilter F
- getspent F
- getspent_r F
- getspnam F
- getspnam_r F
- getsubopt F
- gettext F
- gettimeofday F
- getttyent F
- getttynam F
- getuid F
- getusershell F
- getutent F
- getutent_r F
- getutid F
- getutid_r F
- getutline F
- getutline_r F
- getutmp F
- getutmpx F
- getutxent F
- getutxid F
- getutxline F
- getw F
- getwc F
- getwc_unlocked F
- getwchar F
- getwchar_unlocked F
- getwd F
- getxattr F
- glob F
- glob64 F
- glob_pattern_p F
- globfree F
- globfree64 F
- gmtime F
- gmtime_r F
- gnu_dev_major F
- gnu_dev_makedev F
- gnu_dev_minor F
- gnu_get_libc_release F
- gnu_get_libc_version F
- grantpt F
- group_member F
- gsignal F
- gtty F
- h_errlist D 0x14
- h_nerr D 0x4
- hasmntopt F
- hcreate F
- hcreate_r F
- hdestroy F
- hdestroy_r F
- herror F
- host2netname F
- hsearch F
- hsearch_r F
- hstrerror F
- htonl F
- htons F
- iconv F
- iconv_close F
- iconv_open F
- if_freenameindex F
- if_indextoname F
- if_nameindex F
- if_nametoindex F
- imaxabs F
- imaxdiv F
- in6addr_any D 0x10
- in6addr_loopback D 0x10
- inb F
- index F
- inet6_option_alloc F
- inet6_option_append F
- inet6_option_find F
- inet6_option_init F
- inet6_option_next F
- inet6_option_space F
- inet_addr F
- inet_aton F
- inet_lnaof F
- inet_makeaddr F
- inet_netof F
- inet_network F
- inet_nsap_addr F
- inet_nsap_ntoa F
- inet_ntoa F
- inet_ntop F
- inet_pton F
- init_module F
- initgroups F
- initstate F
- initstate_r F
- inl F
- innetgr F
- inotify_add_watch F
- inotify_init F
- inotify_rm_watch F
- insque F
- inw F
- ioctl F
- ioperm F
- iopl F
- iruserok F
- iruserok_af F
- isalnum F
- isalnum_l F
- isalpha F
- isalpha_l F
- isascii F
- isastream F
- isatty F
- isblank F
- isblank_l F
- iscntrl F
- iscntrl_l F
- isctype F
- isdigit F
- isdigit_l F
- isfdtype F
- isgraph F
- isgraph_l F
- isinf F
- isinff F
- isinfl F
- islower F
- islower_l F
- isnan F
- isnanf F
- isnanl F
- isprint F
- isprint_l F
- ispunct F
- ispunct_l F
- isspace F
- isspace_l F
- isupper F
- isupper_l F
- iswalnum F
- iswalnum_l F
- iswalpha F
- iswalpha_l F
- iswblank F
- iswblank_l F
- iswcntrl F
- iswcntrl_l F
- iswctype F
- iswctype_l F
- iswdigit F
- iswdigit_l F
- iswgraph F
- iswgraph_l F
- iswlower F
- iswlower_l F
- iswprint F
- iswprint_l F
- iswpunct F
- iswpunct_l F
- iswspace F
- iswspace_l F
- iswupper F
- iswupper_l F
- iswxdigit F
- iswxdigit_l F
- isxdigit F
- isxdigit_l F
- jrand48 F
- jrand48_r F
- key_decryptsession F
- key_decryptsession_pk F
- key_encryptsession F
- key_encryptsession_pk F
- key_gendes F
- key_get_conv F
- key_secretkey_is_set F
- key_setnet F
- key_setsecret F
- kill F
- killpg F
- klogctl F
- l64a F
- labs F
- lchmod F
- lchown F
- lckpwdf F
- lcong48 F
- lcong48_r F
- ldexp F
- ldexpf F
- ldexpl F
- ldiv F
- lfind F
- lgetxattr F
- link F
- linkat F
- listen F
- listxattr F
- llabs F
- lldiv F
- llistxattr F
- llseek F
- loc1 D 0x4
- loc2 D 0x4
- localeconv F
- localtime F
- localtime_r F
- lockf F
- lockf64 F
- locs D 0x4
- longjmp F
- lrand48 F
- lrand48_r F
- lremovexattr F
- lsearch F
- lseek F
- lseek64 F
- lsetxattr F
- lutimes F
- madvise F
- makecontext F
- mallinfo F
- malloc F
- malloc_get_state F
- malloc_set_state F
- malloc_stats F
- malloc_trim F
- malloc_usable_size F
- mallopt F
- mallwatch D 0x4
- mblen F
- mbrlen F
- mbrtowc F
- mbsinit F
- mbsnrtowcs F
- mbsrtowcs F
- mbstowcs F
- mbtowc F
- mcheck F
- mcheck_check_all F
- mcheck_pedantic F
- mcount F
- memalign F
- memccpy F
- memchr F
- memcmp F
- memcpy F
- memfrob F
- memmem F
- memmove F
- mempcpy F
- memrchr F
- memset F
- mincore F
- mkdir F
- mkdirat F
- mkdtemp F
- mkfifo F
- mkfifoat F
- mkstemp F
- mkstemp64 F
- mktemp F
- mktime F
- mlock F
- mlockall F
- mmap F
- mmap64 F
- modf F
- modff F
- modfl F
- moncontrol F
- monstartup F
- mount F
- mprobe F
- mprotect F
- mrand48 F
- mrand48_r F
- mremap F
- msgctl F
- msgget F
- msgrcv F
- msgsnd F
- msync F
- mtrace F
- munlock F
- munlockall F
- munmap F
- muntrace F
- nanosleep F
- netname2host F
- netname2user F
- newlocale F
- nfsservctl F
- nftw F
- nftw64 F
- ngettext F
- nice F
- nl_langinfo F
- nl_langinfo_l F
- nrand48 F
- nrand48_r F
- ntohl F
- ntohs F
- ntp_adjtime F
- ntp_gettime F
- obstack_alloc_failed_handler D 0x4
- obstack_exit_failure D 0x4
- obstack_free F
- obstack_printf F
- obstack_vprintf F
- on_exit F
- open F
- open64 F
- open_memstream F
- open_wmemstream F
- openat F
- openat64 F
- opendir F
- openlog F
- optarg D 0x4
- opterr D 0x4
- optind D 0x4
- optopt D 0x4
- outb F
- outl F
- outw F
- parse_printf_format F
- passwd2des F
- pathconf F
- pause F
- pclose F
- perror F
- personality F
- pipe F
- pivot_root F
- pmap_getmaps F
- pmap_getport F
- pmap_rmtcall F
- pmap_set F
- pmap_unset F
- poll F
- popen F
- posix_fadvise F
- posix_fadvise64 F
- posix_fallocate F
- posix_fallocate64 F
- posix_madvise F
- posix_memalign F
- posix_openpt F
- posix_spawn F
- posix_spawn_file_actions_addclose F
- posix_spawn_file_actions_adddup2 F
- posix_spawn_file_actions_addopen F
- posix_spawn_file_actions_destroy F
- posix_spawn_file_actions_init F
- posix_spawnattr_destroy F
- posix_spawnattr_getflags F
- posix_spawnattr_getpgroup F
- posix_spawnattr_getschedparam F
- posix_spawnattr_getschedpolicy F
- posix_spawnattr_getsigdefault F
- posix_spawnattr_getsigmask F
- posix_spawnattr_init F
- posix_spawnattr_setflags F
- posix_spawnattr_setpgroup F
- posix_spawnattr_setschedparam F
- posix_spawnattr_setschedpolicy F
- posix_spawnattr_setsigdefault F
- posix_spawnattr_setsigmask F
- posix_spawnp F
- ppoll F
- prctl F
- pread F
- pread64 F
- printf F
- printf_size F
- printf_size_info F
- profil F
- profil_counter F
- program_invocation_name D 0x4
- program_invocation_short_name D 0x4
- pselect F
- psignal F
- pthread_attr_destroy F
- pthread_attr_getdetachstate F
- pthread_attr_getinheritsched F
- pthread_attr_getschedparam F
- pthread_attr_getschedpolicy F
- pthread_attr_getscope F
- pthread_attr_init F
- pthread_attr_setdetachstate F
- pthread_attr_setinheritsched F
- pthread_attr_setschedparam F
- pthread_attr_setschedpolicy F
- pthread_attr_setscope F
- pthread_cond_broadcast F
- pthread_cond_destroy F
- pthread_cond_init F
- pthread_cond_signal F
- pthread_cond_timedwait F
- pthread_cond_wait F
- pthread_condattr_destroy F
- pthread_condattr_init F
- pthread_equal F
- pthread_exit F
- pthread_getschedparam F
- pthread_mutex_destroy F
- pthread_mutex_init F
- pthread_mutex_lock F
- pthread_mutex_unlock F
- pthread_self F
- pthread_setcancelstate F
- pthread_setcanceltype F
- pthread_setschedparam F
- ptrace F
- ptsname F
- ptsname_r F
- putc F
- putc_unlocked F
- putchar F
- putchar_unlocked F
- putenv F
- putgrent F
- putmsg F
- putpmsg F
- putpwent F
- puts F
- putspent F
- pututline F
- pututxline F
- putw F
- putwc F
- putwc_unlocked F
- putwchar F
- putwchar_unlocked F
- pvalloc F
- pwrite F
- pwrite64 F
- qecvt F
- qecvt_r F
- qfcvt F
- qfcvt_r F
- qgcvt F
- qsort F
- query_module F
- quotactl F
- raise F
- rand F
- rand_r F
- random F
- random_r F
- rawmemchr F
- rcmd F
- rcmd_af F
- re_comp F
- re_compile_fastmap F
- re_compile_pattern F
- re_exec F
- re_match F
- re_match_2 F
- re_search F
- re_search_2 F
- re_set_registers F
- re_set_syntax F
- re_syntax_options D 0x4
- read F
- readahead F
- readdir F
- readdir64 F
- readdir64_r F
- readdir_r F
- readlink F
- readlinkat F
- readv F
- realloc F
- realpath F
- reboot F
- recv F
- recvfrom F
- recvmsg F
- regcomp F
- regerror F
- regexec F
- regfree F
- register_printf_function F
- registerrpc F
- remap_file_pages F
- remove F
- removexattr F
- remque F
- rename F
- renameat F
- revoke F
- rewind F
- rewinddir F
- rexec F
- rexec_af F
- rexecoptions D 0x4
- rindex F
- rmdir F
- rpc_createerr D 0x10
- rpmatch F
- rresvport F
- rresvport_af F
- rtime F
- ruserok F
- ruserok_af F
- ruserpass F
- sbrk F
- scalbn F
- scalbnf F
- scalbnl F
- scandir F
- scandir64 F
- scanf F
- sched_get_priority_max F
- sched_get_priority_min F
- sched_getaffinity F
- sched_getparam F
- sched_getscheduler F
- sched_rr_get_interval F
- sched_setaffinity F
- sched_setparam F
- sched_setscheduler F
- sched_yield F
- seed48 F
- seed48_r F
- seekdir F
- select F
- semctl F
- semget F
- semop F
- semtimedop F
- send F
- sendfile F
- sendfile64 F
- sendmsg F
- sendto F
- setaliasent F
- setbuf F
- setbuffer F
- setcontext F
- setdomainname F
- setegid F
- setenv F
- seteuid F
- setfsent F
- setfsgid F
- setfsuid F
- setgid F
- setgrent F
- setgroups F
- sethostent F
- sethostid F
- sethostname F
- setipv4sourcefilter F
- setitimer F
- setjmp F
- setlinebuf F
- setlocale F
- setlogin F
- setlogmask F
- setmntent F
- setnetent F
- setnetgrent F
- setpgid F
- setpgrp F
- setpriority F
- setprotoent F
- setpwent F
- setregid F
- setresgid F
- setresuid F
- setreuid F
- setrlimit F
- setrlimit64 F
- setrpcent F
- setservent F
- setsid F
- setsockopt F
- setsourcefilter F
- setspent F
- setstate F
- setstate_r F
- settimeofday F
- setttyent F
- setuid F
- setusershell F
- setutent F
- setutxent F
- setvbuf F
- setxattr F
- sgetspent F
- sgetspent_r F
- shmat F
- shmctl F
- shmdt F
- shmget F
- shutdown F
- sigaction F
- sigaddset F
- sigaltstack F
- sigandset F
- sigblock F
- sigdelset F
- sigemptyset F
- sigfillset F
- siggetmask F
- sighold F
- sigignore F
- siginterrupt F
- sigisemptyset F
- sigismember F
- siglongjmp F
- signal F
- sigorset F
- sigpause F
- sigpending F
- sigprocmask F
- sigqueue F
- sigrelse F
- sigreturn F
- sigset F
- sigsetmask F
- sigstack F
- sigsuspend F
- sigtimedwait F
- sigvec F
- sigwait F
- sigwaitinfo F
- sleep F
- snprintf F
- sockatmark F
- socket F
- socketpair F
- sprintf F
- sprofil F
- srand F
- srand48 F
- srand48_r F
- srandom F
- srandom_r F
- sscanf F
- ssignal F
- sstk F
- statfs F
- statfs64 F
- statvfs F
- statvfs64 F
- stderr D 0x4
- stdin D 0x4
- stdout D 0x4
- step F
- stime F
- stpcpy F
- stpncpy F
- strcasecmp F
- strcasecmp_l F
- strcasestr F
- strcat F
- strchr F
- strchrnul F
- strcmp F
- strcoll F
- strcoll_l F
- strcpy F
- strcspn F
- strdup F
- strerror F
- strerror_r F
- strfmon F
- strfmon_l F
- strfry F
- strftime F
- strftime_l F
- strlen F
- strncasecmp F
- strncasecmp_l F
- strncat F
- strncmp F
- strncpy F
- strndup F
- strnlen F
- strpbrk F
- strptime F
- strptime_l F
- strrchr F
- strsep F
- strsignal F
- strspn F
- strstr F
- strtod F
- strtod_l F
- strtof F
- strtof_l F
- strtoimax F
- strtok F
- strtok_r F
- strtol F
- strtol_l F
- strtold F
- strtold_l F
- strtoll F
- strtoll_l F
- strtoq F
- strtoul F
- strtoul_l F
- strtoull F
- strtoull_l F
- strtoumax F
- strtouq F
- strverscmp F
- strxfrm F
- strxfrm_l F
- stty F
- svc_exit F
- svc_fdset D 0x80
- svc_getreq F
- svc_getreq_common F
- svc_getreq_poll F
- svc_getreqset F
- svc_max_pollfd D 0x4
- svc_pollfd D 0x4
- svc_register F
- svc_run F
- svc_sendreply F
- svc_unregister F
- svcauthdes_stats D 0xc
- svcerr_auth F
- svcerr_decode F
- svcerr_noproc F
- svcerr_noprog F
- svcerr_progvers F
- svcerr_systemerr F
- svcerr_weakauth F
- svcfd_create F
- svcraw_create F
- svctcp_create F
- svcudp_bufcreate F
- svcudp_create F
- svcudp_enablecache F
- svcunix_create F
- svcunixfd_create F
- swab F
- swapcontext F
- swapoff F
- swapon F
- swprintf F
- swscanf F
- symlink F
- symlinkat F
- sync F
- sys_errlist D 0x210
- sys_nerr D 0x4
- sys_sigabbrev D 0x104
- sys_siglist D 0x104
- syscall F
- sysconf F
- sysctl F
- sysinfo F
- syslog F
- system F
- sysv_signal F
- tcdrain F
- tcflow F
- tcflush F
- tcgetattr F
- tcgetpgrp F
- tcgetsid F
- tcsendbreak F
- tcsetattr F
- tcsetpgrp F
- tdelete F
- tdestroy F
- telldir F
- tempnam F
- textdomain F
- tfind F
- time F
- timegm F
- timelocal F
- times F
- timezone D 0x4
- tmpfile F
- tmpfile64 F
- tmpnam F
- tmpnam_r F
- toascii F
- tolower F
- tolower_l F
- toupper F
- toupper_l F
- towctrans F
- towctrans_l F
- towlower F
- towlower_l F
- towupper F
- towupper_l F
- tr_break F
- truncate F
- truncate64 F
- tsearch F
- ttyname F
- ttyname_r F
- ttyslot F
- twalk F
- tzname D 0x8
- tzset F
- ualarm F
- ulckpwdf F
- ulimit F
- umask F
- umount F
- umount2 F
- uname F
- ungetc F
- ungetwc F
- unlink F
- unlinkat F
- unlockpt F
- unsetenv F
- unshare F
- updwtmp F
- updwtmpx F
- uselib F
- uselocale F
- user2netname F
- usleep F
- ustat F
- utime F
- utimes F
- utmpname F
- utmpxname F
- valloc F
- vasprintf F
- vdprintf F
- verr F
- verrx F
- versionsort F
- versionsort64 F
- vfork F
- vfprintf F
- vfscanf F
- vfwprintf F
- vfwscanf F
- vhangup F
- vlimit F
- vprintf F
- vscanf F
- vsnprintf F
- vsprintf F
- vsscanf F
- vswprintf F
- vswscanf F
- vsyslog F
- vtimes F
- vwarn F
- vwarnx F
- vwprintf F
- vwscanf F
- wait F
- wait3 F
- wait4 F
- waitid F
- waitpid F
- warn F
- warnx F
- wcpcpy F
- wcpncpy F
- wcrtomb F
- wcscasecmp F
- wcscasecmp_l F
- wcscat F
- wcschr F
- wcschrnul F
- wcscmp F
- wcscoll F
- wcscoll_l F
- wcscpy F
- wcscspn F
- wcsdup F
- wcsftime F
- wcsftime_l F
- wcslen F
- wcsncasecmp F
- wcsncasecmp_l F
- wcsncat F
- wcsncmp F
- wcsncpy F
- wcsnlen F
- wcsnrtombs F
- wcspbrk F
- wcsrchr F
- wcsrtombs F
- wcsspn F
- wcsstr F
- wcstod F
- wcstod_l F
- wcstof F
- wcstof_l F
- wcstoimax F
- wcstok F
- wcstol F
- wcstol_l F
- wcstold F
- wcstold_l F
- wcstoll F
- wcstoll_l F
- wcstombs F
- wcstoq F
- wcstoul F
- wcstoul_l F
- wcstoull F
- wcstoull_l F
- wcstoumax F
- wcstouq F
- wcswcs F
- wcswidth F
- wcsxfrm F
- wcsxfrm_l F
- wctob F
- wctomb F
- wctrans F
- wctrans_l F
- wctype F
- wctype_l F
- wcwidth F
- wmemchr F
- wmemcmp F
- wmemcpy F
- wmemmove F
- wmempcpy F
- wmemset F
- wordexp F
- wordfree F
- wprintf F
- write F
- writev F
- wscanf F
- xdecrypt F
- xdr_accepted_reply F
- xdr_array F
- xdr_authdes_cred F
- xdr_authdes_verf F
- xdr_authunix_parms F
- xdr_bool F
- xdr_bytes F
- xdr_callhdr F
- xdr_callmsg F
- xdr_char F
- xdr_cryptkeyarg F
- xdr_cryptkeyarg2 F
- xdr_cryptkeyres F
- xdr_des_block F
- xdr_double F
- xdr_enum F
- xdr_float F
- xdr_free F
- xdr_getcredres F
- xdr_hyper F
- xdr_int F
- xdr_int16_t F
- xdr_int32_t F
- xdr_int64_t F
- xdr_int8_t F
- xdr_key_netstarg F
- xdr_key_netstres F
- xdr_keybuf F
- xdr_keystatus F
- xdr_long F
- xdr_longlong_t F
- xdr_netnamestr F
- xdr_netobj F
- xdr_opaque F
- xdr_opaque_auth F
- xdr_pmap F
- xdr_pmaplist F
- xdr_pointer F
- xdr_quad_t F
- xdr_reference F
- xdr_rejected_reply F
- xdr_replymsg F
- xdr_rmtcall_args F
- xdr_rmtcallres F
- xdr_short F
- xdr_sizeof F
- xdr_string F
- xdr_u_char F
- xdr_u_hyper F
- xdr_u_int F
- xdr_u_long F
- xdr_u_longlong_t F
- xdr_u_quad_t F
- xdr_u_short F
- xdr_uint16_t F
- xdr_uint32_t F
- xdr_uint64_t F
- xdr_uint8_t F
- xdr_union F
- xdr_unixcred F
- xdr_vector F
- xdr_void F
- xdr_wrapstring F
- xdrmem_create F
- xdrrec_create F
- xdrrec_endofrecord F
- xdrrec_eof F
- xdrrec_skiprecord F
- xdrstdio_create F
- xencrypt F
- xprt_register F
- xprt_unregister F
-GLIBC_2.5
- GLIBC_2.5 A
- __readlinkat_chk F
- inet6_opt_append F
- inet6_opt_find F
- inet6_opt_finish F
- inet6_opt_get_val F
- inet6_opt_init F
- inet6_opt_next F
- inet6_opt_set_val F
- inet6_rth_add F
- inet6_rth_getaddr F
- inet6_rth_init F
- inet6_rth_reverse F
- inet6_rth_segments F
- inet6_rth_space F
- splice F
- tee F
- vmsplice F
-GLIBC_2.6
- GLIBC_2.6 A
- __sched_cpucount F
- epoll_pwait F
- futimens F
- sched_getcpu F
- strerror_l F
- sync_file_range F
- utimensat F
-GLIBC_2.7
- GLIBC_2.7 A
- __fread_chk F
- __fread_unlocked_chk F
- __isoc99_fscanf F
- __isoc99_fwscanf F
- __isoc99_scanf F
- __isoc99_sscanf F
- __isoc99_swscanf F
- __isoc99_vfscanf F
- __isoc99_vfwscanf F
- __isoc99_vscanf F
- __isoc99_vsscanf F
- __isoc99_vswscanf F
- __isoc99_vwscanf F
- __isoc99_wscanf F
- __open64_2 F
- __open_2 F
- __openat64_2 F
- __openat_2 F
- __sched_cpualloc F
- __sched_cpufree F
- eventfd F
- eventfd_read F
- eventfd_write F
- mkostemp F
- mkostemp64 F
- signalfd F
-GLIBC_2.8
- GLIBC_2.8 A
- __asprintf_chk F
- __dprintf_chk F
- __gnu_mcount_nc F
- __obstack_printf_chk F
- __obstack_vprintf_chk F
- __vasprintf_chk F
- __vdprintf_chk F
- qsort_r F
- timerfd_create F
- timerfd_gettime F
- timerfd_settime F
-GLIBC_2.9
- GLIBC_2.9 A
- dup3 F
- epoll_create1 F
- inotify_init1 F
- pipe2 F
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/libcrypt.abilist b/ports/sysdeps/unix/sysv/linux/arm/nptl/libcrypt.abilist
deleted file mode 100644
index 8c874edffe..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/libcrypt.abilist
+++ /dev/null
@@ -1,9 +0,0 @@
-GLIBC_2.4
- GLIBC_2.4 A
- crypt F
- crypt_r F
- encrypt F
- encrypt_r F
- fcrypt F
- setkey F
- setkey_r F
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/libdl.abilist b/ports/sysdeps/unix/sysv/linux/arm/nptl/libdl.abilist
deleted file mode 100644
index 7f3ebed31d..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/libdl.abilist
+++ /dev/null
@@ -1,11 +0,0 @@
-GLIBC_2.4
- GLIBC_2.4 A
- dladdr F
- dladdr1 F
- dlclose F
- dlerror F
- dlinfo F
- dlmopen F
- dlopen F
- dlsym F
- dlvsym F
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/libm.abilist b/ports/sysdeps/unix/sysv/linux/arm/nptl/libm.abilist
deleted file mode 100644
index 614e5ebe5c..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/libm.abilist
+++ /dev/null
@@ -1,374 +0,0 @@
-GLIBC_2.15
- GLIBC_2.15 A
- __acos_finite F
- __acosf_finite F
- __acosh_finite F
- __acoshf_finite F
- __asin_finite F
- __asinf_finite F
- __atan2_finite F
- __atan2f_finite F
- __atanh_finite F
- __atanhf_finite F
- __cosh_finite F
- __coshf_finite F
- __exp10_finite F
- __exp10f_finite F
- __exp2_finite F
- __exp2f_finite F
- __exp_finite F
- __expf_finite F
- __fmod_finite F
- __fmodf_finite F
- __gamma_r_finite F
- __gammaf_r_finite F
- __hypot_finite F
- __hypotf_finite F
- __j0_finite F
- __j0f_finite F
- __j1_finite F
- __j1f_finite F
- __jn_finite F
- __jnf_finite F
- __lgamma_r_finite F
- __lgammaf_r_finite F
- __log10_finite F
- __log10f_finite F
- __log2_finite F
- __log2f_finite F
- __log_finite F
- __logf_finite F
- __pow_finite F
- __powf_finite F
- __remainder_finite F
- __remainderf_finite F
- __scalb_finite F
- __scalbf_finite F
- __sinh_finite F
- __sinhf_finite F
- __sqrt_finite F
- __sqrtf_finite F
- __y0_finite F
- __y0f_finite F
- __y1_finite F
- __y1f_finite F
- __yn_finite F
- __ynf_finite F
-GLIBC_2.18
- GLIBC_2.18 A
- __issignaling F
- __issignalingf F
-GLIBC_2.4
- GLIBC_2.4 A
- _LIB_VERSION D 0x4
- __clog10 F
- __clog10f F
- __clog10l F
- __finite F
- __finitef F
- __finitel F
- __fpclassify F
- __fpclassifyf F
- __signbit F
- __signbitf F
- acos F
- acosf F
- acosh F
- acoshf F
- acoshl F
- acosl F
- asin F
- asinf F
- asinh F
- asinhf F
- asinhl F
- asinl F
- atan F
- atan2 F
- atan2f F
- atan2l F
- atanf F
- atanh F
- atanhf F
- atanhl F
- atanl F
- cabs F
- cabsf F
- cabsl F
- cacos F
- cacosf F
- cacosh F
- cacoshf F
- cacoshl F
- cacosl F
- carg F
- cargf F
- cargl F
- casin F
- casinf F
- casinh F
- casinhf F
- casinhl F
- casinl F
- catan F
- catanf F
- catanh F
- catanhf F
- catanhl F
- catanl F
- cbrt F
- cbrtf F
- cbrtl F
- ccos F
- ccosf F
- ccosh F
- ccoshf F
- ccoshl F
- ccosl F
- ceil F
- ceilf F
- ceill F
- cexp F
- cexpf F
- cexpl F
- cimag F
- cimagf F
- cimagl F
- clog F
- clog10 F
- clog10f F
- clog10l F
- clogf F
- clogl F
- conj F
- conjf F
- conjl F
- copysign F
- copysignf F
- copysignl F
- cos F
- cosf F
- cosh F
- coshf F
- coshl F
- cosl F
- cpow F
- cpowf F
- cpowl F
- cproj F
- cprojf F
- cprojl F
- creal F
- crealf F
- creall F
- csin F
- csinf F
- csinh F
- csinhf F
- csinhl F
- csinl F
- csqrt F
- csqrtf F
- csqrtl F
- ctan F
- ctanf F
- ctanh F
- ctanhf F
- ctanhl F
- ctanl F
- drem F
- dremf F
- dreml F
- erf F
- erfc F
- erfcf F
- erfcl F
- erff F
- erfl F
- exp F
- exp10 F
- exp10f F
- exp10l F
- exp2 F
- exp2f F
- exp2l F
- expf F
- expl F
- expm1 F
- expm1f F
- expm1l F
- fabs F
- fabsf F
- fabsl F
- fdim F
- fdimf F
- fdiml F
- feclearexcept F
- fedisableexcept F
- feenableexcept F
- fegetenv F
- fegetexcept F
- fegetexceptflag F
- fegetround F
- feholdexcept F
- feraiseexcept F
- fesetenv F
- fesetexceptflag F
- fesetround F
- fetestexcept F
- feupdateenv F
- finite F
- finitef F
- finitel F
- floor F
- floorf F
- floorl F
- fma F
- fmaf F
- fmal F
- fmax F
- fmaxf F
- fmaxl F
- fmin F
- fminf F
- fminl F
- fmod F
- fmodf F
- fmodl F
- frexp F
- frexpf F
- frexpl F
- gamma F
- gammaf F
- gammal F
- hypot F
- hypotf F
- hypotl F
- ilogb F
- ilogbf F
- ilogbl F
- j0 F
- j0f F
- j0l F
- j1 F
- j1f F
- j1l F
- jn F
- jnf F
- jnl F
- ldexp F
- ldexpf F
- ldexpl F
- lgamma F
- lgamma_r F
- lgammaf F
- lgammaf_r F
- lgammal F
- lgammal_r F
- llrint F
- llrintf F
- llrintl F
- llround F
- llroundf F
- llroundl F
- log F
- log10 F
- log10f F
- log10l F
- log1p F
- log1pf F
- log1pl F
- log2 F
- log2f F
- log2l F
- logb F
- logbf F
- logbl F
- logf F
- logl F
- lrint F
- lrintf F
- lrintl F
- lround F
- lroundf F
- lroundl F
- matherr F
- modf F
- modff F
- modfl F
- nan F
- nanf F
- nanl F
- nearbyint F
- nearbyintf F
- nearbyintl F
- nextafter F
- nextafterf F
- nextafterl F
- nexttoward F
- nexttowardf F
- nexttowardl F
- pow F
- pow10 F
- pow10f F
- pow10l F
- powf F
- powl F
- remainder F
- remainderf F
- remainderl F
- remquo F
- remquof F
- remquol F
- rint F
- rintf F
- rintl F
- round F
- roundf F
- roundl F
- scalb F
- scalbf F
- scalbl F
- scalbln F
- scalblnf F
- scalblnl F
- scalbn F
- scalbnf F
- scalbnl F
- signgam D 0x4
- significand F
- significandf F
- significandl F
- sin F
- sincos F
- sincosf F
- sincosl F
- sinf F
- sinh F
- sinhf F
- sinhl F
- sinl F
- sqrt F
- sqrtf F
- sqrtl F
- tan F
- tanf F
- tanh F
- tanhf F
- tanhl F
- tanl F
- tgamma F
- tgammaf F
- tgammal F
- trunc F
- truncf F
- truncl F
- y0 F
- y0f F
- y0l F
- y1 F
- y1f F
- y1l F
- yn F
- ynf F
- ynl F
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/libnsl.abilist b/ports/sysdeps/unix/sysv/linux/arm/nptl/libnsl.abilist
deleted file mode 100644
index 1d2670c444..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/libnsl.abilist
+++ /dev/null
@@ -1,123 +0,0 @@
-GLIBC_2.4
- GLIBC_2.4 A
- __free_fdresult F
- __nis_default_access F
- __nis_default_group F
- __nis_default_owner F
- __nis_default_ttl F
- __nis_finddirectory F
- __nis_hash F
- __nisbind_connect F
- __nisbind_create F
- __nisbind_destroy F
- __nisbind_next F
- __yp_check F
- nis_add F
- nis_add_entry F
- nis_addmember F
- nis_checkpoint F
- nis_clone_directory F
- nis_clone_object F
- nis_clone_result F
- nis_creategroup F
- nis_destroy_object F
- nis_destroygroup F
- nis_dir_cmp F
- nis_domain_of F
- nis_domain_of_r F
- nis_first_entry F
- nis_free_directory F
- nis_free_object F
- nis_free_request F
- nis_freenames F
- nis_freeresult F
- nis_freeservlist F
- nis_freetags F
- nis_getnames F
- nis_getservlist F
- nis_ismember F
- nis_leaf_of F
- nis_leaf_of_r F
- nis_lerror F
- nis_list F
- nis_local_directory F
- nis_local_group F
- nis_local_host F
- nis_local_principal F
- nis_lookup F
- nis_mkdir F
- nis_modify F
- nis_modify_entry F
- nis_name_of F
- nis_name_of_r F
- nis_next_entry F
- nis_perror F
- nis_ping F
- nis_print_directory F
- nis_print_entry F
- nis_print_group F
- nis_print_group_entry F
- nis_print_link F
- nis_print_object F
- nis_print_result F
- nis_print_rights F
- nis_print_table F
- nis_read_obj F
- nis_remove F
- nis_remove_entry F
- nis_removemember F
- nis_rmdir F
- nis_servstate F
- nis_sperrno F
- nis_sperror F
- nis_sperror_r F
- nis_stats F
- nis_verifygroup F
- nis_write_obj F
- readColdStartFile F
- writeColdStartFile F
- xdr_cback_data F
- xdr_domainname F
- xdr_keydat F
- xdr_mapname F
- xdr_obj_p F
- xdr_peername F
- xdr_valdat F
- xdr_yp_buf F
- xdr_ypall F
- xdr_ypbind_binding F
- xdr_ypbind_resp F
- xdr_ypbind_resptype F
- xdr_ypbind_setdom F
- xdr_ypdelete_args F
- xdr_ypmap_parms F
- xdr_ypmaplist F
- xdr_yppush_status F
- xdr_yppushresp_xfr F
- xdr_ypreq_key F
- xdr_ypreq_nokey F
- xdr_ypreq_xfr F
- xdr_ypresp_all F
- xdr_ypresp_key_val F
- xdr_ypresp_maplist F
- xdr_ypresp_master F
- xdr_ypresp_order F
- xdr_ypresp_val F
- xdr_ypresp_xfr F
- xdr_ypstat F
- xdr_ypupdate_args F
- xdr_ypxfrstat F
- yp_all F
- yp_bind F
- yp_first F
- yp_get_default_domain F
- yp_maplist F
- yp_master F
- yp_match F
- yp_next F
- yp_order F
- yp_unbind F
- yp_update F
- ypbinderr_string F
- yperr_string F
- ypprot_err F
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/libpthread.abilist b/ports/sysdeps/unix/sysv/linux/arm/nptl/libpthread.abilist
deleted file mode 100644
index ac46302bc7..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/libpthread.abilist
+++ /dev/null
@@ -1,232 +0,0 @@
-GLIBC_2.11
- GLIBC_2.11 A
- pthread_sigqueue F
-GLIBC_2.12
- GLIBC_2.12 A
- pthread_getname_np F
- pthread_mutex_consistent F
- pthread_mutexattr_getrobust F
- pthread_mutexattr_setrobust F
- pthread_setname_np F
-GLIBC_2.18
- GLIBC_2.18 A
- pthread_getattr_default_np F
- pthread_setattr_default_np F
-GLIBC_2.4
- GLIBC_2.4 A
- _IO_flockfile F
- _IO_ftrylockfile F
- _IO_funlockfile F
- __close F
- __connect F
- __errno_location F
- __fcntl F
- __fork F
- __h_errno_location F
- __libc_allocate_rtsig F
- __libc_current_sigrtmax F
- __libc_current_sigrtmin F
- __lseek F
- __nanosleep F
- __open F
- __open64 F
- __pread64 F
- __pthread_cleanup_routine F
- __pthread_getspecific F
- __pthread_key_create F
- __pthread_mutex_destroy F
- __pthread_mutex_init F
- __pthread_mutex_lock F
- __pthread_mutex_trylock F
- __pthread_mutex_unlock F
- __pthread_mutexattr_destroy F
- __pthread_mutexattr_init F
- __pthread_mutexattr_settype F
- __pthread_once F
- __pthread_register_cancel F
- __pthread_register_cancel_defer F
- __pthread_rwlock_destroy F
- __pthread_rwlock_init F
- __pthread_rwlock_rdlock F
- __pthread_rwlock_tryrdlock F
- __pthread_rwlock_trywrlock F
- __pthread_rwlock_unlock F
- __pthread_rwlock_wrlock F
- __pthread_setspecific F
- __pthread_unregister_cancel F
- __pthread_unregister_cancel_restore F
- __pthread_unwind_next F
- __pwrite64 F
- __read F
- __res_state F
- __send F
- __sigaction F
- __vfork F
- __wait F
- __write F
- _pthread_cleanup_pop F
- _pthread_cleanup_pop_restore F
- _pthread_cleanup_push F
- _pthread_cleanup_push_defer F
- accept F
- close F
- connect F
- fcntl F
- flockfile F
- fork F
- fsync F
- ftrylockfile F
- funlockfile F
- longjmp F
- lseek F
- lseek64 F
- msync F
- nanosleep F
- open F
- open64 F
- pause F
- pread F
- pread64 F
- pthread_attr_destroy F
- pthread_attr_getaffinity_np F
- pthread_attr_getdetachstate F
- pthread_attr_getguardsize F
- pthread_attr_getinheritsched F
- pthread_attr_getschedparam F
- pthread_attr_getschedpolicy F
- pthread_attr_getscope F
- pthread_attr_getstack F
- pthread_attr_getstackaddr F
- pthread_attr_getstacksize F
- pthread_attr_init F
- pthread_attr_setaffinity_np F
- pthread_attr_setdetachstate F
- pthread_attr_setguardsize F
- pthread_attr_setinheritsched F
- pthread_attr_setschedparam F
- pthread_attr_setschedpolicy F
- pthread_attr_setscope F
- pthread_attr_setstack F
- pthread_attr_setstackaddr F
- pthread_attr_setstacksize F
- pthread_barrier_destroy F
- pthread_barrier_init F
- pthread_barrier_wait F
- pthread_barrierattr_destroy F
- pthread_barrierattr_getpshared F
- pthread_barrierattr_init F
- pthread_barrierattr_setpshared F
- pthread_cancel F
- pthread_cond_broadcast F
- pthread_cond_destroy F
- pthread_cond_init F
- pthread_cond_signal F
- pthread_cond_timedwait F
- pthread_cond_wait F
- pthread_condattr_destroy F
- pthread_condattr_getclock F
- pthread_condattr_getpshared F
- pthread_condattr_init F
- pthread_condattr_setclock F
- pthread_condattr_setpshared F
- pthread_create F
- pthread_detach F
- pthread_equal F
- pthread_exit F
- pthread_getaffinity_np F
- pthread_getattr_np F
- pthread_getconcurrency F
- pthread_getcpuclockid F
- pthread_getschedparam F
- pthread_getspecific F
- pthread_join F
- pthread_key_create F
- pthread_key_delete F
- pthread_kill F
- pthread_kill_other_threads_np F
- pthread_mutex_consistent_np F
- pthread_mutex_destroy F
- pthread_mutex_getprioceiling F
- pthread_mutex_init F
- pthread_mutex_lock F
- pthread_mutex_setprioceiling F
- pthread_mutex_timedlock F
- pthread_mutex_trylock F
- pthread_mutex_unlock F
- pthread_mutexattr_destroy F
- pthread_mutexattr_getkind_np F
- pthread_mutexattr_getprioceiling F
- pthread_mutexattr_getprotocol F
- pthread_mutexattr_getpshared F
- pthread_mutexattr_getrobust_np F
- pthread_mutexattr_gettype F
- pthread_mutexattr_init F
- pthread_mutexattr_setkind_np F
- pthread_mutexattr_setprioceiling F
- pthread_mutexattr_setprotocol F
- pthread_mutexattr_setpshared F
- pthread_mutexattr_setrobust_np F
- pthread_mutexattr_settype F
- pthread_once F
- pthread_rwlock_destroy F
- pthread_rwlock_init F
- pthread_rwlock_rdlock F
- pthread_rwlock_timedrdlock F
- pthread_rwlock_timedwrlock F
- pthread_rwlock_tryrdlock F
- pthread_rwlock_trywrlock F
- pthread_rwlock_unlock F
- pthread_rwlock_wrlock F
- pthread_rwlockattr_destroy F
- pthread_rwlockattr_getkind_np F
- pthread_rwlockattr_getpshared F
- pthread_rwlockattr_init F
- pthread_rwlockattr_setkind_np F
- pthread_rwlockattr_setpshared F
- pthread_self F
- pthread_setaffinity_np F
- pthread_setcancelstate F
- pthread_setcanceltype F
- pthread_setconcurrency F
- pthread_setschedparam F
- pthread_setschedprio F
- pthread_setspecific F
- pthread_sigmask F
- pthread_spin_destroy F
- pthread_spin_init F
- pthread_spin_lock F
- pthread_spin_trylock F
- pthread_spin_unlock F
- pthread_testcancel F
- pthread_timedjoin_np F
- pthread_tryjoin_np F
- pthread_yield F
- pwrite F
- pwrite64 F
- raise F
- read F
- recv F
- recvfrom F
- recvmsg F
- sem_close F
- sem_destroy F
- sem_getvalue F
- sem_init F
- sem_open F
- sem_post F
- sem_timedwait F
- sem_trywait F
- sem_unlink F
- sem_wait F
- send F
- sendmsg F
- sendto F
- sigaction F
- siglongjmp F
- sigwait F
- system F
- tcdrain F
- vfork F
- wait F
- waitpid F
- write F
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/libresolv.abilist b/ports/sysdeps/unix/sysv/linux/arm/nptl/libresolv.abilist
deleted file mode 100644
index e781f2f822..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/libresolv.abilist
+++ /dev/null
@@ -1,95 +0,0 @@
-GLIBC_2.4
- GLIBC_2.4 A
- __b64_ntop F
- __b64_pton F
- __dn_comp F
- __dn_count_labels F
- __dn_expand F
- __dn_skipname F
- __fp_nquery F
- __fp_query F
- __fp_resstat F
- __hostalias F
- __loc_aton F
- __loc_ntoa F
- __p_cdname F
- __p_cdnname F
- __p_class F
- __p_class_syms D 0x54
- __p_fqname F
- __p_fqnname F
- __p_option F
- __p_query F
- __p_rcode F
- __p_secstodate F
- __p_time F
- __p_type F
- __p_type_syms D 0x228
- __putlong F
- __putshort F
- __res_close F
- __res_dnok F
- __res_hnok F
- __res_hostalias F
- __res_isourserver F
- __res_mailok F
- __res_mkquery F
- __res_nameinquery F
- __res_nmkquery F
- __res_nquery F
- __res_nquerydomain F
- __res_nsearch F
- __res_nsend F
- __res_ownok F
- __res_queriesmatch F
- __res_query F
- __res_querydomain F
- __res_search F
- __res_send F
- __sym_ntop F
- __sym_ntos F
- __sym_ston F
- _gethtbyaddr F
- _gethtbyname F
- _gethtbyname2 F
- _gethtent F
- _getlong F
- _getshort F
- _res_opcodes D 0x40
- _sethtent F
- inet_net_ntop F
- inet_net_pton F
- inet_neta F
- res_gethostbyaddr F
- res_gethostbyname F
- res_gethostbyname2 F
- res_send_setqhook F
- res_send_setrhook F
-GLIBC_2.9
- GLIBC_2.9 A
- ns_datetosecs F
- ns_format_ttl F
- ns_get16 F
- ns_get32 F
- ns_initparse F
- ns_makecanon F
- ns_msg_getflag F
- ns_name_compress F
- ns_name_ntol F
- ns_name_ntop F
- ns_name_pack F
- ns_name_pton F
- ns_name_rollback F
- ns_name_skip F
- ns_name_uncompress F
- ns_name_unpack F
- ns_parse_ttl F
- ns_parserr F
- ns_put16 F
- ns_put32 F
- ns_samedomain F
- ns_samename F
- ns_skiprr F
- ns_sprintrr F
- ns_sprintrrf F
- ns_subdomain F
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/librt.abilist b/ports/sysdeps/unix/sysv/linux/arm/nptl/librt.abilist
deleted file mode 100644
index 466df4d93b..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/librt.abilist
+++ /dev/null
@@ -1,44 +0,0 @@
-GLIBC_2.4
- GLIBC_2.4 A
- aio_cancel F
- aio_cancel64 F
- aio_error F
- aio_error64 F
- aio_fsync F
- aio_fsync64 F
- aio_init F
- aio_read F
- aio_read64 F
- aio_return F
- aio_return64 F
- aio_suspend F
- aio_suspend64 F
- aio_write F
- aio_write64 F
- clock_getcpuclockid F
- clock_getres F
- clock_gettime F
- clock_nanosleep F
- clock_settime F
- lio_listio F
- lio_listio64 F
- mq_close F
- mq_getattr F
- mq_notify F
- mq_open F
- mq_receive F
- mq_send F
- mq_setattr F
- mq_timedreceive F
- mq_timedsend F
- mq_unlink F
- shm_open F
- shm_unlink F
- timer_create F
- timer_delete F
- timer_getoverrun F
- timer_gettime F
- timer_settime F
-GLIBC_2.7
- GLIBC_2.7 A
- __mq_open_2 F
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/libthread_db.abilist b/ports/sysdeps/unix/sysv/linux/arm/nptl/libthread_db.abilist
deleted file mode 100644
index 523772441b..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/libthread_db.abilist
+++ /dev/null
@@ -1,42 +0,0 @@
-GLIBC_2.4
- GLIBC_2.4 A
- td_init F
- td_log F
- td_symbol_list F
- td_ta_clear_event F
- td_ta_delete F
- td_ta_enable_stats F
- td_ta_event_addr F
- td_ta_event_getmsg F
- td_ta_get_nthreads F
- td_ta_get_ph F
- td_ta_get_stats F
- td_ta_map_id2thr F
- td_ta_map_lwp2thr F
- td_ta_new F
- td_ta_reset_stats F
- td_ta_set_event F
- td_ta_setconcurrency F
- td_ta_thr_iter F
- td_ta_tsd_iter F
- td_thr_clear_event F
- td_thr_dbresume F
- td_thr_dbsuspend F
- td_thr_event_enable F
- td_thr_event_getmsg F
- td_thr_get_info F
- td_thr_getfpregs F
- td_thr_getgregs F
- td_thr_getxregs F
- td_thr_getxregsize F
- td_thr_set_event F
- td_thr_setfpregs F
- td_thr_setgregs F
- td_thr_setprio F
- td_thr_setsigpending F
- td_thr_setxregs F
- td_thr_sigsetmask F
- td_thr_tls_get_addr F
- td_thr_tlsbase F
- td_thr_tsd F
- td_thr_validate F
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/libutil.abilist b/ports/sysdeps/unix/sysv/linux/arm/nptl/libutil.abilist
deleted file mode 100644
index 6cb71966a1..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/libutil.abilist
+++ /dev/null
@@ -1,8 +0,0 @@
-GLIBC_2.4
- GLIBC_2.4 A
- forkpty F
- login F
- login_tty F
- logout F
- logwtmp F
- openpty F
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/localplt.data b/ports/sysdeps/unix/sysv/linux/arm/nptl/localplt.data
deleted file mode 100644
index 109522e37e..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/localplt.data
+++ /dev/null
@@ -1,13 +0,0 @@
-libc.so: __signbit
-libc.so: calloc
-libc.so: free
-libc.so: fscanf
-libc.so: malloc
-libc.so: memalign
-libc.so: raise
-libc.so: realloc
-libm.so: __signbit
-libm.so: __signbitf
-libm.so: matherr
-libpthread.so: __errno_location
-libpthread.so: raise
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.c b/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.c
deleted file mode 100644
index 9603d7b328..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.c
+++ /dev/null
@@ -1,132 +0,0 @@
-/* low level locking for pthread library. Generic futex-using version.
- Copyright (C) 2003-2014 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>
-#include <sysdep.h>
-#include <lowlevellock.h>
-#include <sys/time.h>
-
-void
-__lll_lock_wait_private (int *futex)
-{
- do
- {
- int oldval = atomic_compare_and_exchange_val_acq (futex, 2, 1);
- if (oldval != 0)
- lll_futex_wait (futex, 2, LLL_PRIVATE);
- }
- while (atomic_compare_and_exchange_bool_acq (futex, 2, 0) != 0);
-}
-
-
-/* These functions don't get included in libc.so */
-#ifdef IS_IN_libpthread
-void
-__lll_lock_wait (int *futex, int private)
-{
- do
- {
- int oldval = atomic_compare_and_exchange_val_acq (futex, 2, 1);
- if (oldval != 0)
- lll_futex_wait (futex, 2, private);
- }
- while (atomic_compare_and_exchange_bool_acq (futex, 2, 0) != 0);
-}
-
-
-int
-__lll_timedlock_wait (int *futex, const struct timespec *abstime, int private)
-{
- struct timespec rt;
-
- /* Reject invalid timeouts. */
- if (abstime->tv_nsec < 0 || abstime->tv_nsec >= 1000000000)
- return EINVAL;
-
- /* Upgrade the lock. */
- if (atomic_exchange_acq (futex, 2) == 0)
- return 0;
-
- do
- {
- struct timeval tv;
-
- /* Get the current time. */
- (void) __gettimeofday (&tv, NULL);
-
- /* Compute relative timeout. */
- rt.tv_sec = abstime->tv_sec - tv.tv_sec;
- rt.tv_nsec = abstime->tv_nsec - tv.tv_usec * 1000;
- if (rt.tv_nsec < 0)
- {
- rt.tv_nsec += 1000000000;
- --rt.tv_sec;
- }
-
- /* Already timed out? */
- if (rt.tv_sec < 0)
- return ETIMEDOUT;
-
- // XYZ: Lost the lock to check whether it was private.
- lll_futex_timed_wait (futex, 2, &rt, private);
- }
- while (atomic_compare_and_exchange_bool_acq (futex, 2, 0) != 0);
-
- return 0;
-}
-
-
-int
-__lll_timedwait_tid (int *tidp, const struct timespec *abstime)
-{
- int tid;
-
- if (abstime->tv_nsec < 0 || abstime->tv_nsec >= 1000000000)
- return EINVAL;
-
- /* Repeat until thread terminated. */
- while ((tid = *tidp) != 0)
- {
- struct timeval tv;
- struct timespec rt;
-
- /* Get the current time. */
- (void) __gettimeofday (&tv, NULL);
-
- /* Compute relative timeout. */
- rt.tv_sec = abstime->tv_sec - tv.tv_sec;
- rt.tv_nsec = abstime->tv_nsec - tv.tv_usec * 1000;
- if (rt.tv_nsec < 0)
- {
- rt.tv_nsec += 1000000000;
- --rt.tv_sec;
- }
-
- /* Already timed out? */
- if (rt.tv_sec < 0)
- return ETIMEDOUT;
-
- /* Wait until thread terminates. */
- // XYZ: Lost the lock to check whether it was private.
- if (lll_futex_timed_wait (tidp, tid, &rt, LLL_SHARED) == -ETIMEDOUT)
- return ETIMEDOUT;
- }
-
- return 0;
-}
-#endif
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h b/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h
deleted file mode 100644
index 5d19434cdc..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h
+++ /dev/null
@@ -1,321 +0,0 @@
-/* Copyright (C) 2005-2014 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 _LOWLEVELLOCK_H
-#define _LOWLEVELLOCK_H 1
-
-#include <time.h>
-#include <sys/param.h>
-#include <bits/pthreadtypes.h>
-#include <atomic.h>
-#include <sysdep.h>
-#include <kernel-features.h>
-
-#define FUTEX_WAIT 0
-#define FUTEX_WAKE 1
-#define FUTEX_REQUEUE 3
-#define FUTEX_CMP_REQUEUE 4
-#define FUTEX_WAKE_OP 5
-#define FUTEX_OP_CLEAR_WAKE_IF_GT_ONE ((4 << 24) | 1)
-#define FUTEX_LOCK_PI 6
-#define FUTEX_UNLOCK_PI 7
-#define FUTEX_TRYLOCK_PI 8
-#define FUTEX_WAIT_BITSET 9
-#define FUTEX_WAKE_BITSET 10
-#define FUTEX_WAIT_REQUEUE_PI 11
-#define FUTEX_CMP_REQUEUE_PI 12
-#define FUTEX_PRIVATE_FLAG 128
-#define FUTEX_CLOCK_REALTIME 256
-
-#define FUTEX_BITSET_MATCH_ANY 0xffffffff
-
-/* Values for 'private' parameter of locking macros. Yes, the
- definition seems to be backwards. But it is not. The bit will be
- reversed before passing to the system call. */
-#define LLL_PRIVATE 0
-#define LLL_SHARED FUTEX_PRIVATE_FLAG
-
-
-#if !defined NOT_IN_libc || defined IS_IN_rtld
-/* In libc.so or ld.so all futexes are private. */
-# ifdef __ASSUME_PRIVATE_FUTEX
-# define __lll_private_flag(fl, private) \
- ((fl) | FUTEX_PRIVATE_FLAG)
-# else
-# define __lll_private_flag(fl, private) \
- ((fl) | THREAD_GETMEM (THREAD_SELF, header.private_futex))
-# endif
-#else
-# ifdef __ASSUME_PRIVATE_FUTEX
-# define __lll_private_flag(fl, private) \
- (((fl) | FUTEX_PRIVATE_FLAG) ^ (private))
-# else
-# define __lll_private_flag(fl, private) \
- (__builtin_constant_p (private) \
- ? ((private) == 0 \
- ? ((fl) | THREAD_GETMEM (THREAD_SELF, header.private_futex)) \
- : (fl)) \
- : ((fl) | (((private) ^ FUTEX_PRIVATE_FLAG) \
- & THREAD_GETMEM (THREAD_SELF, header.private_futex))))
-# endif
-#endif
-
-
-#define lll_futex_wait(futexp, val, private) \
- lll_futex_timed_wait(futexp, val, NULL, private)
-
-#define lll_futex_timed_wait(futexp, val, timespec, private) \
- ({ \
- INTERNAL_SYSCALL_DECL (__err); \
- long int __ret; \
- __ret = INTERNAL_SYSCALL (futex, __err, 4, (futexp), \
- __lll_private_flag (FUTEX_WAIT, private), \
- (val), (timespec)); \
- __ret; \
- })
-
-#define lll_futex_timed_wait_bitset(futexp, val, timespec, clockbit, private) \
- ({ \
- INTERNAL_SYSCALL_DECL (__err); \
- long int __ret; \
- int __op = FUTEX_WAIT_BITSET | clockbit; \
- __ret = INTERNAL_SYSCALL (futex, __err, 6, (futexp), \
- __lll_private_flag (__op, private), \
- (val), (timespec), NULL /* Unused. */, \
- FUTEX_BITSET_MATCH_ANY); \
- __ret; \
- })
-
-#define lll_futex_wake(futexp, nr, private) \
- ({ \
- INTERNAL_SYSCALL_DECL (__err); \
- long int __ret; \
- __ret = INTERNAL_SYSCALL (futex, __err, 4, (futexp), \
- __lll_private_flag (FUTEX_WAKE, private), \
- (nr), 0); \
- __ret; \
- })
-
-#define lll_robust_dead(futexv, private) \
- do \
- { \
- int *__futexp = &(futexv); \
- atomic_or (__futexp, FUTEX_OWNER_DIED); \
- lll_futex_wake (__futexp, 1, private); \
- } \
- while (0)
-
-/* Returns non-zero if error happened, zero if success. */
-#define lll_futex_requeue(futexp, nr_wake, nr_move, mutex, val, private) \
- ({ \
- INTERNAL_SYSCALL_DECL (__err); \
- long int __ret; \
- __ret = INTERNAL_SYSCALL (futex, __err, 6, (futexp), \
- __lll_private_flag (FUTEX_CMP_REQUEUE, private),\
- (nr_wake), (nr_move), (mutex), (val)); \
- INTERNAL_SYSCALL_ERROR_P (__ret, __err); \
- })
-
-
-/* Returns non-zero if error happened, zero if success. */
-#define lll_futex_wake_unlock(futexp, nr_wake, nr_wake2, futexp2, private) \
- ({ \
- INTERNAL_SYSCALL_DECL (__err); \
- long int __ret; \
- __ret = INTERNAL_SYSCALL (futex, __err, 6, (futexp), \
- __lll_private_flag (FUTEX_WAKE_OP, private), \
- (nr_wake), (nr_wake2), (futexp2), \
- FUTEX_OP_CLEAR_WAKE_IF_GT_ONE); \
- INTERNAL_SYSCALL_ERROR_P (__ret, __err); \
- })
-
-/* Priority Inheritance support. */
-#define lll_futex_wait_requeue_pi(futexp, val, mutex, private) \
- lll_futex_timed_wait_requeue_pi (futexp, val, NULL, 0, mutex, private)
-
-#define lll_futex_timed_wait_requeue_pi(futexp, val, timespec, clockbit, \
- mutex, private) \
- ({ \
- INTERNAL_SYSCALL_DECL (__err); \
- int __op = FUTEX_WAIT_REQUEUE_PI | clockbit; \
- \
- INTERNAL_SYSCALL (futex, __err, 5, (futexp), \
- __lll_private_flag (__op, private), \
- (val), (timespec), mutex); \
- })
-
-#define lll_futex_cmp_requeue_pi(futexp, nr_wake, nr_move, mutex, val, priv) \
- ({ \
- INTERNAL_SYSCALL_DECL (__err); \
- long int __ret; \
- \
- __ret = INTERNAL_SYSCALL (futex, __err, 6, (futexp), \
- __lll_private_flag (FUTEX_CMP_REQUEUE_PI, priv),\
- (nr_wake), (nr_move), (mutex), (val)); \
- INTERNAL_SYSCALL_ERROR_P (__ret, __err); \
- })
-
-
-#define lll_trylock(lock) \
- atomic_compare_and_exchange_val_acq(&(lock), 1, 0)
-
-#define lll_cond_trylock(lock) \
- atomic_compare_and_exchange_val_acq(&(lock), 2, 0)
-
-#define __lll_robust_trylock(futex, id) \
- (atomic_compare_and_exchange_val_acq (futex, id, 0) != 0)
-#define lll_robust_trylock(lock, id) \
- __lll_robust_trylock (&(lock), id)
-
-extern void __lll_lock_wait_private (int *futex) attribute_hidden;
-extern void __lll_lock_wait (int *futex, int private) attribute_hidden;
-extern int __lll_robust_lock_wait (int *futex, int private) attribute_hidden;
-
-#define __lll_lock(futex, private) \
- ((void) ({ \
- int *__futex = (futex); \
- if (__builtin_expect (atomic_compare_and_exchange_val_acq (__futex, \
- 1, 0), 0)) \
- { \
- if (__builtin_constant_p (private) && (private) == LLL_PRIVATE) \
- __lll_lock_wait_private (__futex); \
- else \
- __lll_lock_wait (__futex, private); \
- } \
- }))
-#define lll_lock(futex, private) __lll_lock (&(futex), private)
-
-
-#define __lll_robust_lock(futex, id, private) \
- ({ \
- int *__futex = (futex); \
- int __val = 0; \
- \
- if (__builtin_expect (atomic_compare_and_exchange_bool_acq (__futex, id, \
- 0), 0)) \
- __val = __lll_robust_lock_wait (__futex, private); \
- __val; \
- })
-#define lll_robust_lock(futex, id, private) \
- __lll_robust_lock (&(futex), id, private)
-
-
-#define __lll_cond_lock(futex, private) \
- ((void) ({ \
- int *__futex = (futex); \
- if (__builtin_expect (atomic_exchange_acq (__futex, 2), 0)) \
- __lll_lock_wait (__futex, private); \
- }))
-#define lll_cond_lock(futex, private) __lll_cond_lock (&(futex), private)
-
-
-#define lll_robust_cond_lock(futex, id, private) \
- __lll_robust_lock (&(futex), (id) | FUTEX_WAITERS, private)
-
-
-extern int __lll_timedlock_wait (int *futex, const struct timespec *,
- int private) attribute_hidden;
-extern int __lll_robust_timedlock_wait (int *futex, const struct timespec *,
- int private) attribute_hidden;
-
-#define __lll_timedlock(futex, abstime, private) \
- ({ \
- int *__futex = (futex); \
- int __val = 0; \
- \
- if (__builtin_expect (atomic_exchange_acq (__futex, 1), 0)) \
- __val = __lll_timedlock_wait (__futex, abstime, private); \
- __val; \
- })
-#define lll_timedlock(futex, abstime, private) \
- __lll_timedlock (&(futex), abstime, private)
-
-
-#define __lll_robust_timedlock(futex, abstime, id, private) \
- ({ \
- int *__futex = (futex); \
- int __val = 0; \
- \
- if (__builtin_expect (atomic_compare_and_exchange_bool_acq (__futex, id, \
- 0), 0)) \
- __val = __lll_robust_timedlock_wait (__futex, abstime, private); \
- __val; \
- })
-#define lll_robust_timedlock(futex, abstime, id, private) \
- __lll_robust_timedlock (&(futex), abstime, id, private)
-
-
-#define __lll_unlock(futex, private) \
- (void) \
- ({ int *__futex = (futex); \
- int __oldval = atomic_exchange_rel (__futex, 0); \
- if (__builtin_expect (__oldval > 1, 0)) \
- lll_futex_wake (__futex, 1, private); \
- })
-#define lll_unlock(futex, private) __lll_unlock(&(futex), private)
-
-
-#define __lll_robust_unlock(futex, private) \
- (void) \
- ({ int *__futex = (futex); \
- int __oldval = atomic_exchange_rel (__futex, 0); \
- if (__builtin_expect (__oldval & FUTEX_WAITERS, 0)) \
- lll_futex_wake (__futex, 1, private); \
- })
-#define lll_robust_unlock(futex, private) \
- __lll_robust_unlock(&(futex), private)
-
-
-#define lll_islocked(futex) \
- (futex != 0)
-
-
-/* Our internal lock implementation is identical to the binary-compatible
- mutex implementation. */
-
-/* Initializers for lock. */
-#define LLL_LOCK_INITIALIZER (0)
-#define LLL_LOCK_INITIALIZER_LOCKED (1)
-
-/* The states of a lock are:
- 0 - untaken
- 1 - taken by one user
- >1 - taken by more users */
-
-/* The kernel notifies a process which uses CLONE_CHILD_CLEARTID via futex
- wakeup when the clone terminates. The memory location contains the
- thread ID while the clone is running and is reset to zero
- afterwards. */
-#define lll_wait_tid(tid) \
- do { \
- __typeof (tid) __tid; \
- while ((__tid = (tid)) != 0) \
- lll_futex_wait (&(tid), __tid, LLL_SHARED);\
- } while (0)
-
-extern int __lll_timedwait_tid (int *, const struct timespec *)
- attribute_hidden;
-
-#define lll_timedwait_tid(tid, abstime) \
- ({ \
- int __res = 0; \
- if ((tid) != 0) \
- __res = __lll_timedwait_tid (&(tid), (abstime)); \
- __res; \
- })
-
-#endif /* lowlevellock.h */
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/nptl-aeabi_unwind_cpp_pr1.c b/ports/sysdeps/unix/sysv/linux/arm/nptl/nptl-aeabi_unwind_cpp_pr1.c
deleted file mode 100644
index 7b83522437..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/nptl-aeabi_unwind_cpp_pr1.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <aeabi_unwind_cpp_pr1.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/pt-vfork.S b/ports/sysdeps/unix/sysv/linux/arm/nptl/pt-vfork.S
deleted file mode 100644
index 7eff08e720..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/pt-vfork.S
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Copyright (C) 2005-2014 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 <tcb-offsets.h>
-
-/* Save the PID value. */
-#define SAVE_PID \
- GET_TLS (r2); \
- NEGOFF_ADJ_BASE2 (r2, r0, PID_OFFSET); /* Save the TLS addr in r2. */ \
- ldr r3, NEGOFF_OFF1 (r2, PID_OFFSET); /* Load the saved PID. */ \
- rsb r0, r3, #0; /* Negate it. */ \
- str r0, NEGOFF_OFF1 (r2, PID_OFFSET); /* Store the temp PID. */
-
-/* Restore the old PID value in the parent. */
-#define RESTORE_PID \
- cmp r0, #0; /* If we are the parent... */ \
- it ne; \
- strne r3, NEGOFF_OFF1 (r2, PID_OFFSET); /* restore the saved PID. */
-
-#include "../vfork.S"
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/pthread_once.c b/ports/sysdeps/unix/sysv/linux/arm/nptl/pthread_once.c
deleted file mode 100644
index a063149925..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/pthread_once.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/* Copyright (C) 2004-2014 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 "pthreadP.h"
-#include <lowlevellock.h>
-
-unsigned long int __fork_generation attribute_hidden;
-
-static void
-clear_once_control (void *arg)
-{
- pthread_once_t *once_control = (pthread_once_t *) arg;
-
- *once_control = 0;
- lll_futex_wake (once_control, INT_MAX, LLL_PRIVATE);
-}
-
-int
-__pthread_once (pthread_once_t *once_control, void (*init_routine) (void))
-{
- for (;;)
- {
- int oldval;
- int newval;
-
- /* Pseudo code:
- newval = __fork_generation | 1;
- oldval = *once_control;
- if ((oldval & 2) == 0)
- *once_control = newval;
- Do this atomically.
- */
- do
- {
- newval = __fork_generation | 1;
- oldval = *once_control;
- if (oldval & 2)
- break;
- } while (atomic_compare_and_exchange_val_acq (once_control, newval, oldval) != oldval);
-
- /* Check if the initializer has already been done. */
- if ((oldval & 2) != 0)
- return 0;
-
- /* Check if another thread already runs the initializer. */
- if ((oldval & 1) == 0)
- break;
-
- /* Check whether the initializer execution was interrupted by a fork. */
- if (oldval != newval)
- break;
-
- /* Same generation, some other thread was faster. Wait. */
- lll_futex_wait (once_control, oldval, LLL_PRIVATE);
- }
-
- /* This thread is the first here. Do the initialization.
- Register a cleanup handler so that in case the thread gets
- interrupted the initialization can be restarted. */
- pthread_cleanup_push (clear_once_control, once_control);
-
- init_routine ();
-
- pthread_cleanup_pop (0);
-
- /* Say that the initialisation is done. */
- *once_control = __fork_generation | 2;
-
- /* Wake up all other threads. */
- lll_futex_wake (once_control, INT_MAX, LLL_PRIVATE);
-
- return 0;
-}
-weak_alias (__pthread_once, pthread_once)
-hidden_def (__pthread_once)
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/rt-aeabi_unwind_cpp_pr1.c b/ports/sysdeps/unix/sysv/linux/arm/nptl/rt-aeabi_unwind_cpp_pr1.c
deleted file mode 100644
index 7b83522437..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/rt-aeabi_unwind_cpp_pr1.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <aeabi_unwind_cpp_pr1.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h b/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h
deleted file mode 100644
index 118e6c3466..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h
+++ /dev/null
@@ -1,242 +0,0 @@
-/* Copyright (C) 2003-2014 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>
-#include <tls.h>
-#ifndef __ASSEMBLER__
-# include <nptl/pthreadP.h>
-#endif
-
-#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
-
-/* NOTE: We do mark syscalls with unwind annotations, for the benefit of
- cancellation; but they're really only accurate at the point of the
- syscall. The ARM unwind directives are not rich enough without adding
- a custom personality function. */
-
-# undef PSEUDO
-# define PSEUDO(name, syscall_name, args) \
- .text; \
- ENTRY (__##syscall_name##_nocancel); \
- CFI_SECTIONS; \
- DO_CALL (syscall_name, args); \
- cmn r0, $4096; \
- PSEUDO_RET; \
- END (__##syscall_name##_nocancel); \
- ENTRY (name); \
- SINGLE_THREAD_P; \
- DOARGS_##args; \
- bne .Lpseudo_cancel; \
- cfi_remember_state; \
- ldr r7, =SYS_ify (syscall_name); \
- swi 0x0; \
- UNDOARGS_##args; \
- cmn r0, $4096; \
- PSEUDO_RET; \
- cfi_restore_state; \
- .Lpseudo_cancel: \
- .fnstart; /* matched by the .fnend in UNDOARGS below. */ \
- DOCARGS_##args; /* save syscall args etc. around CENABLE. */ \
- CENABLE; \
- mov ip, r0; /* put mask in safe place. */ \
- UNDOCARGS_##args; /* restore syscall args. */ \
- ldr r7, =SYS_ify (syscall_name); \
- swi 0x0; /* do the call. */ \
- mov r7, r0; /* save syscall return value. */ \
- mov r0, ip; /* get mask back. */ \
- CDISABLE; \
- mov r0, r7; /* retrieve return value. */ \
- RESTORE_LR_##args; \
- UNDOARGS_##args; \
- cmn r0, $4096
-
-/* DOARGS pushes eight bytes on the stack for five arguments, twelve bytes for
- six arguments, and four bytes for fewer. In order to preserve doubleword
- alignment, sometimes we must save an extra register. */
-
-# define RESTART_UNWIND \
- .fnend; \
- .fnstart; \
- .save {r7}; \
- .save {lr}
-
-# define DOCARGS_0 \
- .save {r7}; \
- push {lr}; \
- cfi_adjust_cfa_offset (4); \
- cfi_rel_offset (lr, 0); \
- .save {lr}
-# define UNDOCARGS_0
-# define RESTORE_LR_0 \
- pop {lr}; \
- cfi_adjust_cfa_offset (-4); \
- cfi_restore (lr)
-
-# define DOCARGS_1 \
- .save {r7}; \
- push {r0, r1, lr}; \
- cfi_adjust_cfa_offset (12); \
- cfi_rel_offset (lr, 8); \
- .save {lr}; \
- .pad #8
-# define UNDOCARGS_1 \
- ldr r0, [sp], #8; \
- cfi_adjust_cfa_offset (-8); \
- RESTART_UNWIND
-# define RESTORE_LR_1 \
- RESTORE_LR_0
-
-# define DOCARGS_2 \
- .save {r7}; \
- push {r0, r1, lr}; \
- cfi_adjust_cfa_offset (12); \
- cfi_rel_offset (lr, 8); \
- .save {lr}; \
- .pad #8
-# define UNDOCARGS_2 \
- pop {r0, r1}; \
- cfi_adjust_cfa_offset (-8); \
- RESTART_UNWIND
-# define RESTORE_LR_2 \
- RESTORE_LR_0
-
-# define DOCARGS_3 \
- .save {r7}; \
- push {r0, r1, r2, r3, lr}; \
- cfi_adjust_cfa_offset (20); \
- cfi_rel_offset (lr, 16); \
- .save {lr}; \
- .pad #16
-# define UNDOCARGS_3 \
- pop {r0, r1, r2, r3}; \
- cfi_adjust_cfa_offset (-16); \
- RESTART_UNWIND
-# define RESTORE_LR_3 \
- RESTORE_LR_0
-
-# define DOCARGS_4 \
- .save {r7}; \
- push {r0, r1, r2, r3, lr}; \
- cfi_adjust_cfa_offset (20); \
- cfi_rel_offset (lr, 16); \
- .save {lr}; \
- .pad #16
-# define UNDOCARGS_4 \
- pop {r0, r1, r2, r3}; \
- cfi_adjust_cfa_offset (-16); \
- RESTART_UNWIND
-# define RESTORE_LR_4 \
- RESTORE_LR_0
-
-/* r4 is only stmfd'ed for correct stack alignment. */
-# define DOCARGS_5 \
- .save {r4, r7}; \
- push {r0, r1, r2, r3, r4, lr}; \
- cfi_adjust_cfa_offset (24); \
- cfi_rel_offset (lr, 20); \
- .save {lr}; \
- .pad #20
-# define UNDOCARGS_5 \
- pop {r0, r1, r2, r3}; \
- cfi_adjust_cfa_offset (-16); \
- .fnend; \
- .fnstart; \
- .save {r4, r7}; \
- .save {lr}; \
- .pad #4
-# define RESTORE_LR_5 \
- pop {r4, lr}; \
- cfi_adjust_cfa_offset (-8); \
- /* r4 will be marked as restored later. */ \
- cfi_restore (lr)
-
-# define DOCARGS_6 \
- .save {r4, r5, r7}; \
- push {r0, r1, r2, r3, lr}; \
- cfi_adjust_cfa_offset (20); \
- cfi_rel_offset (lr, 16); \
- .save {lr}; \
- .pad #16
-# define UNDOCARGS_6 \
- pop {r0, r1, r2, r3}; \
- cfi_adjust_cfa_offset (-16); \
- .fnend; \
- .fnstart; \
- .save {r4, r5, r7}; \
- .save {lr};
-# define RESTORE_LR_6 \
- RESTORE_LR_0
-
-# ifdef IS_IN_libpthread
-# define CENABLE bl PLTJMP(__pthread_enable_asynccancel)
-# define CDISABLE bl PLTJMP(__pthread_disable_asynccancel)
-# define __local_multiple_threads __pthread_multiple_threads
-# elif !defined NOT_IN_libc
-# define CENABLE bl PLTJMP(__libc_enable_asynccancel)
-# define CDISABLE bl PLTJMP(__libc_disable_asynccancel)
-# define __local_multiple_threads __libc_multiple_threads
-# elif defined IS_IN_librt
-# define CENABLE bl PLTJMP(__librt_enable_asynccancel)
-# define CDISABLE bl PLTJMP(__librt_disable_asynccancel)
-# else
-# error Unsupported library
-# endif
-
-# if defined IS_IN_libpthread || !defined NOT_IN_libc
-# ifndef __ASSEMBLER__
-extern int __local_multiple_threads attribute_hidden;
-# define SINGLE_THREAD_P __builtin_expect (__local_multiple_threads == 0, 1)
-# else
-# define SINGLE_THREAD_P \
- LDST_PCREL(ldr, ip, ip, __local_multiple_threads); \
- teq ip, #0
-# endif
-# else
-/* There is no __local_multiple_threads for librt, so use the TCB. */
-# ifndef __ASSEMBLER__
-# define SINGLE_THREAD_P \
- __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
- header.multiple_threads) == 0, 1)
-# else
-# define SINGLE_THREAD_P \
- push {r0, lr}; \
- cfi_adjust_cfa_offset (8); \
- cfi_rel_offset (lr, 4); \
- GET_TLS (lr); \
- NEGOFF_ADJ_BASE (r0, MULTIPLE_THREADS_OFFSET); \
- ldr ip, NEGOFF_OFF1 (r0, MULTIPLE_THREADS_OFFSET); \
- pop {r0, lr}; \
- cfi_adjust_cfa_offset (-8); \
- cfi_restore (lr); \
- teq ip, #0
-# define SINGLE_THREAD_P_PIC(x) SINGLE_THREAD_P
-# endif
-# endif
-
-#elif !defined __ASSEMBLER__
-
-/* For rtld, et cetera. */
-# define SINGLE_THREAD_P 1
-# define NO_CANCELLATION 1
-
-#endif
-
-#ifndef __ASSEMBLER__
-# define RTLD_SINGLE_THREAD_P \
- __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
- header.multiple_threads) == 0, 1)
-#endif
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/unwind-forcedunwind.c b/ports/sysdeps/unix/sysv/linux/arm/nptl/unwind-forcedunwind.c
deleted file mode 100644
index 6ccd9b43a1..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/unwind-forcedunwind.c
+++ /dev/null
@@ -1,157 +0,0 @@
-/* Copyright (C) 2003-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Jakub Jelinek <jakub@redhat.com>.
-
- 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 <dlfcn.h>
-#include <stdio.h>
-#include <unwind.h>
-#include <pthreadP.h>
-
-static void *libgcc_s_handle;
-static void (*libgcc_s_resume) (struct _Unwind_Exception *exc);
-static _Unwind_Reason_Code (*libgcc_s_personality)
- (_Unwind_State, struct _Unwind_Exception *, struct _Unwind_Context *);
-static _Unwind_Reason_Code (*libgcc_s_forcedunwind)
- (struct _Unwind_Exception *, _Unwind_Stop_Fn, void *);
-static _Unwind_Word (*libgcc_s_getcfa) (struct _Unwind_Context *);
-
-void
-__attribute_noinline__
-pthread_cancel_init (void)
-{
- void *resume, *personality, *forcedunwind, *getcfa;
- void *handle;
-
- if (__builtin_expect (libgcc_s_handle != NULL, 1))
- {
- /* Force gcc to reload all values. */
- asm volatile ("" ::: "memory");
- return;
- }
-
- handle = __libc_dlopen ("libgcc_s.so.1");
-
- if (handle == NULL
- || (resume = __libc_dlsym (handle, "_Unwind_Resume")) == NULL
- || (personality = __libc_dlsym (handle, "__gcc_personality_v0")) == NULL
- || (forcedunwind = __libc_dlsym (handle, "_Unwind_ForcedUnwind"))
- == NULL
- || (getcfa = __libc_dlsym (handle, "_Unwind_GetCFA")) == NULL
-#ifdef ARCH_CANCEL_INIT
- || ARCH_CANCEL_INIT (handle)
-#endif
- )
- __libc_fatal ("libgcc_s.so.1 must be installed for pthread_cancel to work\n");
-
- libgcc_s_resume = resume;
- libgcc_s_personality = personality;
- libgcc_s_forcedunwind = forcedunwind;
- libgcc_s_getcfa = getcfa;
- /* Make sure libgcc_s_getcfa is written last. Otherwise,
- pthread_cancel_init might return early even when the pointer the
- caller is interested in is not initialized yet. */
- atomic_write_barrier ();
- libgcc_s_handle = handle;
-}
-
-void
-__libc_freeres_fn_section
-__unwind_freeres (void)
-{
- void *handle = libgcc_s_handle;
- if (handle != NULL)
- {
- libgcc_s_handle = NULL;
- __libc_dlclose (handle);
- }
-}
-
-/* It's vitally important that _Unwind_Resume not have a stack frame; the
- ARM unwinder relies on register state at entrance. So we write this in
- assembly. */
-
-#define STR1(S) #S
-#define STR(S) STR1(S)
-
-asm (
-" .globl _Unwind_Resume\n"
-" .type _Unwind_Resume, %function\n"
-"_Unwind_Resume:\n"
-" .cfi_sections .debug_frame\n"
-" " CFI_STARTPROC "\n"
-" push {r4, r5, r6, lr}\n"
-" " CFI_ADJUST_CFA_OFFSET (16)" \n"
-" " CFI_REL_OFFSET (r4, 0) "\n"
-" " CFI_REL_OFFSET (r5, 4) "\n"
-" " CFI_REL_OFFSET (r6, 8) "\n"
-" " CFI_REL_OFFSET (lr, 12) "\n"
-" " CFI_REMEMBER_STATE "\n"
-" ldr r4, 1f\n"
-" ldr r5, 2f\n"
-"3: add r4, pc, r4\n"
-" ldr r3, [r4, r5]\n"
-" mov r6, r0\n"
-" cmp r3, #0\n"
-" beq 4f\n"
-"5: mov r0, r6\n"
-" pop {r4, r5, r6, lr}\n"
-" " CFI_ADJUST_CFA_OFFSET (-16) "\n"
-" " CFI_RESTORE (r4) "\n"
-" " CFI_RESTORE (r5) "\n"
-" " CFI_RESTORE (r6) "\n"
-" " CFI_RESTORE (lr) "\n"
-" bx r3\n"
-" " CFI_RESTORE_STATE "\n"
-"4: bl pthread_cancel_init\n"
-" ldr r3, [r4, r5]\n"
-" b 5b\n"
-" " CFI_ENDPROC "\n"
-" .align 2\n"
-"1: .word _GLOBAL_OFFSET_TABLE_ - 3b - " STR (PC_OFS) "\n"
-"2: .word libgcc_s_resume(GOTOFF)\n"
-" .size _Unwind_Resume, .-_Unwind_Resume\n"
-);
-
-_Unwind_Reason_Code
-__gcc_personality_v0 (_Unwind_State state,
- struct _Unwind_Exception *ue_header,
- struct _Unwind_Context *context)
-{
- if (__builtin_expect (libgcc_s_personality == NULL, 0))
- pthread_cancel_init ();
-
- return libgcc_s_personality (state, ue_header, context);
-}
-
-_Unwind_Reason_Code
-_Unwind_ForcedUnwind (struct _Unwind_Exception *exc, _Unwind_Stop_Fn stop,
- void *stop_argument)
-{
- if (__builtin_expect (libgcc_s_forcedunwind == NULL, 0))
- pthread_cancel_init ();
-
- return libgcc_s_forcedunwind (exc, stop, stop_argument);
-}
-
-_Unwind_Word
-_Unwind_GetCFA (struct _Unwind_Context *context)
-{
- if (__builtin_expect (libgcc_s_getcfa == NULL, 0))
- pthread_cancel_init ();
-
- return libgcc_s_getcfa (context);
-}
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/unwind-resume.c b/ports/sysdeps/unix/sysv/linux/arm/nptl/unwind-resume.c
deleted file mode 100644
index bff3e2b4f1..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/unwind-resume.c
+++ /dev/null
@@ -1,100 +0,0 @@
-/* Copyright (C) 2003-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Jakub Jelinek <jakub@redhat.com>.
-
- 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 <dlfcn.h>
-#include <stdio.h>
-#include <unwind.h>
-
-static void (*libgcc_s_resume) (struct _Unwind_Exception *exc);
-static _Unwind_Reason_Code (*libgcc_s_personality)
- (_Unwind_State, struct _Unwind_Exception *, struct _Unwind_Context *);
-
-static void init (void) __attribute_used__;
-
-static void
-init (void)
-{
- void *resume, *personality;
- void *handle;
-
- handle = __libc_dlopen ("libgcc_s.so.1");
-
- if (handle == NULL
- || (resume = __libc_dlsym (handle, "_Unwind_Resume")) == NULL
- || (personality = __libc_dlsym (handle, "__gcc_personality_v0")) == NULL)
- __libc_fatal ("libgcc_s.so.1 must be installed for pthread_cancel to work\n");
-
- libgcc_s_resume = resume;
- libgcc_s_personality = personality;
-}
-
-/* It's vitally important that _Unwind_Resume not have a stack frame; the
- ARM unwinder relies on register state at entrance. So we write this in
- assembly. */
-
-#define STR1(S) #S
-#define STR(S) STR1(S)
-
-asm (
-" .globl _Unwind_Resume\n"
-" .type _Unwind_Resume, %function\n"
-"_Unwind_Resume:\n"
-" .cfi_sections .debug_frame\n"
-" " CFI_STARTPROC "\n"
-" push {r4, r5, r6, lr}\n"
-" " CFI_ADJUST_CFA_OFFSET (16)" \n"
-" " CFI_REL_OFFSET (r4, 0) "\n"
-" " CFI_REL_OFFSET (r5, 4) "\n"
-" " CFI_REL_OFFSET (r6, 8) "\n"
-" " CFI_REL_OFFSET (lr, 12) "\n"
-" " CFI_REMEMBER_STATE "\n"
-" ldr r4, 1f\n"
-" ldr r5, 2f\n"
-"3: add r4, pc, r4\n"
-" ldr r3, [r4, r5]\n"
-" mov r6, r0\n"
-" cmp r3, #0\n"
-" beq 4f\n"
-"5: mov r0, r6\n"
-" pop {r4, r5, r6, lr}\n"
-" " CFI_ADJUST_CFA_OFFSET (-16) "\n"
-" " CFI_RESTORE (r4) "\n"
-" " CFI_RESTORE (r5) "\n"
-" " CFI_RESTORE (r6) "\n"
-" " CFI_RESTORE (lr) "\n"
-" bx r3\n"
-" " CFI_RESTORE_STATE "\n"
-"4: bl init\n"
-" ldr r3, [r4, r5]\n"
-" b 5b\n"
-" " CFI_ENDPROC "\n"
-" .align 2\n"
-"1: .word _GLOBAL_OFFSET_TABLE_ - 3b - " STR (PC_OFS) "\n"
-"2: .word libgcc_s_resume(GOTOFF)\n"
-" .size _Unwind_Resume, .-_Unwind_Resume\n"
-);
-
-_Unwind_Reason_Code
-__gcc_personality_v0 (_Unwind_State state,
- struct _Unwind_Exception *ue_header,
- struct _Unwind_Context *context)
-{
- if (__builtin_expect (libgcc_s_personality == NULL, 0))
- init ();
- return libgcc_s_personality (state, ue_header, context);
-}
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/unwind.h b/ports/sysdeps/unix/sysv/linux/arm/nptl/unwind.h
deleted file mode 100644
index 7b71817e89..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/unwind.h
+++ /dev/null
@@ -1,278 +0,0 @@
-/* Header file for the ARM EABI unwinder
- Copyright (C) 2003-2014 Free Software Foundation, Inc.
- Contributed by Paul Brook
-
- This file is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the
- Free Software Foundation; either version 2, or (at your option) any
- later version.
-
- In addition to the permissions in the GNU General Public License, the
- Free Software Foundation gives you unlimited permission to link the
- compiled version of this file into combinations with other programs,
- and to distribute those combinations without any restriction coming
- from the use of this file. (The General Public License restrictions
- do apply in other respects; for example, they cover modification of
- the file, and distribution when not linked into a combine
- executable.)
-
- This file 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
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see
- <http://www.gnu.org/licenses/>. */
-
-/* Language-independent unwinder header public defines. This contains both
- ABI defined objects, and GNU support routines. */
-
-#ifndef UNWIND_ARM_H
-#define UNWIND_ARM_H
-
-#define __ARM_EABI_UNWINDER__ 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
- typedef unsigned _Unwind_Word __attribute__((__mode__(__word__)));
- typedef signed _Unwind_Sword __attribute__((__mode__(__word__)));
- typedef unsigned _Unwind_Ptr __attribute__((__mode__(__pointer__)));
- typedef unsigned _Unwind_Internal_Ptr __attribute__((__mode__(__pointer__)));
- typedef _Unwind_Word _uw;
- typedef unsigned _uw64 __attribute__((mode(__DI__)));
- typedef unsigned _uw16 __attribute__((mode(__HI__)));
- typedef unsigned _uw8 __attribute__((mode(__QI__)));
-
- typedef enum
- {
- _URC_OK = 0, /* operation completed successfully */
- _URC_FOREIGN_EXCEPTION_CAUGHT = 1,
- _URC_END_OF_STACK = 5,
- _URC_HANDLER_FOUND = 6,
- _URC_INSTALL_CONTEXT = 7,
- _URC_CONTINUE_UNWIND = 8,
- _URC_FAILURE = 9 /* unspecified failure of some kind */
- }
- _Unwind_Reason_Code;
-
- typedef enum
- {
- _US_VIRTUAL_UNWIND_FRAME = 0,
- _US_UNWIND_FRAME_STARTING = 1,
- _US_UNWIND_FRAME_RESUME = 2,
- _US_ACTION_MASK = 3,
- _US_FORCE_UNWIND = 8,
- _US_END_OF_STACK = 16
- }
- _Unwind_State;
-
- /* Provided only for for compatibility with existing code. */
- typedef int _Unwind_Action;
-#define _UA_SEARCH_PHASE 1
-#define _UA_CLEANUP_PHASE 2
-#define _UA_HANDLER_FRAME 4
-#define _UA_FORCE_UNWIND 8
-#define _UA_END_OF_STACK 16
-#define _URC_NO_REASON _URC_OK
-
- typedef struct _Unwind_Control_Block _Unwind_Control_Block;
- typedef struct _Unwind_Context _Unwind_Context;
- typedef _uw _Unwind_EHT_Header;
-
-
- /* UCB: */
-
- struct _Unwind_Control_Block
- {
-#ifdef _LIBC
- /* For the benefit of code which assumes this is a scalar. All
- glibc ever does is clear it. */
- _uw64 exception_class;
-#else
- char exception_class[8];
-#endif
- void (*exception_cleanup)(_Unwind_Reason_Code, _Unwind_Control_Block *);
- /* Unwinder cache, private fields for the unwinder's use */
- struct
- {
- _uw reserved1; /* Forced unwind stop fn, 0 if not forced */
- _uw reserved2; /* Personality routine address */
- _uw reserved3; /* Saved callsite address */
- _uw reserved4; /* Forced unwind stop arg */
- _uw reserved5;
- }
- unwinder_cache;
- /* Propagation barrier cache (valid after phase 1): */
- struct
- {
- _uw sp;
- _uw bitpattern[5];
- }
- barrier_cache;
- /* Cleanup cache (preserved over cleanup): */
- struct
- {
- _uw bitpattern[4];
- }
- cleanup_cache;
- /* Pr cache (for pr's benefit): */
- struct
- {
- _uw fnstart; /* function start address */
- _Unwind_EHT_Header *ehtp; /* pointer to EHT entry header word */
- _uw additional; /* additional data */
- _uw reserved1;
- }
- pr_cache;
- long long int :0; /* Force alignment to 8-byte boundary */
- };
-
- /* Virtual Register Set*/
-
- typedef enum
- {
- _UVRSC_CORE = 0, /* integer register */
- _UVRSC_VFP = 1, /* vfp */
- _UVRSC_FPA = 2, /* fpa */
- _UVRSC_WMMXD = 3, /* Intel WMMX data register */
- _UVRSC_WMMXC = 4 /* Intel WMMX control register */
- }
- _Unwind_VRS_RegClass;
-
- typedef enum
- {
- _UVRSD_UINT32 = 0,
- _UVRSD_VFPX = 1,
- _UVRSD_FPAX = 2,
- _UVRSD_UINT64 = 3,
- _UVRSD_FLOAT = 4,
- _UVRSD_DOUBLE = 5
- }
- _Unwind_VRS_DataRepresentation;
-
- typedef enum
- {
- _UVRSR_OK = 0,
- _UVRSR_NOT_IMPLEMENTED = 1,
- _UVRSR_FAILED = 2
- }
- _Unwind_VRS_Result;
-
- /* Frame unwinding state. */
- typedef struct
- {
- /* The current word (bytes packed msb first). */
- _uw data;
- /* Pointer to the next word of data. */
- _uw *next;
- /* The number of bytes left in this word. */
- _uw8 bytes_left;
- /* The number of words pointed to by ptr. */
- _uw8 words_left;
- }
- __gnu_unwind_state;
-
- typedef _Unwind_Reason_Code (*personality_routine) (_Unwind_State,
- _Unwind_Control_Block *, _Unwind_Context *);
-
- _Unwind_VRS_Result _Unwind_VRS_Set(_Unwind_Context *, _Unwind_VRS_RegClass,
- _uw, _Unwind_VRS_DataRepresentation,
- void *);
-
- _Unwind_VRS_Result _Unwind_VRS_Get(_Unwind_Context *, _Unwind_VRS_RegClass,
- _uw, _Unwind_VRS_DataRepresentation,
- void *);
-
- _Unwind_VRS_Result _Unwind_VRS_Pop(_Unwind_Context *, _Unwind_VRS_RegClass,
- _uw, _Unwind_VRS_DataRepresentation);
-
-
- /* Support functions for the PR. */
-#define _Unwind_Exception _Unwind_Control_Block
- typedef char _Unwind_Exception_Class[8];
-
- void * _Unwind_GetLanguageSpecificData (_Unwind_Context *);
- _Unwind_Ptr _Unwind_GetRegionStart (_Unwind_Context *);
-
- /* These two should never be used. */
- _Unwind_Ptr _Unwind_GetDataRelBase (_Unwind_Context *);
- _Unwind_Ptr _Unwind_GetTextRelBase (_Unwind_Context *);
-
- /* Interface functions: */
- _Unwind_Reason_Code _Unwind_RaiseException(_Unwind_Control_Block *ucbp);
- void __attribute__((noreturn)) _Unwind_Resume(_Unwind_Control_Block *ucbp);
- _Unwind_Reason_Code _Unwind_Resume_or_Rethrow (_Unwind_Control_Block *ucbp);
-
- typedef _Unwind_Reason_Code (*_Unwind_Stop_Fn)
- (int, _Unwind_Action, _Unwind_Exception_Class,
- _Unwind_Control_Block *, struct _Unwind_Context *, void *);
- _Unwind_Reason_Code _Unwind_ForcedUnwind (_Unwind_Control_Block *,
- _Unwind_Stop_Fn, void *);
- _Unwind_Word _Unwind_GetCFA (struct _Unwind_Context *);
- void _Unwind_Complete(_Unwind_Control_Block *ucbp);
- void _Unwind_DeleteException (_Unwind_Exception *);
-
- _Unwind_Reason_Code __gnu_unwind_frame (_Unwind_Control_Block *,
- _Unwind_Context *);
- _Unwind_Reason_Code __gnu_unwind_execute (_Unwind_Context *,
- __gnu_unwind_state *);
-
- /* Decode an R_ARM_TARGET2 relocation. */
- static inline _Unwind_Word
- _Unwind_decode_target2 (_Unwind_Word ptr)
- {
- _Unwind_Word tmp;
-
- tmp = *(_Unwind_Word *) ptr;
- /* Zero values are always NULL. */
- if (!tmp)
- return 0;
-
-#if defined(linux) || defined(__NetBSD__)
- /* Pc-relative indirect. */
- tmp += ptr;
- tmp = *(_Unwind_Word *) tmp;
-#elif defined(__symbian__)
- /* Absolute pointer. Nothing more to do. */
-#else
- /* Pc-relative pointer. */
- tmp += ptr;
-#endif
- return tmp;
- }
-
- 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;
- }
-
- /* Return the address of the instruction, not the actual IP value. */
-#define _Unwind_GetIP(context) \
- (_Unwind_GetGR (context, 15) & ~(_Unwind_Word)1)
-
- static inline void
- _Unwind_SetGR (_Unwind_Context *context, int regno, _Unwind_Word val)
- {
- _Unwind_VRS_Set (context, _UVRSC_CORE, regno, _UVRSD_UINT32, &val);
- }
-
- /* The dwarf unwinder doesn't understand arm/thumb state. We assume the
- landing pad uses the same instruction set as the call site. */
-#define _Unwind_SetIP(context, val) \
- _Unwind_SetGR (context, 15, val | (_Unwind_GetGR (context, 15) & 1))
-
-typedef _Unwind_Reason_Code (*_Unwind_Trace_Fn)
- (struct _Unwind_Context *, void *);
-
-extern _Unwind_Reason_Code _Unwind_Backtrace (_Unwind_Trace_Fn, void *);
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-#endif /* defined UNWIND_ARM_H */
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/vfork.S b/ports/sysdeps/unix/sysv/linux/arm/nptl/vfork.S
deleted file mode 100644
index 2e942beba7..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/vfork.S
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Copyright (C) 2005-2014 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 <tcb-offsets.h>
-
-/* Save the PID value. */
-#define SAVE_PID \
- GET_TLS (r2); \
- NEGOFF_ADJ_BASE2 (r2, r0, PID_OFFSET); /* Save the TLS addr in r2. */ \
- ldr r3, NEGOFF_OFF1 (r2, PID_OFFSET); /* Load the saved PID. */ \
- rsbs r0, r3, #0; /* Negate it. */ \
- it eq; \
- moveq r0, #0x80000000; /* Use 0x80000000 if it was 0. */ \
- str r0, NEGOFF_OFF1 (r2, PID_OFFSET); /* Store the temp PID. */
-
-/* Restore the old PID value in the parent. */
-#define RESTORE_PID \
- cmp r0, #0; /* If we are the parent... */ \
- it ne; \
- strne r3, NEGOFF_OFF1 (r2, PID_OFFSET); /* restore the saved PID. */
-
-#include "../vfork.S"
diff --git a/ports/sysdeps/unix/sysv/linux/arm/oldgetrlimit.c b/ports/sysdeps/unix/sysv/linux/arm/oldgetrlimit.c
deleted file mode 100644
index 6e25b021ab..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/oldgetrlimit.c
+++ /dev/null
@@ -1 +0,0 @@
-/* Empty. */
diff --git a/ports/sysdeps/unix/sysv/linux/arm/oldgetrlimit64.c b/ports/sysdeps/unix/sysv/linux/arm/oldgetrlimit64.c
deleted file mode 100644
index 4c27e957bf..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/oldgetrlimit64.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/oldgetrlimit64.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/oldsetrlimit.c b/ports/sysdeps/unix/sysv/linux/arm/oldsetrlimit.c
deleted file mode 100644
index 6e25b021ab..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/oldsetrlimit.c
+++ /dev/null
@@ -1 +0,0 @@
-/* Empty. */
diff --git a/ports/sysdeps/unix/sysv/linux/arm/posix_fadvise.c b/ports/sysdeps/unix/sysv/linux/arm/posix_fadvise.c
deleted file mode 100644
index 281ff5b4ac..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/posix_fadvise.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright (C) 2005-2014 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 <fcntl.h>
-
-int __posix_fadvise64_l64 (int fd, off64_t offset, off64_t len, int advise);
-
-/* Advice the system about the expected behaviour of the application with
- respect to the file associated with FD. */
-
-int
-posix_fadvise (int fd, off_t offset, off_t len, int advise)
-{
- /* ARM only has a syscall for fadvise64_64. */
- return __posix_fadvise64_l64 (fd, offset, len, advise);
-}
diff --git a/ports/sysdeps/unix/sysv/linux/arm/posix_fadvise64.c b/ports/sysdeps/unix/sysv/linux/arm/posix_fadvise64.c
deleted file mode 100644
index 7c14eec8f8..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/posix_fadvise64.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/* Copyright (C) 2003-2014 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>
-#include <fcntl.h>
-#include <sysdep.h>
-
-int __posix_fadvise64_l64 (int fd, off64_t offset, off64_t len, int advise);
-int __posix_fadvise64_l32 (int fd, off64_t offset, size_t len, int advise);
-
-/* Advice the system about the expected behaviour of the application with
- respect to the file associated with FD. */
-
-int
-__posix_fadvise64_l64 (int fd, off64_t offset, off64_t len, int advise)
-{
- INTERNAL_SYSCALL_DECL (err);
- int ret = INTERNAL_SYSCALL (arm_fadvise64_64, err, 6, fd, advise,
- __LONG_LONG_PAIR ((long)(offset >> 32), (long)offset),
- __LONG_LONG_PAIR ((long)(len >> 32), (long)len));
- if (!INTERNAL_SYSCALL_ERROR_P (ret, err))
- return 0;
- return INTERNAL_SYSCALL_ERRNO (ret, err);
-}
-
-#include <shlib-compat.h>
-
-#if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_3_3)
-
-int
-attribute_compat_text_section
-__posix_fadvise64_l32 (int fd, off64_t offset, size_t len, int advise)
-{
- return __posix_fadvise64_l64 (fd, offset, len, advise);
-}
-
-versioned_symbol (libc, __posix_fadvise64_l64, posix_fadvise64, GLIBC_2_3_3);
-compat_symbol (libc, __posix_fadvise64_l32, posix_fadvise64, GLIBC_2_2);
-#else
-strong_alias (__posix_fadvise64_l64, posix_fadvise64);
-#endif
diff --git a/ports/sysdeps/unix/sysv/linux/arm/pread.c b/ports/sysdeps/unix/sysv/linux/arm/pread.c
deleted file mode 100644
index 97822ad11f..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/pread.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/* Copyright (C) 1997-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 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 <errno.h>
-#include <endian.h>
-#include <unistd.h>
-
-#include <sysdep-cancel.h>
-#include <sys/syscall.h>
-
-ssize_t
-__libc_pread (fd, buf, count, offset)
- int fd;
- void *buf;
- size_t count;
- off_t offset;
-{
- ssize_t result;
-
- if (SINGLE_THREAD_P)
- {
- /* In the ARM EABI, 64-bit values are aligned to even/odd register
- pairs for syscalls. */
- result = INLINE_SYSCALL (pread64, 6, fd, buf, count, 0,
- __LONG_LONG_PAIR (offset >> 31, offset));
-
- return result;
- }
-
- int oldtype = LIBC_CANCEL_ASYNC ();
-
- /* In the ARM EABI, 64-bit values are aligned to even/odd register
- pairs for syscalls. */
- result = INLINE_SYSCALL (pread64, 6, fd, buf, count, 0,
- __LONG_LONG_PAIR (offset >> 31, offset));
-
- LIBC_CANCEL_RESET (oldtype);
-
- return result;
-}
-
-strong_alias (__libc_pread, __pread)
-weak_alias (__libc_pread, pread)
diff --git a/ports/sysdeps/unix/sysv/linux/arm/pread64.c b/ports/sysdeps/unix/sysv/linux/arm/pread64.c
deleted file mode 100644
index cc75c9582c..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/pread64.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/* Copyright (C) 1997-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 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 <errno.h>
-#include <endian.h>
-#include <unistd.h>
-
-#include <sysdep-cancel.h>
-#include <sys/syscall.h>
-
-ssize_t
-__libc_pread64 (fd, buf, count, offset)
- int fd;
- void *buf;
- size_t count;
- off64_t offset;
-{
- ssize_t result;
-
- if (SINGLE_THREAD_P)
- {
- /* In the ARM EABI, 64-bit values are aligned to even/odd register
- pairs for syscalls. */
- result = INLINE_SYSCALL (pread64, 6, fd, buf, count, 0,
- __LONG_LONG_PAIR ((off_t) (offset >> 32),
- (off_t) (offset & 0xffffffff)));
-
- return result;
- }
-
- int oldtype = LIBC_CANCEL_ASYNC ();
-
- /* In the ARM EABI, 64-bit values are aligned to even/odd register
- pairs for syscalls. */
- result = INLINE_SYSCALL (pread64, 6, fd, buf, count, 0,
- __LONG_LONG_PAIR ((off_t) (offset >> 32),
- (off_t) (offset & 0xffffffff)));
-
- LIBC_CANCEL_RESET (oldtype);
-
- return result;
-}
-
-weak_alias (__libc_pread64, __pread64)
-weak_alias (__libc_pread64, pread64)
diff --git a/ports/sysdeps/unix/sysv/linux/arm/profil-counter.h b/ports/sysdeps/unix/sysv/linux/arm/profil-counter.h
deleted file mode 100644
index ddf4d41af2..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/profil-counter.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Low-level statistical profiling support function. Linux/ARM version.
- Copyright (C) 1996-2014 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 <signal.h>
-#include <sigcontextinfo.h>
-
-void
-profil_counter (int signo, const SIGCONTEXT scp)
-{
- profil_count ((void *) GET_PC (scp));
-
- /* This is a hack to prevent the compiler from implementing the
- above function call as a sibcall. The sibcall would overwrite
- the signal context. */
- asm volatile ("");
-}
diff --git a/ports/sysdeps/unix/sysv/linux/arm/pwrite.c b/ports/sysdeps/unix/sysv/linux/arm/pwrite.c
deleted file mode 100644
index dfbabda82c..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/pwrite.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/* Copyright (C) 1997-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 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 <errno.h>
-#include <endian.h>
-#include <unistd.h>
-
-#include <sysdep-cancel.h>
-#include <sys/syscall.h>
-
-ssize_t
-__libc_pwrite (fd, buf, count, offset)
- int fd;
- const void *buf;
- size_t count;
- off_t offset;
-{
- ssize_t result;
-
- if (SINGLE_THREAD_P)
- {
- /* In the ARM EABI, 64-bit values are aligned to even/odd register
- pairs for syscalls. */
- result = INLINE_SYSCALL (pwrite64, 6, fd, buf, count, 0,
- __LONG_LONG_PAIR (offset >> 31, offset));
-
- return result;
- }
-
- int oldtype = LIBC_CANCEL_ASYNC ();
-
- /* In the ARM EABI, 64-bit values are aligned to even/odd register
- pairs for syscalls. */
- result = INLINE_SYSCALL (pwrite64, 6, fd, buf, count, 0,
- __LONG_LONG_PAIR (offset >> 31, offset));
-
- LIBC_CANCEL_RESET (oldtype);
-
- return result;
-}
-
-strong_alias (__libc_pwrite, __pwrite)
-weak_alias (__libc_pwrite, pwrite)
diff --git a/ports/sysdeps/unix/sysv/linux/arm/pwrite64.c b/ports/sysdeps/unix/sysv/linux/arm/pwrite64.c
deleted file mode 100644
index 6d551ecd07..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/pwrite64.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/* Copyright (C) 1997-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 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 <errno.h>
-#include <endian.h>
-#include <unistd.h>
-
-#include <sysdep-cancel.h>
-#include <sys/syscall.h>
-
-ssize_t
-__libc_pwrite64 (fd, buf, count, offset)
- int fd;
- const void *buf;
- size_t count;
- off64_t offset;
-{
- ssize_t result;
-
- if (SINGLE_THREAD_P)
- {
- /* In the ARM EABI, 64-bit values are aligned to even/odd register
- pairs for syscalls. */
- result = INLINE_SYSCALL (pwrite64, 6, fd, buf, count, 0,
- __LONG_LONG_PAIR ((off_t) (offset >> 32),
- (off_t) (offset & 0xffffffff)));
-
- return result;
- }
-
- int oldtype = LIBC_CANCEL_ASYNC ();
-
- /* In the ARM EABI, 64-bit values are aligned to even/odd register
- pairs for syscalls. */
- result = INLINE_SYSCALL (pwrite64, 6, fd, buf, count, 0,
- __LONG_LONG_PAIR ((off_t) (offset >> 32),
- (off_t) (offset & 0xffffffff)));
-
- LIBC_CANCEL_RESET (oldtype);
-
- return result;
-}
-
-weak_alias (__libc_pwrite64, __pwrite64)
-libc_hidden_weak (__pwrite64)
-weak_alias (__libc_pwrite64, pwrite64)
diff --git a/ports/sysdeps/unix/sysv/linux/arm/readahead.c b/ports/sysdeps/unix/sysv/linux/arm/readahead.c
deleted file mode 100644
index cba460c2b5..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/readahead.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Provide kernel hint to read ahead.
- Copyright (C) 2002-2014 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>
-#include <fcntl.h>
-#include <sys/types.h>
-#include <endian.h>
-
-#include <sysdep.h>
-#include <sys/syscall.h>
-
-
-ssize_t
-__readahead (int fd, off64_t offset, size_t count)
-{
- return INLINE_SYSCALL (readahead, 5, fd, 0,
- __LONG_LONG_PAIR ((off_t) (offset >> 32),
- (off_t) (offset & 0xffffffff)),
- count);
-}
-
-weak_alias (__readahead, readahead)
diff --git a/ports/sysdeps/unix/sysv/linux/arm/readdir64.c b/ports/sysdeps/unix/sysv/linux/arm/readdir64.c
deleted file mode 100644
index 2ea26dd409..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/readdir64.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/readdir64.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/readdir64_r.c b/ports/sysdeps/unix/sysv/linux/arm/readdir64_r.c
deleted file mode 100644
index 9f54f897e3..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/readdir64_r.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/readdir64_r.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/readelflib.c b/ports/sysdeps/unix/sysv/linux/arm/readelflib.c
deleted file mode 100644
index a15ebe42a6..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/readelflib.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/* Copyright (C) 1999-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Andreas Jaeger <aj@suse.de>, 1999 and
- Jakub Jelinek <jakub@redhat.com>, 1999.
-
- 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/>. */
-
-
-int process_elf32_file (const char *file_name, const char *lib, int *flag,
- unsigned int *osversion, char **soname,
- void *file_contents, size_t file_length);
-int process_elf64_file (const char *file_name, const char *lib, int *flag,
- unsigned int *osversion, char **soname,
- void *file_contents, size_t file_length);
-
-/* Returns 0 if everything is ok, != 0 in case of error. */
-int
-process_elf_file (const char *file_name, const char *lib, int *flag,
- unsigned int *osversion, char **soname, void *file_contents,
- size_t file_length)
-{
- ElfW(Ehdr) *elf_header = (ElfW(Ehdr) *) file_contents;
- int ret;
-
- if (elf_header->e_ident [EI_CLASS] == ELFCLASS32)
- {
- Elf32_Ehdr *elf32_header = (Elf32_Ehdr *) elf_header;
-
- ret = process_elf32_file (file_name, lib, flag, osversion, soname,
- file_contents, file_length);
-
- if (!ret && EF_ARM_EABI_VERSION (elf32_header->e_flags) == EF_ARM_EABI_VER5)
- {
- if (elf32_header->e_flags & EF_ARM_ABI_FLOAT_HARD)
- *flag = FLAG_ARM_LIBHF|FLAG_ELF_LIBC6;
- else if (elf32_header->e_flags & EF_ARM_ABI_FLOAT_SOFT)
- *flag = FLAG_ARM_LIBSF|FLAG_ELF_LIBC6;
- else
- /* We must assume the unmarked objects are compatible
- with all ABI variants. Such objects may have been
- generated in a transitional period when the ABI
- tags were not added to all objects. */
- *flag = FLAG_ELF_LIBC6;
- }
- }
- else
- {
- ret = process_elf64_file (file_name, lib, flag, osversion, soname,
- file_contents, file_length);
- /* AArch64 libraries are always libc.so.6+. */
- if (!ret)
- *flag = FLAG_AARCH64_LIB64|FLAG_ELF_LIBC6;
- }
- return ret;
-}
-
-#undef __ELF_NATIVE_CLASS
-#undef process_elf_file
-#define process_elf_file process_elf32_file
-#define __ELF_NATIVE_CLASS 32
-#include "elf/readelflib.c"
-
-#undef __ELF_NATIVE_CLASS
-#undef process_elf_file
-#define process_elf_file process_elf64_file
-#define __ELF_NATIVE_CLASS 64
-#include "elf/readelflib.c"
diff --git a/ports/sysdeps/unix/sysv/linux/arm/register-dump.h b/ports/sysdeps/unix/sysv/linux/arm/register-dump.h
deleted file mode 100644
index 9714a0d8c7..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/register-dump.h
+++ /dev/null
@@ -1,136 +0,0 @@
-/* Dump registers.
- Copyright (C) 1998-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Philip Blundell <pb@nexus.co.uk>, 1998.
-
- 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 <sys/uio.h>
-#include <_itoa.h>
-#include <sys/ucontext.h>
-
-/* We will print the register dump in this format:
-
- R0: XXXXXXXX R1: XXXXXXXX R2: XXXXXXXX R3: XXXXXXXX
- R4: XXXXXXXX R5: XXXXXXXX R6: XXXXXXXX R7: XXXXXXXX
- R8: XXXXXXXX R9: XXXXXXXX SL: XXXXXXXX FP: XXXXXXXX
- IP: XXXXXXXX SP: XXXXXXXX LR: XXXXXXXX PC: XXXXXXXX
-
- CPSR: XXXXXXXX
-
- Trap: XXXXXXXX Error: XXXXXXXX OldMask: XXXXXXXX
- Addr: XXXXXXXX
-
- */
-
-static void
-hexvalue (unsigned long int value, char *buf, size_t len)
-{
- char *cp = _itoa_word (value, buf + len, 16, 0);
- while (cp > buf)
- *--cp = '0';
-}
-
-static void
-register_dump (int fd, const struct ucontext *ctx)
-{
- char regs[21][8];
- struct iovec iov[97];
- size_t nr = 0;
-
-#define ADD_STRING(str) \
- iov[nr].iov_base = (char *) str; \
- iov[nr].iov_len = strlen (str); \
- ++nr
-#define ADD_MEM(str, len) \
- iov[nr].iov_base = str; \
- iov[nr].iov_len = len; \
- ++nr
-
- /* Generate strings of register contents. */
- hexvalue (ctx->uc_mcontext.arm_r0, regs[0], 8);
- hexvalue (ctx->uc_mcontext.arm_r1, regs[1], 8);
- hexvalue (ctx->uc_mcontext.arm_r2, regs[2], 8);
- hexvalue (ctx->uc_mcontext.arm_r3, regs[3], 8);
- hexvalue (ctx->uc_mcontext.arm_r4, regs[4], 8);
- hexvalue (ctx->uc_mcontext.arm_r5, regs[5], 8);
- hexvalue (ctx->uc_mcontext.arm_r6, regs[6], 8);
- hexvalue (ctx->uc_mcontext.arm_r7, regs[7], 8);
- hexvalue (ctx->uc_mcontext.arm_r8, regs[8], 8);
- hexvalue (ctx->uc_mcontext.arm_r9, regs[9], 8);
- hexvalue (ctx->uc_mcontext.arm_r10, regs[10], 8);
- hexvalue (ctx->uc_mcontext.arm_fp, regs[11], 8);
- hexvalue (ctx->uc_mcontext.arm_ip, regs[12], 8);
- hexvalue (ctx->uc_mcontext.arm_sp, regs[13], 8);
- hexvalue (ctx->uc_mcontext.arm_lr, regs[14], 8);
- hexvalue (ctx->uc_mcontext.arm_pc, regs[15], 8);
- hexvalue (ctx->uc_mcontext.arm_cpsr, regs[16], 8);
- hexvalue (ctx->uc_mcontext.trap_no, regs[17], 8);
- hexvalue (ctx->uc_mcontext.error_code, regs[18], 8);
- hexvalue (ctx->uc_mcontext.oldmask, regs[19], 8);
- hexvalue (ctx->uc_mcontext.fault_address, regs[20], 8);
-
- /* Generate the output. */
- ADD_STRING ("Register dump:\n\n R0: ");
- ADD_MEM (regs[0], 8);
- ADD_STRING (" R1: ");
- ADD_MEM (regs[1], 8);
- ADD_STRING (" R2: ");
- ADD_MEM (regs[2], 8);
- ADD_STRING (" R3: ");
- ADD_MEM (regs[3], 8);
- ADD_STRING ("\n R4: ");
- ADD_MEM (regs[4], 8);
- ADD_STRING (" R5: ");
- ADD_MEM (regs[5], 8);
- ADD_STRING (" R6: ");
- ADD_MEM (regs[6], 8);
- ADD_STRING (" R7: ");
- ADD_MEM (regs[7], 8);
- ADD_STRING ("\n R8: ");
- ADD_MEM (regs[8], 8);
- ADD_STRING (" R9: ");
- ADD_MEM (regs[9], 8);
- ADD_STRING (" SL: ");
- ADD_MEM (regs[10], 8);
- ADD_STRING (" FP: ");
- ADD_MEM (regs[11], 8);
- ADD_STRING ("\n IP: ");
- ADD_MEM (regs[12], 8);
- ADD_STRING (" SP: ");
- ADD_MEM (regs[13], 8);
- ADD_STRING (" LR: ");
- ADD_MEM (regs[14], 8);
- ADD_STRING (" PC: ");
- ADD_MEM (regs[15], 8);
- ADD_STRING ("\n\n CPSR: ");
- ADD_MEM (regs[16], 8);
- ADD_STRING ("\n\n Trap: ");
- ADD_MEM (regs[17], 8);
- ADD_STRING (" Error: ");
- ADD_MEM (regs[18], 8);
- ADD_STRING (" OldMask: ");
- ADD_MEM (regs[19], 8);
- ADD_STRING ("\n Addr: ");
- ADD_MEM (regs[20], 8);
-
- ADD_STRING ("\n");
-
- /* Write the stuff out. */
- writev (fd, iov, nr);
-}
-
-
-#define REGISTER_DUMP register_dump (fd, ctx)
diff --git a/ports/sysdeps/unix/sysv/linux/arm/scandir64.c b/ports/sysdeps/unix/sysv/linux/arm/scandir64.c
deleted file mode 100644
index 506fd8877c..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/scandir64.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/scandir64.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/semctl.c b/ports/sysdeps/unix/sysv/linux/arm/semctl.c
deleted file mode 100644
index a45863bd82..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/semctl.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Copyright (C) 1995-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
-
- 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>
-#include <stdarg.h>
-#include <sys/sem.h>
-#include <ipc_priv.h>
-#include <sysdep.h>
-#include <sys/syscall.h>
-
-
-/* Define a `union semun' suitable for Linux here. */
-union semun
-{
- int val; /* value for SETVAL */
- struct semid_ds *buf; /* buffer for IPC_STAT & IPC_SET */
- unsigned short int *array; /* array for GETALL & SETALL */
- struct seminfo *__buf; /* buffer for IPC_INFO */
-};
-
-int
-__new_semctl (int semid, int semnum, int cmd, ...)
-{
- union semun arg;
- va_list ap;
-
- va_start (ap, cmd);
-
- /* Get the argument. */
- arg = va_arg (ap, union semun);
-
- va_end (ap);
-
- return INLINE_SYSCALL (semctl, 4, semid, semnum, cmd | __IPC_64,
- arg.array);
-}
-
-#include <shlib-compat.h>
-versioned_symbol (libc, __new_semctl, semctl, GLIBC_2_2);
diff --git a/ports/sysdeps/unix/sysv/linux/arm/setcontext.S b/ports/sysdeps/unix/sysv/linux/arm/setcontext.S
deleted file mode 100644
index 7b9b511b80..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/setcontext.S
+++ /dev/null
@@ -1,104 +0,0 @@
-/* Copyright (C) 2012-2014 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/>. */
-
-/* ??? Needs more rearrangement for the LDM to handle thumb mode. */
-#define NO_THUMB
-#include <sysdep.h>
-#include <rtld-global-offsets.h>
-
-#include "ucontext_i.h"
-
- .syntax unified
- .text
-
-/* int setcontext (const ucontext_t *ucp) */
-
-ENTRY(__setcontext)
- mov r4, r0
- add r0, r0, #UCONTEXT_REGSPACE
-
- /* Restore the VFP registers. Copied from arm/__longjmp.S. */
-#ifdef PIC
- ldr r2, 1f
- ldr r1, .Lrtld_global_ro
-0: add r2, pc, r2
- ldr r2, [r2, r1]
- ldr r2, [r2, #RTLD_GLOBAL_RO_DL_HWCAP_OFFSET]
-#else
- ldr r2, .Lhwcap
- ldr r2, [r2, #0]
-#endif
-
-#ifdef __SOFTFP__
- tst r2, #HWCAP_ARM_VFP
- beq .Lno_vfp_sc
-#endif
-
- /* Following instruction is vldmia r0!, {d8-d15}. */
- ldc p11, cr8, [r0], #64
- /* Restore the floating-point status register. */
- ldr r1, [r0], #4
- /* Following instruction is fmxr fpscr, r1. */
- mcr p10, 7, r1, cr1, cr0, 0
-.Lno_vfp_sc:
- tst r2, #HWCAP_ARM_IWMMXT
- beq .Lno_iwmmxt_sc
-
- /* Restore the call-preserved iWMMXt registers. */
- /* Following instructions are wldrd wr10, [r0], #8 (etc.) */
- ldcl p1, cr10, [r0], #8
- ldcl p1, cr11, [r0], #8
- ldcl p1, cr12, [r0], #8
- ldcl p1, cr13, [r0], #8
- ldcl p1, cr14, [r0], #8
- ldcl p1, cr15, [r0], #8
-.Lno_iwmmxt_sc:
-
- /* Now bring back the signal status. */
- mov r0, #SIG_SETMASK
- add r1, r4, #UCONTEXT_SIGMASK
- mov r2, #0
- bl PLTJMP(__sigprocmask)
-
- /* Loading r0-r3 makes makecontext easier. */
- add r14, r4, #MCONTEXT_ARM_R0
- ldmia r14, {r0-r12}
- ldr r13, [r14, #(MCONTEXT_ARM_SP - MCONTEXT_ARM_R0)]
- add r14, r14, #(MCONTEXT_ARM_LR - MCONTEXT_ARM_R0)
- ldmia r14, {r14, pc}
-
-END(setcontext)
-weak_alias(__setcontext, setcontext)
-
- /* Called when a makecontext() context returns. Start the
- context in R4 or fall through to exit(). */
-ENTRY(__startcontext)
- movs r0, r4
- bne PLTJMP(__setcontext)
-
- @ New context was 0 - exit
- b PLTJMP(HIDDEN_JUMPTARGET(_exit))
-END(__startcontext)
-
-#ifdef PIC
-1: .long _GLOBAL_OFFSET_TABLE_ - 0b - PC_OFS
-.Lrtld_global_ro:
- .long C_SYMBOL_NAME(_rtld_global_ro)(GOT)
-#else
-.Lhwcap:
- .long C_SYMBOL_NAME(_dl_hwcap)
-#endif
diff --git a/ports/sysdeps/unix/sysv/linux/arm/setegid.c b/ports/sysdeps/unix/sysv/linux/arm/setegid.c
deleted file mode 100644
index 2e3a54c893..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/setegid.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/setegid.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/seteuid.c b/ports/sysdeps/unix/sysv/linux/arm/seteuid.c
deleted file mode 100644
index 18e41d08c1..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/seteuid.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/seteuid.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/setfsgid.c b/ports/sysdeps/unix/sysv/linux/arm/setfsgid.c
deleted file mode 100644
index 0886712569..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/setfsgid.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/setfsgid.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/setfsuid.c b/ports/sysdeps/unix/sysv/linux/arm/setfsuid.c
deleted file mode 100644
index a9f22eb8ab..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/setfsuid.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/setfsuid.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/setgid.c b/ports/sysdeps/unix/sysv/linux/arm/setgid.c
deleted file mode 100644
index 377021d9ec..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/setgid.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/setgid.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/setgroups.c b/ports/sysdeps/unix/sysv/linux/arm/setgroups.c
deleted file mode 100644
index 0e7086278f..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/setgroups.c
+++ /dev/null
@@ -1,2 +0,0 @@
-/* We also have to rewrite the kernel gid_t to the user land type. */
-#include <sysdeps/unix/sysv/linux/i386/setgroups.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/setregid.c b/ports/sysdeps/unix/sysv/linux/arm/setregid.c
deleted file mode 100644
index 99c57ad20f..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/setregid.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/setregid.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/setresgid.c b/ports/sysdeps/unix/sysv/linux/arm/setresgid.c
deleted file mode 100644
index daca1a4833..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/setresgid.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/setresgid.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/setresuid.c b/ports/sysdeps/unix/sysv/linux/arm/setresuid.c
deleted file mode 100644
index 3aeabe9ad7..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/setresuid.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/setresuid.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/setreuid.c b/ports/sysdeps/unix/sysv/linux/arm/setreuid.c
deleted file mode 100644
index 8ad61226e9..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/setreuid.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/setreuid.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/setrlimit.c b/ports/sysdeps/unix/sysv/linux/arm/setrlimit.c
deleted file mode 100644
index bfaef74c38..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/setrlimit.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/setrlimit.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/setuid.c b/ports/sysdeps/unix/sysv/linux/arm/setuid.c
deleted file mode 100644
index de394379be..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/setuid.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/setuid.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/shmctl.c b/ports/sysdeps/unix/sysv/linux/arm/shmctl.c
deleted file mode 100644
index eed4c8dcef..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/shmctl.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Copyright (C) 1995-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
-
- 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>
-#include <sys/shm.h>
-#include <ipc_priv.h>
-#include <sysdep.h>
-#include <sys/syscall.h>
-#include <bits/wordsize.h>
-
-
-int
-__new_shmctl (int shmid, int cmd, struct shmid_ds *buf)
-{
- return INLINE_SYSCALL (shmctl, 3, shmid, cmd | __IPC_64, buf);
-}
-
-#include <shlib-compat.h>
-versioned_symbol (libc, __new_shmctl, shmctl, GLIBC_2_2);
diff --git a/ports/sysdeps/unix/sysv/linux/arm/sigaction.c b/ports/sysdeps/unix/sysv/linux/arm/sigaction.c
deleted file mode 100644
index 21df885a7a..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/sigaction.c
+++ /dev/null
@@ -1,110 +0,0 @@
-/* Copyright (C) 1997-2014 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>
-#include <signal.h>
-#include <string.h>
-
-#include <sysdep.h>
-#include <sys/syscall.h>
-#include <kernel-features.h>
-
-/* The difference here is that the sigaction structure used in the
- kernel is not the same as we use in the libc. Therefore we must
- translate it here. */
-#include <kernel_sigaction.h>
-
-#define SA_RESTORER 0x04000000
-
-extern void __default_sa_restorer_v1(void);
-extern void __default_sa_restorer_v2(void);
-extern void __default_rt_sa_restorer_v1(void);
-extern void __default_rt_sa_restorer_v2(void);
-#ifdef __ASSUME_SIGFRAME_V2
-# define __default_sa_restorer __default_sa_restorer_v2
-# define __default_rt_sa_restorer __default_rt_sa_restorer_v2
-#else
-# include <ldsodefs.h>
-# define __default_sa_restorer (GLRO(dl_osversion) >= 0x020612 \
- ? __default_sa_restorer_v2 \
- : __default_sa_restorer_v1)
-# define __default_rt_sa_restorer (GLRO(dl_osversion) >= 0x020612 \
- ? __default_rt_sa_restorer_v2 \
- : __default_rt_sa_restorer_v1)
-#endif
-
-/* When RT signals are in use we need to use a different return stub. */
-#define choose_restorer(flags) \
- (flags & SA_SIGINFO) ? __default_rt_sa_restorer \
- : __default_sa_restorer
-
-/* If ACT is not NULL, change the action for SIG to *ACT.
- If OACT is not NULL, put the old action for SIG in *OACT. */
-int
-__libc_sigaction (sig, act, oact)
- int sig;
- const struct sigaction *act;
- struct sigaction *oact;
-{
- int result;
-
- struct kernel_sigaction kact, koact;
-
- if (act)
- {
- kact.k_sa_handler = act->sa_handler;
- memcpy (&kact.sa_mask, &act->sa_mask, sizeof (sigset_t));
- kact.sa_flags = act->sa_flags;
-#ifdef HAVE_SA_RESTORER
- if (kact.sa_flags & SA_RESTORER)
- kact.sa_restorer = act->sa_restorer;
- else
- {
- kact.sa_restorer = choose_restorer (kact.sa_flags);
- kact.sa_flags |= SA_RESTORER;
- }
-#endif
- }
-
- /* XXX The size argument hopefully will have to be changed to the
- real size of the user-level sigset_t. */
- result = INLINE_SYSCALL (rt_sigaction, 4, sig,
- act ? &kact : NULL,
- oact ? &koact : NULL, _NSIG / 8);
-
- if (oact && result >= 0)
- {
- oact->sa_handler = koact.k_sa_handler;
- memcpy (&oact->sa_mask, &koact.sa_mask, sizeof (sigset_t));
- oact->sa_flags = koact.sa_flags;
-#ifdef HAVE_SA_RESTORER
- oact->sa_restorer = koact.sa_restorer;
-#endif
- }
- return result;
-}
-libc_hidden_def (__libc_sigaction)
-
-#ifdef WRAPPER_INCLUDE
-# include WRAPPER_INCLUDE
-#endif
-
-#ifndef LIBC_SIGACTION
-weak_alias (__libc_sigaction, __sigaction)
-libc_hidden_weak (__sigaction)
-weak_alias (__libc_sigaction, sigaction)
-#endif
diff --git a/ports/sysdeps/unix/sysv/linux/arm/sigcontextinfo.h b/ports/sysdeps/unix/sysv/linux/arm/sigcontextinfo.h
deleted file mode 100644
index 258703dc88..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/sigcontextinfo.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Copyright (C) 1999-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Philip Blundell <philb@gnu.org>, 1999.
-
- 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 <sys/ucontext.h>
-#include "kernel-features.h"
-
-#define SIGCONTEXT siginfo_t *_si, struct ucontext *
-#define SIGCONTEXT_EXTRA_ARGS _si,
-
-/* The sigcontext structure changed between 2.0 and 2.1 kernels. On any
- modern system we should be able to assume that the "new" format will be
- in use. */
-
-#define GET_PC(ctx) ((void *) (ctx)->uc_mcontext.arm_pc)
-#define GET_FRAME(ctx) ADVANCE_STACK_FRAME ((void *) ctx->uc_mcontext.arm_fp)
-#define GET_STACK(ctx) ((void *) (ctx)->uc_mcontext.arm_sp)
-
-#define ADVANCE_STACK_FRAME(frm) \
- ((struct layout *)frm - 1)
-
-#define CALL_SIGHANDLER(handler, signo, ctx) \
- (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx))
-
-/* There is no reliable way to get the sigcontext unless we use a
- three-argument signal handler. */
-#define __sigaction(sig, act, oact) ({ \
- (act)->sa_flags |= SA_SIGINFO; \
- (__sigaction) (sig, act, oact); \
-})
-
-#define sigaction(sig, act, oact) ({ \
- (act)->sa_flags |= SA_SIGINFO; \
- (sigaction) (sig, act, oact); \
-})
diff --git a/ports/sysdeps/unix/sysv/linux/arm/sigrestorer.S b/ports/sysdeps/unix/sysv/linux/arm/sigrestorer.S
deleted file mode 100644
index 566c04aed0..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/sigrestorer.S
+++ /dev/null
@@ -1,117 +0,0 @@
-/* Copyright (C) 1999-2014 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>
-
-/* If no SA_RESTORER function was specified by the application we use
- one of these. This avoids the need for the kernel to synthesise a return
- instruction on the stack, which would involve expensive cache flushes.
-
- Nowadays (2.6 series, and somewhat earlier) the kernel uses a high page
- for signal trampolines, so the cache flushes are not an issue. But since
- we do not have a vDSO, continue to use these so that we can provide
- unwind information.
-
- Start the unwind tables at least one instruction before the signal
- trampoline, because the unwinder will assume we are returning after
- a call site.
-
- Because the signal frame layout changed in 2.6.18, we provide two
- copies of these functions with different unwind information. */
-
-/* Used in ENTRY. */
-#undef cfi_startproc
-#define cfi_startproc \
- .cfi_startproc simple; \
- .cfi_signal_frame
-
-/* The CFA is not computed / used correctly here; this is neither trivial to
- do, nor is it needed. */
-#define CFI \
- cfi_def_cfa (sp, 0); \
- cfi_offset (r0, OFFSET + 0 * 4); \
- cfi_offset (r1, OFFSET + 1 * 4); \
- cfi_offset (r2, OFFSET + 2 * 4); \
- cfi_offset (r3, OFFSET + 3 * 4); \
- cfi_offset (r4, OFFSET + 4 * 4); \
- cfi_offset (r5, OFFSET + 5 * 4); \
- cfi_offset (r6, OFFSET + 6 * 4); \
- cfi_offset (r7, OFFSET + 7 * 4); \
- cfi_offset (r8, OFFSET + 8 * 4); \
- cfi_offset (r9, OFFSET + 9 * 4); \
- cfi_offset (r10, OFFSET + 10 * 4); \
- cfi_offset (r11, OFFSET + 11 * 4); \
- cfi_offset (r12, OFFSET + 12 * 4); \
- cfi_offset (r13, OFFSET + 13 * 4); \
- cfi_offset (r14, OFFSET + 14 * 4); \
- cfi_offset (r15, OFFSET + 15 * 4)
-
-#ifndef __ASSUME_SIGFRAME_V2
-#define OFFSET 12
- .fnstart
- .save {r0-r15}
- .pad #OFFSET
- nop
-ENTRY(__default_sa_restorer_v1)
- CFI
- mov r7, $SYS_ify(sigreturn)
- swi 0x0
- .fnend
-END(__default_sa_restorer_v1)
-#undef OFFSET
-#endif /* __ASSUME_SIGFRAME_V2 */
-
-#define OFFSET 32
- .fnstart
- .save {r0-r15}
- .pad #OFFSET
- nop
-ENTRY(__default_sa_restorer_v2)
- CFI
- mov r7, $SYS_ify(sigreturn)
- swi 0x0
- .fnend
-END(__default_sa_restorer_v2)
-#undef OFFSET
-
-#ifndef __ASSUME_SIGFRAME_V2
-#define OFFSET 168
- .fnstart
- .save {r0-r15}
- .pad #OFFSET
- nop
-ENTRY(__default_rt_sa_restorer_v1)
- CFI
- mov r7, $SYS_ify(rt_sigreturn)
- swi 0x0
- .fnend
-END(__default_rt_sa_restorer_v1)
-#undef OFFSET
-#endif /* __ASSUME_SIGFRAME_V2 */
-
-#define OFFSET 160
- .fnstart
- .save {r0-r15}
- .pad #OFFSET
- nop
-ENTRY(__default_rt_sa_restorer_v2)
- CFI
- mov r7, $SYS_ify(rt_sigreturn)
- swi 0x0
- .fnend
-END(__default_rt_sa_restorer_v2)
-#undef OFFSET
diff --git a/ports/sysdeps/unix/sysv/linux/arm/swapcontext.S b/ports/sysdeps/unix/sysv/linux/arm/swapcontext.S
deleted file mode 100644
index 65a36d2a4c..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/swapcontext.S
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Copyright (C) 2012-2014 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>
-
-#include "ucontext_i.h"
-
- .syntax unified
- .text
-
-/* int swapcontext (ucontext_t *oucp, const ucontext_t *ucp) */
-
-ENTRY(swapcontext)
-
- /* Have getcontext() do most of the work then fix up
- LR afterwards. Save R3 to keep the stack aligned. */
- push {r0,r1,r3,r14}
- cfi_adjust_cfa_offset (16)
- cfi_rel_offset (r0,0)
- cfi_rel_offset (r1,4)
- cfi_rel_offset (r3,8)
- cfi_rel_offset (r14,12)
-
- bl __getcontext
- mov r4, r0
-
- pop {r0,r1,r3,r14}
- cfi_adjust_cfa_offset (-16)
- cfi_restore (r0)
- cfi_restore (r1)
- cfi_restore (r3)
- cfi_restore (r14)
-
- /* Exit if getcontext() failed. */
- cmp r4, #0
- itt ne
- movne r0, r4
- RETINSTR(ne, r14)
-
- /* Fix up LR and the PC. */
- str r13,[r0, #MCONTEXT_ARM_SP]
- str r14,[r0, #MCONTEXT_ARM_LR]
- str r14,[r0, #MCONTEXT_ARM_PC]
-
- /* And swap using swapcontext(). */
- mov r0, r1
- b __setcontext
-
-END(swapcontext)
diff --git a/ports/sysdeps/unix/sysv/linux/arm/sys/elf.h b/ports/sysdeps/unix/sysv/linux/arm/sys/elf.h
deleted file mode 100644
index a03b1ad6ff..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/sys/elf.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Copyright (C) 1996-2014 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 _SYS_ELF_H
-#define _SYS_ELF_H 1
-
-#warning "This header is obsolete; use <sys/procfs.h> instead."
-
-#include <sys/procfs.h>
-
-#endif /* sys/elf.h */
diff --git a/ports/sysdeps/unix/sysv/linux/arm/sys/io.h b/ports/sysdeps/unix/sysv/linux/arm/sys/io.h
deleted file mode 100644
index 59d4bbcc4d..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/sys/io.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Copyright (C) 1996-2014 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 _SYS_IO_H
-
-#define _SYS_IO_H 1
-#include <features.h>
-
-__BEGIN_DECLS
-
-/* If TURN_ON is TRUE, request for permission to do direct i/o on the
- port numbers in the range [FROM,FROM+NUM-1]. Otherwise, turn I/O
- permission off for that range. This call requires root privileges. */
-extern int ioperm (unsigned long int __from, unsigned long int __num,
- int __turn_on) __THROW;
-
-/* Set the I/O privilege level to LEVEL. If LEVEL is nonzero,
- permission to access any I/O port is granted. This call requires
- root privileges. */
-extern int iopl (int __level) __THROW;
-
-/* The functions that actually perform reads and writes. */
-extern unsigned char inb (unsigned long int __port) __THROW;
-extern unsigned short int inw (unsigned long int __port) __THROW;
-extern unsigned long int inl (unsigned long int __port) __THROW;
-
-extern void outb (unsigned char __value, unsigned long int __port) __THROW;
-extern void outw (unsigned short __value, unsigned long int __port) __THROW;
-extern void outl (unsigned long __value, unsigned long int __port) __THROW;
-
-__END_DECLS
-
-#endif /* _SYS_IO_H */
diff --git a/ports/sysdeps/unix/sysv/linux/arm/sys/procfs.h b/ports/sysdeps/unix/sysv/linux/arm/sys/procfs.h
deleted file mode 100644
index 415cf8dd49..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/sys/procfs.h
+++ /dev/null
@@ -1,122 +0,0 @@
-/* Copyright (C) 1996-2014 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 _SYS_PROCFS_H
-#define _SYS_PROCFS_H 1
-
-/* This is somewhat modelled after the file of the same name on SVR4
- systems. It provides a definition of the core file format for ELF
- used on Linux. It doesn't have anything to do with the /proc file
- system, even though Linux has one.
-
- Anyway, the whole purpose of this file is for GDB and GDB only.
- Don't read too much into it. Don't use it for anything other than
- GDB unless you know what you are doing. */
-
-#include <features.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/user.h>
-
-__BEGIN_DECLS
-
-/* Type for a general-purpose register. */
-typedef unsigned long elf_greg_t;
-
-/* And the whole bunch of them. We could have used `struct
- user_regs' directly in the typedef, but tradition says that
- the register set is an array, which does have some peculiar
- semantics, so leave it that way. */
-#define ELF_NGREG (sizeof (struct user_regs) / sizeof(elf_greg_t))
-typedef elf_greg_t elf_gregset_t[ELF_NGREG];
-
-/* Register set for the floating-point registers. */
-typedef struct user_fpregs elf_fpregset_t;
-
-/* Signal info. */
-struct elf_siginfo
- {
- int si_signo; /* Signal number. */
- int si_code; /* Extra code. */
- int si_errno; /* Errno. */
- };
-
-/* Definitions to generate Intel SVR4-like core files. These mostly
- have the same names as the SVR4 types with "elf_" tacked on the
- front to prevent clashes with Linux definitions, and the typedef
- forms have been avoided. This is mostly like the SVR4 structure,
- but more Linuxy, with things that Linux does not support and which
- GDB doesn't really use excluded. */
-
-struct elf_prstatus
- {
- struct elf_siginfo pr_info; /* Info associated with signal. */
- short int pr_cursig; /* Current signal. */
- unsigned long int pr_sigpend; /* Set of pending signals. */
- unsigned long int pr_sighold; /* Set of held signals. */
- __pid_t pr_pid;
- __pid_t pr_ppid;
- __pid_t pr_pgrp;
- __pid_t pr_sid;
- struct timeval pr_utime; /* User time. */
- struct timeval pr_stime; /* System time. */
- struct timeval pr_cutime; /* Cumulative user time. */
- struct timeval pr_cstime; /* Cumulative system time. */
- elf_gregset_t pr_reg; /* GP registers. */
- int pr_fpvalid; /* True if math copro being used. */
- };
-
-
-#define ELF_PRARGSZ (80) /* Number of chars for args. */
-
-struct elf_prpsinfo
- {
- char pr_state; /* Numeric process state. */
- char pr_sname; /* Char for pr_state. */
- char pr_zomb; /* Zombie. */
- char pr_nice; /* Nice val. */
- unsigned long int pr_flag; /* Flags. */
- unsigned short int pr_uid;
- unsigned short int pr_gid;
- int pr_pid, pr_ppid, pr_pgrp, pr_sid;
- /* Lots missing */
- char pr_fname[16]; /* Filename of executable. */
- char pr_psargs[ELF_PRARGSZ]; /* Initial part of arg list. */
- };
-
-/* The rest of this file provides the types for emulation of the
- Solaris <proc_service.h> interfaces that should be implemented by
- users of libthread_db. */
-
-/* Addresses. */
-typedef void *psaddr_t;
-
-/* Register sets. Linux has different names. */
-typedef elf_gregset_t prgregset_t;
-typedef elf_fpregset_t prfpregset_t;
-
-/* We don't have any differences between processes and threads,
- therefore have only one PID type. */
-typedef __pid_t lwpid_t;
-
-/* Process status and info. In the end we do provide typedefs for them. */
-typedef struct elf_prstatus prstatus_t;
-typedef struct elf_prpsinfo prpsinfo_t;
-
-__END_DECLS
-
-#endif /* sys/procfs.h */
diff --git a/ports/sysdeps/unix/sysv/linux/arm/sys/ucontext.h b/ports/sysdeps/unix/sysv/linux/arm/sys/ucontext.h
deleted file mode 100644
index dbda8303cb..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/sys/ucontext.h
+++ /dev/null
@@ -1,112 +0,0 @@
-/* Copyright (C) 1998-2014 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/>. */
-
-/* System V/ARM ABI compliant context switching support. */
-
-#ifndef _SYS_UCONTEXT_H
-#define _SYS_UCONTEXT_H 1
-
-#include <features.h>
-#include <signal.h>
-
-/* We need the signal context definitions even if they are not used
- included in <signal.h>. */
-#include <bits/sigcontext.h>
-
-typedef int greg_t;
-
-/* Number of general registers. */
-#define NGREG 18
-
-/* Container for all general registers. */
-typedef greg_t gregset_t[NGREG];
-
-/* Number of each register is the `gregset_t' array. */
-enum
-{
- REG_R0 = 0,
-#define REG_R0 REG_R0
- REG_R1 = 1,
-#define REG_R1 REG_R1
- REG_R2 = 2,
-#define REG_R2 REG_R2
- REG_R3 = 3,
-#define REG_R3 REG_R3
- REG_R4 = 4,
-#define REG_R4 REG_R4
- REG_R5 = 5,
-#define REG_R5 REG_R5
- REG_R6 = 6,
-#define REG_R6 REG_R6
- REG_R7 = 7,
-#define REG_R7 REG_R7
- REG_R8 = 8,
-#define REG_R8 REG_R8
- REG_R9 = 9,
-#define REG_R9 REG_R9
- REG_R10 = 10,
-#define REG_R10 REG_R10
- REG_R11 = 11,
-#define REG_R11 REG_R11
- REG_R12 = 12,
-#define REG_R12 REG_R12
- REG_R13 = 13,
-#define REG_R13 REG_R13
- REG_R14 = 14,
-#define REG_R14 REG_R14
- REG_R15 = 15
-#define REG_R15 REG_R15
-};
-
-struct _libc_fpstate
-{
- struct
- {
- unsigned int sign1:1;
- unsigned int unused:15;
- unsigned int sign2:1;
- unsigned int exponent:14;
- unsigned int j:1;
- unsigned int mantissa1:31;
- unsigned int mantissa0:32;
- } fpregs[8];
- unsigned int fpsr:32;
- unsigned int fpcr:32;
- unsigned char ftype[8];
- unsigned int init_flag;
-};
-/* Structure to describe FPU registers. */
-typedef struct _libc_fpstate fpregset_t;
-
-/* Context to describe whole processor state. This only describes
- the core registers; coprocessor registers get saved elsewhere
- (e.g. in uc_regspace, or somewhere unspecified on the stack
- during non-RT signal handlers). */
-typedef struct sigcontext mcontext_t;
-
-/* Userlevel context. */
-typedef struct ucontext
- {
- unsigned long uc_flags;
- struct ucontext *uc_link;
- stack_t uc_stack;
- mcontext_t uc_mcontext;
- __sigset_t uc_sigmask;
- unsigned long uc_regspace[128] __attribute__((__aligned__(8)));
- } ucontext_t;
-
-#endif /* sys/ucontext.h */
diff --git a/ports/sysdeps/unix/sysv/linux/arm/sys/user.h b/ports/sysdeps/unix/sysv/linux/arm/sys/user.h
deleted file mode 100644
index 37fc08b0a7..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/sys/user.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/* Copyright (C) 1998-2014 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 _SYS_USER_H
-#define _SYS_USER_H 1
-
-/* The whole purpose of this file is for GDB and GDB only. Don't read
- too much into it. Don't use it for anything other than GDB unless
- you know what you are doing. */
-
-struct user_fpregs
-{
- struct fp_reg
- {
- unsigned int sign1:1;
- unsigned int unused:15;
- unsigned int sign2:1;
- unsigned int exponent:14;
- unsigned int j:1;
- unsigned int mantissa1:31;
- unsigned int mantissa0:32;
- } fpregs[8];
- unsigned int fpsr:32;
- unsigned int fpcr:32;
- unsigned char ftype[8];
- unsigned int init_flag;
-};
-
-struct user_regs
-{
- unsigned long int uregs[18];
-};
-
-struct user
-{
- struct user_regs regs; /* General registers */
- int u_fpvalid; /* True if math co-processor being used. */
-
- unsigned long int u_tsize; /* Text segment size (pages). */
- unsigned long int u_dsize; /* Data segment size (pages). */
- unsigned long int u_ssize; /* Stack segment size (pages). */
-
- unsigned long start_code; /* Starting virtual address of text. */
- unsigned long start_stack; /* Starting virtual address of stack. */
-
- long int signal; /* Signal that caused the core dump. */
- int reserved; /* No longer used */
- struct user_regs *u_ar0; /* help gdb to find the general registers. */
-
- unsigned long magic; /* uniquely identify a core file */
- char u_comm[32]; /* User command that was responsible */
- int u_debugreg[8];
- struct user_fpregs u_fp; /* Floating point registers */
- struct user_fpregs *u_fp0; /* help gdb to find the FP registers. */
-};
-
-#endif /* sys/user.h */
diff --git a/ports/sysdeps/unix/sysv/linux/arm/syscall.S b/ports/sysdeps/unix/sysv/linux/arm/syscall.S
deleted file mode 100644
index c5582f82fd..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/syscall.S
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Copyright (C) 2005-2014 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>
-
-/* In the EABI syscall interface, we don't need a special syscall to
- implement syscall(). It won't work reliably with 64-bit arguments
- (but that is true on many modern platforms). */
-
-ENTRY (syscall)
- mov ip, sp
- 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)
- mov r7, r0
- mov r0, r1
- mov r1, r2
- mov r2, r3
- ldmfd ip, {r3, r4, r5, r6}
- swi 0x0
- pop {r4, r5, r6, r7}
- cfi_adjust_cfa_offset (-16)
- cfi_restore (r4)
- cfi_restore (r5)
- cfi_restore (r6)
- cfi_restore (r7)
- cmn r0, #4096
- it cc
- RETINSTR(cc, lr)
- b PLTJMP(syscall_error)
-PSEUDO_END (syscall)
diff --git a/ports/sysdeps/unix/sysv/linux/arm/syscalls.list b/ports/sysdeps/unix/sysv/linux/arm/syscalls.list
deleted file mode 100644
index ba8cdd7e65..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/syscalls.list
+++ /dev/null
@@ -1,38 +0,0 @@
-# File name Caller Syscall name # args Strong name Weak names
-
-chown - chown32 i:sii __chown chown
-
-prlimit64 EXTRA prlimit64 i:iipp prlimit64
-
-fanotify_mark EXTRA fanotify_mark i:iiiiis fanotify_mark
-
-# Semaphore and shm system calls. msgctl, shmctl, and semctl have C
-# wrappers (to set __IPC_64).
-msgget - msgget i:ii __msgget msgget
-msgrcv - msgrcv Ci:ibnii __msgrcv msgrcv
-msgsnd - msgsnd Ci:ibni __msgsnd msgsnd
-shmat - shmat i:ipi __shmat shmat
-shmdt - shmdt i:s __shmdt shmdt
-shmget - shmget i:iii __shmget shmget
-semop - semop i:ipi __semop semop
-semtimedop - semtimedop i:ipip semtimedop
-semget - semget i:iii __semget semget
-
-# proper socket implementations:
-accept - accept Ci:iBN __libc_accept __accept accept
-bind - bind i:ipi __bind bind
-connect - connect Ci:ipi __libc_connect __connect connect
-getpeername - getpeername i:ipp __getpeername getpeername
-getsockname - getsockname i:ipp __getsockname getsockname
-getsockopt - getsockopt i:iiiBN __getsockopt getsockopt
-listen - listen i:ii __listen listen
-recv - recv Ci:ibni __libc_recv __recv recv
-recvfrom - recvfrom Ci:ibniBN __libc_recvfrom __recvfrom recvfrom
-recvmsg - recvmsg Ci:ipi __libc_recvmsg __recvmsg recvmsg
-send - send Ci:ibni __libc_send __send send
-sendmsg - sendmsg Ci:ipi __libc_sendmsg __sendmsg sendmsg
-sendto - sendto Ci:ibnibn __libc_sendto __sendto sendto
-setsockopt - setsockopt i:iiibn __setsockopt setsockopt
-shutdown - shutdown i:ii __shutdown shutdown
-socket - socket i:iii __socket socket
-socketpair - socketpair i:iiif __socketpair socketpair
diff --git a/ports/sysdeps/unix/sysv/linux/arm/sysdep.S b/ports/sysdeps/unix/sysv/linux/arm/sysdep.S
deleted file mode 100644
index 936de45533..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/sysdep.S
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Copyright (C) 1995-2014 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>
-
- .text
-
-/* The syscall stubs jump here when they detect an error.
- The code for Linux is almost identical to the canonical Unix
- code, except that the error number in R0 is negated. */
-
-#undef CALL_MCOUNT
-#define CALL_MCOUNT /* Don't insert the profiling call, it clobbers R0. */
-
-ENTRY (__syscall_error)
- rsb r0, r0, $0
-
-#define __syscall_error __syscall_error_1
-#include <sysdeps/unix/arm/sysdep.S>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/sysdep.h b/ports/sysdeps/unix/sysv/linux/arm/sysdep.h
deleted file mode 100644
index dcd99198cc..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/sysdep.h
+++ /dev/null
@@ -1,482 +0,0 @@
-/* Copyright (C) 1992-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>, August 1995.
- ARM changes by Philip Blundell, <pjb27@cam.ac.uk>, May 1997.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library. If not, see
- <http://www.gnu.org/licenses/>. */
-
-#ifndef _LINUX_ARM_SYSDEP_H
-#define _LINUX_ARM_SYSDEP_H 1
-
-/* There is some commonality. */
-#include <sysdeps/unix/arm/sysdep.h>
-
-/* Defines RTLD_PRIVATE_ERRNO and USE_DL_SYSINFO. */
-#include <dl-sysdep.h>
-
-#include <tls.h>
-
-/* In order to get __set_errno() definition in INLINE_SYSCALL. */
-#ifndef __ASSEMBLER__
-#include <errno.h>
-#endif
-
-/* For Linux we can use the system call table in the header file
- /usr/include/asm/unistd.h
- of the kernel. But these symbols do not follow the SYS_* syntax
- so we have to redefine the `SYS_ify' macro here. */
-#undef SYS_ify
-#define SYS_ify(syscall_name) (__NR_##syscall_name)
-
-#define _SYS_AUXV_H 1
-#include <bits/hwcap.h>
-
-#ifdef __ASSEMBLER__
-
-#ifndef ARCH_HAS_HARD_TP
-/* Internal macro calling the linux kernel kuser_get_tls helper.
- Note that in thumb mode, a constant pool break is often out of range, so
- we always expand the constant inline. */
-# ifdef __thumb2__
-# define GET_TLS_BODY \
- movw r0, #0x0fe0; \
- movt r0, #0xffff; \
- blx r0
-# else
-# define GET_TLS_BODY \
- mov r0, #0xffff0fff; /* Point to the high page. */ \
- mov lr, pc; /* Save our return address. */ \
- sub pc, r0, #31 /* Jump to the TLS entry. */
-# endif
-
-/* Helper to get the TLS base pointer. Save LR in TMP, return in R0,
- and no other registers clobbered. TMP may be LR itself to indicate
- that no save is necessary. */
-# undef GET_TLS
-# define GET_TLS(TMP) \
- .ifnc TMP, lr; \
- mov TMP, lr; \
- cfi_register (lr, TMP); \
- GET_TLS_BODY; \
- mov lr, TMP; \
- cfi_restore (lr); \
- .else; \
- GET_TLS_BODY; \
- .endif
-#endif /* ARCH_HAS_HARD_TP */
-
-/* Linux uses a negative return value to indicate syscall errors,
- unlike most Unices, which use the condition codes' carry flag.
-
- Since version 2.1 the return value of a system call might be
- negative even if the call succeeded. E.g., the `lseek' system call
- might return a large offset. Therefore we must not anymore test
- for < 0, but test for a real error by making sure the value in R0
- is a real error number. Linus said he will make sure the no syscall
- returns a value in -1 .. -4095 as a valid result so we can safely
- test with -4095. */
-
-#undef PSEUDO
-#define PSEUDO(name, syscall_name, args) \
- .text; \
- ENTRY (name); \
- DO_CALL (syscall_name, args); \
- cmn r0, $4096;
-
-#define PSEUDO_RET \
- it cc; \
- RETINSTR(cc, lr); \
- b PLTJMP(SYSCALL_ERROR)
-#undef ret
-#define ret PSEUDO_RET
-
-#undef PSEUDO_END
-#define PSEUDO_END(name) \
- SYSCALL_ERROR_HANDLER; \
- END (name)
-
-#undef PSEUDO_NOERRNO
-#define PSEUDO_NOERRNO(name, syscall_name, args) \
- .text; \
- ENTRY (name); \
- DO_CALL (syscall_name, args);
-
-#define PSEUDO_RET_NOERRNO \
- DO_RET (lr);
-
-#undef ret_NOERRNO
-#define ret_NOERRNO PSEUDO_RET_NOERRNO
-
-#undef PSEUDO_END_NOERRNO
-#define PSEUDO_END_NOERRNO(name) \
- END (name)
-
-/* The function has to return the error code. */
-#undef PSEUDO_ERRVAL
-#define PSEUDO_ERRVAL(name, syscall_name, args) \
- .text; \
- ENTRY (name) \
- DO_CALL (syscall_name, args); \
- rsb r0, r0, #0
-
-#undef PSEUDO_END_ERRVAL
-#define PSEUDO_END_ERRVAL(name) \
- END (name)
-
-#define ret_ERRVAL PSEUDO_RET_NOERRNO
-
-#if NOT_IN_libc
-# define SYSCALL_ERROR __local_syscall_error
-# if RTLD_PRIVATE_ERRNO
-# define SYSCALL_ERROR_HANDLER \
-__local_syscall_error: \
- rsb r0, r0, #0; \
- LDST_PCREL(str, r0, r1, C_SYMBOL_NAME(rtld_errno)); \
- mvn r0, #0; \
- DO_RET(lr)
-# else
-# if defined(__ARM_ARCH_4T__) && defined(__THUMB_INTERWORK__)
-# define POP_PC \
- pop { lr }; \
- cfi_adjust_cfa_offset (-4); \
- cfi_restore (lr); \
- bx lr
-# else
-# define POP_PC pop { pc }
-# endif
-# define SYSCALL_ERROR_HANDLER \
-__local_syscall_error: \
- push { lr }; \
- cfi_adjust_cfa_offset (4); \
- cfi_rel_offset (lr, 0); \
- push { r0 }; \
- cfi_adjust_cfa_offset (4); \
- bl PLTJMP(C_SYMBOL_NAME(__errno_location)); \
- pop { r1 }; \
- cfi_adjust_cfa_offset (-4); \
- rsb r1, r1, #0; \
- str r1, [r0]; \
- mvn r0, #0; \
- POP_PC;
-# endif
-#else
-# define SYSCALL_ERROR_HANDLER /* Nothing here; code in sysdep.S is used. */
-# define SYSCALL_ERROR __syscall_error
-#endif
-
-/* The ARM EABI user interface passes the syscall number in r7, instead
- of in the swi. This is more efficient, because the kernel does not need
- to fetch the swi from memory to find out the number; which can be painful
- with separate I-cache and D-cache. Make sure to use 0 for the SWI
- argument; otherwise the (optional) compatibility code for APCS binaries
- may be invoked. */
-
-/* Linux takes system call args in registers:
- arg 1 r0
- arg 2 r1
- arg 3 r2
- arg 4 r3
- arg 5 r4 (this is different from the APCS convention)
- arg 6 r5
- arg 7 r6
-
- The compiler is going to form a call by coming here, through PSEUDO, with
- arguments
- syscall number in the DO_CALL macro
- arg 1 r0
- arg 2 r1
- arg 3 r2
- arg 4 r3
- arg 5 [sp]
- arg 6 [sp+4]
- arg 7 [sp+8]
-
- We need to shuffle values between R4..R6 and the stack so that the
- caller's v1..v3 and stack frame are not corrupted, and the kernel
- sees the right arguments.
-
-*/
-
-/* We must save and restore r7 (call-saved) for the syscall number.
- We never make function calls from inside here (only potentially
- signal handlers), so we do not bother with doubleword alignment.
-
- Just like the APCS syscall convention, the EABI syscall convention uses
- r0 through r6 for up to seven syscall arguments. None are ever passed to
- the kernel on the stack, although incoming arguments are on the stack for
- syscalls with five or more arguments.
-
- The assembler will convert the literal pool load to a move for most
- syscalls. */
-
-#undef DO_CALL
-#define DO_CALL(syscall_name, args) \
- DOARGS_##args; \
- ldr r7, =SYS_ify (syscall_name); \
- swi 0x0; \
- UNDOARGS_##args
-
-#undef DOARGS_0
-#define DOARGS_0 \
- .fnstart; \
- push { r7 }; \
- cfi_adjust_cfa_offset (4); \
- cfi_rel_offset (r7, 0); \
- .save { r7 }
-#undef DOARGS_1
-#define DOARGS_1 DOARGS_0
-#undef DOARGS_2
-#define DOARGS_2 DOARGS_0
-#undef DOARGS_3
-#define DOARGS_3 DOARGS_0
-#undef DOARGS_4
-#define DOARGS_4 DOARGS_0
-#undef DOARGS_5
-#define DOARGS_5 \
- .fnstart; \
- push {r4, r7}; \
- cfi_adjust_cfa_offset (8); \
- cfi_rel_offset (r4, 0); \
- cfi_rel_offset (r7, 4); \
- .save { r4, r7 }; \
- ldr r4, [sp, #8]
-#undef DOARGS_6
-#define DOARGS_6 \
- .fnstart; \
- mov ip, sp; \
- push {r4, r5, r7}; \
- cfi_adjust_cfa_offset (12); \
- cfi_rel_offset (r4, 0); \
- cfi_rel_offset (r5, 4); \
- cfi_rel_offset (r7, 8); \
- .save { r4, r5, r7 }; \
- ldmia ip, {r4, r5}
-#undef DOARGS_7
-#define DOARGS_7 \
- .fnstart; \
- mov ip, sp; \
- 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); \
- .save { r4, r5, r6, r7 }; \
- ldmia ip, {r4, r5, r6}
-
-#undef UNDOARGS_0
-#define UNDOARGS_0 \
- pop {r7}; \
- cfi_adjust_cfa_offset (-4); \
- cfi_restore (r7); \
- .fnend
-#undef UNDOARGS_1
-#define UNDOARGS_1 UNDOARGS_0
-#undef UNDOARGS_2
-#define UNDOARGS_2 UNDOARGS_0
-#undef UNDOARGS_3
-#define UNDOARGS_3 UNDOARGS_0
-#undef UNDOARGS_4
-#define UNDOARGS_4 UNDOARGS_0
-#undef UNDOARGS_5
-#define UNDOARGS_5 \
- pop {r4, r7}; \
- cfi_adjust_cfa_offset (-8); \
- cfi_restore (r4); \
- cfi_restore (r7); \
- .fnend
-#undef UNDOARGS_6
-#define UNDOARGS_6 \
- pop {r4, r5, r7}; \
- cfi_adjust_cfa_offset (-12); \
- cfi_restore (r4); \
- cfi_restore (r5); \
- cfi_restore (r7); \
- .fnend
-#undef UNDOARGS_7
-#define UNDOARGS_7 \
- pop {r4, r5, r6, r7}; \
- cfi_adjust_cfa_offset (-16); \
- cfi_restore (r4); \
- cfi_restore (r5); \
- cfi_restore (r6); \
- cfi_restore (r7); \
- .fnend
-
-#else /* not __ASSEMBLER__ */
-
-/* Define a macro which expands into the inline wrapper code for a system
- call. */
-#undef INLINE_SYSCALL
-#define INLINE_SYSCALL(name, nr, args...) \
- ({ unsigned int _sys_result = INTERNAL_SYSCALL (name, , nr, args); \
- if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (_sys_result, ), 0)) \
- { \
- __set_errno (INTERNAL_SYSCALL_ERRNO (_sys_result, )); \
- _sys_result = (unsigned int) -1; \
- } \
- (int) _sys_result; })
-
-#undef INTERNAL_SYSCALL_DECL
-#define INTERNAL_SYSCALL_DECL(err) do { } while (0)
-
-#if defined(__thumb__)
-/* We can not expose the use of r7 to the compiler. GCC (as
- of 4.5) uses r7 as the hard frame pointer for Thumb - although
- for Thumb-2 it isn't obviously a better choice than r11.
- And GCC does not support asms that conflict with the frame
- pointer.
-
- This would be easier if syscall numbers never exceeded 255,
- but they do. For the moment the LOAD_ARGS_7 is sacrificed.
- We can't use push/pop inside the asm because that breaks
- unwinding (i.e. thread cancellation) for this frame. We can't
- locally save and restore r7, because we do not know if this
- function uses r7 or if it is our caller's r7; if it is our caller's,
- then unwinding will fail higher up the stack. So we move the
- syscall out of line and provide its own unwind information. */
-# undef INTERNAL_SYSCALL_RAW
-# define INTERNAL_SYSCALL_RAW(name, err, nr, args...) \
- ({ \
- register int _a1 asm ("a1"); \
- int _nametmp = name; \
- LOAD_ARGS_##nr (args) \
- register int _name asm ("ip") = _nametmp; \
- asm volatile ("bl __libc_do_syscall" \
- : "=r" (_a1) \
- : "r" (_name) ASM_ARGS_##nr \
- : "memory", "lr"); \
- _a1; })
-#else /* ARM */
-# undef INTERNAL_SYSCALL_RAW
-# define INTERNAL_SYSCALL_RAW(name, err, nr, args...) \
- ({ \
- register int _a1 asm ("r0"), _nr asm ("r7"); \
- LOAD_ARGS_##nr (args) \
- _nr = name; \
- asm volatile ("swi 0x0 @ syscall " #name \
- : "=r" (_a1) \
- : "r" (_nr) ASM_ARGS_##nr \
- : "memory"); \
- _a1; })
-#endif
-
-#undef INTERNAL_SYSCALL
-#define INTERNAL_SYSCALL(name, err, nr, args...) \
- INTERNAL_SYSCALL_RAW(SYS_ify(name), err, nr, args)
-
-#undef INTERNAL_SYSCALL_ARM
-#define INTERNAL_SYSCALL_ARM(name, err, nr, args...) \
- INTERNAL_SYSCALL_RAW(__ARM_NR_##name, err, nr, args)
-
-#undef INTERNAL_SYSCALL_ERROR_P
-#define INTERNAL_SYSCALL_ERROR_P(val, err) \
- ((unsigned int) (val) >= 0xfffff001u)
-
-#undef INTERNAL_SYSCALL_ERRNO
-#define INTERNAL_SYSCALL_ERRNO(val, err) (-(val))
-
-#define LOAD_ARGS_0()
-#define ASM_ARGS_0
-#define LOAD_ARGS_1(a1) \
- int _a1tmp = (int) (a1); \
- LOAD_ARGS_0 () \
- _a1 = _a1tmp;
-#define ASM_ARGS_1 ASM_ARGS_0, "r" (_a1)
-#define LOAD_ARGS_2(a1, a2) \
- int _a2tmp = (int) (a2); \
- LOAD_ARGS_1 (a1) \
- register int _a2 asm ("a2") = _a2tmp;
-#define ASM_ARGS_2 ASM_ARGS_1, "r" (_a2)
-#define LOAD_ARGS_3(a1, a2, a3) \
- int _a3tmp = (int) (a3); \
- LOAD_ARGS_2 (a1, a2) \
- register int _a3 asm ("a3") = _a3tmp;
-#define ASM_ARGS_3 ASM_ARGS_2, "r" (_a3)
-#define LOAD_ARGS_4(a1, a2, a3, a4) \
- int _a4tmp = (int) (a4); \
- LOAD_ARGS_3 (a1, a2, a3) \
- register int _a4 asm ("a4") = _a4tmp;
-#define ASM_ARGS_4 ASM_ARGS_3, "r" (_a4)
-#define LOAD_ARGS_5(a1, a2, a3, a4, a5) \
- int _v1tmp = (int) (a5); \
- LOAD_ARGS_4 (a1, a2, a3, a4) \
- register int _v1 asm ("v1") = _v1tmp;
-#define ASM_ARGS_5 ASM_ARGS_4, "r" (_v1)
-#define LOAD_ARGS_6(a1, a2, a3, a4, a5, a6) \
- int _v2tmp = (int) (a6); \
- LOAD_ARGS_5 (a1, a2, a3, a4, a5) \
- register int _v2 asm ("v2") = _v2tmp;
-#define ASM_ARGS_6 ASM_ARGS_5, "r" (_v2)
-#ifndef __thumb__
-# define LOAD_ARGS_7(a1, a2, a3, a4, a5, a6, a7) \
- int _v3tmp = (int) (a7); \
- LOAD_ARGS_6 (a1, a2, a3, a4, a5, a6) \
- register int _v3 asm ("v3") = _v3tmp;
-# define ASM_ARGS_7 ASM_ARGS_6, "r" (_v3)
-#endif
-
-/* For EABI, non-constant syscalls are actually pretty easy... */
-#undef INTERNAL_SYSCALL_NCS
-#define INTERNAL_SYSCALL_NCS(number, err, nr, args...) \
- INTERNAL_SYSCALL_RAW (number, err, nr, args)
-
-#endif /* __ASSEMBLER__ */
-
-/* Pointer mangling support. */
-#if (defined NOT_IN_libc && defined IS_IN_rtld) || \
- (!defined SHARED && (!defined NOT_IN_libc || defined IS_IN_libpthread))
-# ifdef __ASSEMBLER__
-# define PTR_MANGLE_LOAD(guard, tmp) \
- LDST_PCREL(ldr, guard, tmp, C_SYMBOL_NAME(__pointer_chk_guard_local));
-# define PTR_MANGLE(dst, src, guard, tmp) \
- PTR_MANGLE_LOAD(guard, tmp); \
- PTR_MANGLE2(dst, src, guard)
-/* Use PTR_MANGLE2 for efficiency if guard is already loaded. */
-# define PTR_MANGLE2(dst, src, guard) \
- eor dst, src, guard
-# define PTR_DEMANGLE(dst, src, guard, tmp) \
- PTR_MANGLE (dst, src, guard, tmp)
-# define PTR_DEMANGLE2(dst, src, guard) \
- PTR_MANGLE2 (dst, src, guard)
-# else
-extern uintptr_t __pointer_chk_guard_local attribute_relro attribute_hidden;
-# define PTR_MANGLE(var) \
- (var) = (__typeof (var)) ((uintptr_t) (var) ^ __pointer_chk_guard_local)
-# define PTR_DEMANGLE(var) PTR_MANGLE (var)
-# endif
-#else
-# ifdef __ASSEMBLER__
-# define PTR_MANGLE_LOAD(guard, tmp) \
- LDST_GLOBAL(ldr, guard, tmp, C_SYMBOL_NAME(__pointer_chk_guard));
-# define PTR_MANGLE(dst, src, guard, tmp) \
- PTR_MANGLE_LOAD(guard, tmp); \
- PTR_MANGLE2(dst, src, guard)
-/* Use PTR_MANGLE2 for efficiency if guard is already loaded. */
-# define PTR_MANGLE2(dst, src, guard) \
- eor dst, src, guard
-# define PTR_DEMANGLE(dst, src, guard, tmp) \
- PTR_MANGLE (dst, src, guard, tmp)
-# define PTR_DEMANGLE2(dst, src, guard) \
- PTR_MANGLE2 (dst, src, guard)
-# else
-extern uintptr_t __pointer_chk_guard attribute_relro;
-# define PTR_MANGLE(var) \
- (var) = (__typeof (var)) ((uintptr_t) (var) ^ __pointer_chk_guard)
-# define PTR_DEMANGLE(var) PTR_MANGLE (var)
-# endif
-#endif
-
-#endif /* linux/arm/sysdep.h */
diff --git a/ports/sysdeps/unix/sysv/linux/arm/truncate64.c b/ports/sysdeps/unix/sysv/linux/arm/truncate64.c
deleted file mode 100644
index dbbb5fcb44..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/truncate64.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright (C) 1997-2014 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 <sys/types.h>
-#include <endian.h>
-#include <errno.h>
-#include <unistd.h>
-
-#include <sysdep.h>
-#include <sys/syscall.h>
-
-/* Truncate the file FD refers to to LENGTH bytes. */
-int
-truncate64 (const char *path, off64_t length)
-{
- unsigned int low = length & 0xffffffff;
- unsigned int high = length >> 32;
- int result = INLINE_SYSCALL (truncate64, 4, path, 0,
- __LONG_LONG_PAIR (high, low));
- return result;
-}
diff --git a/ports/sysdeps/unix/sysv/linux/arm/ucontext_i.sym b/ports/sysdeps/unix/sysv/linux/arm/ucontext_i.sym
deleted file mode 100644
index 306292f1f8..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/ucontext_i.sym
+++ /dev/null
@@ -1,30 +0,0 @@
-#include <inttypes.h>
-#include <signal.h>
-#include <stddef.h>
-#include <sys/ucontext.h>
-
-SIG_BLOCK
-SIG_SETMASK
-
--- Offsets of the fields in the ucontext_t structure.
-#define ucontext(member) offsetof (ucontext_t, member)
-#define mcontext(member) ucontext (uc_mcontext.member)
-
-UCONTEXT_FLAGS ucontext (uc_flags)
-UCONTEXT_LINK ucontext (uc_link)
-UCONTEXT_STACK ucontext (uc_stack)
-UCONTEXT_MCONTEXT ucontext (uc_mcontext)
-UCONTEXT_SIGMASK ucontext (uc_sigmask)
-
-UCONTEXT_REGSPACE ucontext (uc_regspace)
-
-MCONTEXT_TRAP_NO mcontext (trap_no)
-MCONTEXT_ERROR_CODE mcontext (error_code)
-MCONTEXT_OLDMASK mcontext (oldmask)
-MCONTEXT_ARM_R0 mcontext (arm_r0)
-MCONTEXT_ARM_R4 mcontext (arm_r4)
-MCONTEXT_ARM_SP mcontext (arm_sp)
-MCONTEXT_ARM_LR mcontext (arm_lr)
-MCONTEXT_ARM_PC mcontext (arm_pc)
-MCONTEXT_ARM_CPSR mcontext (arm_cpsr)
-MCONTEXT_FAULT_ADDRESS mcontext (fault_address)
diff --git a/ports/sysdeps/unix/sysv/linux/arm/umount.c b/ports/sysdeps/unix/sysv/linux/arm/umount.c
deleted file mode 100644
index b8e499d8c4..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/umount.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright (C) 2000-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by David Huggins-Daines <dhd@debian.org>, 2000.
-
- 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/>. */
-
-/* Since we don't have an oldumount system call, do what the kernel
- does down here. */
-
-extern long int __umount2 (const char *name, int flags);
-
-long int
-__umount (const char *name)
-{
- return __umount2 (name, 0);
-}
-
-weak_alias (__umount, umount);
diff --git a/ports/sysdeps/unix/sysv/linux/arm/versionsort64.c b/ports/sysdeps/unix/sysv/linux/arm/versionsort64.c
deleted file mode 100644
index 144b691e56..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/versionsort64.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/versionsort64.c>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/vfork.S b/ports/sysdeps/unix/sysv/linux/arm/vfork.S
deleted file mode 100644
index 1ac67881c9..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/vfork.S
+++ /dev/null
@@ -1,61 +0,0 @@
-/* Copyright (C) 1999-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Philip Blundell <philb@gnu.org>.
-
- 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 _ERRNO_H 1
-#include <bits/errno.h>
-
-/* Clone the calling process, but without copying the whole address space.
- The calling process is suspended until the new process exits or is
- replaced by a call to `execve'. Return -1 for errors, 0 to the new process,
- and the process ID of the new process to the old process. */
-
-ENTRY (__vfork)
-#ifdef SAVE_PID
- SAVE_PID
-#endif
- /* The DO_CALL macro saves r7 on the stack, to enable generation
- of ARM unwind info. Since the stack is initially shared between
- parent and child of vfork, that saved value could be corrupted.
- To avoid this problem, we save r7 into ip as well, and restore
- from there. */
- mov ip, r7
- cfi_register (r7, ip)
- .fnstart
- push { r7 }
- cfi_adjust_cfa_offset (4)
- .save { r7 }
- ldr r7, =SYS_ify (vfork)
- swi 0x0
- .fnend
- add sp, sp, #4
- cfi_adjust_cfa_offset (-4)
- mov r7, ip
- cfi_restore (r7);
-#ifdef RESTORE_PID
- RESTORE_PID
-#endif
- cmn a1, #4096
- it cc
- RETINSTR(cc, lr)
-
- b PLTJMP(SYSCALL_ERROR)
-PSEUDO_END (__vfork)
-libc_hidden_def (__vfork)
-
-weak_alias (__vfork, vfork)
diff --git a/ports/sysdeps/unix/sysv/linux/arm/xstat.c b/ports/sysdeps/unix/sysv/linux/arm/xstat.c
deleted file mode 100644
index e9869f5508..0000000000
--- a/ports/sysdeps/unix/sysv/linux/arm/xstat.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/xstat.c>