aboutsummaryrefslogtreecommitdiff
path: root/REORG.TODO/sysdeps/unix/sysv/linux/i386
diff options
context:
space:
mode:
Diffstat (limited to 'REORG.TODO/sysdeps/unix/sysv/linux/i386')
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/Implies2
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/Makefile46
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/Versions51
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/____longjmp_chk.S109
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/_exit.S44
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/alphasort64.c48
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/arch-fork.h27
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/brk.c41
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/c++-types.data67
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/clone.S124
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/configure44
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/configure.ac22
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/dl-librecon.h62
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/dl-procinfo.h47
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/dl-sysdep.h46
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/fcntl.c61
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/fxstat.c61
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/fxstatat.c56
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/get_clockfreq.c88
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/getcontext.S83
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/getdents64.c39
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/getmsg.c33
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/gettimeofday.c35
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/glob64.c76
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/i686/Implies1
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h29
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/i786/Implies2
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/init-first.c50
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/kernel-features.h50
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/ld.abilist13
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/ldconfig.h24
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/libBrokenLocale.abilist2
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/libanl.abilist5
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/libc-do-syscall.S53
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/libc-lowlevellock.S19
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/libc.abilist2333
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/libcrypt.abilist8
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/libdl.abilist14
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/libm.abilist476
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/libnsl.abilist124
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/libpthread.abilist257
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/libresolv.abilist100
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/librt.abilist47
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/libthread_db.abilist44
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/libutil.abilist7
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/lll_timedlock_wait.c1
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/lll_timedwait_tid.c1
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/localplt.data18
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/lockf64.c70
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/lowlevellock.S466
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/lowlevellock.h267
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/lxstat.c62
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/makecontext.S120
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/olddirent.h44
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/profil-counter.h31
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/putmsg.c34
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/readdir64.c43
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/readdir64_r.c43
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/readelflib.c93
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/register-dump.h255
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/scandir64.c136
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/setcontext.S96
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/shlib-versions1
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/sigaction.c129
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/sigcontextinfo.h50
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/smp.h55
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/swapcontext.S109
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/syscall.S35
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/syscalls.list26
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h153
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/sysdep.c30
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/sysdep.h657
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/time.c34
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/ucontext_i.sym30
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/versionsort64.c48
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/vfork.S57
-rw-r--r--REORG.TODO/sysdeps/unix/sysv/linux/i386/xstat.c61
77 files changed, 8225 insertions, 0 deletions
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/Implies b/REORG.TODO/sysdeps/unix/sysv/linux/i386/Implies
new file mode 100644
index 0000000000..4bf5f8b520
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/Implies
@@ -0,0 +1,2 @@
+unix/sysv/linux/x86
+i386/nptl
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/Makefile b/REORG.TODO/sysdeps/unix/sysv/linux/i386/Makefile
new file mode 100644
index 0000000000..4080b8c966
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/Makefile
@@ -0,0 +1,46 @@
+# The default ABI is 32.
+default-abi := 32
+
+ifeq ($(subdir),misc)
+sysdep_routines += ioperm iopl vm86
+endif
+
+ifeq ($(subdir),elf)
+sysdep-dl-routines += libc-do-syscall
+sysdep-others += lddlibc4
+install-bin += lddlibc4
+endif
+
+ifeq ($(subdir),io)
+sysdep_routines += libc-do-syscall
+endif
+
+ifeq ($(subdir),nptl)
+libpthread-sysdep_routines += libc-do-syscall
+libpthread-shared-only-routines += libc-do-syscall
+endif
+
+ifeq ($(subdir),stdlib)
+gen-as-const-headers += ucontext_i.sym
+endif
+
+ifeq ($(subdir),csu)
+sysdep-dl-routines += sysdep
+ifeq (yes,$(build-shared))
+sysdep_routines += divdi3
+shared-only-routines += divdi3
+CPPFLAGS-divdi3.c = -Din_divdi3_c
+endif
+endif
+
+ifeq ($(subdir),nptl)
+# pull in __syscall_error routine
+libpthread-routines += sysdep
+libpthread-shared-only-routines += sysdep
+endif
+
+ifeq ($(subdir),rt)
+# pull in __syscall_error routine
+librt-routines += sysdep
+librt-shared-only-routines += sysdep
+endif
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/Versions b/REORG.TODO/sysdeps/unix/sysv/linux/i386/Versions
new file mode 100644
index 0000000000..f3544acb75
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/Versions
@@ -0,0 +1,51 @@
+libc {
+ GLIBC_2.0 {
+ # Exception handling support functions from libgcc
+ __register_frame; __register_frame_table; __deregister_frame;
+ __frame_state_for; __register_frame_info_table;
+
+ ioperm; iopl;
+
+ vm86;
+ }
+ GLIBC_2.1 {
+ modify_ldt;
+ }
+ GLIBC_2.2 {
+ # functions used in other libraries
+ __xstat64; __fxstat64; __lxstat64;
+
+ # a*
+ alphasort64;
+
+ # g*
+ glob64;
+
+ # New rlimit interface
+ getrlimit; setrlimit; getrlimit64;
+
+ # r*
+ readdir64; readdir64_r;
+
+ # s*
+ scandir64;
+
+ # v*
+ versionsort64;
+ }
+ GLIBC_2.3.3 {
+ # p*
+ posix_fadvise64; posix_fallocate64;
+ }
+ GLIBC_2.3.4 {
+ # v*
+ vm86;
+ }
+ GLIBC_2.11 {
+ # f*
+ fallocate64;
+ }
+ GLIBC_PRIVATE {
+ __modify_ldt;
+ }
+}
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/____longjmp_chk.S b/REORG.TODO/sysdeps/unix/sysv/linux/i386/____longjmp_chk.S
new file mode 100644
index 0000000000..d46ea84e30
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/____longjmp_chk.S
@@ -0,0 +1,109 @@
+/* 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 <sysdep.h>
+#include <jmpbuf-offsets.h>
+#include <asm-syntax.h>
+#include <stap-probe.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
+
+
+#ifdef PIC
+# define CALL_FAIL movl %ebx, %ecx; \
+ cfi_register(%ebx,%ecx); \
+ LOAD_PIC_REG (bx); \
+ leal longjmp_msg@GOTOFF(%ebx), %eax; \
+ call HIDDEN_JUMPTARGET(__fortify_fail)
+#else
+# define CALL_FAIL movl $longjmp_msg, %eax; \
+ call HIDDEN_JUMPTARGET(__fortify_fail)
+#endif
+
+
+ .text
+ENTRY (____longjmp_chk)
+ movl 4(%esp), %ecx /* User's jmp_buf in %ecx. */
+
+ /* Save the return address now. */
+ movl (JB_PC*4)(%ecx), %edx
+ /* Get the stack pointer. */
+ movl (JB_SP*4)(%ecx), %edi
+ cfi_undefined(%edi)
+ PTR_DEMANGLE (%edx)
+ PTR_DEMANGLE (%edi)
+
+ cmpl %edi, %esp
+ jbe .Lok
+
+ subl $12, %esp
+ cfi_adjust_cfa_offset(12)
+ xorl %ebx, %ebx
+ movl %esp, %ecx
+ movl $__NR_sigaltstack, %eax
+ ENTER_KERNEL
+ /* Without working sigaltstack we cannot perform the test. */
+ test %eax, %eax
+ jne .Lok2
+ testl $1, 4(%esp)
+ jz .Lfail
+
+ movl (%esp), %eax
+ addl 8(%esp), %eax
+ subl %edi, %eax
+ cmpl 8(%esp), %eax
+ jae .Lok2
+
+.Lfail: CALL_FAIL
+
+.Lok2: addl $12, %esp
+ cfi_adjust_cfa_offset(-12)
+ movl 4(%esp), %ecx
+
+.Lok:
+ LIBC_PROBE (longjmp, 3, 4@%ecx, -4@8(%esp), 4@%edx)
+ /* We add unwind information for the target here. */
+ cfi_def_cfa(%ecx, 0)
+ cfi_register(%eip, %edx)
+ cfi_register(%esp, %edi)
+ cfi_offset(%ebx, JB_BX*4)
+ cfi_offset(%esi, JB_SI*4)
+ cfi_offset(%edi, JB_DI*4)
+ cfi_offset(%ebp, JB_BP*4)
+
+ movl 8(%esp), %eax /* Second argument is return value. */
+ movl %edi, %esp
+
+ /* Restore registers. */
+ movl (JB_BX*4)(%ecx), %ebx
+ movl (JB_SI*4)(%ecx), %esi
+ movl (JB_DI*4)(%ecx), %edi
+ movl (JB_BP*4)(%ecx), %ebp
+ cfi_restore(%ebx)
+ cfi_restore(%esi)
+ cfi_restore(%edi)
+ cfi_restore(%ebp)
+
+ /* Jump to saved PC. */
+ LIBC_PROBE (longjmp_target, 3, 4@%ecx, -4@%eax, 4@%edx)
+ jmp *%edx
+END (____longjmp_chk)
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/_exit.S b/REORG.TODO/sysdeps/unix/sysv/linux/i386/_exit.S
new file mode 100644
index 0000000000..0ba2231998
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/_exit.S
@@ -0,0 +1,44 @@
+/* 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 <sysdep.h>
+
+ .text
+ .type _exit,@function
+ .global _exit
+_exit:
+ movl 4(%esp), %ebx
+
+ /* Try the new syscall first. */
+#ifdef __NR_exit_group
+ movl $__NR_exit_group, %eax
+ ENTER_KERNEL
+#endif
+
+ /* Not available. Now the old one. */
+ movl $__NR_exit, %eax
+ /* Don't bother using ENTER_KERNEL here. If the exit_group
+ syscall is not available AT_SYSINFO isn't either. */
+ int $0x80
+
+ /* This must not fail. Be sure we don't return. */
+ hlt
+ .size _exit,.-_exit
+
+libc_hidden_def (_exit)
+rtld_hidden_def (_exit)
+weak_alias (_exit, _Exit)
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/alphasort64.c b/REORG.TODO/sysdeps/unix/sysv/linux/i386/alphasort64.c
new file mode 100644
index 0000000000..d5fd47a9ae
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/alphasort64.c
@@ -0,0 +1,48 @@
+/* Copyright (C) 1992-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 <dirent.h>
+#include <string.h>
+
+int
+__alphasort64 (const struct dirent64 **a, const struct dirent64 **b)
+{
+ return strcoll ((*a)->d_name, (*b)->d_name);
+}
+
+#include <shlib-compat.h>
+
+versioned_symbol (libc, __alphasort64, alphasort64, GLIBC_2_2);
+
+#if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2)
+
+#include <sysdeps/unix/sysv/linux/i386/olddirent.h>
+
+int
+__old_alphasort64 (const struct __old_dirent64 **a,
+ const struct __old_dirent64 **b);
+
+int
+attribute_compat_text_section
+__old_alphasort64 (const struct __old_dirent64 **a,
+ const struct __old_dirent64 **b)
+{
+ return strcoll ((*a)->d_name, (*b)->d_name);
+}
+
+compat_symbol (libc, __old_alphasort64, alphasort64, GLIBC_2_1);
+#endif
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/arch-fork.h b/REORG.TODO/sysdeps/unix/sysv/linux/i386/arch-fork.h
new file mode 100644
index 0000000000..9a2465b58e
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/arch-fork.h
@@ -0,0 +1,27 @@
+/* Internal definitions for thread-friendly fork implementation. Linux/i386.
+ Copyright (C) 2002-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have 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, 0, \
+ NULL, NULL, &THREAD_SELF->tid)
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/brk.c b/REORG.TODO/sysdeps/unix/sysv/linux/i386/brk.c
new file mode 100644
index 0000000000..25ab1015d3
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/brk.c
@@ -0,0 +1,41 @@
+/* brk system call for Linux/i386.
+ 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;
+
+/* Old braindamage in GCC's crtstuff.c requires this symbol in an attempt
+ to work around different old braindamage in the old Linux ELF dynamic
+ linker. */
+weak_alias (__curbrk, ___brk_addr)
+
+int
+__brk (void *addr)
+{
+ INTERNAL_SYSCALL_DECL (err);
+ void *newbrk = (void *) INTERNAL_SYSCALL (brk, err, 1, addr);
+ __curbrk = newbrk;
+ if (newbrk < addr)
+ return INLINE_SYSCALL_ERROR_RETURN_VALUE (ENOMEM);
+ return 0;
+}
+weak_alias (__brk, brk)
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/c++-types.data b/REORG.TODO/sysdeps/unix/sysv/linux/i386/c++-types.data
new file mode 100644
index 0000000000..fde53bf337
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/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/i386/clone.S b/REORG.TODO/sysdeps/unix/sysv/linux/i386/clone.S
new file mode 100644
index 0000000000..a4ba3e20ff
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/clone.S
@@ -0,0 +1,124 @@
+/* Copyright (C) 1996-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Richard Henderson (rth@tamu.edu)
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* clone() is even more special than fork() as it mucks with stacks
+ and invokes a function in the right context after its all over. */
+
+#include <sysdep.h>
+#define _ERRNO_H 1
+#include <bits/errno.h>
+#include <asm-syntax.h>
+
+/* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg,
+ pid_t *ptid, struct user_desc *tls, pid_t *ctid); */
+
+#define PARMS 4 /* no space for saved regs */
+#define FUNC PARMS
+#define STACK FUNC+4
+#define FLAGS STACK+4
+#define ARG FLAGS+4
+#define PTID ARG+4
+#define TLS PTID+4
+#define CTID TLS+4
+
+#define __NR_clone 120
+#define SYS_clone 120
+
+#define CLONE_VM 0x00000100
+
+ .text
+ENTRY (__clone)
+ /* Sanity check arguments. */
+ movl $-EINVAL,%eax
+ movl FUNC(%esp),%ecx /* no NULL function pointers */
+ testl %ecx,%ecx
+ jz SYSCALL_ERROR_LABEL
+ movl STACK(%esp),%ecx /* no NULL stack pointers */
+ testl %ecx,%ecx
+ jz SYSCALL_ERROR_LABEL
+
+ /* Insert the argument onto the new stack. Make sure the new
+ thread is started with an alignment of (mod 16). */
+ andl $0xfffffff0, %ecx
+ subl $28,%ecx
+ movl ARG(%esp),%eax /* no negative argument counts */
+ movl %eax,12(%ecx)
+
+ /* Save the function pointer as the zeroth argument.
+ It will be popped off in the child in the ebx frobbing below. */
+ movl FUNC(%esp),%eax
+ movl %eax,8(%ecx)
+ /* Don't leak any information. */
+ movl $0,4(%ecx)
+
+ /* Do the system call */
+ pushl %ebx
+ cfi_adjust_cfa_offset (4)
+ pushl %esi
+ cfi_adjust_cfa_offset (4)
+ pushl %edi
+ cfi_adjust_cfa_offset (4)
+
+ movl TLS+12(%esp),%esi
+ cfi_rel_offset (esi, 4)
+ movl PTID+12(%esp),%edx
+ movl FLAGS+12(%esp),%ebx
+ cfi_rel_offset (ebx, 8)
+ movl CTID+12(%esp),%edi
+ cfi_rel_offset (edi, 0)
+ movl $SYS_ify(clone),%eax
+
+ /* Remember the flag value. */
+ movl %ebx, (%ecx)
+
+ /* End FDE now, because in the child the unwind info will be
+ wrong. */
+ cfi_endproc
+
+ int $0x80
+ popl %edi
+ popl %esi
+ popl %ebx
+
+ test %eax,%eax
+ jl SYSCALL_ERROR_LABEL
+ jz L(thread_start)
+
+ ret
+
+L(thread_start):
+ cfi_startproc;
+ /* Clearing frame pointer is insufficient, use CFI. */
+ cfi_undefined (eip);
+ /* Note: %esi is zero. */
+ movl %esi,%ebp /* terminate the stack frame */
+ call *%ebx
+#ifdef PIC
+ call L(here)
+L(here):
+ popl %ebx
+ addl $_GLOBAL_OFFSET_TABLE_+[.-L(here)], %ebx
+#endif
+ movl %eax, %ebx
+ movl $SYS_ify(exit), %eax
+ ENTER_KERNEL
+
+PSEUDO_END (__clone)
+
+libc_hidden_def (__clone)
+weak_alias (__clone, clone)
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/configure b/REORG.TODO/sysdeps/unix/sysv/linux/i386/configure
new file mode 100644
index 0000000000..0327590486
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/configure
@@ -0,0 +1,44 @@
+# This file is generated from configure.ac by Autoconf. DO NOT EDIT!
+ # Local configure fragment for sysdeps/unix/sysv/linux/i386.
+
+# Check if CFLAGS allows compiler to use ebp register in inline assembly.
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler flags allows ebp in inline assembly" >&5
+$as_echo_n "checking if compiler flags allows ebp in inline assembly... " >&6; }
+if ${libc_cv_can_use_register_asm_ebp+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ void foo (int i)
+ {
+ register int reg asm ("ebp") = i;
+ asm ("# %0" : : "r" (reg));
+ }
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ libc_cv_can_use_register_asm_ebp=yes
+else
+ libc_cv_can_use_register_asm_ebp=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_can_use_register_asm_ebp" >&5
+$as_echo "$libc_cv_can_use_register_asm_ebp" >&6; }
+if test $libc_cv_can_use_register_asm_ebp = yes; then
+ $as_echo "#define CAN_USE_REGISTER_ASM_EBP 1" >>confdefs.h
+
+fi
+
+libc_cv_gcc_unwind_find_fde=yes
+ldd_rewrite_script=sysdeps/unix/sysv/linux/ldd-rewrite.sed
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/configure.ac b/REORG.TODO/sysdeps/unix/sysv/linux/i386/configure.ac
new file mode 100644
index 0000000000..9e980784bb
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/configure.ac
@@ -0,0 +1,22 @@
+GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
+# Local configure fragment for sysdeps/unix/sysv/linux/i386.
+
+# Check if CFLAGS allows compiler to use ebp register in inline assembly.
+AC_CACHE_CHECK([if compiler flags allows ebp in inline assembly],
+ libc_cv_can_use_register_asm_ebp, [
+AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([
+ void foo (int i)
+ {
+ register int reg asm ("ebp") = i;
+ asm ("# %0" : : "r" (reg));
+ }])],
+ [libc_cv_can_use_register_asm_ebp=yes],
+ [libc_cv_can_use_register_asm_ebp=no])
+])
+if test $libc_cv_can_use_register_asm_ebp = yes; then
+ AC_DEFINE(CAN_USE_REGISTER_ASM_EBP)
+fi
+
+libc_cv_gcc_unwind_find_fde=yes
+ldd_rewrite_script=sysdeps/unix/sysv/linux/ldd-rewrite.sed
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/dl-librecon.h b/REORG.TODO/sysdeps/unix/sysv/linux/i386/dl-librecon.h
new file mode 100644
index 0000000000..5f91009a4c
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/dl-librecon.h
@@ -0,0 +1,62 @@
+/* Optional code to distinguish library flavours.
+ Copyright (C) 1998-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 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/>. */
+
+#ifndef _DL_LIBRECON_H
+
+#include <sysdeps/unix/sysv/linux/dl-librecon.h>
+
+#define DISTINGUISH_LIB_VERSIONS \
+ do \
+ { \
+ /* We have to find out whether the binary is linked against \
+ libc 5 or glibc. We do this by looking at all the DT_NEEDED \
+ entries. If one is libc.so.5 this is a libc 5 linked binary. */ \
+ if (main_map->l_info[DT_NEEDED]) \
+ { \
+ /* We have dependencies. */ \
+ const ElfW(Dyn) *d; \
+ const char *strtab; \
+ \
+ strtab = (const char *) D_PTR (main_map, l_info[DT_STRTAB]); \
+ \
+ for (d = main_map->l_ld; d->d_tag != DT_NULL; ++d) \
+ if (d->d_tag == DT_NEEDED \
+ && strcmp (strtab + d->d_un.d_val, "libc.so.5") == 0) \
+ break; \
+ \
+ /* We print a `5' or `6' depending on the outcome. */ \
+ _dl_printf (d->d_tag != DT_NULL ? "5\n" : "6\n"); \
+ } \
+ } \
+ while (0)
+
+/* Recognizing extra environment variables. */
+#define EXTRA_LD_ENVVARS \
+ case 15: \
+ if (memcmp (envline, "LIBRARY_VERSION", 15) == 0) \
+ GLRO(dl_correct_cache_id) = envline[16] == '5' ? 2 : 3; \
+ break; \
+
+/* Extra unsecure variables. The names are all stuffed in a single
+ string which means they have to be terminated with a '\0' explicitly. */
+#define EXTRA_UNSECURE_ENVVARS \
+ "LD_AOUT_LIBRARY_PATH\0" \
+ "LD_AOUT_PRELOAD\0"
+
+#endif /* dl-librecon.h */
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/dl-procinfo.h b/REORG.TODO/sysdeps/unix/sysv/linux/i386/dl-procinfo.h
new file mode 100644
index 0000000000..c590896ddf
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/dl-procinfo.h
@@ -0,0 +1,47 @@
+/* Linux/i386 version of processor capability information handling macros.
+ Copyright (C) 1998-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 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/>. */
+
+#ifndef _DL_I386_PROCINFO_H
+#define _DL_I386_PROCINFO_H 1
+#include <sysdeps/x86/dl-procinfo.h>
+
+#undef _dl_procinfo
+static inline int
+__attribute__ ((unused))
+_dl_procinfo (unsigned int type, unsigned long int word)
+{
+ /* This table should match the information from arch/i386/kernel/setup.c
+ in the kernel sources. */
+ int i;
+
+ /* Fallback to unknown output mechanism. */
+ if (type == AT_HWCAP2)
+ return -1;
+
+ _dl_printf ("AT_HWCAP: ");
+
+ for (i = 0; i < 32; ++i)
+ if (word & (1 << i))
+ _dl_printf (" %s", GLRO(dl_x86_cap_flags)[i]);
+
+ _dl_printf ("\n");
+
+ return 0;
+}
+#endif
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/dl-sysdep.h b/REORG.TODO/sysdeps/unix/sysv/linux/i386/dl-sysdep.h
new file mode 100644
index 0000000000..8a3af5e27b
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/dl-sysdep.h
@@ -0,0 +1,46 @@
+/* System-specific settings for dynamic linker code. i386 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/>. */
+
+#ifndef _LINUX_I386_DL_SYSDEP_H
+
+#include_next <dl-sysdep.h>
+
+/* Traditionally system calls have been made using int $0x80. A
+ second method was introduced which, if possible, will use the
+ sysenter/syscall instructions. To signal the presence and where to
+ find the code the kernel passes an AT_SYSINFO value in the
+ auxiliary vector to the application. */
+#define NEED_DL_SYSINFO 1
+
+#ifndef __ASSEMBLER__
+extern void _dl_sysinfo_int80 (void) attribute_hidden;
+# define DL_SYSINFO_DEFAULT (uintptr_t) _dl_sysinfo_int80
+# define DL_SYSINFO_IMPLEMENTATION \
+ asm (".text\n\t" \
+ ".type _dl_sysinfo_int80,@function\n\t" \
+ ".hidden _dl_sysinfo_int80\n" \
+ CFI_STARTPROC "\n" \
+ "_dl_sysinfo_int80:\n\t" \
+ "int $0x80;\n\t" \
+ "ret;\n\t" \
+ CFI_ENDPROC "\n" \
+ ".size _dl_sysinfo_int80,.-_dl_sysinfo_int80\n\t" \
+ ".previous");
+#endif
+
+#endif /* dl-sysdep.h */
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/fcntl.c b/REORG.TODO/sysdeps/unix/sysv/linux/i386/fcntl.c
new file mode 100644
index 0000000000..b0a5783a8a
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/fcntl.c
@@ -0,0 +1,61 @@
+/* Copyright (C) 2000-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 <assert.h>
+#include <errno.h>
+#include <sysdep-cancel.h> /* Must come before <fcntl.h>. */
+#include <fcntl.h>
+#include <stdarg.h>
+
+#include <sys/syscall.h>
+
+#ifndef NO_CANCELLATION
+int
+__fcntl_nocancel (int fd, int cmd, ...)
+{
+ va_list ap;
+ void *arg;
+
+ va_start (ap, cmd);
+ arg = va_arg (ap, void *);
+ va_end (ap);
+
+ return INLINE_SYSCALL (fcntl64, 3, fd, cmd, arg);
+}
+#endif /* NO_CANCELLATION */
+
+
+int
+__libc_fcntl (int fd, int cmd, ...)
+{
+ va_list ap;
+ void *arg;
+
+ va_start (ap, cmd);
+ arg = va_arg (ap, void *);
+ va_end (ap);
+
+ if ((cmd != F_SETLKW) && (cmd != F_SETLKW64))
+ return INLINE_SYSCALL (fcntl64, 3, fd, cmd, arg);
+
+ return SYSCALL_CANCEL (fcntl64, fd, cmd, arg);
+}
+libc_hidden_def (__libc_fcntl)
+
+weak_alias (__libc_fcntl, __fcntl)
+libc_hidden_weak (__fcntl)
+weak_alias (__libc_fcntl, fcntl)
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/fxstat.c b/REORG.TODO/sysdeps/unix/sysv/linux/i386/fxstat.c
new file mode 100644
index 0000000000..c4cdbf54c0
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/fxstat.c
@@ -0,0 +1,61 @@
+/* fxstat using old-style Unix fstat system call.
+ Copyright (C) 1991-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/>. */
+
+/* Ho hum, if xstat == xstat64 we must get rid of the prototype or gcc
+ will complain since they don't strictly match. */
+#define __fxstat64 __fxstat64_disable
+
+#include <errno.h>
+#include <stddef.h>
+#include <sys/stat.h>
+#include <kernel_stat.h>
+
+#include <sysdep.h>
+#include <sys/syscall.h>
+
+#include <xstatconv.h>
+
+/* Get information about the file FD in BUF. */
+int
+__fxstat (int vers, int fd, struct stat *buf)
+{
+ int result;
+
+ if (vers == _STAT_VER_KERNEL)
+ return INLINE_SYSCALL (fstat, 2, fd, buf);
+
+ {
+ struct stat64 buf64;
+
+ INTERNAL_SYSCALL_DECL (err);
+ result = INTERNAL_SYSCALL (fstat64, err, 2, fd, &buf64);
+ if (__glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (result, err)))
+ return INLINE_SYSCALL_ERROR_RETURN_VALUE (INTERNAL_SYSCALL_ERRNO (result,
+ err));
+ else
+ return __xstat32_conv (vers, &buf64, buf);
+ }
+}
+
+hidden_def (__fxstat)
+weak_alias (__fxstat, _fxstat);
+#if XSTAT_IS_XSTAT64
+#undef __fxstat64
+strong_alias (__fxstat, __fxstat64);
+hidden_ver (__fxstat, __fxstat64)
+#endif
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/fxstatat.c b/REORG.TODO/sysdeps/unix/sysv/linux/i386/fxstatat.c
new file mode 100644
index 0000000000..7980c9bbe0
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/fxstatat.c
@@ -0,0 +1,56 @@
+/* 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/>. */
+
+/* Ho hum, if fxstatat == fxstatat64 we must get rid of the prototype or gcc
+ will complain since they don't strictly match. */
+#define __fxstatat64 __fxstatat64_disable
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <kernel_stat.h>
+
+#include <sysdep.h>
+#include <sys/syscall.h>
+
+#include <xstatconv.h>
+
+
+/* Get information about the file NAME relative to FD in ST. */
+int
+__fxstatat (int vers, int fd, const char *file, struct stat *st, int flag)
+{
+ int result;
+ INTERNAL_SYSCALL_DECL (err);
+ struct stat64 st64;
+
+ result = INTERNAL_SYSCALL (fstatat64, err, 4, fd, file, &st64, flag);
+ if (__glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (result, err)))
+ return INLINE_SYSCALL_ERROR_RETURN_VALUE (INTERNAL_SYSCALL_ERRNO (result,
+ err));
+ else
+ return __xstat32_conv (vers, &st64, st);
+}
+libc_hidden_def (__fxstatat)
+#if XSTAT_IS_XSTAT64
+# undef __fxstatat64
+strong_alias (__fxstatat, __fxstatat64);
+libc_hidden_ver (__fxstatat, __fxstatat64)
+#endif
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/get_clockfreq.c b/REORG.TODO/sysdeps/unix/sysv/linux/i386/get_clockfreq.c
new file mode 100644
index 0000000000..88e14b5f04
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/get_clockfreq.c
@@ -0,0 +1,88 @@
+/* Get frequency of the system processor. i386/Linux version.
+ Copyright (C) 2000-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 <ctype.h>
+#include <fcntl.h>
+#include <string.h>
+#include <unistd.h>
+
+hp_timing_t
+__get_clockfreq (void)
+{
+ /* We read the information from the /proc filesystem. It contains at
+ least one line like
+ cpu MHz : 497.840237
+ or also
+ cpu MHz : 497.841
+ We search for this line and convert the number in an integer. */
+ static hp_timing_t result;
+ int fd;
+
+ /* If this function was called before, we know the result. */
+ if (result != 0)
+ return result;
+
+ fd = __open ("/proc/cpuinfo", O_RDONLY);
+ if (__glibc_likely (fd != -1))
+ {
+ /* XXX AFAIK the /proc filesystem can generate "files" only up
+ to a size of 4096 bytes. */
+ char buf[4096];
+ ssize_t n;
+
+ n = __read (fd, buf, sizeof buf);
+ if (__builtin_expect (n, 1) > 0)
+ {
+ char *mhz = memmem (buf, n, "cpu MHz", 7);
+
+ if (__glibc_likely (mhz != NULL))
+ {
+ char *endp = buf + n;
+ int seen_decpoint = 0;
+ int ndigits = 0;
+
+ /* Search for the beginning of the string. */
+ while (mhz < endp && (*mhz < '0' || *mhz > '9') && *mhz != '\n')
+ ++mhz;
+
+ while (mhz < endp && *mhz != '\n')
+ {
+ if (*mhz >= '0' && *mhz <= '9')
+ {
+ result *= 10;
+ result += *mhz - '0';
+ if (seen_decpoint)
+ ++ndigits;
+ }
+ else if (*mhz == '.')
+ seen_decpoint = 1;
+
+ ++mhz;
+ }
+
+ /* Compensate for missing digits at the end. */
+ while (ndigits++ < 6)
+ result *= 10;
+ }
+ }
+
+ __close (fd);
+ }
+
+ return result;
+}
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/getcontext.S b/REORG.TODO/sysdeps/unix/sysv/linux/i386/getcontext.S
new file mode 100644
index 0000000000..591c3885a5
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/getcontext.S
@@ -0,0 +1,83 @@
+/* Save current context.
+ Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+
+#include "ucontext_i.h"
+
+
+ENTRY(__getcontext)
+ /* Load address of the context data structure. */
+ movl 4(%esp), %eax
+
+ /* Return value of getcontext. EAX is the only register whose
+ value is not preserved. */
+ movl $0, oEAX(%eax)
+
+ /* Save the 32-bit register values and the return address. */
+ movl %ecx, oECX(%eax)
+ movl %edx, oEDX(%eax)
+ movl %edi, oEDI(%eax)
+ movl %esi, oESI(%eax)
+ movl %ebp, oEBP(%eax)
+ movl (%esp), %ecx
+ movl %ecx, oEIP(%eax)
+ leal 4(%esp), %ecx /* Exclude the return address. */
+ movl %ecx, oESP(%eax)
+ movl %ebx, oEBX(%eax)
+
+ /* Save the FS segment register. We don't touch the GS register
+ since it is used for threads. */
+ xorl %edx, %edx
+ movw %fs, %dx
+ movl %edx, oFS(%eax)
+
+ /* We have separate floating-point register content memory on the
+ stack. We use the __fpregs_mem block in the context. Set the
+ links up correctly. */
+ leal oFPREGSMEM(%eax), %ecx
+ movl %ecx, oFPREGS(%eax)
+ /* Save the floating-point context. */
+ fnstenv (%ecx)
+ /* And load it right back since the processor changes the mask.
+ Intel thought this opcode to be used in interrupt handlers which
+ would block all exceptions. */
+ fldenv (%ecx)
+
+ /* Save the current signal mask. */
+ pushl %ebx
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (ebx, 0)
+ leal oSIGMASK(%eax), %edx
+ xorl %ecx, %ecx
+ movl $SIG_BLOCK, %ebx
+ movl $__NR_sigprocmask, %eax
+ ENTER_KERNEL
+ popl %ebx
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (ebx)
+ cmpl $-4095, %eax /* Check %eax for error. */
+ jae SYSCALL_ERROR_LABEL /* Jump to error handler if error. */
+
+ /* All done, return 0 for success. */
+ xorl %eax, %eax
+ ret
+PSEUDO_END(__getcontext)
+
+weak_alias (__getcontext, getcontext)
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/getdents64.c b/REORG.TODO/sysdeps/unix/sysv/linux/i386/getdents64.c
new file mode 100644
index 0000000000..e8b257f059
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/getdents64.c
@@ -0,0 +1,39 @@
+/* Copyright (C) 2000-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/>. */
+
+#define __GETDENTS __getdents64
+#define DIRENT_TYPE struct dirent64
+
+#include <sysdeps/unix/sysv/linux/getdents.c>
+
+#include <shlib-compat.h>
+
+#undef __READDIR
+#undef __GETDENTS
+#undef DIRENT_TYPE
+
+#if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2)
+
+#include <sysdeps/unix/sysv/linux/i386/olddirent.h>
+
+#define __GETDENTS __old_getdents64
+#define DIRENT_TYPE struct __old_dirent64
+#define kernel_dirent old_kernel_dirent
+#define kernel_dirent64 old_kernel_dirent64
+
+#include <sysdeps/unix/sysv/linux/getdents.c>
+#endif
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/getmsg.c b/REORG.TODO/sysdeps/unix/sysv/linux/i386/getmsg.c
new file mode 100644
index 0000000000..5bf1e255c5
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/getmsg.c
@@ -0,0 +1,33 @@
+/* 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/>. */
+
+#include <errno.h>
+#include <stddef.h>
+#include <stropts.h>
+
+#include <sysdep.h>
+#include <sys/syscall.h>
+
+#ifdef __NR_getpmsg
+int
+getmsg (int fildes, struct strbuf *ctlptr, struct strbuf *dataptr, int *flagsp)
+{
+ return INLINE_SYSCALL (getpmsg, 5, fildes, ctlptr, dataptr, NULL, flagsp);
+}
+#else
+# include <streams/getmsg.c>
+#endif
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/gettimeofday.c b/REORG.TODO/sysdeps/unix/sysv/linux/i386/gettimeofday.c
new file mode 100644
index 0000000000..b6116e91ba
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/gettimeofday.c
@@ -0,0 +1,35 @@
+/* gettimeofday - get the time. Linux/i386 version.
+ 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
+# define __gettimeofday __redirect___gettimeofday
+#endif
+
+#include <sys/time.h>
+
+#ifdef SHARED
+# undef __gettimeofday
+# define __gettimeofday_type __redirect___gettimeofday
+
+# undef libc_hidden_def
+# define libc_hidden_def(name) \
+ __hidden_ver1 (__gettimeofday_syscall, __GI___gettimeofday, \
+ __gettimeofday_syscall);
+#endif
+
+#include <sysdeps/unix/sysv/linux/x86/gettimeofday.c>
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/glob64.c b/REORG.TODO/sysdeps/unix/sysv/linux/i386/glob64.c
new file mode 100644
index 0000000000..f68195137e
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/glob64.c
@@ -0,0 +1,76 @@
+/* Two glob variants with 64-bit support, for dirent64 and __olddirent64.
+ 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/>. */
+
+#include <dirent.h>
+#include <glob.h>
+#include <sys/stat.h>
+
+#define dirent dirent64
+#define __readdir(dirp) __readdir64 (dirp)
+
+#define glob_t glob64_t
+#define glob(pattern, flags, errfunc, pglob) \
+ __glob64 (pattern, flags, errfunc, pglob)
+#define globfree(pglob) globfree64 (pglob)
+
+#undef stat
+#define stat stat64
+#undef __stat
+#define __stat(file, buf) __xstat64 (_STAT_VER, file, buf)
+
+#define NO_GLOB_PATTERN_P 1
+
+#define COMPILE_GLOB64 1
+
+#include <posix/glob.c>
+
+#include "shlib-compat.h"
+
+libc_hidden_def (globfree64)
+
+versioned_symbol (libc, __glob64, glob64, GLIBC_2_2);
+libc_hidden_ver (__glob64, glob64)
+
+#if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2)
+
+#include <sysdeps/unix/sysv/linux/i386/olddirent.h>
+
+int __old_glob64 (const char *__pattern, int __flags,
+ int (*__errfunc) (const char *, int),
+ glob64_t *__pglob);
+
+#undef dirent
+#define dirent __old_dirent64
+#undef GL_READDIR
+# define GL_READDIR(pglob, stream) \
+ ((struct __old_dirent64 *) (pglob)->gl_readdir (stream))
+#undef __readdir
+#define __readdir(dirp) __old_readdir64 (dirp)
+#undef glob
+#define glob(pattern, flags, errfunc, pglob) \
+ __old_glob64 (pattern, flags, errfunc, pglob)
+#define convert_dirent __old_convert_dirent
+#define glob_in_dir __old_glob_in_dir
+#define GLOB_ATTRIBUTE attribute_compat_text_section
+
+#define GLOB_ONLY_P 1
+
+#include <posix/glob.c>
+
+compat_symbol (libc, __old_glob64, glob64, GLIBC_2_1);
+#endif
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/i686/Implies b/REORG.TODO/sysdeps/unix/sysv/linux/i386/i686/Implies
new file mode 100644
index 0000000000..8948a800bb
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/i686/Implies
@@ -0,0 +1 @@
+i386/i686/nptl
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h b/REORG.TODO/sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h
new file mode 100644
index 0000000000..ad90853864
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h
@@ -0,0 +1,29 @@
+/* System-specific settings for dynamic linker code. IA-32 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/>. */
+
+#ifndef _LINUX_I686_DL_SYSDEP_H
+#define _LINUX_I686_DL_SYSDEP_H 1
+
+/* The i386 file does most of the work. */
+#include_next <dl-sysdep.h>
+
+/* Actually use the vDSO entry point for syscalls.
+ i386/dl-sysdep.h arranges to support it, but not use it. */
+#define USE_DL_SYSINFO 1
+
+#endif /* dl-sysdep.h */
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/i786/Implies b/REORG.TODO/sysdeps/unix/sysv/linux/i386/i786/Implies
new file mode 100644
index 0000000000..7cb7d9a678
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/i786/Implies
@@ -0,0 +1,2 @@
+# The PPro and PII cores are mostly the same.
+unix/sysv/linux/i386/i686
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/init-first.c b/REORG.TODO/sysdeps/unix/sysv/linux/i386/init-first.c
new file mode 100644
index 0000000000..bbbecdd41f
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/init-first.c
@@ -0,0 +1,50 @@
+/* Initialization code run first thing by the ELF startup code. Linux/i386.
+ 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 <time.h>
+# include <sysdep.h>
+# include <dl-vdso.h>
+# include <sysdep-vdso.h>
+
+long int (*VDSO_SYMBOL (clock_gettime)) (clockid_t, struct timespec *)
+ attribute_hidden;
+
+static long int
+clock_gettime_syscall (clockid_t id, struct timespec *tp)
+{
+ INTERNAL_SYSCALL_DECL (err);
+ return INTERNAL_SYSCALL (clock_gettime, err, 2, id, tp);
+}
+
+static inline void
+__vdso_platform_setup (void)
+{
+ PREPARE_VERSION_KNOWN (linux26, LINUX_2_6);
+
+ void *p = _dl_vdso_vsym ("__vdso_clock_gettime", &linux26);
+ if (p == NULL)
+ p = clock_gettime_syscall;
+ PTR_MANGLE (p);
+ VDSO_SYMBOL (clock_gettime) = p;
+}
+
+# define VDSO_SETUP __vdso_platform_setup
+#endif
+
+#include <csu/init-first.c>
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/kernel-features.h b/REORG.TODO/sysdeps/unix/sysv/linux/i386/kernel-features.h
new file mode 100644
index 0000000000..c6eb20f360
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/kernel-features.h
@@ -0,0 +1,50 @@
+/* Set flags signalling availability of kernel features based on given
+ kernel version number. i386 version.
+ 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/>. */
+
+/* i386 uses socketcall. */
+#define __ASSUME_SOCKETCALL 1
+
+/* Direct socketcalls available with kernel 4.3. */
+#if __LINUX_KERNEL_VERSION >= 0x040300
+# define __ASSUME_SOCKET_SYSCALL 1
+# define __ASSUME_SOCKETPAIR_SYSCALL 1
+# define __ASSUME_BIND_SYSCALL 1
+# define __ASSUME_LISTEN_SYSCALL 1
+# define __ASSUME_GETSOCKOPT_SYSCALL 1
+# define __ASSUME_SETSOCKOPT_SYSCALL 1
+# define __ASSUME_GETSOCKNAME_SYSCALL 1
+# define __ASSUME_GETPEERNAME_SYSCALL 1
+# define __ASSUME_SHUTDOWN_SYSCALL 1
+#endif
+
+#include_next <kernel-features.h>
+
+#undef __ASSUME_ACCEPT_SYSCALL
+
+#if __LINUX_KERNEL_VERSION < 0x040300
+# undef __ASSUME_ACCEPT4_SYSCALL
+# undef __ASSUME_SENDMSG_SYSCALL
+# undef __ASSUME_RECVMSG_SYSCALL
+# undef __ASSUME_CONNECT_SYSCALL
+# undef __ASSUME_RECVFROM_SYSCALL
+# undef __ASSUME_SENDTO_SYSCALL
+#endif
+
+/* i686 only supports ipc syscall. */
+#undef __ASSUME_DIRECT_SYSVIPC_SYSCALLS
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/ld.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/i386/ld.abilist
new file mode 100644
index 0000000000..ddf9e78ec2
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/ld.abilist
@@ -0,0 +1,13 @@
+GLIBC_2.0 GLIBC_2.0 A
+GLIBC_2.0 _r_debug D 0x14
+GLIBC_2.0 calloc F
+GLIBC_2.0 free F
+GLIBC_2.0 malloc F
+GLIBC_2.0 realloc F
+GLIBC_2.1 GLIBC_2.1 A
+GLIBC_2.1 __libc_stack_end D 0x4
+GLIBC_2.1 _dl_mcount F
+GLIBC_2.3 GLIBC_2.3 A
+GLIBC_2.3 ___tls_get_addr F
+GLIBC_2.3 __tls_get_addr F
+GLIBC_2.4 GLIBC_2.4 A
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/ldconfig.h b/REORG.TODO/sysdeps/unix/sysv/linux/i386/ldconfig.h
new file mode 100644
index 0000000000..7112cb275d
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/ldconfig.h
@@ -0,0 +1,24 @@
+/* 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.1", FLAG_ELF_LIBC5 },
+#define SYSDEP_KNOWN_LIBRARY_NAMES \
+ { "libc.so.5", FLAG_ELF_LIBC5 }, \
+ { "libm.so.5", FLAG_ELF_LIBC5 },
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/libBrokenLocale.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/i386/libBrokenLocale.abilist
new file mode 100644
index 0000000000..4a56bb68a3
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/libBrokenLocale.abilist
@@ -0,0 +1,2 @@
+GLIBC_2.0 GLIBC_2.0 A
+GLIBC_2.0 __ctype_get_mb_cur_max F
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/libanl.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/i386/libanl.abilist
new file mode 100644
index 0000000000..edabfb436e
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/libanl.abilist
@@ -0,0 +1,5 @@
+GLIBC_2.2.3 GLIBC_2.2.3 A
+GLIBC_2.2.3 gai_cancel F
+GLIBC_2.2.3 gai_error F
+GLIBC_2.2.3 gai_suspend F
+GLIBC_2.2.3 getaddrinfo_a F
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/libc-do-syscall.S b/REORG.TODO/sysdeps/unix/sysv/linux/i386/libc-do-syscall.S
new file mode 100644
index 0000000000..f706c6da57
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/libc-do-syscall.S
@@ -0,0 +1,53 @@
+/* Out-of-line syscall stub for six-argument syscalls from C.
+ 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/>. */
+
+#include <sysdep.h>
+
+#ifndef OPTIMIZE_FOR_GCC_5
+
+/* %eax, %ecx, %edx and %esi contain the values expected by the kernel.
+ %edi points to a structure with the values of %ebx, %edi and %ebp. */
+
+ .hidden __libc_do_syscall
+
+ENTRY (__libc_do_syscall)
+ pushl %ebx
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (ebx, 0)
+ pushl %edi
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (edi, 0)
+ pushl %ebp
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (ebp, 0)
+ movl 0(%edi), %ebx
+ movl 8(%edi), %ebp
+ movl 4(%edi), %edi
+ ENTER_KERNEL
+ popl %ebp
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (ebp)
+ popl %edi
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (edi)
+ popl %ebx
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (ebx)
+ ret
+END (__libc_do_syscall)
+#endif
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/libc-lowlevellock.S b/REORG.TODO/sysdeps/unix/sysv/linux/i386/libc-lowlevellock.S
new file mode 100644
index 0000000000..1e5e150aa7
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/libc-lowlevellock.S
@@ -0,0 +1,19 @@
+/* Copyright (C) 2002-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have 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 "lowlevellock.S"
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/libc.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/i386/libc.abilist
new file mode 100644
index 0000000000..2ff1998ac9
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -0,0 +1,2333 @@
+GCC_3.0 GCC_3.0 A
+GCC_3.0 _Unwind_Find_FDE F
+GCC_3.0 __deregister_frame_info_bases F
+GCC_3.0 __register_frame_info_bases F
+GCC_3.0 __register_frame_info_table_bases F
+GLIBC_2.0 GLIBC_2.0 A
+GLIBC_2.0 _IO_adjust_column F
+GLIBC_2.0 _IO_default_doallocate F
+GLIBC_2.0 _IO_default_finish F
+GLIBC_2.0 _IO_default_pbackfail F
+GLIBC_2.0 _IO_default_uflow F
+GLIBC_2.0 _IO_default_xsgetn F
+GLIBC_2.0 _IO_default_xsputn F
+GLIBC_2.0 _IO_do_write F
+GLIBC_2.0 _IO_doallocbuf F
+GLIBC_2.0 _IO_fclose F
+GLIBC_2.0 _IO_fdopen F
+GLIBC_2.0 _IO_feof F
+GLIBC_2.0 _IO_ferror F
+GLIBC_2.0 _IO_fflush F
+GLIBC_2.0 _IO_fgetpos F
+GLIBC_2.0 _IO_fgets F
+GLIBC_2.0 _IO_file_attach F
+GLIBC_2.0 _IO_file_close F
+GLIBC_2.0 _IO_file_close_it F
+GLIBC_2.0 _IO_file_doallocate F
+GLIBC_2.0 _IO_file_fopen F
+GLIBC_2.0 _IO_file_init F
+GLIBC_2.0 _IO_file_jumps D 0x54
+GLIBC_2.0 _IO_file_open F
+GLIBC_2.0 _IO_file_overflow F
+GLIBC_2.0 _IO_file_read F
+GLIBC_2.0 _IO_file_seek F
+GLIBC_2.0 _IO_file_seekoff F
+GLIBC_2.0 _IO_file_setbuf F
+GLIBC_2.0 _IO_file_stat F
+GLIBC_2.0 _IO_file_sync F
+GLIBC_2.0 _IO_file_underflow F
+GLIBC_2.0 _IO_file_write F
+GLIBC_2.0 _IO_file_xsputn F
+GLIBC_2.0 _IO_flockfile F
+GLIBC_2.0 _IO_flush_all F
+GLIBC_2.0 _IO_flush_all_linebuffered F
+GLIBC_2.0 _IO_fopen F
+GLIBC_2.0 _IO_fprintf F
+GLIBC_2.0 _IO_fputs F
+GLIBC_2.0 _IO_fread F
+GLIBC_2.0 _IO_free_backup_area F
+GLIBC_2.0 _IO_fsetpos F
+GLIBC_2.0 _IO_ftell F
+GLIBC_2.0 _IO_ftrylockfile F
+GLIBC_2.0 _IO_funlockfile F
+GLIBC_2.0 _IO_fwrite F
+GLIBC_2.0 _IO_getc F
+GLIBC_2.0 _IO_getline F
+GLIBC_2.0 _IO_gets F
+GLIBC_2.0 _IO_init F
+GLIBC_2.0 _IO_init_marker F
+GLIBC_2.0 _IO_link_in F
+GLIBC_2.0 _IO_list_all D 0x4
+GLIBC_2.0 _IO_marker_delta F
+GLIBC_2.0 _IO_marker_difference F
+GLIBC_2.0 _IO_padn F
+GLIBC_2.0 _IO_peekc_locked F
+GLIBC_2.0 _IO_popen F
+GLIBC_2.0 _IO_printf F
+GLIBC_2.0 _IO_proc_close F
+GLIBC_2.0 _IO_proc_open F
+GLIBC_2.0 _IO_putc F
+GLIBC_2.0 _IO_puts F
+GLIBC_2.0 _IO_remove_marker F
+GLIBC_2.0 _IO_seekmark F
+GLIBC_2.0 _IO_seekoff F
+GLIBC_2.0 _IO_seekpos F
+GLIBC_2.0 _IO_setb F
+GLIBC_2.0 _IO_setbuffer F
+GLIBC_2.0 _IO_setvbuf F
+GLIBC_2.0 _IO_sgetn F
+GLIBC_2.0 _IO_sprintf F
+GLIBC_2.0 _IO_sputbackc F
+GLIBC_2.0 _IO_sscanf F
+GLIBC_2.0 _IO_stderr_ D 0x50
+GLIBC_2.0 _IO_stdin_ D 0x50
+GLIBC_2.0 _IO_stdout_ D 0x50
+GLIBC_2.0 _IO_str_init_readonly F
+GLIBC_2.0 _IO_str_init_static F
+GLIBC_2.0 _IO_str_overflow F
+GLIBC_2.0 _IO_str_pbackfail F
+GLIBC_2.0 _IO_str_seekoff F
+GLIBC_2.0 _IO_str_underflow F
+GLIBC_2.0 _IO_sungetc F
+GLIBC_2.0 _IO_switch_to_get_mode F
+GLIBC_2.0 _IO_un_link F
+GLIBC_2.0 _IO_ungetc F
+GLIBC_2.0 _IO_unsave_markers F
+GLIBC_2.0 _IO_vfprintf F
+GLIBC_2.0 _IO_vfscanf F
+GLIBC_2.0 _IO_vsprintf F
+GLIBC_2.0 ___brk_addr D 0x4
+GLIBC_2.0 __adjtimex F
+GLIBC_2.0 __after_morecore_hook D 0x4
+GLIBC_2.0 __argz_count F
+GLIBC_2.0 __argz_next F
+GLIBC_2.0 __argz_stringify F
+GLIBC_2.0 __assert_fail F
+GLIBC_2.0 __assert_perror_fail F
+GLIBC_2.0 __bsd_getpgrp F
+GLIBC_2.0 __bzero F
+GLIBC_2.0 __check_rhosts_file D 0x4
+GLIBC_2.0 __clone F
+GLIBC_2.0 __close F
+GLIBC_2.0 __cmsg_nxthdr F
+GLIBC_2.0 __connect F
+GLIBC_2.0 __ctype32_b D 0x4
+GLIBC_2.0 __ctype_b D 0x4
+GLIBC_2.0 __ctype_get_mb_cur_max F
+GLIBC_2.0 __ctype_tolower D 0x4
+GLIBC_2.0 __ctype_toupper D 0x4
+GLIBC_2.0 __curbrk D 0x4
+GLIBC_2.0 __daylight D 0x4
+GLIBC_2.0 __dcgettext F
+GLIBC_2.0 __default_morecore F
+GLIBC_2.0 __deregister_frame F
+GLIBC_2.0 __deregister_frame_info F
+GLIBC_2.0 __dgettext F
+GLIBC_2.0 __divdi3 F
+GLIBC_2.0 __dup2 F
+GLIBC_2.0 __environ D 0x4
+GLIBC_2.0 __errno_location F
+GLIBC_2.0 __fcntl F
+GLIBC_2.0 __ffs F
+GLIBC_2.0 __finite F
+GLIBC_2.0 __finitef F
+GLIBC_2.0 __finitel F
+GLIBC_2.0 __fork F
+GLIBC_2.0 __fpu_control D 0x2
+GLIBC_2.0 __frame_state_for F
+GLIBC_2.0 __free_hook D 0x4
+GLIBC_2.0 __fxstat F
+GLIBC_2.0 __getdelim F
+GLIBC_2.0 __getpagesize F
+GLIBC_2.0 __getpgid F
+GLIBC_2.0 __getpid F
+GLIBC_2.0 __gettimeofday F
+GLIBC_2.0 __gmtime_r F
+GLIBC_2.0 __h_errno_location F
+GLIBC_2.0 __isinf F
+GLIBC_2.0 __isinff F
+GLIBC_2.0 __isinfl F
+GLIBC_2.0 __isnan F
+GLIBC_2.0 __isnanf F
+GLIBC_2.0 __isnanl F
+GLIBC_2.0 __iswctype F
+GLIBC_2.0 __ivaliduser F
+GLIBC_2.0 __libc_calloc F
+GLIBC_2.0 __libc_free F
+GLIBC_2.0 __libc_init_first F
+GLIBC_2.0 __libc_mallinfo F
+GLIBC_2.0 __libc_malloc F
+GLIBC_2.0 __libc_mallopt F
+GLIBC_2.0 __libc_memalign F
+GLIBC_2.0 __libc_pvalloc F
+GLIBC_2.0 __libc_realloc F
+GLIBC_2.0 __libc_start_main F
+GLIBC_2.0 __libc_valloc F
+GLIBC_2.0 __lseek F
+GLIBC_2.0 __lxstat F
+GLIBC_2.0 __malloc_hook D 0x4
+GLIBC_2.0 __malloc_initialize_hook D 0x4
+GLIBC_2.0 __mbrlen F
+GLIBC_2.0 __mbrtowc F
+GLIBC_2.0 __memalign_hook D 0x4
+GLIBC_2.0 __mempcpy F
+GLIBC_2.0 __moddi3 F
+GLIBC_2.0 __monstartup F
+GLIBC_2.0 __morecore D 0x4
+GLIBC_2.0 __nss_configure_lookup F
+GLIBC_2.0 __nss_database_lookup F
+GLIBC_2.0 __nss_group_lookup F
+GLIBC_2.0 __nss_hosts_lookup F
+GLIBC_2.0 __nss_next F
+GLIBC_2.0 __nss_passwd_lookup F
+GLIBC_2.0 __open F
+GLIBC_2.0 __overflow F
+GLIBC_2.0 __pipe F
+GLIBC_2.0 __printf_fp F
+GLIBC_2.0 __profile_frequency F
+GLIBC_2.0 __progname D 0x4
+GLIBC_2.0 __progname_full D 0x4
+GLIBC_2.0 __rcmd_errstr D 0x4
+GLIBC_2.0 __read F
+GLIBC_2.0 __realloc_hook D 0x4
+GLIBC_2.0 __register_frame F
+GLIBC_2.0 __register_frame_info F
+GLIBC_2.0 __register_frame_info_table F
+GLIBC_2.0 __register_frame_table F
+GLIBC_2.0 __res_randomid F
+GLIBC_2.0 __sbrk F
+GLIBC_2.0 __sched_get_priority_max F
+GLIBC_2.0 __sched_get_priority_min F
+GLIBC_2.0 __sched_getparam F
+GLIBC_2.0 __sched_getscheduler F
+GLIBC_2.0 __sched_setscheduler F
+GLIBC_2.0 __sched_yield F
+GLIBC_2.0 __secure_getenv F
+GLIBC_2.0 __select F
+GLIBC_2.0 __send F
+GLIBC_2.0 __setpgid F
+GLIBC_2.0 __sigaction F
+GLIBC_2.0 __sigaddset F
+GLIBC_2.0 __sigdelset F
+GLIBC_2.0 __sigismember F
+GLIBC_2.0 __sigpause F
+GLIBC_2.0 __sigsetjmp F
+GLIBC_2.0 __stpcpy F
+GLIBC_2.0 __stpncpy F
+GLIBC_2.0 __strcasecmp F
+GLIBC_2.0 __strdup F
+GLIBC_2.0 __strerror_r F
+GLIBC_2.0 __strtod_internal F
+GLIBC_2.0 __strtof_internal F
+GLIBC_2.0 __strtok_r F
+GLIBC_2.0 __strtol_internal F
+GLIBC_2.0 __strtold_internal F
+GLIBC_2.0 __strtoll_internal F
+GLIBC_2.0 __strtoq_internal F
+GLIBC_2.0 __strtoul_internal F
+GLIBC_2.0 __strtoull_internal F
+GLIBC_2.0 __strtouq_internal F
+GLIBC_2.0 __sysv_signal F
+GLIBC_2.0 __timezone D 0x4
+GLIBC_2.0 __tzname D 0x8
+GLIBC_2.0 __udivdi3 F
+GLIBC_2.0 __uflow F
+GLIBC_2.0 __umoddi3 F
+GLIBC_2.0 __underflow F
+GLIBC_2.0 __vfscanf F
+GLIBC_2.0 __vsnprintf F
+GLIBC_2.0 __vsscanf F
+GLIBC_2.0 __wait F
+GLIBC_2.0 __waitpid F
+GLIBC_2.0 __wcstod_internal F
+GLIBC_2.0 __wcstof_internal F
+GLIBC_2.0 __wcstol_internal F
+GLIBC_2.0 __wcstold_internal F
+GLIBC_2.0 __wcstoll_internal F
+GLIBC_2.0 __wcstoul_internal F
+GLIBC_2.0 __wcstoull_internal F
+GLIBC_2.0 __write F
+GLIBC_2.0 __xmknod F
+GLIBC_2.0 __xpg_basename F
+GLIBC_2.0 __xstat F
+GLIBC_2.0 _environ D 0x4
+GLIBC_2.0 _exit F
+GLIBC_2.0 _libc_intl_domainname D 0x5
+GLIBC_2.0 _longjmp F
+GLIBC_2.0 _mcleanup F
+GLIBC_2.0 _mcount F
+GLIBC_2.0 _nl_default_dirname D 0x12
+GLIBC_2.0 _nl_domain_bindings D 0x4
+GLIBC_2.0 _nl_msg_cat_cntr D 0x4
+GLIBC_2.0 _null_auth D 0xc
+GLIBC_2.0 _obstack D 0x4
+GLIBC_2.0 _obstack_allocated_p F
+GLIBC_2.0 _obstack_begin F
+GLIBC_2.0 _obstack_begin_1 F
+GLIBC_2.0 _obstack_free F
+GLIBC_2.0 _obstack_memory_used F
+GLIBC_2.0 _obstack_newchunk F
+GLIBC_2.0 _res D 0x200
+GLIBC_2.0 _rpc_dtablesize F
+GLIBC_2.0 _seterr_reply F
+GLIBC_2.0 _setjmp F
+GLIBC_2.0 _sys_errlist D 0x1ec
+GLIBC_2.0 _sys_nerr D 0x4
+GLIBC_2.0 _sys_siglist D 0x80
+GLIBC_2.0 _tolower F
+GLIBC_2.0 _toupper F
+GLIBC_2.0 a64l F
+GLIBC_2.0 abort F
+GLIBC_2.0 abs F
+GLIBC_2.0 accept F
+GLIBC_2.0 access F
+GLIBC_2.0 acct F
+GLIBC_2.0 addmntent F
+GLIBC_2.0 adjtime F
+GLIBC_2.0 adjtimex F
+GLIBC_2.0 advance F
+GLIBC_2.0 alarm F
+GLIBC_2.0 alphasort F
+GLIBC_2.0 argz_add F
+GLIBC_2.0 argz_add_sep F
+GLIBC_2.0 argz_append F
+GLIBC_2.0 argz_count F
+GLIBC_2.0 argz_create F
+GLIBC_2.0 argz_create_sep F
+GLIBC_2.0 argz_delete F
+GLIBC_2.0 argz_extract F
+GLIBC_2.0 argz_insert F
+GLIBC_2.0 argz_next F
+GLIBC_2.0 argz_replace F
+GLIBC_2.0 argz_stringify F
+GLIBC_2.0 asctime F
+GLIBC_2.0 asctime_r F
+GLIBC_2.0 asprintf F
+GLIBC_2.0 atexit F
+GLIBC_2.0 atof F
+GLIBC_2.0 atoi F
+GLIBC_2.0 atol F
+GLIBC_2.0 atoll F
+GLIBC_2.0 authnone_create F
+GLIBC_2.0 authunix_create F
+GLIBC_2.0 authunix_create_default F
+GLIBC_2.0 basename F
+GLIBC_2.0 bcmp F
+GLIBC_2.0 bcopy F
+GLIBC_2.0 bdflush F
+GLIBC_2.0 bind F
+GLIBC_2.0 bindresvport F
+GLIBC_2.0 bindtextdomain F
+GLIBC_2.0 brk F
+GLIBC_2.0 bsd_signal F
+GLIBC_2.0 bsearch F
+GLIBC_2.0 btowc F
+GLIBC_2.0 bzero F
+GLIBC_2.0 calloc F
+GLIBC_2.0 callrpc F
+GLIBC_2.0 canonicalize_file_name F
+GLIBC_2.0 catclose F
+GLIBC_2.0 catgets F
+GLIBC_2.0 catopen F
+GLIBC_2.0 cfgetispeed F
+GLIBC_2.0 cfgetospeed F
+GLIBC_2.0 cfmakeraw F
+GLIBC_2.0 cfree F
+GLIBC_2.0 cfsetispeed F
+GLIBC_2.0 cfsetospeed F
+GLIBC_2.0 cfsetspeed F
+GLIBC_2.0 chdir F
+GLIBC_2.0 chflags F
+GLIBC_2.0 chmod F
+GLIBC_2.0 chown F
+GLIBC_2.0 chroot F
+GLIBC_2.0 clearenv F
+GLIBC_2.0 clearerr F
+GLIBC_2.0 clearerr_unlocked F
+GLIBC_2.0 clnt_broadcast F
+GLIBC_2.0 clnt_create F
+GLIBC_2.0 clnt_pcreateerror F
+GLIBC_2.0 clnt_perrno F
+GLIBC_2.0 clnt_perror F
+GLIBC_2.0 clnt_spcreateerror F
+GLIBC_2.0 clnt_sperrno F
+GLIBC_2.0 clnt_sperror F
+GLIBC_2.0 clntraw_create F
+GLIBC_2.0 clnttcp_create F
+GLIBC_2.0 clntudp_bufcreate F
+GLIBC_2.0 clntudp_create F
+GLIBC_2.0 clock F
+GLIBC_2.0 clone F
+GLIBC_2.0 close F
+GLIBC_2.0 closedir F
+GLIBC_2.0 closelog F
+GLIBC_2.0 confstr F
+GLIBC_2.0 connect F
+GLIBC_2.0 copysign F
+GLIBC_2.0 copysignf F
+GLIBC_2.0 copysignl F
+GLIBC_2.0 creat F
+GLIBC_2.0 create_module F
+GLIBC_2.0 ctermid F
+GLIBC_2.0 ctime F
+GLIBC_2.0 ctime_r F
+GLIBC_2.0 cuserid F
+GLIBC_2.0 daemon F
+GLIBC_2.0 daylight D 0x4
+GLIBC_2.0 dcgettext F
+GLIBC_2.0 delete_module F
+GLIBC_2.0 dgettext F
+GLIBC_2.0 difftime F
+GLIBC_2.0 dirfd F
+GLIBC_2.0 dirname F
+GLIBC_2.0 div F
+GLIBC_2.0 dprintf F
+GLIBC_2.0 drand48 F
+GLIBC_2.0 drand48_r F
+GLIBC_2.0 dup F
+GLIBC_2.0 dup2 F
+GLIBC_2.0 dysize F
+GLIBC_2.0 ecvt F
+GLIBC_2.0 ecvt_r F
+GLIBC_2.0 endaliasent F
+GLIBC_2.0 endfsent F
+GLIBC_2.0 endgrent F
+GLIBC_2.0 endhostent F
+GLIBC_2.0 endmntent F
+GLIBC_2.0 endnetent F
+GLIBC_2.0 endnetgrent F
+GLIBC_2.0 endprotoent F
+GLIBC_2.0 endpwent F
+GLIBC_2.0 endrpcent F
+GLIBC_2.0 endservent F
+GLIBC_2.0 endspent F
+GLIBC_2.0 endttyent F
+GLIBC_2.0 endusershell F
+GLIBC_2.0 endutent F
+GLIBC_2.0 environ D 0x4
+GLIBC_2.0 envz_add F
+GLIBC_2.0 envz_entry F
+GLIBC_2.0 envz_get F
+GLIBC_2.0 envz_merge F
+GLIBC_2.0 envz_remove F
+GLIBC_2.0 envz_strip F
+GLIBC_2.0 erand48 F
+GLIBC_2.0 erand48_r F
+GLIBC_2.0 err F
+GLIBC_2.0 error F
+GLIBC_2.0 error_at_line F
+GLIBC_2.0 error_message_count D 0x4
+GLIBC_2.0 error_one_per_line D 0x4
+GLIBC_2.0 error_print_progname D 0x4
+GLIBC_2.0 errx F
+GLIBC_2.0 ether_aton F
+GLIBC_2.0 ether_aton_r F
+GLIBC_2.0 ether_hostton F
+GLIBC_2.0 ether_line F
+GLIBC_2.0 ether_ntoa F
+GLIBC_2.0 ether_ntoa_r F
+GLIBC_2.0 ether_ntohost F
+GLIBC_2.0 euidaccess F
+GLIBC_2.0 execl F
+GLIBC_2.0 execle F
+GLIBC_2.0 execlp F
+GLIBC_2.0 execv F
+GLIBC_2.0 execve F
+GLIBC_2.0 execvp F
+GLIBC_2.0 exit F
+GLIBC_2.0 fchdir F
+GLIBC_2.0 fchflags F
+GLIBC_2.0 fchmod F
+GLIBC_2.0 fchown F
+GLIBC_2.0 fclose F
+GLIBC_2.0 fcloseall F
+GLIBC_2.0 fcntl F
+GLIBC_2.0 fcvt F
+GLIBC_2.0 fcvt_r F
+GLIBC_2.0 fdatasync F
+GLIBC_2.0 fdopen F
+GLIBC_2.0 feof F
+GLIBC_2.0 feof_unlocked F
+GLIBC_2.0 ferror F
+GLIBC_2.0 ferror_unlocked F
+GLIBC_2.0 fexecve F
+GLIBC_2.0 fflush F
+GLIBC_2.0 fflush_unlocked F
+GLIBC_2.0 ffs F
+GLIBC_2.0 fgetc F
+GLIBC_2.0 fgetgrent F
+GLIBC_2.0 fgetgrent_r F
+GLIBC_2.0 fgetpos F
+GLIBC_2.0 fgetpwent F
+GLIBC_2.0 fgetpwent_r F
+GLIBC_2.0 fgets F
+GLIBC_2.0 fgetspent F
+GLIBC_2.0 fgetspent_r F
+GLIBC_2.0 fileno F
+GLIBC_2.0 fileno_unlocked F
+GLIBC_2.0 finite F
+GLIBC_2.0 finitef F
+GLIBC_2.0 finitel F
+GLIBC_2.0 flock F
+GLIBC_2.0 flockfile F
+GLIBC_2.0 fnmatch F
+GLIBC_2.0 fopen F
+GLIBC_2.0 fopencookie F
+GLIBC_2.0 fork F
+GLIBC_2.0 fpathconf F
+GLIBC_2.0 fprintf F
+GLIBC_2.0 fputc F
+GLIBC_2.0 fputc_unlocked F
+GLIBC_2.0 fputs F
+GLIBC_2.0 fread F
+GLIBC_2.0 free F
+GLIBC_2.0 freeaddrinfo F
+GLIBC_2.0 freopen F
+GLIBC_2.0 frexp F
+GLIBC_2.0 frexpf F
+GLIBC_2.0 frexpl F
+GLIBC_2.0 fscanf F
+GLIBC_2.0 fseek F
+GLIBC_2.0 fsetpos F
+GLIBC_2.0 fstatfs F
+GLIBC_2.0 fsync F
+GLIBC_2.0 ftell F
+GLIBC_2.0 ftime F
+GLIBC_2.0 ftok F
+GLIBC_2.0 ftruncate F
+GLIBC_2.0 ftrylockfile F
+GLIBC_2.0 fts_children F
+GLIBC_2.0 fts_close F
+GLIBC_2.0 fts_open F
+GLIBC_2.0 fts_read F
+GLIBC_2.0 fts_set F
+GLIBC_2.0 ftw F
+GLIBC_2.0 funlockfile F
+GLIBC_2.0 fwrite F
+GLIBC_2.0 gcvt F
+GLIBC_2.0 get_avphys_pages F
+GLIBC_2.0 get_current_dir_name F
+GLIBC_2.0 get_kernel_syms F
+GLIBC_2.0 get_myaddress F
+GLIBC_2.0 get_nprocs F
+GLIBC_2.0 get_nprocs_conf F
+GLIBC_2.0 get_phys_pages F
+GLIBC_2.0 getaddrinfo F
+GLIBC_2.0 getaliasbyname F
+GLIBC_2.0 getaliasbyname_r F
+GLIBC_2.0 getaliasent F
+GLIBC_2.0 getaliasent_r F
+GLIBC_2.0 getc F
+GLIBC_2.0 getc_unlocked F
+GLIBC_2.0 getchar F
+GLIBC_2.0 getchar_unlocked F
+GLIBC_2.0 getcwd F
+GLIBC_2.0 getdelim F
+GLIBC_2.0 getdirentries F
+GLIBC_2.0 getdomainname F
+GLIBC_2.0 getdtablesize F
+GLIBC_2.0 getegid F
+GLIBC_2.0 getenv F
+GLIBC_2.0 geteuid F
+GLIBC_2.0 getfsent F
+GLIBC_2.0 getfsfile F
+GLIBC_2.0 getfsspec F
+GLIBC_2.0 getgid F
+GLIBC_2.0 getgrent F
+GLIBC_2.0 getgrent_r F
+GLIBC_2.0 getgrgid F
+GLIBC_2.0 getgrgid_r F
+GLIBC_2.0 getgrnam F
+GLIBC_2.0 getgrnam_r F
+GLIBC_2.0 getgroups F
+GLIBC_2.0 gethostbyaddr F
+GLIBC_2.0 gethostbyaddr_r F
+GLIBC_2.0 gethostbyname F
+GLIBC_2.0 gethostbyname2 F
+GLIBC_2.0 gethostbyname2_r F
+GLIBC_2.0 gethostbyname_r F
+GLIBC_2.0 gethostent F
+GLIBC_2.0 gethostent_r F
+GLIBC_2.0 gethostid F
+GLIBC_2.0 gethostname F
+GLIBC_2.0 getitimer F
+GLIBC_2.0 getline F
+GLIBC_2.0 getlogin F
+GLIBC_2.0 getlogin_r F
+GLIBC_2.0 getmntent F
+GLIBC_2.0 getmntent_r F
+GLIBC_2.0 getnetbyaddr F
+GLIBC_2.0 getnetbyaddr_r F
+GLIBC_2.0 getnetbyname F
+GLIBC_2.0 getnetbyname_r F
+GLIBC_2.0 getnetent F
+GLIBC_2.0 getnetent_r F
+GLIBC_2.0 getnetgrent F
+GLIBC_2.0 getnetgrent_r F
+GLIBC_2.0 getopt F
+GLIBC_2.0 getopt_long F
+GLIBC_2.0 getopt_long_only F
+GLIBC_2.0 getpagesize F
+GLIBC_2.0 getpass F
+GLIBC_2.0 getpeername F
+GLIBC_2.0 getpgid F
+GLIBC_2.0 getpgrp F
+GLIBC_2.0 getpid F
+GLIBC_2.0 getppid F
+GLIBC_2.0 getpriority F
+GLIBC_2.0 getprotobyname F
+GLIBC_2.0 getprotobyname_r F
+GLIBC_2.0 getprotobynumber F
+GLIBC_2.0 getprotobynumber_r F
+GLIBC_2.0 getprotoent F
+GLIBC_2.0 getprotoent_r F
+GLIBC_2.0 getpublickey F
+GLIBC_2.0 getpw F
+GLIBC_2.0 getpwent F
+GLIBC_2.0 getpwent_r F
+GLIBC_2.0 getpwnam F
+GLIBC_2.0 getpwnam_r F
+GLIBC_2.0 getpwuid F
+GLIBC_2.0 getpwuid_r F
+GLIBC_2.0 getresgid F
+GLIBC_2.0 getresuid F
+GLIBC_2.0 getrlimit F
+GLIBC_2.0 getrpcbyname F
+GLIBC_2.0 getrpcbyname_r F
+GLIBC_2.0 getrpcbynumber F
+GLIBC_2.0 getrpcbynumber_r F
+GLIBC_2.0 getrpcent F
+GLIBC_2.0 getrpcent_r F
+GLIBC_2.0 getrpcport F
+GLIBC_2.0 getrusage F
+GLIBC_2.0 gets F
+GLIBC_2.0 getsecretkey F
+GLIBC_2.0 getservbyname F
+GLIBC_2.0 getservbyname_r F
+GLIBC_2.0 getservbyport F
+GLIBC_2.0 getservbyport_r F
+GLIBC_2.0 getservent F
+GLIBC_2.0 getservent_r F
+GLIBC_2.0 getsid F
+GLIBC_2.0 getsockname F
+GLIBC_2.0 getsockopt F
+GLIBC_2.0 getspent F
+GLIBC_2.0 getspent_r F
+GLIBC_2.0 getspnam F
+GLIBC_2.0 getspnam_r F
+GLIBC_2.0 getsubopt F
+GLIBC_2.0 gettext F
+GLIBC_2.0 gettimeofday F
+GLIBC_2.0 getttyent F
+GLIBC_2.0 getttynam F
+GLIBC_2.0 getuid F
+GLIBC_2.0 getusershell F
+GLIBC_2.0 getutent F
+GLIBC_2.0 getutent_r F
+GLIBC_2.0 getutid F
+GLIBC_2.0 getutid_r F
+GLIBC_2.0 getutline F
+GLIBC_2.0 getutline_r F
+GLIBC_2.0 getw F
+GLIBC_2.0 getwd F
+GLIBC_2.0 glob F
+GLIBC_2.0 glob_pattern_p F
+GLIBC_2.0 globfree F
+GLIBC_2.0 gmtime F
+GLIBC_2.0 gmtime_r F
+GLIBC_2.0 group_member F
+GLIBC_2.0 gsignal F
+GLIBC_2.0 gtty F
+GLIBC_2.0 h_errlist D 0x14
+GLIBC_2.0 h_nerr D 0x4
+GLIBC_2.0 hasmntopt F
+GLIBC_2.0 hcreate F
+GLIBC_2.0 hcreate_r F
+GLIBC_2.0 hdestroy F
+GLIBC_2.0 hdestroy_r F
+GLIBC_2.0 herror F
+GLIBC_2.0 hsearch F
+GLIBC_2.0 hsearch_r F
+GLIBC_2.0 hstrerror F
+GLIBC_2.0 htonl F
+GLIBC_2.0 htons F
+GLIBC_2.0 index F
+GLIBC_2.0 inet_addr F
+GLIBC_2.0 inet_aton F
+GLIBC_2.0 inet_lnaof F
+GLIBC_2.0 inet_makeaddr F
+GLIBC_2.0 inet_netof F
+GLIBC_2.0 inet_network F
+GLIBC_2.0 inet_nsap_addr F
+GLIBC_2.0 inet_nsap_ntoa F
+GLIBC_2.0 inet_ntoa F
+GLIBC_2.0 inet_ntop F
+GLIBC_2.0 inet_pton F
+GLIBC_2.0 init_module F
+GLIBC_2.0 initgroups F
+GLIBC_2.0 initstate F
+GLIBC_2.0 initstate_r F
+GLIBC_2.0 innetgr F
+GLIBC_2.0 insque F
+GLIBC_2.0 ioctl F
+GLIBC_2.0 ioperm F
+GLIBC_2.0 iopl F
+GLIBC_2.0 iruserok F
+GLIBC_2.0 isalnum F
+GLIBC_2.0 isalpha F
+GLIBC_2.0 isascii F
+GLIBC_2.0 isatty F
+GLIBC_2.0 isblank F
+GLIBC_2.0 iscntrl F
+GLIBC_2.0 isdigit F
+GLIBC_2.0 isfdtype F
+GLIBC_2.0 isgraph F
+GLIBC_2.0 isinf F
+GLIBC_2.0 isinff F
+GLIBC_2.0 isinfl F
+GLIBC_2.0 islower F
+GLIBC_2.0 isnan F
+GLIBC_2.0 isnanf F
+GLIBC_2.0 isnanl F
+GLIBC_2.0 isprint F
+GLIBC_2.0 ispunct F
+GLIBC_2.0 isspace F
+GLIBC_2.0 isupper F
+GLIBC_2.0 iswalnum F
+GLIBC_2.0 iswalpha F
+GLIBC_2.0 iswcntrl F
+GLIBC_2.0 iswctype F
+GLIBC_2.0 iswdigit F
+GLIBC_2.0 iswgraph F
+GLIBC_2.0 iswlower F
+GLIBC_2.0 iswprint F
+GLIBC_2.0 iswpunct F
+GLIBC_2.0 iswspace F
+GLIBC_2.0 iswupper F
+GLIBC_2.0 iswxdigit F
+GLIBC_2.0 isxdigit F
+GLIBC_2.0 jrand48 F
+GLIBC_2.0 jrand48_r F
+GLIBC_2.0 kill F
+GLIBC_2.0 killpg F
+GLIBC_2.0 klogctl F
+GLIBC_2.0 l64a F
+GLIBC_2.0 labs F
+GLIBC_2.0 lchown F
+GLIBC_2.0 lckpwdf F
+GLIBC_2.0 lcong48 F
+GLIBC_2.0 lcong48_r F
+GLIBC_2.0 ldexp F
+GLIBC_2.0 ldexpf F
+GLIBC_2.0 ldexpl F
+GLIBC_2.0 ldiv F
+GLIBC_2.0 lfind F
+GLIBC_2.0 link F
+GLIBC_2.0 listen F
+GLIBC_2.0 llabs F
+GLIBC_2.0 lldiv F
+GLIBC_2.0 llseek F
+GLIBC_2.0 loc1 D 0x4
+GLIBC_2.0 loc2 D 0x4
+GLIBC_2.0 localeconv F
+GLIBC_2.0 localtime F
+GLIBC_2.0 localtime_r F
+GLIBC_2.0 lockf F
+GLIBC_2.0 locs D 0x4
+GLIBC_2.0 longjmp F
+GLIBC_2.0 lrand48 F
+GLIBC_2.0 lrand48_r F
+GLIBC_2.0 lsearch F
+GLIBC_2.0 lseek F
+GLIBC_2.0 madvise F
+GLIBC_2.0 mallinfo F
+GLIBC_2.0 malloc F
+GLIBC_2.0 malloc_get_state F
+GLIBC_2.0 malloc_set_state F
+GLIBC_2.0 malloc_stats F
+GLIBC_2.0 malloc_trim F
+GLIBC_2.0 malloc_usable_size F
+GLIBC_2.0 mallopt F
+GLIBC_2.0 mallwatch D 0x4
+GLIBC_2.0 mblen F
+GLIBC_2.0 mbrlen F
+GLIBC_2.0 mbrtowc F
+GLIBC_2.0 mbsinit F
+GLIBC_2.0 mbsnrtowcs F
+GLIBC_2.0 mbsrtowcs F
+GLIBC_2.0 mbstowcs F
+GLIBC_2.0 mbtowc F
+GLIBC_2.0 mcheck F
+GLIBC_2.0 mcount F
+GLIBC_2.0 memalign F
+GLIBC_2.0 memccpy F
+GLIBC_2.0 memchr F
+GLIBC_2.0 memcmp F
+GLIBC_2.0 memcpy F
+GLIBC_2.0 memfrob F
+GLIBC_2.0 memmem F
+GLIBC_2.0 memmove F
+GLIBC_2.0 memset F
+GLIBC_2.0 mkdir F
+GLIBC_2.0 mkfifo F
+GLIBC_2.0 mkstemp F
+GLIBC_2.0 mktemp F
+GLIBC_2.0 mktime F
+GLIBC_2.0 mlock F
+GLIBC_2.0 mlockall F
+GLIBC_2.0 mmap F
+GLIBC_2.0 modf F
+GLIBC_2.0 modff F
+GLIBC_2.0 modfl F
+GLIBC_2.0 monstartup F
+GLIBC_2.0 mount F
+GLIBC_2.0 mprobe F
+GLIBC_2.0 mprotect F
+GLIBC_2.0 mrand48 F
+GLIBC_2.0 mrand48_r F
+GLIBC_2.0 mremap F
+GLIBC_2.0 msgctl F
+GLIBC_2.0 msgget F
+GLIBC_2.0 msgrcv F
+GLIBC_2.0 msgsnd F
+GLIBC_2.0 msync F
+GLIBC_2.0 mtrace F
+GLIBC_2.0 munlock F
+GLIBC_2.0 munlockall F
+GLIBC_2.0 munmap F
+GLIBC_2.0 muntrace F
+GLIBC_2.0 nanosleep F
+GLIBC_2.0 nfsservctl F
+GLIBC_2.0 nice F
+GLIBC_2.0 nl_langinfo F
+GLIBC_2.0 nrand48 F
+GLIBC_2.0 nrand48_r F
+GLIBC_2.0 ntohl F
+GLIBC_2.0 ntohs F
+GLIBC_2.0 obstack_alloc_failed_handler D 0x4
+GLIBC_2.0 obstack_exit_failure D 0x4
+GLIBC_2.0 obstack_free F
+GLIBC_2.0 obstack_printf F
+GLIBC_2.0 obstack_vprintf F
+GLIBC_2.0 on_exit F
+GLIBC_2.0 open F
+GLIBC_2.0 open_memstream F
+GLIBC_2.0 opendir F
+GLIBC_2.0 openlog F
+GLIBC_2.0 optarg D 0x4
+GLIBC_2.0 opterr D 0x4
+GLIBC_2.0 optind D 0x4
+GLIBC_2.0 optopt D 0x4
+GLIBC_2.0 parse_printf_format F
+GLIBC_2.0 pathconf F
+GLIBC_2.0 pause F
+GLIBC_2.0 pclose F
+GLIBC_2.0 perror F
+GLIBC_2.0 personality F
+GLIBC_2.0 pipe F
+GLIBC_2.0 pmap_getmaps F
+GLIBC_2.0 pmap_getport F
+GLIBC_2.0 pmap_rmtcall F
+GLIBC_2.0 pmap_set F
+GLIBC_2.0 pmap_unset F
+GLIBC_2.0 poll F
+GLIBC_2.0 popen F
+GLIBC_2.0 prctl F
+GLIBC_2.0 printf F
+GLIBC_2.0 profil F
+GLIBC_2.0 program_invocation_name D 0x4
+GLIBC_2.0 program_invocation_short_name D 0x4
+GLIBC_2.0 pselect F
+GLIBC_2.0 psignal F
+GLIBC_2.0 pthread_attr_destroy F
+GLIBC_2.0 pthread_attr_getdetachstate F
+GLIBC_2.0 pthread_attr_getinheritsched F
+GLIBC_2.0 pthread_attr_getschedparam F
+GLIBC_2.0 pthread_attr_getschedpolicy F
+GLIBC_2.0 pthread_attr_getscope F
+GLIBC_2.0 pthread_attr_init F
+GLIBC_2.0 pthread_attr_setdetachstate F
+GLIBC_2.0 pthread_attr_setinheritsched F
+GLIBC_2.0 pthread_attr_setschedparam F
+GLIBC_2.0 pthread_attr_setschedpolicy F
+GLIBC_2.0 pthread_attr_setscope F
+GLIBC_2.0 pthread_cond_broadcast F
+GLIBC_2.0 pthread_cond_destroy F
+GLIBC_2.0 pthread_cond_init F
+GLIBC_2.0 pthread_cond_signal F
+GLIBC_2.0 pthread_cond_timedwait F
+GLIBC_2.0 pthread_cond_wait F
+GLIBC_2.0 pthread_condattr_destroy F
+GLIBC_2.0 pthread_condattr_init F
+GLIBC_2.0 pthread_equal F
+GLIBC_2.0 pthread_exit F
+GLIBC_2.0 pthread_getschedparam F
+GLIBC_2.0 pthread_mutex_destroy F
+GLIBC_2.0 pthread_mutex_init F
+GLIBC_2.0 pthread_mutex_lock F
+GLIBC_2.0 pthread_mutex_unlock F
+GLIBC_2.0 pthread_self F
+GLIBC_2.0 pthread_setcancelstate F
+GLIBC_2.0 pthread_setcanceltype F
+GLIBC_2.0 pthread_setschedparam F
+GLIBC_2.0 ptrace F
+GLIBC_2.0 putc F
+GLIBC_2.0 putc_unlocked F
+GLIBC_2.0 putchar F
+GLIBC_2.0 putchar_unlocked F
+GLIBC_2.0 putenv F
+GLIBC_2.0 putpwent F
+GLIBC_2.0 puts F
+GLIBC_2.0 putspent F
+GLIBC_2.0 pututline F
+GLIBC_2.0 putw F
+GLIBC_2.0 pvalloc F
+GLIBC_2.0 qecvt F
+GLIBC_2.0 qecvt_r F
+GLIBC_2.0 qfcvt F
+GLIBC_2.0 qfcvt_r F
+GLIBC_2.0 qgcvt F
+GLIBC_2.0 qsort F
+GLIBC_2.0 query_module F
+GLIBC_2.0 quotactl F
+GLIBC_2.0 raise F
+GLIBC_2.0 rand F
+GLIBC_2.0 rand_r F
+GLIBC_2.0 random F
+GLIBC_2.0 random_r F
+GLIBC_2.0 rcmd F
+GLIBC_2.0 re_comp F
+GLIBC_2.0 re_compile_fastmap F
+GLIBC_2.0 re_compile_pattern F
+GLIBC_2.0 re_exec F
+GLIBC_2.0 re_match F
+GLIBC_2.0 re_match_2 F
+GLIBC_2.0 re_max_failures D 0x4
+GLIBC_2.0 re_search F
+GLIBC_2.0 re_search_2 F
+GLIBC_2.0 re_set_registers F
+GLIBC_2.0 re_set_syntax F
+GLIBC_2.0 re_syntax_options D 0x4
+GLIBC_2.0 read F
+GLIBC_2.0 readdir F
+GLIBC_2.0 readdir_r F
+GLIBC_2.0 readlink F
+GLIBC_2.0 readv F
+GLIBC_2.0 realloc F
+GLIBC_2.0 realpath F
+GLIBC_2.0 reboot F
+GLIBC_2.0 recv F
+GLIBC_2.0 recvfrom F
+GLIBC_2.0 recvmsg F
+GLIBC_2.0 regcomp F
+GLIBC_2.0 regerror F
+GLIBC_2.0 regexec F
+GLIBC_2.0 regfree F
+GLIBC_2.0 register_printf_function F
+GLIBC_2.0 registerrpc F
+GLIBC_2.0 remove F
+GLIBC_2.0 remque F
+GLIBC_2.0 rename F
+GLIBC_2.0 res_init F
+GLIBC_2.0 revoke F
+GLIBC_2.0 rewind F
+GLIBC_2.0 rewinddir F
+GLIBC_2.0 rexec F
+GLIBC_2.0 rexecoptions D 0x4
+GLIBC_2.0 rindex F
+GLIBC_2.0 rmdir F
+GLIBC_2.0 rpc_createerr D 0x10
+GLIBC_2.0 rpmatch F
+GLIBC_2.0 rresvport F
+GLIBC_2.0 ruserok F
+GLIBC_2.0 ruserpass F
+GLIBC_2.0 sbrk F
+GLIBC_2.0 scalbn F
+GLIBC_2.0 scalbnf F
+GLIBC_2.0 scalbnl F
+GLIBC_2.0 scandir F
+GLIBC_2.0 scanf F
+GLIBC_2.0 sched_get_priority_max F
+GLIBC_2.0 sched_get_priority_min F
+GLIBC_2.0 sched_getparam F
+GLIBC_2.0 sched_getscheduler F
+GLIBC_2.0 sched_rr_get_interval F
+GLIBC_2.0 sched_setparam F
+GLIBC_2.0 sched_setscheduler F
+GLIBC_2.0 sched_yield F
+GLIBC_2.0 seed48 F
+GLIBC_2.0 seed48_r F
+GLIBC_2.0 seekdir F
+GLIBC_2.0 select F
+GLIBC_2.0 semctl F
+GLIBC_2.0 semget F
+GLIBC_2.0 semop F
+GLIBC_2.0 send F
+GLIBC_2.0 sendmsg F
+GLIBC_2.0 sendto F
+GLIBC_2.0 setaliasent F
+GLIBC_2.0 setbuf F
+GLIBC_2.0 setbuffer F
+GLIBC_2.0 setcontext F
+GLIBC_2.0 setdomainname F
+GLIBC_2.0 setegid F
+GLIBC_2.0 setenv F
+GLIBC_2.0 seteuid F
+GLIBC_2.0 setfsent F
+GLIBC_2.0 setfsgid F
+GLIBC_2.0 setfsuid F
+GLIBC_2.0 setgid F
+GLIBC_2.0 setgrent F
+GLIBC_2.0 setgroups F
+GLIBC_2.0 sethostent F
+GLIBC_2.0 sethostid F
+GLIBC_2.0 sethostname F
+GLIBC_2.0 setitimer F
+GLIBC_2.0 setjmp F
+GLIBC_2.0 setlinebuf F
+GLIBC_2.0 setlocale F
+GLIBC_2.0 setlogin F
+GLIBC_2.0 setlogmask F
+GLIBC_2.0 setmntent F
+GLIBC_2.0 setnetent F
+GLIBC_2.0 setnetgrent F
+GLIBC_2.0 setpgid F
+GLIBC_2.0 setpgrp F
+GLIBC_2.0 setpriority F
+GLIBC_2.0 setprotoent F
+GLIBC_2.0 setpwent F
+GLIBC_2.0 setregid F
+GLIBC_2.0 setresgid F
+GLIBC_2.0 setresuid F
+GLIBC_2.0 setreuid F
+GLIBC_2.0 setrlimit F
+GLIBC_2.0 setrpcent F
+GLIBC_2.0 setservent F
+GLIBC_2.0 setsid F
+GLIBC_2.0 setsockopt F
+GLIBC_2.0 setspent F
+GLIBC_2.0 setstate F
+GLIBC_2.0 setstate_r F
+GLIBC_2.0 settimeofday F
+GLIBC_2.0 setttyent F
+GLIBC_2.0 setuid F
+GLIBC_2.0 setusershell F
+GLIBC_2.0 setutent F
+GLIBC_2.0 setvbuf F
+GLIBC_2.0 sgetspent F
+GLIBC_2.0 sgetspent_r F
+GLIBC_2.0 shmat F
+GLIBC_2.0 shmctl F
+GLIBC_2.0 shmdt F
+GLIBC_2.0 shmget F
+GLIBC_2.0 shutdown F
+GLIBC_2.0 sigaction F
+GLIBC_2.0 sigaddset F
+GLIBC_2.0 sigaltstack F
+GLIBC_2.0 sigandset F
+GLIBC_2.0 sigblock F
+GLIBC_2.0 sigdelset F
+GLIBC_2.0 sigemptyset F
+GLIBC_2.0 sigfillset F
+GLIBC_2.0 siggetmask F
+GLIBC_2.0 siginterrupt F
+GLIBC_2.0 sigisemptyset F
+GLIBC_2.0 sigismember F
+GLIBC_2.0 siglongjmp F
+GLIBC_2.0 signal F
+GLIBC_2.0 sigorset F
+GLIBC_2.0 sigpause F
+GLIBC_2.0 sigpending F
+GLIBC_2.0 sigprocmask F
+GLIBC_2.0 sigreturn F
+GLIBC_2.0 sigsetmask F
+GLIBC_2.0 sigstack F
+GLIBC_2.0 sigsuspend F
+GLIBC_2.0 sigvec F
+GLIBC_2.0 sigwait F
+GLIBC_2.0 sleep F
+GLIBC_2.0 snprintf F
+GLIBC_2.0 socket F
+GLIBC_2.0 socketpair F
+GLIBC_2.0 sprintf F
+GLIBC_2.0 srand F
+GLIBC_2.0 srand48 F
+GLIBC_2.0 srand48_r F
+GLIBC_2.0 srandom F
+GLIBC_2.0 srandom_r F
+GLIBC_2.0 sscanf F
+GLIBC_2.0 ssignal F
+GLIBC_2.0 sstk F
+GLIBC_2.0 statfs F
+GLIBC_2.0 stderr D 0x4
+GLIBC_2.0 stdin D 0x4
+GLIBC_2.0 stdout D 0x4
+GLIBC_2.0 step F
+GLIBC_2.0 stime F
+GLIBC_2.0 stpcpy F
+GLIBC_2.0 stpncpy F
+GLIBC_2.0 strcasecmp F
+GLIBC_2.0 strcat F
+GLIBC_2.0 strchr F
+GLIBC_2.0 strcmp F
+GLIBC_2.0 strcoll F
+GLIBC_2.0 strcpy F
+GLIBC_2.0 strcspn F
+GLIBC_2.0 strdup F
+GLIBC_2.0 strerror F
+GLIBC_2.0 strerror_r F
+GLIBC_2.0 strfmon F
+GLIBC_2.0 strfry F
+GLIBC_2.0 strftime F
+GLIBC_2.0 strlen F
+GLIBC_2.0 strncasecmp F
+GLIBC_2.0 strncat F
+GLIBC_2.0 strncmp F
+GLIBC_2.0 strncpy F
+GLIBC_2.0 strndup F
+GLIBC_2.0 strnlen F
+GLIBC_2.0 strpbrk F
+GLIBC_2.0 strptime F
+GLIBC_2.0 strrchr F
+GLIBC_2.0 strsep F
+GLIBC_2.0 strsignal F
+GLIBC_2.0 strspn F
+GLIBC_2.0 strstr F
+GLIBC_2.0 strtod F
+GLIBC_2.0 strtof F
+GLIBC_2.0 strtok F
+GLIBC_2.0 strtok_r F
+GLIBC_2.0 strtol F
+GLIBC_2.0 strtold F
+GLIBC_2.0 strtoll F
+GLIBC_2.0 strtoq F
+GLIBC_2.0 strtoul F
+GLIBC_2.0 strtoull F
+GLIBC_2.0 strtouq F
+GLIBC_2.0 strxfrm F
+GLIBC_2.0 stty F
+GLIBC_2.0 svc_exit F
+GLIBC_2.0 svc_fdset D 0x80
+GLIBC_2.0 svc_getreq F
+GLIBC_2.0 svc_getreqset F
+GLIBC_2.0 svc_register F
+GLIBC_2.0 svc_run F
+GLIBC_2.0 svc_sendreply F
+GLIBC_2.0 svc_unregister F
+GLIBC_2.0 svcauthdes_stats D 0xc
+GLIBC_2.0 svcerr_auth F
+GLIBC_2.0 svcerr_decode F
+GLIBC_2.0 svcerr_noproc F
+GLIBC_2.0 svcerr_noprog F
+GLIBC_2.0 svcerr_progvers F
+GLIBC_2.0 svcerr_systemerr F
+GLIBC_2.0 svcerr_weakauth F
+GLIBC_2.0 svcfd_create F
+GLIBC_2.0 svcraw_create F
+GLIBC_2.0 svctcp_create F
+GLIBC_2.0 svcudp_bufcreate F
+GLIBC_2.0 svcudp_create F
+GLIBC_2.0 svcudp_enablecache F
+GLIBC_2.0 swab F
+GLIBC_2.0 swapoff F
+GLIBC_2.0 swapon F
+GLIBC_2.0 symlink F
+GLIBC_2.0 sync F
+GLIBC_2.0 sys_errlist D 0x1ec
+GLIBC_2.0 sys_nerr D 0x4
+GLIBC_2.0 sys_sigabbrev D 0x80
+GLIBC_2.0 sys_siglist D 0x80
+GLIBC_2.0 syscall F
+GLIBC_2.0 sysconf F
+GLIBC_2.0 sysctl F
+GLIBC_2.0 sysinfo F
+GLIBC_2.0 syslog F
+GLIBC_2.0 system F
+GLIBC_2.0 tcdrain F
+GLIBC_2.0 tcflow F
+GLIBC_2.0 tcflush F
+GLIBC_2.0 tcgetattr F
+GLIBC_2.0 tcgetpgrp F
+GLIBC_2.0 tcsendbreak F
+GLIBC_2.0 tcsetattr F
+GLIBC_2.0 tcsetpgrp F
+GLIBC_2.0 tdelete F
+GLIBC_2.0 telldir F
+GLIBC_2.0 tempnam F
+GLIBC_2.0 textdomain F
+GLIBC_2.0 tfind F
+GLIBC_2.0 time F
+GLIBC_2.0 timegm F
+GLIBC_2.0 timelocal F
+GLIBC_2.0 times F
+GLIBC_2.0 timezone D 0x4
+GLIBC_2.0 tmpfile F
+GLIBC_2.0 tmpnam F
+GLIBC_2.0 tmpnam_r F
+GLIBC_2.0 toascii F
+GLIBC_2.0 tolower F
+GLIBC_2.0 toupper F
+GLIBC_2.0 towctrans F
+GLIBC_2.0 towlower F
+GLIBC_2.0 towupper F
+GLIBC_2.0 tr_break F
+GLIBC_2.0 truncate F
+GLIBC_2.0 tsearch F
+GLIBC_2.0 ttyname F
+GLIBC_2.0 ttyname_r F
+GLIBC_2.0 ttyslot F
+GLIBC_2.0 twalk F
+GLIBC_2.0 tzname D 0x8
+GLIBC_2.0 tzset F
+GLIBC_2.0 ualarm F
+GLIBC_2.0 ulckpwdf F
+GLIBC_2.0 ulimit F
+GLIBC_2.0 umask F
+GLIBC_2.0 umount F
+GLIBC_2.0 uname F
+GLIBC_2.0 ungetc F
+GLIBC_2.0 unlink F
+GLIBC_2.0 unsetenv F
+GLIBC_2.0 updwtmp F
+GLIBC_2.0 uselib F
+GLIBC_2.0 usleep F
+GLIBC_2.0 ustat F
+GLIBC_2.0 utime F
+GLIBC_2.0 utimes F
+GLIBC_2.0 utmpname F
+GLIBC_2.0 valloc F
+GLIBC_2.0 vasprintf F
+GLIBC_2.0 vdprintf F
+GLIBC_2.0 verr F
+GLIBC_2.0 verrx F
+GLIBC_2.0 vfork F
+GLIBC_2.0 vfprintf F
+GLIBC_2.0 vfscanf F
+GLIBC_2.0 vhangup F
+GLIBC_2.0 vlimit F
+GLIBC_2.0 vm86 F
+GLIBC_2.0 vprintf F
+GLIBC_2.0 vscanf F
+GLIBC_2.0 vsnprintf F
+GLIBC_2.0 vsprintf F
+GLIBC_2.0 vsscanf F
+GLIBC_2.0 vsyslog F
+GLIBC_2.0 vtimes F
+GLIBC_2.0 vwarn F
+GLIBC_2.0 vwarnx F
+GLIBC_2.0 wait F
+GLIBC_2.0 wait3 F
+GLIBC_2.0 wait4 F
+GLIBC_2.0 waitpid F
+GLIBC_2.0 warn F
+GLIBC_2.0 warnx F
+GLIBC_2.0 wcpcpy F
+GLIBC_2.0 wcpncpy F
+GLIBC_2.0 wcrtomb F
+GLIBC_2.0 wcscat F
+GLIBC_2.0 wcschr F
+GLIBC_2.0 wcscmp F
+GLIBC_2.0 wcscoll F
+GLIBC_2.0 wcscpy F
+GLIBC_2.0 wcscspn F
+GLIBC_2.0 wcsdup F
+GLIBC_2.0 wcslen F
+GLIBC_2.0 wcsncat F
+GLIBC_2.0 wcsncmp F
+GLIBC_2.0 wcsncpy F
+GLIBC_2.0 wcsnrtombs F
+GLIBC_2.0 wcspbrk F
+GLIBC_2.0 wcsrchr F
+GLIBC_2.0 wcsrtombs F
+GLIBC_2.0 wcsspn F
+GLIBC_2.0 wcsstr F
+GLIBC_2.0 wcstod F
+GLIBC_2.0 wcstof F
+GLIBC_2.0 wcstok F
+GLIBC_2.0 wcstol F
+GLIBC_2.0 wcstold F
+GLIBC_2.0 wcstombs F
+GLIBC_2.0 wcstoq F
+GLIBC_2.0 wcstoul F
+GLIBC_2.0 wcstouq F
+GLIBC_2.0 wcswidth F
+GLIBC_2.0 wcsxfrm F
+GLIBC_2.0 wctob F
+GLIBC_2.0 wctomb F
+GLIBC_2.0 wctrans F
+GLIBC_2.0 wctype F
+GLIBC_2.0 wcwidth F
+GLIBC_2.0 wmemchr F
+GLIBC_2.0 wmemcmp F
+GLIBC_2.0 wmemcpy F
+GLIBC_2.0 wmemmove F
+GLIBC_2.0 wmemset F
+GLIBC_2.0 write F
+GLIBC_2.0 writev F
+GLIBC_2.0 xdr_accepted_reply F
+GLIBC_2.0 xdr_array F
+GLIBC_2.0 xdr_authunix_parms F
+GLIBC_2.0 xdr_bool F
+GLIBC_2.0 xdr_bytes F
+GLIBC_2.0 xdr_callhdr F
+GLIBC_2.0 xdr_callmsg F
+GLIBC_2.0 xdr_char F
+GLIBC_2.0 xdr_cryptkeyarg F
+GLIBC_2.0 xdr_cryptkeyarg2 F
+GLIBC_2.0 xdr_cryptkeyres F
+GLIBC_2.0 xdr_des_block F
+GLIBC_2.0 xdr_double F
+GLIBC_2.0 xdr_enum F
+GLIBC_2.0 xdr_float F
+GLIBC_2.0 xdr_free F
+GLIBC_2.0 xdr_int F
+GLIBC_2.0 xdr_key_netstarg F
+GLIBC_2.0 xdr_key_netstres F
+GLIBC_2.0 xdr_keybuf F
+GLIBC_2.0 xdr_keystatus F
+GLIBC_2.0 xdr_long F
+GLIBC_2.0 xdr_netobj F
+GLIBC_2.0 xdr_opaque F
+GLIBC_2.0 xdr_opaque_auth F
+GLIBC_2.0 xdr_pmap F
+GLIBC_2.0 xdr_pmaplist F
+GLIBC_2.0 xdr_pointer F
+GLIBC_2.0 xdr_reference F
+GLIBC_2.0 xdr_rejected_reply F
+GLIBC_2.0 xdr_replymsg F
+GLIBC_2.0 xdr_rmtcall_args F
+GLIBC_2.0 xdr_rmtcallres F
+GLIBC_2.0 xdr_short F
+GLIBC_2.0 xdr_string F
+GLIBC_2.0 xdr_u_char F
+GLIBC_2.0 xdr_u_int F
+GLIBC_2.0 xdr_u_long F
+GLIBC_2.0 xdr_u_short F
+GLIBC_2.0 xdr_union F
+GLIBC_2.0 xdr_vector F
+GLIBC_2.0 xdr_void F
+GLIBC_2.0 xdr_wrapstring F
+GLIBC_2.0 xdrmem_create F
+GLIBC_2.0 xdrrec_create F
+GLIBC_2.0 xdrrec_endofrecord F
+GLIBC_2.0 xdrrec_eof F
+GLIBC_2.0 xdrrec_skiprecord F
+GLIBC_2.0 xdrstdio_create F
+GLIBC_2.0 xencrypt F
+GLIBC_2.0 xprt_register F
+GLIBC_2.0 xprt_unregister F
+GLIBC_2.1 GLIBC_2.1 A
+GLIBC_2.1 _IO_2_1_stderr_ D 0x98
+GLIBC_2.1 _IO_2_1_stdin_ D 0x98
+GLIBC_2.1 _IO_2_1_stdout_ D 0x98
+GLIBC_2.1 _IO_do_write F
+GLIBC_2.1 _IO_fclose F
+GLIBC_2.1 _IO_fdopen F
+GLIBC_2.1 _IO_fgetpos64 F
+GLIBC_2.1 _IO_file_attach F
+GLIBC_2.1 _IO_file_close_it F
+GLIBC_2.1 _IO_file_finish F
+GLIBC_2.1 _IO_file_fopen F
+GLIBC_2.1 _IO_file_init F
+GLIBC_2.1 _IO_file_overflow F
+GLIBC_2.1 _IO_file_seekoff F
+GLIBC_2.1 _IO_file_setbuf F
+GLIBC_2.1 _IO_file_sync F
+GLIBC_2.1 _IO_file_underflow F
+GLIBC_2.1 _IO_file_write F
+GLIBC_2.1 _IO_file_xsputn F
+GLIBC_2.1 _IO_fopen F
+GLIBC_2.1 _IO_fsetpos64 F
+GLIBC_2.1 _IO_getline_info F
+GLIBC_2.1 _IO_popen F
+GLIBC_2.1 _IO_proc_close F
+GLIBC_2.1 _IO_proc_open F
+GLIBC_2.1 __asprintf F
+GLIBC_2.1 __backtrace F
+GLIBC_2.1 __backtrace_symbols F
+GLIBC_2.1 __backtrace_symbols_fd F
+GLIBC_2.1 __duplocale F
+GLIBC_2.1 __freelocale F
+GLIBC_2.1 __fxstat64 F
+GLIBC_2.1 __isalnum_l F
+GLIBC_2.1 __isalpha_l F
+GLIBC_2.1 __isascii_l F
+GLIBC_2.1 __isblank_l F
+GLIBC_2.1 __iscntrl_l F
+GLIBC_2.1 __isdigit_l F
+GLIBC_2.1 __isgraph_l F
+GLIBC_2.1 __islower_l F
+GLIBC_2.1 __isprint_l F
+GLIBC_2.1 __ispunct_l F
+GLIBC_2.1 __isspace_l F
+GLIBC_2.1 __isupper_l F
+GLIBC_2.1 __iswalnum_l F
+GLIBC_2.1 __iswalpha_l F
+GLIBC_2.1 __iswblank_l F
+GLIBC_2.1 __iswcntrl_l F
+GLIBC_2.1 __iswctype_l F
+GLIBC_2.1 __iswdigit_l F
+GLIBC_2.1 __iswgraph_l F
+GLIBC_2.1 __iswlower_l F
+GLIBC_2.1 __iswprint_l F
+GLIBC_2.1 __iswpunct_l F
+GLIBC_2.1 __iswspace_l F
+GLIBC_2.1 __iswupper_l F
+GLIBC_2.1 __iswxdigit_l F
+GLIBC_2.1 __isxdigit_l F
+GLIBC_2.1 __key_decryptsession_pk_LOCAL D 0x4
+GLIBC_2.1 __key_encryptsession_pk_LOCAL D 0x4
+GLIBC_2.1 __key_gendes_LOCAL D 0x4
+GLIBC_2.1 __libc_allocate_rtsig F
+GLIBC_2.1 __libc_current_sigrtmax F
+GLIBC_2.1 __libc_current_sigrtmin F
+GLIBC_2.1 __libc_freeres F
+GLIBC_2.1 __libc_sa_len F
+GLIBC_2.1 __lxstat64 F
+GLIBC_2.1 __newlocale F
+GLIBC_2.1 __poll F
+GLIBC_2.1 __pread64 F
+GLIBC_2.1 __pwrite64 F
+GLIBC_2.1 __rawmemchr F
+GLIBC_2.1 __signbit F
+GLIBC_2.1 __signbitf F
+GLIBC_2.1 __signbitl F
+GLIBC_2.1 __strcasecmp_l F
+GLIBC_2.1 __strcasestr F
+GLIBC_2.1 __strcoll_l F
+GLIBC_2.1 __strfmon_l F
+GLIBC_2.1 __strncasecmp_l F
+GLIBC_2.1 __strtod_l F
+GLIBC_2.1 __strtof_l F
+GLIBC_2.1 __strtol_l F
+GLIBC_2.1 __strtold_l F
+GLIBC_2.1 __strtoll_l F
+GLIBC_2.1 __strtoul_l F
+GLIBC_2.1 __strtoull_l F
+GLIBC_2.1 __strxfrm_l F
+GLIBC_2.1 __toascii_l F
+GLIBC_2.1 __tolower_l F
+GLIBC_2.1 __toupper_l F
+GLIBC_2.1 __towctrans F
+GLIBC_2.1 __towctrans_l F
+GLIBC_2.1 __towlower_l F
+GLIBC_2.1 __towupper_l F
+GLIBC_2.1 __wcscasecmp_l F
+GLIBC_2.1 __wcscoll_l F
+GLIBC_2.1 __wcsncasecmp_l F
+GLIBC_2.1 __wcstod_l F
+GLIBC_2.1 __wcstof_l F
+GLIBC_2.1 __wcstol_l F
+GLIBC_2.1 __wcstold_l F
+GLIBC_2.1 __wcstoll_l F
+GLIBC_2.1 __wcstoul_l F
+GLIBC_2.1 __wcstoull_l F
+GLIBC_2.1 __wcsxfrm_l F
+GLIBC_2.1 __wctype_l F
+GLIBC_2.1 __xstat64 F
+GLIBC_2.1 _authenticate F
+GLIBC_2.1 _dl_mcount_wrapper F
+GLIBC_2.1 _dl_mcount_wrapper_check F
+GLIBC_2.1 _sys_errlist D 0x1f4
+GLIBC_2.1 _sys_nerr D 0x4
+GLIBC_2.1 _sys_siglist D 0x100
+GLIBC_2.1 addseverity F
+GLIBC_2.1 alphasort64 F
+GLIBC_2.1 argp_err_exit_status D 0x4
+GLIBC_2.1 argp_error F
+GLIBC_2.1 argp_failure F
+GLIBC_2.1 argp_help F
+GLIBC_2.1 argp_parse F
+GLIBC_2.1 argp_program_bug_address D 0x4
+GLIBC_2.1 argp_program_version D 0x4
+GLIBC_2.1 argp_program_version_hook D 0x4
+GLIBC_2.1 argp_state_help F
+GLIBC_2.1 argp_usage F
+GLIBC_2.1 authdes_create F
+GLIBC_2.1 authdes_getucred F
+GLIBC_2.1 authdes_pk_create F
+GLIBC_2.1 backtrace F
+GLIBC_2.1 backtrace_symbols F
+GLIBC_2.1 backtrace_symbols_fd F
+GLIBC_2.1 capget F
+GLIBC_2.1 capset F
+GLIBC_2.1 cbc_crypt F
+GLIBC_2.1 chown F
+GLIBC_2.1 clntunix_create F
+GLIBC_2.1 creat64 F
+GLIBC_2.1 des_setparity F
+GLIBC_2.1 ecb_crypt F
+GLIBC_2.1 endutxent F
+GLIBC_2.1 fattach F
+GLIBC_2.1 fclose F
+GLIBC_2.1 fdetach F
+GLIBC_2.1 fdopen F
+GLIBC_2.1 ffsl F
+GLIBC_2.1 ffsll F
+GLIBC_2.1 fgetc_unlocked F
+GLIBC_2.1 fgetpos64 F
+GLIBC_2.1 fgets_unlocked F
+GLIBC_2.1 fmtmsg F
+GLIBC_2.1 fopen F
+GLIBC_2.1 fopen64 F
+GLIBC_2.1 fputs_unlocked F
+GLIBC_2.1 fread_unlocked F
+GLIBC_2.1 freopen64 F
+GLIBC_2.1 fseeko F
+GLIBC_2.1 fseeko64 F
+GLIBC_2.1 fsetpos64 F
+GLIBC_2.1 fstatfs64 F
+GLIBC_2.1 fstatvfs F
+GLIBC_2.1 fstatvfs64 F
+GLIBC_2.1 ftello F
+GLIBC_2.1 ftello64 F
+GLIBC_2.1 ftruncate64 F
+GLIBC_2.1 ftw64 F
+GLIBC_2.1 fwrite_unlocked F
+GLIBC_2.1 gai_strerror F
+GLIBC_2.1 getcontext F
+GLIBC_2.1 getdate F
+GLIBC_2.1 getdate_err D 0x4
+GLIBC_2.1 getdate_r F
+GLIBC_2.1 getmsg F
+GLIBC_2.1 getnameinfo F
+GLIBC_2.1 getnetname F
+GLIBC_2.1 getpmsg F
+GLIBC_2.1 getpt F
+GLIBC_2.1 getrlimit64 F
+GLIBC_2.1 getutxent F
+GLIBC_2.1 getutxid F
+GLIBC_2.1 getutxline F
+GLIBC_2.1 glob64 F
+GLIBC_2.1 globfree64 F
+GLIBC_2.1 gnu_get_libc_release F
+GLIBC_2.1 gnu_get_libc_version F
+GLIBC_2.1 grantpt F
+GLIBC_2.1 host2netname F
+GLIBC_2.1 iconv F
+GLIBC_2.1 iconv_close F
+GLIBC_2.1 iconv_open F
+GLIBC_2.1 if_freenameindex F
+GLIBC_2.1 if_indextoname F
+GLIBC_2.1 if_nameindex F
+GLIBC_2.1 if_nametoindex F
+GLIBC_2.1 in6addr_any D 0x10
+GLIBC_2.1 in6addr_loopback D 0x10
+GLIBC_2.1 isastream F
+GLIBC_2.1 iswblank F
+GLIBC_2.1 key_decryptsession F
+GLIBC_2.1 key_decryptsession_pk F
+GLIBC_2.1 key_encryptsession F
+GLIBC_2.1 key_encryptsession_pk F
+GLIBC_2.1 key_gendes F
+GLIBC_2.1 key_get_conv F
+GLIBC_2.1 key_secretkey_is_set F
+GLIBC_2.1 key_setnet F
+GLIBC_2.1 key_setsecret F
+GLIBC_2.1 lockf64 F
+GLIBC_2.1 lseek64 F
+GLIBC_2.1 makecontext F
+GLIBC_2.1 mempcpy F
+GLIBC_2.1 mmap64 F
+GLIBC_2.1 modify_ldt F
+GLIBC_2.1 netname2host F
+GLIBC_2.1 netname2user F
+GLIBC_2.1 nftw F
+GLIBC_2.1 nftw64 F
+GLIBC_2.1 ntp_adjtime F
+GLIBC_2.1 ntp_gettime F
+GLIBC_2.1 open64 F
+GLIBC_2.1 passwd2des F
+GLIBC_2.1 pclose F
+GLIBC_2.1 popen F
+GLIBC_2.1 pread F
+GLIBC_2.1 pread64 F
+GLIBC_2.1 printf_size F
+GLIBC_2.1 printf_size_info F
+GLIBC_2.1 pthread_attr_init F
+GLIBC_2.1 ptsname F
+GLIBC_2.1 ptsname_r F
+GLIBC_2.1 putgrent F
+GLIBC_2.1 putmsg F
+GLIBC_2.1 putpmsg F
+GLIBC_2.1 pututxline F
+GLIBC_2.1 pwrite F
+GLIBC_2.1 pwrite64 F
+GLIBC_2.1 rawmemchr F
+GLIBC_2.1 readdir64 F
+GLIBC_2.1 readdir64_r F
+GLIBC_2.1 rtime F
+GLIBC_2.1 scalbln F
+GLIBC_2.1 scalblnf F
+GLIBC_2.1 scalblnl F
+GLIBC_2.1 scandir64 F
+GLIBC_2.1 sendfile F
+GLIBC_2.1 setrlimit64 F
+GLIBC_2.1 setutxent F
+GLIBC_2.1 sighold F
+GLIBC_2.1 sigignore F
+GLIBC_2.1 sigqueue F
+GLIBC_2.1 sigrelse F
+GLIBC_2.1 sigset F
+GLIBC_2.1 sigtimedwait F
+GLIBC_2.1 sigwaitinfo F
+GLIBC_2.1 statfs64 F
+GLIBC_2.1 statvfs F
+GLIBC_2.1 statvfs64 F
+GLIBC_2.1 strcasestr F
+GLIBC_2.1 strtoimax F
+GLIBC_2.1 strtoumax F
+GLIBC_2.1 strverscmp F
+GLIBC_2.1 svcunix_create F
+GLIBC_2.1 svcunixfd_create F
+GLIBC_2.1 swapcontext F
+GLIBC_2.1 sys_errlist D 0x1f4
+GLIBC_2.1 sys_nerr D 0x4
+GLIBC_2.1 sys_sigabbrev D 0x100
+GLIBC_2.1 sys_siglist D 0x100
+GLIBC_2.1 sysv_signal F
+GLIBC_2.1 tcgetsid F
+GLIBC_2.1 tdestroy F
+GLIBC_2.1 tmpfile F
+GLIBC_2.1 tmpfile64 F
+GLIBC_2.1 truncate64 F
+GLIBC_2.1 umount2 F
+GLIBC_2.1 unlockpt F
+GLIBC_2.1 updwtmpx F
+GLIBC_2.1 user2netname F
+GLIBC_2.1 utmpxname F
+GLIBC_2.1 versionsort F
+GLIBC_2.1 versionsort64 F
+GLIBC_2.1 waitid F
+GLIBC_2.1 wcscasecmp F
+GLIBC_2.1 wcsncasecmp F
+GLIBC_2.1 wcsnlen F
+GLIBC_2.1 wcstoimax F
+GLIBC_2.1 wcstoll F
+GLIBC_2.1 wcstoull F
+GLIBC_2.1 wcstoumax F
+GLIBC_2.1 wcswcs F
+GLIBC_2.1 wordexp F
+GLIBC_2.1 wordfree F
+GLIBC_2.1 xdecrypt F
+GLIBC_2.1 xdr_authdes_cred F
+GLIBC_2.1 xdr_authdes_verf F
+GLIBC_2.1 xdr_getcredres F
+GLIBC_2.1 xdr_int16_t F
+GLIBC_2.1 xdr_int32_t F
+GLIBC_2.1 xdr_int8_t F
+GLIBC_2.1 xdr_netnamestr F
+GLIBC_2.1 xdr_sizeof F
+GLIBC_2.1 xdr_uint16_t F
+GLIBC_2.1 xdr_uint32_t F
+GLIBC_2.1 xdr_uint8_t F
+GLIBC_2.1 xdr_unixcred F
+GLIBC_2.1.1 GLIBC_2.1.1 A
+GLIBC_2.1.1 _Exit F
+GLIBC_2.1.1 __memcpy_by2 F
+GLIBC_2.1.1 __memcpy_by4 F
+GLIBC_2.1.1 __memcpy_c F
+GLIBC_2.1.1 __memcpy_g F
+GLIBC_2.1.1 __mempcpy_by2 F
+GLIBC_2.1.1 __mempcpy_by4 F
+GLIBC_2.1.1 __mempcpy_byn F
+GLIBC_2.1.1 __mempcpy_small F
+GLIBC_2.1.1 __memset_cc F
+GLIBC_2.1.1 __memset_ccn_by2 F
+GLIBC_2.1.1 __memset_ccn_by4 F
+GLIBC_2.1.1 __memset_cg F
+GLIBC_2.1.1 __memset_gcn_by2 F
+GLIBC_2.1.1 __memset_gcn_by4 F
+GLIBC_2.1.1 __memset_gg F
+GLIBC_2.1.1 __stpcpy_g F
+GLIBC_2.1.1 __stpcpy_small F
+GLIBC_2.1.1 __strcat_c F
+GLIBC_2.1.1 __strcat_g F
+GLIBC_2.1.1 __strchr_c F
+GLIBC_2.1.1 __strchr_g F
+GLIBC_2.1.1 __strchrnul_c F
+GLIBC_2.1.1 __strchrnul_g F
+GLIBC_2.1.1 __strcmp_gg F
+GLIBC_2.1.1 __strcpy_g F
+GLIBC_2.1.1 __strcpy_small F
+GLIBC_2.1.1 __strcspn_c1 F
+GLIBC_2.1.1 __strcspn_c2 F
+GLIBC_2.1.1 __strcspn_c3 F
+GLIBC_2.1.1 __strcspn_cg F
+GLIBC_2.1.1 __strcspn_g F
+GLIBC_2.1.1 __strlen_g F
+GLIBC_2.1.1 __strncat_g F
+GLIBC_2.1.1 __strncmp_g F
+GLIBC_2.1.1 __strncpy_by2 F
+GLIBC_2.1.1 __strncpy_by4 F
+GLIBC_2.1.1 __strncpy_byn F
+GLIBC_2.1.1 __strncpy_gg F
+GLIBC_2.1.1 __strpbrk_c2 F
+GLIBC_2.1.1 __strpbrk_c3 F
+GLIBC_2.1.1 __strpbrk_cg F
+GLIBC_2.1.1 __strpbrk_g F
+GLIBC_2.1.1 __strrchr_c F
+GLIBC_2.1.1 __strrchr_g F
+GLIBC_2.1.1 __strsep_1c F
+GLIBC_2.1.1 __strsep_2c F
+GLIBC_2.1.1 __strsep_3c F
+GLIBC_2.1.1 __strsep_g F
+GLIBC_2.1.1 __strspn_c1 F
+GLIBC_2.1.1 __strspn_c2 F
+GLIBC_2.1.1 __strspn_c3 F
+GLIBC_2.1.1 __strspn_cg F
+GLIBC_2.1.1 __strspn_g F
+GLIBC_2.1.1 __strstr_cg F
+GLIBC_2.1.1 __strstr_g F
+GLIBC_2.1.1 __strtok_r_1c F
+GLIBC_2.1.1 __strverscmp F
+GLIBC_2.1.1 getutmp F
+GLIBC_2.1.1 getutmpx F
+GLIBC_2.1.1 imaxabs F
+GLIBC_2.1.1 imaxdiv F
+GLIBC_2.1.1 strchrnul F
+GLIBC_2.1.1 xdr_hyper F
+GLIBC_2.1.1 xdr_int64_t F
+GLIBC_2.1.1 xdr_longlong_t F
+GLIBC_2.1.1 xdr_u_hyper F
+GLIBC_2.1.1 xdr_u_longlong_t F
+GLIBC_2.1.1 xdr_uint64_t F
+GLIBC_2.1.2 GLIBC_2.1.2 A
+GLIBC_2.1.2 __vfork F
+GLIBC_2.1.2 getaliasbyname_r F
+GLIBC_2.1.2 getaliasent_r F
+GLIBC_2.1.2 getgrent_r F
+GLIBC_2.1.2 getgrgid_r F
+GLIBC_2.1.2 getgrnam_r F
+GLIBC_2.1.2 gethostbyaddr_r F
+GLIBC_2.1.2 gethostbyname2_r F
+GLIBC_2.1.2 gethostbyname_r F
+GLIBC_2.1.2 gethostent_r F
+GLIBC_2.1.2 getnetbyaddr_r F
+GLIBC_2.1.2 getnetbyname_r F
+GLIBC_2.1.2 getnetent_r F
+GLIBC_2.1.2 getprotobyname_r F
+GLIBC_2.1.2 getprotobynumber_r F
+GLIBC_2.1.2 getprotoent_r F
+GLIBC_2.1.2 getpwent_r F
+GLIBC_2.1.2 getpwnam_r F
+GLIBC_2.1.2 getpwuid_r F
+GLIBC_2.1.2 getrpcbyname_r F
+GLIBC_2.1.2 getrpcbynumber_r F
+GLIBC_2.1.2 getrpcent_r F
+GLIBC_2.1.2 getservbyname_r F
+GLIBC_2.1.2 getservbyport_r F
+GLIBC_2.1.2 getservent_r F
+GLIBC_2.1.2 getspent_r F
+GLIBC_2.1.2 getspnam_r F
+GLIBC_2.1.3 GLIBC_2.1.3 A
+GLIBC_2.1.3 __cxa_atexit F
+GLIBC_2.1.3 __cxa_finalize F
+GLIBC_2.1.3 __sigsuspend F
+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 __fentry__ F
+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.2 GLIBC_2.2 A
+GLIBC_2.2 _IO_adjust_wcolumn F
+GLIBC_2.2 _IO_fgetpos F
+GLIBC_2.2 _IO_fgetpos64 F
+GLIBC_2.2 _IO_free_wbackup_area F
+GLIBC_2.2 _IO_fsetpos F
+GLIBC_2.2 _IO_fsetpos64 F
+GLIBC_2.2 _IO_init_wmarker F
+GLIBC_2.2 _IO_iter_begin F
+GLIBC_2.2 _IO_iter_end F
+GLIBC_2.2 _IO_iter_file F
+GLIBC_2.2 _IO_iter_next F
+GLIBC_2.2 _IO_least_wmarker F
+GLIBC_2.2 _IO_list_lock F
+GLIBC_2.2 _IO_list_resetlock F
+GLIBC_2.2 _IO_list_unlock F
+GLIBC_2.2 _IO_seekwmark F
+GLIBC_2.2 _IO_sputbackwc F
+GLIBC_2.2 _IO_sungetwc F
+GLIBC_2.2 _IO_switch_to_main_wget_area F
+GLIBC_2.2 _IO_switch_to_wbackup_area F
+GLIBC_2.2 _IO_switch_to_wget_mode F
+GLIBC_2.2 _IO_unsave_wmarkers F
+GLIBC_2.2 _IO_wdefault_doallocate F
+GLIBC_2.2 _IO_wdefault_finish F
+GLIBC_2.2 _IO_wdefault_pbackfail F
+GLIBC_2.2 _IO_wdefault_uflow F
+GLIBC_2.2 _IO_wdefault_xsgetn F
+GLIBC_2.2 _IO_wdefault_xsputn F
+GLIBC_2.2 _IO_wdo_write F
+GLIBC_2.2 _IO_wdoallocbuf F
+GLIBC_2.2 _IO_wfile_jumps D 0x54
+GLIBC_2.2 _IO_wfile_overflow F
+GLIBC_2.2 _IO_wfile_seekoff F
+GLIBC_2.2 _IO_wfile_sync F
+GLIBC_2.2 _IO_wfile_underflow F
+GLIBC_2.2 _IO_wfile_xsputn F
+GLIBC_2.2 _IO_wmarker_delta F
+GLIBC_2.2 _IO_wsetb F
+GLIBC_2.2 __assert F
+GLIBC_2.2 __ctype32_tolower D 0x4
+GLIBC_2.2 __ctype32_toupper D 0x4
+GLIBC_2.2 __cyg_profile_func_enter F
+GLIBC_2.2 __cyg_profile_func_exit F
+GLIBC_2.2 __endmntent F
+GLIBC_2.2 __fbufsize F
+GLIBC_2.2 __flbf F
+GLIBC_2.2 __fpending F
+GLIBC_2.2 __fpurge F
+GLIBC_2.2 __freadable F
+GLIBC_2.2 __freading F
+GLIBC_2.2 __fsetlocking F
+GLIBC_2.2 __fwritable F
+GLIBC_2.2 __fwriting F
+GLIBC_2.2 __fxstat64 F
+GLIBC_2.2 __getmntent_r F
+GLIBC_2.2 __lxstat64 F
+GLIBC_2.2 __nl_langinfo_l F
+GLIBC_2.2 __open64 F
+GLIBC_2.2 __res_init F
+GLIBC_2.2 __res_nclose F
+GLIBC_2.2 __res_ninit F
+GLIBC_2.2 __res_state F
+GLIBC_2.2 __setmntent F
+GLIBC_2.2 __statfs F
+GLIBC_2.2 __strndup F
+GLIBC_2.2 __sysconf F
+GLIBC_2.2 __sysctl F
+GLIBC_2.2 __wctrans_l F
+GLIBC_2.2 __woverflow F
+GLIBC_2.2 __wuflow F
+GLIBC_2.2 __wunderflow F
+GLIBC_2.2 __xpg_sigpause F
+GLIBC_2.2 __xstat64 F
+GLIBC_2.2 _flushlbf F
+GLIBC_2.2 _res_hconf D 0x30
+GLIBC_2.2 alphasort64 F
+GLIBC_2.2 bind_textdomain_codeset F
+GLIBC_2.2 dcngettext F
+GLIBC_2.2 dngettext F
+GLIBC_2.2 fgetpos F
+GLIBC_2.2 fgetpos64 F
+GLIBC_2.2 fgetwc F
+GLIBC_2.2 fgetwc_unlocked F
+GLIBC_2.2 fgetws F
+GLIBC_2.2 fgetws_unlocked F
+GLIBC_2.2 fmemopen F
+GLIBC_2.2 fopencookie F
+GLIBC_2.2 fputwc F
+GLIBC_2.2 fputwc_unlocked F
+GLIBC_2.2 fputws F
+GLIBC_2.2 fputws_unlocked F
+GLIBC_2.2 fsetpos F
+GLIBC_2.2 fsetpos64 F
+GLIBC_2.2 fwide F
+GLIBC_2.2 fwprintf F
+GLIBC_2.2 fwscanf F
+GLIBC_2.2 getdirentries64 F
+GLIBC_2.2 getloadavg F
+GLIBC_2.2 getrlimit F
+GLIBC_2.2 getrlimit64 F
+GLIBC_2.2 getwc F
+GLIBC_2.2 getwc_unlocked F
+GLIBC_2.2 getwchar F
+GLIBC_2.2 getwchar_unlocked F
+GLIBC_2.2 glob64 F
+GLIBC_2.2 iruserok_af F
+GLIBC_2.2 localeconv F
+GLIBC_2.2 mcheck_check_all F
+GLIBC_2.2 mcheck_pedantic F
+GLIBC_2.2 memrchr F
+GLIBC_2.2 mincore F
+GLIBC_2.2 mkdtemp F
+GLIBC_2.2 mkstemp64 F
+GLIBC_2.2 moncontrol F
+GLIBC_2.2 msgctl F
+GLIBC_2.2 ngettext F
+GLIBC_2.2 posix_fadvise F
+GLIBC_2.2 posix_fadvise64 F
+GLIBC_2.2 posix_fallocate F
+GLIBC_2.2 posix_fallocate64 F
+GLIBC_2.2 posix_madvise F
+GLIBC_2.2 posix_memalign F
+GLIBC_2.2 posix_spawn F
+GLIBC_2.2 posix_spawn_file_actions_addclose F
+GLIBC_2.2 posix_spawn_file_actions_adddup2 F
+GLIBC_2.2 posix_spawn_file_actions_addopen F
+GLIBC_2.2 posix_spawn_file_actions_destroy F
+GLIBC_2.2 posix_spawn_file_actions_init F
+GLIBC_2.2 posix_spawnattr_destroy F
+GLIBC_2.2 posix_spawnattr_getflags F
+GLIBC_2.2 posix_spawnattr_getpgroup F
+GLIBC_2.2 posix_spawnattr_getschedparam F
+GLIBC_2.2 posix_spawnattr_getschedpolicy F
+GLIBC_2.2 posix_spawnattr_getsigdefault F
+GLIBC_2.2 posix_spawnattr_getsigmask F
+GLIBC_2.2 posix_spawnattr_init F
+GLIBC_2.2 posix_spawnattr_setflags F
+GLIBC_2.2 posix_spawnattr_setpgroup F
+GLIBC_2.2 posix_spawnattr_setschedparam F
+GLIBC_2.2 posix_spawnattr_setschedpolicy F
+GLIBC_2.2 posix_spawnattr_setsigdefault F
+GLIBC_2.2 posix_spawnattr_setsigmask F
+GLIBC_2.2 posix_spawnp F
+GLIBC_2.2 putwc F
+GLIBC_2.2 putwc_unlocked F
+GLIBC_2.2 putwchar F
+GLIBC_2.2 putwchar_unlocked F
+GLIBC_2.2 rcmd_af F
+GLIBC_2.2 readdir64 F
+GLIBC_2.2 readdir64_r F
+GLIBC_2.2 rexec_af F
+GLIBC_2.2 rresvport_af F
+GLIBC_2.2 ruserok_af F
+GLIBC_2.2 scandir64 F
+GLIBC_2.2 semctl F
+GLIBC_2.2 setrlimit F
+GLIBC_2.2 shmctl F
+GLIBC_2.2 svc_getreq_common F
+GLIBC_2.2 svc_getreq_poll F
+GLIBC_2.2 svc_max_pollfd D 0x4
+GLIBC_2.2 svc_pollfd D 0x4
+GLIBC_2.2 swprintf F
+GLIBC_2.2 swscanf F
+GLIBC_2.2 ungetwc F
+GLIBC_2.2 versionsort64 F
+GLIBC_2.2 vfwprintf F
+GLIBC_2.2 vfwscanf F
+GLIBC_2.2 vswprintf F
+GLIBC_2.2 vswscanf F
+GLIBC_2.2 vwprintf F
+GLIBC_2.2 vwscanf F
+GLIBC_2.2 wcschrnul F
+GLIBC_2.2 wcsftime F
+GLIBC_2.2 wmempcpy F
+GLIBC_2.2 wprintf F
+GLIBC_2.2 wscanf F
+GLIBC_2.2.1 GLIBC_2.2.1 A
+GLIBC_2.2.1 pivot_root F
+GLIBC_2.2.1 posix_openpt F
+GLIBC_2.2.2 GLIBC_2.2.2 A
+GLIBC_2.2.2 __nss_hostname_digits_dots F
+GLIBC_2.2.3 GLIBC_2.2.3 A
+GLIBC_2.2.3 __rpc_thread_createerr F
+GLIBC_2.2.3 __rpc_thread_svc_fdset F
+GLIBC_2.2.3 __rpc_thread_svc_max_pollfd F
+GLIBC_2.2.3 __rpc_thread_svc_pollfd F
+GLIBC_2.2.3 fnmatch F
+GLIBC_2.2.3 sprofil F
+GLIBC_2.2.4 GLIBC_2.2.4 A
+GLIBC_2.2.4 dl_iterate_phdr F
+GLIBC_2.2.4 getgrouplist F
+GLIBC_2.2.4 sockatmark F
+GLIBC_2.2.6 GLIBC_2.2.6 A
+GLIBC_2.2.6 __nanosleep 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.3 GLIBC_2.3 A
+GLIBC_2.3 __ctype_b_loc F
+GLIBC_2.3 __ctype_tolower_loc F
+GLIBC_2.3 __ctype_toupper_loc F
+GLIBC_2.3 __isctype F
+GLIBC_2.3 __strftime_l F
+GLIBC_2.3 __uselocale F
+GLIBC_2.3 __wcsftime_l F
+GLIBC_2.3 _sys_errlist D 0x1f8
+GLIBC_2.3 _sys_nerr D 0x4
+GLIBC_2.3 duplocale F
+GLIBC_2.3 fgetxattr F
+GLIBC_2.3 flistxattr F
+GLIBC_2.3 freeifaddrs F
+GLIBC_2.3 freelocale F
+GLIBC_2.3 fremovexattr F
+GLIBC_2.3 fsetxattr F
+GLIBC_2.3 futimes F
+GLIBC_2.3 getifaddrs F
+GLIBC_2.3 getxattr F
+GLIBC_2.3 isalnum_l F
+GLIBC_2.3 isalpha_l F
+GLIBC_2.3 isblank_l F
+GLIBC_2.3 iscntrl_l F
+GLIBC_2.3 isctype F
+GLIBC_2.3 isdigit_l F
+GLIBC_2.3 isgraph_l F
+GLIBC_2.3 islower_l F
+GLIBC_2.3 isprint_l F
+GLIBC_2.3 ispunct_l F
+GLIBC_2.3 isspace_l F
+GLIBC_2.3 isupper_l F
+GLIBC_2.3 iswalnum_l F
+GLIBC_2.3 iswalpha_l F
+GLIBC_2.3 iswblank_l F
+GLIBC_2.3 iswcntrl_l F
+GLIBC_2.3 iswctype_l F
+GLIBC_2.3 iswdigit_l F
+GLIBC_2.3 iswgraph_l F
+GLIBC_2.3 iswlower_l F
+GLIBC_2.3 iswprint_l F
+GLIBC_2.3 iswpunct_l F
+GLIBC_2.3 iswspace_l F
+GLIBC_2.3 iswupper_l F
+GLIBC_2.3 iswxdigit_l F
+GLIBC_2.3 isxdigit_l F
+GLIBC_2.3 lgetxattr F
+GLIBC_2.3 listxattr F
+GLIBC_2.3 llistxattr F
+GLIBC_2.3 lremovexattr F
+GLIBC_2.3 lsetxattr F
+GLIBC_2.3 lutimes F
+GLIBC_2.3 newlocale F
+GLIBC_2.3 nl_langinfo_l F
+GLIBC_2.3 readahead F
+GLIBC_2.3 realpath F
+GLIBC_2.3 removexattr F
+GLIBC_2.3 sendfile64 F
+GLIBC_2.3 setxattr F
+GLIBC_2.3 strcasecmp_l F
+GLIBC_2.3 strcoll_l F
+GLIBC_2.3 strfmon_l F
+GLIBC_2.3 strftime_l F
+GLIBC_2.3 strncasecmp_l F
+GLIBC_2.3 strtod_l F
+GLIBC_2.3 strtof_l F
+GLIBC_2.3 strtol_l F
+GLIBC_2.3 strtold_l F
+GLIBC_2.3 strtoll_l F
+GLIBC_2.3 strtoul_l F
+GLIBC_2.3 strtoull_l F
+GLIBC_2.3 strxfrm_l F
+GLIBC_2.3 sys_errlist D 0x1f8
+GLIBC_2.3 sys_nerr D 0x4
+GLIBC_2.3 tolower_l F
+GLIBC_2.3 toupper_l F
+GLIBC_2.3 towctrans_l F
+GLIBC_2.3 towlower_l F
+GLIBC_2.3 towupper_l F
+GLIBC_2.3 uselocale F
+GLIBC_2.3 wcscasecmp_l F
+GLIBC_2.3 wcscoll_l F
+GLIBC_2.3 wcsftime_l F
+GLIBC_2.3 wcsncasecmp_l F
+GLIBC_2.3 wcstod_l F
+GLIBC_2.3 wcstof_l F
+GLIBC_2.3 wcstol_l F
+GLIBC_2.3 wcstold_l F
+GLIBC_2.3 wcstoll_l F
+GLIBC_2.3 wcstoul_l F
+GLIBC_2.3 wcstoull_l F
+GLIBC_2.3 wcsxfrm_l F
+GLIBC_2.3 wctrans_l F
+GLIBC_2.3 wctype_l F
+GLIBC_2.3.2 GLIBC_2.3.2 A
+GLIBC_2.3.2 __register_atfork F
+GLIBC_2.3.2 epoll_create F
+GLIBC_2.3.2 epoll_ctl F
+GLIBC_2.3.2 epoll_wait F
+GLIBC_2.3.2 lchmod F
+GLIBC_2.3.2 pthread_cond_broadcast F
+GLIBC_2.3.2 pthread_cond_destroy F
+GLIBC_2.3.2 pthread_cond_init F
+GLIBC_2.3.2 pthread_cond_signal F
+GLIBC_2.3.2 pthread_cond_timedwait F
+GLIBC_2.3.2 pthread_cond_wait F
+GLIBC_2.3.2 strptime_l F
+GLIBC_2.3.3 GLIBC_2.3.3 A
+GLIBC_2.3.3 _sys_siglist D 0x104
+GLIBC_2.3.3 gnu_dev_major F
+GLIBC_2.3.3 gnu_dev_makedev F
+GLIBC_2.3.3 gnu_dev_minor F
+GLIBC_2.3.3 inet6_option_alloc F
+GLIBC_2.3.3 inet6_option_append F
+GLIBC_2.3.3 inet6_option_find F
+GLIBC_2.3.3 inet6_option_init F
+GLIBC_2.3.3 inet6_option_next F
+GLIBC_2.3.3 inet6_option_space F
+GLIBC_2.3.3 nftw F
+GLIBC_2.3.3 nftw64 F
+GLIBC_2.3.3 posix_fadvise64 F
+GLIBC_2.3.3 posix_fallocate64 F
+GLIBC_2.3.3 remap_file_pages F
+GLIBC_2.3.3 sched_getaffinity F
+GLIBC_2.3.3 sched_setaffinity F
+GLIBC_2.3.3 semtimedop F
+GLIBC_2.3.3 sys_sigabbrev D 0x104
+GLIBC_2.3.3 sys_siglist D 0x104
+GLIBC_2.3.4 GLIBC_2.3.4 A
+GLIBC_2.3.4 __chk_fail F
+GLIBC_2.3.4 __fprintf_chk F
+GLIBC_2.3.4 __gets_chk F
+GLIBC_2.3.4 __memcpy_chk F
+GLIBC_2.3.4 __memmove_chk F
+GLIBC_2.3.4 __mempcpy_chk F
+GLIBC_2.3.4 __memset_chk F
+GLIBC_2.3.4 __printf_chk F
+GLIBC_2.3.4 __snprintf_chk F
+GLIBC_2.3.4 __sprintf_chk F
+GLIBC_2.3.4 __stpcpy_chk F
+GLIBC_2.3.4 __strcat_chk F
+GLIBC_2.3.4 __strcpy_chk F
+GLIBC_2.3.4 __strncat_chk F
+GLIBC_2.3.4 __strncpy_chk F
+GLIBC_2.3.4 __vfprintf_chk F
+GLIBC_2.3.4 __vprintf_chk F
+GLIBC_2.3.4 __vsnprintf_chk F
+GLIBC_2.3.4 __vsprintf_chk F
+GLIBC_2.3.4 __xpg_strerror_r F
+GLIBC_2.3.4 getipv4sourcefilter F
+GLIBC_2.3.4 getsourcefilter F
+GLIBC_2.3.4 regexec F
+GLIBC_2.3.4 sched_getaffinity F
+GLIBC_2.3.4 sched_setaffinity F
+GLIBC_2.3.4 setipv4sourcefilter F
+GLIBC_2.3.4 setsourcefilter F
+GLIBC_2.3.4 vm86 F
+GLIBC_2.3.4 xdr_quad_t F
+GLIBC_2.3.4 xdr_u_quad_t F
+GLIBC_2.4 GLIBC_2.4 A
+GLIBC_2.4 __confstr_chk 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 __fwprintf_chk F
+GLIBC_2.4 __fxstatat F
+GLIBC_2.4 __fxstatat64 F
+GLIBC_2.4 __getcwd_chk 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 __getwd_chk F
+GLIBC_2.4 __mbsnrtowcs_chk F
+GLIBC_2.4 __mbsrtowcs_chk F
+GLIBC_2.4 __mbstowcs_chk F
+GLIBC_2.4 __pread64_chk F
+GLIBC_2.4 __pread_chk F
+GLIBC_2.4 __ptsname_r_chk F
+GLIBC_2.4 __read_chk F
+GLIBC_2.4 __readlink_chk F
+GLIBC_2.4 __realpath_chk F
+GLIBC_2.4 __recv_chk F
+GLIBC_2.4 __recvfrom_chk F
+GLIBC_2.4 __stack_chk_fail F
+GLIBC_2.4 __stpncpy_chk F
+GLIBC_2.4 __swprintf_chk F
+GLIBC_2.4 __syslog_chk F
+GLIBC_2.4 __ttyname_r_chk F
+GLIBC_2.4 __vfwprintf_chk F
+GLIBC_2.4 __vswprintf_chk F
+GLIBC_2.4 __vsyslog_chk F
+GLIBC_2.4 __vwprintf_chk F
+GLIBC_2.4 __wcpcpy_chk F
+GLIBC_2.4 __wcpncpy_chk F
+GLIBC_2.4 __wcrtomb_chk F
+GLIBC_2.4 __wcscat_chk F
+GLIBC_2.4 __wcscpy_chk 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 __wcstombs_chk F
+GLIBC_2.4 __wctomb_chk 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 __wprintf_chk F
+GLIBC_2.4 __xmknodat F
+GLIBC_2.4 _sys_errlist D 0x210
+GLIBC_2.4 _sys_nerr D 0x4
+GLIBC_2.4 eaccess F
+GLIBC_2.4 faccessat F
+GLIBC_2.4 fchmodat F
+GLIBC_2.4 fchownat F
+GLIBC_2.4 fdopendir F
+GLIBC_2.4 futimesat F
+GLIBC_2.4 inotify_add_watch F
+GLIBC_2.4 inotify_init F
+GLIBC_2.4 inotify_rm_watch F
+GLIBC_2.4 linkat F
+GLIBC_2.4 mkdirat F
+GLIBC_2.4 mkfifoat F
+GLIBC_2.4 open_wmemstream F
+GLIBC_2.4 openat F
+GLIBC_2.4 openat64 F
+GLIBC_2.4 ppoll F
+GLIBC_2.4 readlinkat F
+GLIBC_2.4 renameat F
+GLIBC_2.4 symlinkat F
+GLIBC_2.4 sys_errlist D 0x210
+GLIBC_2.4 sys_nerr D 0x4
+GLIBC_2.4 unlinkat F
+GLIBC_2.4 unshare 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 __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/i386/libcrypt.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/i386/libcrypt.abilist
new file mode 100644
index 0000000000..4db2639336
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/libcrypt.abilist
@@ -0,0 +1,8 @@
+GLIBC_2.0 GLIBC_2.0 A
+GLIBC_2.0 crypt F
+GLIBC_2.0 crypt_r F
+GLIBC_2.0 encrypt F
+GLIBC_2.0 encrypt_r F
+GLIBC_2.0 fcrypt F
+GLIBC_2.0 setkey F
+GLIBC_2.0 setkey_r F
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/libdl.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/i386/libdl.abilist
new file mode 100644
index 0000000000..5536f6e0a9
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/libdl.abilist
@@ -0,0 +1,14 @@
+GLIBC_2.0 GLIBC_2.0 A
+GLIBC_2.0 dladdr F
+GLIBC_2.0 dlclose F
+GLIBC_2.0 dlerror F
+GLIBC_2.0 dlopen F
+GLIBC_2.0 dlsym F
+GLIBC_2.1 GLIBC_2.1 A
+GLIBC_2.1 dlopen F
+GLIBC_2.1 dlvsym F
+GLIBC_2.3.3 GLIBC_2.3.3 A
+GLIBC_2.3.3 dladdr1 F
+GLIBC_2.3.3 dlinfo F
+GLIBC_2.3.4 GLIBC_2.3.4 A
+GLIBC_2.3.4 dlmopen F
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/libm.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/i386/libm.abilist
new file mode 100644
index 0000000000..761e4420f9
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/libm.abilist
@@ -0,0 +1,476 @@
+GLIBC_2.0 GLIBC_2.0 A
+GLIBC_2.0 _LIB_VERSION D 0x4
+GLIBC_2.0 acos F
+GLIBC_2.0 acosf F
+GLIBC_2.0 acosh F
+GLIBC_2.0 acoshf F
+GLIBC_2.0 acoshl F
+GLIBC_2.0 acosl F
+GLIBC_2.0 asin F
+GLIBC_2.0 asinf F
+GLIBC_2.0 asinh F
+GLIBC_2.0 asinhf F
+GLIBC_2.0 asinhl F
+GLIBC_2.0 asinl F
+GLIBC_2.0 atan F
+GLIBC_2.0 atan2 F
+GLIBC_2.0 atan2f F
+GLIBC_2.0 atan2l F
+GLIBC_2.0 atanf F
+GLIBC_2.0 atanh F
+GLIBC_2.0 atanhf F
+GLIBC_2.0 atanhl F
+GLIBC_2.0 atanl F
+GLIBC_2.0 cbrt F
+GLIBC_2.0 cbrtf F
+GLIBC_2.0 cbrtl F
+GLIBC_2.0 ceil F
+GLIBC_2.0 ceilf F
+GLIBC_2.0 ceill F
+GLIBC_2.0 copysign F
+GLIBC_2.0 copysignf F
+GLIBC_2.0 copysignl F
+GLIBC_2.0 cos F
+GLIBC_2.0 cosf F
+GLIBC_2.0 cosh F
+GLIBC_2.0 coshf F
+GLIBC_2.0 coshl F
+GLIBC_2.0 cosl F
+GLIBC_2.0 drem F
+GLIBC_2.0 dremf F
+GLIBC_2.0 dreml F
+GLIBC_2.0 erf F
+GLIBC_2.0 erfc F
+GLIBC_2.0 erfcf F
+GLIBC_2.0 erfcl F
+GLIBC_2.0 erff F
+GLIBC_2.0 erfl F
+GLIBC_2.0 exp F
+GLIBC_2.0 expf F
+GLIBC_2.0 expl F
+GLIBC_2.0 expm1 F
+GLIBC_2.0 expm1f F
+GLIBC_2.0 expm1l F
+GLIBC_2.0 fabs F
+GLIBC_2.0 fabsf F
+GLIBC_2.0 fabsl F
+GLIBC_2.0 finite F
+GLIBC_2.0 finitef F
+GLIBC_2.0 finitel F
+GLIBC_2.0 floor F
+GLIBC_2.0 floorf F
+GLIBC_2.0 floorl F
+GLIBC_2.0 fmod F
+GLIBC_2.0 fmodf F
+GLIBC_2.0 fmodl F
+GLIBC_2.0 frexp F
+GLIBC_2.0 frexpf F
+GLIBC_2.0 frexpl F
+GLIBC_2.0 gamma F
+GLIBC_2.0 gammaf F
+GLIBC_2.0 gammal F
+GLIBC_2.0 hypot F
+GLIBC_2.0 hypotf F
+GLIBC_2.0 hypotl F
+GLIBC_2.0 ilogb F
+GLIBC_2.0 ilogbf F
+GLIBC_2.0 ilogbl F
+GLIBC_2.0 j0 F
+GLIBC_2.0 j0f F
+GLIBC_2.0 j0l F
+GLIBC_2.0 j1 F
+GLIBC_2.0 j1f F
+GLIBC_2.0 j1l F
+GLIBC_2.0 jn F
+GLIBC_2.0 jnf F
+GLIBC_2.0 jnl F
+GLIBC_2.0 ldexp F
+GLIBC_2.0 ldexpf F
+GLIBC_2.0 ldexpl F
+GLIBC_2.0 lgamma F
+GLIBC_2.0 lgamma_r F
+GLIBC_2.0 lgammaf F
+GLIBC_2.0 lgammaf_r F
+GLIBC_2.0 lgammal F
+GLIBC_2.0 lgammal_r F
+GLIBC_2.0 log F
+GLIBC_2.0 log10 F
+GLIBC_2.0 log10f F
+GLIBC_2.0 log10l F
+GLIBC_2.0 log1p F
+GLIBC_2.0 log1pf F
+GLIBC_2.0 log1pl F
+GLIBC_2.0 logb F
+GLIBC_2.0 logbf F
+GLIBC_2.0 logbl F
+GLIBC_2.0 logf F
+GLIBC_2.0 logl F
+GLIBC_2.0 matherr F
+GLIBC_2.0 modf F
+GLIBC_2.0 modff F
+GLIBC_2.0 modfl F
+GLIBC_2.0 nextafter F
+GLIBC_2.0 nextafterf F
+GLIBC_2.0 nextafterl F
+GLIBC_2.0 pow F
+GLIBC_2.0 powf F
+GLIBC_2.0 powl F
+GLIBC_2.0 remainder F
+GLIBC_2.0 remainderf F
+GLIBC_2.0 remainderl F
+GLIBC_2.0 rint F
+GLIBC_2.0 rintf F
+GLIBC_2.0 rintl F
+GLIBC_2.0 scalb F
+GLIBC_2.0 scalbf F
+GLIBC_2.0 scalbl F
+GLIBC_2.0 scalbn F
+GLIBC_2.0 scalbnf F
+GLIBC_2.0 scalbnl F
+GLIBC_2.0 signgam D 0x4
+GLIBC_2.0 significand F
+GLIBC_2.0 significandf F
+GLIBC_2.0 significandl F
+GLIBC_2.0 sin F
+GLIBC_2.0 sinf F
+GLIBC_2.0 sinh F
+GLIBC_2.0 sinhf F
+GLIBC_2.0 sinhl F
+GLIBC_2.0 sinl F
+GLIBC_2.0 sqrt F
+GLIBC_2.0 sqrtf F
+GLIBC_2.0 sqrtl F
+GLIBC_2.0 tan F
+GLIBC_2.0 tanf F
+GLIBC_2.0 tanh F
+GLIBC_2.0 tanhf F
+GLIBC_2.0 tanhl F
+GLIBC_2.0 tanl F
+GLIBC_2.0 y0 F
+GLIBC_2.0 y0f F
+GLIBC_2.0 y0l F
+GLIBC_2.0 y1 F
+GLIBC_2.0 y1f F
+GLIBC_2.0 y1l F
+GLIBC_2.0 yn F
+GLIBC_2.0 ynf F
+GLIBC_2.0 ynl F
+GLIBC_2.1 GLIBC_2.1 A
+GLIBC_2.1 __clog10 F
+GLIBC_2.1 __clog10f F
+GLIBC_2.1 __clog10l F
+GLIBC_2.1 __finite F
+GLIBC_2.1 __finitef F
+GLIBC_2.1 __finitel F
+GLIBC_2.1 __fpclassify F
+GLIBC_2.1 __fpclassifyf F
+GLIBC_2.1 __fpclassifyl F
+GLIBC_2.1 __signbit F
+GLIBC_2.1 __signbitf F
+GLIBC_2.1 __signbitl F
+GLIBC_2.1 cabs F
+GLIBC_2.1 cabsf F
+GLIBC_2.1 cabsl F
+GLIBC_2.1 cacos F
+GLIBC_2.1 cacosf F
+GLIBC_2.1 cacosh F
+GLIBC_2.1 cacoshf F
+GLIBC_2.1 cacoshl F
+GLIBC_2.1 cacosl F
+GLIBC_2.1 carg F
+GLIBC_2.1 cargf F
+GLIBC_2.1 cargl F
+GLIBC_2.1 casin F
+GLIBC_2.1 casinf F
+GLIBC_2.1 casinh F
+GLIBC_2.1 casinhf F
+GLIBC_2.1 casinhl F
+GLIBC_2.1 casinl F
+GLIBC_2.1 catan F
+GLIBC_2.1 catanf F
+GLIBC_2.1 catanh F
+GLIBC_2.1 catanhf F
+GLIBC_2.1 catanhl F
+GLIBC_2.1 catanl F
+GLIBC_2.1 ccos F
+GLIBC_2.1 ccosf F
+GLIBC_2.1 ccosh F
+GLIBC_2.1 ccoshf F
+GLIBC_2.1 ccoshl F
+GLIBC_2.1 ccosl F
+GLIBC_2.1 cexp F
+GLIBC_2.1 cexpf F
+GLIBC_2.1 cexpl F
+GLIBC_2.1 cimag F
+GLIBC_2.1 cimagf F
+GLIBC_2.1 cimagl F
+GLIBC_2.1 clog F
+GLIBC_2.1 clog10 F
+GLIBC_2.1 clog10f F
+GLIBC_2.1 clog10l F
+GLIBC_2.1 clogf F
+GLIBC_2.1 clogl F
+GLIBC_2.1 conj F
+GLIBC_2.1 conjf F
+GLIBC_2.1 conjl F
+GLIBC_2.1 cpow F
+GLIBC_2.1 cpowf F
+GLIBC_2.1 cpowl F
+GLIBC_2.1 cproj F
+GLIBC_2.1 cprojf F
+GLIBC_2.1 cprojl F
+GLIBC_2.1 creal F
+GLIBC_2.1 crealf F
+GLIBC_2.1 creall F
+GLIBC_2.1 csin F
+GLIBC_2.1 csinf F
+GLIBC_2.1 csinh F
+GLIBC_2.1 csinhf F
+GLIBC_2.1 csinhl F
+GLIBC_2.1 csinl F
+GLIBC_2.1 csqrt F
+GLIBC_2.1 csqrtf F
+GLIBC_2.1 csqrtl F
+GLIBC_2.1 ctan F
+GLIBC_2.1 ctanf F
+GLIBC_2.1 ctanh F
+GLIBC_2.1 ctanhf F
+GLIBC_2.1 ctanhl F
+GLIBC_2.1 ctanl F
+GLIBC_2.1 exp10 F
+GLIBC_2.1 exp10f F
+GLIBC_2.1 exp10l F
+GLIBC_2.1 exp2 F
+GLIBC_2.1 exp2f F
+GLIBC_2.1 exp2l F
+GLIBC_2.1 fdim F
+GLIBC_2.1 fdimf F
+GLIBC_2.1 fdiml F
+GLIBC_2.1 feclearexcept F
+GLIBC_2.1 fegetenv F
+GLIBC_2.1 fegetexceptflag F
+GLIBC_2.1 fegetround F
+GLIBC_2.1 feholdexcept F
+GLIBC_2.1 feraiseexcept F
+GLIBC_2.1 fesetenv F
+GLIBC_2.1 fesetexceptflag F
+GLIBC_2.1 fesetround F
+GLIBC_2.1 fetestexcept F
+GLIBC_2.1 feupdateenv F
+GLIBC_2.1 fma F
+GLIBC_2.1 fmaf F
+GLIBC_2.1 fmal F
+GLIBC_2.1 fmax F
+GLIBC_2.1 fmaxf F
+GLIBC_2.1 fmaxl F
+GLIBC_2.1 fmin F
+GLIBC_2.1 fminf F
+GLIBC_2.1 fminl F
+GLIBC_2.1 llrint F
+GLIBC_2.1 llrintf F
+GLIBC_2.1 llrintl F
+GLIBC_2.1 llround F
+GLIBC_2.1 llroundf F
+GLIBC_2.1 llroundl F
+GLIBC_2.1 log2 F
+GLIBC_2.1 log2f F
+GLIBC_2.1 log2l F
+GLIBC_2.1 lrint F
+GLIBC_2.1 lrintf F
+GLIBC_2.1 lrintl F
+GLIBC_2.1 lround F
+GLIBC_2.1 lroundf F
+GLIBC_2.1 lroundl F
+GLIBC_2.1 nan F
+GLIBC_2.1 nanf F
+GLIBC_2.1 nanl F
+GLIBC_2.1 nearbyint F
+GLIBC_2.1 nearbyintf F
+GLIBC_2.1 nearbyintl F
+GLIBC_2.1 nexttoward F
+GLIBC_2.1 nexttowardf F
+GLIBC_2.1 nexttowardl F
+GLIBC_2.1 pow10 F
+GLIBC_2.1 pow10f F
+GLIBC_2.1 pow10l F
+GLIBC_2.1 remquo F
+GLIBC_2.1 remquof F
+GLIBC_2.1 remquol F
+GLIBC_2.1 round F
+GLIBC_2.1 roundf F
+GLIBC_2.1 roundl F
+GLIBC_2.1 scalbln F
+GLIBC_2.1 scalblnf F
+GLIBC_2.1 scalblnl F
+GLIBC_2.1 sincos F
+GLIBC_2.1 sincosf F
+GLIBC_2.1 sincosl F
+GLIBC_2.1 tgamma F
+GLIBC_2.1 tgammaf F
+GLIBC_2.1 tgammal F
+GLIBC_2.1 trunc F
+GLIBC_2.1 truncf F
+GLIBC_2.1 truncl F
+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 __acoshl_finite F
+GLIBC_2.15 __acosl_finite F
+GLIBC_2.15 __asin_finite F
+GLIBC_2.15 __asinf_finite F
+GLIBC_2.15 __asinl_finite F
+GLIBC_2.15 __atan2_finite F
+GLIBC_2.15 __atan2f_finite F
+GLIBC_2.15 __atan2l_finite F
+GLIBC_2.15 __atanh_finite F
+GLIBC_2.15 __atanhf_finite F
+GLIBC_2.15 __atanhl_finite F
+GLIBC_2.15 __cosh_finite F
+GLIBC_2.15 __coshf_finite F
+GLIBC_2.15 __coshl_finite F
+GLIBC_2.15 __exp10_finite F
+GLIBC_2.15 __exp10f_finite F
+GLIBC_2.15 __exp10l_finite F
+GLIBC_2.15 __exp2_finite F
+GLIBC_2.15 __exp2f_finite F
+GLIBC_2.15 __exp2l_finite F
+GLIBC_2.15 __exp_finite F
+GLIBC_2.15 __expf_finite F
+GLIBC_2.15 __expl_finite F
+GLIBC_2.15 __fmod_finite F
+GLIBC_2.15 __fmodf_finite F
+GLIBC_2.15 __fmodl_finite F
+GLIBC_2.15 __gamma_r_finite F
+GLIBC_2.15 __gammaf_r_finite F
+GLIBC_2.15 __gammal_r_finite F
+GLIBC_2.15 __hypot_finite F
+GLIBC_2.15 __hypotf_finite F
+GLIBC_2.15 __hypotl_finite F
+GLIBC_2.15 __j0_finite F
+GLIBC_2.15 __j0f_finite F
+GLIBC_2.15 __j0l_finite F
+GLIBC_2.15 __j1_finite F
+GLIBC_2.15 __j1f_finite F
+GLIBC_2.15 __j1l_finite F
+GLIBC_2.15 __jn_finite F
+GLIBC_2.15 __jnf_finite F
+GLIBC_2.15 __jnl_finite F
+GLIBC_2.15 __lgamma_r_finite F
+GLIBC_2.15 __lgammaf_r_finite F
+GLIBC_2.15 __lgammal_r_finite F
+GLIBC_2.15 __log10_finite F
+GLIBC_2.15 __log10f_finite F
+GLIBC_2.15 __log10l_finite F
+GLIBC_2.15 __log2_finite F
+GLIBC_2.15 __log2f_finite F
+GLIBC_2.15 __log2l_finite F
+GLIBC_2.15 __log_finite F
+GLIBC_2.15 __logf_finite F
+GLIBC_2.15 __logl_finite F
+GLIBC_2.15 __pow_finite F
+GLIBC_2.15 __powf_finite F
+GLIBC_2.15 __powl_finite F
+GLIBC_2.15 __remainder_finite F
+GLIBC_2.15 __remainderf_finite F
+GLIBC_2.15 __remainderl_finite F
+GLIBC_2.15 __scalb_finite F
+GLIBC_2.15 __scalbf_finite F
+GLIBC_2.15 __scalbl_finite F
+GLIBC_2.15 __sinh_finite F
+GLIBC_2.15 __sinhf_finite F
+GLIBC_2.15 __sinhl_finite F
+GLIBC_2.15 __sqrt_finite F
+GLIBC_2.15 __sqrtf_finite F
+GLIBC_2.15 __sqrtl_finite F
+GLIBC_2.15 __y0_finite F
+GLIBC_2.15 __y0f_finite F
+GLIBC_2.15 __y0l_finite F
+GLIBC_2.15 __y1_finite F
+GLIBC_2.15 __y1f_finite F
+GLIBC_2.15 __y1l_finite F
+GLIBC_2.15 __yn_finite F
+GLIBC_2.15 __ynf_finite F
+GLIBC_2.15 __ynl_finite F
+GLIBC_2.18 GLIBC_2.18 A
+GLIBC_2.18 __issignaling F
+GLIBC_2.18 __issignalingf F
+GLIBC_2.18 __issignalingl F
+GLIBC_2.2 GLIBC_2.2 A
+GLIBC_2.2 __expl F
+GLIBC_2.2 __expm1l F
+GLIBC_2.2 feclearexcept F
+GLIBC_2.2 fedisableexcept F
+GLIBC_2.2 feenableexcept F
+GLIBC_2.2 fegetenv F
+GLIBC_2.2 fegetexcept F
+GLIBC_2.2 fegetexceptflag F
+GLIBC_2.2 feraiseexcept F
+GLIBC_2.2 fesetenv F
+GLIBC_2.2 fesetexceptflag F
+GLIBC_2.2 feupdateenv 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 __iscanonicall F
+GLIBC_2.25 __iseqsig F
+GLIBC_2.25 __iseqsigf F
+GLIBC_2.25 __iseqsigl 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
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/libnsl.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/i386/libnsl.abilist
new file mode 100644
index 0000000000..a23db2aeaf
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/libnsl.abilist
@@ -0,0 +1,124 @@
+GLIBC_2.0 GLIBC_2.0 A
+GLIBC_2.0 __yp_check F
+GLIBC_2.0 xdr_domainname F
+GLIBC_2.0 xdr_keydat F
+GLIBC_2.0 xdr_mapname F
+GLIBC_2.0 xdr_peername F
+GLIBC_2.0 xdr_valdat F
+GLIBC_2.0 xdr_yp_buf F
+GLIBC_2.0 xdr_ypbind_binding F
+GLIBC_2.0 xdr_ypbind_resp F
+GLIBC_2.0 xdr_ypbind_resptype F
+GLIBC_2.0 xdr_ypbind_setdom F
+GLIBC_2.0 xdr_ypdelete_args F
+GLIBC_2.0 xdr_ypmap_parms F
+GLIBC_2.0 xdr_ypmaplist F
+GLIBC_2.0 xdr_yppush_status F
+GLIBC_2.0 xdr_yppushresp_xfr F
+GLIBC_2.0 xdr_ypreq_key F
+GLIBC_2.0 xdr_ypreq_nokey F
+GLIBC_2.0 xdr_ypreq_xfr F
+GLIBC_2.0 xdr_ypresp_all F
+GLIBC_2.0 xdr_ypresp_key_val F
+GLIBC_2.0 xdr_ypresp_maplist F
+GLIBC_2.0 xdr_ypresp_master F
+GLIBC_2.0 xdr_ypresp_order F
+GLIBC_2.0 xdr_ypresp_val F
+GLIBC_2.0 xdr_ypresp_xfr F
+GLIBC_2.0 xdr_ypstat F
+GLIBC_2.0 xdr_ypupdate_args F
+GLIBC_2.0 xdr_ypxfrstat F
+GLIBC_2.0 yp_all F
+GLIBC_2.0 yp_bind F
+GLIBC_2.0 yp_first F
+GLIBC_2.0 yp_get_default_domain F
+GLIBC_2.0 yp_maplist F
+GLIBC_2.0 yp_master F
+GLIBC_2.0 yp_match F
+GLIBC_2.0 yp_next F
+GLIBC_2.0 yp_order F
+GLIBC_2.0 yp_unbind F
+GLIBC_2.0 yp_update F
+GLIBC_2.0 ypbinderr_string F
+GLIBC_2.0 yperr_string F
+GLIBC_2.0 ypprot_err F
+GLIBC_2.1 GLIBC_2.1 A
+GLIBC_2.1 __free_fdresult F
+GLIBC_2.1 __nis_default_access F
+GLIBC_2.1 __nis_default_group F
+GLIBC_2.1 __nis_default_owner F
+GLIBC_2.1 __nis_default_ttl F
+GLIBC_2.1 __nis_finddirectory F
+GLIBC_2.1 __nis_hash F
+GLIBC_2.1 __nisbind_connect F
+GLIBC_2.1 __nisbind_create F
+GLIBC_2.1 __nisbind_destroy F
+GLIBC_2.1 __nisbind_next F
+GLIBC_2.1 nis_add F
+GLIBC_2.1 nis_add_entry F
+GLIBC_2.1 nis_addmember F
+GLIBC_2.1 nis_checkpoint F
+GLIBC_2.1 nis_clone_directory F
+GLIBC_2.1 nis_clone_object F
+GLIBC_2.1 nis_clone_result F
+GLIBC_2.1 nis_creategroup F
+GLIBC_2.1 nis_destroy_object F
+GLIBC_2.1 nis_destroygroup F
+GLIBC_2.1 nis_dir_cmp F
+GLIBC_2.1 nis_domain_of F
+GLIBC_2.1 nis_domain_of_r F
+GLIBC_2.1 nis_first_entry F
+GLIBC_2.1 nis_free_directory F
+GLIBC_2.1 nis_free_object F
+GLIBC_2.1 nis_free_request F
+GLIBC_2.1 nis_freenames F
+GLIBC_2.1 nis_freeresult F
+GLIBC_2.1 nis_freeservlist F
+GLIBC_2.1 nis_freetags F
+GLIBC_2.1 nis_getnames F
+GLIBC_2.1 nis_getservlist F
+GLIBC_2.1 nis_ismember F
+GLIBC_2.1 nis_leaf_of F
+GLIBC_2.1 nis_leaf_of_r F
+GLIBC_2.1 nis_lerror F
+GLIBC_2.1 nis_list F
+GLIBC_2.1 nis_local_directory F
+GLIBC_2.1 nis_local_group F
+GLIBC_2.1 nis_local_host F
+GLIBC_2.1 nis_local_principal F
+GLIBC_2.1 nis_lookup F
+GLIBC_2.1 nis_mkdir F
+GLIBC_2.1 nis_modify F
+GLIBC_2.1 nis_modify_entry F
+GLIBC_2.1 nis_name_of F
+GLIBC_2.1 nis_name_of_r F
+GLIBC_2.1 nis_next_entry F
+GLIBC_2.1 nis_perror F
+GLIBC_2.1 nis_ping F
+GLIBC_2.1 nis_print_directory F
+GLIBC_2.1 nis_print_entry F
+GLIBC_2.1 nis_print_group F
+GLIBC_2.1 nis_print_group_entry F
+GLIBC_2.1 nis_print_link F
+GLIBC_2.1 nis_print_object F
+GLIBC_2.1 nis_print_result F
+GLIBC_2.1 nis_print_rights F
+GLIBC_2.1 nis_print_table F
+GLIBC_2.1 nis_read_obj F
+GLIBC_2.1 nis_remove F
+GLIBC_2.1 nis_remove_entry F
+GLIBC_2.1 nis_removemember F
+GLIBC_2.1 nis_rmdir F
+GLIBC_2.1 nis_servstate F
+GLIBC_2.1 nis_sperrno F
+GLIBC_2.1 nis_sperror F
+GLIBC_2.1 nis_sperror_r F
+GLIBC_2.1 nis_stats F
+GLIBC_2.1 nis_verifygroup F
+GLIBC_2.1 nis_write_obj F
+GLIBC_2.1 readColdStartFile F
+GLIBC_2.1 writeColdStartFile F
+GLIBC_2.1 xdr_cback_data F
+GLIBC_2.1 xdr_obj_p F
+GLIBC_2.2 GLIBC_2.2 A
+GLIBC_2.2 xdr_ypall F
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/i386/libpthread.abilist
new file mode 100644
index 0000000000..8f9c3254be
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/libpthread.abilist
@@ -0,0 +1,257 @@
+GLIBC_2.0 GLIBC_2.0 A
+GLIBC_2.0 _IO_flockfile F
+GLIBC_2.0 _IO_ftrylockfile F
+GLIBC_2.0 _IO_funlockfile F
+GLIBC_2.0 __close F
+GLIBC_2.0 __connect F
+GLIBC_2.0 __errno_location F
+GLIBC_2.0 __fcntl F
+GLIBC_2.0 __fork F
+GLIBC_2.0 __h_errno_location F
+GLIBC_2.0 __lseek F
+GLIBC_2.0 __open F
+GLIBC_2.0 __pthread_getspecific F
+GLIBC_2.0 __pthread_key_create F
+GLIBC_2.0 __pthread_mutex_destroy F
+GLIBC_2.0 __pthread_mutex_init F
+GLIBC_2.0 __pthread_mutex_lock F
+GLIBC_2.0 __pthread_mutex_trylock F
+GLIBC_2.0 __pthread_mutex_unlock F
+GLIBC_2.0 __pthread_mutexattr_destroy F
+GLIBC_2.0 __pthread_mutexattr_init F
+GLIBC_2.0 __pthread_mutexattr_settype F
+GLIBC_2.0 __pthread_once F
+GLIBC_2.0 __pthread_setspecific F
+GLIBC_2.0 __read F
+GLIBC_2.0 __send F
+GLIBC_2.0 __sigaction F
+GLIBC_2.0 __wait F
+GLIBC_2.0 __write F
+GLIBC_2.0 _pthread_cleanup_pop F
+GLIBC_2.0 _pthread_cleanup_pop_restore F
+GLIBC_2.0 _pthread_cleanup_push F
+GLIBC_2.0 _pthread_cleanup_push_defer F
+GLIBC_2.0 accept F
+GLIBC_2.0 close F
+GLIBC_2.0 connect F
+GLIBC_2.0 fcntl F
+GLIBC_2.0 flockfile F
+GLIBC_2.0 fork F
+GLIBC_2.0 fsync F
+GLIBC_2.0 ftrylockfile F
+GLIBC_2.0 funlockfile F
+GLIBC_2.0 longjmp F
+GLIBC_2.0 lseek F
+GLIBC_2.0 msync F
+GLIBC_2.0 nanosleep F
+GLIBC_2.0 open F
+GLIBC_2.0 pause F
+GLIBC_2.0 pthread_atfork F
+GLIBC_2.0 pthread_attr_destroy F
+GLIBC_2.0 pthread_attr_getdetachstate F
+GLIBC_2.0 pthread_attr_getinheritsched F
+GLIBC_2.0 pthread_attr_getschedparam F
+GLIBC_2.0 pthread_attr_getschedpolicy F
+GLIBC_2.0 pthread_attr_getscope F
+GLIBC_2.0 pthread_attr_init F
+GLIBC_2.0 pthread_attr_setdetachstate F
+GLIBC_2.0 pthread_attr_setinheritsched F
+GLIBC_2.0 pthread_attr_setschedparam F
+GLIBC_2.0 pthread_attr_setschedpolicy F
+GLIBC_2.0 pthread_attr_setscope F
+GLIBC_2.0 pthread_cancel F
+GLIBC_2.0 pthread_cond_broadcast F
+GLIBC_2.0 pthread_cond_destroy F
+GLIBC_2.0 pthread_cond_init F
+GLIBC_2.0 pthread_cond_signal F
+GLIBC_2.0 pthread_cond_timedwait F
+GLIBC_2.0 pthread_cond_wait F
+GLIBC_2.0 pthread_condattr_destroy F
+GLIBC_2.0 pthread_condattr_init F
+GLIBC_2.0 pthread_create F
+GLIBC_2.0 pthread_detach F
+GLIBC_2.0 pthread_equal F
+GLIBC_2.0 pthread_exit F
+GLIBC_2.0 pthread_getschedparam F
+GLIBC_2.0 pthread_getspecific F
+GLIBC_2.0 pthread_join F
+GLIBC_2.0 pthread_key_create F
+GLIBC_2.0 pthread_key_delete F
+GLIBC_2.0 pthread_kill F
+GLIBC_2.0 pthread_kill_other_threads_np F
+GLIBC_2.0 pthread_mutex_destroy F
+GLIBC_2.0 pthread_mutex_init F
+GLIBC_2.0 pthread_mutex_lock F
+GLIBC_2.0 pthread_mutex_trylock F
+GLIBC_2.0 pthread_mutex_unlock F
+GLIBC_2.0 pthread_mutexattr_destroy F
+GLIBC_2.0 pthread_mutexattr_getkind_np F
+GLIBC_2.0 pthread_mutexattr_init F
+GLIBC_2.0 pthread_mutexattr_setkind_np F
+GLIBC_2.0 pthread_once F
+GLIBC_2.0 pthread_self F
+GLIBC_2.0 pthread_setcancelstate F
+GLIBC_2.0 pthread_setcanceltype F
+GLIBC_2.0 pthread_setschedparam F
+GLIBC_2.0 pthread_setspecific F
+GLIBC_2.0 pthread_sigmask F
+GLIBC_2.0 pthread_testcancel F
+GLIBC_2.0 raise F
+GLIBC_2.0 read F
+GLIBC_2.0 recv F
+GLIBC_2.0 recvfrom F
+GLIBC_2.0 recvmsg F
+GLIBC_2.0 sem_destroy F
+GLIBC_2.0 sem_getvalue F
+GLIBC_2.0 sem_init F
+GLIBC_2.0 sem_post F
+GLIBC_2.0 sem_trywait F
+GLIBC_2.0 sem_wait F
+GLIBC_2.0 send F
+GLIBC_2.0 sendmsg F
+GLIBC_2.0 sendto F
+GLIBC_2.0 sigaction F
+GLIBC_2.0 siglongjmp F
+GLIBC_2.0 sigwait F
+GLIBC_2.0 system F
+GLIBC_2.0 tcdrain F
+GLIBC_2.0 vfork F
+GLIBC_2.0 wait F
+GLIBC_2.0 waitpid F
+GLIBC_2.0 write F
+GLIBC_2.1 GLIBC_2.1 A
+GLIBC_2.1 __libc_allocate_rtsig F
+GLIBC_2.1 __libc_current_sigrtmax F
+GLIBC_2.1 __libc_current_sigrtmin F
+GLIBC_2.1 pthread_attr_getguardsize F
+GLIBC_2.1 pthread_attr_getstackaddr F
+GLIBC_2.1 pthread_attr_getstacksize F
+GLIBC_2.1 pthread_attr_init F
+GLIBC_2.1 pthread_attr_setguardsize F
+GLIBC_2.1 pthread_attr_setstackaddr F
+GLIBC_2.1 pthread_attr_setstacksize F
+GLIBC_2.1 pthread_create F
+GLIBC_2.1 pthread_getconcurrency F
+GLIBC_2.1 pthread_mutexattr_gettype F
+GLIBC_2.1 pthread_mutexattr_settype F
+GLIBC_2.1 pthread_rwlock_destroy F
+GLIBC_2.1 pthread_rwlock_init F
+GLIBC_2.1 pthread_rwlock_rdlock F
+GLIBC_2.1 pthread_rwlock_tryrdlock F
+GLIBC_2.1 pthread_rwlock_trywrlock F
+GLIBC_2.1 pthread_rwlock_unlock F
+GLIBC_2.1 pthread_rwlock_wrlock F
+GLIBC_2.1 pthread_rwlockattr_destroy F
+GLIBC_2.1 pthread_rwlockattr_getkind_np F
+GLIBC_2.1 pthread_rwlockattr_getpshared F
+GLIBC_2.1 pthread_rwlockattr_init F
+GLIBC_2.1 pthread_rwlockattr_setkind_np F
+GLIBC_2.1 pthread_rwlockattr_setpshared F
+GLIBC_2.1 pthread_setconcurrency F
+GLIBC_2.1 sem_destroy F
+GLIBC_2.1 sem_getvalue F
+GLIBC_2.1 sem_init F
+GLIBC_2.1 sem_post F
+GLIBC_2.1 sem_trywait F
+GLIBC_2.1 sem_wait F
+GLIBC_2.1.1 GLIBC_2.1.1 A
+GLIBC_2.1.1 sem_close F
+GLIBC_2.1.1 sem_open F
+GLIBC_2.1.1 sem_unlink F
+GLIBC_2.1.2 GLIBC_2.1.2 A
+GLIBC_2.1.2 __vfork F
+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.2 GLIBC_2.2 A
+GLIBC_2.2 __open64 F
+GLIBC_2.2 __pread64 F
+GLIBC_2.2 __pthread_rwlock_destroy F
+GLIBC_2.2 __pthread_rwlock_init F
+GLIBC_2.2 __pthread_rwlock_rdlock F
+GLIBC_2.2 __pthread_rwlock_tryrdlock F
+GLIBC_2.2 __pthread_rwlock_trywrlock F
+GLIBC_2.2 __pthread_rwlock_unlock F
+GLIBC_2.2 __pthread_rwlock_wrlock F
+GLIBC_2.2 __pwrite64 F
+GLIBC_2.2 __res_state F
+GLIBC_2.2 lseek64 F
+GLIBC_2.2 open64 F
+GLIBC_2.2 pread F
+GLIBC_2.2 pread64 F
+GLIBC_2.2 pthread_attr_getstack F
+GLIBC_2.2 pthread_attr_setstack F
+GLIBC_2.2 pthread_barrier_destroy F
+GLIBC_2.2 pthread_barrier_init F
+GLIBC_2.2 pthread_barrier_wait F
+GLIBC_2.2 pthread_barrierattr_destroy F
+GLIBC_2.2 pthread_barrierattr_init F
+GLIBC_2.2 pthread_barrierattr_setpshared F
+GLIBC_2.2 pthread_condattr_getpshared F
+GLIBC_2.2 pthread_condattr_setpshared F
+GLIBC_2.2 pthread_getcpuclockid F
+GLIBC_2.2 pthread_mutex_timedlock F
+GLIBC_2.2 pthread_mutexattr_getpshared F
+GLIBC_2.2 pthread_mutexattr_setpshared F
+GLIBC_2.2 pthread_rwlock_timedrdlock F
+GLIBC_2.2 pthread_rwlock_timedwrlock F
+GLIBC_2.2 pthread_spin_destroy F
+GLIBC_2.2 pthread_spin_init F
+GLIBC_2.2 pthread_spin_lock F
+GLIBC_2.2 pthread_spin_trylock F
+GLIBC_2.2 pthread_spin_unlock F
+GLIBC_2.2 pthread_yield F
+GLIBC_2.2 pwrite F
+GLIBC_2.2 pwrite64 F
+GLIBC_2.2 sem_timedwait F
+GLIBC_2.2.3 GLIBC_2.2.3 A
+GLIBC_2.2.3 pthread_getattr_np F
+GLIBC_2.2.6 GLIBC_2.2.6 A
+GLIBC_2.2.6 __nanosleep F
+GLIBC_2.3.2 GLIBC_2.3.2 A
+GLIBC_2.3.2 pthread_cond_broadcast F
+GLIBC_2.3.2 pthread_cond_destroy F
+GLIBC_2.3.2 pthread_cond_init F
+GLIBC_2.3.2 pthread_cond_signal F
+GLIBC_2.3.2 pthread_cond_timedwait F
+GLIBC_2.3.2 pthread_cond_wait F
+GLIBC_2.3.3 GLIBC_2.3.3 A
+GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_register_cancel F
+GLIBC_2.3.3 __pthread_register_cancel_defer F
+GLIBC_2.3.3 __pthread_unregister_cancel F
+GLIBC_2.3.3 __pthread_unregister_cancel_restore F
+GLIBC_2.3.3 __pthread_unwind_next F
+GLIBC_2.3.3 pthread_attr_getaffinity_np F
+GLIBC_2.3.3 pthread_attr_setaffinity_np F
+GLIBC_2.3.3 pthread_barrierattr_getpshared F
+GLIBC_2.3.3 pthread_condattr_getclock F
+GLIBC_2.3.3 pthread_condattr_setclock F
+GLIBC_2.3.3 pthread_getaffinity_np F
+GLIBC_2.3.3 pthread_setaffinity_np F
+GLIBC_2.3.3 pthread_timedjoin_np F
+GLIBC_2.3.3 pthread_tryjoin_np F
+GLIBC_2.3.4 GLIBC_2.3.4 A
+GLIBC_2.3.4 pthread_attr_getaffinity_np F
+GLIBC_2.3.4 pthread_attr_setaffinity_np F
+GLIBC_2.3.4 pthread_getaffinity_np F
+GLIBC_2.3.4 pthread_setaffinity_np F
+GLIBC_2.3.4 pthread_setschedprio F
+GLIBC_2.4 GLIBC_2.4 A
+GLIBC_2.4 pthread_mutex_consistent_np F
+GLIBC_2.4 pthread_mutex_getprioceiling F
+GLIBC_2.4 pthread_mutex_setprioceiling F
+GLIBC_2.4 pthread_mutexattr_getprioceiling F
+GLIBC_2.4 pthread_mutexattr_getprotocol F
+GLIBC_2.4 pthread_mutexattr_getrobust_np F
+GLIBC_2.4 pthread_mutexattr_setprioceiling F
+GLIBC_2.4 pthread_mutexattr_setprotocol F
+GLIBC_2.4 pthread_mutexattr_setrobust_np F
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/libresolv.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/i386/libresolv.abilist
new file mode 100644
index 0000000000..4d50e7c8c6
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/libresolv.abilist
@@ -0,0 +1,100 @@
+GLIBC_2.0 GLIBC_2.0 A
+GLIBC_2.0 __b64_ntop F
+GLIBC_2.0 __b64_pton F
+GLIBC_2.0 __dn_comp F
+GLIBC_2.0 __dn_count_labels F
+GLIBC_2.0 __dn_skipname F
+GLIBC_2.0 __fp_nquery F
+GLIBC_2.0 __fp_query F
+GLIBC_2.0 __fp_resstat F
+GLIBC_2.0 __hostalias F
+GLIBC_2.0 __loc_aton F
+GLIBC_2.0 __loc_ntoa F
+GLIBC_2.0 __p_cdname F
+GLIBC_2.0 __p_cdnname F
+GLIBC_2.0 __p_class F
+GLIBC_2.0 __p_class_syms D 0x54
+GLIBC_2.0 __p_fqname F
+GLIBC_2.0 __p_fqnname F
+GLIBC_2.0 __p_option F
+GLIBC_2.0 __p_query F
+GLIBC_2.0 __p_secstodate F
+GLIBC_2.0 __p_time F
+GLIBC_2.0 __p_type F
+GLIBC_2.0 __p_type_syms D 0x228
+GLIBC_2.0 __putlong F
+GLIBC_2.0 __putshort F
+GLIBC_2.0 __res_close F
+GLIBC_2.0 __res_dnok F
+GLIBC_2.0 __res_hnok F
+GLIBC_2.0 __res_isourserver F
+GLIBC_2.0 __res_mailok F
+GLIBC_2.0 __res_nameinquery F
+GLIBC_2.0 __res_ownok F
+GLIBC_2.0 __res_queriesmatch F
+GLIBC_2.0 __res_send F
+GLIBC_2.0 __sym_ntop F
+GLIBC_2.0 __sym_ntos F
+GLIBC_2.0 __sym_ston F
+GLIBC_2.0 _gethtbyaddr F
+GLIBC_2.0 _gethtbyname F
+GLIBC_2.0 _gethtbyname2 F
+GLIBC_2.0 _gethtent F
+GLIBC_2.0 _getlong F
+GLIBC_2.0 _getshort F
+GLIBC_2.0 _res_opcodes D 0x40
+GLIBC_2.0 _sethtent F
+GLIBC_2.0 dn_expand F
+GLIBC_2.0 inet_net_ntop F
+GLIBC_2.0 inet_net_pton F
+GLIBC_2.0 inet_neta F
+GLIBC_2.0 res_gethostbyaddr F
+GLIBC_2.0 res_gethostbyname F
+GLIBC_2.0 res_gethostbyname2 F
+GLIBC_2.0 res_mkquery F
+GLIBC_2.0 res_query F
+GLIBC_2.0 res_querydomain F
+GLIBC_2.0 res_search F
+GLIBC_2.0 res_send_setqhook F
+GLIBC_2.0 res_send_setrhook F
+GLIBC_2.2 GLIBC_2.2 A
+GLIBC_2.2 __dn_expand F
+GLIBC_2.2 __res_hostalias F
+GLIBC_2.2 __res_mkquery F
+GLIBC_2.2 __res_nmkquery F
+GLIBC_2.2 __res_nquery F
+GLIBC_2.2 __res_nquerydomain F
+GLIBC_2.2 __res_nsearch F
+GLIBC_2.2 __res_nsend F
+GLIBC_2.2 __res_query F
+GLIBC_2.2 __res_querydomain F
+GLIBC_2.2 __res_search F
+GLIBC_2.3.2 GLIBC_2.3.2 A
+GLIBC_2.3.2 __p_rcode 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/i386/librt.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/i386/librt.abilist
new file mode 100644
index 0000000000..15e4418863
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -0,0 +1,47 @@
+GLIBC_2.1 GLIBC_2.1 A
+GLIBC_2.1 aio_cancel F
+GLIBC_2.1 aio_cancel64 F
+GLIBC_2.1 aio_error F
+GLIBC_2.1 aio_error64 F
+GLIBC_2.1 aio_fsync F
+GLIBC_2.1 aio_fsync64 F
+GLIBC_2.1 aio_init F
+GLIBC_2.1 aio_read F
+GLIBC_2.1 aio_read64 F
+GLIBC_2.1 aio_return F
+GLIBC_2.1 aio_return64 F
+GLIBC_2.1 aio_suspend F
+GLIBC_2.1 aio_suspend64 F
+GLIBC_2.1 aio_write F
+GLIBC_2.1 aio_write64 F
+GLIBC_2.1 lio_listio F
+GLIBC_2.1 lio_listio64 F
+GLIBC_2.2 GLIBC_2.2 A
+GLIBC_2.2 clock_getcpuclockid F
+GLIBC_2.2 clock_getres F
+GLIBC_2.2 clock_gettime F
+GLIBC_2.2 clock_nanosleep F
+GLIBC_2.2 clock_settime F
+GLIBC_2.2 shm_open F
+GLIBC_2.2 shm_unlink F
+GLIBC_2.2 timer_create F
+GLIBC_2.2 timer_delete F
+GLIBC_2.2 timer_getoverrun F
+GLIBC_2.2 timer_gettime F
+GLIBC_2.2 timer_settime F
+GLIBC_2.3.4 GLIBC_2.3.4 A
+GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_getattr F
+GLIBC_2.3.4 mq_notify F
+GLIBC_2.3.4 mq_open F
+GLIBC_2.3.4 mq_receive F
+GLIBC_2.3.4 mq_send F
+GLIBC_2.3.4 mq_setattr F
+GLIBC_2.3.4 mq_timedreceive F
+GLIBC_2.3.4 mq_timedsend F
+GLIBC_2.3.4 mq_unlink F
+GLIBC_2.4 GLIBC_2.4 A
+GLIBC_2.4 lio_listio F
+GLIBC_2.4 lio_listio64 F
+GLIBC_2.7 GLIBC_2.7 A
+GLIBC_2.7 __mq_open_2 F
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/libthread_db.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/i386/libthread_db.abilist
new file mode 100644
index 0000000000..a8a8c2c68d
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/libthread_db.abilist
@@ -0,0 +1,44 @@
+GLIBC_2.1.3 GLIBC_2.1.3 A
+GLIBC_2.1.3 td_init F
+GLIBC_2.1.3 td_log F
+GLIBC_2.1.3 td_ta_clear_event F
+GLIBC_2.1.3 td_ta_delete F
+GLIBC_2.1.3 td_ta_enable_stats F
+GLIBC_2.1.3 td_ta_event_addr F
+GLIBC_2.1.3 td_ta_event_getmsg F
+GLIBC_2.1.3 td_ta_get_nthreads F
+GLIBC_2.1.3 td_ta_get_ph F
+GLIBC_2.1.3 td_ta_get_stats F
+GLIBC_2.1.3 td_ta_map_id2thr F
+GLIBC_2.1.3 td_ta_map_lwp2thr F
+GLIBC_2.1.3 td_ta_new F
+GLIBC_2.1.3 td_ta_reset_stats F
+GLIBC_2.1.3 td_ta_set_event F
+GLIBC_2.1.3 td_ta_setconcurrency F
+GLIBC_2.1.3 td_ta_thr_iter F
+GLIBC_2.1.3 td_ta_tsd_iter F
+GLIBC_2.1.3 td_thr_clear_event F
+GLIBC_2.1.3 td_thr_dbresume F
+GLIBC_2.1.3 td_thr_dbsuspend F
+GLIBC_2.1.3 td_thr_event_enable F
+GLIBC_2.1.3 td_thr_event_getmsg F
+GLIBC_2.1.3 td_thr_get_info F
+GLIBC_2.1.3 td_thr_getfpregs F
+GLIBC_2.1.3 td_thr_getgregs F
+GLIBC_2.1.3 td_thr_getxregs F
+GLIBC_2.1.3 td_thr_getxregsize F
+GLIBC_2.1.3 td_thr_set_event F
+GLIBC_2.1.3 td_thr_setfpregs F
+GLIBC_2.1.3 td_thr_setgregs F
+GLIBC_2.1.3 td_thr_setprio F
+GLIBC_2.1.3 td_thr_setsigpending F
+GLIBC_2.1.3 td_thr_setxregs F
+GLIBC_2.1.3 td_thr_sigsetmask F
+GLIBC_2.1.3 td_thr_tsd F
+GLIBC_2.1.3 td_thr_validate F
+GLIBC_2.2.3 GLIBC_2.2.3 A
+GLIBC_2.2.3 td_symbol_list F
+GLIBC_2.3 GLIBC_2.3 A
+GLIBC_2.3 td_thr_tls_get_addr F
+GLIBC_2.3.3 GLIBC_2.3.3 A
+GLIBC_2.3.3 td_thr_tlsbase F
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/libutil.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/i386/libutil.abilist
new file mode 100644
index 0000000000..89c67755c4
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/libutil.abilist
@@ -0,0 +1,7 @@
+GLIBC_2.0 GLIBC_2.0 A
+GLIBC_2.0 forkpty F
+GLIBC_2.0 login F
+GLIBC_2.0 login_tty F
+GLIBC_2.0 logout F
+GLIBC_2.0 logwtmp F
+GLIBC_2.0 openpty F
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/lll_timedlock_wait.c b/REORG.TODO/sysdeps/unix/sysv/linux/i386/lll_timedlock_wait.c
new file mode 100644
index 0000000000..f6875b8f89
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/lll_timedlock_wait.c
@@ -0,0 +1 @@
+/* __lll_timedlock_wait is in lowlevellock.S. */
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/lll_timedwait_tid.c b/REORG.TODO/sysdeps/unix/sysv/linux/i386/lll_timedwait_tid.c
new file mode 100644
index 0000000000..43900c6294
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/lll_timedwait_tid.c
@@ -0,0 +1 @@
+/* __lll_timedwait_tid is in lowlevellock.S. */
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/localplt.data b/REORG.TODO/sysdeps/unix/sysv/linux/i386/localplt.data
new file mode 100644
index 0000000000..8ea4333846
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/localplt.data
@@ -0,0 +1,18 @@
+# Linker in binutils 2.26 and newer consolidates R_X86_64_JUMP_SLOT
+# relocation with R_386_GLOB_DAT relocation against the same symbol.
+libc.so: _Unwind_Find_FDE + REL R_386_GLOB_DAT
+libc.so: calloc + REL R_386_GLOB_DAT
+libc.so: free + REL R_386_GLOB_DAT
+libc.so: malloc + REL R_386_GLOB_DAT
+libc.so: memalign + REL R_386_GLOB_DAT
+libc.so: realloc + REL R_386_GLOB_DAT
+libm.so: matherr + REL R_386_GLOB_DAT
+# The main malloc is interposed into the dynamic linker, for
+# allocations after the initial link (when dlopen is used).
+ld.so: malloc + REL R_386_GLOB_DAT
+ld.so: calloc + REL R_386_GLOB_DAT
+ld.so: realloc + REL R_386_GLOB_DAT
+ld.so: free + REL R_386_GLOB_DAT
+# The TLS-enabled version of these functions is interposed from libc.so.
+ld.so: _dl_signal_error + REL R_386_GLOB_DAT
+ld.so: _dl_catch_error + REL R_386_GLOB_DAT
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/lockf64.c b/REORG.TODO/sysdeps/unix/sysv/linux/i386/lockf64.c
new file mode 100644
index 0000000000..23b99f8f22
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/lockf64.c
@@ -0,0 +1,70 @@
+/* Copyright (C) 1994-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 <sys/types.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <string.h>
+#include <sysdep.h>
+
+/* lockf is a simplified interface to fcntl's locking facilities. */
+
+int
+lockf64 (int fd, int cmd, off64_t len64)
+{
+ struct flock64 fl64;
+ int cmd64;
+ int result;
+
+ memset ((char *) &fl64, '\0', sizeof (fl64));
+ fl64.l_whence = SEEK_CUR;
+ fl64.l_start = 0;
+ fl64.l_len = len64;
+
+ switch (cmd)
+ {
+ case F_TEST:
+ /* Test the lock: return 0 if FD is unlocked or locked by this process;
+ return -1, set errno to EACCES, if another process holds the lock. */
+ fl64.l_type = F_RDLCK;
+ INTERNAL_SYSCALL_DECL (err);
+ result = INTERNAL_SYSCALL (fcntl64, err, 3, fd, F_GETLK64, &fl64);
+ if (__glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (result, err)))
+ return INLINE_SYSCALL_ERROR_RETURN_VALUE (INTERNAL_SYSCALL_ERRNO (result,
+ err));
+ if (fl64.l_type == F_UNLCK || fl64.l_pid == __getpid ())
+ return 0;
+ return INLINE_SYSCALL_ERROR_RETURN_VALUE (EACCES);
+ case F_ULOCK:
+ fl64.l_type = F_UNLCK;
+ cmd64 = F_SETLK64;
+ break;
+ case F_LOCK:
+ fl64.l_type = F_WRLCK;
+ cmd64 = F_SETLKW64;
+ break;
+ case F_TLOCK:
+ fl64.l_type = F_WRLCK;
+ cmd64 = F_SETLK64;
+ break;
+
+ default:
+ return INLINE_SYSCALL_ERROR_RETURN_VALUE (EINVAL);
+ }
+ return INLINE_SYSCALL (fcntl64, 3, fd, cmd64, &fl64);
+}
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/lowlevellock.S b/REORG.TODO/sysdeps/unix/sysv/linux/i386/lowlevellock.S
new file mode 100644
index 0000000000..8fcca5be99
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/lowlevellock.S
@@ -0,0 +1,466 @@
+/* Copyright (C) 2002-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have 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 <pthread-errnos.h>
+#include <kernel-features.h>
+#include <lowlevellock.h>
+
+#include <stap-probe.h>
+
+ .text
+
+#ifdef __ASSUME_PRIVATE_FUTEX
+# define LOAD_PRIVATE_FUTEX_WAIT(reg) \
+ movl $(FUTEX_WAIT | FUTEX_PRIVATE_FLAG), reg
+# define LOAD_PRIVATE_FUTEX_WAKE(reg) \
+ movl $(FUTEX_WAKE | FUTEX_PRIVATE_FLAG), reg
+# define LOAD_FUTEX_WAIT(reg) \
+ xorl $(FUTEX_WAIT | FUTEX_PRIVATE_FLAG), reg
+# define LOAD_FUTEX_WAIT_ABS(reg) \
+ xorl $(FUTEX_WAIT_BITSET | FUTEX_PRIVATE_FLAG | FUTEX_CLOCK_REALTIME), reg
+# define LOAD_FUTEX_WAKE(reg) \
+ xorl $(FUTEX_WAKE | FUTEX_PRIVATE_FLAG), reg
+#else
+# if FUTEX_WAIT == 0
+# define LOAD_PRIVATE_FUTEX_WAIT(reg) \
+ movl %gs:PRIVATE_FUTEX, reg
+# else
+# define LOAD_PRIVATE_FUTEX_WAIT(reg) \
+ movl %gs:PRIVATE_FUTEX, reg ; \
+ orl $FUTEX_WAIT, reg
+# endif
+# define LOAD_PRIVATE_FUTEX_WAKE(reg) \
+ movl %gs:PRIVATE_FUTEX, reg ; \
+ orl $FUTEX_WAKE, reg
+# if FUTEX_WAIT == 0
+# define LOAD_FUTEX_WAIT(reg) \
+ xorl $FUTEX_PRIVATE_FLAG, reg ; \
+ andl %gs:PRIVATE_FUTEX, reg
+# else
+# define LOAD_FUTEX_WAIT(reg) \
+ xorl $FUTEX_PRIVATE_FLAG, reg ; \
+ andl %gs:PRIVATE_FUTEX, reg ; \
+ orl $FUTEX_WAIT, reg
+# endif
+# define LOAD_FUTEX_WAIT_ABS(reg) \
+ xorl $FUTEX_PRIVATE_FLAG, reg ; \
+ andl %gs:PRIVATE_FUTEX, reg ; \
+ orl $FUTEX_WAIT_BITSET | FUTEX_CLOCK_REALTIME, reg
+# define LOAD_FUTEX_WAKE(reg) \
+ xorl $FUTEX_PRIVATE_FLAG, reg ; \
+ andl %gs:PRIVATE_FUTEX, reg ; \
+ orl $FUTEX_WAKE, reg
+#endif
+
+ .globl __lll_lock_wait_private
+ .type __lll_lock_wait_private,@function
+ .hidden __lll_lock_wait_private
+ .align 16
+__lll_lock_wait_private:
+ cfi_startproc
+ pushl %edx
+ cfi_adjust_cfa_offset(4)
+ pushl %ebx
+ cfi_adjust_cfa_offset(4)
+ pushl %esi
+ cfi_adjust_cfa_offset(4)
+ cfi_offset(%edx, -8)
+ cfi_offset(%ebx, -12)
+ cfi_offset(%esi, -16)
+
+ movl $2, %edx
+ movl %ecx, %ebx
+ xorl %esi, %esi /* No timeout. */
+ LOAD_PRIVATE_FUTEX_WAIT (%ecx)
+
+ cmpl %edx, %eax /* NB: %edx == 2 */
+ jne 2f
+
+1: LIBC_PROBE (lll_lock_wait_private, 1, %ebx)
+ movl $SYS_futex, %eax
+ ENTER_KERNEL
+
+2: movl %edx, %eax
+ xchgl %eax, (%ebx) /* NB: lock is implied */
+
+ testl %eax, %eax
+ jnz 1b
+
+ popl %esi
+ cfi_adjust_cfa_offset(-4)
+ cfi_restore(%esi)
+ popl %ebx
+ cfi_adjust_cfa_offset(-4)
+ cfi_restore(%ebx)
+ popl %edx
+ cfi_adjust_cfa_offset(-4)
+ cfi_restore(%edx)
+ ret
+ cfi_endproc
+ .size __lll_lock_wait_private,.-__lll_lock_wait_private
+
+#if !IS_IN (libc)
+ .globl __lll_lock_wait
+ .type __lll_lock_wait,@function
+ .hidden __lll_lock_wait
+ .align 16
+__lll_lock_wait:
+ cfi_startproc
+ pushl %edx
+ cfi_adjust_cfa_offset(4)
+ pushl %ebx
+ cfi_adjust_cfa_offset(4)
+ pushl %esi
+ cfi_adjust_cfa_offset(4)
+ cfi_offset(%edx, -8)
+ cfi_offset(%ebx, -12)
+ cfi_offset(%esi, -16)
+
+ movl %edx, %ebx
+ movl $2, %edx
+ xorl %esi, %esi /* No timeout. */
+ LOAD_FUTEX_WAIT (%ecx)
+
+ cmpl %edx, %eax /* NB: %edx == 2 */
+ jne 2f
+
+1: movl $SYS_futex, %eax
+ ENTER_KERNEL
+
+2: movl %edx, %eax
+ xchgl %eax, (%ebx) /* NB: lock is implied */
+
+ testl %eax, %eax
+ jnz 1b
+
+ popl %esi
+ cfi_adjust_cfa_offset(-4)
+ cfi_restore(%esi)
+ popl %ebx
+ cfi_adjust_cfa_offset(-4)
+ cfi_restore(%ebx)
+ popl %edx
+ cfi_adjust_cfa_offset(-4)
+ cfi_restore(%edx)
+ ret
+ cfi_endproc
+ .size __lll_lock_wait,.-__lll_lock_wait
+
+ /* %ecx: futex
+ %esi: flags
+ %edx: timeout
+ %eax: futex value
+ */
+ .globl __lll_timedlock_wait
+ .type __lll_timedlock_wait,@function
+ .hidden __lll_timedlock_wait
+ .align 16
+__lll_timedlock_wait:
+ cfi_startproc
+ pushl %ebp
+ cfi_adjust_cfa_offset(4)
+ cfi_rel_offset(%ebp, 0)
+ pushl %ebx
+ cfi_adjust_cfa_offset(4)
+ cfi_rel_offset(%ebx, 0)
+
+# ifndef __ASSUME_FUTEX_CLOCK_REALTIME
+# ifdef PIC
+ LOAD_PIC_REG (bx)
+ cmpl $0, __have_futex_clock_realtime@GOTOFF(%ebx)
+# else
+ cmpl $0, __have_futex_clock_realtime
+# endif
+ je .Lreltmo
+# endif
+
+ cmpl $0, (%edx)
+ js 8f
+
+ movl %ecx, %ebx
+ movl %esi, %ecx
+ movl %edx, %esi
+ movl $0xffffffff, %ebp
+ LOAD_FUTEX_WAIT_ABS (%ecx)
+
+ movl $2, %edx
+ cmpl %edx, %eax
+ jne 2f
+
+1: movl $SYS_futex, %eax
+ movl $2, %edx
+ ENTER_KERNEL
+
+2: xchgl %edx, (%ebx) /* NB: lock is implied */
+
+ testl %edx, %edx
+ jz 3f
+
+ cmpl $-ETIMEDOUT, %eax
+ je 4f
+ cmpl $-EINVAL, %eax
+ jne 1b
+4: movl %eax, %edx
+ negl %edx
+
+3: movl %edx, %eax
+7: popl %ebx
+ cfi_adjust_cfa_offset(-4)
+ cfi_restore(%ebx)
+ popl %ebp
+ cfi_adjust_cfa_offset(-4)
+ cfi_restore(%ebp)
+ ret
+
+8: movl $ETIMEDOUT, %eax
+ jmp 7b
+
+# ifndef __ASSUME_FUTEX_CLOCK_REALTIME
+.Lreltmo:
+ /* Check for a valid timeout value. */
+ cmpl $1000000000, 4(%edx)
+ jae 3f
+
+ pushl %esi
+ cfi_adjust_cfa_offset(4)
+ cfi_rel_offset(%esi, 0)
+ pushl %edi
+ cfi_adjust_cfa_offset(4)
+ cfi_rel_offset(%edi, 0)
+
+ /* Stack frame for the timespec and timeval structs. */
+ subl $8, %esp
+ cfi_adjust_cfa_offset(8)
+
+ movl %ecx, %ebp
+ movl %edx, %edi
+
+ movl $2, %edx
+ xchgl %edx, (%ebp)
+
+ test %edx, %edx
+ je 6f
+
+1:
+ /* Get current time. */
+ movl %esp, %ebx
+ xorl %ecx, %ecx
+ movl $__NR_gettimeofday, %eax
+ ENTER_KERNEL
+
+ /* Compute relative timeout. */
+ movl 4(%esp), %eax
+ movl $1000, %edx
+ mul %edx /* Milli seconds to nano seconds. */
+ movl (%edi), %ecx
+ movl 4(%edi), %edx
+ subl (%esp), %ecx
+ subl %eax, %edx
+ jns 4f
+ addl $1000000000, %edx
+ subl $1, %ecx
+4: testl %ecx, %ecx
+ js 2f /* Time is already up. */
+
+ /* Store relative timeout. */
+ movl %ecx, (%esp)
+ movl %edx, 4(%esp)
+
+ /* Futex call. */
+ movl %ebp, %ebx
+ movl $2, %edx
+ movl %esp, %esi
+ movl 16(%esp), %ecx
+ LOAD_FUTEX_WAIT (%ecx)
+ movl $SYS_futex, %eax
+ ENTER_KERNEL
+
+ /* NB: %edx == 2 */
+ xchgl %edx, (%ebp)
+
+ testl %edx, %edx
+ je 6f
+
+ cmpl $-ETIMEDOUT, %eax
+ jne 1b
+2: movl $ETIMEDOUT, %edx
+
+6: addl $8, %esp
+ cfi_adjust_cfa_offset(-8)
+ popl %edi
+ cfi_adjust_cfa_offset(-4)
+ cfi_restore(%edi)
+ popl %esi
+ cfi_adjust_cfa_offset(-4)
+ cfi_restore(%esi)
+7: popl %ebx
+ cfi_adjust_cfa_offset(-4)
+ cfi_restore(%ebx)
+ popl %ebp
+ cfi_adjust_cfa_offset(-4)
+ cfi_restore(%ebp)
+ movl %edx, %eax
+ ret
+
+3: movl $EINVAL, %edx
+ jmp 7b
+# endif
+ cfi_endproc
+ .size __lll_timedlock_wait,.-__lll_timedlock_wait
+#endif
+
+ .globl __lll_unlock_wake_private
+ .type __lll_unlock_wake_private,@function
+ .hidden __lll_unlock_wake_private
+ .align 16
+__lll_unlock_wake_private:
+ cfi_startproc
+ pushl %ebx
+ cfi_adjust_cfa_offset(4)
+ pushl %ecx
+ cfi_adjust_cfa_offset(4)
+ pushl %edx
+ cfi_adjust_cfa_offset(4)
+ cfi_offset(%ebx, -8)
+ cfi_offset(%ecx, -12)
+ cfi_offset(%edx, -16)
+
+ movl %eax, %ebx
+ movl $0, (%eax)
+ LOAD_PRIVATE_FUTEX_WAKE (%ecx)
+ movl $1, %edx /* Wake one thread. */
+ movl $SYS_futex, %eax
+ ENTER_KERNEL
+
+ popl %edx
+ cfi_adjust_cfa_offset(-4)
+ cfi_restore(%edx)
+ popl %ecx
+ cfi_adjust_cfa_offset(-4)
+ cfi_restore(%ecx)
+ popl %ebx
+ cfi_adjust_cfa_offset(-4)
+ cfi_restore(%ebx)
+ ret
+ cfi_endproc
+ .size __lll_unlock_wake_private,.-__lll_unlock_wake_private
+
+#if !IS_IN (libc)
+ .globl __lll_unlock_wake
+ .type __lll_unlock_wake,@function
+ .hidden __lll_unlock_wake
+ .align 16
+__lll_unlock_wake:
+ cfi_startproc
+ pushl %ebx
+ cfi_adjust_cfa_offset(4)
+ pushl %ecx
+ cfi_adjust_cfa_offset(4)
+ pushl %edx
+ cfi_adjust_cfa_offset(4)
+ cfi_offset(%ebx, -8)
+ cfi_offset(%ecx, -12)
+ cfi_offset(%edx, -16)
+
+ movl %eax, %ebx
+ movl $0, (%eax)
+ LOAD_FUTEX_WAKE (%ecx)
+ movl $1, %edx /* Wake one thread. */
+ movl $SYS_futex, %eax
+ ENTER_KERNEL
+
+ popl %edx
+ cfi_adjust_cfa_offset(-4)
+ cfi_restore(%edx)
+ popl %ecx
+ cfi_adjust_cfa_offset(-4)
+ cfi_restore(%ecx)
+ popl %ebx
+ cfi_adjust_cfa_offset(-4)
+ cfi_restore(%ebx)
+ ret
+ cfi_endproc
+ .size __lll_unlock_wake,.-__lll_unlock_wake
+
+ .globl __lll_timedwait_tid
+ .type __lll_timedwait_tid,@function
+ .hidden __lll_timedwait_tid
+ .align 16
+__lll_timedwait_tid:
+ pushl %edi
+ pushl %esi
+ pushl %ebx
+ pushl %ebp
+
+ movl %eax, %ebp
+ movl %edx, %edi
+ subl $8, %esp
+
+ /* Get current time. */
+2: movl %esp, %ebx
+ xorl %ecx, %ecx
+ movl $__NR_gettimeofday, %eax
+ ENTER_KERNEL
+
+ /* Compute relative timeout. */
+ movl 4(%esp), %eax
+ movl $1000, %edx
+ mul %edx /* Milli seconds to nano seconds. */
+ movl (%edi), %ecx
+ movl 4(%edi), %edx
+ subl (%esp), %ecx
+ subl %eax, %edx
+ jns 5f
+ addl $1000000000, %edx
+ subl $1, %ecx
+5: testl %ecx, %ecx
+ js 6f /* Time is already up. */
+
+ movl %ecx, (%esp) /* Store relative timeout. */
+ movl %edx, 4(%esp)
+
+ movl (%ebp), %edx
+ testl %edx, %edx
+ jz 4f
+
+ movl %esp, %esi
+ /* XXX The kernel so far uses global futex for the wakeup at
+ all times. */
+ xorl %ecx, %ecx /* movl $FUTEX_WAIT, %ecx */
+ movl %ebp, %ebx
+ movl $SYS_futex, %eax
+ ENTER_KERNEL
+
+ cmpl $0, (%ebx)
+ jne 1f
+4: xorl %eax, %eax
+
+3: addl $8, %esp
+ popl %ebp
+ popl %ebx
+ popl %esi
+ popl %edi
+ ret
+
+1: cmpl $-ETIMEDOUT, %eax
+ jne 2b
+6: movl $ETIMEDOUT, %eax
+ jmp 3b
+ .size __lll_timedwait_tid,.-__lll_timedwait_tid
+#endif
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/lowlevellock.h b/REORG.TODO/sysdeps/unix/sysv/linux/i386/lowlevellock.h
new file mode 100644
index 0000000000..197bb1fcd9
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/lowlevellock.h
@@ -0,0 +1,267 @@
+/* Copyright (C) 2002-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _LOWLEVELLOCK_H
+#define _LOWLEVELLOCK_H 1
+
+#include <stap-probe.h>
+
+#ifndef __ASSEMBLER__
+# include <time.h>
+# include <sys/param.h>
+# include <bits/pthreadtypes.h>
+# include <kernel-features.h>
+# include <tcb-offsets.h>
+
+# ifndef LOCK_INSTR
+# ifdef UP
+# define LOCK_INSTR /* nothing */
+# else
+# define LOCK_INSTR "lock;"
+# endif
+# endif
+#else
+# ifndef LOCK
+# ifdef UP
+# define LOCK
+# else
+# define LOCK lock
+# endif
+# endif
+#endif
+
+#include <lowlevellock-futex.h>
+
+/* XXX Remove when no assembler code uses futexes anymore. */
+#define SYS_futex __NR_futex
+
+#ifndef __ASSEMBLER__
+
+/* Initializer for compatibility lock. */
+#define LLL_LOCK_INITIALIZER (0)
+#define LLL_LOCK_INITIALIZER_LOCKED (1)
+#define LLL_LOCK_INITIALIZER_WAITERS (2)
+
+
+/* NB: in the lll_trylock macro we simply return the value in %eax
+ after the cmpxchg instruction. In case the operation succeded this
+ value is zero. In case the operation failed, the cmpxchg instruction
+ has loaded the current value of the memory work which is guaranteed
+ to be nonzero. */
+#if !IS_IN (libc) || defined UP
+# define __lll_trylock_asm LOCK_INSTR "cmpxchgl %2, %1"
+#else
+# define __lll_trylock_asm "cmpl $0, %%gs:%P5\n\t" \
+ "je 0f\n\t" \
+ "lock\n" \
+ "0:\tcmpxchgl %2, %1"
+#endif
+
+#define lll_trylock(futex) \
+ ({ int ret; \
+ __asm __volatile (__lll_trylock_asm \
+ : "=a" (ret), "=m" (futex) \
+ : "r" (LLL_LOCK_INITIALIZER_LOCKED), "m" (futex), \
+ "0" (LLL_LOCK_INITIALIZER), \
+ "i" (MULTIPLE_THREADS_OFFSET) \
+ : "memory"); \
+ ret; })
+
+
+#define lll_cond_trylock(futex) \
+ ({ int ret; \
+ __asm __volatile (LOCK_INSTR "cmpxchgl %2, %1" \
+ : "=a" (ret), "=m" (futex) \
+ : "r" (LLL_LOCK_INITIALIZER_WAITERS), \
+ "m" (futex), "0" (LLL_LOCK_INITIALIZER) \
+ : "memory"); \
+ ret; })
+
+#if !IS_IN (libc) || defined UP
+# define __lll_lock_asm_start LOCK_INSTR "cmpxchgl %1, %2\n\t"
+#else
+# define __lll_lock_asm_start "cmpl $0, %%gs:%P6\n\t" \
+ "je 0f\n\t" \
+ "lock\n" \
+ "0:\tcmpxchgl %1, %2\n\t"
+#endif
+
+#define lll_lock(futex, private) \
+ (void) \
+ ({ int ignore1, ignore2; \
+ if (__builtin_constant_p (private) && (private) == LLL_PRIVATE) \
+ __asm __volatile (__lll_lock_asm_start \
+ "jz 18f\n\t" \
+ "1:\tleal %2, %%ecx\n" \
+ "2:\tcall __lll_lock_wait_private\n" \
+ "18:" \
+ : "=a" (ignore1), "=c" (ignore2), "=m" (futex) \
+ : "0" (0), "1" (1), "m" (futex), \
+ "i" (MULTIPLE_THREADS_OFFSET) \
+ : "memory"); \
+ else \
+ { \
+ int ignore3; \
+ __asm __volatile (__lll_lock_asm_start \
+ "jz 18f\n\t" \
+ "1:\tleal %2, %%edx\n" \
+ "0:\tmovl %8, %%ecx\n" \
+ "2:\tcall __lll_lock_wait\n" \
+ "18:" \
+ : "=a" (ignore1), "=c" (ignore2), \
+ "=m" (futex), "=&d" (ignore3) \
+ : "1" (1), "m" (futex), \
+ "i" (MULTIPLE_THREADS_OFFSET), "0" (0), \
+ "g" ((int) (private)) \
+ : "memory"); \
+ } \
+ })
+
+
+/* Special version of lll_lock which causes the unlock function to
+ always wakeup waiters. */
+#define lll_cond_lock(futex, private) \
+ (void) \
+ ({ int ignore1, ignore2, ignore3; \
+ __asm __volatile (LOCK_INSTR "cmpxchgl %1, %2\n\t" \
+ "jz 18f\n\t" \
+ "1:\tleal %2, %%edx\n" \
+ "0:\tmovl %7, %%ecx\n" \
+ "2:\tcall __lll_lock_wait\n" \
+ "18:" \
+ : "=a" (ignore1), "=c" (ignore2), "=m" (futex), \
+ "=&d" (ignore3) \
+ : "0" (0), "1" (2), "m" (futex), "g" ((int) (private))\
+ : "memory"); \
+ })
+
+
+#define lll_timedlock(futex, timeout, private) \
+ ({ int result, ignore1, ignore2, ignore3; \
+ __asm __volatile (LOCK_INSTR "cmpxchgl %1, %3\n\t" \
+ "jz 18f\n\t" \
+ "1:\tleal %3, %%ecx\n" \
+ "0:\tmovl %8, %%edx\n" \
+ "2:\tcall __lll_timedlock_wait\n" \
+ "18:" \
+ : "=a" (result), "=c" (ignore1), "=&d" (ignore2), \
+ "=m" (futex), "=S" (ignore3) \
+ : "0" (0), "1" (1), "m" (futex), "m" (timeout), \
+ "4" ((int) (private)) \
+ : "memory"); \
+ result; })
+
+extern int __lll_timedlock_elision (int *futex, short *adapt_count,
+ const struct timespec *timeout,
+ int private) attribute_hidden;
+
+#define lll_timedlock_elision(futex, adapt_count, timeout, private) \
+ __lll_timedlock_elision(&(futex), &(adapt_count), timeout, private)
+
+#if !IS_IN (libc) || defined UP
+# define __lll_unlock_asm LOCK_INSTR "subl $1, %0\n\t"
+#else
+# define __lll_unlock_asm "cmpl $0, %%gs:%P3\n\t" \
+ "je 0f\n\t" \
+ "lock\n" \
+ "0:\tsubl $1,%0\n\t"
+#endif
+
+#define lll_unlock(futex, private) \
+ (void) \
+ ({ int ignore; \
+ if (__builtin_constant_p (private) && (private) == LLL_PRIVATE) \
+ __asm __volatile (__lll_unlock_asm \
+ "je 18f\n\t" \
+ "1:\tleal %0, %%eax\n" \
+ "2:\tcall __lll_unlock_wake_private\n" \
+ "18:" \
+ : "=m" (futex), "=&a" (ignore) \
+ : "m" (futex), "i" (MULTIPLE_THREADS_OFFSET) \
+ : "memory"); \
+ else \
+ { \
+ int ignore2; \
+ __asm __volatile (__lll_unlock_asm \
+ "je 18f\n\t" \
+ "1:\tleal %0, %%eax\n" \
+ "0:\tmovl %5, %%ecx\n" \
+ "2:\tcall __lll_unlock_wake\n" \
+ "18:" \
+ : "=m" (futex), "=&a" (ignore), "=&c" (ignore2) \
+ : "i" (MULTIPLE_THREADS_OFFSET), "m" (futex), \
+ "g" ((int) (private)) \
+ : "memory"); \
+ } \
+ })
+
+
+#define lll_islocked(futex) \
+ (futex != LLL_LOCK_INITIALIZER)
+
+/* The kernel notifies a process which uses CLONE_CHILD_CLEARTID via futex
+ wake-up when the clone terminates. The memory location contains the
+ thread ID while the clone is running and is reset to zero by the kernel
+ afterwards. The kernel up to version 3.16.3 does not use the private futex
+ operations for futex wake-up when the clone terminates. */
+#define lll_wait_tid(tid) \
+ do { \
+ __typeof (tid) __tid; \
+ while ((__tid = (tid)) != 0) \
+ lll_futex_wait (&(tid), __tid, LLL_SHARED);\
+ } while (0)
+
+extern int __lll_timedwait_tid (int *tid, const struct timespec *abstime)
+ __attribute__ ((regparm (2))) attribute_hidden;
+
+/* As lll_wait_tid, but with a timeout. If the timeout occurs then return
+ ETIMEDOUT. If ABSTIME is invalid, return EINVAL.
+ XXX Note that this differs from the generic version in that we do the
+ error checking here and not in __lll_timedwait_tid. */
+#define lll_timedwait_tid(tid, abstime) \
+ ({ \
+ int __result = 0; \
+ if ((tid) != 0) \
+ { \
+ if ((abstime)->tv_nsec < 0 || (abstime)->tv_nsec >= 1000000000) \
+ __result = EINVAL; \
+ else \
+ __result = __lll_timedwait_tid (&(tid), (abstime)); \
+ } \
+ __result; })
+
+
+extern int __lll_lock_elision (int *futex, short *adapt_count, int private)
+ attribute_hidden;
+
+extern int __lll_unlock_elision(int *lock, int private)
+ attribute_hidden;
+
+extern int __lll_trylock_elision(int *lock, short *adapt_count)
+ attribute_hidden;
+
+#define lll_lock_elision(futex, adapt_count, private) \
+ __lll_lock_elision (&(futex), &(adapt_count), private)
+#define lll_unlock_elision(futex, adapt_count, private) \
+ __lll_unlock_elision (&(futex), private)
+#define lll_trylock_elision(futex, adapt_count) \
+ __lll_trylock_elision(&(futex), &(adapt_count))
+
+#endif /* !__ASSEMBLER__ */
+
+#endif /* lowlevellock.h */
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/lxstat.c b/REORG.TODO/sysdeps/unix/sysv/linux/i386/lxstat.c
new file mode 100644
index 0000000000..fc9d2f234a
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/lxstat.c
@@ -0,0 +1,62 @@
+/* lxstat using old-style Unix lstat system call.
+ Copyright (C) 1991-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/>. */
+
+/* Ho hum, if xstat == xstat64 we must get rid of the prototype or gcc
+ will complain since they don't strictly match. */
+#define __lxstat64 __lxstat64_disable
+
+#include <errno.h>
+#include <stddef.h>
+#include <sys/stat.h>
+#include <kernel_stat.h>
+
+#include <sysdep.h>
+#include <sys/syscall.h>
+
+#include <xstatconv.h>
+
+
+/* Get information about the file NAME in BUF. */
+int
+__lxstat (int vers, const char *name, struct stat *buf)
+{
+ int result;
+
+ if (vers == _STAT_VER_KERNEL)
+ return INLINE_SYSCALL (lstat, 2, name, buf);
+
+ {
+ struct stat64 buf64;
+
+ INTERNAL_SYSCALL_DECL (err);
+ result = INTERNAL_SYSCALL (lstat64, err, 2, name, &buf64);
+ if (__glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (result, err)))
+ return INLINE_SYSCALL_ERROR_RETURN_VALUE (INTERNAL_SYSCALL_ERRNO (result,
+ err));
+ else
+ return __xstat32_conv (vers, &buf64, buf);
+ }
+}
+
+hidden_def (__lxstat)
+weak_alias (__lxstat, _lxstat);
+#if XSTAT_IS_XSTAT64
+#undef __lxstat64
+strong_alias (__lxstat, __lxstat64);
+hidden_ver (__lxstat, __lxstat64)
+#endif
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/makecontext.S b/REORG.TODO/sysdeps/unix/sysv/linux/i386/makecontext.S
new file mode 100644
index 0000000000..6d396dd328
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/makecontext.S
@@ -0,0 +1,120 @@
+/* Create new context.
+ Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+
+#include "ucontext_i.h"
+
+
+ENTRY(__makecontext)
+ movl 4(%esp), %eax
+
+ /* Load the address of the function we are supposed to run. */
+ movl 8(%esp), %ecx
+
+ /* Compute the address of the stack. The information comes from
+ to us_stack element. */
+ movl oSS_SP(%eax), %edx
+ movl %ecx, oEIP(%eax)
+ addl oSS_SIZE(%eax), %edx
+
+ /* Remember the number of parameters for the exit handler since
+ it has to remove them. We store the number in the EBX register
+ which the function we will call must preserve. */
+ movl 12(%esp), %ecx
+ movl %ecx, oEBX(%eax)
+
+ /* Make room on the new stack for the parameters.
+ Room for the arguments, return address (== L(exitcode)) and
+ oLINK pointer is needed. One of the pointer sizes is subtracted
+ after aligning the stack. */
+ negl %ecx
+ leal -4(%edx,%ecx,4), %edx
+ negl %ecx
+
+ /* Align the stack. */
+ andl $0xfffffff0, %edx
+ subl $4, %edx
+
+ /* Store the future stack pointer. */
+ movl %edx, oESP(%eax)
+
+ /* Put the next context on the new stack (from the uc_link
+ element). */
+ movl oLINK(%eax), %eax
+ movl %eax, 4(%edx,%ecx,4)
+
+ /* Copy all the parameters. */
+ jecxz 2f
+1: movl 12(%esp,%ecx,4), %eax
+ movl %eax, (%edx,%ecx,4)
+ decl %ecx
+ jnz 1b
+2:
+
+ /* If the function we call returns we must continue with the
+ context which is given in the uc_link element. To do this
+ set the return address for the function the user provides
+ to a little bit of helper code which does the magic (see
+ below). */
+#ifdef PIC
+ call 1f
+ cfi_adjust_cfa_offset (4)
+1: popl %ecx
+ cfi_adjust_cfa_offset (-4)
+ addl $L(exitcode)-1b, %ecx
+ movl %ecx, (%edx)
+#else
+ movl $L(exitcode), (%edx)
+#endif
+ /* We need to terminate the FDE here instead of after ret because
+ the unwinder looks at ra-1 for unwind information. */
+ cfi_endproc
+
+ /* 'makecontext' returns no value. */
+ ret
+
+ /* This is the helper code which gets called if a function which
+ is registered with 'makecontext' returns. In this case we
+ have to install the context listed in the uc_link element of
+ the context 'makecontext' manipulated at the time of the
+ 'makecontext' call. If the pointer is NULL the process must
+ terminate. */
+L(exitcode):
+ /* This removes the parameters passed to the function given to
+ 'makecontext' from the stack. EBX contains the number of
+ parameters (see above). */
+ leal (%esp,%ebx,4), %esp
+
+ cmpl $0, (%esp) /* Check the next context. */
+ je 2f /* If it is zero exit. */
+
+ call HIDDEN_JUMPTARGET(__setcontext)
+ /* If this returns (which can happen if the syscall fails) we'll
+ exit the program with the return error value (-1). */
+
+ movl %eax, (%esp)
+2: call HIDDEN_JUMPTARGET(exit)
+ /* The 'exit' call should never return. In case it does cause
+ the process to terminate. */
+ hlt
+ cfi_startproc
+END(__makecontext)
+
+weak_alias (__makecontext, makecontext)
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/olddirent.h b/REORG.TODO/sysdeps/unix/sysv/linux/i386/olddirent.h
new file mode 100644
index 0000000000..413f78d108
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/olddirent.h
@@ -0,0 +1,44 @@
+/* Copyright (C) 2000-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 __OLD_DIRENT_H
+#define __OLD_DIRENT_H 1
+
+#include <dirent.h>
+
+struct __old_dirent64
+ {
+ __ino_t d_ino;
+ __off64_t d_off;
+ unsigned short int d_reclen;
+ unsigned char d_type;
+ char d_name[256]; /* We must not include limits.h! */
+ };
+
+/* Now define the internal interfaces. */
+extern struct __old_dirent64 *__old_readdir64 (DIR *__dirp);
+extern int __old_readdir64_r (DIR *__dirp, struct __old_dirent64 *__entry,
+ struct __old_dirent64 **__result);
+extern __ssize_t __old_getdents64 (int __fd, char *__buf, size_t __nbytes)
+ internal_function;
+int __old_scandir64 (const char * __dir,
+ struct __old_dirent64 *** __namelist,
+ int (*__selector) (const struct __old_dirent64 *),
+ int (*__cmp) (const struct __old_dirent64 **,
+ const struct __old_dirent64 **));
+
+#endif
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/profil-counter.h b/REORG.TODO/sysdeps/unix/sysv/linux/i386/profil-counter.h
new file mode 100644
index 0000000000..3e7f75d525
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/profil-counter.h
@@ -0,0 +1,31 @@
+/* Low-level statistical profiling support function. Linux/i386 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>
+
+static void
+__profil_counter (int signo, const SIGCONTEXT scp)
+{
+ profil_count ((void *) GET_PC (scp));
+
+ /* This is a hack to prevent the compiler from implementing the
+ above function call as a sibcall. The sibcall would overwrite
+ the signal context. */
+ asm volatile ("");
+}
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/putmsg.c b/REORG.TODO/sysdeps/unix/sysv/linux/i386/putmsg.c
new file mode 100644
index 0000000000..7270eb07ab
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/putmsg.c
@@ -0,0 +1,34 @@
+/* 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/>. */
+
+#include <errno.h>
+#include <stddef.h>
+#include <stropts.h>
+
+#include <sysdep.h>
+#include <sys/syscall.h>
+
+#ifdef __NR_putpmsg
+int
+putmsg (int fildes, const struct strbuf *ctlptr, const struct strbuf *dataptr,
+ int flags)
+{
+ return INLINE_SYSCALL (putpmsg, 5, fildes, ctlptr, dataptr, -1, flags);
+}
+#else
+# include <streams/putmsg.c>
+#endif
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/readdir64.c b/REORG.TODO/sysdeps/unix/sysv/linux/i386/readdir64.c
new file mode 100644
index 0000000000..f80b6a7ba2
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/readdir64.c
@@ -0,0 +1,43 @@
+/* Copyright (C) 2000-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/>. */
+
+#define __READDIR __readdir64
+#define __GETDENTS __getdents64
+#define DIRENT_TYPE struct dirent64
+
+#include <sysdeps/posix/readdir.c>
+
+#include <shlib-compat.h>
+
+#undef __READDIR
+#undef __GETDENTS
+#undef DIRENT_TYPE
+
+versioned_symbol (libc, __readdir64, readdir64, GLIBC_2_2);
+
+#if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2)
+
+#include <sysdeps/unix/sysv/linux/i386/olddirent.h>
+
+#define __READDIR attribute_compat_text_section __old_readdir64
+#define __GETDENTS __old_getdents64
+#define DIRENT_TYPE struct __old_dirent64
+
+#include <sysdeps/posix/readdir.c>
+
+compat_symbol (libc, __old_readdir64, readdir64, GLIBC_2_1);
+#endif
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/readdir64_r.c b/REORG.TODO/sysdeps/unix/sysv/linux/i386/readdir64_r.c
new file mode 100644
index 0000000000..344fd53d02
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/readdir64_r.c
@@ -0,0 +1,43 @@
+/* Copyright (C) 2000-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/>. */
+
+#define __READDIR_R __readdir64_r
+#define __GETDENTS __getdents64
+#define DIRENT_TYPE struct dirent64
+
+#include <sysdeps/posix/readdir_r.c>
+
+#undef __READDIR_R
+#undef __GETDENTS
+#undef DIRENT_TYPE
+
+#include <shlib-compat.h>
+
+versioned_symbol (libc, __readdir64_r, readdir64_r, GLIBC_2_2);
+
+#if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2)
+
+#include <sysdeps/unix/sysv/linux/i386/olddirent.h>
+
+#define __READDIR_R attribute_compat_text_section __old_readdir64_r
+#define __GETDENTS __old_getdents64
+#define DIRENT_TYPE struct __old_dirent64
+
+#include <sysdeps/posix/readdir_r.c>
+
+compat_symbol (libc, __old_readdir64_r, readdir64_r, GLIBC_2_1);
+#endif
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/readelflib.c b/REORG.TODO/sysdeps/unix/sysv/linux/i386/readelflib.c
new file mode 100644
index 0000000000..5312007eb1
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/readelflib.c
@@ -0,0 +1,93 @@
+/* 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>, 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/>. */
+
+
+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, file_flag = 0;
+
+ switch (elf_header->e_machine)
+ {
+ case EM_X86_64:
+ if (elf_header->e_ident[EI_CLASS] == ELFCLASS64)
+ /* X86-64 64bit libraries are always libc.so.6+. */
+ file_flag = FLAG_X8664_LIB64|FLAG_ELF_LIBC6;
+ else
+ /* X32 libraries are always libc.so.6+. */
+ file_flag = FLAG_X8664_LIBX32|FLAG_ELF_LIBC6;
+ break;
+#ifndef SKIP_EM_IA_64
+ case EM_IA_64:
+ if (elf_header->e_ident[EI_CLASS] == ELFCLASS64)
+ {
+ /* IA64 64bit libraries are always libc.so.6+. */
+ file_flag = FLAG_IA64_LIB64|FLAG_ELF_LIBC6;
+ break;
+ }
+ goto failed;
+#endif
+ case EM_386:
+ if (elf_header->e_ident[EI_CLASS] == ELFCLASS32)
+ break;
+ /* Fall through. */
+ default:
+#ifndef SKIP_EM_IA_64
+failed:
+#endif
+ error (0, 0, _("%s is for unknown machine %d.\n"),
+ file_name, elf_header->e_machine);
+ return 1;
+ }
+
+ if (elf_header->e_ident[EI_CLASS] == ELFCLASS32)
+ ret = process_elf32_file (file_name, lib, flag, osversion, soname,
+ file_contents, file_length);
+ else
+ ret = process_elf64_file (file_name, lib, flag, osversion, soname,
+ file_contents, file_length);
+
+ if (!ret && file_flag)
+ *flag = file_flag;
+
+ 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/i386/register-dump.h b/REORG.TODO/sysdeps/unix/sysv/linux/i386/register-dump.h
new file mode 100644
index 0000000000..0ca0866d47
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/register-dump.h
@@ -0,0 +1,255 @@
+/* Dump registers.
+ Copyright (C) 1998-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 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>
+
+/* We will print the register dump in this format:
+
+ EAX: XXXXXXXX EBX: XXXXXXXX ECX: XXXXXXXX EDX: XXXXXXXX
+ ESI: XXXXXXXX EDI: XXXXXXXX EBP: XXXXXXXX ESP: XXXXXXXX
+
+ EIP: XXXXXXXX EFLAGS: XXXXXXXX
+
+ CS: XXXX DS: XXXX ES: XXXX FS: XXXX GS: XXXX SS: XXXX
+
+ Trap: XXXXXXXX Error: XXXXXXXX OldMask: XXXXXXXX
+ ESP/SIGNAL: XXXXXXXX CR2: XXXXXXXX
+
+ FPUCW: XXXXXXXX FPUSW: XXXXXXXX TAG: XXXXXXXX
+ IPOFF: XXXXXXXX CSSEL: XXXX DATAOFF: XXXXXXXX DATASEL: XXXX
+
+ ST(0) XXXX XXXXXXXXXXXXXXXX ST(1) XXXX XXXXXXXXXXXXXXXX
+ ST(2) XXXX XXXXXXXXXXXXXXXX ST(3) XXXX XXXXXXXXXXXXXXXX
+ ST(4) XXXX XXXXXXXXXXXXXXXX ST(5) XXXX XXXXXXXXXXXXXXXX
+ ST(6) XXXX XXXXXXXXXXXXXXXX ST(7) XXXX XXXXXXXXXXXXXXXX
+
+ */
+
+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, struct sigcontext *ctx)
+{
+ char regs[21][8];
+ char fpregs[31][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->eax, regs[0], 8);
+ hexvalue (ctx->ebx, regs[1], 8);
+ hexvalue (ctx->ecx, regs[2], 8);
+ hexvalue (ctx->edx, regs[3], 8);
+ hexvalue (ctx->esi, regs[4], 8);
+ hexvalue (ctx->edi, regs[5], 8);
+ hexvalue (ctx->ebp, regs[6], 8);
+ hexvalue (ctx->esp, regs[7], 8);
+ hexvalue (ctx->eip, regs[8], 8);
+ hexvalue (ctx->eflags, regs[9], 8);
+ hexvalue (ctx->cs, regs[10], 4);
+ hexvalue (ctx->ds, regs[11], 4);
+ hexvalue (ctx->es, regs[12], 4);
+ hexvalue (ctx->fs, regs[13], 4);
+ hexvalue (ctx->gs, regs[14], 4);
+ hexvalue (ctx->ss, regs[15], 4);
+ hexvalue (ctx->trapno, regs[16], 8);
+ hexvalue (ctx->err, regs[17], 8);
+ hexvalue (ctx->oldmask, regs[18], 8);
+ hexvalue (ctx->esp_at_signal, regs[19], 8);
+ hexvalue (ctx->cr2, regs[20], 8);
+
+ /* Generate the output. */
+ ADD_STRING ("Register dump:\n\n EAX: ");
+ ADD_MEM (regs[0], 8);
+ ADD_STRING (" EBX: ");
+ ADD_MEM (regs[1], 8);
+ ADD_STRING (" ECX: ");
+ ADD_MEM (regs[2], 8);
+ ADD_STRING (" EDX: ");
+ ADD_MEM (regs[3], 8);
+ ADD_STRING ("\n ESI: ");
+ ADD_MEM (regs[4], 8);
+ ADD_STRING (" EDI: ");
+ ADD_MEM (regs[5], 8);
+ ADD_STRING (" EBP: ");
+ ADD_MEM (regs[6], 8);
+ ADD_STRING (" ESP: ");
+ ADD_MEM (regs[7], 8);
+ ADD_STRING ("\n\n EIP: ");
+ ADD_MEM (regs[8], 8);
+ ADD_STRING (" EFLAGS: ");
+ ADD_MEM (regs[9], 8);
+ ADD_STRING ("\n\n CS: ");
+ ADD_MEM (regs[10], 4);
+ ADD_STRING (" DS: ");
+ ADD_MEM (regs[11], 4);
+ ADD_STRING (" ES: ");
+ ADD_MEM (regs[12], 4);
+ ADD_STRING (" FS: ");
+ ADD_MEM (regs[13], 4);
+ ADD_STRING (" GS: ");
+ ADD_MEM (regs[14], 4);
+ ADD_STRING (" SS: ");
+ ADD_MEM (regs[15], 4);
+ ADD_STRING ("\n\n Trap: ");
+ ADD_MEM (regs[16], 8);
+ ADD_STRING (" Error: ");
+ ADD_MEM (regs[17], 8);
+ ADD_STRING (" OldMask: ");
+ ADD_MEM (regs[18], 8);
+ ADD_STRING ("\n ESP/signal: ");
+ ADD_MEM (regs[19], 8);
+ ADD_STRING (" CR2: ");
+ ADD_MEM (regs[20], 8);
+
+ if (ctx->fpstate != NULL)
+ {
+
+ /* Generate output for the FPU control/status registers. */
+ hexvalue (ctx->fpstate->cw, fpregs[0], 8);
+ hexvalue (ctx->fpstate->sw, fpregs[1], 8);
+ hexvalue (ctx->fpstate->tag, fpregs[2], 8);
+ hexvalue (ctx->fpstate->ipoff, fpregs[3], 8);
+ hexvalue (ctx->fpstate->cssel, fpregs[4], 4);
+ hexvalue (ctx->fpstate->dataoff, fpregs[5], 8);
+ hexvalue (ctx->fpstate->datasel, fpregs[6], 4);
+
+ ADD_STRING ("\n\n FPUCW: ");
+ ADD_MEM (fpregs[0], 8);
+ ADD_STRING (" FPUSW: ");
+ ADD_MEM (fpregs[1], 8);
+ ADD_STRING (" TAG: ");
+ ADD_MEM (fpregs[2], 8);
+ ADD_STRING ("\n IPOFF: ");
+ ADD_MEM (fpregs[3], 8);
+ ADD_STRING (" CSSEL: ");
+ ADD_MEM (fpregs[4], 4);
+ ADD_STRING (" DATAOFF: ");
+ ADD_MEM (fpregs[5], 8);
+ ADD_STRING (" DATASEL: ");
+ ADD_MEM (fpregs[6], 4);
+
+ /* Now the real FPU registers. */
+ hexvalue (ctx->fpstate->_st[0].exponent, fpregs[7], 8);
+ hexvalue (ctx->fpstate->_st[0].significand[3] << 16
+ | ctx->fpstate->_st[0].significand[2], fpregs[8], 8);
+ hexvalue (ctx->fpstate->_st[0].significand[1] << 16
+ | ctx->fpstate->_st[0].significand[0], fpregs[9], 8);
+ hexvalue (ctx->fpstate->_st[1].exponent, fpregs[10], 8);
+ hexvalue (ctx->fpstate->_st[1].significand[3] << 16
+ | ctx->fpstate->_st[1].significand[2], fpregs[11], 8);
+ hexvalue (ctx->fpstate->_st[1].significand[1] << 16
+ | ctx->fpstate->_st[1].significand[0], fpregs[12], 8);
+ hexvalue (ctx->fpstate->_st[2].exponent, fpregs[13], 8);
+ hexvalue (ctx->fpstate->_st[2].significand[3] << 16
+ | ctx->fpstate->_st[2].significand[2], fpregs[14], 8);
+ hexvalue (ctx->fpstate->_st[2].significand[1] << 16
+ | ctx->fpstate->_st[2].significand[0], fpregs[15], 8);
+ hexvalue (ctx->fpstate->_st[3].exponent, fpregs[16], 8);
+ hexvalue (ctx->fpstate->_st[3].significand[3] << 16
+ | ctx->fpstate->_st[3].significand[2], fpregs[17], 8);
+ hexvalue (ctx->fpstate->_st[3].significand[1] << 16
+ | ctx->fpstate->_st[3].significand[0], fpregs[18], 8);
+ hexvalue (ctx->fpstate->_st[4].exponent, fpregs[19], 8);
+ hexvalue (ctx->fpstate->_st[4].significand[3] << 16
+ | ctx->fpstate->_st[4].significand[2], fpregs[20], 8);
+ hexvalue (ctx->fpstate->_st[4].significand[1] << 16
+ | ctx->fpstate->_st[4].significand[0], fpregs[21], 8);
+ hexvalue (ctx->fpstate->_st[5].exponent, fpregs[22], 8);
+ hexvalue (ctx->fpstate->_st[5].significand[3] << 16
+ | ctx->fpstate->_st[5].significand[2], fpregs[23], 8);
+ hexvalue (ctx->fpstate->_st[5].significand[1] << 16
+ | ctx->fpstate->_st[5].significand[0], fpregs[24], 8);
+ hexvalue (ctx->fpstate->_st[6].exponent, fpregs[25], 8);
+ hexvalue (ctx->fpstate->_st[6].significand[3] << 16
+ | ctx->fpstate->_st[6].significand[2], fpregs[26], 8);
+ hexvalue (ctx->fpstate->_st[6].significand[1] << 16
+ | ctx->fpstate->_st[6].significand[0], fpregs[27], 8);
+ hexvalue (ctx->fpstate->_st[7].exponent, fpregs[28], 8);
+ hexvalue (ctx->fpstate->_st[7].significand[3] << 16
+ | ctx->fpstate->_st[7].significand[2], fpregs[29], 8);
+ hexvalue (ctx->fpstate->_st[7].significand[1] << 16
+ | ctx->fpstate->_st[7].significand[0], fpregs[30], 8);
+
+ ADD_STRING ("\n\n ST(0) ");
+ ADD_MEM (fpregs[7], 4);
+ ADD_STRING (" ");
+ ADD_MEM (fpregs[8], 8);
+ ADD_MEM (fpregs[9], 8);
+ ADD_STRING (" ST(1) ");
+ ADD_MEM (fpregs[10], 4);
+ ADD_STRING (" ");
+ ADD_MEM (fpregs[11], 8);
+ ADD_MEM (fpregs[12], 8);
+ ADD_STRING ("\n ST(2) ");
+ ADD_MEM (fpregs[13], 4);
+ ADD_STRING (" ");
+ ADD_MEM (fpregs[14], 8);
+ ADD_MEM (fpregs[15], 8);
+ ADD_STRING (" ST(3) ");
+ ADD_MEM (fpregs[16], 4);
+ ADD_STRING (" ");
+ ADD_MEM (fpregs[17], 8);
+ ADD_MEM (fpregs[18], 8);
+ ADD_STRING ("\n ST(4) ");
+ ADD_MEM (fpregs[19], 4);
+ ADD_STRING (" ");
+ ADD_MEM (fpregs[20], 8);
+ ADD_MEM (fpregs[21], 8);
+ ADD_STRING (" ST(5) ");
+ ADD_MEM (fpregs[22], 4);
+ ADD_STRING (" ");
+ ADD_MEM (fpregs[23], 8);
+ ADD_MEM (fpregs[24], 8);
+ ADD_STRING ("\n ST(6) ");
+ ADD_MEM (fpregs[25], 4);
+ ADD_STRING (" ");
+ ADD_MEM (fpregs[26], 8);
+ ADD_MEM (fpregs[27], 8);
+ ADD_STRING (" ST(7) ");
+ ADD_MEM (fpregs[28], 4);
+ ADD_STRING (" ");
+ ADD_MEM (fpregs[29], 8);
+ ADD_MEM (fpregs[30], 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/i386/scandir64.c b/REORG.TODO/sysdeps/unix/sysv/linux/i386/scandir64.c
new file mode 100644
index 0000000000..5089a2f1a5
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/scandir64.c
@@ -0,0 +1,136 @@
+/* Copyright (C) 2000-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 <dirent.h>
+
+#define SCANDIR __scandir64
+#define SCANDIR_TAIL __scandir64_tail
+#define DIRENT_TYPE struct dirent64
+
+#include <dirent/scandir.c>
+
+#undef SCANDIR
+#undef SCANDIR_TAIL
+#undef DIRENT_TYPE
+
+#include <shlib-compat.h>
+
+versioned_symbol (libc, __scandir64, scandir64, GLIBC_2_2);
+
+#if SHLIB_COMPAT (libc, GLIBC_2_1, GLIBC_2_2)
+# include <string.h>
+# include <errno.h>
+# include "olddirent.h"
+
+int
+__old_scandir64 (const char *dir, struct __old_dirent64 ***namelist,
+ int (*select) (const struct __old_dirent64 *),
+ int (*cmp) (const struct __old_dirent64 **,
+ const struct __old_dirent64 **))
+{
+ DIR *dp = __opendir (dir);
+ struct __old_dirent64 **v = NULL;
+ size_t vsize = 0;
+ struct scandir_cancel_struct c;
+ struct __old_dirent64 *d;
+ int save;
+
+ if (dp == NULL)
+ return -1;
+
+ save = errno;
+ __set_errno (0);
+
+ c.dp = dp;
+ c.v = NULL;
+ c.cnt = 0;
+ __libc_cleanup_push (__scandir_cancel_handler, &c);
+
+ while ((d = __old_readdir64 (dp)) != NULL)
+ {
+ int use_it = select == NULL;
+
+ if (! use_it)
+ {
+ use_it = select (d);
+ /* The select function might have changed errno. It was
+ zero before and it need to be again to make the latter
+ tests work. */
+ __set_errno (0);
+ }
+
+ if (use_it)
+ {
+ struct __old_dirent64 *vnew;
+ size_t dsize;
+
+ /* Ignore errors from select or readdir */
+ __set_errno (0);
+
+ if (__glibc_unlikely (c.cnt == vsize))
+ {
+ struct __old_dirent64 **new;
+ if (vsize == 0)
+ vsize = 10;
+ else
+ vsize *= 2;
+ new = (struct __old_dirent64 **) realloc (v,
+ vsize * sizeof (*v));
+ if (new == NULL)
+ break;
+ v = new;
+ c.v = (void *) v;
+ }
+
+ dsize = &d->d_name[_D_ALLOC_NAMLEN (d)] - (char *) d;
+ vnew = (struct __old_dirent64 *) malloc (dsize);
+ if (vnew == NULL)
+ break;
+
+ v[c.cnt++] = (struct __old_dirent64 *) memcpy (vnew, d, dsize);
+ }
+ }
+
+ if (__builtin_expect (errno, 0) != 0)
+ {
+ save = errno;
+
+ while (c.cnt > 0)
+ free (v[--c.cnt]);
+ free (v);
+ c.cnt = -1;
+ }
+ else
+ {
+ /* Sort the list if we have a comparison function to sort with. */
+ if (cmp != NULL)
+ qsort (v, c.cnt, sizeof (*v),
+ (int (*) (const void *, const void *)) cmp);
+
+ *namelist = v;
+ }
+
+ __libc_cleanup_pop (0);
+
+ (void) __closedir (dp);
+ __set_errno (save);
+
+ return c.cnt;
+}
+compat_symbol (libc, __old_scandir64, scandir64, GLIBC_2_1);
+
+#endif
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/setcontext.S b/REORG.TODO/sysdeps/unix/sysv/linux/i386/setcontext.S
new file mode 100644
index 0000000000..c6fa618a01
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/setcontext.S
@@ -0,0 +1,96 @@
+/* Install given context.
+ Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+
+#include "ucontext_i.h"
+
+
+ENTRY(__setcontext)
+ /* Load address of the context data structure. */
+ movl 4(%esp), %eax
+
+ /* Get the current signal mask. Note that we preserve EBX in case
+ the system call fails and we return from the function with an
+ error. */
+ pushl %ebx
+ cfi_adjust_cfa_offset (4)
+ xorl %edx, %edx
+ leal oSIGMASK(%eax), %ecx
+ movl $SIG_SETMASK, %ebx
+ cfi_rel_offset (ebx, 0)
+ movl $__NR_sigprocmask, %eax
+ ENTER_KERNEL
+ popl %ebx
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (ebx)
+ cmpl $-4095, %eax /* Check %eax for error. */
+ jae SYSCALL_ERROR_LABEL /* Jump to error handler if error. */
+
+ /* EAX was modified, reload it. */
+ movl 4(%esp), %eax
+
+ /* Restore the floating-point context. Not the registers, only the
+ rest. */
+ movl oFPREGS(%eax), %ecx
+ fldenv (%ecx)
+
+ /* Restore the FS segment register. We don't touch the GS register
+ since it is used for threads. */
+ movl oFS(%eax), %ecx
+ movw %cx, %fs
+
+ /* Fetch the address to return to. */
+ movl oEIP(%eax), %ecx
+
+ /* Load the new stack pointer. */
+ cfi_def_cfa (eax, 0)
+ cfi_offset (edi, oEDI)
+ cfi_offset (esi, oESI)
+ cfi_offset (ebp, oEBP)
+ cfi_offset (ebx, oEBX)
+ cfi_offset (edx, oEDX)
+ cfi_offset (ecx, oECX)
+ movl oESP(%eax), %esp
+
+ /* Push the return address on the new stack so we can return there. */
+ pushl %ecx
+
+ /* Load the values of all the 32-bit registers (except ESP).
+ Since we are loading from EAX, it must be last. */
+ movl oEDI(%eax), %edi
+ movl oESI(%eax), %esi
+ movl oEBP(%eax), %ebp
+ movl oEBX(%eax), %ebx
+ movl oEDX(%eax), %edx
+ movl oECX(%eax), %ecx
+ movl oEAX(%eax), %eax
+
+ /* End FDE here, we fall into another context. */
+ cfi_endproc
+ cfi_startproc
+
+ /* The following 'ret' will pop the address of the code and jump
+ to it. */
+
+ ret
+PSEUDO_END(__setcontext)
+libc_hidden_def (__setcontext)
+
+weak_alias (__setcontext, setcontext)
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/shlib-versions b/REORG.TODO/sysdeps/unix/sysv/linux/i386/shlib-versions
new file mode 100644
index 0000000000..ca5d15b1df
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/shlib-versions
@@ -0,0 +1 @@
+ld=ld-linux.so.2
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/sigaction.c b/REORG.TODO/sysdeps/unix/sysv/linux/i386/sigaction.c
new file mode 100644
index 0000000000..0cc9d67ad9
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/sigaction.c
@@ -0,0 +1,129 @@
+/* POSIX.1 `sigaction' call for Linux/i386.
+ Copyright (C) 1991-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 <errno.h>
+#include <stddef.h>
+#include <signal.h>
+#include <string.h>
+
+#include <sysdep.h>
+#include <sys/syscall.h>
+#include <ldsodefs.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>
+
+/* We do not globally define the SA_RESTORER flag so do it here. */
+#define SA_RESTORER 0x04000000
+
+
+/* Using the hidden attribute here does not change the code but it
+ helps to avoid warnings. */
+#ifdef __NR_rt_sigaction
+extern void restore_rt (void) asm ("__restore_rt") attribute_hidden;
+#endif
+extern void restore (void) asm ("__restore") attribute_hidden;
+
+
+/* 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;
+ kact.sa_flags = act->sa_flags;
+ memcpy (&kact.sa_mask, &act->sa_mask, sizeof (sigset_t));
+
+ if (GLRO(dl_sysinfo_dso) == NULL)
+ {
+ kact.sa_flags |= SA_RESTORER;
+
+ kact.sa_restorer = ((act->sa_flags & SA_SIGINFO)
+ ? &restore_rt : &restore);
+ }
+ }
+
+ /* XXX The size argument hopefully will have to be changed to the
+ real size of the user-level sigset_t. */
+ INTERNAL_SYSCALL_DECL (err);
+ result = INTERNAL_SYSCALL (rt_sigaction, err, 4,
+ sig, act ? &kact : NULL,
+ oact ? &koact : NULL, _NSIG / 8);
+ if (__glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (result, err)))
+ return INLINE_SYSCALL_ERROR_RETURN_VALUE (INTERNAL_SYSCALL_ERRNO (result,
+ err));
+ else 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;
+ oact->sa_restorer = koact.sa_restorer;
+ }
+ return result;
+}
+libc_hidden_def (__libc_sigaction)
+
+#include <nptl/sigaction.c>
+
+/* NOTE: Please think twice before making any changes to the bits of
+ code below. GDB needs some intimate knowledge about it to
+ recognize them as signal trampolines, and make backtraces through
+ signal handlers work right. Important are both the names
+ (__restore and __restore_rt) and the exact instruction sequence.
+ If you ever feel the need to make any changes, please notify the
+ appropriate GDB maintainer. */
+
+#define RESTORE(name, syscall) RESTORE2 (name, syscall)
+#define RESTORE2(name, syscall) \
+asm \
+ ( \
+ ".text\n" \
+ " .align 16\n" \
+ "__" #name ":\n" \
+ " movl $" #syscall ", %eax\n" \
+ " int $0x80" \
+ );
+
+#ifdef __NR_rt_sigaction
+/* The return code for realtime-signals. */
+RESTORE (restore_rt, __NR_rt_sigreturn)
+#endif
+
+/* For the boring old signals. */
+#undef RESTORE2
+#define RESTORE2(name, syscall) \
+asm \
+ ( \
+ ".text\n" \
+ " .align 8\n" \
+ "__" #name ":\n" \
+ " popl %eax\n" \
+ " movl $" #syscall ", %eax\n" \
+ " int $0x80" \
+ );
+
+RESTORE (restore, __NR_sigreturn)
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/sigcontextinfo.h b/REORG.TODO/sysdeps/unix/sysv/linux/i386/sigcontextinfo.h
new file mode 100644
index 0000000000..7e2764eb65
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/sigcontextinfo.h
@@ -0,0 +1,50 @@
+/* Copyright (C) 1998-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 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/>. */
+
+#define SIGCONTEXT struct sigcontext
+#define SIGCONTEXT_EXTRA_ARGS
+#define GET_PC(ctx) ((void *) ctx.eip)
+#define GET_FRAME(ctx) ((void *) ctx.ebp)
+#define GET_STACK(ctx) ((void *) ctx.esp_at_signal)
+#define CALL_SIGHANDLER(handler, signo, ctx) \
+do { \
+ int __tmp1, __tmp2, __tmp3, __tmp4; \
+ __asm __volatile ("movl\t%%esp, %%edi\n\t" \
+ "andl\t$-16, %%esp\n\t" \
+ "subl\t%8, %%esp\n\t" \
+ "movl\t%%edi, %c8-4(%%esp)\n\t" \
+ "movl\t%1, 0(%%esp)\n\t" \
+ "leal\t4(%%esp), %%edi\n\t" \
+ "cld\n\t" \
+ "rep\tmovsl\n\t" \
+ "call\t*%0\n\t" \
+ "cld\n\t" \
+ "movl\t%9, %%ecx\n\t" \
+ "subl\t%%edi, %%esi\n\t" \
+ "leal\t4(%%esp,%%esi,1), %%edi\n\t" \
+ "leal\t4(%%esp), %%esi\n\t" \
+ "rep\tmovsl\n\t" \
+ "movl\t%c8-4(%%esp), %%esp\n\t" \
+ : "=a" (__tmp1), "=d" (__tmp2), "=S" (__tmp3), \
+ "=c" (__tmp4) \
+ : "0" (handler), "1" (signo), "2" (&ctx), \
+ "3" (sizeof (struct sigcontext) / 4), \
+ "n" ((sizeof (struct sigcontext) + 19) & ~15), \
+ "i" (sizeof (struct sigcontext) / 4) \
+ : "cc", "edi"); \
+} while (0)
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/smp.h b/REORG.TODO/sysdeps/unix/sysv/linux/i386/smp.h
new file mode 100644
index 0000000000..7d1a7f201b
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/smp.h
@@ -0,0 +1,55 @@
+/* Determine whether the host has multiple processors. Linux 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 Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If
+ not, see <http://www.gnu.org/licenses/>. */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <string.h>
+#include <sys/utsname.h>
+#include <not-cancel.h>
+
+/* Test whether the machine has more than one processor. This is not the
+ best test but good enough. More complicated tests would require `malloc'
+ which is not available at that time. */
+static inline int
+is_smp_system (void)
+{
+ union
+ {
+ struct utsname uts;
+ char buf[512];
+ } u;
+ char *cp;
+
+ /* Try reading the number using `sysctl' first. */
+ if (uname (&u.uts) == 0)
+ cp = u.uts.version;
+ else
+ {
+ /* This was not successful. Now try reading the /proc filesystem. */
+ int fd = open_not_cancel_2 ("/proc/sys/kernel/version", O_RDONLY);
+ if (__builtin_expect (fd, 0) == -1
+ || read_not_cancel (fd, u.buf, sizeof (u.buf)) <= 0)
+ /* This also didn't work. We give up and say it's a UP machine. */
+ u.buf[0] = '\0';
+
+ close_not_cancel_no_status (fd);
+ cp = u.buf;
+ }
+
+ return strstr (cp, "SMP") != NULL;
+}
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/swapcontext.S b/REORG.TODO/sysdeps/unix/sysv/linux/i386/swapcontext.S
new file mode 100644
index 0000000000..cfdb1f0ad1
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/swapcontext.S
@@ -0,0 +1,109 @@
+/* Save current context and install the given one.
+ Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+
+#include "ucontext_i.h"
+
+
+ENTRY(__swapcontext)
+ /* Load address of the context data structure we save in. */
+ movl 4(%esp), %eax
+
+ /* Return value of swapcontext. EAX is the only register whose
+ value is not preserved. */
+ movl $0, oEAX(%eax)
+
+ /* Save the 32-bit register values and the return address. */
+ movl %ecx, oECX(%eax)
+ movl %edx, oEDX(%eax)
+ movl %edi, oEDI(%eax)
+ movl %esi, oESI(%eax)
+ movl %ebp, oEBP(%eax)
+ movl (%esp), %ecx
+ movl %ecx, oEIP(%eax)
+ leal 4(%esp), %ecx
+ movl %ecx, oESP(%eax)
+ movl %ebx, oEBX(%eax)
+
+ /* Save the FS segment register. */
+ xorl %edx, %edx
+ movw %fs, %dx
+ movl %edx, oFS(%eax)
+
+ /* We have separate floating-point register content memory on the
+ stack. We use the __fpregs_mem block in the context. Set the
+ links up correctly. */
+ leal oFPREGSMEM(%eax), %ecx
+ movl %ecx, oFPREGS(%eax)
+ /* Save the floating-point context. */
+ fnstenv (%ecx)
+
+ /* Load address of the context data structure we have to load. */
+ movl 8(%esp), %ecx
+
+ /* Save the current signal mask and install the new one. */
+ pushl %ebx
+ leal oSIGMASK(%eax), %edx
+ leal oSIGMASK(%ecx), %ecx
+ movl $SIG_SETMASK, %ebx
+ movl $__NR_sigprocmask, %eax
+ ENTER_KERNEL
+ popl %ebx
+ cmpl $-4095, %eax /* Check %eax for error. */
+ jae SYSCALL_ERROR_LABEL /* Jump to error handler if error. */
+
+ /* EAX was modified, reload it. */
+ movl 8(%esp), %eax
+
+ /* Restore the floating-point context. Not the registers, only the
+ rest. */
+ movl oFPREGS(%eax), %ecx
+ fldenv (%ecx)
+
+ /* Restore the FS segment register. We don't touch the GS register
+ since it is used for threads. */
+ movl oFS(%eax), %edx
+ movw %dx, %fs
+
+ /* Fetch the address to return to. */
+ movl oEIP(%eax), %ecx
+
+ /* Load the new stack pointer. */
+ movl oESP(%eax), %esp
+
+ /* Push the return address on the new stack so we can return there. */
+ pushl %ecx
+
+ /* Load the values of all the 32-bit registers (except ESP).
+ Since we are loading from EAX, it must be last. */
+ movl oEDI(%eax), %edi
+ movl oESI(%eax), %esi
+ movl oEBP(%eax), %ebp
+ movl oEBX(%eax), %ebx
+ movl oEDX(%eax), %edx
+ movl oECX(%eax), %ecx
+ movl oEAX(%eax), %eax
+
+ /* The following 'ret' will pop the address of the code and jump
+ to it. */
+ ret
+PSEUDO_END(__swapcontext)
+
+weak_alias (__swapcontext, swapcontext)
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/syscall.S b/REORG.TODO/sysdeps/unix/sysv/linux/i386/syscall.S
new file mode 100644
index 0000000000..9d2f176ad4
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/syscall.S
@@ -0,0 +1,35 @@
+/* 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>
+
+/* Please consult the file sysdeps/unix/sysv/linux/i386/sysdep.h for
+ more information about the value -4095 used below.*/
+
+ .text
+ENTRY (syscall)
+
+ PUSHARGS_6 /* Save register contents. */
+ _DOARGS_6(44) /* Load arguments. */
+ movl 20(%esp), %eax /* Load syscall number into %eax. */
+ ENTER_KERNEL /* Do the system call. */
+ POPARGS_6 /* Restore register contents. */
+ cmpl $-4095, %eax /* Check %eax for error. */
+ jae SYSCALL_ERROR_LABEL /* Jump to error handler if error. */
+ ret /* Return to caller. */
+
+PSEUDO_END (syscall)
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/syscalls.list b/REORG.TODO/sysdeps/unix/sysv/linux/i386/syscalls.list
new file mode 100644
index 0000000000..58020dfae5
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/syscalls.list
@@ -0,0 +1,26 @@
+# File name Caller Syscall name Args Strong name Weak names
+
+chown - chown32 i:sii __chown chown@@GLIBC_2.1
+lchown - lchown32 i:sii __lchown lchown@@GLIBC_2.0 chown@GLIBC_2.0
+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
+
+modify_ldt EXTRA modify_ldt i:ipi __modify_ldt modify_ldt
+vm86old EXTRA vm86old i:p __vm86old vm86@GLIBC_2.0
+vm86 - vm86 i:ip __vm86 vm86@@GLIBC_2.3.4
+
+prlimit64 EXTRA prlimit64 i:iipp prlimit64
+
+fanotify_mark EXTRA fanotify_mark i:iiiiis fanotify_mark
+
+personality EXTRA personality Ei:i __personality personality
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h b/REORG.TODO/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
new file mode 100644
index 0000000000..ebf601918f
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
@@ -0,0 +1,153 @@
+/* Copyright (C) 2002-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2002.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have 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)
+
+# undef PSEUDO
+# define PSEUDO(name, syscall_name, args) \
+ .text; \
+ ENTRY (name) \
+ cmpl $0, %gs:MULTIPLE_THREADS_OFFSET; \
+ jne L(pseudo_cancel); \
+ .type __##syscall_name##_nocancel,@function; \
+ .globl __##syscall_name##_nocancel; \
+ __##syscall_name##_nocancel: \
+ DO_CALL (syscall_name, args); \
+ cmpl $-4095, %eax; \
+ jae SYSCALL_ERROR_LABEL; \
+ ret; \
+ .size __##syscall_name##_nocancel,.-__##syscall_name##_nocancel; \
+ L(pseudo_cancel): \
+ CENABLE \
+ SAVE_OLDTYPE_##args \
+ PUSHCARGS_##args \
+ DOCARGS_##args \
+ movl $SYS_ify (syscall_name), %eax; \
+ ENTER_KERNEL; \
+ POPCARGS_##args; \
+ POPSTATE_##args \
+ cmpl $-4095, %eax; \
+ jae SYSCALL_ERROR_LABEL
+
+# define SAVE_OLDTYPE_0 movl %eax, %ecx;
+# define SAVE_OLDTYPE_1 SAVE_OLDTYPE_0
+# define SAVE_OLDTYPE_2 pushl %eax; cfi_adjust_cfa_offset (4);
+# define SAVE_OLDTYPE_3 SAVE_OLDTYPE_2
+# define SAVE_OLDTYPE_4 SAVE_OLDTYPE_2
+# define SAVE_OLDTYPE_5 SAVE_OLDTYPE_2
+# define SAVE_OLDTYPE_6 SAVE_OLDTYPE_2
+
+# define PUSHCARGS_0 /* No arguments to push. */
+# define DOCARGS_0 /* No arguments to frob. */
+# define POPCARGS_0 /* No arguments to pop. */
+# define _PUSHCARGS_0 /* No arguments to push. */
+# define _POPCARGS_0 /* No arguments to pop. */
+
+# define PUSHCARGS_1 movl %ebx, %edx; cfi_register (ebx, edx); PUSHCARGS_0
+# define DOCARGS_1 _DOARGS_1 (4)
+# define POPCARGS_1 POPCARGS_0; movl %edx, %ebx; cfi_restore (ebx);
+# define _PUSHCARGS_1 pushl %ebx; cfi_adjust_cfa_offset (4); \
+ cfi_rel_offset (ebx, 0); _PUSHCARGS_0
+# define _POPCARGS_1 _POPCARGS_0; popl %ebx; \
+ cfi_adjust_cfa_offset (-4); cfi_restore (ebx);
+
+# define PUSHCARGS_2 PUSHCARGS_1
+# define DOCARGS_2 _DOARGS_2 (12)
+# define POPCARGS_2 POPCARGS_1
+# define _PUSHCARGS_2 _PUSHCARGS_1
+# define _POPCARGS_2 _POPCARGS_1
+
+# define PUSHCARGS_3 _PUSHCARGS_2
+# define DOCARGS_3 _DOARGS_3 (20)
+# define POPCARGS_3 _POPCARGS_3
+# define _PUSHCARGS_3 _PUSHCARGS_2
+# define _POPCARGS_3 _POPCARGS_2
+
+# define PUSHCARGS_4 _PUSHCARGS_4
+# define DOCARGS_4 _DOARGS_4 (28)
+# define POPCARGS_4 _POPCARGS_4
+# define _PUSHCARGS_4 pushl %esi; cfi_adjust_cfa_offset (4); \
+ cfi_rel_offset (esi, 0); _PUSHCARGS_3
+# define _POPCARGS_4 _POPCARGS_3; popl %esi; \
+ cfi_adjust_cfa_offset (-4); cfi_restore (esi);
+
+# define PUSHCARGS_5 _PUSHCARGS_5
+# define DOCARGS_5 _DOARGS_5 (36)
+# define POPCARGS_5 _POPCARGS_5
+# define _PUSHCARGS_5 pushl %edi; cfi_adjust_cfa_offset (4); \
+ cfi_rel_offset (edi, 0); _PUSHCARGS_4
+# define _POPCARGS_5 _POPCARGS_4; popl %edi; \
+ cfi_adjust_cfa_offset (-4); cfi_restore (edi);
+
+# define PUSHCARGS_6 _PUSHCARGS_6
+# define DOCARGS_6 _DOARGS_6 (44)
+# define POPCARGS_6 _POPCARGS_6
+# define _PUSHCARGS_6 pushl %ebp; cfi_adjust_cfa_offset (4); \
+ cfi_rel_offset (ebp, 0); _PUSHCARGS_5
+# define _POPCARGS_6 _POPCARGS_5; popl %ebp; \
+ cfi_adjust_cfa_offset (-4); cfi_restore (ebp);
+
+# if IS_IN (libpthread)
+# define CENABLE call __pthread_enable_asynccancel;
+# define CDISABLE call __pthread_disable_asynccancel
+# elif IS_IN (libc)
+# define CENABLE call __libc_enable_asynccancel;
+# define CDISABLE call __libc_disable_asynccancel
+# elif IS_IN (librt)
+# define CENABLE call __librt_enable_asynccancel;
+# define CDISABLE call __librt_disable_asynccancel
+# else
+# error Unsupported library
+# endif
+# define POPSTATE_0 \
+ pushl %eax; cfi_adjust_cfa_offset (4); movl %ecx, %eax; \
+ CDISABLE; popl %eax; cfi_adjust_cfa_offset (-4);
+# define POPSTATE_1 POPSTATE_0
+# define POPSTATE_2 xchgl (%esp), %eax; CDISABLE; popl %eax; \
+ cfi_adjust_cfa_offset (-4);
+# define POPSTATE_3 POPSTATE_2
+# define POPSTATE_4 POPSTATE_3
+# define POPSTATE_5 POPSTATE_4
+# define POPSTATE_6 POPSTATE_5
+
+# ifndef __ASSEMBLER__
+# define SINGLE_THREAD_P \
+ __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
+ header.multiple_threads) == 0, 1)
+# else
+# define SINGLE_THREAD_P cmpl $0, %gs:MULTIPLE_THREADS_OFFSET
+# endif
+
+#elif !defined __ASSEMBLER__
+
+# 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/i386/sysdep.c b/REORG.TODO/sysdeps/unix/sysv/linux/i386/sysdep.c
new file mode 100644
index 0000000000..7d65ad3518
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/sysdep.c
@@ -0,0 +1,30 @@
+/* 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/>. */
+
+#include <errno.h>
+#include <sysdep.h>
+
+/* This routine is jumped to by all the syscall handlers, to stash
+ an error number into errno. ERROR is the negative error number
+ returned from the x86 kernel. */
+int
+__attribute__ ((__regparm__ (1)))
+__syscall_error (int error)
+{
+ __set_errno (-error);
+ return -1;
+}
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/sysdep.h b/REORG.TODO/sysdeps/unix/sysv/linux/i386/sysdep.h
new file mode 100644
index 0000000000..449b23e49b
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/sysdep.h
@@ -0,0 +1,657 @@
+/* Copyright (C) 1992-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper, <drepper@gnu.org>, August 1995.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _LINUX_I386_SYSDEP_H
+#define _LINUX_I386_SYSDEP_H 1
+
+/* There is some commonality. */
+#include <sysdeps/unix/sysv/linux/sysdep.h>
+#include <sysdeps/unix/i386/sysdep.h>
+/* Defines RTLD_PRIVATE_ERRNO and USE_DL_SYSINFO. */
+#include <dl-sysdep.h>
+#include <tls.h>
+
+
+/* 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
+
+#if defined USE_DL_SYSINFO \
+ && (IS_IN (libc) || IS_IN (libpthread))
+# define I386_USE_SYSENTER 1
+#else
+# undef I386_USE_SYSENTER
+#endif
+
+/* Since GCC 5 and above can properly spill %ebx with PIC when needed,
+ we can inline syscalls with 6 arguments if GCC 5 or above is used
+ to compile glibc. Disable GCC 5 optimization when compiling for
+ profiling or when -fno-omit-frame-pointer is used since asm ("ebp")
+ can't be used to put the 6th argument in %ebp for syscall. */
+#if __GNUC_PREREQ (5,0) && !defined PROF && CAN_USE_REGISTER_ASM_EBP
+# define OPTIMIZE_FOR_GCC_5
+#endif
+
+#ifdef __ASSEMBLER__
+
+/* 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 %eax
+ 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 savely
+ test with -4095. */
+
+/* We don't want the label for the error handle to be global when we define
+ it here. */
+#define SYSCALL_ERROR_LABEL __syscall_error
+
+#undef PSEUDO
+#define PSEUDO(name, syscall_name, args) \
+ .text; \
+ ENTRY (name) \
+ DO_CALL (syscall_name, args); \
+ cmpl $-4095, %eax; \
+ jae SYSCALL_ERROR_LABEL
+
+#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)
+
+#undef PSEUDO_END_NOERRNO
+#define PSEUDO_END_NOERRNO(name) \
+ END (name)
+
+#define ret_NOERRNO ret
+
+/* 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); \
+ negl %eax
+
+#undef PSEUDO_END_ERRVAL
+#define PSEUDO_END_ERRVAL(name) \
+ END (name)
+
+#define ret_ERRVAL ret
+
+#define SYSCALL_ERROR_HANDLER /* Nothing here; code in sysdep.c is used. */
+
+/* The original calling convention for system calls on Linux/i386 is
+ to use int $0x80. */
+#ifdef I386_USE_SYSENTER
+# ifdef SHARED
+# define ENTER_KERNEL call *%gs:SYSINFO_OFFSET
+# else
+# define ENTER_KERNEL call *_dl_sysinfo
+# endif
+#else
+# define ENTER_KERNEL int $0x80
+#endif
+
+/* Linux takes system call arguments in registers:
+
+ syscall number %eax call-clobbered
+ arg 1 %ebx call-saved
+ arg 2 %ecx call-clobbered
+ arg 3 %edx call-clobbered
+ arg 4 %esi call-saved
+ arg 5 %edi call-saved
+ arg 6 %ebp call-saved
+
+ The stack layout upon entering the function is:
+
+ 24(%esp) Arg# 6
+ 20(%esp) Arg# 5
+ 16(%esp) Arg# 4
+ 12(%esp) Arg# 3
+ 8(%esp) Arg# 2
+ 4(%esp) Arg# 1
+ (%esp) Return address
+
+ (Of course a function with say 3 arguments does not have entries for
+ arguments 4, 5, and 6.)
+
+ The following code tries hard to be optimal. A general assumption
+ (which is true according to the data books I have) is that
+
+ 2 * xchg is more expensive than pushl + movl + popl
+
+ Beside this a neat trick is used. The calling conventions for Linux
+ tell that among the registers used for parameters %ecx and %edx need
+ not be saved. Beside this we may clobber this registers even when
+ they are not used for parameter passing.
+
+ As a result one can see below that we save the content of the %ebx
+ register in the %edx register when we have less than 3 arguments
+ (2 * movl is less expensive than pushl + popl).
+
+ Second unlike for the other registers we don't save the content of
+ %ecx and %edx when we have more than 1 and 2 registers resp.
+
+ The code below might look a bit long but we have to take care for
+ the pipelined processors (i586). Here the `pushl' and `popl'
+ instructions are marked as NP (not pairable) but the exception is
+ two consecutive of these instruction. This gives no penalty on
+ other processors though. */
+
+#undef DO_CALL
+#define DO_CALL(syscall_name, args) \
+ PUSHARGS_##args \
+ DOARGS_##args \
+ movl $SYS_ify (syscall_name), %eax; \
+ ENTER_KERNEL \
+ POPARGS_##args
+
+#define PUSHARGS_0 /* No arguments to push. */
+#define DOARGS_0 /* No arguments to frob. */
+#define POPARGS_0 /* No arguments to pop. */
+#define _PUSHARGS_0 /* No arguments to push. */
+#define _DOARGS_0(n) /* No arguments to frob. */
+#define _POPARGS_0 /* No arguments to pop. */
+
+#define PUSHARGS_1 movl %ebx, %edx; L(SAVEBX1): PUSHARGS_0
+#define DOARGS_1 _DOARGS_1 (4)
+#define POPARGS_1 POPARGS_0; movl %edx, %ebx; L(RESTBX1):
+#define _PUSHARGS_1 pushl %ebx; cfi_adjust_cfa_offset (4); \
+ cfi_rel_offset (ebx, 0); L(PUSHBX1): _PUSHARGS_0
+#define _DOARGS_1(n) movl n(%esp), %ebx; _DOARGS_0(n-4)
+#define _POPARGS_1 _POPARGS_0; popl %ebx; cfi_adjust_cfa_offset (-4); \
+ cfi_restore (ebx); L(POPBX1):
+
+#define PUSHARGS_2 PUSHARGS_1
+#define DOARGS_2 _DOARGS_2 (8)
+#define POPARGS_2 POPARGS_1
+#define _PUSHARGS_2 _PUSHARGS_1
+#define _DOARGS_2(n) movl n(%esp), %ecx; _DOARGS_1 (n-4)
+#define _POPARGS_2 _POPARGS_1
+
+#define PUSHARGS_3 _PUSHARGS_2
+#define DOARGS_3 _DOARGS_3 (16)
+#define POPARGS_3 _POPARGS_3
+#define _PUSHARGS_3 _PUSHARGS_2
+#define _DOARGS_3(n) movl n(%esp), %edx; _DOARGS_2 (n-4)
+#define _POPARGS_3 _POPARGS_2
+
+#define PUSHARGS_4 _PUSHARGS_4
+#define DOARGS_4 _DOARGS_4 (24)
+#define POPARGS_4 _POPARGS_4
+#define _PUSHARGS_4 pushl %esi; cfi_adjust_cfa_offset (4); \
+ cfi_rel_offset (esi, 0); L(PUSHSI1): _PUSHARGS_3
+#define _DOARGS_4(n) movl n(%esp), %esi; _DOARGS_3 (n-4)
+#define _POPARGS_4 _POPARGS_3; popl %esi; cfi_adjust_cfa_offset (-4); \
+ cfi_restore (esi); L(POPSI1):
+
+#define PUSHARGS_5 _PUSHARGS_5
+#define DOARGS_5 _DOARGS_5 (32)
+#define POPARGS_5 _POPARGS_5
+#define _PUSHARGS_5 pushl %edi; cfi_adjust_cfa_offset (4); \
+ cfi_rel_offset (edi, 0); L(PUSHDI1): _PUSHARGS_4
+#define _DOARGS_5(n) movl n(%esp), %edi; _DOARGS_4 (n-4)
+#define _POPARGS_5 _POPARGS_4; popl %edi; cfi_adjust_cfa_offset (-4); \
+ cfi_restore (edi); L(POPDI1):
+
+#define PUSHARGS_6 _PUSHARGS_6
+#define DOARGS_6 _DOARGS_6 (40)
+#define POPARGS_6 _POPARGS_6
+#define _PUSHARGS_6 pushl %ebp; cfi_adjust_cfa_offset (4); \
+ cfi_rel_offset (ebp, 0); L(PUSHBP1): _PUSHARGS_5
+#define _DOARGS_6(n) movl n(%esp), %ebp; _DOARGS_5 (n-4)
+#define _POPARGS_6 _POPARGS_5; popl %ebp; cfi_adjust_cfa_offset (-4); \
+ cfi_restore (ebp); L(POPBP1):
+
+#else /* !__ASSEMBLER__ */
+
+extern int __syscall_error (int)
+ attribute_hidden __attribute__ ((__regparm__ (1)));
+
+#ifndef OPTIMIZE_FOR_GCC_5
+/* We need some help from the assembler to generate optimal code. We
+ define some macros here which later will be used. */
+asm (".L__X'%ebx = 1\n\t"
+ ".L__X'%ecx = 2\n\t"
+ ".L__X'%edx = 2\n\t"
+ ".L__X'%eax = 3\n\t"
+ ".L__X'%esi = 3\n\t"
+ ".L__X'%edi = 3\n\t"
+ ".L__X'%ebp = 3\n\t"
+ ".L__X'%esp = 3\n\t"
+ ".macro bpushl name reg\n\t"
+ ".if 1 - \\name\n\t"
+ ".if 2 - \\name\n\t"
+ "error\n\t"
+ ".else\n\t"
+ "xchgl \\reg, %ebx\n\t"
+ ".endif\n\t"
+ ".endif\n\t"
+ ".endm\n\t"
+ ".macro bpopl name reg\n\t"
+ ".if 1 - \\name\n\t"
+ ".if 2 - \\name\n\t"
+ "error\n\t"
+ ".else\n\t"
+ "xchgl \\reg, %ebx\n\t"
+ ".endif\n\t"
+ ".endif\n\t"
+ ".endm\n\t");
+
+/* Six-argument syscalls use an out-of-line helper, because an inline
+ asm using all registers apart from %esp cannot work reliably and
+ the assembler does not support describing an asm that saves and
+ restores %ebp itself as a separate stack frame. This structure
+ stores the arguments not passed in registers; %edi is passed with a
+ pointer to this structure. */
+struct libc_do_syscall_args
+{
+ int ebx, edi, ebp;
+};
+#endif
+
+/* Define a macro which expands inline into the wrapper code for a system
+ call. */
+#undef INLINE_SYSCALL
+#if IS_IN (libc)
+# define INLINE_SYSCALL(name, nr, args...) \
+ ({ \
+ unsigned int resultvar = INTERNAL_SYSCALL (name, , nr, args); \
+ __glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (resultvar, )) \
+ ? __syscall_error (-INTERNAL_SYSCALL_ERRNO (resultvar, )) \
+ : (int) resultvar; })
+#else
+# define INLINE_SYSCALL(name, nr, args...) \
+ ({ \
+ unsigned int resultvar = INTERNAL_SYSCALL (name, , nr, args); \
+ if (__glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (resultvar, ))) \
+ { \
+ __set_errno (INTERNAL_SYSCALL_ERRNO (resultvar, )); \
+ resultvar = 0xffffffff; \
+ } \
+ (int) resultvar; })
+#endif
+
+/* Set error number and return -1. Return the internal function,
+ __syscall_error, which sets errno from the negative error number
+ and returns -1, to avoid PIC. */
+#undef INLINE_SYSCALL_ERROR_RETURN_VALUE
+#define INLINE_SYSCALL_ERROR_RETURN_VALUE(resultvar) \
+ __syscall_error (-(resultvar))
+
+/* List of system calls which are supported as vsyscalls. */
+# define HAVE_CLOCK_GETTIME_VSYSCALL 1
+# define HAVE_GETTIMEOFDAY_VSYSCALL 1
+
+/* Define a macro which expands inline into the wrapper code for a system
+ call. This use is for internal calls that do not need to handle errors
+ normally. It will never touch errno. This returns just what the kernel
+ gave back.
+
+ The _NCS variant allows non-constant syscall numbers but it is not
+ possible to use more than four parameters. */
+#undef INTERNAL_SYSCALL
+#define INTERNAL_SYSCALL_MAIN_0(name, err, args...) \
+ INTERNAL_SYSCALL_MAIN_INLINE(name, err, 0, args)
+#define INTERNAL_SYSCALL_MAIN_1(name, err, args...) \
+ INTERNAL_SYSCALL_MAIN_INLINE(name, err, 1, args)
+#define INTERNAL_SYSCALL_MAIN_2(name, err, args...) \
+ INTERNAL_SYSCALL_MAIN_INLINE(name, err, 2, args)
+#define INTERNAL_SYSCALL_MAIN_3(name, err, args...) \
+ INTERNAL_SYSCALL_MAIN_INLINE(name, err, 3, args)
+#define INTERNAL_SYSCALL_MAIN_4(name, err, args...) \
+ INTERNAL_SYSCALL_MAIN_INLINE(name, err, 4, args)
+#define INTERNAL_SYSCALL_MAIN_5(name, err, args...) \
+ INTERNAL_SYSCALL_MAIN_INLINE(name, err, 5, args)
+/* Each object using 6-argument inline syscalls must include a
+ definition of __libc_do_syscall. */
+#ifdef OPTIMIZE_FOR_GCC_5
+# define INTERNAL_SYSCALL_MAIN_6(name, err, args...) \
+ INTERNAL_SYSCALL_MAIN_INLINE(name, err, 6, args)
+#else /* GCC 5 */
+# define INTERNAL_SYSCALL_MAIN_6(name, err, arg1, arg2, arg3, \
+ arg4, arg5, arg6) \
+ struct libc_do_syscall_args _xv = \
+ { \
+ (int) (arg1), \
+ (int) (arg5), \
+ (int) (arg6) \
+ }; \
+ asm volatile ( \
+ "movl %1, %%eax\n\t" \
+ "call __libc_do_syscall" \
+ : "=a" (resultvar) \
+ : "i" (__NR_##name), "c" (arg2), "d" (arg3), "S" (arg4), "D" (&_xv) \
+ : "memory", "cc")
+#endif /* GCC 5 */
+#define INTERNAL_SYSCALL(name, err, nr, args...) \
+ ({ \
+ register unsigned int resultvar; \
+ INTERNAL_SYSCALL_MAIN_##nr (name, err, args); \
+ (int) resultvar; })
+#ifdef I386_USE_SYSENTER
+# ifdef OPTIMIZE_FOR_GCC_5
+# ifdef SHARED
+# define INTERNAL_SYSCALL_MAIN_INLINE(name, err, nr, args...) \
+ LOADREGS_##nr(args) \
+ asm volatile ( \
+ "call *%%gs:%P2" \
+ : "=a" (resultvar) \
+ : "a" (__NR_##name), "i" (offsetof (tcbhead_t, sysinfo)) \
+ ASMARGS_##nr(args) : "memory", "cc")
+# define INTERNAL_SYSCALL_NCS(name, err, nr, args...) \
+ ({ \
+ register unsigned int resultvar; \
+ LOADREGS_##nr(args) \
+ asm volatile ( \
+ "call *%%gs:%P2" \
+ : "=a" (resultvar) \
+ : "a" (name), "i" (offsetof (tcbhead_t, sysinfo)) \
+ ASMARGS_##nr(args) : "memory", "cc"); \
+ (int) resultvar; })
+# else
+# define INTERNAL_SYSCALL_MAIN_INLINE(name, err, nr, args...) \
+ LOADREGS_##nr(args) \
+ asm volatile ( \
+ "call *_dl_sysinfo" \
+ : "=a" (resultvar) \
+ : "a" (__NR_##name) ASMARGS_##nr(args) : "memory", "cc")
+# define INTERNAL_SYSCALL_NCS(name, err, nr, args...) \
+ ({ \
+ register unsigned int resultvar; \
+ LOADREGS_##nr(args) \
+ asm volatile ( \
+ "call *_dl_sysinfo" \
+ : "=a" (resultvar) \
+ : "a" (name) ASMARGS_##nr(args) : "memory", "cc"); \
+ (int) resultvar; })
+# endif
+# else /* GCC 5 */
+# ifdef SHARED
+# define INTERNAL_SYSCALL_MAIN_INLINE(name, err, nr, args...) \
+ EXTRAVAR_##nr \
+ asm volatile ( \
+ LOADARGS_##nr \
+ "movl %1, %%eax\n\t" \
+ "call *%%gs:%P2\n\t" \
+ RESTOREARGS_##nr \
+ : "=a" (resultvar) \
+ : "i" (__NR_##name), "i" (offsetof (tcbhead_t, sysinfo)) \
+ ASMFMT_##nr(args) : "memory", "cc")
+# define INTERNAL_SYSCALL_NCS(name, err, nr, args...) \
+ ({ \
+ register unsigned int resultvar; \
+ EXTRAVAR_##nr \
+ asm volatile ( \
+ LOADARGS_##nr \
+ "call *%%gs:%P2\n\t" \
+ RESTOREARGS_##nr \
+ : "=a" (resultvar) \
+ : "0" (name), "i" (offsetof (tcbhead_t, sysinfo)) \
+ ASMFMT_##nr(args) : "memory", "cc"); \
+ (int) resultvar; })
+# else
+# define INTERNAL_SYSCALL_MAIN_INLINE(name, err, nr, args...) \
+ EXTRAVAR_##nr \
+ asm volatile ( \
+ LOADARGS_##nr \
+ "movl %1, %%eax\n\t" \
+ "call *_dl_sysinfo\n\t" \
+ RESTOREARGS_##nr \
+ : "=a" (resultvar) \
+ : "i" (__NR_##name) ASMFMT_##nr(args) : "memory", "cc")
+# define INTERNAL_SYSCALL_NCS(name, err, nr, args...) \
+ ({ \
+ register unsigned int resultvar; \
+ EXTRAVAR_##nr \
+ asm volatile ( \
+ LOADARGS_##nr \
+ "call *_dl_sysinfo\n\t" \
+ RESTOREARGS_##nr \
+ : "=a" (resultvar) \
+ : "0" (name) ASMFMT_##nr(args) : "memory", "cc"); \
+ (int) resultvar; })
+# endif
+# endif /* GCC 5 */
+#else
+# ifdef OPTIMIZE_FOR_GCC_5
+# define INTERNAL_SYSCALL_MAIN_INLINE(name, err, nr, args...) \
+ LOADREGS_##nr(args) \
+ asm volatile ( \
+ "int $0x80" \
+ : "=a" (resultvar) \
+ : "a" (__NR_##name) ASMARGS_##nr(args) : "memory", "cc")
+# define INTERNAL_SYSCALL_NCS(name, err, nr, args...) \
+ ({ \
+ register unsigned int resultvar; \
+ LOADREGS_##nr(args) \
+ asm volatile ( \
+ "int $0x80" \
+ : "=a" (resultvar) \
+ : "a" (name) ASMARGS_##nr(args) : "memory", "cc"); \
+ (int) resultvar; })
+# else /* GCC 5 */
+# define INTERNAL_SYSCALL_MAIN_INLINE(name, err, nr, args...) \
+ EXTRAVAR_##nr \
+ asm volatile ( \
+ LOADARGS_##nr \
+ "movl %1, %%eax\n\t" \
+ "int $0x80\n\t" \
+ RESTOREARGS_##nr \
+ : "=a" (resultvar) \
+ : "i" (__NR_##name) ASMFMT_##nr(args) : "memory", "cc")
+# define INTERNAL_SYSCALL_NCS(name, err, nr, args...) \
+ ({ \
+ register unsigned int resultvar; \
+ EXTRAVAR_##nr \
+ asm volatile ( \
+ LOADARGS_##nr \
+ "int $0x80\n\t" \
+ RESTOREARGS_##nr \
+ : "=a" (resultvar) \
+ : "0" (name) ASMFMT_##nr(args) : "memory", "cc"); \
+ (int) resultvar; })
+# endif /* GCC 5 */
+#endif
+
+#undef INTERNAL_SYSCALL_DECL
+#define INTERNAL_SYSCALL_DECL(err) do { } while (0)
+
+#undef INTERNAL_SYSCALL_ERROR_P
+#define INTERNAL_SYSCALL_ERROR_P(val, err) \
+ ((unsigned int) (val) >= 0xfffff001u)
+
+#undef INTERNAL_SYSCALL_ERRNO
+#define INTERNAL_SYSCALL_ERRNO(val, err) (-(val))
+
+#define LOADARGS_0
+#ifdef __PIC__
+# if defined I386_USE_SYSENTER && defined SHARED
+# define LOADARGS_1 \
+ "bpushl .L__X'%k3, %k3\n\t"
+# define LOADARGS_5 \
+ "movl %%ebx, %4\n\t" \
+ "movl %3, %%ebx\n\t"
+# else
+# define LOADARGS_1 \
+ "bpushl .L__X'%k2, %k2\n\t"
+# define LOADARGS_5 \
+ "movl %%ebx, %3\n\t" \
+ "movl %2, %%ebx\n\t"
+# endif
+# define LOADARGS_2 LOADARGS_1
+# define LOADARGS_3 \
+ "xchgl %%ebx, %%edi\n\t"
+# define LOADARGS_4 LOADARGS_3
+#else
+# define LOADARGS_1
+# define LOADARGS_2
+# define LOADARGS_3
+# define LOADARGS_4
+# define LOADARGS_5
+#endif
+
+#define RESTOREARGS_0
+#ifdef __PIC__
+# if defined I386_USE_SYSENTER && defined SHARED
+# define RESTOREARGS_1 \
+ "bpopl .L__X'%k3, %k3\n\t"
+# define RESTOREARGS_5 \
+ "movl %4, %%ebx"
+# else
+# define RESTOREARGS_1 \
+ "bpopl .L__X'%k2, %k2\n\t"
+# define RESTOREARGS_5 \
+ "movl %3, %%ebx"
+# endif
+# define RESTOREARGS_2 RESTOREARGS_1
+# define RESTOREARGS_3 \
+ "xchgl %%edi, %%ebx\n\t"
+# define RESTOREARGS_4 RESTOREARGS_3
+#else
+# define RESTOREARGS_1
+# define RESTOREARGS_2
+# define RESTOREARGS_3
+# define RESTOREARGS_4
+# define RESTOREARGS_5
+#endif
+
+#ifdef OPTIMIZE_FOR_GCC_5
+# define LOADREGS_0()
+# define ASMARGS_0()
+# define LOADREGS_1(arg1) \
+ LOADREGS_0 ()
+# define ASMARGS_1(arg1) \
+ ASMARGS_0 (), "b" ((unsigned int) (arg1))
+# define LOADREGS_2(arg1, arg2) \
+ LOADREGS_1 (arg1)
+# define ASMARGS_2(arg1, arg2) \
+ ASMARGS_1 (arg1), "c" ((unsigned int) (arg2))
+# define LOADREGS_3(arg1, arg2, arg3) \
+ LOADREGS_2 (arg1, arg2)
+# define ASMARGS_3(arg1, arg2, arg3) \
+ ASMARGS_2 (arg1, arg2), "d" ((unsigned int) (arg3))
+# define LOADREGS_4(arg1, arg2, arg3, arg4) \
+ LOADREGS_3 (arg1, arg2, arg3)
+# define ASMARGS_4(arg1, arg2, arg3, arg4) \
+ ASMARGS_3 (arg1, arg2, arg3), "S" ((unsigned int) (arg4))
+# define LOADREGS_5(arg1, arg2, arg3, arg4, arg5) \
+ LOADREGS_4 (arg1, arg2, arg3, arg4)
+# define ASMARGS_5(arg1, arg2, arg3, arg4, arg5) \
+ ASMARGS_4 (arg1, arg2, arg3, arg4), "D" ((unsigned int) (arg5))
+# define LOADREGS_6(arg1, arg2, arg3, arg4, arg5, arg6) \
+ register unsigned int _a6 asm ("ebp") = (unsigned int) (arg6); \
+ LOADREGS_5 (arg1, arg2, arg3, arg4, arg5)
+# define ASMARGS_6(arg1, arg2, arg3, arg4, arg5, arg6) \
+ ASMARGS_5 (arg1, arg2, arg3, arg4, arg5), "r" (_a6)
+#endif /* GCC 5 */
+
+#define ASMFMT_0()
+#ifdef __PIC__
+# define ASMFMT_1(arg1) \
+ , "cd" (arg1)
+# define ASMFMT_2(arg1, arg2) \
+ , "d" (arg1), "c" (arg2)
+# define ASMFMT_3(arg1, arg2, arg3) \
+ , "D" (arg1), "c" (arg2), "d" (arg3)
+# define ASMFMT_4(arg1, arg2, arg3, arg4) \
+ , "D" (arg1), "c" (arg2), "d" (arg3), "S" (arg4)
+# define ASMFMT_5(arg1, arg2, arg3, arg4, arg5) \
+ , "0" (arg1), "m" (_xv), "c" (arg2), "d" (arg3), "S" (arg4), "D" (arg5)
+#else
+# define ASMFMT_1(arg1) \
+ , "b" (arg1)
+# define ASMFMT_2(arg1, arg2) \
+ , "b" (arg1), "c" (arg2)
+# define ASMFMT_3(arg1, arg2, arg3) \
+ , "b" (arg1), "c" (arg2), "d" (arg3)
+# define ASMFMT_4(arg1, arg2, arg3, arg4) \
+ , "b" (arg1), "c" (arg2), "d" (arg3), "S" (arg4)
+# define ASMFMT_5(arg1, arg2, arg3, arg4, arg5) \
+ , "b" (arg1), "c" (arg2), "d" (arg3), "S" (arg4), "D" (arg5)
+#endif
+
+#define EXTRAVAR_0
+#define EXTRAVAR_1
+#define EXTRAVAR_2
+#define EXTRAVAR_3
+#define EXTRAVAR_4
+#ifdef __PIC__
+# define EXTRAVAR_5 int _xv;
+#else
+# define EXTRAVAR_5
+#endif
+
+/* Consistency check for position-independent code. */
+#if defined __PIC__ && !defined OPTIMIZE_FOR_GCC_5
+# define check_consistency() \
+ ({ int __res; \
+ __asm__ __volatile__ \
+ (LOAD_PIC_REG_STR (cx) ";" \
+ "subl %%ebx, %%ecx;" \
+ "je 1f;" \
+ "ud2;" \
+ "1:\n" \
+ : "=c" (__res)); \
+ __res; })
+#endif
+
+#endif /* __ASSEMBLER__ */
+
+
+/* Pointer mangling support. */
+#if IS_IN (rtld)
+/* We cannot use the thread descriptor because in ld.so we use setjmp
+ earlier than the descriptor is initialized. Using a global variable
+ is too complicated here since we have no PC-relative addressing mode. */
+#else
+# ifdef __ASSEMBLER__
+# define PTR_MANGLE(reg) xorl %gs:POINTER_GUARD, reg; \
+ roll $9, reg
+# define PTR_DEMANGLE(reg) rorl $9, reg; \
+ xorl %gs:POINTER_GUARD, reg
+# else
+# define PTR_MANGLE(var) asm ("xorl %%gs:%c2, %0\n" \
+ "roll $9, %0" \
+ : "=r" (var) \
+ : "0" (var), \
+ "i" (offsetof (tcbhead_t, \
+ pointer_guard)))
+# define PTR_DEMANGLE(var) asm ("rorl $9, %0\n" \
+ "xorl %%gs:%c2, %0" \
+ : "=r" (var) \
+ : "0" (var), \
+ "i" (offsetof (tcbhead_t, \
+ pointer_guard)))
+# endif
+#endif
+
+#endif /* linux/i386/sysdep.h */
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/time.c b/REORG.TODO/sysdeps/unix/sysv/linux/i386/time.c
new file mode 100644
index 0000000000..f614a2d73b
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/time.c
@@ -0,0 +1,34 @@
+/* time -- Get number of seconds since Epoch. Linux/i386 version.
+ 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
+# define time __redirect_time
+#endif
+
+#include <time.h>
+
+#ifdef SHARED
+# undef time
+# define time_type __redirect_time
+
+# undef libc_hidden_def
+# define libc_hidden_def(name) \
+ __hidden_ver1 (__time_syscall, __GI_time, __time_syscall);
+#endif
+
+#include <sysdeps/unix/sysv/linux/x86/time.c>
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/ucontext_i.sym b/REORG.TODO/sysdeps/unix/sysv/linux/i386/ucontext_i.sym
new file mode 100644
index 0000000000..b11a5509cd
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/ucontext_i.sym
@@ -0,0 +1,30 @@
+#include <stddef.h>
+#include <signal.h>
+#include <sys/ucontext.h>
+
+--
+
+SIG_BLOCK
+SIG_SETMASK
+
+#define ucontext(member) offsetof (ucontext_t, member)
+#define mcontext(member) ucontext (uc_mcontext.member)
+#define mreg(reg) mcontext (gregs[REG_##reg])
+
+oLINK ucontext (uc_link)
+oSS_SP ucontext (uc_stack.ss_sp)
+oSS_SIZE ucontext (uc_stack.ss_size)
+oGS mreg (GS)
+oFS mreg (FS)
+oEDI mreg (EDI)
+oESI mreg (ESI)
+oEBP mreg (EBP)
+oESP mreg (ESP)
+oEBX mreg (EBX)
+oEDX mreg (EDX)
+oECX mreg (ECX)
+oEAX mreg (EAX)
+oEIP mreg (EIP)
+oFPREGS mcontext (fpregs)
+oSIGMASK ucontext (uc_sigmask)
+oFPREGSMEM ucontext (__fpregs_mem)
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/versionsort64.c b/REORG.TODO/sysdeps/unix/sysv/linux/i386/versionsort64.c
new file mode 100644
index 0000000000..3e1c6ea35b
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/versionsort64.c
@@ -0,0 +1,48 @@
+/* Copyright (C) 1992-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 <dirent.h>
+#include <string.h>
+
+int
+__versionsort64 (const struct dirent64 **a, const struct dirent64 **b)
+{
+ return __strverscmp ((*a)->d_name, (*b)->d_name);
+}
+
+#include <shlib-compat.h>
+
+versioned_symbol (libc, __versionsort64, versionsort64, GLIBC_2_2);
+
+#if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2)
+
+#include <sysdeps/unix/sysv/linux/i386/olddirent.h>
+
+int
+__old_versionsort64 (const struct __old_dirent64 **a,
+ const struct __old_dirent64 **b);
+
+int
+attribute_compat_text_section
+__old_versionsort64 (const struct __old_dirent64 **a,
+ const struct __old_dirent64 **b)
+{
+ return __strverscmp ((*a)->d_name, (*b)->d_name);
+}
+
+compat_symbol (libc, __old_versionsort64, versionsort64, GLIBC_2_1);
+#endif
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/i386/vfork.S b/REORG.TODO/sysdeps/unix/sysv/linux/i386/vfork.S
new file mode 100644
index 0000000000..92ceca74c7
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/vfork.S
@@ -0,0 +1,57 @@
+/* Copyright (C) 1999-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Andreas Schwab <schwab@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)
+
+ /* Pop the return PC value into ECX. */
+ popl %ecx
+ cfi_adjust_cfa_offset (-4)
+ cfi_register (%eip, %ecx)
+
+ /* Stuff the syscall number in EAX and enter into the kernel. */
+ movl $SYS_ify (vfork), %eax
+ int $0x80
+
+ /* Jump to the return PC. Don't jump directly since this
+ disturbs the branch target cache. Instead push the return
+ address back on the stack. */
+ pushl %ecx
+ cfi_adjust_cfa_offset (4)
+
+ cmpl $-4095, %eax
+ /* Branch forward if it failed. */
+ jae SYSCALL_ERROR_LABEL
+
+ ret
+
+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/i386/xstat.c b/REORG.TODO/sysdeps/unix/sysv/linux/i386/xstat.c
new file mode 100644
index 0000000000..6b8b1ce3e7
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/sysv/linux/i386/xstat.c
@@ -0,0 +1,61 @@
+/* xstat using old-style Unix stat system call.
+ Copyright (C) 1991-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/>. */
+
+/* Ho hum, if xstat == xstat64 we must get rid of the prototype or gcc
+ will complain since they don't strictly match. */
+#define __xstat64 __xstat64_disable
+
+#include <errno.h>
+#include <stddef.h>
+#include <sys/stat.h>
+#include <kernel_stat.h>
+
+#include <sysdep.h>
+#include <sys/syscall.h>
+
+#include <xstatconv.h>
+
+
+/* Get information about the file NAME in BUF. */
+int
+__xstat (int vers, const char *name, struct stat *buf)
+{
+ int result;
+
+ if (vers == _STAT_VER_KERNEL)
+ return INLINE_SYSCALL (stat, 2, name, buf);
+
+ {
+ struct stat64 buf64;
+
+ INTERNAL_SYSCALL_DECL (err);
+ result = INTERNAL_SYSCALL (stat64, err, 2, name, &buf64);
+ if (__glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (result, err)))
+ return INLINE_SYSCALL_ERROR_RETURN_VALUE (INTERNAL_SYSCALL_ERRNO (result,
+ err));
+ else
+ return __xstat32_conv (vers, &buf64, buf);
+ }
+}
+hidden_def (__xstat)
+weak_alias (__xstat, _xstat);
+#if XSTAT_IS_XSTAT64
+# undef __xstat64
+strong_alias (__xstat, __xstat64);
+hidden_ver (__xstat, __xstat64)
+#endif