summaryrefslogtreecommitdiff
path: root/REORG.TODO/sysdeps/unix/sysv/linux/arm
diff options
context:
space:
mode:
Diffstat (limited to 'REORG.TODO/sysdeps/unix/sysv/linux/arm')
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/Implies1
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/Makefile69
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/Versions19
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/____longjmp_chk.S90
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/aeabi_read_tp.S55
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/alphasort64.c1
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/arch-fork.h27
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/arm-features.h30
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/atomic-machine.h107
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/bits/fcntl.h54
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/bits/hwcap.h45
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/bits/mman.h40
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/bits/shm.h103
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/brk.c41
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/c++-types.data67
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/clone.S84
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/dl-cache.h34
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/dl-machine.h30
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/dl-procinfo.c66
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/dl-procinfo.h93
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/fcntl.c1
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/fxstat.c1
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/fxstatat.c1
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/getcontext.S115
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/getdents64.c1
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/glob64.c1
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/init-first.c44
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/ioperm.c183
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/kernel-features.h41
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/ld.abilist10
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/ldconfig.h25
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/ldsodefs.h73
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/libBrokenLocale.abilist2
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/libanl.abilist5
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/libc-do-syscall.S51
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/libc-vdso.h33
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/libc.abilist2154
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/libcrypt.abilist8
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/libdl.abilist10
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/libm.abilist432
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/libnsl.abilist122
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/libpthread.abilist228
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/libresolv.abilist93
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/librt.abilist42
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/libthread_db.abilist41
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/libutil.abilist7
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/localplt.data19
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/lockf64.c1
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/lxstat.c1
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/makecontext.c73
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/profil-counter.h34
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/readahead.c37
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/readdir64.c1
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/readdir64_r.c1
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/readelflib.c79
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/register-dump.h136
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/scandir64.c1
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/setcontext.S111
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/shlib-versions9
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/sigaction.c84
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/sigcontextinfo.h48
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/sigrestorer.S84
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/swapcontext.S63
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/sys/elf.h25
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/sys/io.h47
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/sys/procfs.h122
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/sys/ucontext.h114
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/sys/user.h71
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/syscall.S48
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/syscalls.list33
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h241
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/sysdep.S33
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/sysdep.h442
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/tls.h42
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/ucontext_i.sym30
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/umount.c30
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/versionsort64.c1
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/vfork.S59
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/arm/xstat.c1
79 files changed, 6901 insertions, 0 deletions
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/Implies b/REORG.TODO/sysdeps/unix/sysv/linux/arm/Implies
new file mode 100644
index 0000000000..e609c137d0
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/Implies
@@ -0,0 +1 @@
+arm/nptl
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/Makefile b/REORG.TODO/sysdeps/unix/sysv/linux/arm/Makefile
new file mode 100644
index 0000000000..b9b8f71721
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/Makefile
@@ -0,0 +1,69 @@
+ifeq ($(subdir),elf)
+sysdep_routines += dl-vdso
+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),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-hard-options := -D__ARM_PCS_VFP
+abi-hard-condition := defined __ARM_PCS_VFP
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/Versions b/REORG.TODO/sysdeps/unix/sysv/linux/arm/Versions
new file mode 100644
index 0000000000..7e5ba53455
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/Versions
@@ -0,0 +1,19 @@
+libc {
+ GLIBC_2.4 {
+ ioperm; iopl;
+ inb; inw; inl;
+ outb; outw; outl;
+ }
+ GLIBC_2.11 {
+ fallocate64;
+ }
+ GLIBC_2.24 {
+ recvmsg; sendmsg;
+ }
+ GLIBC_PRIVATE {
+ # A copy of sigaction lives in libpthread, and needs these.
+ __default_sa_restorer; __default_rt_sa_restorer;
+ # nptl/pthread_cond_timedwait.c uses INTERNAL_VSYSCALL(clock_gettime).
+ __vdso_clock_gettime;
+ }
+}
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/____longjmp_chk.S b/REORG.TODO/sysdeps/unix/sysv/linux/arm/____longjmp_chk.S
new file mode 100644
index 0000000000..6d8d93ae5f
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/____longjmp_chk.S
@@ -0,0 +1,90 @@
+/* Copyright (C) 2009-2017 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/REORG.TODO/sysdeps/unix/sysv/linux/arm/aeabi_read_tp.S b/REORG.TODO/sysdeps/unix/sysv/linux/arm/aeabi_read_tp.S
new file mode 100644
index 0000000000..12eae35e7f
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/aeabi_read_tp.S
@@ -0,0 +1,55 @@
+/* Copyright (C) 2005-2017 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/REORG.TODO/sysdeps/unix/sysv/linux/arm/alphasort64.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/alphasort64.c
new file mode 100644
index 0000000000..0b5ae47d2f
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/alphasort64.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/alphasort64.c>
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/arch-fork.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/arch-fork.h
new file mode 100644
index 0000000000..ab2d00e32e
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/arch-fork.h
@@ -0,0 +1,27 @@
+/* ARCH_FORK definition for Linux fork implementation. ARM version.
+ Copyright (C) 2014-2017 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 <sched.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)
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/arm-features.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/arm-features.h
new file mode 100644
index 0000000000..91c12a6243
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/arm-features.h
@@ -0,0 +1,30 @@
+/* Macros to test for CPU features on ARM. Linux version.
+ Copyright (C) 2012-2017 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/REORG.TODO/sysdeps/unix/sysv/linux/arm/atomic-machine.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/atomic-machine.h
new file mode 100644
index 0000000000..5fb516284b
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/atomic-machine.h
@@ -0,0 +1,107 @@
+/* Atomic operations. ARM/Linux version.
+ Copyright (C) 2002-2017 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/atomic-machine.h>
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/bits/fcntl.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/bits/fcntl.h
new file mode 100644
index 0000000000..61a8dac187
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/bits/fcntl.h
@@ -0,0 +1,54 @@
+/* O_*, F_*, FD_* bit values for Linux.
+ Copyright (C) 1995-2017 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/REORG.TODO/sysdeps/unix/sysv/linux/arm/bits/hwcap.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/bits/hwcap.h
new file mode 100644
index 0000000000..b2cc3d8828
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/bits/hwcap.h
@@ -0,0 +1,45 @@
+/* Defines for bits in AT_HWCAP. ARM Linux version.
+ Copyright (C) 2012-2017 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 (_SYS_AUXV_H) && !defined (_LINUX_ARM_SYSDEP_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
+#define HWCAP_ARM_VFPD32 524288
+#define HWCAP_ARM_LPAE 1048576
+#define HWCAP_ARM_EVTSTRM 2097152
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/bits/mman.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/bits/mman.h
new file mode 100644
index 0000000000..14baee793b
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/bits/mman.h
@@ -0,0 +1,40 @@
+/* Definitions for POSIX memory map interface. Linux/ARM version.
+ Copyright (C) 1997-2017 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/REORG.TODO/sysdeps/unix/sysv/linux/arm/bits/shm.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/bits/shm.h
new file mode 100644
index 0000000000..2448ffdd72
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/bits/shm.h
@@ -0,0 +1,103 @@
+/* Copyright (C) 1995-2017 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/REORG.TODO/sysdeps/unix/sysv/linux/arm/brk.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/brk.c
new file mode 100644
index 0000000000..74bff978d6
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/brk.c
@@ -0,0 +1,41 @@
+/* brk system call for Linux/ARM.
+ Copyright (C) 1995-2017 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/REORG.TODO/sysdeps/unix/sysv/linux/arm/c++-types.data b/REORG.TODO/sysdeps/unix/sysv/linux/arm/c++-types.data
new file mode 100644
index 0000000000..fde53bf337
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/c++-types.data
@@ -0,0 +1,67 @@
+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/REORG.TODO/sysdeps/unix/sysv/linux/arm/clone.S b/REORG.TODO/sysdeps/unix/sysv/linux/arm/clone.S
new file mode 100644
index 0000000000..a309add895
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/clone.S
@@ -0,0 +1,84 @@
+/* Copyright (C) 1996-2017 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>
+#include <tcb-offsets.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
+ mov ip, r2
+ @ 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
+ @ 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
+
+libc_hidden_def (__clone)
+weak_alias (__clone, clone)
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/dl-cache.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/dl-cache.h
new file mode 100644
index 0000000000..ccc4f2f3b3
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/dl-cache.h
@@ -0,0 +1,34 @@
+/* Support for reading /etc/ld.so.cache files written by Linux ldconfig.
+ Copyright (C) 2003-2017 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/REORG.TODO/sysdeps/unix/sysv/linux/arm/dl-machine.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/dl-machine.h
new file mode 100644
index 0000000000..8cc7d25439
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/dl-machine.h
@@ -0,0 +1,30 @@
+/* Machine-dependent ELF dynamic relocation inline functions. ARM/Linux version
+ Copyright (C) 1995-2017 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/REORG.TODO/sysdeps/unix/sysv/linux/arm/dl-procinfo.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/dl-procinfo.c
new file mode 100644
index 0000000000..15c45d089f
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/dl-procinfo.c
@@ -0,0 +1,66 @@
+/* Data for Linux/ARM version of processor capability information.
+ Copyright (C) 2001-2017 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 are quite 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[27][10]
+#endif
+#ifndef PROCINFO_DECL
+= {
+ "swp", "half", "thumb", "26bit", "fastmult", "fpa", "vfp", "edsp",
+ "java", "iwmmxt", "crunch", "thumbee", "neon", "vfpv3", "vfpv3d16",
+ "tls", "vfpv4", "idiva", "idivt", "vfpd32", "lpae", "evtstrm",
+ "aes", "pmull", "sha1", "sha2", "crc32",
+ }
+#endif
+#if !defined SHARED || defined PROCINFO_DECL
+;
+#else
+,
+#endif
+
+#undef PROCINFO_DECL
+#undef PROCINFO_CLASS
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/dl-procinfo.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/dl-procinfo.h
new file mode 100644
index 0000000000..b6a9d9f6a2
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/dl-procinfo.h
@@ -0,0 +1,93 @@
+/* Linux/ARM version of processor capability information handling macros.
+ Copyright (C) 2001-2017 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 27
+
+/* Low 22 bits are allocated in HWCAP. */
+#define _DL_HWCAP_LAST 21
+
+/* Low 5 bits are allocated in HWCAP2. */
+#define _DL_HWCAP2_LAST 4
+
+/* The kernel provides platform data but it is not interesting. */
+#define _DL_HWCAP_PLATFORM 0
+
+
+static inline const char *
+__attribute__ ((unused))
+_dl_hwcap_string (int idx)
+{
+ return GLRO(dl_arm_cap_flags)[idx];
+};
+
+static inline int
+__attribute__ ((unused))
+_dl_procinfo (unsigned int type, unsigned long int word)
+{
+ switch(type)
+ {
+ case AT_HWCAP:
+ _dl_printf ("AT_HWCAP: ");
+
+ for (int i = 0; i <= _DL_HWCAP_LAST; ++i)
+ if (word & (1 << i))
+ _dl_printf (" %s", _dl_hwcap_string (i));
+ break;
+ case AT_HWCAP2:
+ {
+ unsigned int offset = _DL_HWCAP_LAST + 1;
+
+ _dl_printf ("AT_HWCAP2: ");
+
+ for (int i = 0; i <= _DL_HWCAP2_LAST; ++i)
+ if (word & (1 << i))
+ _dl_printf (" %s", _dl_hwcap_string (offset + i));
+ break;
+ }
+ default:
+ /* This should not happen. */
+ return -1;
+ }
+ _dl_printf ("\n");
+ return 0;
+}
+
+#define HWCAP_IMPORTANT (HWCAP_ARM_VFP | HWCAP_ARM_NEON)
+
+static inline int
+__attribute__ ((unused))
+_dl_string_hwcap (const char *str)
+{
+ for (int i = 0; i < _DL_HWCAP_COUNT; i++)
+ {
+ if (strcmp (str, _dl_hwcap_string (i)) == 0)
+ return i;
+ }
+ return -1;
+};
+
+#define _dl_string_platform(str) (-1)
+
+#endif /* dl-procinfo.h */
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/fcntl.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/fcntl.c
new file mode 100644
index 0000000000..ea951bc4f9
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/fcntl.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/fcntl.c>
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/fxstat.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/fxstat.c
new file mode 100644
index 0000000000..4f219f0b9d
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/fxstat.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/fxstat.c>
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/fxstatat.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/fxstatat.c
new file mode 100644
index 0000000000..0f8b3135d8
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/fxstatat.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/fxstatat.c>
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/getcontext.S b/REORG.TODO/sysdeps/unix/sysv/linux/arm/getcontext.S
new file mode 100644
index 0000000000..fcc6c6f36b
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/getcontext.S
@@ -0,0 +1,115 @@
+/* Copyright (C) 2012-2017 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/REORG.TODO/sysdeps/unix/sysv/linux/arm/getdents64.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/getdents64.c
new file mode 100644
index 0000000000..0c75fb5a06
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/getdents64.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/getdents64.c>
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/glob64.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/glob64.c
new file mode 100644
index 0000000000..82a9a296a7
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/glob64.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/glob64.c>
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/init-first.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/init-first.c
new file mode 100644
index 0000000000..3c289c2a25
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/init-first.c
@@ -0,0 +1,44 @@
+/* Initialization code run first thing by the ELF startup code. Linux/ARM.
+ Copyright (C) 2015-2017 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/>. */
+
+#ifdef SHARED
+# include <dl-vdso.h>
+# include <libc-vdso.h>
+
+int (*VDSO_SYMBOL(gettimeofday)) (struct timeval *, void *) attribute_hidden;
+int (*VDSO_SYMBOL(clock_gettime)) (clockid_t, struct timespec *);
+
+static inline void
+_libc_vdso_platform_setup (void)
+{
+ PREPARE_VERSION_KNOWN (linux26, LINUX_2_6);
+
+ void *p = _dl_vdso_vsym ("__vdso_gettimeofday", &linux26);
+ PTR_MANGLE (p);
+ VDSO_SYMBOL (gettimeofday) = p;
+
+ p = _dl_vdso_vsym ("__vdso_clock_gettime", &linux26);
+ PTR_MANGLE (p);
+ VDSO_SYMBOL (clock_gettime) = p;
+}
+
+# define VDSO_SETUP _libc_vdso_platform_setup
+#endif
+
+#include <csu/init-first.c>
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/ioperm.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/ioperm.c
new file mode 100644
index 0000000000..c1fedd3696
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/ioperm.c
@@ -0,0 +1,183 @@
+/* Copyright (C) 1998-2017 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 <unistd.h>
+
+#include <sys/types.h>
+#include <sys/mman.h>
+
+#include <sys/sysctl.h>
+
+#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_ADDR(port) (io.base + ((port) << io.shift))
+
+/*
+ * Initialize I/O system. The io_bae and port_shift values are fetched
+ * using sysctl (CTL_BUS, CTL_BUS_ISA, ISA_*).
+ */
+
+static int
+init_iosys (void)
+{
+ static int iobase_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_BASE };
+ static int ioshift_name[] = { CTL_BUS, CTL_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;
+ }
+
+ /* sysctl has failed... */
+ __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/REORG.TODO/sysdeps/unix/sysv/linux/arm/kernel-features.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/kernel-features.h
new file mode 100644
index 0000000000..e13b049389
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/kernel-features.h
@@ -0,0 +1,41 @@
+/* Set flags signalling availability of kernel features based on given
+ kernel version number.
+ Copyright (C) 2006-2017 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 <kernel-features.h>
+
+/* The ARM kernel before 3.14.3 may or may not support
+ futex_atomic_cmpxchg_inatomic, depending on kernel
+ configuration. */
+#if __LINUX_KERNEL_VERSION < 0x030E03
+# undef __ASSUME_SET_ROBUST_LIST
+#endif
+
+/* ARM fadvise64_64 reorganize the syscall arguments. */
+#define __ASSUME_FADVISE64_64_6ARG 1
+
+/* Define this if your 32-bit syscall API requires 64-bit register
+ pairs to start with an even-number register. */
+#define __ASSUME_ALIGNED_REGISTER_PAIRS 1
+
+/* ARM only has a syscall for fadvise64{_64} and it is defined with a
+ non-standard name. */
+#define __NR_fadvise64_64 __NR_arm_fadvise64_64
+
+#define __ASSUME_RECV_SYSCALL 1
+#define __ASSUME_SEND_SYSCALL 1
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/ld.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/arm/ld.abilist
new file mode 100644
index 0000000000..cbf3a3cb2e
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/ld.abilist
@@ -0,0 +1,10 @@
+GLIBC_2.4 GLIBC_2.4 A
+GLIBC_2.4 __libc_stack_end D 0x4
+GLIBC_2.4 __stack_chk_guard D 0x4
+GLIBC_2.4 __tls_get_addr F
+GLIBC_2.4 _dl_mcount F
+GLIBC_2.4 _r_debug D 0x14
+GLIBC_2.4 calloc F
+GLIBC_2.4 free F
+GLIBC_2.4 malloc F
+GLIBC_2.4 realloc F
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/ldconfig.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/ldconfig.h
new file mode 100644
index 0000000000..a9a467cc6b
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/ldconfig.h
@@ -0,0 +1,25 @@
+/* Copyright (C) 2001-2017 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/REORG.TODO/sysdeps/unix/sysv/linux/arm/ldsodefs.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/ldsodefs.h
new file mode 100644
index 0000000000..6bd126b8ec
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/ldsodefs.h
@@ -0,0 +1,73 @@
+/* Run-time dynamic linker data structures for loaded ELF shared objects.
+ Copyright (C) 2010-2017 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/REORG.TODO/sysdeps/unix/sysv/linux/arm/libBrokenLocale.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libBrokenLocale.abilist
new file mode 100644
index 0000000000..e80f213955
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libBrokenLocale.abilist
@@ -0,0 +1,2 @@
+GLIBC_2.4 GLIBC_2.4 A
+GLIBC_2.4 __ctype_get_mb_cur_max F
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/libanl.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libanl.abilist
new file mode 100644
index 0000000000..df0c397ddc
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libanl.abilist
@@ -0,0 +1,5 @@
+GLIBC_2.4 GLIBC_2.4 A
+GLIBC_2.4 gai_cancel F
+GLIBC_2.4 gai_error F
+GLIBC_2.4 gai_suspend F
+GLIBC_2.4 getaddrinfo_a F
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/libc-do-syscall.S b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libc-do-syscall.S
new file mode 100644
index 0000000000..e5c1341a9d
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libc-do-syscall.S
@@ -0,0 +1,51 @@
+/* Copyright (C) 2010-2017 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/>. */
+
+/* When this file is built for inclusion in nscd, _FORTIFY_SOURCE is
+ defined but -O is not used, resulting in a warning from features.h. */
+#undef _FORTIFY_SOURCE
+#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/REORG.TODO/sysdeps/unix/sysv/linux/arm/libc-vdso.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libc-vdso.h
new file mode 100644
index 0000000000..ae37b574e1
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libc-vdso.h
@@ -0,0 +1,33 @@
+/* VDSO function pointer declarations. Linux/ARM.
+ Copyright (C) 2015-2017 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 _LIBC_VDSO_H
+#define _LIBC_VDSO_H
+
+#ifdef SHARED
+
+# include <sysdep-vdso.h>
+
+extern int (*VDSO_SYMBOL(gettimeofday)) (struct timeval *, void *)
+ attribute_hidden;
+extern int (*VDSO_SYMBOL(clock_gettime)) (clockid_t, struct timespec *);
+
+#endif
+
+#endif /* _LIBC_VDSO_H */
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/libc.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libc.abilist
new file mode 100644
index 0000000000..d2a206a8df
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libc.abilist
@@ -0,0 +1,2154 @@
+GLIBC_2.10 GLIBC_2.10 A
+GLIBC_2.10 __cxa_at_quick_exit F
+GLIBC_2.10 __posix_getopt F
+GLIBC_2.10 accept4 F
+GLIBC_2.10 endsgent F
+GLIBC_2.10 fallocate F
+GLIBC_2.10 fgetsgent F
+GLIBC_2.10 fgetsgent_r F
+GLIBC_2.10 getsgent F
+GLIBC_2.10 getsgent_r F
+GLIBC_2.10 getsgnam F
+GLIBC_2.10 getsgnam_r F
+GLIBC_2.10 malloc_info F
+GLIBC_2.10 preadv F
+GLIBC_2.10 preadv64 F
+GLIBC_2.10 psiginfo F
+GLIBC_2.10 putsgent F
+GLIBC_2.10 pwritev F
+GLIBC_2.10 pwritev64 F
+GLIBC_2.10 quick_exit F
+GLIBC_2.10 register_printf_modifier F
+GLIBC_2.10 register_printf_specifier F
+GLIBC_2.10 register_printf_type F
+GLIBC_2.10 setsgent F
+GLIBC_2.10 sgetsgent F
+GLIBC_2.10 sgetsgent_r F
+GLIBC_2.11 GLIBC_2.11 A
+GLIBC_2.11 __longjmp_chk F
+GLIBC_2.11 execvpe F
+GLIBC_2.11 fallocate64 F
+GLIBC_2.11 mkostemps F
+GLIBC_2.11 mkostemps64 F
+GLIBC_2.11 mkstemps F
+GLIBC_2.11 mkstemps64 F
+GLIBC_2.12 GLIBC_2.12 A
+GLIBC_2.12 _sys_errlist D 0x21c
+GLIBC_2.12 _sys_nerr D 0x4
+GLIBC_2.12 ntp_gettimex F
+GLIBC_2.12 recvmmsg F
+GLIBC_2.12 sys_errlist D 0x21c
+GLIBC_2.12 sys_nerr D 0x4
+GLIBC_2.13 GLIBC_2.13 A
+GLIBC_2.13 fanotify_init F
+GLIBC_2.13 fanotify_mark F
+GLIBC_2.13 prlimit F
+GLIBC_2.13 prlimit64 F
+GLIBC_2.14 GLIBC_2.14 A
+GLIBC_2.14 clock_adjtime F
+GLIBC_2.14 name_to_handle_at F
+GLIBC_2.14 open_by_handle_at F
+GLIBC_2.14 sendmmsg F
+GLIBC_2.14 setns F
+GLIBC_2.14 syncfs F
+GLIBC_2.15 GLIBC_2.15 A
+GLIBC_2.15 __fdelt_chk F
+GLIBC_2.15 __fdelt_warn F
+GLIBC_2.15 posix_spawn F
+GLIBC_2.15 posix_spawnp F
+GLIBC_2.15 process_vm_readv F
+GLIBC_2.15 process_vm_writev F
+GLIBC_2.15 scandirat F
+GLIBC_2.15 scandirat64 F
+GLIBC_2.16 GLIBC_2.16 A
+GLIBC_2.16 __getauxval F
+GLIBC_2.16 __poll_chk F
+GLIBC_2.16 __ppoll_chk F
+GLIBC_2.16 aligned_alloc F
+GLIBC_2.16 c16rtomb F
+GLIBC_2.16 c32rtomb F
+GLIBC_2.16 getauxval F
+GLIBC_2.16 mbrtoc16 F
+GLIBC_2.16 mbrtoc32 F
+GLIBC_2.16 timespec_get F
+GLIBC_2.17 GLIBC_2.17 A
+GLIBC_2.17 clock_getcpuclockid F
+GLIBC_2.17 clock_getres F
+GLIBC_2.17 clock_gettime F
+GLIBC_2.17 clock_nanosleep F
+GLIBC_2.17 clock_settime F
+GLIBC_2.17 secure_getenv F
+GLIBC_2.18 GLIBC_2.18 A
+GLIBC_2.18 __cxa_thread_atexit_impl F
+GLIBC_2.22 GLIBC_2.22 A
+GLIBC_2.22 fmemopen F
+GLIBC_2.23 GLIBC_2.23 A
+GLIBC_2.23 fts64_children F
+GLIBC_2.23 fts64_close F
+GLIBC_2.23 fts64_open F
+GLIBC_2.23 fts64_read F
+GLIBC_2.23 fts64_set F
+GLIBC_2.24 GLIBC_2.24 A
+GLIBC_2.24 quick_exit F
+GLIBC_2.25 GLIBC_2.25 A
+GLIBC_2.25 __explicit_bzero_chk F
+GLIBC_2.25 explicit_bzero F
+GLIBC_2.25 getentropy F
+GLIBC_2.25 getrandom F
+GLIBC_2.25 strfromd F
+GLIBC_2.25 strfromf F
+GLIBC_2.25 strfroml F
+GLIBC_2.26 GLIBC_2.26 A
+GLIBC_2.26 preadv2 F
+GLIBC_2.26 preadv64v2 F
+GLIBC_2.26 pwritev2 F
+GLIBC_2.26 pwritev64v2 F
+GLIBC_2.26 reallocarray F
+GLIBC_2.4 GLIBC_2.4 A
+GLIBC_2.4 _Exit F
+GLIBC_2.4 _IO_2_1_stderr_ D 0xa0
+GLIBC_2.4 _IO_2_1_stdin_ D 0xa0
+GLIBC_2.4 _IO_2_1_stdout_ D 0xa0
+GLIBC_2.4 _IO_adjust_column F
+GLIBC_2.4 _IO_adjust_wcolumn F
+GLIBC_2.4 _IO_default_doallocate F
+GLIBC_2.4 _IO_default_finish F
+GLIBC_2.4 _IO_default_pbackfail F
+GLIBC_2.4 _IO_default_uflow F
+GLIBC_2.4 _IO_default_xsgetn F
+GLIBC_2.4 _IO_default_xsputn F
+GLIBC_2.4 _IO_do_write F
+GLIBC_2.4 _IO_doallocbuf F
+GLIBC_2.4 _IO_fclose F
+GLIBC_2.4 _IO_fdopen F
+GLIBC_2.4 _IO_feof F
+GLIBC_2.4 _IO_ferror F
+GLIBC_2.4 _IO_fflush F
+GLIBC_2.4 _IO_fgetpos F
+GLIBC_2.4 _IO_fgetpos64 F
+GLIBC_2.4 _IO_fgets F
+GLIBC_2.4 _IO_file_attach F
+GLIBC_2.4 _IO_file_close F
+GLIBC_2.4 _IO_file_close_it F
+GLIBC_2.4 _IO_file_doallocate F
+GLIBC_2.4 _IO_file_finish F
+GLIBC_2.4 _IO_file_fopen F
+GLIBC_2.4 _IO_file_init F
+GLIBC_2.4 _IO_file_jumps D 0x54
+GLIBC_2.4 _IO_file_open F
+GLIBC_2.4 _IO_file_overflow F
+GLIBC_2.4 _IO_file_read F
+GLIBC_2.4 _IO_file_seek F
+GLIBC_2.4 _IO_file_seekoff F
+GLIBC_2.4 _IO_file_setbuf F
+GLIBC_2.4 _IO_file_stat F
+GLIBC_2.4 _IO_file_sync F
+GLIBC_2.4 _IO_file_underflow F
+GLIBC_2.4 _IO_file_write F
+GLIBC_2.4 _IO_file_xsputn F
+GLIBC_2.4 _IO_flockfile F
+GLIBC_2.4 _IO_flush_all F
+GLIBC_2.4 _IO_flush_all_linebuffered F
+GLIBC_2.4 _IO_fopen F
+GLIBC_2.4 _IO_fprintf F
+GLIBC_2.4 _IO_fputs F
+GLIBC_2.4 _IO_fread F
+GLIBC_2.4 _IO_free_backup_area F
+GLIBC_2.4 _IO_free_wbackup_area F
+GLIBC_2.4 _IO_fsetpos F
+GLIBC_2.4 _IO_fsetpos64 F
+GLIBC_2.4 _IO_ftell F
+GLIBC_2.4 _IO_ftrylockfile F
+GLIBC_2.4 _IO_funlockfile F
+GLIBC_2.4 _IO_fwrite F
+GLIBC_2.4 _IO_getc F
+GLIBC_2.4 _IO_getline F
+GLIBC_2.4 _IO_getline_info F
+GLIBC_2.4 _IO_gets F
+GLIBC_2.4 _IO_init F
+GLIBC_2.4 _IO_init_marker F
+GLIBC_2.4 _IO_init_wmarker F
+GLIBC_2.4 _IO_iter_begin F
+GLIBC_2.4 _IO_iter_end F
+GLIBC_2.4 _IO_iter_file F
+GLIBC_2.4 _IO_iter_next F
+GLIBC_2.4 _IO_least_wmarker F
+GLIBC_2.4 _IO_link_in F
+GLIBC_2.4 _IO_list_all D 0x4
+GLIBC_2.4 _IO_list_lock F
+GLIBC_2.4 _IO_list_resetlock F
+GLIBC_2.4 _IO_list_unlock F
+GLIBC_2.4 _IO_marker_delta F
+GLIBC_2.4 _IO_marker_difference F
+GLIBC_2.4 _IO_padn F
+GLIBC_2.4 _IO_peekc_locked F
+GLIBC_2.4 _IO_popen F
+GLIBC_2.4 _IO_printf F
+GLIBC_2.4 _IO_proc_close F
+GLIBC_2.4 _IO_proc_open F
+GLIBC_2.4 _IO_putc F
+GLIBC_2.4 _IO_puts F
+GLIBC_2.4 _IO_remove_marker F
+GLIBC_2.4 _IO_seekmark F
+GLIBC_2.4 _IO_seekoff F
+GLIBC_2.4 _IO_seekpos F
+GLIBC_2.4 _IO_seekwmark F
+GLIBC_2.4 _IO_setb F
+GLIBC_2.4 _IO_setbuffer F
+GLIBC_2.4 _IO_setvbuf F
+GLIBC_2.4 _IO_sgetn F
+GLIBC_2.4 _IO_sprintf F
+GLIBC_2.4 _IO_sputbackc F
+GLIBC_2.4 _IO_sputbackwc F
+GLIBC_2.4 _IO_sscanf F
+GLIBC_2.4 _IO_str_init_readonly F
+GLIBC_2.4 _IO_str_init_static F
+GLIBC_2.4 _IO_str_overflow F
+GLIBC_2.4 _IO_str_pbackfail F
+GLIBC_2.4 _IO_str_seekoff F
+GLIBC_2.4 _IO_str_underflow F
+GLIBC_2.4 _IO_sungetc F
+GLIBC_2.4 _IO_sungetwc F
+GLIBC_2.4 _IO_switch_to_get_mode F
+GLIBC_2.4 _IO_switch_to_main_wget_area F
+GLIBC_2.4 _IO_switch_to_wbackup_area F
+GLIBC_2.4 _IO_switch_to_wget_mode F
+GLIBC_2.4 _IO_un_link F
+GLIBC_2.4 _IO_ungetc F
+GLIBC_2.4 _IO_unsave_markers F
+GLIBC_2.4 _IO_unsave_wmarkers F
+GLIBC_2.4 _IO_vfprintf F
+GLIBC_2.4 _IO_vfscanf F
+GLIBC_2.4 _IO_vsprintf F
+GLIBC_2.4 _IO_wdefault_doallocate F
+GLIBC_2.4 _IO_wdefault_finish F
+GLIBC_2.4 _IO_wdefault_pbackfail F
+GLIBC_2.4 _IO_wdefault_uflow F
+GLIBC_2.4 _IO_wdefault_xsgetn F
+GLIBC_2.4 _IO_wdefault_xsputn F
+GLIBC_2.4 _IO_wdo_write F
+GLIBC_2.4 _IO_wdoallocbuf F
+GLIBC_2.4 _IO_wfile_jumps D 0x54
+GLIBC_2.4 _IO_wfile_overflow F
+GLIBC_2.4 _IO_wfile_seekoff F
+GLIBC_2.4 _IO_wfile_sync F
+GLIBC_2.4 _IO_wfile_underflow F
+GLIBC_2.4 _IO_wfile_xsputn F
+GLIBC_2.4 _IO_wmarker_delta F
+GLIBC_2.4 _IO_wsetb F
+GLIBC_2.4 __adjtimex F
+GLIBC_2.4 __aeabi_MB_CUR_MAX F
+GLIBC_2.4 __aeabi_assert F
+GLIBC_2.4 __aeabi_atexit F
+GLIBC_2.4 __aeabi_errno_addr F
+GLIBC_2.4 __aeabi_localeconv F
+GLIBC_2.4 __aeabi_memclr F
+GLIBC_2.4 __aeabi_memclr4 F
+GLIBC_2.4 __aeabi_memclr8 F
+GLIBC_2.4 __aeabi_memcpy F
+GLIBC_2.4 __aeabi_memcpy4 F
+GLIBC_2.4 __aeabi_memcpy8 F
+GLIBC_2.4 __aeabi_memmove F
+GLIBC_2.4 __aeabi_memmove4 F
+GLIBC_2.4 __aeabi_memmove8 F
+GLIBC_2.4 __aeabi_memset F
+GLIBC_2.4 __aeabi_memset4 F
+GLIBC_2.4 __aeabi_memset8 F
+GLIBC_2.4 __after_morecore_hook D 0x4
+GLIBC_2.4 __argz_count F
+GLIBC_2.4 __argz_next F
+GLIBC_2.4 __argz_stringify F
+GLIBC_2.4 __asprintf F
+GLIBC_2.4 __assert F
+GLIBC_2.4 __assert_fail F
+GLIBC_2.4 __assert_perror_fail F
+GLIBC_2.4 __backtrace F
+GLIBC_2.4 __backtrace_symbols F
+GLIBC_2.4 __backtrace_symbols_fd F
+GLIBC_2.4 __bsd_getpgrp F
+GLIBC_2.4 __bzero F
+GLIBC_2.4 __check_rhosts_file D 0x4
+GLIBC_2.4 __chk_fail F
+GLIBC_2.4 __clone F
+GLIBC_2.4 __close F
+GLIBC_2.4 __cmsg_nxthdr F
+GLIBC_2.4 __confstr_chk F
+GLIBC_2.4 __connect F
+GLIBC_2.4 __ctype_b_loc F
+GLIBC_2.4 __ctype_get_mb_cur_max F
+GLIBC_2.4 __ctype_tolower_loc F
+GLIBC_2.4 __ctype_toupper_loc F
+GLIBC_2.4 __curbrk D 0x4
+GLIBC_2.4 __cxa_atexit F
+GLIBC_2.4 __cxa_finalize F
+GLIBC_2.4 __cyg_profile_func_enter F
+GLIBC_2.4 __cyg_profile_func_exit F
+GLIBC_2.4 __daylight D 0x4
+GLIBC_2.4 __dcgettext F
+GLIBC_2.4 __default_morecore F
+GLIBC_2.4 __dgettext F
+GLIBC_2.4 __dup2 F
+GLIBC_2.4 __duplocale F
+GLIBC_2.4 __endmntent F
+GLIBC_2.4 __environ D 0x4
+GLIBC_2.4 __errno_location F
+GLIBC_2.4 __fbufsize F
+GLIBC_2.4 __fcntl F
+GLIBC_2.4 __ffs F
+GLIBC_2.4 __fgets_chk F
+GLIBC_2.4 __fgets_unlocked_chk F
+GLIBC_2.4 __fgetws_chk F
+GLIBC_2.4 __fgetws_unlocked_chk F
+GLIBC_2.4 __finite F
+GLIBC_2.4 __finitef F
+GLIBC_2.4 __finitel F
+GLIBC_2.4 __flbf F
+GLIBC_2.4 __fork F
+GLIBC_2.4 __fpending F
+GLIBC_2.4 __fprintf_chk F
+GLIBC_2.4 __fpu_control D 0x4
+GLIBC_2.4 __fpurge F
+GLIBC_2.4 __freadable F
+GLIBC_2.4 __freading F
+GLIBC_2.4 __free_hook D 0x4
+GLIBC_2.4 __freelocale F
+GLIBC_2.4 __fsetlocking F
+GLIBC_2.4 __fwprintf_chk F
+GLIBC_2.4 __fwritable F
+GLIBC_2.4 __fwriting F
+GLIBC_2.4 __fxstat F
+GLIBC_2.4 __fxstat64 F
+GLIBC_2.4 __fxstatat F
+GLIBC_2.4 __fxstatat64 F
+GLIBC_2.4 __getcwd_chk F
+GLIBC_2.4 __getdelim F
+GLIBC_2.4 __getdomainname_chk F
+GLIBC_2.4 __getgroups_chk F
+GLIBC_2.4 __gethostname_chk F
+GLIBC_2.4 __getlogin_r_chk F
+GLIBC_2.4 __getmntent_r F
+GLIBC_2.4 __getpagesize F
+GLIBC_2.4 __getpgid F
+GLIBC_2.4 __getpid F
+GLIBC_2.4 __gets_chk F
+GLIBC_2.4 __gettimeofday F
+GLIBC_2.4 __getwd_chk F
+GLIBC_2.4 __gmtime_r F
+GLIBC_2.4 __gnu_Unwind_Find_exidx F
+GLIBC_2.4 __h_errno_location F
+GLIBC_2.4 __isalnum_l F
+GLIBC_2.4 __isalpha_l F
+GLIBC_2.4 __isascii_l F
+GLIBC_2.4 __isblank_l F
+GLIBC_2.4 __iscntrl_l F
+GLIBC_2.4 __isctype F
+GLIBC_2.4 __isdigit_l F
+GLIBC_2.4 __isgraph_l F
+GLIBC_2.4 __isinf F
+GLIBC_2.4 __isinff F
+GLIBC_2.4 __isinfl F
+GLIBC_2.4 __islower_l F
+GLIBC_2.4 __isnan F
+GLIBC_2.4 __isnanf F
+GLIBC_2.4 __isnanl F
+GLIBC_2.4 __isprint_l F
+GLIBC_2.4 __ispunct_l F
+GLIBC_2.4 __isspace_l F
+GLIBC_2.4 __isupper_l F
+GLIBC_2.4 __iswalnum_l F
+GLIBC_2.4 __iswalpha_l F
+GLIBC_2.4 __iswblank_l F
+GLIBC_2.4 __iswcntrl_l F
+GLIBC_2.4 __iswctype F
+GLIBC_2.4 __iswctype_l F
+GLIBC_2.4 __iswdigit_l F
+GLIBC_2.4 __iswgraph_l F
+GLIBC_2.4 __iswlower_l F
+GLIBC_2.4 __iswprint_l F
+GLIBC_2.4 __iswpunct_l F
+GLIBC_2.4 __iswspace_l F
+GLIBC_2.4 __iswupper_l F
+GLIBC_2.4 __iswxdigit_l F
+GLIBC_2.4 __isxdigit_l F
+GLIBC_2.4 __ivaliduser F
+GLIBC_2.4 __key_decryptsession_pk_LOCAL D 0x4
+GLIBC_2.4 __key_encryptsession_pk_LOCAL D 0x4
+GLIBC_2.4 __key_gendes_LOCAL D 0x4
+GLIBC_2.4 __libc_allocate_rtsig F
+GLIBC_2.4 __libc_calloc F
+GLIBC_2.4 __libc_current_sigrtmax F
+GLIBC_2.4 __libc_current_sigrtmin F
+GLIBC_2.4 __libc_free F
+GLIBC_2.4 __libc_freeres F
+GLIBC_2.4 __libc_init_first F
+GLIBC_2.4 __libc_mallinfo F
+GLIBC_2.4 __libc_malloc F
+GLIBC_2.4 __libc_mallopt F
+GLIBC_2.4 __libc_memalign F
+GLIBC_2.4 __libc_pvalloc F
+GLIBC_2.4 __libc_realloc F
+GLIBC_2.4 __libc_sa_len F
+GLIBC_2.4 __libc_start_main F
+GLIBC_2.4 __libc_valloc F
+GLIBC_2.4 __lseek F
+GLIBC_2.4 __lxstat F
+GLIBC_2.4 __lxstat64 F
+GLIBC_2.4 __malloc_hook D 0x4
+GLIBC_2.4 __malloc_initialize_hook D 0x4
+GLIBC_2.4 __mbrlen F
+GLIBC_2.4 __mbrtowc F
+GLIBC_2.4 __mbsnrtowcs_chk F
+GLIBC_2.4 __mbsrtowcs_chk F
+GLIBC_2.4 __mbstowcs_chk F
+GLIBC_2.4 __memalign_hook D 0x4
+GLIBC_2.4 __memcpy_chk F
+GLIBC_2.4 __memmove_chk F
+GLIBC_2.4 __mempcpy F
+GLIBC_2.4 __mempcpy_chk F
+GLIBC_2.4 __mempcpy_small F
+GLIBC_2.4 __memset_chk F
+GLIBC_2.4 __monstartup F
+GLIBC_2.4 __morecore D 0x4
+GLIBC_2.4 __nanosleep F
+GLIBC_2.4 __newlocale F
+GLIBC_2.4 __nl_langinfo_l F
+GLIBC_2.4 __nss_configure_lookup F
+GLIBC_2.4 __nss_database_lookup F
+GLIBC_2.4 __nss_group_lookup F
+GLIBC_2.4 __nss_hostname_digits_dots F
+GLIBC_2.4 __nss_hosts_lookup F
+GLIBC_2.4 __nss_next F
+GLIBC_2.4 __nss_passwd_lookup F
+GLIBC_2.4 __open F
+GLIBC_2.4 __open64 F
+GLIBC_2.4 __overflow F
+GLIBC_2.4 __pipe F
+GLIBC_2.4 __poll F
+GLIBC_2.4 __pread64 F
+GLIBC_2.4 __pread64_chk F
+GLIBC_2.4 __pread_chk F
+GLIBC_2.4 __printf_chk F
+GLIBC_2.4 __printf_fp F
+GLIBC_2.4 __profile_frequency F
+GLIBC_2.4 __progname D 0x4
+GLIBC_2.4 __progname_full D 0x4
+GLIBC_2.4 __ptsname_r_chk F
+GLIBC_2.4 __pwrite64 F
+GLIBC_2.4 __rawmemchr F
+GLIBC_2.4 __rcmd_errstr D 0x4
+GLIBC_2.4 __read F
+GLIBC_2.4 __read_chk F
+GLIBC_2.4 __readlink_chk F
+GLIBC_2.4 __realloc_hook D 0x4
+GLIBC_2.4 __realpath_chk F
+GLIBC_2.4 __recv_chk F
+GLIBC_2.4 __recvfrom_chk F
+GLIBC_2.4 __register_atfork F
+GLIBC_2.4 __res_init F
+GLIBC_2.4 __res_nclose F
+GLIBC_2.4 __res_ninit F
+GLIBC_2.4 __res_randomid F
+GLIBC_2.4 __res_state F
+GLIBC_2.4 __rpc_thread_createerr F
+GLIBC_2.4 __rpc_thread_svc_fdset F
+GLIBC_2.4 __rpc_thread_svc_max_pollfd F
+GLIBC_2.4 __rpc_thread_svc_pollfd F
+GLIBC_2.4 __sbrk F
+GLIBC_2.4 __sched_get_priority_max F
+GLIBC_2.4 __sched_get_priority_min F
+GLIBC_2.4 __sched_getparam F
+GLIBC_2.4 __sched_getscheduler F
+GLIBC_2.4 __sched_setscheduler F
+GLIBC_2.4 __sched_yield F
+GLIBC_2.4 __secure_getenv F
+GLIBC_2.4 __select F
+GLIBC_2.4 __send F
+GLIBC_2.4 __setmntent F
+GLIBC_2.4 __setpgid F
+GLIBC_2.4 __sigaction F
+GLIBC_2.4 __sigaddset F
+GLIBC_2.4 __sigdelset F
+GLIBC_2.4 __sigismember F
+GLIBC_2.4 __signbit F
+GLIBC_2.4 __signbitf F
+GLIBC_2.4 __sigpause F
+GLIBC_2.4 __sigsetjmp F
+GLIBC_2.4 __sigsuspend F
+GLIBC_2.4 __snprintf_chk F
+GLIBC_2.4 __sprintf_chk F
+GLIBC_2.4 __stack_chk_fail F
+GLIBC_2.4 __statfs F
+GLIBC_2.4 __stpcpy F
+GLIBC_2.4 __stpcpy_chk F
+GLIBC_2.4 __stpcpy_small F
+GLIBC_2.4 __stpncpy F
+GLIBC_2.4 __stpncpy_chk F
+GLIBC_2.4 __strcasecmp F
+GLIBC_2.4 __strcasecmp_l F
+GLIBC_2.4 __strcasestr F
+GLIBC_2.4 __strcat_chk F
+GLIBC_2.4 __strcoll_l F
+GLIBC_2.4 __strcpy_chk F
+GLIBC_2.4 __strcpy_small F
+GLIBC_2.4 __strcspn_c1 F
+GLIBC_2.4 __strcspn_c2 F
+GLIBC_2.4 __strcspn_c3 F
+GLIBC_2.4 __strdup F
+GLIBC_2.4 __strerror_r F
+GLIBC_2.4 __strfmon_l F
+GLIBC_2.4 __strftime_l F
+GLIBC_2.4 __strncasecmp_l F
+GLIBC_2.4 __strncat_chk F
+GLIBC_2.4 __strncpy_chk F
+GLIBC_2.4 __strndup F
+GLIBC_2.4 __strpbrk_c2 F
+GLIBC_2.4 __strpbrk_c3 F
+GLIBC_2.4 __strsep_1c F
+GLIBC_2.4 __strsep_2c F
+GLIBC_2.4 __strsep_3c F
+GLIBC_2.4 __strsep_g F
+GLIBC_2.4 __strspn_c1 F
+GLIBC_2.4 __strspn_c2 F
+GLIBC_2.4 __strspn_c3 F
+GLIBC_2.4 __strtod_internal F
+GLIBC_2.4 __strtod_l F
+GLIBC_2.4 __strtof_internal F
+GLIBC_2.4 __strtof_l F
+GLIBC_2.4 __strtok_r F
+GLIBC_2.4 __strtok_r_1c F
+GLIBC_2.4 __strtol_internal F
+GLIBC_2.4 __strtol_l F
+GLIBC_2.4 __strtold_internal F
+GLIBC_2.4 __strtold_l F
+GLIBC_2.4 __strtoll_internal F
+GLIBC_2.4 __strtoll_l F
+GLIBC_2.4 __strtoul_internal F
+GLIBC_2.4 __strtoul_l F
+GLIBC_2.4 __strtoull_internal F
+GLIBC_2.4 __strtoull_l F
+GLIBC_2.4 __strverscmp F
+GLIBC_2.4 __strxfrm_l F
+GLIBC_2.4 __swprintf_chk F
+GLIBC_2.4 __sysconf F
+GLIBC_2.4 __sysctl F
+GLIBC_2.4 __syslog_chk F
+GLIBC_2.4 __sysv_signal F
+GLIBC_2.4 __timezone D 0x4
+GLIBC_2.4 __toascii_l F
+GLIBC_2.4 __tolower_l F
+GLIBC_2.4 __toupper_l F
+GLIBC_2.4 __towctrans F
+GLIBC_2.4 __towctrans_l F
+GLIBC_2.4 __towlower_l F
+GLIBC_2.4 __towupper_l F
+GLIBC_2.4 __ttyname_r_chk F
+GLIBC_2.4 __tzname D 0x8
+GLIBC_2.4 __uflow F
+GLIBC_2.4 __underflow F
+GLIBC_2.4 __uselocale F
+GLIBC_2.4 __vfork F
+GLIBC_2.4 __vfprintf_chk F
+GLIBC_2.4 __vfscanf F
+GLIBC_2.4 __vfwprintf_chk F
+GLIBC_2.4 __vprintf_chk F
+GLIBC_2.4 __vsnprintf F
+GLIBC_2.4 __vsnprintf_chk F
+GLIBC_2.4 __vsprintf_chk F
+GLIBC_2.4 __vsscanf F
+GLIBC_2.4 __vswprintf_chk F
+GLIBC_2.4 __vsyslog_chk F
+GLIBC_2.4 __vwprintf_chk F
+GLIBC_2.4 __wait F
+GLIBC_2.4 __waitpid F
+GLIBC_2.4 __wcpcpy_chk F
+GLIBC_2.4 __wcpncpy_chk F
+GLIBC_2.4 __wcrtomb_chk F
+GLIBC_2.4 __wcscasecmp_l F
+GLIBC_2.4 __wcscat_chk F
+GLIBC_2.4 __wcscoll_l F
+GLIBC_2.4 __wcscpy_chk F
+GLIBC_2.4 __wcsftime_l F
+GLIBC_2.4 __wcsncasecmp_l F
+GLIBC_2.4 __wcsncat_chk F
+GLIBC_2.4 __wcsncpy_chk F
+GLIBC_2.4 __wcsnrtombs_chk F
+GLIBC_2.4 __wcsrtombs_chk F
+GLIBC_2.4 __wcstod_internal F
+GLIBC_2.4 __wcstod_l F
+GLIBC_2.4 __wcstof_internal F
+GLIBC_2.4 __wcstof_l F
+GLIBC_2.4 __wcstol_internal F
+GLIBC_2.4 __wcstol_l F
+GLIBC_2.4 __wcstold_internal F
+GLIBC_2.4 __wcstold_l F
+GLIBC_2.4 __wcstoll_internal F
+GLIBC_2.4 __wcstoll_l F
+GLIBC_2.4 __wcstombs_chk F
+GLIBC_2.4 __wcstoul_internal F
+GLIBC_2.4 __wcstoul_l F
+GLIBC_2.4 __wcstoull_internal F
+GLIBC_2.4 __wcstoull_l F
+GLIBC_2.4 __wcsxfrm_l F
+GLIBC_2.4 __wctomb_chk F
+GLIBC_2.4 __wctrans_l F
+GLIBC_2.4 __wctype_l F
+GLIBC_2.4 __wmemcpy_chk F
+GLIBC_2.4 __wmemmove_chk F
+GLIBC_2.4 __wmempcpy_chk F
+GLIBC_2.4 __wmemset_chk F
+GLIBC_2.4 __woverflow F
+GLIBC_2.4 __wprintf_chk F
+GLIBC_2.4 __write F
+GLIBC_2.4 __wuflow F
+GLIBC_2.4 __wunderflow F
+GLIBC_2.4 __xmknod F
+GLIBC_2.4 __xmknodat F
+GLIBC_2.4 __xpg_basename F
+GLIBC_2.4 __xpg_sigpause F
+GLIBC_2.4 __xpg_strerror_r F
+GLIBC_2.4 __xstat F
+GLIBC_2.4 __xstat64 F
+GLIBC_2.4 _authenticate F
+GLIBC_2.4 _dl_mcount_wrapper F
+GLIBC_2.4 _dl_mcount_wrapper_check F
+GLIBC_2.4 _environ D 0x4
+GLIBC_2.4 _exit F
+GLIBC_2.4 _flushlbf F
+GLIBC_2.4 _libc_intl_domainname D 0x5
+GLIBC_2.4 _longjmp F
+GLIBC_2.4 _mcleanup F
+GLIBC_2.4 _mcount F
+GLIBC_2.4 _nl_default_dirname D 0x12
+GLIBC_2.4 _nl_domain_bindings D 0x4
+GLIBC_2.4 _nl_msg_cat_cntr D 0x4
+GLIBC_2.4 _null_auth D 0xc
+GLIBC_2.4 _obstack_allocated_p F
+GLIBC_2.4 _obstack_begin F
+GLIBC_2.4 _obstack_begin_1 F
+GLIBC_2.4 _obstack_free F
+GLIBC_2.4 _obstack_memory_used F
+GLIBC_2.4 _obstack_newchunk F
+GLIBC_2.4 _res D 0x200
+GLIBC_2.4 _res_hconf D 0x30
+GLIBC_2.4 _rpc_dtablesize F
+GLIBC_2.4 _seterr_reply F
+GLIBC_2.4 _setjmp F
+GLIBC_2.4 _sys_errlist D 0x210
+GLIBC_2.4 _sys_nerr D 0x4
+GLIBC_2.4 _sys_siglist D 0x104
+GLIBC_2.4 _tolower F
+GLIBC_2.4 _toupper F
+GLIBC_2.4 a64l F
+GLIBC_2.4 abort F
+GLIBC_2.4 abs F
+GLIBC_2.4 accept F
+GLIBC_2.4 access F
+GLIBC_2.4 acct F
+GLIBC_2.4 addmntent F
+GLIBC_2.4 addseverity F
+GLIBC_2.4 adjtime F
+GLIBC_2.4 adjtimex F
+GLIBC_2.4 advance F
+GLIBC_2.4 alarm F
+GLIBC_2.4 alphasort F
+GLIBC_2.4 alphasort64 F
+GLIBC_2.4 argp_err_exit_status D 0x4
+GLIBC_2.4 argp_error F
+GLIBC_2.4 argp_failure F
+GLIBC_2.4 argp_help F
+GLIBC_2.4 argp_parse F
+GLIBC_2.4 argp_program_bug_address D 0x4
+GLIBC_2.4 argp_program_version D 0x4
+GLIBC_2.4 argp_program_version_hook D 0x4
+GLIBC_2.4 argp_state_help F
+GLIBC_2.4 argp_usage F
+GLIBC_2.4 argz_add F
+GLIBC_2.4 argz_add_sep F
+GLIBC_2.4 argz_append F
+GLIBC_2.4 argz_count F
+GLIBC_2.4 argz_create F
+GLIBC_2.4 argz_create_sep F
+GLIBC_2.4 argz_delete F
+GLIBC_2.4 argz_extract F
+GLIBC_2.4 argz_insert F
+GLIBC_2.4 argz_next F
+GLIBC_2.4 argz_replace F
+GLIBC_2.4 argz_stringify F
+GLIBC_2.4 asctime F
+GLIBC_2.4 asctime_r F
+GLIBC_2.4 asprintf F
+GLIBC_2.4 atof F
+GLIBC_2.4 atoi F
+GLIBC_2.4 atol F
+GLIBC_2.4 atoll F
+GLIBC_2.4 authdes_create F
+GLIBC_2.4 authdes_getucred F
+GLIBC_2.4 authdes_pk_create F
+GLIBC_2.4 authnone_create F
+GLIBC_2.4 authunix_create F
+GLIBC_2.4 authunix_create_default F
+GLIBC_2.4 backtrace F
+GLIBC_2.4 backtrace_symbols F
+GLIBC_2.4 backtrace_symbols_fd F
+GLIBC_2.4 basename F
+GLIBC_2.4 bcmp F
+GLIBC_2.4 bcopy F
+GLIBC_2.4 bdflush F
+GLIBC_2.4 bind F
+GLIBC_2.4 bind_textdomain_codeset F
+GLIBC_2.4 bindresvport F
+GLIBC_2.4 bindtextdomain F
+GLIBC_2.4 brk F
+GLIBC_2.4 bsd_signal F
+GLIBC_2.4 bsearch F
+GLIBC_2.4 btowc F
+GLIBC_2.4 bzero F
+GLIBC_2.4 calloc F
+GLIBC_2.4 callrpc F
+GLIBC_2.4 canonicalize_file_name F
+GLIBC_2.4 capget F
+GLIBC_2.4 capset F
+GLIBC_2.4 catclose F
+GLIBC_2.4 catgets F
+GLIBC_2.4 catopen F
+GLIBC_2.4 cbc_crypt F
+GLIBC_2.4 cfgetispeed F
+GLIBC_2.4 cfgetospeed F
+GLIBC_2.4 cfmakeraw F
+GLIBC_2.4 cfree F
+GLIBC_2.4 cfsetispeed F
+GLIBC_2.4 cfsetospeed F
+GLIBC_2.4 cfsetspeed F
+GLIBC_2.4 chdir F
+GLIBC_2.4 chflags F
+GLIBC_2.4 chmod F
+GLIBC_2.4 chown F
+GLIBC_2.4 chroot F
+GLIBC_2.4 clearenv F
+GLIBC_2.4 clearerr F
+GLIBC_2.4 clearerr_unlocked F
+GLIBC_2.4 clnt_broadcast F
+GLIBC_2.4 clnt_create F
+GLIBC_2.4 clnt_pcreateerror F
+GLIBC_2.4 clnt_perrno F
+GLIBC_2.4 clnt_perror F
+GLIBC_2.4 clnt_spcreateerror F
+GLIBC_2.4 clnt_sperrno F
+GLIBC_2.4 clnt_sperror F
+GLIBC_2.4 clntraw_create F
+GLIBC_2.4 clnttcp_create F
+GLIBC_2.4 clntudp_bufcreate F
+GLIBC_2.4 clntudp_create F
+GLIBC_2.4 clntunix_create F
+GLIBC_2.4 clock F
+GLIBC_2.4 clone F
+GLIBC_2.4 close F
+GLIBC_2.4 closedir F
+GLIBC_2.4 closelog F
+GLIBC_2.4 confstr F
+GLIBC_2.4 connect F
+GLIBC_2.4 copysign F
+GLIBC_2.4 copysignf F
+GLIBC_2.4 copysignl F
+GLIBC_2.4 creat F
+GLIBC_2.4 creat64 F
+GLIBC_2.4 create_module F
+GLIBC_2.4 ctermid F
+GLIBC_2.4 ctime F
+GLIBC_2.4 ctime_r F
+GLIBC_2.4 cuserid F
+GLIBC_2.4 daemon F
+GLIBC_2.4 daylight D 0x4
+GLIBC_2.4 dcgettext F
+GLIBC_2.4 dcngettext F
+GLIBC_2.4 delete_module F
+GLIBC_2.4 des_setparity F
+GLIBC_2.4 dgettext F
+GLIBC_2.4 difftime F
+GLIBC_2.4 dirfd F
+GLIBC_2.4 dirname F
+GLIBC_2.4 div F
+GLIBC_2.4 dl_iterate_phdr F
+GLIBC_2.4 dngettext F
+GLIBC_2.4 dprintf F
+GLIBC_2.4 drand48 F
+GLIBC_2.4 drand48_r F
+GLIBC_2.4 dup F
+GLIBC_2.4 dup2 F
+GLIBC_2.4 duplocale F
+GLIBC_2.4 dysize F
+GLIBC_2.4 eaccess F
+GLIBC_2.4 ecb_crypt F
+GLIBC_2.4 ecvt F
+GLIBC_2.4 ecvt_r F
+GLIBC_2.4 endaliasent F
+GLIBC_2.4 endfsent F
+GLIBC_2.4 endgrent F
+GLIBC_2.4 endhostent F
+GLIBC_2.4 endmntent F
+GLIBC_2.4 endnetent F
+GLIBC_2.4 endnetgrent F
+GLIBC_2.4 endprotoent F
+GLIBC_2.4 endpwent F
+GLIBC_2.4 endrpcent F
+GLIBC_2.4 endservent F
+GLIBC_2.4 endspent F
+GLIBC_2.4 endttyent F
+GLIBC_2.4 endusershell F
+GLIBC_2.4 endutent F
+GLIBC_2.4 endutxent F
+GLIBC_2.4 environ D 0x4
+GLIBC_2.4 envz_add F
+GLIBC_2.4 envz_entry F
+GLIBC_2.4 envz_get F
+GLIBC_2.4 envz_merge F
+GLIBC_2.4 envz_remove F
+GLIBC_2.4 envz_strip F
+GLIBC_2.4 epoll_create F
+GLIBC_2.4 epoll_ctl F
+GLIBC_2.4 epoll_wait F
+GLIBC_2.4 erand48 F
+GLIBC_2.4 erand48_r F
+GLIBC_2.4 err F
+GLIBC_2.4 error F
+GLIBC_2.4 error_at_line F
+GLIBC_2.4 error_message_count D 0x4
+GLIBC_2.4 error_one_per_line D 0x4
+GLIBC_2.4 error_print_progname D 0x4
+GLIBC_2.4 errx F
+GLIBC_2.4 ether_aton F
+GLIBC_2.4 ether_aton_r F
+GLIBC_2.4 ether_hostton F
+GLIBC_2.4 ether_line F
+GLIBC_2.4 ether_ntoa F
+GLIBC_2.4 ether_ntoa_r F
+GLIBC_2.4 ether_ntohost F
+GLIBC_2.4 euidaccess F
+GLIBC_2.4 execl F
+GLIBC_2.4 execle F
+GLIBC_2.4 execlp F
+GLIBC_2.4 execv F
+GLIBC_2.4 execve F
+GLIBC_2.4 execvp F
+GLIBC_2.4 exit F
+GLIBC_2.4 faccessat F
+GLIBC_2.4 fattach F
+GLIBC_2.4 fchdir F
+GLIBC_2.4 fchflags F
+GLIBC_2.4 fchmod F
+GLIBC_2.4 fchmodat F
+GLIBC_2.4 fchown F
+GLIBC_2.4 fchownat F
+GLIBC_2.4 fclose F
+GLIBC_2.4 fcloseall F
+GLIBC_2.4 fcntl F
+GLIBC_2.4 fcvt F
+GLIBC_2.4 fcvt_r F
+GLIBC_2.4 fdatasync F
+GLIBC_2.4 fdetach F
+GLIBC_2.4 fdopen F
+GLIBC_2.4 fdopendir F
+GLIBC_2.4 feof F
+GLIBC_2.4 feof_unlocked F
+GLIBC_2.4 ferror F
+GLIBC_2.4 ferror_unlocked F
+GLIBC_2.4 fexecve F
+GLIBC_2.4 fflush F
+GLIBC_2.4 fflush_unlocked F
+GLIBC_2.4 ffs F
+GLIBC_2.4 ffsl F
+GLIBC_2.4 ffsll F
+GLIBC_2.4 fgetc F
+GLIBC_2.4 fgetc_unlocked F
+GLIBC_2.4 fgetgrent F
+GLIBC_2.4 fgetgrent_r F
+GLIBC_2.4 fgetpos F
+GLIBC_2.4 fgetpos64 F
+GLIBC_2.4 fgetpwent F
+GLIBC_2.4 fgetpwent_r F
+GLIBC_2.4 fgets F
+GLIBC_2.4 fgets_unlocked F
+GLIBC_2.4 fgetspent F
+GLIBC_2.4 fgetspent_r F
+GLIBC_2.4 fgetwc F
+GLIBC_2.4 fgetwc_unlocked F
+GLIBC_2.4 fgetws F
+GLIBC_2.4 fgetws_unlocked F
+GLIBC_2.4 fgetxattr F
+GLIBC_2.4 fileno F
+GLIBC_2.4 fileno_unlocked F
+GLIBC_2.4 finite F
+GLIBC_2.4 finitef F
+GLIBC_2.4 finitel F
+GLIBC_2.4 flistxattr F
+GLIBC_2.4 flock F
+GLIBC_2.4 flockfile F
+GLIBC_2.4 fmemopen F
+GLIBC_2.4 fmtmsg F
+GLIBC_2.4 fnmatch F
+GLIBC_2.4 fopen F
+GLIBC_2.4 fopen64 F
+GLIBC_2.4 fopencookie F
+GLIBC_2.4 fork F
+GLIBC_2.4 fpathconf F
+GLIBC_2.4 fprintf F
+GLIBC_2.4 fputc F
+GLIBC_2.4 fputc_unlocked F
+GLIBC_2.4 fputs F
+GLIBC_2.4 fputs_unlocked F
+GLIBC_2.4 fputwc F
+GLIBC_2.4 fputwc_unlocked F
+GLIBC_2.4 fputws F
+GLIBC_2.4 fputws_unlocked F
+GLIBC_2.4 fread F
+GLIBC_2.4 fread_unlocked F
+GLIBC_2.4 free F
+GLIBC_2.4 freeaddrinfo F
+GLIBC_2.4 freeifaddrs F
+GLIBC_2.4 freelocale F
+GLIBC_2.4 fremovexattr F
+GLIBC_2.4 freopen F
+GLIBC_2.4 freopen64 F
+GLIBC_2.4 frexp F
+GLIBC_2.4 frexpf F
+GLIBC_2.4 frexpl F
+GLIBC_2.4 fscanf F
+GLIBC_2.4 fseek F
+GLIBC_2.4 fseeko F
+GLIBC_2.4 fseeko64 F
+GLIBC_2.4 fsetpos F
+GLIBC_2.4 fsetpos64 F
+GLIBC_2.4 fsetxattr F
+GLIBC_2.4 fstatfs F
+GLIBC_2.4 fstatfs64 F
+GLIBC_2.4 fstatvfs F
+GLIBC_2.4 fstatvfs64 F
+GLIBC_2.4 fsync F
+GLIBC_2.4 ftell F
+GLIBC_2.4 ftello F
+GLIBC_2.4 ftello64 F
+GLIBC_2.4 ftime F
+GLIBC_2.4 ftok F
+GLIBC_2.4 ftruncate F
+GLIBC_2.4 ftruncate64 F
+GLIBC_2.4 ftrylockfile F
+GLIBC_2.4 fts_children F
+GLIBC_2.4 fts_close F
+GLIBC_2.4 fts_open F
+GLIBC_2.4 fts_read F
+GLIBC_2.4 fts_set F
+GLIBC_2.4 ftw F
+GLIBC_2.4 ftw64 F
+GLIBC_2.4 funlockfile F
+GLIBC_2.4 futimes F
+GLIBC_2.4 futimesat F
+GLIBC_2.4 fwide F
+GLIBC_2.4 fwprintf F
+GLIBC_2.4 fwrite F
+GLIBC_2.4 fwrite_unlocked F
+GLIBC_2.4 fwscanf F
+GLIBC_2.4 gai_strerror F
+GLIBC_2.4 gcvt F
+GLIBC_2.4 get_avphys_pages F
+GLIBC_2.4 get_current_dir_name F
+GLIBC_2.4 get_kernel_syms F
+GLIBC_2.4 get_myaddress F
+GLIBC_2.4 get_nprocs F
+GLIBC_2.4 get_nprocs_conf F
+GLIBC_2.4 get_phys_pages F
+GLIBC_2.4 getaddrinfo F
+GLIBC_2.4 getaliasbyname F
+GLIBC_2.4 getaliasbyname_r F
+GLIBC_2.4 getaliasent F
+GLIBC_2.4 getaliasent_r F
+GLIBC_2.4 getc F
+GLIBC_2.4 getc_unlocked F
+GLIBC_2.4 getchar F
+GLIBC_2.4 getchar_unlocked F
+GLIBC_2.4 getcontext F
+GLIBC_2.4 getcwd F
+GLIBC_2.4 getdate F
+GLIBC_2.4 getdate_err D 0x4
+GLIBC_2.4 getdate_r F
+GLIBC_2.4 getdelim F
+GLIBC_2.4 getdirentries F
+GLIBC_2.4 getdirentries64 F
+GLIBC_2.4 getdomainname F
+GLIBC_2.4 getdtablesize F
+GLIBC_2.4 getegid F
+GLIBC_2.4 getenv F
+GLIBC_2.4 geteuid F
+GLIBC_2.4 getfsent F
+GLIBC_2.4 getfsfile F
+GLIBC_2.4 getfsspec F
+GLIBC_2.4 getgid F
+GLIBC_2.4 getgrent F
+GLIBC_2.4 getgrent_r F
+GLIBC_2.4 getgrgid F
+GLIBC_2.4 getgrgid_r F
+GLIBC_2.4 getgrnam F
+GLIBC_2.4 getgrnam_r F
+GLIBC_2.4 getgrouplist F
+GLIBC_2.4 getgroups F
+GLIBC_2.4 gethostbyaddr F
+GLIBC_2.4 gethostbyaddr_r F
+GLIBC_2.4 gethostbyname F
+GLIBC_2.4 gethostbyname2 F
+GLIBC_2.4 gethostbyname2_r F
+GLIBC_2.4 gethostbyname_r F
+GLIBC_2.4 gethostent F
+GLIBC_2.4 gethostent_r F
+GLIBC_2.4 gethostid F
+GLIBC_2.4 gethostname F
+GLIBC_2.4 getifaddrs F
+GLIBC_2.4 getipv4sourcefilter F
+GLIBC_2.4 getitimer F
+GLIBC_2.4 getline F
+GLIBC_2.4 getloadavg F
+GLIBC_2.4 getlogin F
+GLIBC_2.4 getlogin_r F
+GLIBC_2.4 getmntent F
+GLIBC_2.4 getmntent_r F
+GLIBC_2.4 getmsg F
+GLIBC_2.4 getnameinfo F
+GLIBC_2.4 getnetbyaddr F
+GLIBC_2.4 getnetbyaddr_r F
+GLIBC_2.4 getnetbyname F
+GLIBC_2.4 getnetbyname_r F
+GLIBC_2.4 getnetent F
+GLIBC_2.4 getnetent_r F
+GLIBC_2.4 getnetgrent F
+GLIBC_2.4 getnetgrent_r F
+GLIBC_2.4 getnetname F
+GLIBC_2.4 getopt F
+GLIBC_2.4 getopt_long F
+GLIBC_2.4 getopt_long_only F
+GLIBC_2.4 getpagesize F
+GLIBC_2.4 getpass F
+GLIBC_2.4 getpeername F
+GLIBC_2.4 getpgid F
+GLIBC_2.4 getpgrp F
+GLIBC_2.4 getpid F
+GLIBC_2.4 getpmsg F
+GLIBC_2.4 getppid F
+GLIBC_2.4 getpriority F
+GLIBC_2.4 getprotobyname F
+GLIBC_2.4 getprotobyname_r F
+GLIBC_2.4 getprotobynumber F
+GLIBC_2.4 getprotobynumber_r F
+GLIBC_2.4 getprotoent F
+GLIBC_2.4 getprotoent_r F
+GLIBC_2.4 getpt F
+GLIBC_2.4 getpublickey F
+GLIBC_2.4 getpw F
+GLIBC_2.4 getpwent F
+GLIBC_2.4 getpwent_r F
+GLIBC_2.4 getpwnam F
+GLIBC_2.4 getpwnam_r F
+GLIBC_2.4 getpwuid F
+GLIBC_2.4 getpwuid_r F
+GLIBC_2.4 getresgid F
+GLIBC_2.4 getresuid F
+GLIBC_2.4 getrlimit F
+GLIBC_2.4 getrlimit64 F
+GLIBC_2.4 getrpcbyname F
+GLIBC_2.4 getrpcbyname_r F
+GLIBC_2.4 getrpcbynumber F
+GLIBC_2.4 getrpcbynumber_r F
+GLIBC_2.4 getrpcent F
+GLIBC_2.4 getrpcent_r F
+GLIBC_2.4 getrpcport F
+GLIBC_2.4 getrusage F
+GLIBC_2.4 gets F
+GLIBC_2.4 getsecretkey F
+GLIBC_2.4 getservbyname F
+GLIBC_2.4 getservbyname_r F
+GLIBC_2.4 getservbyport F
+GLIBC_2.4 getservbyport_r F
+GLIBC_2.4 getservent F
+GLIBC_2.4 getservent_r F
+GLIBC_2.4 getsid F
+GLIBC_2.4 getsockname F
+GLIBC_2.4 getsockopt F
+GLIBC_2.4 getsourcefilter F
+GLIBC_2.4 getspent F
+GLIBC_2.4 getspent_r F
+GLIBC_2.4 getspnam F
+GLIBC_2.4 getspnam_r F
+GLIBC_2.4 getsubopt F
+GLIBC_2.4 gettext F
+GLIBC_2.4 gettimeofday F
+GLIBC_2.4 getttyent F
+GLIBC_2.4 getttynam F
+GLIBC_2.4 getuid F
+GLIBC_2.4 getusershell F
+GLIBC_2.4 getutent F
+GLIBC_2.4 getutent_r F
+GLIBC_2.4 getutid F
+GLIBC_2.4 getutid_r F
+GLIBC_2.4 getutline F
+GLIBC_2.4 getutline_r F
+GLIBC_2.4 getutmp F
+GLIBC_2.4 getutmpx F
+GLIBC_2.4 getutxent F
+GLIBC_2.4 getutxid F
+GLIBC_2.4 getutxline F
+GLIBC_2.4 getw F
+GLIBC_2.4 getwc F
+GLIBC_2.4 getwc_unlocked F
+GLIBC_2.4 getwchar F
+GLIBC_2.4 getwchar_unlocked F
+GLIBC_2.4 getwd F
+GLIBC_2.4 getxattr F
+GLIBC_2.4 glob F
+GLIBC_2.4 glob64 F
+GLIBC_2.4 glob_pattern_p F
+GLIBC_2.4 globfree F
+GLIBC_2.4 globfree64 F
+GLIBC_2.4 gmtime F
+GLIBC_2.4 gmtime_r F
+GLIBC_2.4 gnu_dev_major F
+GLIBC_2.4 gnu_dev_makedev F
+GLIBC_2.4 gnu_dev_minor F
+GLIBC_2.4 gnu_get_libc_release F
+GLIBC_2.4 gnu_get_libc_version F
+GLIBC_2.4 grantpt F
+GLIBC_2.4 group_member F
+GLIBC_2.4 gsignal F
+GLIBC_2.4 gtty F
+GLIBC_2.4 h_errlist D 0x14
+GLIBC_2.4 h_nerr D 0x4
+GLIBC_2.4 hasmntopt F
+GLIBC_2.4 hcreate F
+GLIBC_2.4 hcreate_r F
+GLIBC_2.4 hdestroy F
+GLIBC_2.4 hdestroy_r F
+GLIBC_2.4 herror F
+GLIBC_2.4 host2netname F
+GLIBC_2.4 hsearch F
+GLIBC_2.4 hsearch_r F
+GLIBC_2.4 hstrerror F
+GLIBC_2.4 htonl F
+GLIBC_2.4 htons F
+GLIBC_2.4 iconv F
+GLIBC_2.4 iconv_close F
+GLIBC_2.4 iconv_open F
+GLIBC_2.4 if_freenameindex F
+GLIBC_2.4 if_indextoname F
+GLIBC_2.4 if_nameindex F
+GLIBC_2.4 if_nametoindex F
+GLIBC_2.4 imaxabs F
+GLIBC_2.4 imaxdiv F
+GLIBC_2.4 in6addr_any D 0x10
+GLIBC_2.4 in6addr_loopback D 0x10
+GLIBC_2.4 inb F
+GLIBC_2.4 index F
+GLIBC_2.4 inet6_option_alloc F
+GLIBC_2.4 inet6_option_append F
+GLIBC_2.4 inet6_option_find F
+GLIBC_2.4 inet6_option_init F
+GLIBC_2.4 inet6_option_next F
+GLIBC_2.4 inet6_option_space F
+GLIBC_2.4 inet_addr F
+GLIBC_2.4 inet_aton F
+GLIBC_2.4 inet_lnaof F
+GLIBC_2.4 inet_makeaddr F
+GLIBC_2.4 inet_netof F
+GLIBC_2.4 inet_network F
+GLIBC_2.4 inet_nsap_addr F
+GLIBC_2.4 inet_nsap_ntoa F
+GLIBC_2.4 inet_ntoa F
+GLIBC_2.4 inet_ntop F
+GLIBC_2.4 inet_pton F
+GLIBC_2.4 init_module F
+GLIBC_2.4 initgroups F
+GLIBC_2.4 initstate F
+GLIBC_2.4 initstate_r F
+GLIBC_2.4 inl F
+GLIBC_2.4 innetgr F
+GLIBC_2.4 inotify_add_watch F
+GLIBC_2.4 inotify_init F
+GLIBC_2.4 inotify_rm_watch F
+GLIBC_2.4 insque F
+GLIBC_2.4 inw F
+GLIBC_2.4 ioctl F
+GLIBC_2.4 ioperm F
+GLIBC_2.4 iopl F
+GLIBC_2.4 iruserok F
+GLIBC_2.4 iruserok_af F
+GLIBC_2.4 isalnum F
+GLIBC_2.4 isalnum_l F
+GLIBC_2.4 isalpha F
+GLIBC_2.4 isalpha_l F
+GLIBC_2.4 isascii F
+GLIBC_2.4 isastream F
+GLIBC_2.4 isatty F
+GLIBC_2.4 isblank F
+GLIBC_2.4 isblank_l F
+GLIBC_2.4 iscntrl F
+GLIBC_2.4 iscntrl_l F
+GLIBC_2.4 isctype F
+GLIBC_2.4 isdigit F
+GLIBC_2.4 isdigit_l F
+GLIBC_2.4 isfdtype F
+GLIBC_2.4 isgraph F
+GLIBC_2.4 isgraph_l F
+GLIBC_2.4 isinf F
+GLIBC_2.4 isinff F
+GLIBC_2.4 isinfl F
+GLIBC_2.4 islower F
+GLIBC_2.4 islower_l F
+GLIBC_2.4 isnan F
+GLIBC_2.4 isnanf F
+GLIBC_2.4 isnanl F
+GLIBC_2.4 isprint F
+GLIBC_2.4 isprint_l F
+GLIBC_2.4 ispunct F
+GLIBC_2.4 ispunct_l F
+GLIBC_2.4 isspace F
+GLIBC_2.4 isspace_l F
+GLIBC_2.4 isupper F
+GLIBC_2.4 isupper_l F
+GLIBC_2.4 iswalnum F
+GLIBC_2.4 iswalnum_l F
+GLIBC_2.4 iswalpha F
+GLIBC_2.4 iswalpha_l F
+GLIBC_2.4 iswblank F
+GLIBC_2.4 iswblank_l F
+GLIBC_2.4 iswcntrl F
+GLIBC_2.4 iswcntrl_l F
+GLIBC_2.4 iswctype F
+GLIBC_2.4 iswctype_l F
+GLIBC_2.4 iswdigit F
+GLIBC_2.4 iswdigit_l F
+GLIBC_2.4 iswgraph F
+GLIBC_2.4 iswgraph_l F
+GLIBC_2.4 iswlower F
+GLIBC_2.4 iswlower_l F
+GLIBC_2.4 iswprint F
+GLIBC_2.4 iswprint_l F
+GLIBC_2.4 iswpunct F
+GLIBC_2.4 iswpunct_l F
+GLIBC_2.4 iswspace F
+GLIBC_2.4 iswspace_l F
+GLIBC_2.4 iswupper F
+GLIBC_2.4 iswupper_l F
+GLIBC_2.4 iswxdigit F
+GLIBC_2.4 iswxdigit_l F
+GLIBC_2.4 isxdigit F
+GLIBC_2.4 isxdigit_l F
+GLIBC_2.4 jrand48 F
+GLIBC_2.4 jrand48_r F
+GLIBC_2.4 key_decryptsession F
+GLIBC_2.4 key_decryptsession_pk F
+GLIBC_2.4 key_encryptsession F
+GLIBC_2.4 key_encryptsession_pk F
+GLIBC_2.4 key_gendes F
+GLIBC_2.4 key_get_conv F
+GLIBC_2.4 key_secretkey_is_set F
+GLIBC_2.4 key_setnet F
+GLIBC_2.4 key_setsecret F
+GLIBC_2.4 kill F
+GLIBC_2.4 killpg F
+GLIBC_2.4 klogctl F
+GLIBC_2.4 l64a F
+GLIBC_2.4 labs F
+GLIBC_2.4 lchmod F
+GLIBC_2.4 lchown F
+GLIBC_2.4 lckpwdf F
+GLIBC_2.4 lcong48 F
+GLIBC_2.4 lcong48_r F
+GLIBC_2.4 ldexp F
+GLIBC_2.4 ldexpf F
+GLIBC_2.4 ldexpl F
+GLIBC_2.4 ldiv F
+GLIBC_2.4 lfind F
+GLIBC_2.4 lgetxattr F
+GLIBC_2.4 link F
+GLIBC_2.4 linkat F
+GLIBC_2.4 listen F
+GLIBC_2.4 listxattr F
+GLIBC_2.4 llabs F
+GLIBC_2.4 lldiv F
+GLIBC_2.4 llistxattr F
+GLIBC_2.4 llseek F
+GLIBC_2.4 loc1 D 0x4
+GLIBC_2.4 loc2 D 0x4
+GLIBC_2.4 localeconv F
+GLIBC_2.4 localtime F
+GLIBC_2.4 localtime_r F
+GLIBC_2.4 lockf F
+GLIBC_2.4 lockf64 F
+GLIBC_2.4 locs D 0x4
+GLIBC_2.4 longjmp F
+GLIBC_2.4 lrand48 F
+GLIBC_2.4 lrand48_r F
+GLIBC_2.4 lremovexattr F
+GLIBC_2.4 lsearch F
+GLIBC_2.4 lseek F
+GLIBC_2.4 lseek64 F
+GLIBC_2.4 lsetxattr F
+GLIBC_2.4 lutimes F
+GLIBC_2.4 madvise F
+GLIBC_2.4 makecontext F
+GLIBC_2.4 mallinfo F
+GLIBC_2.4 malloc F
+GLIBC_2.4 malloc_get_state F
+GLIBC_2.4 malloc_set_state F
+GLIBC_2.4 malloc_stats F
+GLIBC_2.4 malloc_trim F
+GLIBC_2.4 malloc_usable_size F
+GLIBC_2.4 mallopt F
+GLIBC_2.4 mallwatch D 0x4
+GLIBC_2.4 mblen F
+GLIBC_2.4 mbrlen F
+GLIBC_2.4 mbrtowc F
+GLIBC_2.4 mbsinit F
+GLIBC_2.4 mbsnrtowcs F
+GLIBC_2.4 mbsrtowcs F
+GLIBC_2.4 mbstowcs F
+GLIBC_2.4 mbtowc F
+GLIBC_2.4 mcheck F
+GLIBC_2.4 mcheck_check_all F
+GLIBC_2.4 mcheck_pedantic F
+GLIBC_2.4 mcount F
+GLIBC_2.4 memalign F
+GLIBC_2.4 memccpy F
+GLIBC_2.4 memchr F
+GLIBC_2.4 memcmp F
+GLIBC_2.4 memcpy F
+GLIBC_2.4 memfrob F
+GLIBC_2.4 memmem F
+GLIBC_2.4 memmove F
+GLIBC_2.4 mempcpy F
+GLIBC_2.4 memrchr F
+GLIBC_2.4 memset F
+GLIBC_2.4 mincore F
+GLIBC_2.4 mkdir F
+GLIBC_2.4 mkdirat F
+GLIBC_2.4 mkdtemp F
+GLIBC_2.4 mkfifo F
+GLIBC_2.4 mkfifoat F
+GLIBC_2.4 mkstemp F
+GLIBC_2.4 mkstemp64 F
+GLIBC_2.4 mktemp F
+GLIBC_2.4 mktime F
+GLIBC_2.4 mlock F
+GLIBC_2.4 mlockall F
+GLIBC_2.4 mmap F
+GLIBC_2.4 mmap64 F
+GLIBC_2.4 modf F
+GLIBC_2.4 modff F
+GLIBC_2.4 modfl F
+GLIBC_2.4 moncontrol F
+GLIBC_2.4 monstartup F
+GLIBC_2.4 mount F
+GLIBC_2.4 mprobe F
+GLIBC_2.4 mprotect F
+GLIBC_2.4 mrand48 F
+GLIBC_2.4 mrand48_r F
+GLIBC_2.4 mremap F
+GLIBC_2.4 msgctl F
+GLIBC_2.4 msgget F
+GLIBC_2.4 msgrcv F
+GLIBC_2.4 msgsnd F
+GLIBC_2.4 msync F
+GLIBC_2.4 mtrace F
+GLIBC_2.4 munlock F
+GLIBC_2.4 munlockall F
+GLIBC_2.4 munmap F
+GLIBC_2.4 muntrace F
+GLIBC_2.4 nanosleep F
+GLIBC_2.4 netname2host F
+GLIBC_2.4 netname2user F
+GLIBC_2.4 newlocale F
+GLIBC_2.4 nfsservctl F
+GLIBC_2.4 nftw F
+GLIBC_2.4 nftw64 F
+GLIBC_2.4 ngettext F
+GLIBC_2.4 nice F
+GLIBC_2.4 nl_langinfo F
+GLIBC_2.4 nl_langinfo_l F
+GLIBC_2.4 nrand48 F
+GLIBC_2.4 nrand48_r F
+GLIBC_2.4 ntohl F
+GLIBC_2.4 ntohs F
+GLIBC_2.4 ntp_adjtime F
+GLIBC_2.4 ntp_gettime F
+GLIBC_2.4 obstack_alloc_failed_handler D 0x4
+GLIBC_2.4 obstack_exit_failure D 0x4
+GLIBC_2.4 obstack_free F
+GLIBC_2.4 obstack_printf F
+GLIBC_2.4 obstack_vprintf F
+GLIBC_2.4 on_exit F
+GLIBC_2.4 open F
+GLIBC_2.4 open64 F
+GLIBC_2.4 open_memstream F
+GLIBC_2.4 open_wmemstream F
+GLIBC_2.4 openat F
+GLIBC_2.4 openat64 F
+GLIBC_2.4 opendir F
+GLIBC_2.4 openlog F
+GLIBC_2.4 optarg D 0x4
+GLIBC_2.4 opterr D 0x4
+GLIBC_2.4 optind D 0x4
+GLIBC_2.4 optopt D 0x4
+GLIBC_2.4 outb F
+GLIBC_2.4 outl F
+GLIBC_2.4 outw F
+GLIBC_2.4 parse_printf_format F
+GLIBC_2.4 passwd2des F
+GLIBC_2.4 pathconf F
+GLIBC_2.4 pause F
+GLIBC_2.4 pclose F
+GLIBC_2.4 perror F
+GLIBC_2.4 personality F
+GLIBC_2.4 pipe F
+GLIBC_2.4 pivot_root F
+GLIBC_2.4 pmap_getmaps F
+GLIBC_2.4 pmap_getport F
+GLIBC_2.4 pmap_rmtcall F
+GLIBC_2.4 pmap_set F
+GLIBC_2.4 pmap_unset F
+GLIBC_2.4 poll F
+GLIBC_2.4 popen F
+GLIBC_2.4 posix_fadvise F
+GLIBC_2.4 posix_fadvise64 F
+GLIBC_2.4 posix_fallocate F
+GLIBC_2.4 posix_fallocate64 F
+GLIBC_2.4 posix_madvise F
+GLIBC_2.4 posix_memalign F
+GLIBC_2.4 posix_openpt F
+GLIBC_2.4 posix_spawn F
+GLIBC_2.4 posix_spawn_file_actions_addclose F
+GLIBC_2.4 posix_spawn_file_actions_adddup2 F
+GLIBC_2.4 posix_spawn_file_actions_addopen F
+GLIBC_2.4 posix_spawn_file_actions_destroy F
+GLIBC_2.4 posix_spawn_file_actions_init F
+GLIBC_2.4 posix_spawnattr_destroy F
+GLIBC_2.4 posix_spawnattr_getflags F
+GLIBC_2.4 posix_spawnattr_getpgroup F
+GLIBC_2.4 posix_spawnattr_getschedparam F
+GLIBC_2.4 posix_spawnattr_getschedpolicy F
+GLIBC_2.4 posix_spawnattr_getsigdefault F
+GLIBC_2.4 posix_spawnattr_getsigmask F
+GLIBC_2.4 posix_spawnattr_init F
+GLIBC_2.4 posix_spawnattr_setflags F
+GLIBC_2.4 posix_spawnattr_setpgroup F
+GLIBC_2.4 posix_spawnattr_setschedparam F
+GLIBC_2.4 posix_spawnattr_setschedpolicy F
+GLIBC_2.4 posix_spawnattr_setsigdefault F
+GLIBC_2.4 posix_spawnattr_setsigmask F
+GLIBC_2.4 posix_spawnp F
+GLIBC_2.4 ppoll F
+GLIBC_2.4 prctl F
+GLIBC_2.4 pread F
+GLIBC_2.4 pread64 F
+GLIBC_2.4 printf F
+GLIBC_2.4 printf_size F
+GLIBC_2.4 printf_size_info F
+GLIBC_2.4 profil F
+GLIBC_2.4 profil_counter F
+GLIBC_2.4 program_invocation_name D 0x4
+GLIBC_2.4 program_invocation_short_name D 0x4
+GLIBC_2.4 pselect F
+GLIBC_2.4 psignal F
+GLIBC_2.4 pthread_attr_destroy F
+GLIBC_2.4 pthread_attr_getdetachstate F
+GLIBC_2.4 pthread_attr_getinheritsched F
+GLIBC_2.4 pthread_attr_getschedparam F
+GLIBC_2.4 pthread_attr_getschedpolicy F
+GLIBC_2.4 pthread_attr_getscope F
+GLIBC_2.4 pthread_attr_init F
+GLIBC_2.4 pthread_attr_setdetachstate F
+GLIBC_2.4 pthread_attr_setinheritsched F
+GLIBC_2.4 pthread_attr_setschedparam F
+GLIBC_2.4 pthread_attr_setschedpolicy F
+GLIBC_2.4 pthread_attr_setscope F
+GLIBC_2.4 pthread_cond_broadcast F
+GLIBC_2.4 pthread_cond_destroy F
+GLIBC_2.4 pthread_cond_init F
+GLIBC_2.4 pthread_cond_signal F
+GLIBC_2.4 pthread_cond_timedwait F
+GLIBC_2.4 pthread_cond_wait F
+GLIBC_2.4 pthread_condattr_destroy F
+GLIBC_2.4 pthread_condattr_init F
+GLIBC_2.4 pthread_equal F
+GLIBC_2.4 pthread_exit F
+GLIBC_2.4 pthread_getschedparam F
+GLIBC_2.4 pthread_mutex_destroy F
+GLIBC_2.4 pthread_mutex_init F
+GLIBC_2.4 pthread_mutex_lock F
+GLIBC_2.4 pthread_mutex_unlock F
+GLIBC_2.4 pthread_self F
+GLIBC_2.4 pthread_setcancelstate F
+GLIBC_2.4 pthread_setcanceltype F
+GLIBC_2.4 pthread_setschedparam F
+GLIBC_2.4 ptrace F
+GLIBC_2.4 ptsname F
+GLIBC_2.4 ptsname_r F
+GLIBC_2.4 putc F
+GLIBC_2.4 putc_unlocked F
+GLIBC_2.4 putchar F
+GLIBC_2.4 putchar_unlocked F
+GLIBC_2.4 putenv F
+GLIBC_2.4 putgrent F
+GLIBC_2.4 putmsg F
+GLIBC_2.4 putpmsg F
+GLIBC_2.4 putpwent F
+GLIBC_2.4 puts F
+GLIBC_2.4 putspent F
+GLIBC_2.4 pututline F
+GLIBC_2.4 pututxline F
+GLIBC_2.4 putw F
+GLIBC_2.4 putwc F
+GLIBC_2.4 putwc_unlocked F
+GLIBC_2.4 putwchar F
+GLIBC_2.4 putwchar_unlocked F
+GLIBC_2.4 pvalloc F
+GLIBC_2.4 pwrite F
+GLIBC_2.4 pwrite64 F
+GLIBC_2.4 qecvt F
+GLIBC_2.4 qecvt_r F
+GLIBC_2.4 qfcvt F
+GLIBC_2.4 qfcvt_r F
+GLIBC_2.4 qgcvt F
+GLIBC_2.4 qsort F
+GLIBC_2.4 query_module F
+GLIBC_2.4 quotactl F
+GLIBC_2.4 raise F
+GLIBC_2.4 rand F
+GLIBC_2.4 rand_r F
+GLIBC_2.4 random F
+GLIBC_2.4 random_r F
+GLIBC_2.4 rawmemchr F
+GLIBC_2.4 rcmd F
+GLIBC_2.4 rcmd_af F
+GLIBC_2.4 re_comp F
+GLIBC_2.4 re_compile_fastmap F
+GLIBC_2.4 re_compile_pattern F
+GLIBC_2.4 re_exec F
+GLIBC_2.4 re_match F
+GLIBC_2.4 re_match_2 F
+GLIBC_2.4 re_search F
+GLIBC_2.4 re_search_2 F
+GLIBC_2.4 re_set_registers F
+GLIBC_2.4 re_set_syntax F
+GLIBC_2.4 re_syntax_options D 0x4
+GLIBC_2.4 read F
+GLIBC_2.4 readahead F
+GLIBC_2.4 readdir F
+GLIBC_2.4 readdir64 F
+GLIBC_2.4 readdir64_r F
+GLIBC_2.4 readdir_r F
+GLIBC_2.4 readlink F
+GLIBC_2.4 readlinkat F
+GLIBC_2.4 readv F
+GLIBC_2.4 realloc F
+GLIBC_2.4 realpath F
+GLIBC_2.4 reboot F
+GLIBC_2.4 recv F
+GLIBC_2.4 recvfrom F
+GLIBC_2.4 recvmsg F
+GLIBC_2.4 regcomp F
+GLIBC_2.4 regerror F
+GLIBC_2.4 regexec F
+GLIBC_2.4 regfree F
+GLIBC_2.4 register_printf_function F
+GLIBC_2.4 registerrpc F
+GLIBC_2.4 remap_file_pages F
+GLIBC_2.4 remove F
+GLIBC_2.4 removexattr F
+GLIBC_2.4 remque F
+GLIBC_2.4 rename F
+GLIBC_2.4 renameat F
+GLIBC_2.4 revoke F
+GLIBC_2.4 rewind F
+GLIBC_2.4 rewinddir F
+GLIBC_2.4 rexec F
+GLIBC_2.4 rexec_af F
+GLIBC_2.4 rexecoptions D 0x4
+GLIBC_2.4 rindex F
+GLIBC_2.4 rmdir F
+GLIBC_2.4 rpc_createerr D 0x10
+GLIBC_2.4 rpmatch F
+GLIBC_2.4 rresvport F
+GLIBC_2.4 rresvport_af F
+GLIBC_2.4 rtime F
+GLIBC_2.4 ruserok F
+GLIBC_2.4 ruserok_af F
+GLIBC_2.4 ruserpass F
+GLIBC_2.4 sbrk F
+GLIBC_2.4 scalbn F
+GLIBC_2.4 scalbnf F
+GLIBC_2.4 scalbnl F
+GLIBC_2.4 scandir F
+GLIBC_2.4 scandir64 F
+GLIBC_2.4 scanf F
+GLIBC_2.4 sched_get_priority_max F
+GLIBC_2.4 sched_get_priority_min F
+GLIBC_2.4 sched_getaffinity F
+GLIBC_2.4 sched_getparam F
+GLIBC_2.4 sched_getscheduler F
+GLIBC_2.4 sched_rr_get_interval F
+GLIBC_2.4 sched_setaffinity F
+GLIBC_2.4 sched_setparam F
+GLIBC_2.4 sched_setscheduler F
+GLIBC_2.4 sched_yield F
+GLIBC_2.4 seed48 F
+GLIBC_2.4 seed48_r F
+GLIBC_2.4 seekdir F
+GLIBC_2.4 select F
+GLIBC_2.4 semctl F
+GLIBC_2.4 semget F
+GLIBC_2.4 semop F
+GLIBC_2.4 semtimedop F
+GLIBC_2.4 send F
+GLIBC_2.4 sendfile F
+GLIBC_2.4 sendfile64 F
+GLIBC_2.4 sendmsg F
+GLIBC_2.4 sendto F
+GLIBC_2.4 setaliasent F
+GLIBC_2.4 setbuf F
+GLIBC_2.4 setbuffer F
+GLIBC_2.4 setcontext F
+GLIBC_2.4 setdomainname F
+GLIBC_2.4 setegid F
+GLIBC_2.4 setenv F
+GLIBC_2.4 seteuid F
+GLIBC_2.4 setfsent F
+GLIBC_2.4 setfsgid F
+GLIBC_2.4 setfsuid F
+GLIBC_2.4 setgid F
+GLIBC_2.4 setgrent F
+GLIBC_2.4 setgroups F
+GLIBC_2.4 sethostent F
+GLIBC_2.4 sethostid F
+GLIBC_2.4 sethostname F
+GLIBC_2.4 setipv4sourcefilter F
+GLIBC_2.4 setitimer F
+GLIBC_2.4 setjmp F
+GLIBC_2.4 setlinebuf F
+GLIBC_2.4 setlocale F
+GLIBC_2.4 setlogin F
+GLIBC_2.4 setlogmask F
+GLIBC_2.4 setmntent F
+GLIBC_2.4 setnetent F
+GLIBC_2.4 setnetgrent F
+GLIBC_2.4 setpgid F
+GLIBC_2.4 setpgrp F
+GLIBC_2.4 setpriority F
+GLIBC_2.4 setprotoent F
+GLIBC_2.4 setpwent F
+GLIBC_2.4 setregid F
+GLIBC_2.4 setresgid F
+GLIBC_2.4 setresuid F
+GLIBC_2.4 setreuid F
+GLIBC_2.4 setrlimit F
+GLIBC_2.4 setrlimit64 F
+GLIBC_2.4 setrpcent F
+GLIBC_2.4 setservent F
+GLIBC_2.4 setsid F
+GLIBC_2.4 setsockopt F
+GLIBC_2.4 setsourcefilter F
+GLIBC_2.4 setspent F
+GLIBC_2.4 setstate F
+GLIBC_2.4 setstate_r F
+GLIBC_2.4 settimeofday F
+GLIBC_2.4 setttyent F
+GLIBC_2.4 setuid F
+GLIBC_2.4 setusershell F
+GLIBC_2.4 setutent F
+GLIBC_2.4 setutxent F
+GLIBC_2.4 setvbuf F
+GLIBC_2.4 setxattr F
+GLIBC_2.4 sgetspent F
+GLIBC_2.4 sgetspent_r F
+GLIBC_2.4 shmat F
+GLIBC_2.4 shmctl F
+GLIBC_2.4 shmdt F
+GLIBC_2.4 shmget F
+GLIBC_2.4 shutdown F
+GLIBC_2.4 sigaction F
+GLIBC_2.4 sigaddset F
+GLIBC_2.4 sigaltstack F
+GLIBC_2.4 sigandset F
+GLIBC_2.4 sigblock F
+GLIBC_2.4 sigdelset F
+GLIBC_2.4 sigemptyset F
+GLIBC_2.4 sigfillset F
+GLIBC_2.4 siggetmask F
+GLIBC_2.4 sighold F
+GLIBC_2.4 sigignore F
+GLIBC_2.4 siginterrupt F
+GLIBC_2.4 sigisemptyset F
+GLIBC_2.4 sigismember F
+GLIBC_2.4 siglongjmp F
+GLIBC_2.4 signal F
+GLIBC_2.4 sigorset F
+GLIBC_2.4 sigpause F
+GLIBC_2.4 sigpending F
+GLIBC_2.4 sigprocmask F
+GLIBC_2.4 sigqueue F
+GLIBC_2.4 sigrelse F
+GLIBC_2.4 sigreturn F
+GLIBC_2.4 sigset F
+GLIBC_2.4 sigsetmask F
+GLIBC_2.4 sigstack F
+GLIBC_2.4 sigsuspend F
+GLIBC_2.4 sigtimedwait F
+GLIBC_2.4 sigvec F
+GLIBC_2.4 sigwait F
+GLIBC_2.4 sigwaitinfo F
+GLIBC_2.4 sleep F
+GLIBC_2.4 snprintf F
+GLIBC_2.4 sockatmark F
+GLIBC_2.4 socket F
+GLIBC_2.4 socketpair F
+GLIBC_2.4 sprintf F
+GLIBC_2.4 sprofil F
+GLIBC_2.4 srand F
+GLIBC_2.4 srand48 F
+GLIBC_2.4 srand48_r F
+GLIBC_2.4 srandom F
+GLIBC_2.4 srandom_r F
+GLIBC_2.4 sscanf F
+GLIBC_2.4 ssignal F
+GLIBC_2.4 sstk F
+GLIBC_2.4 statfs F
+GLIBC_2.4 statfs64 F
+GLIBC_2.4 statvfs F
+GLIBC_2.4 statvfs64 F
+GLIBC_2.4 stderr D 0x4
+GLIBC_2.4 stdin D 0x4
+GLIBC_2.4 stdout D 0x4
+GLIBC_2.4 step F
+GLIBC_2.4 stime F
+GLIBC_2.4 stpcpy F
+GLIBC_2.4 stpncpy F
+GLIBC_2.4 strcasecmp F
+GLIBC_2.4 strcasecmp_l F
+GLIBC_2.4 strcasestr F
+GLIBC_2.4 strcat F
+GLIBC_2.4 strchr F
+GLIBC_2.4 strchrnul F
+GLIBC_2.4 strcmp F
+GLIBC_2.4 strcoll F
+GLIBC_2.4 strcoll_l F
+GLIBC_2.4 strcpy F
+GLIBC_2.4 strcspn F
+GLIBC_2.4 strdup F
+GLIBC_2.4 strerror F
+GLIBC_2.4 strerror_r F
+GLIBC_2.4 strfmon F
+GLIBC_2.4 strfmon_l F
+GLIBC_2.4 strfry F
+GLIBC_2.4 strftime F
+GLIBC_2.4 strftime_l F
+GLIBC_2.4 strlen F
+GLIBC_2.4 strncasecmp F
+GLIBC_2.4 strncasecmp_l F
+GLIBC_2.4 strncat F
+GLIBC_2.4 strncmp F
+GLIBC_2.4 strncpy F
+GLIBC_2.4 strndup F
+GLIBC_2.4 strnlen F
+GLIBC_2.4 strpbrk F
+GLIBC_2.4 strptime F
+GLIBC_2.4 strptime_l F
+GLIBC_2.4 strrchr F
+GLIBC_2.4 strsep F
+GLIBC_2.4 strsignal F
+GLIBC_2.4 strspn F
+GLIBC_2.4 strstr F
+GLIBC_2.4 strtod F
+GLIBC_2.4 strtod_l F
+GLIBC_2.4 strtof F
+GLIBC_2.4 strtof_l F
+GLIBC_2.4 strtoimax F
+GLIBC_2.4 strtok F
+GLIBC_2.4 strtok_r F
+GLIBC_2.4 strtol F
+GLIBC_2.4 strtol_l F
+GLIBC_2.4 strtold F
+GLIBC_2.4 strtold_l F
+GLIBC_2.4 strtoll F
+GLIBC_2.4 strtoll_l F
+GLIBC_2.4 strtoq F
+GLIBC_2.4 strtoul F
+GLIBC_2.4 strtoul_l F
+GLIBC_2.4 strtoull F
+GLIBC_2.4 strtoull_l F
+GLIBC_2.4 strtoumax F
+GLIBC_2.4 strtouq F
+GLIBC_2.4 strverscmp F
+GLIBC_2.4 strxfrm F
+GLIBC_2.4 strxfrm_l F
+GLIBC_2.4 stty F
+GLIBC_2.4 svc_exit F
+GLIBC_2.4 svc_fdset D 0x80
+GLIBC_2.4 svc_getreq F
+GLIBC_2.4 svc_getreq_common F
+GLIBC_2.4 svc_getreq_poll F
+GLIBC_2.4 svc_getreqset F
+GLIBC_2.4 svc_max_pollfd D 0x4
+GLIBC_2.4 svc_pollfd D 0x4
+GLIBC_2.4 svc_register F
+GLIBC_2.4 svc_run F
+GLIBC_2.4 svc_sendreply F
+GLIBC_2.4 svc_unregister F
+GLIBC_2.4 svcauthdes_stats D 0xc
+GLIBC_2.4 svcerr_auth F
+GLIBC_2.4 svcerr_decode F
+GLIBC_2.4 svcerr_noproc F
+GLIBC_2.4 svcerr_noprog F
+GLIBC_2.4 svcerr_progvers F
+GLIBC_2.4 svcerr_systemerr F
+GLIBC_2.4 svcerr_weakauth F
+GLIBC_2.4 svcfd_create F
+GLIBC_2.4 svcraw_create F
+GLIBC_2.4 svctcp_create F
+GLIBC_2.4 svcudp_bufcreate F
+GLIBC_2.4 svcudp_create F
+GLIBC_2.4 svcudp_enablecache F
+GLIBC_2.4 svcunix_create F
+GLIBC_2.4 svcunixfd_create F
+GLIBC_2.4 swab F
+GLIBC_2.4 swapcontext F
+GLIBC_2.4 swapoff F
+GLIBC_2.4 swapon F
+GLIBC_2.4 swprintf F
+GLIBC_2.4 swscanf F
+GLIBC_2.4 symlink F
+GLIBC_2.4 symlinkat F
+GLIBC_2.4 sync F
+GLIBC_2.4 sys_errlist D 0x210
+GLIBC_2.4 sys_nerr D 0x4
+GLIBC_2.4 sys_sigabbrev D 0x104
+GLIBC_2.4 sys_siglist D 0x104
+GLIBC_2.4 syscall F
+GLIBC_2.4 sysconf F
+GLIBC_2.4 sysctl F
+GLIBC_2.4 sysinfo F
+GLIBC_2.4 syslog F
+GLIBC_2.4 system F
+GLIBC_2.4 sysv_signal F
+GLIBC_2.4 tcdrain F
+GLIBC_2.4 tcflow F
+GLIBC_2.4 tcflush F
+GLIBC_2.4 tcgetattr F
+GLIBC_2.4 tcgetpgrp F
+GLIBC_2.4 tcgetsid F
+GLIBC_2.4 tcsendbreak F
+GLIBC_2.4 tcsetattr F
+GLIBC_2.4 tcsetpgrp F
+GLIBC_2.4 tdelete F
+GLIBC_2.4 tdestroy F
+GLIBC_2.4 telldir F
+GLIBC_2.4 tempnam F
+GLIBC_2.4 textdomain F
+GLIBC_2.4 tfind F
+GLIBC_2.4 time F
+GLIBC_2.4 timegm F
+GLIBC_2.4 timelocal F
+GLIBC_2.4 times F
+GLIBC_2.4 timezone D 0x4
+GLIBC_2.4 tmpfile F
+GLIBC_2.4 tmpfile64 F
+GLIBC_2.4 tmpnam F
+GLIBC_2.4 tmpnam_r F
+GLIBC_2.4 toascii F
+GLIBC_2.4 tolower F
+GLIBC_2.4 tolower_l F
+GLIBC_2.4 toupper F
+GLIBC_2.4 toupper_l F
+GLIBC_2.4 towctrans F
+GLIBC_2.4 towctrans_l F
+GLIBC_2.4 towlower F
+GLIBC_2.4 towlower_l F
+GLIBC_2.4 towupper F
+GLIBC_2.4 towupper_l F
+GLIBC_2.4 tr_break F
+GLIBC_2.4 truncate F
+GLIBC_2.4 truncate64 F
+GLIBC_2.4 tsearch F
+GLIBC_2.4 ttyname F
+GLIBC_2.4 ttyname_r F
+GLIBC_2.4 ttyslot F
+GLIBC_2.4 twalk F
+GLIBC_2.4 tzname D 0x8
+GLIBC_2.4 tzset F
+GLIBC_2.4 ualarm F
+GLIBC_2.4 ulckpwdf F
+GLIBC_2.4 ulimit F
+GLIBC_2.4 umask F
+GLIBC_2.4 umount F
+GLIBC_2.4 umount2 F
+GLIBC_2.4 uname F
+GLIBC_2.4 ungetc F
+GLIBC_2.4 ungetwc F
+GLIBC_2.4 unlink F
+GLIBC_2.4 unlinkat F
+GLIBC_2.4 unlockpt F
+GLIBC_2.4 unsetenv F
+GLIBC_2.4 unshare F
+GLIBC_2.4 updwtmp F
+GLIBC_2.4 updwtmpx F
+GLIBC_2.4 uselib F
+GLIBC_2.4 uselocale F
+GLIBC_2.4 user2netname F
+GLIBC_2.4 usleep F
+GLIBC_2.4 ustat F
+GLIBC_2.4 utime F
+GLIBC_2.4 utimes F
+GLIBC_2.4 utmpname F
+GLIBC_2.4 utmpxname F
+GLIBC_2.4 valloc F
+GLIBC_2.4 vasprintf F
+GLIBC_2.4 vdprintf F
+GLIBC_2.4 verr F
+GLIBC_2.4 verrx F
+GLIBC_2.4 versionsort F
+GLIBC_2.4 versionsort64 F
+GLIBC_2.4 vfork F
+GLIBC_2.4 vfprintf F
+GLIBC_2.4 vfscanf F
+GLIBC_2.4 vfwprintf F
+GLIBC_2.4 vfwscanf F
+GLIBC_2.4 vhangup F
+GLIBC_2.4 vlimit F
+GLIBC_2.4 vprintf F
+GLIBC_2.4 vscanf F
+GLIBC_2.4 vsnprintf F
+GLIBC_2.4 vsprintf F
+GLIBC_2.4 vsscanf F
+GLIBC_2.4 vswprintf F
+GLIBC_2.4 vswscanf F
+GLIBC_2.4 vsyslog F
+GLIBC_2.4 vtimes F
+GLIBC_2.4 vwarn F
+GLIBC_2.4 vwarnx F
+GLIBC_2.4 vwprintf F
+GLIBC_2.4 vwscanf F
+GLIBC_2.4 wait F
+GLIBC_2.4 wait3 F
+GLIBC_2.4 wait4 F
+GLIBC_2.4 waitid F
+GLIBC_2.4 waitpid F
+GLIBC_2.4 warn F
+GLIBC_2.4 warnx F
+GLIBC_2.4 wcpcpy F
+GLIBC_2.4 wcpncpy F
+GLIBC_2.4 wcrtomb F
+GLIBC_2.4 wcscasecmp F
+GLIBC_2.4 wcscasecmp_l F
+GLIBC_2.4 wcscat F
+GLIBC_2.4 wcschr F
+GLIBC_2.4 wcschrnul F
+GLIBC_2.4 wcscmp F
+GLIBC_2.4 wcscoll F
+GLIBC_2.4 wcscoll_l F
+GLIBC_2.4 wcscpy F
+GLIBC_2.4 wcscspn F
+GLIBC_2.4 wcsdup F
+GLIBC_2.4 wcsftime F
+GLIBC_2.4 wcsftime_l F
+GLIBC_2.4 wcslen F
+GLIBC_2.4 wcsncasecmp F
+GLIBC_2.4 wcsncasecmp_l F
+GLIBC_2.4 wcsncat F
+GLIBC_2.4 wcsncmp F
+GLIBC_2.4 wcsncpy F
+GLIBC_2.4 wcsnlen F
+GLIBC_2.4 wcsnrtombs F
+GLIBC_2.4 wcspbrk F
+GLIBC_2.4 wcsrchr F
+GLIBC_2.4 wcsrtombs F
+GLIBC_2.4 wcsspn F
+GLIBC_2.4 wcsstr F
+GLIBC_2.4 wcstod F
+GLIBC_2.4 wcstod_l F
+GLIBC_2.4 wcstof F
+GLIBC_2.4 wcstof_l F
+GLIBC_2.4 wcstoimax F
+GLIBC_2.4 wcstok F
+GLIBC_2.4 wcstol F
+GLIBC_2.4 wcstol_l F
+GLIBC_2.4 wcstold F
+GLIBC_2.4 wcstold_l F
+GLIBC_2.4 wcstoll F
+GLIBC_2.4 wcstoll_l F
+GLIBC_2.4 wcstombs F
+GLIBC_2.4 wcstoq F
+GLIBC_2.4 wcstoul F
+GLIBC_2.4 wcstoul_l F
+GLIBC_2.4 wcstoull F
+GLIBC_2.4 wcstoull_l F
+GLIBC_2.4 wcstoumax F
+GLIBC_2.4 wcstouq F
+GLIBC_2.4 wcswcs F
+GLIBC_2.4 wcswidth F
+GLIBC_2.4 wcsxfrm F
+GLIBC_2.4 wcsxfrm_l F
+GLIBC_2.4 wctob F
+GLIBC_2.4 wctomb F
+GLIBC_2.4 wctrans F
+GLIBC_2.4 wctrans_l F
+GLIBC_2.4 wctype F
+GLIBC_2.4 wctype_l F
+GLIBC_2.4 wcwidth F
+GLIBC_2.4 wmemchr F
+GLIBC_2.4 wmemcmp F
+GLIBC_2.4 wmemcpy F
+GLIBC_2.4 wmemmove F
+GLIBC_2.4 wmempcpy F
+GLIBC_2.4 wmemset F
+GLIBC_2.4 wordexp F
+GLIBC_2.4 wordfree F
+GLIBC_2.4 wprintf F
+GLIBC_2.4 write F
+GLIBC_2.4 writev F
+GLIBC_2.4 wscanf F
+GLIBC_2.4 xdecrypt F
+GLIBC_2.4 xdr_accepted_reply F
+GLIBC_2.4 xdr_array F
+GLIBC_2.4 xdr_authdes_cred F
+GLIBC_2.4 xdr_authdes_verf F
+GLIBC_2.4 xdr_authunix_parms F
+GLIBC_2.4 xdr_bool F
+GLIBC_2.4 xdr_bytes F
+GLIBC_2.4 xdr_callhdr F
+GLIBC_2.4 xdr_callmsg F
+GLIBC_2.4 xdr_char F
+GLIBC_2.4 xdr_cryptkeyarg F
+GLIBC_2.4 xdr_cryptkeyarg2 F
+GLIBC_2.4 xdr_cryptkeyres F
+GLIBC_2.4 xdr_des_block F
+GLIBC_2.4 xdr_double F
+GLIBC_2.4 xdr_enum F
+GLIBC_2.4 xdr_float F
+GLIBC_2.4 xdr_free F
+GLIBC_2.4 xdr_getcredres F
+GLIBC_2.4 xdr_hyper F
+GLIBC_2.4 xdr_int F
+GLIBC_2.4 xdr_int16_t F
+GLIBC_2.4 xdr_int32_t F
+GLIBC_2.4 xdr_int64_t F
+GLIBC_2.4 xdr_int8_t F
+GLIBC_2.4 xdr_key_netstarg F
+GLIBC_2.4 xdr_key_netstres F
+GLIBC_2.4 xdr_keybuf F
+GLIBC_2.4 xdr_keystatus F
+GLIBC_2.4 xdr_long F
+GLIBC_2.4 xdr_longlong_t F
+GLIBC_2.4 xdr_netnamestr F
+GLIBC_2.4 xdr_netobj F
+GLIBC_2.4 xdr_opaque F
+GLIBC_2.4 xdr_opaque_auth F
+GLIBC_2.4 xdr_pmap F
+GLIBC_2.4 xdr_pmaplist F
+GLIBC_2.4 xdr_pointer F
+GLIBC_2.4 xdr_quad_t F
+GLIBC_2.4 xdr_reference F
+GLIBC_2.4 xdr_rejected_reply F
+GLIBC_2.4 xdr_replymsg F
+GLIBC_2.4 xdr_rmtcall_args F
+GLIBC_2.4 xdr_rmtcallres F
+GLIBC_2.4 xdr_short F
+GLIBC_2.4 xdr_sizeof F
+GLIBC_2.4 xdr_string F
+GLIBC_2.4 xdr_u_char F
+GLIBC_2.4 xdr_u_hyper F
+GLIBC_2.4 xdr_u_int F
+GLIBC_2.4 xdr_u_long F
+GLIBC_2.4 xdr_u_longlong_t F
+GLIBC_2.4 xdr_u_quad_t F
+GLIBC_2.4 xdr_u_short F
+GLIBC_2.4 xdr_uint16_t F
+GLIBC_2.4 xdr_uint32_t F
+GLIBC_2.4 xdr_uint64_t F
+GLIBC_2.4 xdr_uint8_t F
+GLIBC_2.4 xdr_union F
+GLIBC_2.4 xdr_unixcred F
+GLIBC_2.4 xdr_vector F
+GLIBC_2.4 xdr_void F
+GLIBC_2.4 xdr_wrapstring F
+GLIBC_2.4 xdrmem_create F
+GLIBC_2.4 xdrrec_create F
+GLIBC_2.4 xdrrec_endofrecord F
+GLIBC_2.4 xdrrec_eof F
+GLIBC_2.4 xdrrec_skiprecord F
+GLIBC_2.4 xdrstdio_create F
+GLIBC_2.4 xencrypt F
+GLIBC_2.4 xprt_register F
+GLIBC_2.4 xprt_unregister F
+GLIBC_2.5 GLIBC_2.5 A
+GLIBC_2.5 __readlinkat_chk F
+GLIBC_2.5 inet6_opt_append F
+GLIBC_2.5 inet6_opt_find F
+GLIBC_2.5 inet6_opt_finish F
+GLIBC_2.5 inet6_opt_get_val F
+GLIBC_2.5 inet6_opt_init F
+GLIBC_2.5 inet6_opt_next F
+GLIBC_2.5 inet6_opt_set_val F
+GLIBC_2.5 inet6_rth_add F
+GLIBC_2.5 inet6_rth_getaddr F
+GLIBC_2.5 inet6_rth_init F
+GLIBC_2.5 inet6_rth_reverse F
+GLIBC_2.5 inet6_rth_segments F
+GLIBC_2.5 inet6_rth_space F
+GLIBC_2.5 splice F
+GLIBC_2.5 tee F
+GLIBC_2.5 vmsplice F
+GLIBC_2.6 GLIBC_2.6 A
+GLIBC_2.6 __sched_cpucount F
+GLIBC_2.6 epoll_pwait F
+GLIBC_2.6 futimens F
+GLIBC_2.6 sched_getcpu F
+GLIBC_2.6 strerror_l F
+GLIBC_2.6 sync_file_range F
+GLIBC_2.6 utimensat F
+GLIBC_2.7 GLIBC_2.7 A
+GLIBC_2.7 __fread_chk F
+GLIBC_2.7 __fread_unlocked_chk F
+GLIBC_2.7 __isoc99_fscanf F
+GLIBC_2.7 __isoc99_fwscanf F
+GLIBC_2.7 __isoc99_scanf F
+GLIBC_2.7 __isoc99_sscanf F
+GLIBC_2.7 __isoc99_swscanf F
+GLIBC_2.7 __isoc99_vfscanf F
+GLIBC_2.7 __isoc99_vfwscanf F
+GLIBC_2.7 __isoc99_vscanf F
+GLIBC_2.7 __isoc99_vsscanf F
+GLIBC_2.7 __isoc99_vswscanf F
+GLIBC_2.7 __isoc99_vwscanf F
+GLIBC_2.7 __isoc99_wscanf F
+GLIBC_2.7 __open64_2 F
+GLIBC_2.7 __open_2 F
+GLIBC_2.7 __openat64_2 F
+GLIBC_2.7 __openat_2 F
+GLIBC_2.7 __sched_cpualloc F
+GLIBC_2.7 __sched_cpufree F
+GLIBC_2.7 eventfd F
+GLIBC_2.7 eventfd_read F
+GLIBC_2.7 eventfd_write F
+GLIBC_2.7 mkostemp F
+GLIBC_2.7 mkostemp64 F
+GLIBC_2.7 signalfd F
+GLIBC_2.8 GLIBC_2.8 A
+GLIBC_2.8 __asprintf_chk F
+GLIBC_2.8 __dprintf_chk F
+GLIBC_2.8 __gnu_mcount_nc F
+GLIBC_2.8 __obstack_printf_chk F
+GLIBC_2.8 __obstack_vprintf_chk F
+GLIBC_2.8 __vasprintf_chk F
+GLIBC_2.8 __vdprintf_chk F
+GLIBC_2.8 qsort_r F
+GLIBC_2.8 timerfd_create F
+GLIBC_2.8 timerfd_gettime F
+GLIBC_2.8 timerfd_settime F
+GLIBC_2.9 GLIBC_2.9 A
+GLIBC_2.9 dup3 F
+GLIBC_2.9 epoll_create1 F
+GLIBC_2.9 inotify_init1 F
+GLIBC_2.9 pipe2 F
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/libcrypt.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libcrypt.abilist
new file mode 100644
index 0000000000..04f1f02fa3
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libcrypt.abilist
@@ -0,0 +1,8 @@
+GLIBC_2.4 GLIBC_2.4 A
+GLIBC_2.4 crypt F
+GLIBC_2.4 crypt_r F
+GLIBC_2.4 encrypt F
+GLIBC_2.4 encrypt_r F
+GLIBC_2.4 fcrypt F
+GLIBC_2.4 setkey F
+GLIBC_2.4 setkey_r F
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/libdl.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libdl.abilist
new file mode 100644
index 0000000000..89a750a0a3
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libdl.abilist
@@ -0,0 +1,10 @@
+GLIBC_2.4 GLIBC_2.4 A
+GLIBC_2.4 dladdr F
+GLIBC_2.4 dladdr1 F
+GLIBC_2.4 dlclose F
+GLIBC_2.4 dlerror F
+GLIBC_2.4 dlinfo F
+GLIBC_2.4 dlmopen F
+GLIBC_2.4 dlopen F
+GLIBC_2.4 dlsym F
+GLIBC_2.4 dlvsym F
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/libm.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libm.abilist
new file mode 100644
index 0000000000..d0c33d2a11
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libm.abilist
@@ -0,0 +1,432 @@
+GLIBC_2.15 GLIBC_2.15 A
+GLIBC_2.15 __acos_finite F
+GLIBC_2.15 __acosf_finite F
+GLIBC_2.15 __acosh_finite F
+GLIBC_2.15 __acoshf_finite F
+GLIBC_2.15 __asin_finite F
+GLIBC_2.15 __asinf_finite F
+GLIBC_2.15 __atan2_finite F
+GLIBC_2.15 __atan2f_finite F
+GLIBC_2.15 __atanh_finite F
+GLIBC_2.15 __atanhf_finite F
+GLIBC_2.15 __cosh_finite F
+GLIBC_2.15 __coshf_finite F
+GLIBC_2.15 __exp10_finite F
+GLIBC_2.15 __exp10f_finite F
+GLIBC_2.15 __exp2_finite F
+GLIBC_2.15 __exp2f_finite F
+GLIBC_2.15 __exp_finite F
+GLIBC_2.15 __expf_finite F
+GLIBC_2.15 __fmod_finite F
+GLIBC_2.15 __fmodf_finite F
+GLIBC_2.15 __gamma_r_finite F
+GLIBC_2.15 __gammaf_r_finite F
+GLIBC_2.15 __hypot_finite F
+GLIBC_2.15 __hypotf_finite F
+GLIBC_2.15 __j0_finite F
+GLIBC_2.15 __j0f_finite F
+GLIBC_2.15 __j1_finite F
+GLIBC_2.15 __j1f_finite F
+GLIBC_2.15 __jn_finite F
+GLIBC_2.15 __jnf_finite F
+GLIBC_2.15 __lgamma_r_finite F
+GLIBC_2.15 __lgammaf_r_finite F
+GLIBC_2.15 __log10_finite F
+GLIBC_2.15 __log10f_finite F
+GLIBC_2.15 __log2_finite F
+GLIBC_2.15 __log2f_finite F
+GLIBC_2.15 __log_finite F
+GLIBC_2.15 __logf_finite F
+GLIBC_2.15 __pow_finite F
+GLIBC_2.15 __powf_finite F
+GLIBC_2.15 __remainder_finite F
+GLIBC_2.15 __remainderf_finite F
+GLIBC_2.15 __scalb_finite F
+GLIBC_2.15 __scalbf_finite F
+GLIBC_2.15 __sinh_finite F
+GLIBC_2.15 __sinhf_finite F
+GLIBC_2.15 __sqrt_finite F
+GLIBC_2.15 __sqrtf_finite F
+GLIBC_2.15 __y0_finite F
+GLIBC_2.15 __y0f_finite F
+GLIBC_2.15 __y1_finite F
+GLIBC_2.15 __y1f_finite F
+GLIBC_2.15 __yn_finite F
+GLIBC_2.15 __ynf_finite F
+GLIBC_2.18 GLIBC_2.18 A
+GLIBC_2.18 __issignaling F
+GLIBC_2.18 __issignalingf F
+GLIBC_2.23 GLIBC_2.23 A
+GLIBC_2.23 __signgam D 0x4
+GLIBC_2.23 lgamma F
+GLIBC_2.23 lgammaf F
+GLIBC_2.23 lgammal F
+GLIBC_2.24 GLIBC_2.24 A
+GLIBC_2.24 nextdown F
+GLIBC_2.24 nextdownf F
+GLIBC_2.24 nextdownl F
+GLIBC_2.24 nextup F
+GLIBC_2.24 nextupf F
+GLIBC_2.24 nextupl F
+GLIBC_2.25 GLIBC_2.25 A
+GLIBC_2.25 __iseqsig F
+GLIBC_2.25 __iseqsigf F
+GLIBC_2.25 canonicalize F
+GLIBC_2.25 canonicalizef F
+GLIBC_2.25 canonicalizel F
+GLIBC_2.25 fegetmode F
+GLIBC_2.25 fesetexcept F
+GLIBC_2.25 fesetmode F
+GLIBC_2.25 fetestexceptflag F
+GLIBC_2.25 fmaxmag F
+GLIBC_2.25 fmaxmagf F
+GLIBC_2.25 fmaxmagl F
+GLIBC_2.25 fminmag F
+GLIBC_2.25 fminmagf F
+GLIBC_2.25 fminmagl F
+GLIBC_2.25 fromfp F
+GLIBC_2.25 fromfpf F
+GLIBC_2.25 fromfpl F
+GLIBC_2.25 fromfpx F
+GLIBC_2.25 fromfpxf F
+GLIBC_2.25 fromfpxl F
+GLIBC_2.25 getpayload F
+GLIBC_2.25 getpayloadf F
+GLIBC_2.25 getpayloadl F
+GLIBC_2.25 llogb F
+GLIBC_2.25 llogbf F
+GLIBC_2.25 llogbl F
+GLIBC_2.25 roundeven F
+GLIBC_2.25 roundevenf F
+GLIBC_2.25 roundevenl F
+GLIBC_2.25 setpayload F
+GLIBC_2.25 setpayloadf F
+GLIBC_2.25 setpayloadl F
+GLIBC_2.25 setpayloadsig F
+GLIBC_2.25 setpayloadsigf F
+GLIBC_2.25 setpayloadsigl F
+GLIBC_2.25 totalorder F
+GLIBC_2.25 totalorderf F
+GLIBC_2.25 totalorderl F
+GLIBC_2.25 totalordermag F
+GLIBC_2.25 totalordermagf F
+GLIBC_2.25 totalordermagl F
+GLIBC_2.25 ufromfp F
+GLIBC_2.25 ufromfpf F
+GLIBC_2.25 ufromfpl F
+GLIBC_2.25 ufromfpx F
+GLIBC_2.25 ufromfpxf F
+GLIBC_2.25 ufromfpxl F
+GLIBC_2.4 GLIBC_2.4 A
+GLIBC_2.4 _LIB_VERSION D 0x4
+GLIBC_2.4 __clog10 F
+GLIBC_2.4 __clog10f F
+GLIBC_2.4 __clog10l F
+GLIBC_2.4 __finite F
+GLIBC_2.4 __finitef F
+GLIBC_2.4 __finitel F
+GLIBC_2.4 __fpclassify F
+GLIBC_2.4 __fpclassifyf F
+GLIBC_2.4 __signbit F
+GLIBC_2.4 __signbitf F
+GLIBC_2.4 acos F
+GLIBC_2.4 acosf F
+GLIBC_2.4 acosh F
+GLIBC_2.4 acoshf F
+GLIBC_2.4 acoshl F
+GLIBC_2.4 acosl F
+GLIBC_2.4 asin F
+GLIBC_2.4 asinf F
+GLIBC_2.4 asinh F
+GLIBC_2.4 asinhf F
+GLIBC_2.4 asinhl F
+GLIBC_2.4 asinl F
+GLIBC_2.4 atan F
+GLIBC_2.4 atan2 F
+GLIBC_2.4 atan2f F
+GLIBC_2.4 atan2l F
+GLIBC_2.4 atanf F
+GLIBC_2.4 atanh F
+GLIBC_2.4 atanhf F
+GLIBC_2.4 atanhl F
+GLIBC_2.4 atanl F
+GLIBC_2.4 cabs F
+GLIBC_2.4 cabsf F
+GLIBC_2.4 cabsl F
+GLIBC_2.4 cacos F
+GLIBC_2.4 cacosf F
+GLIBC_2.4 cacosh F
+GLIBC_2.4 cacoshf F
+GLIBC_2.4 cacoshl F
+GLIBC_2.4 cacosl F
+GLIBC_2.4 carg F
+GLIBC_2.4 cargf F
+GLIBC_2.4 cargl F
+GLIBC_2.4 casin F
+GLIBC_2.4 casinf F
+GLIBC_2.4 casinh F
+GLIBC_2.4 casinhf F
+GLIBC_2.4 casinhl F
+GLIBC_2.4 casinl F
+GLIBC_2.4 catan F
+GLIBC_2.4 catanf F
+GLIBC_2.4 catanh F
+GLIBC_2.4 catanhf F
+GLIBC_2.4 catanhl F
+GLIBC_2.4 catanl F
+GLIBC_2.4 cbrt F
+GLIBC_2.4 cbrtf F
+GLIBC_2.4 cbrtl F
+GLIBC_2.4 ccos F
+GLIBC_2.4 ccosf F
+GLIBC_2.4 ccosh F
+GLIBC_2.4 ccoshf F
+GLIBC_2.4 ccoshl F
+GLIBC_2.4 ccosl F
+GLIBC_2.4 ceil F
+GLIBC_2.4 ceilf F
+GLIBC_2.4 ceill F
+GLIBC_2.4 cexp F
+GLIBC_2.4 cexpf F
+GLIBC_2.4 cexpl F
+GLIBC_2.4 cimag F
+GLIBC_2.4 cimagf F
+GLIBC_2.4 cimagl F
+GLIBC_2.4 clog F
+GLIBC_2.4 clog10 F
+GLIBC_2.4 clog10f F
+GLIBC_2.4 clog10l F
+GLIBC_2.4 clogf F
+GLIBC_2.4 clogl F
+GLIBC_2.4 conj F
+GLIBC_2.4 conjf F
+GLIBC_2.4 conjl F
+GLIBC_2.4 copysign F
+GLIBC_2.4 copysignf F
+GLIBC_2.4 copysignl F
+GLIBC_2.4 cos F
+GLIBC_2.4 cosf F
+GLIBC_2.4 cosh F
+GLIBC_2.4 coshf F
+GLIBC_2.4 coshl F
+GLIBC_2.4 cosl F
+GLIBC_2.4 cpow F
+GLIBC_2.4 cpowf F
+GLIBC_2.4 cpowl F
+GLIBC_2.4 cproj F
+GLIBC_2.4 cprojf F
+GLIBC_2.4 cprojl F
+GLIBC_2.4 creal F
+GLIBC_2.4 crealf F
+GLIBC_2.4 creall F
+GLIBC_2.4 csin F
+GLIBC_2.4 csinf F
+GLIBC_2.4 csinh F
+GLIBC_2.4 csinhf F
+GLIBC_2.4 csinhl F
+GLIBC_2.4 csinl F
+GLIBC_2.4 csqrt F
+GLIBC_2.4 csqrtf F
+GLIBC_2.4 csqrtl F
+GLIBC_2.4 ctan F
+GLIBC_2.4 ctanf F
+GLIBC_2.4 ctanh F
+GLIBC_2.4 ctanhf F
+GLIBC_2.4 ctanhl F
+GLIBC_2.4 ctanl F
+GLIBC_2.4 drem F
+GLIBC_2.4 dremf F
+GLIBC_2.4 dreml F
+GLIBC_2.4 erf F
+GLIBC_2.4 erfc F
+GLIBC_2.4 erfcf F
+GLIBC_2.4 erfcl F
+GLIBC_2.4 erff F
+GLIBC_2.4 erfl F
+GLIBC_2.4 exp F
+GLIBC_2.4 exp10 F
+GLIBC_2.4 exp10f F
+GLIBC_2.4 exp10l F
+GLIBC_2.4 exp2 F
+GLIBC_2.4 exp2f F
+GLIBC_2.4 exp2l F
+GLIBC_2.4 expf F
+GLIBC_2.4 expl F
+GLIBC_2.4 expm1 F
+GLIBC_2.4 expm1f F
+GLIBC_2.4 expm1l F
+GLIBC_2.4 fabs F
+GLIBC_2.4 fabsf F
+GLIBC_2.4 fabsl F
+GLIBC_2.4 fdim F
+GLIBC_2.4 fdimf F
+GLIBC_2.4 fdiml F
+GLIBC_2.4 feclearexcept F
+GLIBC_2.4 fedisableexcept F
+GLIBC_2.4 feenableexcept F
+GLIBC_2.4 fegetenv F
+GLIBC_2.4 fegetexcept F
+GLIBC_2.4 fegetexceptflag F
+GLIBC_2.4 fegetround F
+GLIBC_2.4 feholdexcept F
+GLIBC_2.4 feraiseexcept F
+GLIBC_2.4 fesetenv F
+GLIBC_2.4 fesetexceptflag F
+GLIBC_2.4 fesetround F
+GLIBC_2.4 fetestexcept F
+GLIBC_2.4 feupdateenv F
+GLIBC_2.4 finite F
+GLIBC_2.4 finitef F
+GLIBC_2.4 finitel F
+GLIBC_2.4 floor F
+GLIBC_2.4 floorf F
+GLIBC_2.4 floorl F
+GLIBC_2.4 fma F
+GLIBC_2.4 fmaf F
+GLIBC_2.4 fmal F
+GLIBC_2.4 fmax F
+GLIBC_2.4 fmaxf F
+GLIBC_2.4 fmaxl F
+GLIBC_2.4 fmin F
+GLIBC_2.4 fminf F
+GLIBC_2.4 fminl F
+GLIBC_2.4 fmod F
+GLIBC_2.4 fmodf F
+GLIBC_2.4 fmodl F
+GLIBC_2.4 frexp F
+GLIBC_2.4 frexpf F
+GLIBC_2.4 frexpl F
+GLIBC_2.4 gamma F
+GLIBC_2.4 gammaf F
+GLIBC_2.4 gammal F
+GLIBC_2.4 hypot F
+GLIBC_2.4 hypotf F
+GLIBC_2.4 hypotl F
+GLIBC_2.4 ilogb F
+GLIBC_2.4 ilogbf F
+GLIBC_2.4 ilogbl F
+GLIBC_2.4 j0 F
+GLIBC_2.4 j0f F
+GLIBC_2.4 j0l F
+GLIBC_2.4 j1 F
+GLIBC_2.4 j1f F
+GLIBC_2.4 j1l F
+GLIBC_2.4 jn F
+GLIBC_2.4 jnf F
+GLIBC_2.4 jnl F
+GLIBC_2.4 ldexp F
+GLIBC_2.4 ldexpf F
+GLIBC_2.4 ldexpl F
+GLIBC_2.4 lgamma F
+GLIBC_2.4 lgamma_r F
+GLIBC_2.4 lgammaf F
+GLIBC_2.4 lgammaf_r F
+GLIBC_2.4 lgammal F
+GLIBC_2.4 lgammal_r F
+GLIBC_2.4 llrint F
+GLIBC_2.4 llrintf F
+GLIBC_2.4 llrintl F
+GLIBC_2.4 llround F
+GLIBC_2.4 llroundf F
+GLIBC_2.4 llroundl F
+GLIBC_2.4 log F
+GLIBC_2.4 log10 F
+GLIBC_2.4 log10f F
+GLIBC_2.4 log10l F
+GLIBC_2.4 log1p F
+GLIBC_2.4 log1pf F
+GLIBC_2.4 log1pl F
+GLIBC_2.4 log2 F
+GLIBC_2.4 log2f F
+GLIBC_2.4 log2l F
+GLIBC_2.4 logb F
+GLIBC_2.4 logbf F
+GLIBC_2.4 logbl F
+GLIBC_2.4 logf F
+GLIBC_2.4 logl F
+GLIBC_2.4 lrint F
+GLIBC_2.4 lrintf F
+GLIBC_2.4 lrintl F
+GLIBC_2.4 lround F
+GLIBC_2.4 lroundf F
+GLIBC_2.4 lroundl F
+GLIBC_2.4 matherr F
+GLIBC_2.4 modf F
+GLIBC_2.4 modff F
+GLIBC_2.4 modfl F
+GLIBC_2.4 nan F
+GLIBC_2.4 nanf F
+GLIBC_2.4 nanl F
+GLIBC_2.4 nearbyint F
+GLIBC_2.4 nearbyintf F
+GLIBC_2.4 nearbyintl F
+GLIBC_2.4 nextafter F
+GLIBC_2.4 nextafterf F
+GLIBC_2.4 nextafterl F
+GLIBC_2.4 nexttoward F
+GLIBC_2.4 nexttowardf F
+GLIBC_2.4 nexttowardl F
+GLIBC_2.4 pow F
+GLIBC_2.4 pow10 F
+GLIBC_2.4 pow10f F
+GLIBC_2.4 pow10l F
+GLIBC_2.4 powf F
+GLIBC_2.4 powl F
+GLIBC_2.4 remainder F
+GLIBC_2.4 remainderf F
+GLIBC_2.4 remainderl F
+GLIBC_2.4 remquo F
+GLIBC_2.4 remquof F
+GLIBC_2.4 remquol F
+GLIBC_2.4 rint F
+GLIBC_2.4 rintf F
+GLIBC_2.4 rintl F
+GLIBC_2.4 round F
+GLIBC_2.4 roundf F
+GLIBC_2.4 roundl F
+GLIBC_2.4 scalb F
+GLIBC_2.4 scalbf F
+GLIBC_2.4 scalbl F
+GLIBC_2.4 scalbln F
+GLIBC_2.4 scalblnf F
+GLIBC_2.4 scalblnl F
+GLIBC_2.4 scalbn F
+GLIBC_2.4 scalbnf F
+GLIBC_2.4 scalbnl F
+GLIBC_2.4 signgam D 0x4
+GLIBC_2.4 significand F
+GLIBC_2.4 significandf F
+GLIBC_2.4 significandl F
+GLIBC_2.4 sin F
+GLIBC_2.4 sincos F
+GLIBC_2.4 sincosf F
+GLIBC_2.4 sincosl F
+GLIBC_2.4 sinf F
+GLIBC_2.4 sinh F
+GLIBC_2.4 sinhf F
+GLIBC_2.4 sinhl F
+GLIBC_2.4 sinl F
+GLIBC_2.4 sqrt F
+GLIBC_2.4 sqrtf F
+GLIBC_2.4 sqrtl F
+GLIBC_2.4 tan F
+GLIBC_2.4 tanf F
+GLIBC_2.4 tanh F
+GLIBC_2.4 tanhf F
+GLIBC_2.4 tanhl F
+GLIBC_2.4 tanl F
+GLIBC_2.4 tgamma F
+GLIBC_2.4 tgammaf F
+GLIBC_2.4 tgammal F
+GLIBC_2.4 trunc F
+GLIBC_2.4 truncf F
+GLIBC_2.4 truncl F
+GLIBC_2.4 y0 F
+GLIBC_2.4 y0f F
+GLIBC_2.4 y0l F
+GLIBC_2.4 y1 F
+GLIBC_2.4 y1f F
+GLIBC_2.4 y1l F
+GLIBC_2.4 yn F
+GLIBC_2.4 ynf F
+GLIBC_2.4 ynl F
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/libnsl.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libnsl.abilist
new file mode 100644
index 0000000000..2b2e49e6a1
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libnsl.abilist
@@ -0,0 +1,122 @@
+GLIBC_2.4 GLIBC_2.4 A
+GLIBC_2.4 __free_fdresult F
+GLIBC_2.4 __nis_default_access F
+GLIBC_2.4 __nis_default_group F
+GLIBC_2.4 __nis_default_owner F
+GLIBC_2.4 __nis_default_ttl F
+GLIBC_2.4 __nis_finddirectory F
+GLIBC_2.4 __nis_hash F
+GLIBC_2.4 __nisbind_connect F
+GLIBC_2.4 __nisbind_create F
+GLIBC_2.4 __nisbind_destroy F
+GLIBC_2.4 __nisbind_next F
+GLIBC_2.4 __yp_check F
+GLIBC_2.4 nis_add F
+GLIBC_2.4 nis_add_entry F
+GLIBC_2.4 nis_addmember F
+GLIBC_2.4 nis_checkpoint F
+GLIBC_2.4 nis_clone_directory F
+GLIBC_2.4 nis_clone_object F
+GLIBC_2.4 nis_clone_result F
+GLIBC_2.4 nis_creategroup F
+GLIBC_2.4 nis_destroy_object F
+GLIBC_2.4 nis_destroygroup F
+GLIBC_2.4 nis_dir_cmp F
+GLIBC_2.4 nis_domain_of F
+GLIBC_2.4 nis_domain_of_r F
+GLIBC_2.4 nis_first_entry F
+GLIBC_2.4 nis_free_directory F
+GLIBC_2.4 nis_free_object F
+GLIBC_2.4 nis_free_request F
+GLIBC_2.4 nis_freenames F
+GLIBC_2.4 nis_freeresult F
+GLIBC_2.4 nis_freeservlist F
+GLIBC_2.4 nis_freetags F
+GLIBC_2.4 nis_getnames F
+GLIBC_2.4 nis_getservlist F
+GLIBC_2.4 nis_ismember F
+GLIBC_2.4 nis_leaf_of F
+GLIBC_2.4 nis_leaf_of_r F
+GLIBC_2.4 nis_lerror F
+GLIBC_2.4 nis_list F
+GLIBC_2.4 nis_local_directory F
+GLIBC_2.4 nis_local_group F
+GLIBC_2.4 nis_local_host F
+GLIBC_2.4 nis_local_principal F
+GLIBC_2.4 nis_lookup F
+GLIBC_2.4 nis_mkdir F
+GLIBC_2.4 nis_modify F
+GLIBC_2.4 nis_modify_entry F
+GLIBC_2.4 nis_name_of F
+GLIBC_2.4 nis_name_of_r F
+GLIBC_2.4 nis_next_entry F
+GLIBC_2.4 nis_perror F
+GLIBC_2.4 nis_ping F
+GLIBC_2.4 nis_print_directory F
+GLIBC_2.4 nis_print_entry F
+GLIBC_2.4 nis_print_group F
+GLIBC_2.4 nis_print_group_entry F
+GLIBC_2.4 nis_print_link F
+GLIBC_2.4 nis_print_object F
+GLIBC_2.4 nis_print_result F
+GLIBC_2.4 nis_print_rights F
+GLIBC_2.4 nis_print_table F
+GLIBC_2.4 nis_read_obj F
+GLIBC_2.4 nis_remove F
+GLIBC_2.4 nis_remove_entry F
+GLIBC_2.4 nis_removemember F
+GLIBC_2.4 nis_rmdir F
+GLIBC_2.4 nis_servstate F
+GLIBC_2.4 nis_sperrno F
+GLIBC_2.4 nis_sperror F
+GLIBC_2.4 nis_sperror_r F
+GLIBC_2.4 nis_stats F
+GLIBC_2.4 nis_verifygroup F
+GLIBC_2.4 nis_write_obj F
+GLIBC_2.4 readColdStartFile F
+GLIBC_2.4 writeColdStartFile F
+GLIBC_2.4 xdr_cback_data F
+GLIBC_2.4 xdr_domainname F
+GLIBC_2.4 xdr_keydat F
+GLIBC_2.4 xdr_mapname F
+GLIBC_2.4 xdr_obj_p F
+GLIBC_2.4 xdr_peername F
+GLIBC_2.4 xdr_valdat F
+GLIBC_2.4 xdr_yp_buf F
+GLIBC_2.4 xdr_ypall F
+GLIBC_2.4 xdr_ypbind_binding F
+GLIBC_2.4 xdr_ypbind_resp F
+GLIBC_2.4 xdr_ypbind_resptype F
+GLIBC_2.4 xdr_ypbind_setdom F
+GLIBC_2.4 xdr_ypdelete_args F
+GLIBC_2.4 xdr_ypmap_parms F
+GLIBC_2.4 xdr_ypmaplist F
+GLIBC_2.4 xdr_yppush_status F
+GLIBC_2.4 xdr_yppushresp_xfr F
+GLIBC_2.4 xdr_ypreq_key F
+GLIBC_2.4 xdr_ypreq_nokey F
+GLIBC_2.4 xdr_ypreq_xfr F
+GLIBC_2.4 xdr_ypresp_all F
+GLIBC_2.4 xdr_ypresp_key_val F
+GLIBC_2.4 xdr_ypresp_maplist F
+GLIBC_2.4 xdr_ypresp_master F
+GLIBC_2.4 xdr_ypresp_order F
+GLIBC_2.4 xdr_ypresp_val F
+GLIBC_2.4 xdr_ypresp_xfr F
+GLIBC_2.4 xdr_ypstat F
+GLIBC_2.4 xdr_ypupdate_args F
+GLIBC_2.4 xdr_ypxfrstat F
+GLIBC_2.4 yp_all F
+GLIBC_2.4 yp_bind F
+GLIBC_2.4 yp_first F
+GLIBC_2.4 yp_get_default_domain F
+GLIBC_2.4 yp_maplist F
+GLIBC_2.4 yp_master F
+GLIBC_2.4 yp_match F
+GLIBC_2.4 yp_next F
+GLIBC_2.4 yp_order F
+GLIBC_2.4 yp_unbind F
+GLIBC_2.4 yp_update F
+GLIBC_2.4 ypbinderr_string F
+GLIBC_2.4 yperr_string F
+GLIBC_2.4 ypprot_err F
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/libpthread.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libpthread.abilist
new file mode 100644
index 0000000000..91545c1542
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libpthread.abilist
@@ -0,0 +1,228 @@
+GLIBC_2.11 GLIBC_2.11 A
+GLIBC_2.11 pthread_sigqueue F
+GLIBC_2.12 GLIBC_2.12 A
+GLIBC_2.12 pthread_getname_np F
+GLIBC_2.12 pthread_mutex_consistent F
+GLIBC_2.12 pthread_mutexattr_getrobust F
+GLIBC_2.12 pthread_mutexattr_setrobust F
+GLIBC_2.12 pthread_setname_np F
+GLIBC_2.18 GLIBC_2.18 A
+GLIBC_2.18 pthread_getattr_default_np F
+GLIBC_2.18 pthread_setattr_default_np F
+GLIBC_2.4 GLIBC_2.4 A
+GLIBC_2.4 _IO_flockfile F
+GLIBC_2.4 _IO_ftrylockfile F
+GLIBC_2.4 _IO_funlockfile F
+GLIBC_2.4 __close F
+GLIBC_2.4 __connect F
+GLIBC_2.4 __errno_location F
+GLIBC_2.4 __fcntl F
+GLIBC_2.4 __fork F
+GLIBC_2.4 __h_errno_location F
+GLIBC_2.4 __libc_allocate_rtsig F
+GLIBC_2.4 __libc_current_sigrtmax F
+GLIBC_2.4 __libc_current_sigrtmin F
+GLIBC_2.4 __lseek F
+GLIBC_2.4 __nanosleep F
+GLIBC_2.4 __open F
+GLIBC_2.4 __open64 F
+GLIBC_2.4 __pread64 F
+GLIBC_2.4 __pthread_cleanup_routine F
+GLIBC_2.4 __pthread_getspecific F
+GLIBC_2.4 __pthread_key_create F
+GLIBC_2.4 __pthread_mutex_destroy F
+GLIBC_2.4 __pthread_mutex_init F
+GLIBC_2.4 __pthread_mutex_lock F
+GLIBC_2.4 __pthread_mutex_trylock F
+GLIBC_2.4 __pthread_mutex_unlock F
+GLIBC_2.4 __pthread_mutexattr_destroy F
+GLIBC_2.4 __pthread_mutexattr_init F
+GLIBC_2.4 __pthread_mutexattr_settype F
+GLIBC_2.4 __pthread_once F
+GLIBC_2.4 __pthread_register_cancel F
+GLIBC_2.4 __pthread_register_cancel_defer F
+GLIBC_2.4 __pthread_rwlock_destroy F
+GLIBC_2.4 __pthread_rwlock_init F
+GLIBC_2.4 __pthread_rwlock_rdlock F
+GLIBC_2.4 __pthread_rwlock_tryrdlock F
+GLIBC_2.4 __pthread_rwlock_trywrlock F
+GLIBC_2.4 __pthread_rwlock_unlock F
+GLIBC_2.4 __pthread_rwlock_wrlock F
+GLIBC_2.4 __pthread_setspecific F
+GLIBC_2.4 __pthread_unregister_cancel F
+GLIBC_2.4 __pthread_unregister_cancel_restore F
+GLIBC_2.4 __pthread_unwind_next F
+GLIBC_2.4 __pwrite64 F
+GLIBC_2.4 __read F
+GLIBC_2.4 __res_state F
+GLIBC_2.4 __send F
+GLIBC_2.4 __sigaction F
+GLIBC_2.4 __vfork F
+GLIBC_2.4 __wait F
+GLIBC_2.4 __write F
+GLIBC_2.4 _pthread_cleanup_pop F
+GLIBC_2.4 _pthread_cleanup_pop_restore F
+GLIBC_2.4 _pthread_cleanup_push F
+GLIBC_2.4 _pthread_cleanup_push_defer F
+GLIBC_2.4 accept F
+GLIBC_2.4 close F
+GLIBC_2.4 connect F
+GLIBC_2.4 fcntl F
+GLIBC_2.4 flockfile F
+GLIBC_2.4 fork F
+GLIBC_2.4 fsync F
+GLIBC_2.4 ftrylockfile F
+GLIBC_2.4 funlockfile F
+GLIBC_2.4 longjmp F
+GLIBC_2.4 lseek F
+GLIBC_2.4 lseek64 F
+GLIBC_2.4 msync F
+GLIBC_2.4 nanosleep F
+GLIBC_2.4 open F
+GLIBC_2.4 open64 F
+GLIBC_2.4 pause F
+GLIBC_2.4 pread F
+GLIBC_2.4 pread64 F
+GLIBC_2.4 pthread_attr_destroy F
+GLIBC_2.4 pthread_attr_getaffinity_np F
+GLIBC_2.4 pthread_attr_getdetachstate F
+GLIBC_2.4 pthread_attr_getguardsize F
+GLIBC_2.4 pthread_attr_getinheritsched F
+GLIBC_2.4 pthread_attr_getschedparam F
+GLIBC_2.4 pthread_attr_getschedpolicy F
+GLIBC_2.4 pthread_attr_getscope F
+GLIBC_2.4 pthread_attr_getstack F
+GLIBC_2.4 pthread_attr_getstackaddr F
+GLIBC_2.4 pthread_attr_getstacksize F
+GLIBC_2.4 pthread_attr_init F
+GLIBC_2.4 pthread_attr_setaffinity_np F
+GLIBC_2.4 pthread_attr_setdetachstate F
+GLIBC_2.4 pthread_attr_setguardsize F
+GLIBC_2.4 pthread_attr_setinheritsched F
+GLIBC_2.4 pthread_attr_setschedparam F
+GLIBC_2.4 pthread_attr_setschedpolicy F
+GLIBC_2.4 pthread_attr_setscope F
+GLIBC_2.4 pthread_attr_setstack F
+GLIBC_2.4 pthread_attr_setstackaddr F
+GLIBC_2.4 pthread_attr_setstacksize F
+GLIBC_2.4 pthread_barrier_destroy F
+GLIBC_2.4 pthread_barrier_init F
+GLIBC_2.4 pthread_barrier_wait F
+GLIBC_2.4 pthread_barrierattr_destroy F
+GLIBC_2.4 pthread_barrierattr_getpshared F
+GLIBC_2.4 pthread_barrierattr_init F
+GLIBC_2.4 pthread_barrierattr_setpshared F
+GLIBC_2.4 pthread_cancel F
+GLIBC_2.4 pthread_cond_broadcast F
+GLIBC_2.4 pthread_cond_destroy F
+GLIBC_2.4 pthread_cond_init F
+GLIBC_2.4 pthread_cond_signal F
+GLIBC_2.4 pthread_cond_timedwait F
+GLIBC_2.4 pthread_cond_wait F
+GLIBC_2.4 pthread_condattr_destroy F
+GLIBC_2.4 pthread_condattr_getclock F
+GLIBC_2.4 pthread_condattr_getpshared F
+GLIBC_2.4 pthread_condattr_init F
+GLIBC_2.4 pthread_condattr_setclock F
+GLIBC_2.4 pthread_condattr_setpshared F
+GLIBC_2.4 pthread_create F
+GLIBC_2.4 pthread_detach F
+GLIBC_2.4 pthread_equal F
+GLIBC_2.4 pthread_exit F
+GLIBC_2.4 pthread_getaffinity_np F
+GLIBC_2.4 pthread_getattr_np F
+GLIBC_2.4 pthread_getconcurrency F
+GLIBC_2.4 pthread_getcpuclockid F
+GLIBC_2.4 pthread_getschedparam F
+GLIBC_2.4 pthread_getspecific F
+GLIBC_2.4 pthread_join F
+GLIBC_2.4 pthread_key_create F
+GLIBC_2.4 pthread_key_delete F
+GLIBC_2.4 pthread_kill F
+GLIBC_2.4 pthread_kill_other_threads_np F
+GLIBC_2.4 pthread_mutex_consistent_np F
+GLIBC_2.4 pthread_mutex_destroy F
+GLIBC_2.4 pthread_mutex_getprioceiling F
+GLIBC_2.4 pthread_mutex_init F
+GLIBC_2.4 pthread_mutex_lock F
+GLIBC_2.4 pthread_mutex_setprioceiling F
+GLIBC_2.4 pthread_mutex_timedlock F
+GLIBC_2.4 pthread_mutex_trylock F
+GLIBC_2.4 pthread_mutex_unlock F
+GLIBC_2.4 pthread_mutexattr_destroy F
+GLIBC_2.4 pthread_mutexattr_getkind_np F
+GLIBC_2.4 pthread_mutexattr_getprioceiling F
+GLIBC_2.4 pthread_mutexattr_getprotocol F
+GLIBC_2.4 pthread_mutexattr_getpshared F
+GLIBC_2.4 pthread_mutexattr_getrobust_np F
+GLIBC_2.4 pthread_mutexattr_gettype F
+GLIBC_2.4 pthread_mutexattr_init F
+GLIBC_2.4 pthread_mutexattr_setkind_np F
+GLIBC_2.4 pthread_mutexattr_setprioceiling F
+GLIBC_2.4 pthread_mutexattr_setprotocol F
+GLIBC_2.4 pthread_mutexattr_setpshared F
+GLIBC_2.4 pthread_mutexattr_setrobust_np F
+GLIBC_2.4 pthread_mutexattr_settype F
+GLIBC_2.4 pthread_once F
+GLIBC_2.4 pthread_rwlock_destroy F
+GLIBC_2.4 pthread_rwlock_init F
+GLIBC_2.4 pthread_rwlock_rdlock F
+GLIBC_2.4 pthread_rwlock_timedrdlock F
+GLIBC_2.4 pthread_rwlock_timedwrlock F
+GLIBC_2.4 pthread_rwlock_tryrdlock F
+GLIBC_2.4 pthread_rwlock_trywrlock F
+GLIBC_2.4 pthread_rwlock_unlock F
+GLIBC_2.4 pthread_rwlock_wrlock F
+GLIBC_2.4 pthread_rwlockattr_destroy F
+GLIBC_2.4 pthread_rwlockattr_getkind_np F
+GLIBC_2.4 pthread_rwlockattr_getpshared F
+GLIBC_2.4 pthread_rwlockattr_init F
+GLIBC_2.4 pthread_rwlockattr_setkind_np F
+GLIBC_2.4 pthread_rwlockattr_setpshared F
+GLIBC_2.4 pthread_self F
+GLIBC_2.4 pthread_setaffinity_np F
+GLIBC_2.4 pthread_setcancelstate F
+GLIBC_2.4 pthread_setcanceltype F
+GLIBC_2.4 pthread_setconcurrency F
+GLIBC_2.4 pthread_setschedparam F
+GLIBC_2.4 pthread_setschedprio F
+GLIBC_2.4 pthread_setspecific F
+GLIBC_2.4 pthread_sigmask F
+GLIBC_2.4 pthread_spin_destroy F
+GLIBC_2.4 pthread_spin_init F
+GLIBC_2.4 pthread_spin_lock F
+GLIBC_2.4 pthread_spin_trylock F
+GLIBC_2.4 pthread_spin_unlock F
+GLIBC_2.4 pthread_testcancel F
+GLIBC_2.4 pthread_timedjoin_np F
+GLIBC_2.4 pthread_tryjoin_np F
+GLIBC_2.4 pthread_yield F
+GLIBC_2.4 pwrite F
+GLIBC_2.4 pwrite64 F
+GLIBC_2.4 raise F
+GLIBC_2.4 read F
+GLIBC_2.4 recv F
+GLIBC_2.4 recvfrom F
+GLIBC_2.4 recvmsg F
+GLIBC_2.4 sem_close F
+GLIBC_2.4 sem_destroy F
+GLIBC_2.4 sem_getvalue F
+GLIBC_2.4 sem_init F
+GLIBC_2.4 sem_open F
+GLIBC_2.4 sem_post F
+GLIBC_2.4 sem_timedwait F
+GLIBC_2.4 sem_trywait F
+GLIBC_2.4 sem_unlink F
+GLIBC_2.4 sem_wait F
+GLIBC_2.4 send F
+GLIBC_2.4 sendmsg F
+GLIBC_2.4 sendto F
+GLIBC_2.4 sigaction F
+GLIBC_2.4 siglongjmp F
+GLIBC_2.4 sigwait F
+GLIBC_2.4 system F
+GLIBC_2.4 tcdrain F
+GLIBC_2.4 vfork F
+GLIBC_2.4 wait F
+GLIBC_2.4 waitpid F
+GLIBC_2.4 write F
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/libresolv.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libresolv.abilist
new file mode 100644
index 0000000000..c7023be532
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libresolv.abilist
@@ -0,0 +1,93 @@
+GLIBC_2.4 GLIBC_2.4 A
+GLIBC_2.4 __b64_ntop F
+GLIBC_2.4 __b64_pton F
+GLIBC_2.4 __dn_comp F
+GLIBC_2.4 __dn_count_labels F
+GLIBC_2.4 __dn_expand F
+GLIBC_2.4 __dn_skipname F
+GLIBC_2.4 __fp_nquery F
+GLIBC_2.4 __fp_query F
+GLIBC_2.4 __fp_resstat F
+GLIBC_2.4 __hostalias F
+GLIBC_2.4 __loc_aton F
+GLIBC_2.4 __loc_ntoa F
+GLIBC_2.4 __p_cdname F
+GLIBC_2.4 __p_cdnname F
+GLIBC_2.4 __p_class F
+GLIBC_2.4 __p_class_syms D 0x54
+GLIBC_2.4 __p_fqname F
+GLIBC_2.4 __p_fqnname F
+GLIBC_2.4 __p_option F
+GLIBC_2.4 __p_query F
+GLIBC_2.4 __p_rcode F
+GLIBC_2.4 __p_secstodate F
+GLIBC_2.4 __p_time F
+GLIBC_2.4 __p_type F
+GLIBC_2.4 __p_type_syms D 0x228
+GLIBC_2.4 __putlong F
+GLIBC_2.4 __putshort F
+GLIBC_2.4 __res_close F
+GLIBC_2.4 __res_dnok F
+GLIBC_2.4 __res_hnok F
+GLIBC_2.4 __res_hostalias F
+GLIBC_2.4 __res_isourserver F
+GLIBC_2.4 __res_mailok F
+GLIBC_2.4 __res_mkquery F
+GLIBC_2.4 __res_nameinquery F
+GLIBC_2.4 __res_nmkquery F
+GLIBC_2.4 __res_nquery F
+GLIBC_2.4 __res_nquerydomain F
+GLIBC_2.4 __res_nsearch F
+GLIBC_2.4 __res_nsend F
+GLIBC_2.4 __res_ownok F
+GLIBC_2.4 __res_queriesmatch F
+GLIBC_2.4 __res_query F
+GLIBC_2.4 __res_querydomain F
+GLIBC_2.4 __res_search F
+GLIBC_2.4 __res_send F
+GLIBC_2.4 __sym_ntop F
+GLIBC_2.4 __sym_ntos F
+GLIBC_2.4 __sym_ston F
+GLIBC_2.4 _gethtbyaddr F
+GLIBC_2.4 _gethtbyname F
+GLIBC_2.4 _gethtbyname2 F
+GLIBC_2.4 _gethtent F
+GLIBC_2.4 _getlong F
+GLIBC_2.4 _getshort F
+GLIBC_2.4 _res_opcodes D 0x40
+GLIBC_2.4 _sethtent F
+GLIBC_2.4 inet_net_ntop F
+GLIBC_2.4 inet_net_pton F
+GLIBC_2.4 inet_neta F
+GLIBC_2.4 res_gethostbyaddr F
+GLIBC_2.4 res_gethostbyname F
+GLIBC_2.4 res_gethostbyname2 F
+GLIBC_2.4 res_send_setqhook F
+GLIBC_2.4 res_send_setrhook F
+GLIBC_2.9 GLIBC_2.9 A
+GLIBC_2.9 ns_datetosecs F
+GLIBC_2.9 ns_format_ttl F
+GLIBC_2.9 ns_get16 F
+GLIBC_2.9 ns_get32 F
+GLIBC_2.9 ns_initparse F
+GLIBC_2.9 ns_makecanon F
+GLIBC_2.9 ns_msg_getflag F
+GLIBC_2.9 ns_name_compress F
+GLIBC_2.9 ns_name_ntol F
+GLIBC_2.9 ns_name_ntop F
+GLIBC_2.9 ns_name_pack F
+GLIBC_2.9 ns_name_pton F
+GLIBC_2.9 ns_name_rollback F
+GLIBC_2.9 ns_name_skip F
+GLIBC_2.9 ns_name_uncompress F
+GLIBC_2.9 ns_name_unpack F
+GLIBC_2.9 ns_parse_ttl F
+GLIBC_2.9 ns_parserr F
+GLIBC_2.9 ns_put16 F
+GLIBC_2.9 ns_put32 F
+GLIBC_2.9 ns_samedomain F
+GLIBC_2.9 ns_samename F
+GLIBC_2.9 ns_skiprr F
+GLIBC_2.9 ns_sprintrr F
+GLIBC_2.9 ns_sprintrrf F
+GLIBC_2.9 ns_subdomain F
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/librt.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/arm/librt.abilist
new file mode 100644
index 0000000000..b47aa0cc9c
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/librt.abilist
@@ -0,0 +1,42 @@
+GLIBC_2.4 GLIBC_2.4 A
+GLIBC_2.4 aio_cancel F
+GLIBC_2.4 aio_cancel64 F
+GLIBC_2.4 aio_error F
+GLIBC_2.4 aio_error64 F
+GLIBC_2.4 aio_fsync F
+GLIBC_2.4 aio_fsync64 F
+GLIBC_2.4 aio_init F
+GLIBC_2.4 aio_read F
+GLIBC_2.4 aio_read64 F
+GLIBC_2.4 aio_return F
+GLIBC_2.4 aio_return64 F
+GLIBC_2.4 aio_suspend F
+GLIBC_2.4 aio_suspend64 F
+GLIBC_2.4 aio_write F
+GLIBC_2.4 aio_write64 F
+GLIBC_2.4 clock_getcpuclockid F
+GLIBC_2.4 clock_getres F
+GLIBC_2.4 clock_gettime F
+GLIBC_2.4 clock_nanosleep F
+GLIBC_2.4 clock_settime F
+GLIBC_2.4 lio_listio F
+GLIBC_2.4 lio_listio64 F
+GLIBC_2.4 mq_close F
+GLIBC_2.4 mq_getattr F
+GLIBC_2.4 mq_notify F
+GLIBC_2.4 mq_open F
+GLIBC_2.4 mq_receive F
+GLIBC_2.4 mq_send F
+GLIBC_2.4 mq_setattr F
+GLIBC_2.4 mq_timedreceive F
+GLIBC_2.4 mq_timedsend F
+GLIBC_2.4 mq_unlink F
+GLIBC_2.4 shm_open F
+GLIBC_2.4 shm_unlink F
+GLIBC_2.4 timer_create F
+GLIBC_2.4 timer_delete F
+GLIBC_2.4 timer_getoverrun F
+GLIBC_2.4 timer_gettime F
+GLIBC_2.4 timer_settime F
+GLIBC_2.7 GLIBC_2.7 A
+GLIBC_2.7 __mq_open_2 F
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/libthread_db.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libthread_db.abilist
new file mode 100644
index 0000000000..4cffcd2238
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libthread_db.abilist
@@ -0,0 +1,41 @@
+GLIBC_2.4 GLIBC_2.4 A
+GLIBC_2.4 td_init F
+GLIBC_2.4 td_log F
+GLIBC_2.4 td_symbol_list F
+GLIBC_2.4 td_ta_clear_event F
+GLIBC_2.4 td_ta_delete F
+GLIBC_2.4 td_ta_enable_stats F
+GLIBC_2.4 td_ta_event_addr F
+GLIBC_2.4 td_ta_event_getmsg F
+GLIBC_2.4 td_ta_get_nthreads F
+GLIBC_2.4 td_ta_get_ph F
+GLIBC_2.4 td_ta_get_stats F
+GLIBC_2.4 td_ta_map_id2thr F
+GLIBC_2.4 td_ta_map_lwp2thr F
+GLIBC_2.4 td_ta_new F
+GLIBC_2.4 td_ta_reset_stats F
+GLIBC_2.4 td_ta_set_event F
+GLIBC_2.4 td_ta_setconcurrency F
+GLIBC_2.4 td_ta_thr_iter F
+GLIBC_2.4 td_ta_tsd_iter F
+GLIBC_2.4 td_thr_clear_event F
+GLIBC_2.4 td_thr_dbresume F
+GLIBC_2.4 td_thr_dbsuspend F
+GLIBC_2.4 td_thr_event_enable F
+GLIBC_2.4 td_thr_event_getmsg F
+GLIBC_2.4 td_thr_get_info F
+GLIBC_2.4 td_thr_getfpregs F
+GLIBC_2.4 td_thr_getgregs F
+GLIBC_2.4 td_thr_getxregs F
+GLIBC_2.4 td_thr_getxregsize F
+GLIBC_2.4 td_thr_set_event F
+GLIBC_2.4 td_thr_setfpregs F
+GLIBC_2.4 td_thr_setgregs F
+GLIBC_2.4 td_thr_setprio F
+GLIBC_2.4 td_thr_setsigpending F
+GLIBC_2.4 td_thr_setxregs F
+GLIBC_2.4 td_thr_sigsetmask F
+GLIBC_2.4 td_thr_tls_get_addr F
+GLIBC_2.4 td_thr_tlsbase F
+GLIBC_2.4 td_thr_tsd F
+GLIBC_2.4 td_thr_validate F
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/libutil.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libutil.abilist
new file mode 100644
index 0000000000..0b4f746094
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libutil.abilist
@@ -0,0 +1,7 @@
+GLIBC_2.4 GLIBC_2.4 A
+GLIBC_2.4 forkpty F
+GLIBC_2.4 login F
+GLIBC_2.4 login_tty F
+GLIBC_2.4 logout F
+GLIBC_2.4 logwtmp F
+GLIBC_2.4 openpty F
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/localplt.data b/REORG.TODO/sysdeps/unix/sysv/linux/arm/localplt.data
new file mode 100644
index 0000000000..19d3299d98
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/localplt.data
@@ -0,0 +1,19 @@
+libc.so: calloc
+libc.so: free
+libc.so: malloc
+libc.so: memalign
+libc.so: raise
+libc.so: realloc
+libm.so: matherr
+libpthread.so: raise
+# The dynamic loader needs __tls_get_addr for TLS.
+ld.so: __tls_get_addr
+# The main malloc is interposed into the dynamic linker, for
+# allocations after the initial link (when dlopen is used).
+ld.so: malloc
+ld.so: calloc
+ld.so: realloc
+ld.so: free
+# The TLS-enabled version of these functions is interposed from libc.so.
+ld.so: _dl_signal_error
+ld.so: _dl_catch_error
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/lockf64.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/lockf64.c
new file mode 100644
index 0000000000..a88f5a784a
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/lockf64.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/lockf64.c>
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/lxstat.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/lxstat.c
new file mode 100644
index 0000000000..0efa0aea49
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/lxstat.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/lxstat.c>
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/makecontext.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/makecontext.c
new file mode 100644
index 0000000000..2ccd563869
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/makecontext.c
@@ -0,0 +1,73 @@
+/* Copyright (C) 2012-2017 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/REORG.TODO/sysdeps/unix/sysv/linux/arm/profil-counter.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/profil-counter.h
new file mode 100644
index 0000000000..20346704b3
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/profil-counter.h
@@ -0,0 +1,34 @@
+/* Low-level statistical profiling support function. Linux/ARM version.
+ Copyright (C) 1996-2017 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 ("");
+}
+#ifndef __profil_counter
+weak_alias (__profil_counter, profil_counter)
+#endif
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/readahead.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/readahead.c
new file mode 100644
index 0000000000..fa0279ed19
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/readahead.c
@@ -0,0 +1,37 @@
+/* Provide kernel hint to read ahead.
+ Copyright (C) 2002-2017 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/REORG.TODO/sysdeps/unix/sysv/linux/arm/readdir64.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/readdir64.c
new file mode 100644
index 0000000000..2ea26dd409
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/readdir64.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/readdir64.c>
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/readdir64_r.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/readdir64_r.c
new file mode 100644
index 0000000000..9f54f897e3
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/readdir64_r.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/readdir64_r.c>
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/readelflib.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/readelflib.c
new file mode 100644
index 0000000000..65273bcf77
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/readelflib.c
@@ -0,0 +1,79 @@
+/* Copyright (C) 1999-2017 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/REORG.TODO/sysdeps/unix/sysv/linux/arm/register-dump.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/register-dump.h
new file mode 100644
index 0000000000..0f2bed7d1d
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/register-dump.h
@@ -0,0 +1,136 @@
+/* Dump registers.
+ Copyright (C) 1998-2017 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/REORG.TODO/sysdeps/unix/sysv/linux/arm/scandir64.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/scandir64.c
new file mode 100644
index 0000000000..506fd8877c
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/scandir64.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/scandir64.c>
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/setcontext.S b/REORG.TODO/sysdeps/unix/sysv/linux/arm/setcontext.S
new file mode 100644
index 0000000000..db6aebfbd4
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/setcontext.S
@@ -0,0 +1,111 @@
+/* Copyright (C) 2012-2017 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(). */
+ /* Unwind descriptors are looked up based on PC - 2, so we have to
+ make sure to mark the instruction preceding the __startcontext
+ label as .cantunwind. */
+ .fnstart
+ .cantunwind
+ nop
+ENTRY(__startcontext)
+ movs r0, r4
+ bne PLTJMP(__setcontext)
+
+ @ New context was 0 - exit
+ b PLTJMP(HIDDEN_JUMPTARGET(exit))
+ .fnend
+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/REORG.TODO/sysdeps/unix/sysv/linux/arm/shlib-versions b/REORG.TODO/sysdeps/unix/sysv/linux/arm/shlib-versions
new file mode 100644
index 0000000000..9b169530d4
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/shlib-versions
@@ -0,0 +1,9 @@
+DEFAULT GLIBC_2.4
+
+%ifdef HAVE_ARM_PCS_VFP
+# The EABI-derived hard-float ABI uses a new dynamic linker.
+ld=ld-linux-armhf.so.3
+%else
+# The EABI-derived soft-float ABI continues to use ld-linux.so.3.
+ld=ld-linux.so.3
+%endif
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/sigaction.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sigaction.c
new file mode 100644
index 0000000000..e4c0d976b0
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sigaction.c
@@ -0,0 +1,84 @@
+/* Copyright (C) 1997-2017 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>
+
+/* 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 (void);
+extern void __default_rt_sa_restorer (void);
+
+/* 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 (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)
+
+#include <nptl/sigaction.c>
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/sigcontextinfo.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sigcontextinfo.h
new file mode 100644
index 0000000000..f2a66d154d
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sigcontextinfo.h
@@ -0,0 +1,48 @@
+/* Copyright (C) 1999-2017 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>
+
+#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/REORG.TODO/sysdeps/unix/sysv/linux/arm/sigrestorer.S b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sigrestorer.S
new file mode 100644
index 0000000000..01136bef0e
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sigrestorer.S
@@ -0,0 +1,84 @@
+/* Copyright (C) 1999-2017 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. */
+
+/* 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)
+
+#define OFFSET 32
+ .fnstart
+ .save {r0-r15}
+ .pad #OFFSET
+ nop
+ENTRY(__default_sa_restorer)
+ CFI
+ mov r7, $SYS_ify(sigreturn)
+ swi 0x0
+ .fnend
+END(__default_sa_restorer)
+#undef OFFSET
+
+#define OFFSET 160
+ .fnstart
+ .save {r0-r15}
+ .pad #OFFSET
+ nop
+ENTRY(__default_rt_sa_restorer)
+ CFI
+ mov r7, $SYS_ify(rt_sigreturn)
+ swi 0x0
+ .fnend
+END(__default_rt_sa_restorer)
+#undef OFFSET
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/swapcontext.S b/REORG.TODO/sysdeps/unix/sysv/linux/arm/swapcontext.S
new file mode 100644
index 0000000000..555da1fe0a
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/swapcontext.S
@@ -0,0 +1,63 @@
+/* Copyright (C) 2012-2017 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/REORG.TODO/sysdeps/unix/sysv/linux/arm/sys/elf.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sys/elf.h
new file mode 100644
index 0000000000..44af8d2b1e
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sys/elf.h
@@ -0,0 +1,25 @@
+/* Copyright (C) 1996-2017 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/REORG.TODO/sysdeps/unix/sysv/linux/arm/sys/io.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sys/io.h
new file mode 100644
index 0000000000..f4337823ce
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sys/io.h
@@ -0,0 +1,47 @@
+/* Copyright (C) 1996-2017 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/REORG.TODO/sysdeps/unix/sysv/linux/arm/sys/procfs.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sys/procfs.h
new file mode 100644
index 0000000000..1b1b153730
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sys/procfs.h
@@ -0,0 +1,122 @@
+/* Copyright (C) 1996-2017 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/REORG.TODO/sysdeps/unix/sysv/linux/arm/sys/ucontext.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sys/ucontext.h
new file mode 100644
index 0000000000..0ce9b14ba5
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sys/ucontext.h
@@ -0,0 +1,114 @@
+/* Copyright (C) 1998-2017 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 <bits/types/sigset_t.h>
+#include <bits/sigcontext.h>
+#include <bits/types/stack_t.h>
+
+
+#ifdef __USE_MISC
+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;
+#endif
+
+/* 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/REORG.TODO/sysdeps/unix/sysv/linux/arm/sys/user.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sys/user.h
new file mode 100644
index 0000000000..46ca428e66
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sys/user.h
@@ -0,0 +1,71 @@
+/* Copyright (C) 1998-2017 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/REORG.TODO/sysdeps/unix/sysv/linux/arm/syscall.S b/REORG.TODO/sysdeps/unix/sysv/linux/arm/syscall.S
new file mode 100644
index 0000000000..c9528fff40
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/syscall.S
@@ -0,0 +1,48 @@
+/* Copyright (C) 2005-2017 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/REORG.TODO/sysdeps/unix/sysv/linux/arm/syscalls.list b/REORG.TODO/sysdeps/unix/sysv/linux/arm/syscalls.list
new file mode 100644
index 0000000000..13441f7eb4
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/syscalls.list
@@ -0,0 +1,33 @@
+# File name Caller Syscall name # args Strong name Weak names
+
+chown - chown32 i:sii __chown chown
+lchown - lchown32 i:sii __lchown lchown
+fchown - fchown32 i:iii __fchown fchown
+
+getegid - getegid32 Ei: __getegid getegid
+geteuid - geteuid32 Ei: __geteuid geteuid
+getgid - getgid32 Ei: __getgid getgid
+getuid - getuid32 Ei: __getuid getuid
+getresgid - getresgid32 i:ppp __getresgid getresgid
+getresuid - getresuid32 i:ppp __getresuid getresuid
+getgroups - getgroups32 i:ip __getgroups getgroups
+
+setfsgid - setfsgid32 Ei:i setfsgid
+setfsuid - setfsuid32 Ei:i setfsuid
+
+prlimit64 EXTRA prlimit64 i:iipp prlimit64
+
+fanotify_mark EXTRA fanotify_mark i:iiiiis fanotify_mark
+
+personality EXTRA personality Ei:i __personality personality
+
+# proper socket implementations:
+bind - bind i:ipi __bind bind
+getpeername - getpeername i:ipp __getpeername getpeername
+getsockname - getsockname i:ipp __getsockname getsockname
+getsockopt - getsockopt i:iiiBN __getsockopt getsockopt
+listen - listen i:ii __listen listen
+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/REORG.TODO/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h
new file mode 100644
index 0000000000..de12acf046
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h
@@ -0,0 +1,241 @@
+/* Copyright (C) 2003-2017 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 IS_IN (libc) || IS_IN (libpthread) || 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
+
+# if 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 IS_IN (libc)
+# define CENABLE bl PLTJMP(__libc_enable_asynccancel)
+# define CDISABLE bl PLTJMP(__libc_disable_asynccancel)
+# define __local_multiple_threads __libc_multiple_threads
+# elif IS_IN (librt)
+# define CENABLE bl PLTJMP(__librt_enable_asynccancel)
+# define CDISABLE bl PLTJMP(__librt_disable_asynccancel)
+# else
+# error Unsupported library
+# endif
+
+# if IS_IN (libpthread) || IS_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
+# 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/REORG.TODO/sysdeps/unix/sysv/linux/arm/sysdep.S b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sysdep.S
new file mode 100644
index 0000000000..a9b8a034c1
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sysdep.S
@@ -0,0 +1,33 @@
+/* Copyright (C) 1995-2017 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/REORG.TODO/sysdeps/unix/sysv/linux/arm/sysdep.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sysdep.h
new file mode 100644
index 0000000000..3ca2198596
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sysdep.h
@@ -0,0 +1,442 @@
+/* Copyright (C) 1992-2017 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/sysv/linux/sysdep.h>
+#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)
+
+#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 !IS_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))
+
+/* List of system calls which are supported as vsyscalls. */
+#define HAVE_CLOCK_GETTIME_VSYSCALL 1
+#define HAVE_GETTIMEOFDAY_VSYSCALL 1
+
+#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__ */
+
+#endif /* linux/arm/sysdep.h */
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/tls.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/tls.h
new file mode 100644
index 0000000000..60f503081f
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/tls.h
@@ -0,0 +1,42 @@
+/* Definition for thread-local data handling. ARM/Linux version.
+ Copyright (C) 2005-2017 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_TLS_H
+#define _LINUX_ARM_TLS_H 1
+
+/* Almost everything is OS-independent and common for all NPTL on ARM. */
+#include <sysdeps/arm/nptl/tls.h>
+
+#ifndef __ASSEMBLER__
+
+/* Get system call information. */
+# include <sysdep.h>
+
+/* 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) \
+ ({ INTERNAL_SYSCALL_DECL (err); \
+ long int result_var; \
+ result_var = INTERNAL_SYSCALL_ARM (set_tls, err, 1, (tcbp)); \
+ INTERNAL_SYSCALL_ERROR_P (result_var, err) \
+ ? "unknown error" : NULL; })
+
+#endif /* __ASSEMBLER__ */
+
+#endif /* tls.h */
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/ucontext_i.sym b/REORG.TODO/sysdeps/unix/sysv/linux/arm/ucontext_i.sym
new file mode 100644
index 0000000000..306292f1f8
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/ucontext_i.sym
@@ -0,0 +1,30 @@
+#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/REORG.TODO/sysdeps/unix/sysv/linux/arm/umount.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/umount.c
new file mode 100644
index 0000000000..64487c7819
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/umount.c
@@ -0,0 +1,30 @@
+/* Copyright (C) 2000-2017 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/REORG.TODO/sysdeps/unix/sysv/linux/arm/versionsort64.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/versionsort64.c
new file mode 100644
index 0000000000..144b691e56
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/versionsort64.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/versionsort64.c>
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/vfork.S b/REORG.TODO/sysdeps/unix/sysv/linux/arm/vfork.S
new file mode 100644
index 0000000000..e3666ea501
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/vfork.S
@@ -0,0 +1,59 @@
+/* Copyright (C) 1999-2017 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>
+#include <tcb-offsets.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)
+ /* 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)
+
+ cmn a1, #4096
+ it cc
+ RETINSTR(cc, lr)
+
+ b PLTJMP(SYSCALL_ERROR)
+PSEUDO_END (__vfork)
+libc_hidden_def (__vfork)
+
+weak_alias (__vfork, vfork)
+strong_alias (__vfork, __libc_vfork)
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/xstat.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/xstat.c
new file mode 100644
index 0000000000..e9869f5508
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/xstat.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/xstat.c>