aboutsummaryrefslogtreecommitdiff
path: root/REORG.TODO/sysdeps/unix/sysv/linux/arm
diff options
context:
space:
mode:
authorZack Weinberg <zackw@panix.com>2017-06-08 15:39:03 -0400
committerZack Weinberg <zackw@panix.com>2017-06-08 15:39:03 -0400
commit5046dbb4a7eba5eccfd258f92f4735c9ffc8d069 (patch)
tree4470480d904b65cf14ca524f96f79eca818c3eaf /REORG.TODO/sysdeps/unix/sysv/linux/arm
parent199fc19d3aaaf57944ef036e15904febe877fc93 (diff)
downloadglibc-zack/build-layout-experiment.tar
glibc-zack/build-layout-experiment.tar.gz
glibc-zack/build-layout-experiment.tar.bz2
glibc-zack/build-layout-experiment.zip
Prepare for radical source tree reorganization.zack/build-layout-experiment
All top-level files and directories are moved into a temporary storage directory, REORG.TODO, except for files that will certainly still exist in their current form at top level when we're done (COPYING, COPYING.LIB, LICENSES, NEWS, README), all old ChangeLog files (which are moved to the new directory OldChangeLogs, instead), and the generated file INSTALL (which is just deleted; in the new order, there will be no generated files checked into version control).
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>