diff options
Diffstat (limited to 'REORG.TODO/sysdeps/unix/sysv/linux/arm')
79 files changed, 6901 insertions, 0 deletions
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/Implies b/REORG.TODO/sysdeps/unix/sysv/linux/arm/Implies new file mode 100644 index 0000000000..e609c137d0 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/Implies @@ -0,0 +1 @@ +arm/nptl diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/Makefile b/REORG.TODO/sysdeps/unix/sysv/linux/arm/Makefile new file mode 100644 index 0000000000..b9b8f71721 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/Makefile @@ -0,0 +1,69 @@ +ifeq ($(subdir),elf) +sysdep_routines += dl-vdso +sysdep-rtld-routines += aeabi_read_tp libc-do-syscall +endif + +ifeq ($(subdir),misc) +sysdep_routines += ioperm +sysdep_headers += sys/elf.h sys/io.h +endif + +ifeq ($(subdir),signal) +sysdep_routines += sigrestorer +endif + +ifeq ($(subdir),stdlib) +gen-as-const-headers += ucontext_i.sym +endif + +# Add a syscall function to each library that needs one. + +ifeq ($(subdir),crypt) +libcrypt-sysdep_routines += libc-do-syscall +endif + +ifeq ($(subdir),rt) +librt-sysdep_routines += libc-do-syscall +librt-shared-only-routines += libc-do-syscall +endif + +ifeq ($(subdir),nptl) +libpthread-sysdep_routines += libc-do-syscall +libpthread-shared-only-routines += libc-do-syscall +endif + +ifeq ($(subdir),resolv) +libanl-sysdep_routines += libc-do-syscall +libanl-shared-only-routines += libc-do-syscall +endif + +ifeq ($(subdir),csu) +sysdep_routines += libc-do-syscall +endif + +ifeq ($(subdir),nscd) +nscd-modules += libc-do-syscall +endif + +ifeq ($(subdir),nss) +libnss_db-sysdep_routines += libc-do-syscall +libnss_db-shared-only-routines += libc-do-syscall +endif + +ifeq ($(subdir),posix) +LDFLAGS-tst-rfc3484 += $(common-objpfx)csu/libc-do-syscall.o +LDFLAGS-tst-rfc3484-2 += $(common-objpfx)csu/libc-do-syscall.o +LDFLAGS-tst-rfc3484-3 += $(common-objpfx)csu/libc-do-syscall.o +endif + +abi-variants := soft hard + +ifeq (,$(filter $(default-abi),$(abi-variants))) +Unknown ABI, must be one of $(abi-variants) +endif + +abi-includes := +abi-soft-options := -U__ARM_PCS_VFP +abi-soft-condition := !defined __ARM_PCS_VFP +abi-hard-options := -D__ARM_PCS_VFP +abi-hard-condition := defined __ARM_PCS_VFP diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/Versions b/REORG.TODO/sysdeps/unix/sysv/linux/arm/Versions new file mode 100644 index 0000000000..7e5ba53455 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/Versions @@ -0,0 +1,19 @@ +libc { + GLIBC_2.4 { + ioperm; iopl; + inb; inw; inl; + outb; outw; outl; + } + GLIBC_2.11 { + fallocate64; + } + GLIBC_2.24 { + recvmsg; sendmsg; + } + GLIBC_PRIVATE { + # A copy of sigaction lives in libpthread, and needs these. + __default_sa_restorer; __default_rt_sa_restorer; + # nptl/pthread_cond_timedwait.c uses INTERNAL_VSYSCALL(clock_gettime). + __vdso_clock_gettime; + } +} diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/____longjmp_chk.S b/REORG.TODO/sysdeps/unix/sysv/linux/arm/____longjmp_chk.S new file mode 100644 index 0000000000..6d8d93ae5f --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/____longjmp_chk.S @@ -0,0 +1,90 @@ +/* Copyright (C) 2009-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> + + .section .rodata.str1.1,"aMS",%progbits,1 + .type longjmp_msg,%object +longjmp_msg: + .string "longjmp causes uninitialized stack frame" + .size longjmp_msg, .-longjmp_msg + .text + +#define __longjmp ____longjmp_chk + +#ifdef PIC +# define CALL_FAIL \ + ldr sl, .L_GOT; \ + cfi_undefined (sl); \ +.L_GOT_OFF: \ + add sl, pc, sl; \ + ldr r0, .Lstr; \ + add r0, sl, r0; \ + B PLTJMP(HIDDEN_JUMPTARGET(__fortify_fail)); \ +.L_GOT: \ + .word _GLOBAL_OFFSET_TABLE_-(.L_GOT_OFF+8); \ +.Lstr: \ + .word longjmp_msg(GOTOFF); +#else +# define CALL_FAIL \ + ldr r0, .Lstr; \ + B HIDDEN_JUMPTARGET(__fortify_fail); \ +.Lstr: \ + .word longjmp_msg; +#endif + +#define CHECK_SP(reg) \ + cfi_remember_state; \ + cmp sp, reg; \ + bls .Lok; \ + push { r7 }; \ + cfi_adjust_cfa_offset (4); \ + cfi_rel_offset (r7, 0); \ + mov r5, r0; \ + cfi_undefined (r5); \ + mov r7, #SYS_ify(sigaltstack); \ + mov r0, #0; \ + sub sp, sp, #12; /* == sizeof (stack_t) */ \ + cfi_adjust_cfa_offset (12); \ + cfi_remember_state; \ + mov r1, sp; \ + swi #0; \ + cmp r0, #0; \ + bne .Lok2; \ + ldr r1, [sp, #4]; \ + tst r1, #1; \ + beq .Lfail; \ + ldr r2, [sp, #0]; \ + ldr r3, [sp, #8]; \ + add r2, r2, r3; \ + sub r2, r2, reg; \ + cmp r2, r3; \ + bhi .Lok2; \ +.Lfail: \ + add sp, sp, #12; \ + cfi_adjust_cfa_offset (-12); \ + pop { r7 }; \ + cfi_adjust_cfa_offset (-4); \ + cfi_restore (r7); \ + CALL_FAIL \ + cfi_restore_state; \ +.Lok2: \ + mov r0, r5; \ + cfi_restore_state; \ +.Lok: + +#include <__longjmp.S> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/aeabi_read_tp.S b/REORG.TODO/sysdeps/unix/sysv/linux/arm/aeabi_read_tp.S new file mode 100644 index 0000000000..12eae35e7f --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/aeabi_read_tp.S @@ -0,0 +1,55 @@ +/* Copyright (C) 2005-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + In addition to the permissions in the GNU Lesser General Public + License, the Free Software Foundation gives you unlimited + permission to link the compiled version of this file with other + programs, and to distribute those programs without any restriction + coming from the use of this file. (The GNU Lesser General Public + License restrictions do apply in other respects; for example, they + cover modification of the file, and distribution when not linked + into another program.) + + Note that people who make modified versions of this file are not + obligated to grant this special exception for their modified + versions; it is their choice whether to do so. The GNU Lesser + General Public License gives permission to release a modified + version without this exception; this exception also makes it + possible to release a modified version which carries forward this + exception. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> + +/* GCC will emit calls to this routine under -mtp=soft. Linux has an + equivalent helper function (which clobbers fewer registers than + a normal function call) in a high page of memory; tail call to the + helper. */ + + .hidden __aeabi_read_tp +ENTRY (__aeabi_read_tp) +#ifdef ARCH_HAS_HARD_TP + mrc p15, 0, r0, c13, c0, 3 + bx lr +#elif defined(__thumb2__) + movw r0, #0x0fe0 + movt r0, #0xffff + bx r0 +#else + mov r0, #0xffff0fff + sub pc, r0, #31 +#endif +END (__aeabi_read_tp) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/alphasort64.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/alphasort64.c new file mode 100644 index 0000000000..0b5ae47d2f --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/alphasort64.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/i386/alphasort64.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/arch-fork.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/arch-fork.h new file mode 100644 index 0000000000..ab2d00e32e --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/arch-fork.h @@ -0,0 +1,27 @@ +/* ARCH_FORK definition for Linux fork implementation. ARM version. + Copyright (C) 2014-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sched.h> +#include <sysdep.h> +#include <tls.h> + + +#define ARCH_FORK() \ + INLINE_SYSCALL (clone, 5, \ + CLONE_CHILD_SETTID | CLONE_CHILD_CLEARTID | SIGCHLD, \ + NULL, NULL, NULL, &THREAD_SELF->tid) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/arm-features.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/arm-features.h new file mode 100644 index 0000000000..91c12a6243 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/arm-features.h @@ -0,0 +1,30 @@ +/* Macros to test for CPU features on ARM. Linux version. + Copyright (C) 2012-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _LINUX_ARM_FEATURES_H +#define _LINUX_ARM_FEATURES_H 1 + +#ifndef __ASSEMBLER__ +# include <ldsodefs.h> + +# define ARM_HAVE_VFP (GLRO (dl_hwcap) & HWCAP_ARM_VFP) +#endif + +#include_next <arm-features.h> + +#endif /* arm-features.h */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/atomic-machine.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/atomic-machine.h new file mode 100644 index 0000000000..5fb516284b --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/atomic-machine.h @@ -0,0 +1,107 @@ +/* Atomic operations. ARM/Linux version. + Copyright (C) 2002-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#include <stdint.h> + +/* If the compiler doesn't provide a primitive, we'll use this macro + to get assistance from the kernel. */ +#ifdef __thumb2__ +# define __arm_assisted_full_barrier() \ + __asm__ __volatile__ \ + ("movw\tip, #0x0fa0\n\t" \ + "movt\tip, #0xffff\n\t" \ + "blx\tip" \ + : : : "ip", "lr", "cc", "memory"); +#else +# define __arm_assisted_full_barrier() \ + __asm__ __volatile__ \ + ("mov\tip, #0xffff0fff\n\t" \ + "mov\tlr, pc\n\t" \ + "add\tpc, ip, #(0xffff0fa0 - 0xffff0fff)" \ + : : : "ip", "lr", "cc", "memory"); +#endif + +/* Atomic compare and exchange. This sequence relies on the kernel to + provide a compare and exchange operation which is atomic on the + current architecture, either via cleverness on pre-ARMv6 or via + ldrex / strex on ARMv6. + + It doesn't matter what register is used for a_oldval2, but we must + specify one to work around GCC PR rtl-optimization/21223. Otherwise + it may cause a_oldval or a_tmp to be moved to a different register. + + We use the union trick rather than simply using __typeof (...) in the + declarations of A_OLDVAL et al because when NEWVAL or OLDVAL is of the + form *PTR and PTR has a 'volatile ... *' type, then __typeof (*PTR) has + a 'volatile ...' type and this triggers -Wvolatile-register-var to + complain about 'register volatile ... asm ("reg")'. */ +#ifdef __thumb2__ +/* Thumb-2 has ldrex/strex. However it does not have barrier instructions, + so we still need to use the kernel helper. */ +# define __arm_assisted_compare_and_exchange_val_32_acq(mem, newval, oldval) \ + ({ union { __typeof (oldval) a; uint32_t v; } oldval_arg = { .a = (oldval) };\ + union { __typeof (newval) a; uint32_t v; } newval_arg = { .a = (newval) };\ + register uint32_t a_oldval asm ("r0"); \ + register uint32_t a_newval asm ("r1") = newval_arg.v; \ + register __typeof (mem) a_ptr asm ("r2") = (mem); \ + register uint32_t a_tmp asm ("r3"); \ + register uint32_t a_oldval2 asm ("r4") = oldval_arg.v; \ + __asm__ __volatile__ \ + ("0:\tldr\t%[tmp],[%[ptr]]\n\t" \ + "cmp\t%[tmp], %[old2]\n\t" \ + "bne\t1f\n\t" \ + "mov\t%[old], %[old2]\n\t" \ + "movw\t%[tmp], #0x0fc0\n\t" \ + "movt\t%[tmp], #0xffff\n\t" \ + "blx\t%[tmp]\n\t" \ + "bcc\t0b\n\t" \ + "mov\t%[tmp], %[old2]\n\t" \ + "1:" \ + : [old] "=&r" (a_oldval), [tmp] "=&r" (a_tmp) \ + : [new] "r" (a_newval), [ptr] "r" (a_ptr), \ + [old2] "r" (a_oldval2) \ + : "ip", "lr", "cc", "memory"); \ + (__typeof (oldval)) a_tmp; }) +#else +# define __arm_assisted_compare_and_exchange_val_32_acq(mem, newval, oldval) \ + ({ union { __typeof (oldval) a; uint32_t v; } oldval_arg = { .a = (oldval) };\ + union { __typeof (newval) a; uint32_t v; } newval_arg = { .a = (newval) };\ + register uint32_t a_oldval asm ("r0"); \ + register uint32_t a_newval asm ("r1") = newval_arg.v; \ + register __typeof (mem) a_ptr asm ("r2") = (mem); \ + register uint32_t a_tmp asm ("r3"); \ + register uint32_t a_oldval2 asm ("r4") = oldval_arg.v; \ + __asm__ __volatile__ \ + ("0:\tldr\t%[tmp],[%[ptr]]\n\t" \ + "cmp\t%[tmp], %[old2]\n\t" \ + "bne\t1f\n\t" \ + "mov\t%[old], %[old2]\n\t" \ + "mov\t%[tmp], #0xffff0fff\n\t" \ + "mov\tlr, pc\n\t" \ + "add\tpc, %[tmp], #(0xffff0fc0 - 0xffff0fff)\n\t" \ + "bcc\t0b\n\t" \ + "mov\t%[tmp], %[old2]\n\t" \ + "1:" \ + : [old] "=&r" (a_oldval), [tmp] "=&r" (a_tmp) \ + : [new] "r" (a_newval), [ptr] "r" (a_ptr), \ + [old2] "r" (a_oldval2) \ + : "ip", "lr", "cc", "memory"); \ + (__typeof (oldval)) a_tmp; }) +#endif + +#include <sysdeps/arm/atomic-machine.h> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/bits/fcntl.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/bits/fcntl.h new file mode 100644 index 0000000000..61a8dac187 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/bits/fcntl.h @@ -0,0 +1,54 @@ +/* O_*, F_*, FD_* bit values for Linux. + Copyright (C) 1995-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _FCNTL_H +# error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead." +#endif + +#define __O_DIRECTORY 040000 /* Must be a directory. */ +#define __O_NOFOLLOW 0100000 /* Do not follow links. */ +#define __O_DIRECT 0200000 /* Direct disk access. */ +#define __O_LARGEFILE 0400000 + +struct flock + { + short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */ + short int l_whence; /* Where `l_start' is relative to (like `lseek'). */ +#ifndef __USE_FILE_OFFSET64 + __off_t l_start; /* Offset where the lock begins. */ + __off_t l_len; /* Size of the locked area; zero means until EOF. */ +#else + __off64_t l_start; /* Offset where the lock begins. */ + __off64_t l_len; /* Size of the locked area; zero means until EOF. */ +#endif + __pid_t l_pid; /* Process holding the lock. */ + }; + +#ifdef __USE_LARGEFILE64 +struct flock64 + { + short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */ + short int l_whence; /* Where `l_start' is relative to (like `lseek'). */ + __off64_t l_start; /* Offset where the lock begins. */ + __off64_t l_len; /* Size of the locked area; zero means until EOF. */ + __pid_t l_pid; /* Process holding the lock. */ + }; +#endif + +/* Include generic Linux declarations. */ +#include <bits/fcntl-linux.h> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/bits/hwcap.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/bits/hwcap.h new file mode 100644 index 0000000000..b2cc3d8828 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/bits/hwcap.h @@ -0,0 +1,45 @@ +/* Defines for bits in AT_HWCAP. ARM Linux version. + Copyright (C) 2012-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#if !defined (_SYS_AUXV_H) && !defined (_LINUX_ARM_SYSDEP_H) +# error "Never include <bits/hwcap.h> directly; use <sys/auxv.h> instead." +#endif + +/* The following must match the kernel's <asm/hwcap.h>. */ +#define HWCAP_ARM_SWP 1 +#define HWCAP_ARM_HALF 2 +#define HWCAP_ARM_THUMB 4 +#define HWCAP_ARM_26BIT 8 +#define HWCAP_ARM_FAST_MULT 16 +#define HWCAP_ARM_FPA 32 +#define HWCAP_ARM_VFP 64 +#define HWCAP_ARM_EDSP 128 +#define HWCAP_ARM_JAVA 256 +#define HWCAP_ARM_IWMMXT 512 +#define HWCAP_ARM_CRUNCH 1024 +#define HWCAP_ARM_THUMBEE 2048 +#define HWCAP_ARM_NEON 4096 +#define HWCAP_ARM_VFPv3 8192 +#define HWCAP_ARM_VFPv3D16 16384 +#define HWCAP_ARM_TLS 32768 +#define HWCAP_ARM_VFPv4 65536 +#define HWCAP_ARM_IDIVA 131072 +#define HWCAP_ARM_IDIVT 262144 +#define HWCAP_ARM_VFPD32 524288 +#define HWCAP_ARM_LPAE 1048576 +#define HWCAP_ARM_EVTSTRM 2097152 diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/bits/mman.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/bits/mman.h new file mode 100644 index 0000000000..14baee793b --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/bits/mman.h @@ -0,0 +1,40 @@ +/* Definitions for POSIX memory map interface. Linux/ARM version. + Copyright (C) 1997-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _SYS_MMAN_H +# error "Never use <bits/mman.h> directly; include <sys/mman.h> instead." +#endif + +/* The following definitions basically come from the kernel headers. + But the kernel header is not namespace clean. */ + +/* These are Linux-specific. */ +#ifdef __USE_MISC +# define MAP_GROWSDOWN 0x00100 /* Stack-like segment. */ +# define MAP_DENYWRITE 0x00800 /* ETXTBSY */ +# define MAP_EXECUTABLE 0x01000 /* Mark it as an executable. */ +# define MAP_LOCKED 0x02000 /* Lock the mapping. */ +# define MAP_NORESERVE 0x04000 /* Don't check for reservations. */ +# define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */ +# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */ +# define MAP_STACK 0x20000 /* Allocation is for a stack. */ +# define MAP_HUGETLB 0x40000 /* Create huge page mapping. */ +#endif + +/* Include generic Linux declarations. */ +#include <bits/mman-linux.h> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/bits/shm.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/bits/shm.h new file mode 100644 index 0000000000..2448ffdd72 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/bits/shm.h @@ -0,0 +1,103 @@ +/* Copyright (C) 1995-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _SYS_SHM_H +# error "Never include <bits/shm.h> directly; use <sys/shm.h> instead." +#endif + +#include <bits/types.h> + +/* Permission flag for shmget. */ +#define SHM_R 0400 /* or S_IRUGO from <linux/stat.h> */ +#define SHM_W 0200 /* or S_IWUGO from <linux/stat.h> */ + +/* Flags for `shmat'. */ +#define SHM_RDONLY 010000 /* attach read-only else read-write */ +#define SHM_RND 020000 /* round attach address to SHMLBA */ +#define SHM_REMAP 040000 /* take-over region on attach */ +#define SHM_EXEC 0100000 /* execution access */ + +/* Commands for `shmctl'. */ +#define SHM_LOCK 11 /* lock segment (root only) */ +#define SHM_UNLOCK 12 /* unlock segment (root only) */ + +__BEGIN_DECLS + +/* Segment low boundary address multiple. */ +#define SHMLBA (__getpagesize () << 2) +extern int __getpagesize (void) __THROW __attribute__ ((__const__)); + + +/* Type to count number of attaches. */ +typedef unsigned long int shmatt_t; + +/* Data structure describing a shared memory segment. */ +struct shmid_ds + { + struct ipc_perm shm_perm; /* operation permission struct */ + size_t shm_segsz; /* size of segment in bytes */ + __time_t shm_atime; /* time of last shmat() */ + unsigned long int __glibc_reserved1; + __time_t shm_dtime; /* time of last shmdt() */ + unsigned long int __glibc_reserved2; + __time_t shm_ctime; /* time of last change by shmctl() */ + unsigned long int __glibc_reserved3; + __pid_t shm_cpid; /* pid of creator */ + __pid_t shm_lpid; /* pid of last shmop */ + shmatt_t shm_nattch; /* number of current attaches */ + unsigned long int __glibc_reserved4; + unsigned long int __glibc_reserved5; + }; + +#ifdef __USE_MISC + +/* ipcs ctl commands */ +# define SHM_STAT 13 +# define SHM_INFO 14 + +/* shm_mode upper byte flags */ +# define SHM_DEST 01000 /* segment will be destroyed on last detach */ +# define SHM_LOCKED 02000 /* segment will not be swapped */ +# define SHM_HUGETLB 04000 /* segment is mapped via hugetlb */ +# define SHM_NORESERVE 010000 /* don't check for reservations */ + +struct shminfo + { + unsigned long int shmmax; + unsigned long int shmmin; + unsigned long int shmmni; + unsigned long int shmseg; + unsigned long int shmall; + unsigned long int __glibc_reserved1; + unsigned long int __glibc_reserved2; + unsigned long int __glibc_reserved3; + unsigned long int __glibc_reserved4; + }; + +struct shm_info + { + int used_ids; + unsigned long int shm_tot; /* total allocated shm */ + unsigned long int shm_rss; /* total resident shm */ + unsigned long int shm_swp; /* total swapped shm */ + unsigned long int swap_attempts; + unsigned long int swap_successes; + }; + +#endif /* __USE_MISC */ + +__END_DECLS diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/brk.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/brk.c new file mode 100644 index 0000000000..74bff978d6 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/brk.c @@ -0,0 +1,41 @@ +/* brk system call for Linux/ARM. + Copyright (C) 1995-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#include <errno.h> +#include <unistd.h> +#include <sysdep.h> + +/* This must be initialized data because commons can't have aliases. */ +void *__curbrk = 0; + +int +__brk (void *addr) +{ + void *newbrk; + + __curbrk = newbrk = (void *) INLINE_SYSCALL (brk, 1, addr); + + if (newbrk < addr) + { + __set_errno (ENOMEM); + return -1; + } + + return 0; +} +weak_alias (__brk, brk) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/c++-types.data b/REORG.TODO/sysdeps/unix/sysv/linux/arm/c++-types.data new file mode 100644 index 0000000000..fde53bf337 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/c++-types.data @@ -0,0 +1,67 @@ +blkcnt64_t:x +blkcnt_t:l +blksize_t:l +caddr_t:Pc +clockid_t:i +clock_t:l +daddr_t:i +dev_t:y +fd_mask:l +fsblkcnt64_t:y +fsblkcnt_t:m +fsfilcnt64_t:y +fsfilcnt_t:m +fsid_t:8__fsid_t +gid_t:j +id_t:j +ino64_t:y +ino_t:m +int16_t:s +int32_t:i +int64_t:x +int8_t:a +intptr_t:i +key_t:i +loff_t:x +mode_t:j +nlink_t:j +off64_t:x +off_t:l +pid_t:i +pthread_attr_t:14pthread_attr_t +pthread_barrier_t:17pthread_barrier_t +pthread_barrierattr_t:21pthread_barrierattr_t +pthread_cond_t:14pthread_cond_t +pthread_condattr_t:18pthread_condattr_t +pthread_key_t:j +pthread_mutex_t:15pthread_mutex_t +pthread_mutexattr_t:19pthread_mutexattr_t +pthread_once_t:i +pthread_rwlock_t:16pthread_rwlock_t +pthread_rwlockattr_t:20pthread_rwlockattr_t +pthread_spinlock_t:i +pthread_t:m +quad_t:x +register_t:i +rlim64_t:y +rlim_t:m +sigset_t:10__sigset_t +size_t:j +socklen_t:j +ssize_t:i +suseconds_t:l +time_t:l +u_char:h +uid_t:j +uint:j +u_int:j +u_int16_t:t +u_int32_t:j +u_int64_t:y +u_int8_t:h +ulong:m +u_long:m +u_quad_t:y +useconds_t:j +ushort:t +u_short:t diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/clone.S b/REORG.TODO/sysdeps/unix/sysv/linux/arm/clone.S new file mode 100644 index 0000000000..a309add895 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/clone.S @@ -0,0 +1,84 @@ +/* Copyright (C) 1996-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Pat Beirne <patb@corelcomputer.com> + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +/* clone() is even more special than fork() as it mucks with stacks + and invokes a function in the right context after its all over. */ + +#include <sysdep.h> +#include <tcb-offsets.h> +#define _ERRNO_H 1 +#include <bits/errno.h> + +#define CLONE_VM 0x00000100 +#define CLONE_THREAD 0x00010000 + +/* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg, + pid_t *ptid, struct user_desc *tls, pid_t *ctid); */ + + .text +ENTRY(__clone) + @ sanity check args + cmp r0, #0 + ite ne + cmpne r1, #0 + moveq r0, #-EINVAL + beq PLTJMP(syscall_error) + + @ insert the args onto the new stack + str r3, [r1, #-4]! + str r0, [r1, #-4]! + + @ do the system call + @ get flags + mov r0, r2 + mov ip, r2 + @ new sp is already in r1 + push {r4, r7} + cfi_adjust_cfa_offset (8) + cfi_rel_offset (r4, 0) + cfi_rel_offset (r7, 4) + ldr r2, [sp, #8] + ldr r3, [sp, #12] + ldr r4, [sp, #16] + ldr r7, =SYS_ify(clone) + swi 0x0 + cfi_endproc + cmp r0, #0 + beq 1f + pop {r4, r7} + blt PLTJMP(C_SYMBOL_NAME(__syscall_error)) + RETINSTR(, lr) + + cfi_startproc +PSEUDO_END (__clone) + +1: + .fnstart + .cantunwind + @ pick the function arg and call address off the stack and execute + ldr r0, [sp, #4] + ldr ip, [sp], #8 + BLX (ip) + + @ and we are done, passing the return value through r0 + b PLTJMP(HIDDEN_JUMPTARGET(_exit)) + + .fnend + +libc_hidden_def (__clone) +weak_alias (__clone, clone) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/dl-cache.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/dl-cache.h new file mode 100644 index 0000000000..ccc4f2f3b3 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/dl-cache.h @@ -0,0 +1,34 @@ +/* Support for reading /etc/ld.so.cache files written by Linux ldconfig. + Copyright (C) 2003-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#include <ldconfig.h> + +/* In order to support the transition from unmarked objects + to marked objects we must treat unmarked objects as + compatible with either FLAG_ARM_LIBHF or FLAG_ARM_LIBSF. */ +#ifdef __ARM_PCS_VFP +# define _dl_cache_check_flags(flags) \ + ((flags) == (FLAG_ARM_LIBHF | FLAG_ELF_LIBC6) \ + || (flags) == FLAG_ELF_LIBC6) +#else +# define _dl_cache_check_flags(flags) \ + ((flags) == (FLAG_ARM_LIBSF | FLAG_ELF_LIBC6) \ + || (flags) == FLAG_ELF_LIBC6) +#endif + +#include_next <dl-cache.h> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/dl-machine.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/dl-machine.h new file mode 100644 index 0000000000..8cc7d25439 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/dl-machine.h @@ -0,0 +1,30 @@ +/* Machine-dependent ELF dynamic relocation inline functions. ARM/Linux version + Copyright (C) 1995-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef dl_machine_h + +/* This definition is Linux-specific. */ +#define CLEAR_CACHE(BEG,END) \ + INTERNAL_SYSCALL_ARM (cacheflush, , 3, (BEG), (END), 0) + +#endif + +/* The rest is just machine-specific. + This #include is outside the #ifndef because the parts of + dl-machine.h used only by dynamic-link.h are outside the guard. */ +#include <sysdeps/arm/dl-machine.h> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/dl-procinfo.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/dl-procinfo.c new file mode 100644 index 0000000000..15c45d089f --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/dl-procinfo.c @@ -0,0 +1,66 @@ +/* Data for Linux/ARM version of processor capability information. + Copyright (C) 2001-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Philip Blundell <philb@gnu.org>, 2001. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +/* This information must be kept in sync with the _DL_HWCAP_COUNT and + _DL_PLATFORM_COUNT definitions in procinfo.h. + + If anything should be added here check whether the size of each string + is still ok with the given array size. + + All the #ifdefs in the definitions are quite irritating but + necessary if we want to avoid duplicating the information. There + are three different modes: + + - PROCINFO_DECL is defined. This means we are only interested in + declarations. + + - PROCINFO_DECL is not defined: + + + if SHARED is defined the file is included in an array + initializer. The .element = { ... } syntax is needed. + + + if SHARED is not defined a normal array initialization is + needed. + */ + +#ifndef PROCINFO_CLASS +#define PROCINFO_CLASS +#endif + +#if !defined PROCINFO_DECL && defined SHARED + ._dl_arm_cap_flags +#else +PROCINFO_CLASS const char _dl_arm_cap_flags[27][10] +#endif +#ifndef PROCINFO_DECL += { + "swp", "half", "thumb", "26bit", "fastmult", "fpa", "vfp", "edsp", + "java", "iwmmxt", "crunch", "thumbee", "neon", "vfpv3", "vfpv3d16", + "tls", "vfpv4", "idiva", "idivt", "vfpd32", "lpae", "evtstrm", + "aes", "pmull", "sha1", "sha2", "crc32", + } +#endif +#if !defined SHARED || defined PROCINFO_DECL +; +#else +, +#endif + +#undef PROCINFO_DECL +#undef PROCINFO_CLASS diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/dl-procinfo.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/dl-procinfo.h new file mode 100644 index 0000000000..b6a9d9f6a2 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/dl-procinfo.h @@ -0,0 +1,93 @@ +/* Linux/ARM version of processor capability information handling macros. + Copyright (C) 2001-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Philip Blundell <philb@gnu.org>, 2001. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _DL_PROCINFO_H +#define _DL_PROCINFO_H 1 + +#include <ldsodefs.h> +#include <sysdep.h> + +#define _DL_HWCAP_COUNT 27 + +/* Low 22 bits are allocated in HWCAP. */ +#define _DL_HWCAP_LAST 21 + +/* Low 5 bits are allocated in HWCAP2. */ +#define _DL_HWCAP2_LAST 4 + +/* The kernel provides platform data but it is not interesting. */ +#define _DL_HWCAP_PLATFORM 0 + + +static inline const char * +__attribute__ ((unused)) +_dl_hwcap_string (int idx) +{ + return GLRO(dl_arm_cap_flags)[idx]; +}; + +static inline int +__attribute__ ((unused)) +_dl_procinfo (unsigned int type, unsigned long int word) +{ + switch(type) + { + case AT_HWCAP: + _dl_printf ("AT_HWCAP: "); + + for (int i = 0; i <= _DL_HWCAP_LAST; ++i) + if (word & (1 << i)) + _dl_printf (" %s", _dl_hwcap_string (i)); + break; + case AT_HWCAP2: + { + unsigned int offset = _DL_HWCAP_LAST + 1; + + _dl_printf ("AT_HWCAP2: "); + + for (int i = 0; i <= _DL_HWCAP2_LAST; ++i) + if (word & (1 << i)) + _dl_printf (" %s", _dl_hwcap_string (offset + i)); + break; + } + default: + /* This should not happen. */ + return -1; + } + _dl_printf ("\n"); + return 0; +} + +#define HWCAP_IMPORTANT (HWCAP_ARM_VFP | HWCAP_ARM_NEON) + +static inline int +__attribute__ ((unused)) +_dl_string_hwcap (const char *str) +{ + for (int i = 0; i < _DL_HWCAP_COUNT; i++) + { + if (strcmp (str, _dl_hwcap_string (i)) == 0) + return i; + } + return -1; +}; + +#define _dl_string_platform(str) (-1) + +#endif /* dl-procinfo.h */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/fcntl.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/fcntl.c new file mode 100644 index 0000000000..ea951bc4f9 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/fcntl.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/i386/fcntl.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/fxstat.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/fxstat.c new file mode 100644 index 0000000000..4f219f0b9d --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/fxstat.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/i386/fxstat.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/fxstatat.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/fxstatat.c new file mode 100644 index 0000000000..0f8b3135d8 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/fxstatat.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/i386/fxstatat.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/getcontext.S b/REORG.TODO/sysdeps/unix/sysv/linux/arm/getcontext.S new file mode 100644 index 0000000000..fcc6c6f36b --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/getcontext.S @@ -0,0 +1,115 @@ +/* Copyright (C) 2012-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#include <rtld-global-offsets.h> + +#include "ucontext_i.h" + + .syntax unified + .text + +/* int getcontext (ucontext_t *ucp) */ + +ENTRY(__getcontext) + /* No need to save r0-r3, d0-d7, or d16-d31. */ + add r1, r0, #MCONTEXT_ARM_R4 + stmia r1, {r4-r11} + + /* Save R13 separately as Thumb can't STM it. */ + str r13, [r0, #MCONTEXT_ARM_SP] + str r14, [r0, #MCONTEXT_ARM_LR] + /* Return to LR */ + str r14, [r0, #MCONTEXT_ARM_PC] + /* Return zero */ + mov r2, #0 + str r2, [r0, #MCONTEXT_ARM_R0] + + /* Save ucontext_t * across the next call. */ + mov r4, r0 + + /* __sigprocmask(SIG_BLOCK, NULL, &(ucontext->uc_sigmask)) */ + mov r0, #SIG_BLOCK + mov r1, #0 + add r2, r4, #UCONTEXT_SIGMASK + bl PLTJMP(__sigprocmask) + + /* Store FP regs. Much of the FP code is copied from arm/setjmp.S. */ + +#ifdef PIC + ldr r2, 1f + ldr r1, .Lrtld_global_ro +0: add r2, pc, r2 + ldr r2, [r2, r1] + ldr r2, [r2, #RTLD_GLOBAL_RO_DL_HWCAP_OFFSET] +#else + ldr r2, .Lhwcap + ldr r2, [r2, #0] +#endif + + add r0, r4, #UCONTEXT_REGSPACE + +#ifdef __SOFTFP__ + tst r2, #HWCAP_ARM_VFP + beq .Lno_vfp +#endif + + /* Store the VFP registers. + Don't use VFP instructions directly because this code + is used in non-VFP multilibs. */ + /* Following instruction is vstmia r0!, {d8-d15}. */ + stc p11, cr8, [r0], #64 + /* Store the floating-point status register. */ + /* Following instruction is vmrs r1, fpscr. */ + mrc p10, 7, r1, cr1, cr0, 0 + str r1, [r0], #4 +.Lno_vfp: + + tst r2, #HWCAP_ARM_IWMMXT + beq .Lno_iwmmxt + + /* Save the call-preserved iWMMXt registers. */ + /* Following instructions are wstrd wr10, [r0], #8 (etc.) */ + stcl p1, cr10, [r0], #8 + stcl p1, cr11, [r0], #8 + stcl p1, cr12, [r0], #8 + stcl p1, cr13, [r0], #8 + stcl p1, cr14, [r0], #8 + stcl p1, cr15, [r0], #8 +.Lno_iwmmxt: + + /* Restore the clobbered R4 and LR. */ + ldr r14, [r4, #MCONTEXT_ARM_LR] + ldr r4, [r4, #MCONTEXT_ARM_R4] + + mov r0, #0 + + DO_RET(r14) + +END(__getcontext) + +#ifdef PIC +1: .long _GLOBAL_OFFSET_TABLE_ - 0b - PC_OFS +.Lrtld_global_ro: + .long C_SYMBOL_NAME(_rtld_global_ro)(GOT) +#else +.Lhwcap: + .long C_SYMBOL_NAME(_dl_hwcap) +#endif + + +weak_alias(__getcontext, getcontext) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/getdents64.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/getdents64.c new file mode 100644 index 0000000000..0c75fb5a06 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/getdents64.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/i386/getdents64.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/glob64.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/glob64.c new file mode 100644 index 0000000000..82a9a296a7 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/glob64.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/i386/glob64.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/init-first.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/init-first.c new file mode 100644 index 0000000000..3c289c2a25 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/init-first.c @@ -0,0 +1,44 @@ +/* Initialization code run first thing by the ELF startup code. Linux/ARM. + Copyright (C) 2015-2017 Free Software Foundation, Inc. + + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#ifdef SHARED +# include <dl-vdso.h> +# include <libc-vdso.h> + +int (*VDSO_SYMBOL(gettimeofday)) (struct timeval *, void *) attribute_hidden; +int (*VDSO_SYMBOL(clock_gettime)) (clockid_t, struct timespec *); + +static inline void +_libc_vdso_platform_setup (void) +{ + PREPARE_VERSION_KNOWN (linux26, LINUX_2_6); + + void *p = _dl_vdso_vsym ("__vdso_gettimeofday", &linux26); + PTR_MANGLE (p); + VDSO_SYMBOL (gettimeofday) = p; + + p = _dl_vdso_vsym ("__vdso_clock_gettime", &linux26); + PTR_MANGLE (p); + VDSO_SYMBOL (clock_gettime) = p; +} + +# define VDSO_SETUP _libc_vdso_platform_setup +#endif + +#include <csu/init-first.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/ioperm.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/ioperm.c new file mode 100644 index 0000000000..c1fedd3696 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/ioperm.c @@ -0,0 +1,183 @@ +/* Copyright (C) 1998-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Phil Blundell, based on the Alpha version by + David Mosberger. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +/* I/O port access on the ARM is something of a fiction. What we do is to + map an appropriate area of /dev/mem into user space so that a program + can blast away at the hardware in such a way as to generate I/O cycles + on the bus. To insulate user code from dependencies on particular + hardware we don't allow calls to inb() and friends to be inlined, but + force them to come through code in here every time. Performance-critical + registers tend to be memory mapped these days so this should be no big + problem. */ + +/* Once upon a time this file used mprotect to enable and disable + access to particular areas of I/O space. Unfortunately the + mprotect syscall also has the side effect of enabling caching for + the area affected (this is a kernel limitation). So we now just + enable all the ports all of the time. */ + +#include <errno.h> +#include <fcntl.h> +#include <stdio.h> +#include <ctype.h> +#include <stdlib.h> +#include <unistd.h> + +#include <sys/types.h> +#include <sys/mman.h> + +#include <sys/sysctl.h> + +#define MAX_PORT 0x10000 + +static struct { + unsigned long int base; + unsigned long int io_base; + unsigned int shift; + unsigned int initdone; /* since all the above could be 0 */ +} io; + +#define IO_ADDR(port) (io.base + ((port) << io.shift)) + +/* + * Initialize I/O system. The io_bae and port_shift values are fetched + * using sysctl (CTL_BUS, CTL_BUS_ISA, ISA_*). + */ + +static int +init_iosys (void) +{ + static int iobase_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_BASE }; + static int ioshift_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_SHIFT }; + size_t len = sizeof(io.base); + + if (! __sysctl (iobase_name, 3, &io.io_base, &len, NULL, 0) + && ! __sysctl (ioshift_name, 3, &io.shift, &len, NULL, 0)) + { + io.initdone = 1; + return 0; + } + + /* sysctl has failed... */ + __set_errno (ENODEV); + return -1; +} + +int +_ioperm (unsigned long int from, unsigned long int num, int turn_on) +{ + if (! io.initdone && init_iosys () < 0) + return -1; + + /* this test isn't as silly as it may look like; consider overflows! */ + if (from >= MAX_PORT || from + num > MAX_PORT) + { + __set_errno (EINVAL); + return -1; + } + + if (turn_on) + { + if (! io.base) + { + int fd; + + fd = __open ("/dev/mem", O_RDWR); + if (fd < 0) + return -1; + + io.base = + (unsigned long int) __mmap (0, MAX_PORT << io.shift, + PROT_READ | PROT_WRITE, + MAP_SHARED, fd, io.io_base); + __close (fd); + if ((long) io.base == -1) + return -1; + } + } + + return 0; +} + + +int +_iopl (unsigned int level) +{ + if (level > 3) + { + __set_errno (EINVAL); + return -1; + } + if (level) + { + return _ioperm (0, MAX_PORT, 1); + } + return 0; +} + + +void +_outb (unsigned char b, unsigned long int port) +{ + *((volatile unsigned char *)(IO_ADDR (port))) = b; +} + + +void +_outw (unsigned short b, unsigned long int port) +{ + *((volatile unsigned short *)(IO_ADDR (port))) = b; +} + + +void +_outl (unsigned int b, unsigned long int port) +{ + *((volatile unsigned long *)(IO_ADDR (port))) = b; +} + + +unsigned int +_inb (unsigned long int port) +{ + return *((volatile unsigned char *)(IO_ADDR (port))); +} + + +unsigned int +_inw (unsigned long int port) +{ + return *((volatile unsigned short *)(IO_ADDR (port))); +} + + +unsigned int +_inl (unsigned long int port) +{ + return *((volatile unsigned long *)(IO_ADDR (port))); +} + +weak_alias (_ioperm, ioperm); +weak_alias (_iopl, iopl); +weak_alias (_inb, inb); +weak_alias (_inw, inw); +weak_alias (_inl, inl); +weak_alias (_outb, outb); +weak_alias (_outw, outw); +weak_alias (_outl, outl); diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/kernel-features.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/kernel-features.h new file mode 100644 index 0000000000..e13b049389 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/kernel-features.h @@ -0,0 +1,41 @@ +/* Set flags signalling availability of kernel features based on given + kernel version number. + Copyright (C) 2006-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#include_next <kernel-features.h> + +/* The ARM kernel before 3.14.3 may or may not support + futex_atomic_cmpxchg_inatomic, depending on kernel + configuration. */ +#if __LINUX_KERNEL_VERSION < 0x030E03 +# undef __ASSUME_SET_ROBUST_LIST +#endif + +/* ARM fadvise64_64 reorganize the syscall arguments. */ +#define __ASSUME_FADVISE64_64_6ARG 1 + +/* Define this if your 32-bit syscall API requires 64-bit register + pairs to start with an even-number register. */ +#define __ASSUME_ALIGNED_REGISTER_PAIRS 1 + +/* ARM only has a syscall for fadvise64{_64} and it is defined with a + non-standard name. */ +#define __NR_fadvise64_64 __NR_arm_fadvise64_64 + +#define __ASSUME_RECV_SYSCALL 1 +#define __ASSUME_SEND_SYSCALL 1 diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/ld.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/arm/ld.abilist new file mode 100644 index 0000000000..cbf3a3cb2e --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/ld.abilist @@ -0,0 +1,10 @@ +GLIBC_2.4 GLIBC_2.4 A +GLIBC_2.4 __libc_stack_end D 0x4 +GLIBC_2.4 __stack_chk_guard D 0x4 +GLIBC_2.4 __tls_get_addr F +GLIBC_2.4 _dl_mcount F +GLIBC_2.4 _r_debug D 0x14 +GLIBC_2.4 calloc F +GLIBC_2.4 free F +GLIBC_2.4 malloc F +GLIBC_2.4 realloc F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/ldconfig.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/ldconfig.h new file mode 100644 index 0000000000..a9a467cc6b --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/ldconfig.h @@ -0,0 +1,25 @@ +/* Copyright (C) 2001-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdeps/generic/ldconfig.h> + +#define SYSDEP_KNOWN_INTERPRETER_NAMES \ + { "/lib/ld-linux.so.3", FLAG_ELF_LIBC6 }, \ + { "/lib/ld-linux-armhf.so.3", FLAG_ELF_LIBC6 }, +#define SYSDEP_KNOWN_LIBRARY_NAMES \ + { "libc.so.6", FLAG_ELF_LIBC6 }, \ + { "libm.so.6", FLAG_ELF_LIBC6 }, diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/ldsodefs.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/ldsodefs.h new file mode 100644 index 0000000000..6bd126b8ec --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/ldsodefs.h @@ -0,0 +1,73 @@ +/* Run-time dynamic linker data structures for loaded ELF shared objects. + Copyright (C) 2010-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _ARM_LINUX_LDSODEFS_H +#define _ARM_LINUX_LDSODEFS_H 1 + +#include_next <ldsodefs.h> + +#undef VALID_ELF_HEADER +#undef VALID_ELF_OSABI +#undef MORE_ELF_HEADER_DATA + +#define EXTRA_OSABI ELFOSABI_ARM_AEABI + +#ifdef __ARM_PCS_VFP +# define VALID_FLOAT_ABI(x) \ + ((EF_ARM_EABI_VERSION ((x)) != EF_ARM_EABI_VER5) \ + || !((x) & EF_ARM_ABI_FLOAT_SOFT)) +#else +# define VALID_FLOAT_ABI(x) \ + ((EF_ARM_EABI_VERSION ((x)) != EF_ARM_EABI_VER5) \ + || !((x) & EF_ARM_ABI_FLOAT_HARD)) +#endif + +#undef VALID_ELF_HEADER +#define VALID_ELF_HEADER(hdr,exp,size) \ + ((memcmp (hdr, exp, size) == 0 \ + || memcmp (hdr, expected2, size) == 0 \ + || memcmp (hdr, expected3, size) == 0) \ + && VALID_FLOAT_ABI (ehdr->e_flags)) +#define VALID_ELF_OSABI(osabi) (osabi == ELFOSABI_SYSV \ + || osabi == ELFOSABI_GNU \ + || osabi == EXTRA_OSABI) +#define MORE_ELF_HEADER_DATA \ + static const unsigned char expected2[EI_PAD] = \ + { \ + [EI_MAG0] = ELFMAG0, \ + [EI_MAG1] = ELFMAG1, \ + [EI_MAG2] = ELFMAG2, \ + [EI_MAG3] = ELFMAG3, \ + [EI_CLASS] = ELFW(CLASS), \ + [EI_DATA] = byteorder, \ + [EI_VERSION] = EV_CURRENT, \ + [EI_OSABI] = ELFOSABI_GNU \ + }; \ + static const unsigned char expected3[EI_PAD] = \ + { \ + [EI_MAG0] = ELFMAG0, \ + [EI_MAG1] = ELFMAG1, \ + [EI_MAG2] = ELFMAG2, \ + [EI_MAG3] = ELFMAG3, \ + [EI_CLASS] = ELFW(CLASS), \ + [EI_DATA] = byteorder, \ + [EI_VERSION] = EV_CURRENT, \ + [EI_OSABI] = EXTRA_OSABI \ + } + +#endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/libBrokenLocale.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libBrokenLocale.abilist new file mode 100644 index 0000000000..e80f213955 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libBrokenLocale.abilist @@ -0,0 +1,2 @@ +GLIBC_2.4 GLIBC_2.4 A +GLIBC_2.4 __ctype_get_mb_cur_max F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/libanl.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libanl.abilist new file mode 100644 index 0000000000..df0c397ddc --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libanl.abilist @@ -0,0 +1,5 @@ +GLIBC_2.4 GLIBC_2.4 A +GLIBC_2.4 gai_cancel F +GLIBC_2.4 gai_error F +GLIBC_2.4 gai_suspend F +GLIBC_2.4 getaddrinfo_a F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/libc-do-syscall.S b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libc-do-syscall.S new file mode 100644 index 0000000000..e5c1341a9d --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libc-do-syscall.S @@ -0,0 +1,51 @@ +/* Copyright (C) 2010-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +/* When this file is built for inclusion in nscd, _FORTIFY_SOURCE is + defined but -O is not used, resulting in a warning from features.h. */ +#undef _FORTIFY_SOURCE +#include <sysdep.h> + +/* Out-of-line syscall stub. We expect the system call number in ip + and return the raw result in r0. No registers are clobbered. + We could avoid using the stack for this, but the goal is accurate + unwind information - and while there is a reserved prefix in the + ARM unwind tables for register to register moves, the actual opcodes + are not defined. */ + +#if defined(__thumb__) + .thumb + .syntax unified + .hidden __libc_do_syscall + +#undef CALL_MCOUNT +#define CALL_MCOUNT + +ENTRY (__libc_do_syscall) + .fnstart + push {r7, lr} + .save {r7, lr} + cfi_adjust_cfa_offset (8) + cfi_rel_offset (r7, 0) + cfi_rel_offset (lr, 4) + mov r7, ip + swi 0x0 + pop {r7, pc} + .fnend +END (__libc_do_syscall) + +#endif /* __thumb__ */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/libc-vdso.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libc-vdso.h new file mode 100644 index 0000000000..ae37b574e1 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libc-vdso.h @@ -0,0 +1,33 @@ +/* VDSO function pointer declarations. Linux/ARM. + Copyright (C) 2015-2017 Free Software Foundation, Inc. + + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _LIBC_VDSO_H +#define _LIBC_VDSO_H + +#ifdef SHARED + +# include <sysdep-vdso.h> + +extern int (*VDSO_SYMBOL(gettimeofday)) (struct timeval *, void *) + attribute_hidden; +extern int (*VDSO_SYMBOL(clock_gettime)) (clockid_t, struct timespec *); + +#endif + +#endif /* _LIBC_VDSO_H */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/libc.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libc.abilist new file mode 100644 index 0000000000..d2a206a8df --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libc.abilist @@ -0,0 +1,2154 @@ +GLIBC_2.10 GLIBC_2.10 A +GLIBC_2.10 __cxa_at_quick_exit F +GLIBC_2.10 __posix_getopt F +GLIBC_2.10 accept4 F +GLIBC_2.10 endsgent F +GLIBC_2.10 fallocate F +GLIBC_2.10 fgetsgent F +GLIBC_2.10 fgetsgent_r F +GLIBC_2.10 getsgent F +GLIBC_2.10 getsgent_r F +GLIBC_2.10 getsgnam F +GLIBC_2.10 getsgnam_r F +GLIBC_2.10 malloc_info F +GLIBC_2.10 preadv F +GLIBC_2.10 preadv64 F +GLIBC_2.10 psiginfo F +GLIBC_2.10 putsgent F +GLIBC_2.10 pwritev F +GLIBC_2.10 pwritev64 F +GLIBC_2.10 quick_exit F +GLIBC_2.10 register_printf_modifier F +GLIBC_2.10 register_printf_specifier F +GLIBC_2.10 register_printf_type F +GLIBC_2.10 setsgent F +GLIBC_2.10 sgetsgent F +GLIBC_2.10 sgetsgent_r F +GLIBC_2.11 GLIBC_2.11 A +GLIBC_2.11 __longjmp_chk F +GLIBC_2.11 execvpe F +GLIBC_2.11 fallocate64 F +GLIBC_2.11 mkostemps F +GLIBC_2.11 mkostemps64 F +GLIBC_2.11 mkstemps F +GLIBC_2.11 mkstemps64 F +GLIBC_2.12 GLIBC_2.12 A +GLIBC_2.12 _sys_errlist D 0x21c +GLIBC_2.12 _sys_nerr D 0x4 +GLIBC_2.12 ntp_gettimex F +GLIBC_2.12 recvmmsg F +GLIBC_2.12 sys_errlist D 0x21c +GLIBC_2.12 sys_nerr D 0x4 +GLIBC_2.13 GLIBC_2.13 A +GLIBC_2.13 fanotify_init F +GLIBC_2.13 fanotify_mark F +GLIBC_2.13 prlimit F +GLIBC_2.13 prlimit64 F +GLIBC_2.14 GLIBC_2.14 A +GLIBC_2.14 clock_adjtime F +GLIBC_2.14 name_to_handle_at F +GLIBC_2.14 open_by_handle_at F +GLIBC_2.14 sendmmsg F +GLIBC_2.14 setns F +GLIBC_2.14 syncfs F +GLIBC_2.15 GLIBC_2.15 A +GLIBC_2.15 __fdelt_chk F +GLIBC_2.15 __fdelt_warn F +GLIBC_2.15 posix_spawn F +GLIBC_2.15 posix_spawnp F +GLIBC_2.15 process_vm_readv F +GLIBC_2.15 process_vm_writev F +GLIBC_2.15 scandirat F +GLIBC_2.15 scandirat64 F +GLIBC_2.16 GLIBC_2.16 A +GLIBC_2.16 __getauxval F +GLIBC_2.16 __poll_chk F +GLIBC_2.16 __ppoll_chk F +GLIBC_2.16 aligned_alloc F +GLIBC_2.16 c16rtomb F +GLIBC_2.16 c32rtomb F +GLIBC_2.16 getauxval F +GLIBC_2.16 mbrtoc16 F +GLIBC_2.16 mbrtoc32 F +GLIBC_2.16 timespec_get F +GLIBC_2.17 GLIBC_2.17 A +GLIBC_2.17 clock_getcpuclockid F +GLIBC_2.17 clock_getres F +GLIBC_2.17 clock_gettime F +GLIBC_2.17 clock_nanosleep F +GLIBC_2.17 clock_settime F +GLIBC_2.17 secure_getenv F +GLIBC_2.18 GLIBC_2.18 A +GLIBC_2.18 __cxa_thread_atexit_impl F +GLIBC_2.22 GLIBC_2.22 A +GLIBC_2.22 fmemopen F +GLIBC_2.23 GLIBC_2.23 A +GLIBC_2.23 fts64_children F +GLIBC_2.23 fts64_close F +GLIBC_2.23 fts64_open F +GLIBC_2.23 fts64_read F +GLIBC_2.23 fts64_set F +GLIBC_2.24 GLIBC_2.24 A +GLIBC_2.24 quick_exit F +GLIBC_2.25 GLIBC_2.25 A +GLIBC_2.25 __explicit_bzero_chk F +GLIBC_2.25 explicit_bzero F +GLIBC_2.25 getentropy F +GLIBC_2.25 getrandom F +GLIBC_2.25 strfromd F +GLIBC_2.25 strfromf F +GLIBC_2.25 strfroml F +GLIBC_2.26 GLIBC_2.26 A +GLIBC_2.26 preadv2 F +GLIBC_2.26 preadv64v2 F +GLIBC_2.26 pwritev2 F +GLIBC_2.26 pwritev64v2 F +GLIBC_2.26 reallocarray F +GLIBC_2.4 GLIBC_2.4 A +GLIBC_2.4 _Exit F +GLIBC_2.4 _IO_2_1_stderr_ D 0xa0 +GLIBC_2.4 _IO_2_1_stdin_ D 0xa0 +GLIBC_2.4 _IO_2_1_stdout_ D 0xa0 +GLIBC_2.4 _IO_adjust_column F +GLIBC_2.4 _IO_adjust_wcolumn F +GLIBC_2.4 _IO_default_doallocate F +GLIBC_2.4 _IO_default_finish F +GLIBC_2.4 _IO_default_pbackfail F +GLIBC_2.4 _IO_default_uflow F +GLIBC_2.4 _IO_default_xsgetn F +GLIBC_2.4 _IO_default_xsputn F +GLIBC_2.4 _IO_do_write F +GLIBC_2.4 _IO_doallocbuf F +GLIBC_2.4 _IO_fclose F +GLIBC_2.4 _IO_fdopen F +GLIBC_2.4 _IO_feof F +GLIBC_2.4 _IO_ferror F +GLIBC_2.4 _IO_fflush F +GLIBC_2.4 _IO_fgetpos F +GLIBC_2.4 _IO_fgetpos64 F +GLIBC_2.4 _IO_fgets F +GLIBC_2.4 _IO_file_attach F +GLIBC_2.4 _IO_file_close F +GLIBC_2.4 _IO_file_close_it F +GLIBC_2.4 _IO_file_doallocate F +GLIBC_2.4 _IO_file_finish F +GLIBC_2.4 _IO_file_fopen F +GLIBC_2.4 _IO_file_init F +GLIBC_2.4 _IO_file_jumps D 0x54 +GLIBC_2.4 _IO_file_open F +GLIBC_2.4 _IO_file_overflow F +GLIBC_2.4 _IO_file_read F +GLIBC_2.4 _IO_file_seek F +GLIBC_2.4 _IO_file_seekoff F +GLIBC_2.4 _IO_file_setbuf F +GLIBC_2.4 _IO_file_stat F +GLIBC_2.4 _IO_file_sync F +GLIBC_2.4 _IO_file_underflow F +GLIBC_2.4 _IO_file_write F +GLIBC_2.4 _IO_file_xsputn F +GLIBC_2.4 _IO_flockfile F +GLIBC_2.4 _IO_flush_all F +GLIBC_2.4 _IO_flush_all_linebuffered F +GLIBC_2.4 _IO_fopen F +GLIBC_2.4 _IO_fprintf F +GLIBC_2.4 _IO_fputs F +GLIBC_2.4 _IO_fread F +GLIBC_2.4 _IO_free_backup_area F +GLIBC_2.4 _IO_free_wbackup_area F +GLIBC_2.4 _IO_fsetpos F +GLIBC_2.4 _IO_fsetpos64 F +GLIBC_2.4 _IO_ftell F +GLIBC_2.4 _IO_ftrylockfile F +GLIBC_2.4 _IO_funlockfile F +GLIBC_2.4 _IO_fwrite F +GLIBC_2.4 _IO_getc F +GLIBC_2.4 _IO_getline F +GLIBC_2.4 _IO_getline_info F +GLIBC_2.4 _IO_gets F +GLIBC_2.4 _IO_init F +GLIBC_2.4 _IO_init_marker F +GLIBC_2.4 _IO_init_wmarker F +GLIBC_2.4 _IO_iter_begin F +GLIBC_2.4 _IO_iter_end F +GLIBC_2.4 _IO_iter_file F +GLIBC_2.4 _IO_iter_next F +GLIBC_2.4 _IO_least_wmarker F +GLIBC_2.4 _IO_link_in F +GLIBC_2.4 _IO_list_all D 0x4 +GLIBC_2.4 _IO_list_lock F +GLIBC_2.4 _IO_list_resetlock F +GLIBC_2.4 _IO_list_unlock F +GLIBC_2.4 _IO_marker_delta F +GLIBC_2.4 _IO_marker_difference F +GLIBC_2.4 _IO_padn F +GLIBC_2.4 _IO_peekc_locked F +GLIBC_2.4 _IO_popen F +GLIBC_2.4 _IO_printf F +GLIBC_2.4 _IO_proc_close F +GLIBC_2.4 _IO_proc_open F +GLIBC_2.4 _IO_putc F +GLIBC_2.4 _IO_puts F +GLIBC_2.4 _IO_remove_marker F +GLIBC_2.4 _IO_seekmark F +GLIBC_2.4 _IO_seekoff F +GLIBC_2.4 _IO_seekpos F +GLIBC_2.4 _IO_seekwmark F +GLIBC_2.4 _IO_setb F +GLIBC_2.4 _IO_setbuffer F +GLIBC_2.4 _IO_setvbuf F +GLIBC_2.4 _IO_sgetn F +GLIBC_2.4 _IO_sprintf F +GLIBC_2.4 _IO_sputbackc F +GLIBC_2.4 _IO_sputbackwc F +GLIBC_2.4 _IO_sscanf F +GLIBC_2.4 _IO_str_init_readonly F +GLIBC_2.4 _IO_str_init_static F +GLIBC_2.4 _IO_str_overflow F +GLIBC_2.4 _IO_str_pbackfail F +GLIBC_2.4 _IO_str_seekoff F +GLIBC_2.4 _IO_str_underflow F +GLIBC_2.4 _IO_sungetc F +GLIBC_2.4 _IO_sungetwc F +GLIBC_2.4 _IO_switch_to_get_mode F +GLIBC_2.4 _IO_switch_to_main_wget_area F +GLIBC_2.4 _IO_switch_to_wbackup_area F +GLIBC_2.4 _IO_switch_to_wget_mode F +GLIBC_2.4 _IO_un_link F +GLIBC_2.4 _IO_ungetc F +GLIBC_2.4 _IO_unsave_markers F +GLIBC_2.4 _IO_unsave_wmarkers F +GLIBC_2.4 _IO_vfprintf F +GLIBC_2.4 _IO_vfscanf F +GLIBC_2.4 _IO_vsprintf F +GLIBC_2.4 _IO_wdefault_doallocate F +GLIBC_2.4 _IO_wdefault_finish F +GLIBC_2.4 _IO_wdefault_pbackfail F +GLIBC_2.4 _IO_wdefault_uflow F +GLIBC_2.4 _IO_wdefault_xsgetn F +GLIBC_2.4 _IO_wdefault_xsputn F +GLIBC_2.4 _IO_wdo_write F +GLIBC_2.4 _IO_wdoallocbuf F +GLIBC_2.4 _IO_wfile_jumps D 0x54 +GLIBC_2.4 _IO_wfile_overflow F +GLIBC_2.4 _IO_wfile_seekoff F +GLIBC_2.4 _IO_wfile_sync F +GLIBC_2.4 _IO_wfile_underflow F +GLIBC_2.4 _IO_wfile_xsputn F +GLIBC_2.4 _IO_wmarker_delta F +GLIBC_2.4 _IO_wsetb F +GLIBC_2.4 __adjtimex F +GLIBC_2.4 __aeabi_MB_CUR_MAX F +GLIBC_2.4 __aeabi_assert F +GLIBC_2.4 __aeabi_atexit F +GLIBC_2.4 __aeabi_errno_addr F +GLIBC_2.4 __aeabi_localeconv F +GLIBC_2.4 __aeabi_memclr F +GLIBC_2.4 __aeabi_memclr4 F +GLIBC_2.4 __aeabi_memclr8 F +GLIBC_2.4 __aeabi_memcpy F +GLIBC_2.4 __aeabi_memcpy4 F +GLIBC_2.4 __aeabi_memcpy8 F +GLIBC_2.4 __aeabi_memmove F +GLIBC_2.4 __aeabi_memmove4 F +GLIBC_2.4 __aeabi_memmove8 F +GLIBC_2.4 __aeabi_memset F +GLIBC_2.4 __aeabi_memset4 F +GLIBC_2.4 __aeabi_memset8 F +GLIBC_2.4 __after_morecore_hook D 0x4 +GLIBC_2.4 __argz_count F +GLIBC_2.4 __argz_next F +GLIBC_2.4 __argz_stringify F +GLIBC_2.4 __asprintf F +GLIBC_2.4 __assert F +GLIBC_2.4 __assert_fail F +GLIBC_2.4 __assert_perror_fail F +GLIBC_2.4 __backtrace F +GLIBC_2.4 __backtrace_symbols F +GLIBC_2.4 __backtrace_symbols_fd F +GLIBC_2.4 __bsd_getpgrp F +GLIBC_2.4 __bzero F +GLIBC_2.4 __check_rhosts_file D 0x4 +GLIBC_2.4 __chk_fail F +GLIBC_2.4 __clone F +GLIBC_2.4 __close F +GLIBC_2.4 __cmsg_nxthdr F +GLIBC_2.4 __confstr_chk F +GLIBC_2.4 __connect F +GLIBC_2.4 __ctype_b_loc F +GLIBC_2.4 __ctype_get_mb_cur_max F +GLIBC_2.4 __ctype_tolower_loc F +GLIBC_2.4 __ctype_toupper_loc F +GLIBC_2.4 __curbrk D 0x4 +GLIBC_2.4 __cxa_atexit F +GLIBC_2.4 __cxa_finalize F +GLIBC_2.4 __cyg_profile_func_enter F +GLIBC_2.4 __cyg_profile_func_exit F +GLIBC_2.4 __daylight D 0x4 +GLIBC_2.4 __dcgettext F +GLIBC_2.4 __default_morecore F +GLIBC_2.4 __dgettext F +GLIBC_2.4 __dup2 F +GLIBC_2.4 __duplocale F +GLIBC_2.4 __endmntent F +GLIBC_2.4 __environ D 0x4 +GLIBC_2.4 __errno_location F +GLIBC_2.4 __fbufsize F +GLIBC_2.4 __fcntl F +GLIBC_2.4 __ffs F +GLIBC_2.4 __fgets_chk F +GLIBC_2.4 __fgets_unlocked_chk F +GLIBC_2.4 __fgetws_chk F +GLIBC_2.4 __fgetws_unlocked_chk F +GLIBC_2.4 __finite F +GLIBC_2.4 __finitef F +GLIBC_2.4 __finitel F +GLIBC_2.4 __flbf F +GLIBC_2.4 __fork F +GLIBC_2.4 __fpending F +GLIBC_2.4 __fprintf_chk F +GLIBC_2.4 __fpu_control D 0x4 +GLIBC_2.4 __fpurge F +GLIBC_2.4 __freadable F +GLIBC_2.4 __freading F +GLIBC_2.4 __free_hook D 0x4 +GLIBC_2.4 __freelocale F +GLIBC_2.4 __fsetlocking F +GLIBC_2.4 __fwprintf_chk F +GLIBC_2.4 __fwritable F +GLIBC_2.4 __fwriting F +GLIBC_2.4 __fxstat F +GLIBC_2.4 __fxstat64 F +GLIBC_2.4 __fxstatat F +GLIBC_2.4 __fxstatat64 F +GLIBC_2.4 __getcwd_chk F +GLIBC_2.4 __getdelim F +GLIBC_2.4 __getdomainname_chk F +GLIBC_2.4 __getgroups_chk F +GLIBC_2.4 __gethostname_chk F +GLIBC_2.4 __getlogin_r_chk F +GLIBC_2.4 __getmntent_r F +GLIBC_2.4 __getpagesize F +GLIBC_2.4 __getpgid F +GLIBC_2.4 __getpid F +GLIBC_2.4 __gets_chk F +GLIBC_2.4 __gettimeofday F +GLIBC_2.4 __getwd_chk F +GLIBC_2.4 __gmtime_r F +GLIBC_2.4 __gnu_Unwind_Find_exidx F +GLIBC_2.4 __h_errno_location F +GLIBC_2.4 __isalnum_l F +GLIBC_2.4 __isalpha_l F +GLIBC_2.4 __isascii_l F +GLIBC_2.4 __isblank_l F +GLIBC_2.4 __iscntrl_l F +GLIBC_2.4 __isctype F +GLIBC_2.4 __isdigit_l F +GLIBC_2.4 __isgraph_l F +GLIBC_2.4 __isinf F +GLIBC_2.4 __isinff F +GLIBC_2.4 __isinfl F +GLIBC_2.4 __islower_l F +GLIBC_2.4 __isnan F +GLIBC_2.4 __isnanf F +GLIBC_2.4 __isnanl F +GLIBC_2.4 __isprint_l F +GLIBC_2.4 __ispunct_l F +GLIBC_2.4 __isspace_l F +GLIBC_2.4 __isupper_l F +GLIBC_2.4 __iswalnum_l F +GLIBC_2.4 __iswalpha_l F +GLIBC_2.4 __iswblank_l F +GLIBC_2.4 __iswcntrl_l F +GLIBC_2.4 __iswctype F +GLIBC_2.4 __iswctype_l F +GLIBC_2.4 __iswdigit_l F +GLIBC_2.4 __iswgraph_l F +GLIBC_2.4 __iswlower_l F +GLIBC_2.4 __iswprint_l F +GLIBC_2.4 __iswpunct_l F +GLIBC_2.4 __iswspace_l F +GLIBC_2.4 __iswupper_l F +GLIBC_2.4 __iswxdigit_l F +GLIBC_2.4 __isxdigit_l F +GLIBC_2.4 __ivaliduser F +GLIBC_2.4 __key_decryptsession_pk_LOCAL D 0x4 +GLIBC_2.4 __key_encryptsession_pk_LOCAL D 0x4 +GLIBC_2.4 __key_gendes_LOCAL D 0x4 +GLIBC_2.4 __libc_allocate_rtsig F +GLIBC_2.4 __libc_calloc F +GLIBC_2.4 __libc_current_sigrtmax F +GLIBC_2.4 __libc_current_sigrtmin F +GLIBC_2.4 __libc_free F +GLIBC_2.4 __libc_freeres F +GLIBC_2.4 __libc_init_first F +GLIBC_2.4 __libc_mallinfo F +GLIBC_2.4 __libc_malloc F +GLIBC_2.4 __libc_mallopt F +GLIBC_2.4 __libc_memalign F +GLIBC_2.4 __libc_pvalloc F +GLIBC_2.4 __libc_realloc F +GLIBC_2.4 __libc_sa_len F +GLIBC_2.4 __libc_start_main F +GLIBC_2.4 __libc_valloc F +GLIBC_2.4 __lseek F +GLIBC_2.4 __lxstat F +GLIBC_2.4 __lxstat64 F +GLIBC_2.4 __malloc_hook D 0x4 +GLIBC_2.4 __malloc_initialize_hook D 0x4 +GLIBC_2.4 __mbrlen F +GLIBC_2.4 __mbrtowc F +GLIBC_2.4 __mbsnrtowcs_chk F +GLIBC_2.4 __mbsrtowcs_chk F +GLIBC_2.4 __mbstowcs_chk F +GLIBC_2.4 __memalign_hook D 0x4 +GLIBC_2.4 __memcpy_chk F +GLIBC_2.4 __memmove_chk F +GLIBC_2.4 __mempcpy F +GLIBC_2.4 __mempcpy_chk F +GLIBC_2.4 __mempcpy_small F +GLIBC_2.4 __memset_chk F +GLIBC_2.4 __monstartup F +GLIBC_2.4 __morecore D 0x4 +GLIBC_2.4 __nanosleep F +GLIBC_2.4 __newlocale F +GLIBC_2.4 __nl_langinfo_l F +GLIBC_2.4 __nss_configure_lookup F +GLIBC_2.4 __nss_database_lookup F +GLIBC_2.4 __nss_group_lookup F +GLIBC_2.4 __nss_hostname_digits_dots F +GLIBC_2.4 __nss_hosts_lookup F +GLIBC_2.4 __nss_next F +GLIBC_2.4 __nss_passwd_lookup F +GLIBC_2.4 __open F +GLIBC_2.4 __open64 F +GLIBC_2.4 __overflow F +GLIBC_2.4 __pipe F +GLIBC_2.4 __poll F +GLIBC_2.4 __pread64 F +GLIBC_2.4 __pread64_chk F +GLIBC_2.4 __pread_chk F +GLIBC_2.4 __printf_chk F +GLIBC_2.4 __printf_fp F +GLIBC_2.4 __profile_frequency F +GLIBC_2.4 __progname D 0x4 +GLIBC_2.4 __progname_full D 0x4 +GLIBC_2.4 __ptsname_r_chk F +GLIBC_2.4 __pwrite64 F +GLIBC_2.4 __rawmemchr F +GLIBC_2.4 __rcmd_errstr D 0x4 +GLIBC_2.4 __read F +GLIBC_2.4 __read_chk F +GLIBC_2.4 __readlink_chk F +GLIBC_2.4 __realloc_hook D 0x4 +GLIBC_2.4 __realpath_chk F +GLIBC_2.4 __recv_chk F +GLIBC_2.4 __recvfrom_chk F +GLIBC_2.4 __register_atfork F +GLIBC_2.4 __res_init F +GLIBC_2.4 __res_nclose F +GLIBC_2.4 __res_ninit F +GLIBC_2.4 __res_randomid F +GLIBC_2.4 __res_state F +GLIBC_2.4 __rpc_thread_createerr F +GLIBC_2.4 __rpc_thread_svc_fdset F +GLIBC_2.4 __rpc_thread_svc_max_pollfd F +GLIBC_2.4 __rpc_thread_svc_pollfd F +GLIBC_2.4 __sbrk F +GLIBC_2.4 __sched_get_priority_max F +GLIBC_2.4 __sched_get_priority_min F +GLIBC_2.4 __sched_getparam F +GLIBC_2.4 __sched_getscheduler F +GLIBC_2.4 __sched_setscheduler F +GLIBC_2.4 __sched_yield F +GLIBC_2.4 __secure_getenv F +GLIBC_2.4 __select F +GLIBC_2.4 __send F +GLIBC_2.4 __setmntent F +GLIBC_2.4 __setpgid F +GLIBC_2.4 __sigaction F +GLIBC_2.4 __sigaddset F +GLIBC_2.4 __sigdelset F +GLIBC_2.4 __sigismember F +GLIBC_2.4 __signbit F +GLIBC_2.4 __signbitf F +GLIBC_2.4 __sigpause F +GLIBC_2.4 __sigsetjmp F +GLIBC_2.4 __sigsuspend F +GLIBC_2.4 __snprintf_chk F +GLIBC_2.4 __sprintf_chk F +GLIBC_2.4 __stack_chk_fail F +GLIBC_2.4 __statfs F +GLIBC_2.4 __stpcpy F +GLIBC_2.4 __stpcpy_chk F +GLIBC_2.4 __stpcpy_small F +GLIBC_2.4 __stpncpy F +GLIBC_2.4 __stpncpy_chk F +GLIBC_2.4 __strcasecmp F +GLIBC_2.4 __strcasecmp_l F +GLIBC_2.4 __strcasestr F +GLIBC_2.4 __strcat_chk F +GLIBC_2.4 __strcoll_l F +GLIBC_2.4 __strcpy_chk F +GLIBC_2.4 __strcpy_small F +GLIBC_2.4 __strcspn_c1 F +GLIBC_2.4 __strcspn_c2 F +GLIBC_2.4 __strcspn_c3 F +GLIBC_2.4 __strdup F +GLIBC_2.4 __strerror_r F +GLIBC_2.4 __strfmon_l F +GLIBC_2.4 __strftime_l F +GLIBC_2.4 __strncasecmp_l F +GLIBC_2.4 __strncat_chk F +GLIBC_2.4 __strncpy_chk F +GLIBC_2.4 __strndup F +GLIBC_2.4 __strpbrk_c2 F +GLIBC_2.4 __strpbrk_c3 F +GLIBC_2.4 __strsep_1c F +GLIBC_2.4 __strsep_2c F +GLIBC_2.4 __strsep_3c F +GLIBC_2.4 __strsep_g F +GLIBC_2.4 __strspn_c1 F +GLIBC_2.4 __strspn_c2 F +GLIBC_2.4 __strspn_c3 F +GLIBC_2.4 __strtod_internal F +GLIBC_2.4 __strtod_l F +GLIBC_2.4 __strtof_internal F +GLIBC_2.4 __strtof_l F +GLIBC_2.4 __strtok_r F +GLIBC_2.4 __strtok_r_1c F +GLIBC_2.4 __strtol_internal F +GLIBC_2.4 __strtol_l F +GLIBC_2.4 __strtold_internal F +GLIBC_2.4 __strtold_l F +GLIBC_2.4 __strtoll_internal F +GLIBC_2.4 __strtoll_l F +GLIBC_2.4 __strtoul_internal F +GLIBC_2.4 __strtoul_l F +GLIBC_2.4 __strtoull_internal F +GLIBC_2.4 __strtoull_l F +GLIBC_2.4 __strverscmp F +GLIBC_2.4 __strxfrm_l F +GLIBC_2.4 __swprintf_chk F +GLIBC_2.4 __sysconf F +GLIBC_2.4 __sysctl F +GLIBC_2.4 __syslog_chk F +GLIBC_2.4 __sysv_signal F +GLIBC_2.4 __timezone D 0x4 +GLIBC_2.4 __toascii_l F +GLIBC_2.4 __tolower_l F +GLIBC_2.4 __toupper_l F +GLIBC_2.4 __towctrans F +GLIBC_2.4 __towctrans_l F +GLIBC_2.4 __towlower_l F +GLIBC_2.4 __towupper_l F +GLIBC_2.4 __ttyname_r_chk F +GLIBC_2.4 __tzname D 0x8 +GLIBC_2.4 __uflow F +GLIBC_2.4 __underflow F +GLIBC_2.4 __uselocale F +GLIBC_2.4 __vfork F +GLIBC_2.4 __vfprintf_chk F +GLIBC_2.4 __vfscanf F +GLIBC_2.4 __vfwprintf_chk F +GLIBC_2.4 __vprintf_chk F +GLIBC_2.4 __vsnprintf F +GLIBC_2.4 __vsnprintf_chk F +GLIBC_2.4 __vsprintf_chk F +GLIBC_2.4 __vsscanf F +GLIBC_2.4 __vswprintf_chk F +GLIBC_2.4 __vsyslog_chk F +GLIBC_2.4 __vwprintf_chk F +GLIBC_2.4 __wait F +GLIBC_2.4 __waitpid F +GLIBC_2.4 __wcpcpy_chk F +GLIBC_2.4 __wcpncpy_chk F +GLIBC_2.4 __wcrtomb_chk F +GLIBC_2.4 __wcscasecmp_l F +GLIBC_2.4 __wcscat_chk F +GLIBC_2.4 __wcscoll_l F +GLIBC_2.4 __wcscpy_chk F +GLIBC_2.4 __wcsftime_l F +GLIBC_2.4 __wcsncasecmp_l F +GLIBC_2.4 __wcsncat_chk F +GLIBC_2.4 __wcsncpy_chk F +GLIBC_2.4 __wcsnrtombs_chk F +GLIBC_2.4 __wcsrtombs_chk F +GLIBC_2.4 __wcstod_internal F +GLIBC_2.4 __wcstod_l F +GLIBC_2.4 __wcstof_internal F +GLIBC_2.4 __wcstof_l F +GLIBC_2.4 __wcstol_internal F +GLIBC_2.4 __wcstol_l F +GLIBC_2.4 __wcstold_internal F +GLIBC_2.4 __wcstold_l F +GLIBC_2.4 __wcstoll_internal F +GLIBC_2.4 __wcstoll_l F +GLIBC_2.4 __wcstombs_chk F +GLIBC_2.4 __wcstoul_internal F +GLIBC_2.4 __wcstoul_l F +GLIBC_2.4 __wcstoull_internal F +GLIBC_2.4 __wcstoull_l F +GLIBC_2.4 __wcsxfrm_l F +GLIBC_2.4 __wctomb_chk F +GLIBC_2.4 __wctrans_l F +GLIBC_2.4 __wctype_l F +GLIBC_2.4 __wmemcpy_chk F +GLIBC_2.4 __wmemmove_chk F +GLIBC_2.4 __wmempcpy_chk F +GLIBC_2.4 __wmemset_chk F +GLIBC_2.4 __woverflow F +GLIBC_2.4 __wprintf_chk F +GLIBC_2.4 __write F +GLIBC_2.4 __wuflow F +GLIBC_2.4 __wunderflow F +GLIBC_2.4 __xmknod F +GLIBC_2.4 __xmknodat F +GLIBC_2.4 __xpg_basename F +GLIBC_2.4 __xpg_sigpause F +GLIBC_2.4 __xpg_strerror_r F +GLIBC_2.4 __xstat F +GLIBC_2.4 __xstat64 F +GLIBC_2.4 _authenticate F +GLIBC_2.4 _dl_mcount_wrapper F +GLIBC_2.4 _dl_mcount_wrapper_check F +GLIBC_2.4 _environ D 0x4 +GLIBC_2.4 _exit F +GLIBC_2.4 _flushlbf F +GLIBC_2.4 _libc_intl_domainname D 0x5 +GLIBC_2.4 _longjmp F +GLIBC_2.4 _mcleanup F +GLIBC_2.4 _mcount F +GLIBC_2.4 _nl_default_dirname D 0x12 +GLIBC_2.4 _nl_domain_bindings D 0x4 +GLIBC_2.4 _nl_msg_cat_cntr D 0x4 +GLIBC_2.4 _null_auth D 0xc +GLIBC_2.4 _obstack_allocated_p F +GLIBC_2.4 _obstack_begin F +GLIBC_2.4 _obstack_begin_1 F +GLIBC_2.4 _obstack_free F +GLIBC_2.4 _obstack_memory_used F +GLIBC_2.4 _obstack_newchunk F +GLIBC_2.4 _res D 0x200 +GLIBC_2.4 _res_hconf D 0x30 +GLIBC_2.4 _rpc_dtablesize F +GLIBC_2.4 _seterr_reply F +GLIBC_2.4 _setjmp F +GLIBC_2.4 _sys_errlist D 0x210 +GLIBC_2.4 _sys_nerr D 0x4 +GLIBC_2.4 _sys_siglist D 0x104 +GLIBC_2.4 _tolower F +GLIBC_2.4 _toupper F +GLIBC_2.4 a64l F +GLIBC_2.4 abort F +GLIBC_2.4 abs F +GLIBC_2.4 accept F +GLIBC_2.4 access F +GLIBC_2.4 acct F +GLIBC_2.4 addmntent F +GLIBC_2.4 addseverity F +GLIBC_2.4 adjtime F +GLIBC_2.4 adjtimex F +GLIBC_2.4 advance F +GLIBC_2.4 alarm F +GLIBC_2.4 alphasort F +GLIBC_2.4 alphasort64 F +GLIBC_2.4 argp_err_exit_status D 0x4 +GLIBC_2.4 argp_error F +GLIBC_2.4 argp_failure F +GLIBC_2.4 argp_help F +GLIBC_2.4 argp_parse F +GLIBC_2.4 argp_program_bug_address D 0x4 +GLIBC_2.4 argp_program_version D 0x4 +GLIBC_2.4 argp_program_version_hook D 0x4 +GLIBC_2.4 argp_state_help F +GLIBC_2.4 argp_usage F +GLIBC_2.4 argz_add F +GLIBC_2.4 argz_add_sep F +GLIBC_2.4 argz_append F +GLIBC_2.4 argz_count F +GLIBC_2.4 argz_create F +GLIBC_2.4 argz_create_sep F +GLIBC_2.4 argz_delete F +GLIBC_2.4 argz_extract F +GLIBC_2.4 argz_insert F +GLIBC_2.4 argz_next F +GLIBC_2.4 argz_replace F +GLIBC_2.4 argz_stringify F +GLIBC_2.4 asctime F +GLIBC_2.4 asctime_r F +GLIBC_2.4 asprintf F +GLIBC_2.4 atof F +GLIBC_2.4 atoi F +GLIBC_2.4 atol F +GLIBC_2.4 atoll F +GLIBC_2.4 authdes_create F +GLIBC_2.4 authdes_getucred F +GLIBC_2.4 authdes_pk_create F +GLIBC_2.4 authnone_create F +GLIBC_2.4 authunix_create F +GLIBC_2.4 authunix_create_default F +GLIBC_2.4 backtrace F +GLIBC_2.4 backtrace_symbols F +GLIBC_2.4 backtrace_symbols_fd F +GLIBC_2.4 basename F +GLIBC_2.4 bcmp F +GLIBC_2.4 bcopy F +GLIBC_2.4 bdflush F +GLIBC_2.4 bind F +GLIBC_2.4 bind_textdomain_codeset F +GLIBC_2.4 bindresvport F +GLIBC_2.4 bindtextdomain F +GLIBC_2.4 brk F +GLIBC_2.4 bsd_signal F +GLIBC_2.4 bsearch F +GLIBC_2.4 btowc F +GLIBC_2.4 bzero F +GLIBC_2.4 calloc F +GLIBC_2.4 callrpc F +GLIBC_2.4 canonicalize_file_name F +GLIBC_2.4 capget F +GLIBC_2.4 capset F +GLIBC_2.4 catclose F +GLIBC_2.4 catgets F +GLIBC_2.4 catopen F +GLIBC_2.4 cbc_crypt F +GLIBC_2.4 cfgetispeed F +GLIBC_2.4 cfgetospeed F +GLIBC_2.4 cfmakeraw F +GLIBC_2.4 cfree F +GLIBC_2.4 cfsetispeed F +GLIBC_2.4 cfsetospeed F +GLIBC_2.4 cfsetspeed F +GLIBC_2.4 chdir F +GLIBC_2.4 chflags F +GLIBC_2.4 chmod F +GLIBC_2.4 chown F +GLIBC_2.4 chroot F +GLIBC_2.4 clearenv F +GLIBC_2.4 clearerr F +GLIBC_2.4 clearerr_unlocked F +GLIBC_2.4 clnt_broadcast F +GLIBC_2.4 clnt_create F +GLIBC_2.4 clnt_pcreateerror F +GLIBC_2.4 clnt_perrno F +GLIBC_2.4 clnt_perror F +GLIBC_2.4 clnt_spcreateerror F +GLIBC_2.4 clnt_sperrno F +GLIBC_2.4 clnt_sperror F +GLIBC_2.4 clntraw_create F +GLIBC_2.4 clnttcp_create F +GLIBC_2.4 clntudp_bufcreate F +GLIBC_2.4 clntudp_create F +GLIBC_2.4 clntunix_create F +GLIBC_2.4 clock F +GLIBC_2.4 clone F +GLIBC_2.4 close F +GLIBC_2.4 closedir F +GLIBC_2.4 closelog F +GLIBC_2.4 confstr F +GLIBC_2.4 connect F +GLIBC_2.4 copysign F +GLIBC_2.4 copysignf F +GLIBC_2.4 copysignl F +GLIBC_2.4 creat F +GLIBC_2.4 creat64 F +GLIBC_2.4 create_module F +GLIBC_2.4 ctermid F +GLIBC_2.4 ctime F +GLIBC_2.4 ctime_r F +GLIBC_2.4 cuserid F +GLIBC_2.4 daemon F +GLIBC_2.4 daylight D 0x4 +GLIBC_2.4 dcgettext F +GLIBC_2.4 dcngettext F +GLIBC_2.4 delete_module F +GLIBC_2.4 des_setparity F +GLIBC_2.4 dgettext F +GLIBC_2.4 difftime F +GLIBC_2.4 dirfd F +GLIBC_2.4 dirname F +GLIBC_2.4 div F +GLIBC_2.4 dl_iterate_phdr F +GLIBC_2.4 dngettext F +GLIBC_2.4 dprintf F +GLIBC_2.4 drand48 F +GLIBC_2.4 drand48_r F +GLIBC_2.4 dup F +GLIBC_2.4 dup2 F +GLIBC_2.4 duplocale F +GLIBC_2.4 dysize F +GLIBC_2.4 eaccess F +GLIBC_2.4 ecb_crypt F +GLIBC_2.4 ecvt F +GLIBC_2.4 ecvt_r F +GLIBC_2.4 endaliasent F +GLIBC_2.4 endfsent F +GLIBC_2.4 endgrent F +GLIBC_2.4 endhostent F +GLIBC_2.4 endmntent F +GLIBC_2.4 endnetent F +GLIBC_2.4 endnetgrent F +GLIBC_2.4 endprotoent F +GLIBC_2.4 endpwent F +GLIBC_2.4 endrpcent F +GLIBC_2.4 endservent F +GLIBC_2.4 endspent F +GLIBC_2.4 endttyent F +GLIBC_2.4 endusershell F +GLIBC_2.4 endutent F +GLIBC_2.4 endutxent F +GLIBC_2.4 environ D 0x4 +GLIBC_2.4 envz_add F +GLIBC_2.4 envz_entry F +GLIBC_2.4 envz_get F +GLIBC_2.4 envz_merge F +GLIBC_2.4 envz_remove F +GLIBC_2.4 envz_strip F +GLIBC_2.4 epoll_create F +GLIBC_2.4 epoll_ctl F +GLIBC_2.4 epoll_wait F +GLIBC_2.4 erand48 F +GLIBC_2.4 erand48_r F +GLIBC_2.4 err F +GLIBC_2.4 error F +GLIBC_2.4 error_at_line F +GLIBC_2.4 error_message_count D 0x4 +GLIBC_2.4 error_one_per_line D 0x4 +GLIBC_2.4 error_print_progname D 0x4 +GLIBC_2.4 errx F +GLIBC_2.4 ether_aton F +GLIBC_2.4 ether_aton_r F +GLIBC_2.4 ether_hostton F +GLIBC_2.4 ether_line F +GLIBC_2.4 ether_ntoa F +GLIBC_2.4 ether_ntoa_r F +GLIBC_2.4 ether_ntohost F +GLIBC_2.4 euidaccess F +GLIBC_2.4 execl F +GLIBC_2.4 execle F +GLIBC_2.4 execlp F +GLIBC_2.4 execv F +GLIBC_2.4 execve F +GLIBC_2.4 execvp F +GLIBC_2.4 exit F +GLIBC_2.4 faccessat F +GLIBC_2.4 fattach F +GLIBC_2.4 fchdir F +GLIBC_2.4 fchflags F +GLIBC_2.4 fchmod F +GLIBC_2.4 fchmodat F +GLIBC_2.4 fchown F +GLIBC_2.4 fchownat F +GLIBC_2.4 fclose F +GLIBC_2.4 fcloseall F +GLIBC_2.4 fcntl F +GLIBC_2.4 fcvt F +GLIBC_2.4 fcvt_r F +GLIBC_2.4 fdatasync F +GLIBC_2.4 fdetach F +GLIBC_2.4 fdopen F +GLIBC_2.4 fdopendir F +GLIBC_2.4 feof F +GLIBC_2.4 feof_unlocked F +GLIBC_2.4 ferror F +GLIBC_2.4 ferror_unlocked F +GLIBC_2.4 fexecve F +GLIBC_2.4 fflush F +GLIBC_2.4 fflush_unlocked F +GLIBC_2.4 ffs F +GLIBC_2.4 ffsl F +GLIBC_2.4 ffsll F +GLIBC_2.4 fgetc F +GLIBC_2.4 fgetc_unlocked F +GLIBC_2.4 fgetgrent F +GLIBC_2.4 fgetgrent_r F +GLIBC_2.4 fgetpos F +GLIBC_2.4 fgetpos64 F +GLIBC_2.4 fgetpwent F +GLIBC_2.4 fgetpwent_r F +GLIBC_2.4 fgets F +GLIBC_2.4 fgets_unlocked F +GLIBC_2.4 fgetspent F +GLIBC_2.4 fgetspent_r F +GLIBC_2.4 fgetwc F +GLIBC_2.4 fgetwc_unlocked F +GLIBC_2.4 fgetws F +GLIBC_2.4 fgetws_unlocked F +GLIBC_2.4 fgetxattr F +GLIBC_2.4 fileno F +GLIBC_2.4 fileno_unlocked F +GLIBC_2.4 finite F +GLIBC_2.4 finitef F +GLIBC_2.4 finitel F +GLIBC_2.4 flistxattr F +GLIBC_2.4 flock F +GLIBC_2.4 flockfile F +GLIBC_2.4 fmemopen F +GLIBC_2.4 fmtmsg F +GLIBC_2.4 fnmatch F +GLIBC_2.4 fopen F +GLIBC_2.4 fopen64 F +GLIBC_2.4 fopencookie F +GLIBC_2.4 fork F +GLIBC_2.4 fpathconf F +GLIBC_2.4 fprintf F +GLIBC_2.4 fputc F +GLIBC_2.4 fputc_unlocked F +GLIBC_2.4 fputs F +GLIBC_2.4 fputs_unlocked F +GLIBC_2.4 fputwc F +GLIBC_2.4 fputwc_unlocked F +GLIBC_2.4 fputws F +GLIBC_2.4 fputws_unlocked F +GLIBC_2.4 fread F +GLIBC_2.4 fread_unlocked F +GLIBC_2.4 free F +GLIBC_2.4 freeaddrinfo F +GLIBC_2.4 freeifaddrs F +GLIBC_2.4 freelocale F +GLIBC_2.4 fremovexattr F +GLIBC_2.4 freopen F +GLIBC_2.4 freopen64 F +GLIBC_2.4 frexp F +GLIBC_2.4 frexpf F +GLIBC_2.4 frexpl F +GLIBC_2.4 fscanf F +GLIBC_2.4 fseek F +GLIBC_2.4 fseeko F +GLIBC_2.4 fseeko64 F +GLIBC_2.4 fsetpos F +GLIBC_2.4 fsetpos64 F +GLIBC_2.4 fsetxattr F +GLIBC_2.4 fstatfs F +GLIBC_2.4 fstatfs64 F +GLIBC_2.4 fstatvfs F +GLIBC_2.4 fstatvfs64 F +GLIBC_2.4 fsync F +GLIBC_2.4 ftell F +GLIBC_2.4 ftello F +GLIBC_2.4 ftello64 F +GLIBC_2.4 ftime F +GLIBC_2.4 ftok F +GLIBC_2.4 ftruncate F +GLIBC_2.4 ftruncate64 F +GLIBC_2.4 ftrylockfile F +GLIBC_2.4 fts_children F +GLIBC_2.4 fts_close F +GLIBC_2.4 fts_open F +GLIBC_2.4 fts_read F +GLIBC_2.4 fts_set F +GLIBC_2.4 ftw F +GLIBC_2.4 ftw64 F +GLIBC_2.4 funlockfile F +GLIBC_2.4 futimes F +GLIBC_2.4 futimesat F +GLIBC_2.4 fwide F +GLIBC_2.4 fwprintf F +GLIBC_2.4 fwrite F +GLIBC_2.4 fwrite_unlocked F +GLIBC_2.4 fwscanf F +GLIBC_2.4 gai_strerror F +GLIBC_2.4 gcvt F +GLIBC_2.4 get_avphys_pages F +GLIBC_2.4 get_current_dir_name F +GLIBC_2.4 get_kernel_syms F +GLIBC_2.4 get_myaddress F +GLIBC_2.4 get_nprocs F +GLIBC_2.4 get_nprocs_conf F +GLIBC_2.4 get_phys_pages F +GLIBC_2.4 getaddrinfo F +GLIBC_2.4 getaliasbyname F +GLIBC_2.4 getaliasbyname_r F +GLIBC_2.4 getaliasent F +GLIBC_2.4 getaliasent_r F +GLIBC_2.4 getc F +GLIBC_2.4 getc_unlocked F +GLIBC_2.4 getchar F +GLIBC_2.4 getchar_unlocked F +GLIBC_2.4 getcontext F +GLIBC_2.4 getcwd F +GLIBC_2.4 getdate F +GLIBC_2.4 getdate_err D 0x4 +GLIBC_2.4 getdate_r F +GLIBC_2.4 getdelim F +GLIBC_2.4 getdirentries F +GLIBC_2.4 getdirentries64 F +GLIBC_2.4 getdomainname F +GLIBC_2.4 getdtablesize F +GLIBC_2.4 getegid F +GLIBC_2.4 getenv F +GLIBC_2.4 geteuid F +GLIBC_2.4 getfsent F +GLIBC_2.4 getfsfile F +GLIBC_2.4 getfsspec F +GLIBC_2.4 getgid F +GLIBC_2.4 getgrent F +GLIBC_2.4 getgrent_r F +GLIBC_2.4 getgrgid F +GLIBC_2.4 getgrgid_r F +GLIBC_2.4 getgrnam F +GLIBC_2.4 getgrnam_r F +GLIBC_2.4 getgrouplist F +GLIBC_2.4 getgroups F +GLIBC_2.4 gethostbyaddr F +GLIBC_2.4 gethostbyaddr_r F +GLIBC_2.4 gethostbyname F +GLIBC_2.4 gethostbyname2 F +GLIBC_2.4 gethostbyname2_r F +GLIBC_2.4 gethostbyname_r F +GLIBC_2.4 gethostent F +GLIBC_2.4 gethostent_r F +GLIBC_2.4 gethostid F +GLIBC_2.4 gethostname F +GLIBC_2.4 getifaddrs F +GLIBC_2.4 getipv4sourcefilter F +GLIBC_2.4 getitimer F +GLIBC_2.4 getline F +GLIBC_2.4 getloadavg F +GLIBC_2.4 getlogin F +GLIBC_2.4 getlogin_r F +GLIBC_2.4 getmntent F +GLIBC_2.4 getmntent_r F +GLIBC_2.4 getmsg F +GLIBC_2.4 getnameinfo F +GLIBC_2.4 getnetbyaddr F +GLIBC_2.4 getnetbyaddr_r F +GLIBC_2.4 getnetbyname F +GLIBC_2.4 getnetbyname_r F +GLIBC_2.4 getnetent F +GLIBC_2.4 getnetent_r F +GLIBC_2.4 getnetgrent F +GLIBC_2.4 getnetgrent_r F +GLIBC_2.4 getnetname F +GLIBC_2.4 getopt F +GLIBC_2.4 getopt_long F +GLIBC_2.4 getopt_long_only F +GLIBC_2.4 getpagesize F +GLIBC_2.4 getpass F +GLIBC_2.4 getpeername F +GLIBC_2.4 getpgid F +GLIBC_2.4 getpgrp F +GLIBC_2.4 getpid F +GLIBC_2.4 getpmsg F +GLIBC_2.4 getppid F +GLIBC_2.4 getpriority F +GLIBC_2.4 getprotobyname F +GLIBC_2.4 getprotobyname_r F +GLIBC_2.4 getprotobynumber F +GLIBC_2.4 getprotobynumber_r F +GLIBC_2.4 getprotoent F +GLIBC_2.4 getprotoent_r F +GLIBC_2.4 getpt F +GLIBC_2.4 getpublickey F +GLIBC_2.4 getpw F +GLIBC_2.4 getpwent F +GLIBC_2.4 getpwent_r F +GLIBC_2.4 getpwnam F +GLIBC_2.4 getpwnam_r F +GLIBC_2.4 getpwuid F +GLIBC_2.4 getpwuid_r F +GLIBC_2.4 getresgid F +GLIBC_2.4 getresuid F +GLIBC_2.4 getrlimit F +GLIBC_2.4 getrlimit64 F +GLIBC_2.4 getrpcbyname F +GLIBC_2.4 getrpcbyname_r F +GLIBC_2.4 getrpcbynumber F +GLIBC_2.4 getrpcbynumber_r F +GLIBC_2.4 getrpcent F +GLIBC_2.4 getrpcent_r F +GLIBC_2.4 getrpcport F +GLIBC_2.4 getrusage F +GLIBC_2.4 gets F +GLIBC_2.4 getsecretkey F +GLIBC_2.4 getservbyname F +GLIBC_2.4 getservbyname_r F +GLIBC_2.4 getservbyport F +GLIBC_2.4 getservbyport_r F +GLIBC_2.4 getservent F +GLIBC_2.4 getservent_r F +GLIBC_2.4 getsid F +GLIBC_2.4 getsockname F +GLIBC_2.4 getsockopt F +GLIBC_2.4 getsourcefilter F +GLIBC_2.4 getspent F +GLIBC_2.4 getspent_r F +GLIBC_2.4 getspnam F +GLIBC_2.4 getspnam_r F +GLIBC_2.4 getsubopt F +GLIBC_2.4 gettext F +GLIBC_2.4 gettimeofday F +GLIBC_2.4 getttyent F +GLIBC_2.4 getttynam F +GLIBC_2.4 getuid F +GLIBC_2.4 getusershell F +GLIBC_2.4 getutent F +GLIBC_2.4 getutent_r F +GLIBC_2.4 getutid F +GLIBC_2.4 getutid_r F +GLIBC_2.4 getutline F +GLIBC_2.4 getutline_r F +GLIBC_2.4 getutmp F +GLIBC_2.4 getutmpx F +GLIBC_2.4 getutxent F +GLIBC_2.4 getutxid F +GLIBC_2.4 getutxline F +GLIBC_2.4 getw F +GLIBC_2.4 getwc F +GLIBC_2.4 getwc_unlocked F +GLIBC_2.4 getwchar F +GLIBC_2.4 getwchar_unlocked F +GLIBC_2.4 getwd F +GLIBC_2.4 getxattr F +GLIBC_2.4 glob F +GLIBC_2.4 glob64 F +GLIBC_2.4 glob_pattern_p F +GLIBC_2.4 globfree F +GLIBC_2.4 globfree64 F +GLIBC_2.4 gmtime F +GLIBC_2.4 gmtime_r F +GLIBC_2.4 gnu_dev_major F +GLIBC_2.4 gnu_dev_makedev F +GLIBC_2.4 gnu_dev_minor F +GLIBC_2.4 gnu_get_libc_release F +GLIBC_2.4 gnu_get_libc_version F +GLIBC_2.4 grantpt F +GLIBC_2.4 group_member F +GLIBC_2.4 gsignal F +GLIBC_2.4 gtty F +GLIBC_2.4 h_errlist D 0x14 +GLIBC_2.4 h_nerr D 0x4 +GLIBC_2.4 hasmntopt F +GLIBC_2.4 hcreate F +GLIBC_2.4 hcreate_r F +GLIBC_2.4 hdestroy F +GLIBC_2.4 hdestroy_r F +GLIBC_2.4 herror F +GLIBC_2.4 host2netname F +GLIBC_2.4 hsearch F +GLIBC_2.4 hsearch_r F +GLIBC_2.4 hstrerror F +GLIBC_2.4 htonl F +GLIBC_2.4 htons F +GLIBC_2.4 iconv F +GLIBC_2.4 iconv_close F +GLIBC_2.4 iconv_open F +GLIBC_2.4 if_freenameindex F +GLIBC_2.4 if_indextoname F +GLIBC_2.4 if_nameindex F +GLIBC_2.4 if_nametoindex F +GLIBC_2.4 imaxabs F +GLIBC_2.4 imaxdiv F +GLIBC_2.4 in6addr_any D 0x10 +GLIBC_2.4 in6addr_loopback D 0x10 +GLIBC_2.4 inb F +GLIBC_2.4 index F +GLIBC_2.4 inet6_option_alloc F +GLIBC_2.4 inet6_option_append F +GLIBC_2.4 inet6_option_find F +GLIBC_2.4 inet6_option_init F +GLIBC_2.4 inet6_option_next F +GLIBC_2.4 inet6_option_space F +GLIBC_2.4 inet_addr F +GLIBC_2.4 inet_aton F +GLIBC_2.4 inet_lnaof F +GLIBC_2.4 inet_makeaddr F +GLIBC_2.4 inet_netof F +GLIBC_2.4 inet_network F +GLIBC_2.4 inet_nsap_addr F +GLIBC_2.4 inet_nsap_ntoa F +GLIBC_2.4 inet_ntoa F +GLIBC_2.4 inet_ntop F +GLIBC_2.4 inet_pton F +GLIBC_2.4 init_module F +GLIBC_2.4 initgroups F +GLIBC_2.4 initstate F +GLIBC_2.4 initstate_r F +GLIBC_2.4 inl F +GLIBC_2.4 innetgr F +GLIBC_2.4 inotify_add_watch F +GLIBC_2.4 inotify_init F +GLIBC_2.4 inotify_rm_watch F +GLIBC_2.4 insque F +GLIBC_2.4 inw F +GLIBC_2.4 ioctl F +GLIBC_2.4 ioperm F +GLIBC_2.4 iopl F +GLIBC_2.4 iruserok F +GLIBC_2.4 iruserok_af F +GLIBC_2.4 isalnum F +GLIBC_2.4 isalnum_l F +GLIBC_2.4 isalpha F +GLIBC_2.4 isalpha_l F +GLIBC_2.4 isascii F +GLIBC_2.4 isastream F +GLIBC_2.4 isatty F +GLIBC_2.4 isblank F +GLIBC_2.4 isblank_l F +GLIBC_2.4 iscntrl F +GLIBC_2.4 iscntrl_l F +GLIBC_2.4 isctype F +GLIBC_2.4 isdigit F +GLIBC_2.4 isdigit_l F +GLIBC_2.4 isfdtype F +GLIBC_2.4 isgraph F +GLIBC_2.4 isgraph_l F +GLIBC_2.4 isinf F +GLIBC_2.4 isinff F +GLIBC_2.4 isinfl F +GLIBC_2.4 islower F +GLIBC_2.4 islower_l F +GLIBC_2.4 isnan F +GLIBC_2.4 isnanf F +GLIBC_2.4 isnanl F +GLIBC_2.4 isprint F +GLIBC_2.4 isprint_l F +GLIBC_2.4 ispunct F +GLIBC_2.4 ispunct_l F +GLIBC_2.4 isspace F +GLIBC_2.4 isspace_l F +GLIBC_2.4 isupper F +GLIBC_2.4 isupper_l F +GLIBC_2.4 iswalnum F +GLIBC_2.4 iswalnum_l F +GLIBC_2.4 iswalpha F +GLIBC_2.4 iswalpha_l F +GLIBC_2.4 iswblank F +GLIBC_2.4 iswblank_l F +GLIBC_2.4 iswcntrl F +GLIBC_2.4 iswcntrl_l F +GLIBC_2.4 iswctype F +GLIBC_2.4 iswctype_l F +GLIBC_2.4 iswdigit F +GLIBC_2.4 iswdigit_l F +GLIBC_2.4 iswgraph F +GLIBC_2.4 iswgraph_l F +GLIBC_2.4 iswlower F +GLIBC_2.4 iswlower_l F +GLIBC_2.4 iswprint F +GLIBC_2.4 iswprint_l F +GLIBC_2.4 iswpunct F +GLIBC_2.4 iswpunct_l F +GLIBC_2.4 iswspace F +GLIBC_2.4 iswspace_l F +GLIBC_2.4 iswupper F +GLIBC_2.4 iswupper_l F +GLIBC_2.4 iswxdigit F +GLIBC_2.4 iswxdigit_l F +GLIBC_2.4 isxdigit F +GLIBC_2.4 isxdigit_l F +GLIBC_2.4 jrand48 F +GLIBC_2.4 jrand48_r F +GLIBC_2.4 key_decryptsession F +GLIBC_2.4 key_decryptsession_pk F +GLIBC_2.4 key_encryptsession F +GLIBC_2.4 key_encryptsession_pk F +GLIBC_2.4 key_gendes F +GLIBC_2.4 key_get_conv F +GLIBC_2.4 key_secretkey_is_set F +GLIBC_2.4 key_setnet F +GLIBC_2.4 key_setsecret F +GLIBC_2.4 kill F +GLIBC_2.4 killpg F +GLIBC_2.4 klogctl F +GLIBC_2.4 l64a F +GLIBC_2.4 labs F +GLIBC_2.4 lchmod F +GLIBC_2.4 lchown F +GLIBC_2.4 lckpwdf F +GLIBC_2.4 lcong48 F +GLIBC_2.4 lcong48_r F +GLIBC_2.4 ldexp F +GLIBC_2.4 ldexpf F +GLIBC_2.4 ldexpl F +GLIBC_2.4 ldiv F +GLIBC_2.4 lfind F +GLIBC_2.4 lgetxattr F +GLIBC_2.4 link F +GLIBC_2.4 linkat F +GLIBC_2.4 listen F +GLIBC_2.4 listxattr F +GLIBC_2.4 llabs F +GLIBC_2.4 lldiv F +GLIBC_2.4 llistxattr F +GLIBC_2.4 llseek F +GLIBC_2.4 loc1 D 0x4 +GLIBC_2.4 loc2 D 0x4 +GLIBC_2.4 localeconv F +GLIBC_2.4 localtime F +GLIBC_2.4 localtime_r F +GLIBC_2.4 lockf F +GLIBC_2.4 lockf64 F +GLIBC_2.4 locs D 0x4 +GLIBC_2.4 longjmp F +GLIBC_2.4 lrand48 F +GLIBC_2.4 lrand48_r F +GLIBC_2.4 lremovexattr F +GLIBC_2.4 lsearch F +GLIBC_2.4 lseek F +GLIBC_2.4 lseek64 F +GLIBC_2.4 lsetxattr F +GLIBC_2.4 lutimes F +GLIBC_2.4 madvise F +GLIBC_2.4 makecontext F +GLIBC_2.4 mallinfo F +GLIBC_2.4 malloc F +GLIBC_2.4 malloc_get_state F +GLIBC_2.4 malloc_set_state F +GLIBC_2.4 malloc_stats F +GLIBC_2.4 malloc_trim F +GLIBC_2.4 malloc_usable_size F +GLIBC_2.4 mallopt F +GLIBC_2.4 mallwatch D 0x4 +GLIBC_2.4 mblen F +GLIBC_2.4 mbrlen F +GLIBC_2.4 mbrtowc F +GLIBC_2.4 mbsinit F +GLIBC_2.4 mbsnrtowcs F +GLIBC_2.4 mbsrtowcs F +GLIBC_2.4 mbstowcs F +GLIBC_2.4 mbtowc F +GLIBC_2.4 mcheck F +GLIBC_2.4 mcheck_check_all F +GLIBC_2.4 mcheck_pedantic F +GLIBC_2.4 mcount F +GLIBC_2.4 memalign F +GLIBC_2.4 memccpy F +GLIBC_2.4 memchr F +GLIBC_2.4 memcmp F +GLIBC_2.4 memcpy F +GLIBC_2.4 memfrob F +GLIBC_2.4 memmem F +GLIBC_2.4 memmove F +GLIBC_2.4 mempcpy F +GLIBC_2.4 memrchr F +GLIBC_2.4 memset F +GLIBC_2.4 mincore F +GLIBC_2.4 mkdir F +GLIBC_2.4 mkdirat F +GLIBC_2.4 mkdtemp F +GLIBC_2.4 mkfifo F +GLIBC_2.4 mkfifoat F +GLIBC_2.4 mkstemp F +GLIBC_2.4 mkstemp64 F +GLIBC_2.4 mktemp F +GLIBC_2.4 mktime F +GLIBC_2.4 mlock F +GLIBC_2.4 mlockall F +GLIBC_2.4 mmap F +GLIBC_2.4 mmap64 F +GLIBC_2.4 modf F +GLIBC_2.4 modff F +GLIBC_2.4 modfl F +GLIBC_2.4 moncontrol F +GLIBC_2.4 monstartup F +GLIBC_2.4 mount F +GLIBC_2.4 mprobe F +GLIBC_2.4 mprotect F +GLIBC_2.4 mrand48 F +GLIBC_2.4 mrand48_r F +GLIBC_2.4 mremap F +GLIBC_2.4 msgctl F +GLIBC_2.4 msgget F +GLIBC_2.4 msgrcv F +GLIBC_2.4 msgsnd F +GLIBC_2.4 msync F +GLIBC_2.4 mtrace F +GLIBC_2.4 munlock F +GLIBC_2.4 munlockall F +GLIBC_2.4 munmap F +GLIBC_2.4 muntrace F +GLIBC_2.4 nanosleep F +GLIBC_2.4 netname2host F +GLIBC_2.4 netname2user F +GLIBC_2.4 newlocale F +GLIBC_2.4 nfsservctl F +GLIBC_2.4 nftw F +GLIBC_2.4 nftw64 F +GLIBC_2.4 ngettext F +GLIBC_2.4 nice F +GLIBC_2.4 nl_langinfo F +GLIBC_2.4 nl_langinfo_l F +GLIBC_2.4 nrand48 F +GLIBC_2.4 nrand48_r F +GLIBC_2.4 ntohl F +GLIBC_2.4 ntohs F +GLIBC_2.4 ntp_adjtime F +GLIBC_2.4 ntp_gettime F +GLIBC_2.4 obstack_alloc_failed_handler D 0x4 +GLIBC_2.4 obstack_exit_failure D 0x4 +GLIBC_2.4 obstack_free F +GLIBC_2.4 obstack_printf F +GLIBC_2.4 obstack_vprintf F +GLIBC_2.4 on_exit F +GLIBC_2.4 open F +GLIBC_2.4 open64 F +GLIBC_2.4 open_memstream F +GLIBC_2.4 open_wmemstream F +GLIBC_2.4 openat F +GLIBC_2.4 openat64 F +GLIBC_2.4 opendir F +GLIBC_2.4 openlog F +GLIBC_2.4 optarg D 0x4 +GLIBC_2.4 opterr D 0x4 +GLIBC_2.4 optind D 0x4 +GLIBC_2.4 optopt D 0x4 +GLIBC_2.4 outb F +GLIBC_2.4 outl F +GLIBC_2.4 outw F +GLIBC_2.4 parse_printf_format F +GLIBC_2.4 passwd2des F +GLIBC_2.4 pathconf F +GLIBC_2.4 pause F +GLIBC_2.4 pclose F +GLIBC_2.4 perror F +GLIBC_2.4 personality F +GLIBC_2.4 pipe F +GLIBC_2.4 pivot_root F +GLIBC_2.4 pmap_getmaps F +GLIBC_2.4 pmap_getport F +GLIBC_2.4 pmap_rmtcall F +GLIBC_2.4 pmap_set F +GLIBC_2.4 pmap_unset F +GLIBC_2.4 poll F +GLIBC_2.4 popen F +GLIBC_2.4 posix_fadvise F +GLIBC_2.4 posix_fadvise64 F +GLIBC_2.4 posix_fallocate F +GLIBC_2.4 posix_fallocate64 F +GLIBC_2.4 posix_madvise F +GLIBC_2.4 posix_memalign F +GLIBC_2.4 posix_openpt F +GLIBC_2.4 posix_spawn F +GLIBC_2.4 posix_spawn_file_actions_addclose F +GLIBC_2.4 posix_spawn_file_actions_adddup2 F +GLIBC_2.4 posix_spawn_file_actions_addopen F +GLIBC_2.4 posix_spawn_file_actions_destroy F +GLIBC_2.4 posix_spawn_file_actions_init F +GLIBC_2.4 posix_spawnattr_destroy F +GLIBC_2.4 posix_spawnattr_getflags F +GLIBC_2.4 posix_spawnattr_getpgroup F +GLIBC_2.4 posix_spawnattr_getschedparam F +GLIBC_2.4 posix_spawnattr_getschedpolicy F +GLIBC_2.4 posix_spawnattr_getsigdefault F +GLIBC_2.4 posix_spawnattr_getsigmask F +GLIBC_2.4 posix_spawnattr_init F +GLIBC_2.4 posix_spawnattr_setflags F +GLIBC_2.4 posix_spawnattr_setpgroup F +GLIBC_2.4 posix_spawnattr_setschedparam F +GLIBC_2.4 posix_spawnattr_setschedpolicy F +GLIBC_2.4 posix_spawnattr_setsigdefault F +GLIBC_2.4 posix_spawnattr_setsigmask F +GLIBC_2.4 posix_spawnp F +GLIBC_2.4 ppoll F +GLIBC_2.4 prctl F +GLIBC_2.4 pread F +GLIBC_2.4 pread64 F +GLIBC_2.4 printf F +GLIBC_2.4 printf_size F +GLIBC_2.4 printf_size_info F +GLIBC_2.4 profil F +GLIBC_2.4 profil_counter F +GLIBC_2.4 program_invocation_name D 0x4 +GLIBC_2.4 program_invocation_short_name D 0x4 +GLIBC_2.4 pselect F +GLIBC_2.4 psignal F +GLIBC_2.4 pthread_attr_destroy F +GLIBC_2.4 pthread_attr_getdetachstate F +GLIBC_2.4 pthread_attr_getinheritsched F +GLIBC_2.4 pthread_attr_getschedparam F +GLIBC_2.4 pthread_attr_getschedpolicy F +GLIBC_2.4 pthread_attr_getscope F +GLIBC_2.4 pthread_attr_init F +GLIBC_2.4 pthread_attr_setdetachstate F +GLIBC_2.4 pthread_attr_setinheritsched F +GLIBC_2.4 pthread_attr_setschedparam F +GLIBC_2.4 pthread_attr_setschedpolicy F +GLIBC_2.4 pthread_attr_setscope F +GLIBC_2.4 pthread_cond_broadcast F +GLIBC_2.4 pthread_cond_destroy F +GLIBC_2.4 pthread_cond_init F +GLIBC_2.4 pthread_cond_signal F +GLIBC_2.4 pthread_cond_timedwait F +GLIBC_2.4 pthread_cond_wait F +GLIBC_2.4 pthread_condattr_destroy F +GLIBC_2.4 pthread_condattr_init F +GLIBC_2.4 pthread_equal F +GLIBC_2.4 pthread_exit F +GLIBC_2.4 pthread_getschedparam F +GLIBC_2.4 pthread_mutex_destroy F +GLIBC_2.4 pthread_mutex_init F +GLIBC_2.4 pthread_mutex_lock F +GLIBC_2.4 pthread_mutex_unlock F +GLIBC_2.4 pthread_self F +GLIBC_2.4 pthread_setcancelstate F +GLIBC_2.4 pthread_setcanceltype F +GLIBC_2.4 pthread_setschedparam F +GLIBC_2.4 ptrace F +GLIBC_2.4 ptsname F +GLIBC_2.4 ptsname_r F +GLIBC_2.4 putc F +GLIBC_2.4 putc_unlocked F +GLIBC_2.4 putchar F +GLIBC_2.4 putchar_unlocked F +GLIBC_2.4 putenv F +GLIBC_2.4 putgrent F +GLIBC_2.4 putmsg F +GLIBC_2.4 putpmsg F +GLIBC_2.4 putpwent F +GLIBC_2.4 puts F +GLIBC_2.4 putspent F +GLIBC_2.4 pututline F +GLIBC_2.4 pututxline F +GLIBC_2.4 putw F +GLIBC_2.4 putwc F +GLIBC_2.4 putwc_unlocked F +GLIBC_2.4 putwchar F +GLIBC_2.4 putwchar_unlocked F +GLIBC_2.4 pvalloc F +GLIBC_2.4 pwrite F +GLIBC_2.4 pwrite64 F +GLIBC_2.4 qecvt F +GLIBC_2.4 qecvt_r F +GLIBC_2.4 qfcvt F +GLIBC_2.4 qfcvt_r F +GLIBC_2.4 qgcvt F +GLIBC_2.4 qsort F +GLIBC_2.4 query_module F +GLIBC_2.4 quotactl F +GLIBC_2.4 raise F +GLIBC_2.4 rand F +GLIBC_2.4 rand_r F +GLIBC_2.4 random F +GLIBC_2.4 random_r F +GLIBC_2.4 rawmemchr F +GLIBC_2.4 rcmd F +GLIBC_2.4 rcmd_af F +GLIBC_2.4 re_comp F +GLIBC_2.4 re_compile_fastmap F +GLIBC_2.4 re_compile_pattern F +GLIBC_2.4 re_exec F +GLIBC_2.4 re_match F +GLIBC_2.4 re_match_2 F +GLIBC_2.4 re_search F +GLIBC_2.4 re_search_2 F +GLIBC_2.4 re_set_registers F +GLIBC_2.4 re_set_syntax F +GLIBC_2.4 re_syntax_options D 0x4 +GLIBC_2.4 read F +GLIBC_2.4 readahead F +GLIBC_2.4 readdir F +GLIBC_2.4 readdir64 F +GLIBC_2.4 readdir64_r F +GLIBC_2.4 readdir_r F +GLIBC_2.4 readlink F +GLIBC_2.4 readlinkat F +GLIBC_2.4 readv F +GLIBC_2.4 realloc F +GLIBC_2.4 realpath F +GLIBC_2.4 reboot F +GLIBC_2.4 recv F +GLIBC_2.4 recvfrom F +GLIBC_2.4 recvmsg F +GLIBC_2.4 regcomp F +GLIBC_2.4 regerror F +GLIBC_2.4 regexec F +GLIBC_2.4 regfree F +GLIBC_2.4 register_printf_function F +GLIBC_2.4 registerrpc F +GLIBC_2.4 remap_file_pages F +GLIBC_2.4 remove F +GLIBC_2.4 removexattr F +GLIBC_2.4 remque F +GLIBC_2.4 rename F +GLIBC_2.4 renameat F +GLIBC_2.4 revoke F +GLIBC_2.4 rewind F +GLIBC_2.4 rewinddir F +GLIBC_2.4 rexec F +GLIBC_2.4 rexec_af F +GLIBC_2.4 rexecoptions D 0x4 +GLIBC_2.4 rindex F +GLIBC_2.4 rmdir F +GLIBC_2.4 rpc_createerr D 0x10 +GLIBC_2.4 rpmatch F +GLIBC_2.4 rresvport F +GLIBC_2.4 rresvport_af F +GLIBC_2.4 rtime F +GLIBC_2.4 ruserok F +GLIBC_2.4 ruserok_af F +GLIBC_2.4 ruserpass F +GLIBC_2.4 sbrk F +GLIBC_2.4 scalbn F +GLIBC_2.4 scalbnf F +GLIBC_2.4 scalbnl F +GLIBC_2.4 scandir F +GLIBC_2.4 scandir64 F +GLIBC_2.4 scanf F +GLIBC_2.4 sched_get_priority_max F +GLIBC_2.4 sched_get_priority_min F +GLIBC_2.4 sched_getaffinity F +GLIBC_2.4 sched_getparam F +GLIBC_2.4 sched_getscheduler F +GLIBC_2.4 sched_rr_get_interval F +GLIBC_2.4 sched_setaffinity F +GLIBC_2.4 sched_setparam F +GLIBC_2.4 sched_setscheduler F +GLIBC_2.4 sched_yield F +GLIBC_2.4 seed48 F +GLIBC_2.4 seed48_r F +GLIBC_2.4 seekdir F +GLIBC_2.4 select F +GLIBC_2.4 semctl F +GLIBC_2.4 semget F +GLIBC_2.4 semop F +GLIBC_2.4 semtimedop F +GLIBC_2.4 send F +GLIBC_2.4 sendfile F +GLIBC_2.4 sendfile64 F +GLIBC_2.4 sendmsg F +GLIBC_2.4 sendto F +GLIBC_2.4 setaliasent F +GLIBC_2.4 setbuf F +GLIBC_2.4 setbuffer F +GLIBC_2.4 setcontext F +GLIBC_2.4 setdomainname F +GLIBC_2.4 setegid F +GLIBC_2.4 setenv F +GLIBC_2.4 seteuid F +GLIBC_2.4 setfsent F +GLIBC_2.4 setfsgid F +GLIBC_2.4 setfsuid F +GLIBC_2.4 setgid F +GLIBC_2.4 setgrent F +GLIBC_2.4 setgroups F +GLIBC_2.4 sethostent F +GLIBC_2.4 sethostid F +GLIBC_2.4 sethostname F +GLIBC_2.4 setipv4sourcefilter F +GLIBC_2.4 setitimer F +GLIBC_2.4 setjmp F +GLIBC_2.4 setlinebuf F +GLIBC_2.4 setlocale F +GLIBC_2.4 setlogin F +GLIBC_2.4 setlogmask F +GLIBC_2.4 setmntent F +GLIBC_2.4 setnetent F +GLIBC_2.4 setnetgrent F +GLIBC_2.4 setpgid F +GLIBC_2.4 setpgrp F +GLIBC_2.4 setpriority F +GLIBC_2.4 setprotoent F +GLIBC_2.4 setpwent F +GLIBC_2.4 setregid F +GLIBC_2.4 setresgid F +GLIBC_2.4 setresuid F +GLIBC_2.4 setreuid F +GLIBC_2.4 setrlimit F +GLIBC_2.4 setrlimit64 F +GLIBC_2.4 setrpcent F +GLIBC_2.4 setservent F +GLIBC_2.4 setsid F +GLIBC_2.4 setsockopt F +GLIBC_2.4 setsourcefilter F +GLIBC_2.4 setspent F +GLIBC_2.4 setstate F +GLIBC_2.4 setstate_r F +GLIBC_2.4 settimeofday F +GLIBC_2.4 setttyent F +GLIBC_2.4 setuid F +GLIBC_2.4 setusershell F +GLIBC_2.4 setutent F +GLIBC_2.4 setutxent F +GLIBC_2.4 setvbuf F +GLIBC_2.4 setxattr F +GLIBC_2.4 sgetspent F +GLIBC_2.4 sgetspent_r F +GLIBC_2.4 shmat F +GLIBC_2.4 shmctl F +GLIBC_2.4 shmdt F +GLIBC_2.4 shmget F +GLIBC_2.4 shutdown F +GLIBC_2.4 sigaction F +GLIBC_2.4 sigaddset F +GLIBC_2.4 sigaltstack F +GLIBC_2.4 sigandset F +GLIBC_2.4 sigblock F +GLIBC_2.4 sigdelset F +GLIBC_2.4 sigemptyset F +GLIBC_2.4 sigfillset F +GLIBC_2.4 siggetmask F +GLIBC_2.4 sighold F +GLIBC_2.4 sigignore F +GLIBC_2.4 siginterrupt F +GLIBC_2.4 sigisemptyset F +GLIBC_2.4 sigismember F +GLIBC_2.4 siglongjmp F +GLIBC_2.4 signal F +GLIBC_2.4 sigorset F +GLIBC_2.4 sigpause F +GLIBC_2.4 sigpending F +GLIBC_2.4 sigprocmask F +GLIBC_2.4 sigqueue F +GLIBC_2.4 sigrelse F +GLIBC_2.4 sigreturn F +GLIBC_2.4 sigset F +GLIBC_2.4 sigsetmask F +GLIBC_2.4 sigstack F +GLIBC_2.4 sigsuspend F +GLIBC_2.4 sigtimedwait F +GLIBC_2.4 sigvec F +GLIBC_2.4 sigwait F +GLIBC_2.4 sigwaitinfo F +GLIBC_2.4 sleep F +GLIBC_2.4 snprintf F +GLIBC_2.4 sockatmark F +GLIBC_2.4 socket F +GLIBC_2.4 socketpair F +GLIBC_2.4 sprintf F +GLIBC_2.4 sprofil F +GLIBC_2.4 srand F +GLIBC_2.4 srand48 F +GLIBC_2.4 srand48_r F +GLIBC_2.4 srandom F +GLIBC_2.4 srandom_r F +GLIBC_2.4 sscanf F +GLIBC_2.4 ssignal F +GLIBC_2.4 sstk F +GLIBC_2.4 statfs F +GLIBC_2.4 statfs64 F +GLIBC_2.4 statvfs F +GLIBC_2.4 statvfs64 F +GLIBC_2.4 stderr D 0x4 +GLIBC_2.4 stdin D 0x4 +GLIBC_2.4 stdout D 0x4 +GLIBC_2.4 step F +GLIBC_2.4 stime F +GLIBC_2.4 stpcpy F +GLIBC_2.4 stpncpy F +GLIBC_2.4 strcasecmp F +GLIBC_2.4 strcasecmp_l F +GLIBC_2.4 strcasestr F +GLIBC_2.4 strcat F +GLIBC_2.4 strchr F +GLIBC_2.4 strchrnul F +GLIBC_2.4 strcmp F +GLIBC_2.4 strcoll F +GLIBC_2.4 strcoll_l F +GLIBC_2.4 strcpy F +GLIBC_2.4 strcspn F +GLIBC_2.4 strdup F +GLIBC_2.4 strerror F +GLIBC_2.4 strerror_r F +GLIBC_2.4 strfmon F +GLIBC_2.4 strfmon_l F +GLIBC_2.4 strfry F +GLIBC_2.4 strftime F +GLIBC_2.4 strftime_l F +GLIBC_2.4 strlen F +GLIBC_2.4 strncasecmp F +GLIBC_2.4 strncasecmp_l F +GLIBC_2.4 strncat F +GLIBC_2.4 strncmp F +GLIBC_2.4 strncpy F +GLIBC_2.4 strndup F +GLIBC_2.4 strnlen F +GLIBC_2.4 strpbrk F +GLIBC_2.4 strptime F +GLIBC_2.4 strptime_l F +GLIBC_2.4 strrchr F +GLIBC_2.4 strsep F +GLIBC_2.4 strsignal F +GLIBC_2.4 strspn F +GLIBC_2.4 strstr F +GLIBC_2.4 strtod F +GLIBC_2.4 strtod_l F +GLIBC_2.4 strtof F +GLIBC_2.4 strtof_l F +GLIBC_2.4 strtoimax F +GLIBC_2.4 strtok F +GLIBC_2.4 strtok_r F +GLIBC_2.4 strtol F +GLIBC_2.4 strtol_l F +GLIBC_2.4 strtold F +GLIBC_2.4 strtold_l F +GLIBC_2.4 strtoll F +GLIBC_2.4 strtoll_l F +GLIBC_2.4 strtoq F +GLIBC_2.4 strtoul F +GLIBC_2.4 strtoul_l F +GLIBC_2.4 strtoull F +GLIBC_2.4 strtoull_l F +GLIBC_2.4 strtoumax F +GLIBC_2.4 strtouq F +GLIBC_2.4 strverscmp F +GLIBC_2.4 strxfrm F +GLIBC_2.4 strxfrm_l F +GLIBC_2.4 stty F +GLIBC_2.4 svc_exit F +GLIBC_2.4 svc_fdset D 0x80 +GLIBC_2.4 svc_getreq F +GLIBC_2.4 svc_getreq_common F +GLIBC_2.4 svc_getreq_poll F +GLIBC_2.4 svc_getreqset F +GLIBC_2.4 svc_max_pollfd D 0x4 +GLIBC_2.4 svc_pollfd D 0x4 +GLIBC_2.4 svc_register F +GLIBC_2.4 svc_run F +GLIBC_2.4 svc_sendreply F +GLIBC_2.4 svc_unregister F +GLIBC_2.4 svcauthdes_stats D 0xc +GLIBC_2.4 svcerr_auth F +GLIBC_2.4 svcerr_decode F +GLIBC_2.4 svcerr_noproc F +GLIBC_2.4 svcerr_noprog F +GLIBC_2.4 svcerr_progvers F +GLIBC_2.4 svcerr_systemerr F +GLIBC_2.4 svcerr_weakauth F +GLIBC_2.4 svcfd_create F +GLIBC_2.4 svcraw_create F +GLIBC_2.4 svctcp_create F +GLIBC_2.4 svcudp_bufcreate F +GLIBC_2.4 svcudp_create F +GLIBC_2.4 svcudp_enablecache F +GLIBC_2.4 svcunix_create F +GLIBC_2.4 svcunixfd_create F +GLIBC_2.4 swab F +GLIBC_2.4 swapcontext F +GLIBC_2.4 swapoff F +GLIBC_2.4 swapon F +GLIBC_2.4 swprintf F +GLIBC_2.4 swscanf F +GLIBC_2.4 symlink F +GLIBC_2.4 symlinkat F +GLIBC_2.4 sync F +GLIBC_2.4 sys_errlist D 0x210 +GLIBC_2.4 sys_nerr D 0x4 +GLIBC_2.4 sys_sigabbrev D 0x104 +GLIBC_2.4 sys_siglist D 0x104 +GLIBC_2.4 syscall F +GLIBC_2.4 sysconf F +GLIBC_2.4 sysctl F +GLIBC_2.4 sysinfo F +GLIBC_2.4 syslog F +GLIBC_2.4 system F +GLIBC_2.4 sysv_signal F +GLIBC_2.4 tcdrain F +GLIBC_2.4 tcflow F +GLIBC_2.4 tcflush F +GLIBC_2.4 tcgetattr F +GLIBC_2.4 tcgetpgrp F +GLIBC_2.4 tcgetsid F +GLIBC_2.4 tcsendbreak F +GLIBC_2.4 tcsetattr F +GLIBC_2.4 tcsetpgrp F +GLIBC_2.4 tdelete F +GLIBC_2.4 tdestroy F +GLIBC_2.4 telldir F +GLIBC_2.4 tempnam F +GLIBC_2.4 textdomain F +GLIBC_2.4 tfind F +GLIBC_2.4 time F +GLIBC_2.4 timegm F +GLIBC_2.4 timelocal F +GLIBC_2.4 times F +GLIBC_2.4 timezone D 0x4 +GLIBC_2.4 tmpfile F +GLIBC_2.4 tmpfile64 F +GLIBC_2.4 tmpnam F +GLIBC_2.4 tmpnam_r F +GLIBC_2.4 toascii F +GLIBC_2.4 tolower F +GLIBC_2.4 tolower_l F +GLIBC_2.4 toupper F +GLIBC_2.4 toupper_l F +GLIBC_2.4 towctrans F +GLIBC_2.4 towctrans_l F +GLIBC_2.4 towlower F +GLIBC_2.4 towlower_l F +GLIBC_2.4 towupper F +GLIBC_2.4 towupper_l F +GLIBC_2.4 tr_break F +GLIBC_2.4 truncate F +GLIBC_2.4 truncate64 F +GLIBC_2.4 tsearch F +GLIBC_2.4 ttyname F +GLIBC_2.4 ttyname_r F +GLIBC_2.4 ttyslot F +GLIBC_2.4 twalk F +GLIBC_2.4 tzname D 0x8 +GLIBC_2.4 tzset F +GLIBC_2.4 ualarm F +GLIBC_2.4 ulckpwdf F +GLIBC_2.4 ulimit F +GLIBC_2.4 umask F +GLIBC_2.4 umount F +GLIBC_2.4 umount2 F +GLIBC_2.4 uname F +GLIBC_2.4 ungetc F +GLIBC_2.4 ungetwc F +GLIBC_2.4 unlink F +GLIBC_2.4 unlinkat F +GLIBC_2.4 unlockpt F +GLIBC_2.4 unsetenv F +GLIBC_2.4 unshare F +GLIBC_2.4 updwtmp F +GLIBC_2.4 updwtmpx F +GLIBC_2.4 uselib F +GLIBC_2.4 uselocale F +GLIBC_2.4 user2netname F +GLIBC_2.4 usleep F +GLIBC_2.4 ustat F +GLIBC_2.4 utime F +GLIBC_2.4 utimes F +GLIBC_2.4 utmpname F +GLIBC_2.4 utmpxname F +GLIBC_2.4 valloc F +GLIBC_2.4 vasprintf F +GLIBC_2.4 vdprintf F +GLIBC_2.4 verr F +GLIBC_2.4 verrx F +GLIBC_2.4 versionsort F +GLIBC_2.4 versionsort64 F +GLIBC_2.4 vfork F +GLIBC_2.4 vfprintf F +GLIBC_2.4 vfscanf F +GLIBC_2.4 vfwprintf F +GLIBC_2.4 vfwscanf F +GLIBC_2.4 vhangup F +GLIBC_2.4 vlimit F +GLIBC_2.4 vprintf F +GLIBC_2.4 vscanf F +GLIBC_2.4 vsnprintf F +GLIBC_2.4 vsprintf F +GLIBC_2.4 vsscanf F +GLIBC_2.4 vswprintf F +GLIBC_2.4 vswscanf F +GLIBC_2.4 vsyslog F +GLIBC_2.4 vtimes F +GLIBC_2.4 vwarn F +GLIBC_2.4 vwarnx F +GLIBC_2.4 vwprintf F +GLIBC_2.4 vwscanf F +GLIBC_2.4 wait F +GLIBC_2.4 wait3 F +GLIBC_2.4 wait4 F +GLIBC_2.4 waitid F +GLIBC_2.4 waitpid F +GLIBC_2.4 warn F +GLIBC_2.4 warnx F +GLIBC_2.4 wcpcpy F +GLIBC_2.4 wcpncpy F +GLIBC_2.4 wcrtomb F +GLIBC_2.4 wcscasecmp F +GLIBC_2.4 wcscasecmp_l F +GLIBC_2.4 wcscat F +GLIBC_2.4 wcschr F +GLIBC_2.4 wcschrnul F +GLIBC_2.4 wcscmp F +GLIBC_2.4 wcscoll F +GLIBC_2.4 wcscoll_l F +GLIBC_2.4 wcscpy F +GLIBC_2.4 wcscspn F +GLIBC_2.4 wcsdup F +GLIBC_2.4 wcsftime F +GLIBC_2.4 wcsftime_l F +GLIBC_2.4 wcslen F +GLIBC_2.4 wcsncasecmp F +GLIBC_2.4 wcsncasecmp_l F +GLIBC_2.4 wcsncat F +GLIBC_2.4 wcsncmp F +GLIBC_2.4 wcsncpy F +GLIBC_2.4 wcsnlen F +GLIBC_2.4 wcsnrtombs F +GLIBC_2.4 wcspbrk F +GLIBC_2.4 wcsrchr F +GLIBC_2.4 wcsrtombs F +GLIBC_2.4 wcsspn F +GLIBC_2.4 wcsstr F +GLIBC_2.4 wcstod F +GLIBC_2.4 wcstod_l F +GLIBC_2.4 wcstof F +GLIBC_2.4 wcstof_l F +GLIBC_2.4 wcstoimax F +GLIBC_2.4 wcstok F +GLIBC_2.4 wcstol F +GLIBC_2.4 wcstol_l F +GLIBC_2.4 wcstold F +GLIBC_2.4 wcstold_l F +GLIBC_2.4 wcstoll F +GLIBC_2.4 wcstoll_l F +GLIBC_2.4 wcstombs F +GLIBC_2.4 wcstoq F +GLIBC_2.4 wcstoul F +GLIBC_2.4 wcstoul_l F +GLIBC_2.4 wcstoull F +GLIBC_2.4 wcstoull_l F +GLIBC_2.4 wcstoumax F +GLIBC_2.4 wcstouq F +GLIBC_2.4 wcswcs F +GLIBC_2.4 wcswidth F +GLIBC_2.4 wcsxfrm F +GLIBC_2.4 wcsxfrm_l F +GLIBC_2.4 wctob F +GLIBC_2.4 wctomb F +GLIBC_2.4 wctrans F +GLIBC_2.4 wctrans_l F +GLIBC_2.4 wctype F +GLIBC_2.4 wctype_l F +GLIBC_2.4 wcwidth F +GLIBC_2.4 wmemchr F +GLIBC_2.4 wmemcmp F +GLIBC_2.4 wmemcpy F +GLIBC_2.4 wmemmove F +GLIBC_2.4 wmempcpy F +GLIBC_2.4 wmemset F +GLIBC_2.4 wordexp F +GLIBC_2.4 wordfree F +GLIBC_2.4 wprintf F +GLIBC_2.4 write F +GLIBC_2.4 writev F +GLIBC_2.4 wscanf F +GLIBC_2.4 xdecrypt F +GLIBC_2.4 xdr_accepted_reply F +GLIBC_2.4 xdr_array F +GLIBC_2.4 xdr_authdes_cred F +GLIBC_2.4 xdr_authdes_verf F +GLIBC_2.4 xdr_authunix_parms F +GLIBC_2.4 xdr_bool F +GLIBC_2.4 xdr_bytes F +GLIBC_2.4 xdr_callhdr F +GLIBC_2.4 xdr_callmsg F +GLIBC_2.4 xdr_char F +GLIBC_2.4 xdr_cryptkeyarg F +GLIBC_2.4 xdr_cryptkeyarg2 F +GLIBC_2.4 xdr_cryptkeyres F +GLIBC_2.4 xdr_des_block F +GLIBC_2.4 xdr_double F +GLIBC_2.4 xdr_enum F +GLIBC_2.4 xdr_float F +GLIBC_2.4 xdr_free F +GLIBC_2.4 xdr_getcredres F +GLIBC_2.4 xdr_hyper F +GLIBC_2.4 xdr_int F +GLIBC_2.4 xdr_int16_t F +GLIBC_2.4 xdr_int32_t F +GLIBC_2.4 xdr_int64_t F +GLIBC_2.4 xdr_int8_t F +GLIBC_2.4 xdr_key_netstarg F +GLIBC_2.4 xdr_key_netstres F +GLIBC_2.4 xdr_keybuf F +GLIBC_2.4 xdr_keystatus F +GLIBC_2.4 xdr_long F +GLIBC_2.4 xdr_longlong_t F +GLIBC_2.4 xdr_netnamestr F +GLIBC_2.4 xdr_netobj F +GLIBC_2.4 xdr_opaque F +GLIBC_2.4 xdr_opaque_auth F +GLIBC_2.4 xdr_pmap F +GLIBC_2.4 xdr_pmaplist F +GLIBC_2.4 xdr_pointer F +GLIBC_2.4 xdr_quad_t F +GLIBC_2.4 xdr_reference F +GLIBC_2.4 xdr_rejected_reply F +GLIBC_2.4 xdr_replymsg F +GLIBC_2.4 xdr_rmtcall_args F +GLIBC_2.4 xdr_rmtcallres F +GLIBC_2.4 xdr_short F +GLIBC_2.4 xdr_sizeof F +GLIBC_2.4 xdr_string F +GLIBC_2.4 xdr_u_char F +GLIBC_2.4 xdr_u_hyper F +GLIBC_2.4 xdr_u_int F +GLIBC_2.4 xdr_u_long F +GLIBC_2.4 xdr_u_longlong_t F +GLIBC_2.4 xdr_u_quad_t F +GLIBC_2.4 xdr_u_short F +GLIBC_2.4 xdr_uint16_t F +GLIBC_2.4 xdr_uint32_t F +GLIBC_2.4 xdr_uint64_t F +GLIBC_2.4 xdr_uint8_t F +GLIBC_2.4 xdr_union F +GLIBC_2.4 xdr_unixcred F +GLIBC_2.4 xdr_vector F +GLIBC_2.4 xdr_void F +GLIBC_2.4 xdr_wrapstring F +GLIBC_2.4 xdrmem_create F +GLIBC_2.4 xdrrec_create F +GLIBC_2.4 xdrrec_endofrecord F +GLIBC_2.4 xdrrec_eof F +GLIBC_2.4 xdrrec_skiprecord F +GLIBC_2.4 xdrstdio_create F +GLIBC_2.4 xencrypt F +GLIBC_2.4 xprt_register F +GLIBC_2.4 xprt_unregister F +GLIBC_2.5 GLIBC_2.5 A +GLIBC_2.5 __readlinkat_chk F +GLIBC_2.5 inet6_opt_append F +GLIBC_2.5 inet6_opt_find F +GLIBC_2.5 inet6_opt_finish F +GLIBC_2.5 inet6_opt_get_val F +GLIBC_2.5 inet6_opt_init F +GLIBC_2.5 inet6_opt_next F +GLIBC_2.5 inet6_opt_set_val F +GLIBC_2.5 inet6_rth_add F +GLIBC_2.5 inet6_rth_getaddr F +GLIBC_2.5 inet6_rth_init F +GLIBC_2.5 inet6_rth_reverse F +GLIBC_2.5 inet6_rth_segments F +GLIBC_2.5 inet6_rth_space F +GLIBC_2.5 splice F +GLIBC_2.5 tee F +GLIBC_2.5 vmsplice F +GLIBC_2.6 GLIBC_2.6 A +GLIBC_2.6 __sched_cpucount F +GLIBC_2.6 epoll_pwait F +GLIBC_2.6 futimens F +GLIBC_2.6 sched_getcpu F +GLIBC_2.6 strerror_l F +GLIBC_2.6 sync_file_range F +GLIBC_2.6 utimensat F +GLIBC_2.7 GLIBC_2.7 A +GLIBC_2.7 __fread_chk F +GLIBC_2.7 __fread_unlocked_chk F +GLIBC_2.7 __isoc99_fscanf F +GLIBC_2.7 __isoc99_fwscanf F +GLIBC_2.7 __isoc99_scanf F +GLIBC_2.7 __isoc99_sscanf F +GLIBC_2.7 __isoc99_swscanf F +GLIBC_2.7 __isoc99_vfscanf F +GLIBC_2.7 __isoc99_vfwscanf F +GLIBC_2.7 __isoc99_vscanf F +GLIBC_2.7 __isoc99_vsscanf F +GLIBC_2.7 __isoc99_vswscanf F +GLIBC_2.7 __isoc99_vwscanf F +GLIBC_2.7 __isoc99_wscanf F +GLIBC_2.7 __open64_2 F +GLIBC_2.7 __open_2 F +GLIBC_2.7 __openat64_2 F +GLIBC_2.7 __openat_2 F +GLIBC_2.7 __sched_cpualloc F +GLIBC_2.7 __sched_cpufree F +GLIBC_2.7 eventfd F +GLIBC_2.7 eventfd_read F +GLIBC_2.7 eventfd_write F +GLIBC_2.7 mkostemp F +GLIBC_2.7 mkostemp64 F +GLIBC_2.7 signalfd F +GLIBC_2.8 GLIBC_2.8 A +GLIBC_2.8 __asprintf_chk F +GLIBC_2.8 __dprintf_chk F +GLIBC_2.8 __gnu_mcount_nc F +GLIBC_2.8 __obstack_printf_chk F +GLIBC_2.8 __obstack_vprintf_chk F +GLIBC_2.8 __vasprintf_chk F +GLIBC_2.8 __vdprintf_chk F +GLIBC_2.8 qsort_r F +GLIBC_2.8 timerfd_create F +GLIBC_2.8 timerfd_gettime F +GLIBC_2.8 timerfd_settime F +GLIBC_2.9 GLIBC_2.9 A +GLIBC_2.9 dup3 F +GLIBC_2.9 epoll_create1 F +GLIBC_2.9 inotify_init1 F +GLIBC_2.9 pipe2 F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/libcrypt.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libcrypt.abilist new file mode 100644 index 0000000000..04f1f02fa3 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libcrypt.abilist @@ -0,0 +1,8 @@ +GLIBC_2.4 GLIBC_2.4 A +GLIBC_2.4 crypt F +GLIBC_2.4 crypt_r F +GLIBC_2.4 encrypt F +GLIBC_2.4 encrypt_r F +GLIBC_2.4 fcrypt F +GLIBC_2.4 setkey F +GLIBC_2.4 setkey_r F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/libdl.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libdl.abilist new file mode 100644 index 0000000000..89a750a0a3 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libdl.abilist @@ -0,0 +1,10 @@ +GLIBC_2.4 GLIBC_2.4 A +GLIBC_2.4 dladdr F +GLIBC_2.4 dladdr1 F +GLIBC_2.4 dlclose F +GLIBC_2.4 dlerror F +GLIBC_2.4 dlinfo F +GLIBC_2.4 dlmopen F +GLIBC_2.4 dlopen F +GLIBC_2.4 dlsym F +GLIBC_2.4 dlvsym F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/libm.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libm.abilist new file mode 100644 index 0000000000..d0c33d2a11 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libm.abilist @@ -0,0 +1,432 @@ +GLIBC_2.15 GLIBC_2.15 A +GLIBC_2.15 __acos_finite F +GLIBC_2.15 __acosf_finite F +GLIBC_2.15 __acosh_finite F +GLIBC_2.15 __acoshf_finite F +GLIBC_2.15 __asin_finite F +GLIBC_2.15 __asinf_finite F +GLIBC_2.15 __atan2_finite F +GLIBC_2.15 __atan2f_finite F +GLIBC_2.15 __atanh_finite F +GLIBC_2.15 __atanhf_finite F +GLIBC_2.15 __cosh_finite F +GLIBC_2.15 __coshf_finite F +GLIBC_2.15 __exp10_finite F +GLIBC_2.15 __exp10f_finite F +GLIBC_2.15 __exp2_finite F +GLIBC_2.15 __exp2f_finite F +GLIBC_2.15 __exp_finite F +GLIBC_2.15 __expf_finite F +GLIBC_2.15 __fmod_finite F +GLIBC_2.15 __fmodf_finite F +GLIBC_2.15 __gamma_r_finite F +GLIBC_2.15 __gammaf_r_finite F +GLIBC_2.15 __hypot_finite F +GLIBC_2.15 __hypotf_finite F +GLIBC_2.15 __j0_finite F +GLIBC_2.15 __j0f_finite F +GLIBC_2.15 __j1_finite F +GLIBC_2.15 __j1f_finite F +GLIBC_2.15 __jn_finite F +GLIBC_2.15 __jnf_finite F +GLIBC_2.15 __lgamma_r_finite F +GLIBC_2.15 __lgammaf_r_finite F +GLIBC_2.15 __log10_finite F +GLIBC_2.15 __log10f_finite F +GLIBC_2.15 __log2_finite F +GLIBC_2.15 __log2f_finite F +GLIBC_2.15 __log_finite F +GLIBC_2.15 __logf_finite F +GLIBC_2.15 __pow_finite F +GLIBC_2.15 __powf_finite F +GLIBC_2.15 __remainder_finite F +GLIBC_2.15 __remainderf_finite F +GLIBC_2.15 __scalb_finite F +GLIBC_2.15 __scalbf_finite F +GLIBC_2.15 __sinh_finite F +GLIBC_2.15 __sinhf_finite F +GLIBC_2.15 __sqrt_finite F +GLIBC_2.15 __sqrtf_finite F +GLIBC_2.15 __y0_finite F +GLIBC_2.15 __y0f_finite F +GLIBC_2.15 __y1_finite F +GLIBC_2.15 __y1f_finite F +GLIBC_2.15 __yn_finite F +GLIBC_2.15 __ynf_finite F +GLIBC_2.18 GLIBC_2.18 A +GLIBC_2.18 __issignaling F +GLIBC_2.18 __issignalingf F +GLIBC_2.23 GLIBC_2.23 A +GLIBC_2.23 __signgam D 0x4 +GLIBC_2.23 lgamma F +GLIBC_2.23 lgammaf F +GLIBC_2.23 lgammal F +GLIBC_2.24 GLIBC_2.24 A +GLIBC_2.24 nextdown F +GLIBC_2.24 nextdownf F +GLIBC_2.24 nextdownl F +GLIBC_2.24 nextup F +GLIBC_2.24 nextupf F +GLIBC_2.24 nextupl F +GLIBC_2.25 GLIBC_2.25 A +GLIBC_2.25 __iseqsig F +GLIBC_2.25 __iseqsigf F +GLIBC_2.25 canonicalize F +GLIBC_2.25 canonicalizef F +GLIBC_2.25 canonicalizel F +GLIBC_2.25 fegetmode F +GLIBC_2.25 fesetexcept F +GLIBC_2.25 fesetmode F +GLIBC_2.25 fetestexceptflag F +GLIBC_2.25 fmaxmag F +GLIBC_2.25 fmaxmagf F +GLIBC_2.25 fmaxmagl F +GLIBC_2.25 fminmag F +GLIBC_2.25 fminmagf F +GLIBC_2.25 fminmagl F +GLIBC_2.25 fromfp F +GLIBC_2.25 fromfpf F +GLIBC_2.25 fromfpl F +GLIBC_2.25 fromfpx F +GLIBC_2.25 fromfpxf F +GLIBC_2.25 fromfpxl F +GLIBC_2.25 getpayload F +GLIBC_2.25 getpayloadf F +GLIBC_2.25 getpayloadl F +GLIBC_2.25 llogb F +GLIBC_2.25 llogbf F +GLIBC_2.25 llogbl F +GLIBC_2.25 roundeven F +GLIBC_2.25 roundevenf F +GLIBC_2.25 roundevenl F +GLIBC_2.25 setpayload F +GLIBC_2.25 setpayloadf F +GLIBC_2.25 setpayloadl F +GLIBC_2.25 setpayloadsig F +GLIBC_2.25 setpayloadsigf F +GLIBC_2.25 setpayloadsigl F +GLIBC_2.25 totalorder F +GLIBC_2.25 totalorderf F +GLIBC_2.25 totalorderl F +GLIBC_2.25 totalordermag F +GLIBC_2.25 totalordermagf F +GLIBC_2.25 totalordermagl F +GLIBC_2.25 ufromfp F +GLIBC_2.25 ufromfpf F +GLIBC_2.25 ufromfpl F +GLIBC_2.25 ufromfpx F +GLIBC_2.25 ufromfpxf F +GLIBC_2.25 ufromfpxl F +GLIBC_2.4 GLIBC_2.4 A +GLIBC_2.4 _LIB_VERSION D 0x4 +GLIBC_2.4 __clog10 F +GLIBC_2.4 __clog10f F +GLIBC_2.4 __clog10l F +GLIBC_2.4 __finite F +GLIBC_2.4 __finitef F +GLIBC_2.4 __finitel F +GLIBC_2.4 __fpclassify F +GLIBC_2.4 __fpclassifyf F +GLIBC_2.4 __signbit F +GLIBC_2.4 __signbitf F +GLIBC_2.4 acos F +GLIBC_2.4 acosf F +GLIBC_2.4 acosh F +GLIBC_2.4 acoshf F +GLIBC_2.4 acoshl F +GLIBC_2.4 acosl F +GLIBC_2.4 asin F +GLIBC_2.4 asinf F +GLIBC_2.4 asinh F +GLIBC_2.4 asinhf F +GLIBC_2.4 asinhl F +GLIBC_2.4 asinl F +GLIBC_2.4 atan F +GLIBC_2.4 atan2 F +GLIBC_2.4 atan2f F +GLIBC_2.4 atan2l F +GLIBC_2.4 atanf F +GLIBC_2.4 atanh F +GLIBC_2.4 atanhf F +GLIBC_2.4 atanhl F +GLIBC_2.4 atanl F +GLIBC_2.4 cabs F +GLIBC_2.4 cabsf F +GLIBC_2.4 cabsl F +GLIBC_2.4 cacos F +GLIBC_2.4 cacosf F +GLIBC_2.4 cacosh F +GLIBC_2.4 cacoshf F +GLIBC_2.4 cacoshl F +GLIBC_2.4 cacosl F +GLIBC_2.4 carg F +GLIBC_2.4 cargf F +GLIBC_2.4 cargl F +GLIBC_2.4 casin F +GLIBC_2.4 casinf F +GLIBC_2.4 casinh F +GLIBC_2.4 casinhf F +GLIBC_2.4 casinhl F +GLIBC_2.4 casinl F +GLIBC_2.4 catan F +GLIBC_2.4 catanf F +GLIBC_2.4 catanh F +GLIBC_2.4 catanhf F +GLIBC_2.4 catanhl F +GLIBC_2.4 catanl F +GLIBC_2.4 cbrt F +GLIBC_2.4 cbrtf F +GLIBC_2.4 cbrtl F +GLIBC_2.4 ccos F +GLIBC_2.4 ccosf F +GLIBC_2.4 ccosh F +GLIBC_2.4 ccoshf F +GLIBC_2.4 ccoshl F +GLIBC_2.4 ccosl F +GLIBC_2.4 ceil F +GLIBC_2.4 ceilf F +GLIBC_2.4 ceill F +GLIBC_2.4 cexp F +GLIBC_2.4 cexpf F +GLIBC_2.4 cexpl F +GLIBC_2.4 cimag F +GLIBC_2.4 cimagf F +GLIBC_2.4 cimagl F +GLIBC_2.4 clog F +GLIBC_2.4 clog10 F +GLIBC_2.4 clog10f F +GLIBC_2.4 clog10l F +GLIBC_2.4 clogf F +GLIBC_2.4 clogl F +GLIBC_2.4 conj F +GLIBC_2.4 conjf F +GLIBC_2.4 conjl F +GLIBC_2.4 copysign F +GLIBC_2.4 copysignf F +GLIBC_2.4 copysignl F +GLIBC_2.4 cos F +GLIBC_2.4 cosf F +GLIBC_2.4 cosh F +GLIBC_2.4 coshf F +GLIBC_2.4 coshl F +GLIBC_2.4 cosl F +GLIBC_2.4 cpow F +GLIBC_2.4 cpowf F +GLIBC_2.4 cpowl F +GLIBC_2.4 cproj F +GLIBC_2.4 cprojf F +GLIBC_2.4 cprojl F +GLIBC_2.4 creal F +GLIBC_2.4 crealf F +GLIBC_2.4 creall F +GLIBC_2.4 csin F +GLIBC_2.4 csinf F +GLIBC_2.4 csinh F +GLIBC_2.4 csinhf F +GLIBC_2.4 csinhl F +GLIBC_2.4 csinl F +GLIBC_2.4 csqrt F +GLIBC_2.4 csqrtf F +GLIBC_2.4 csqrtl F +GLIBC_2.4 ctan F +GLIBC_2.4 ctanf F +GLIBC_2.4 ctanh F +GLIBC_2.4 ctanhf F +GLIBC_2.4 ctanhl F +GLIBC_2.4 ctanl F +GLIBC_2.4 drem F +GLIBC_2.4 dremf F +GLIBC_2.4 dreml F +GLIBC_2.4 erf F +GLIBC_2.4 erfc F +GLIBC_2.4 erfcf F +GLIBC_2.4 erfcl F +GLIBC_2.4 erff F +GLIBC_2.4 erfl F +GLIBC_2.4 exp F +GLIBC_2.4 exp10 F +GLIBC_2.4 exp10f F +GLIBC_2.4 exp10l F +GLIBC_2.4 exp2 F +GLIBC_2.4 exp2f F +GLIBC_2.4 exp2l F +GLIBC_2.4 expf F +GLIBC_2.4 expl F +GLIBC_2.4 expm1 F +GLIBC_2.4 expm1f F +GLIBC_2.4 expm1l F +GLIBC_2.4 fabs F +GLIBC_2.4 fabsf F +GLIBC_2.4 fabsl F +GLIBC_2.4 fdim F +GLIBC_2.4 fdimf F +GLIBC_2.4 fdiml F +GLIBC_2.4 feclearexcept F +GLIBC_2.4 fedisableexcept F +GLIBC_2.4 feenableexcept F +GLIBC_2.4 fegetenv F +GLIBC_2.4 fegetexcept F +GLIBC_2.4 fegetexceptflag F +GLIBC_2.4 fegetround F +GLIBC_2.4 feholdexcept F +GLIBC_2.4 feraiseexcept F +GLIBC_2.4 fesetenv F +GLIBC_2.4 fesetexceptflag F +GLIBC_2.4 fesetround F +GLIBC_2.4 fetestexcept F +GLIBC_2.4 feupdateenv F +GLIBC_2.4 finite F +GLIBC_2.4 finitef F +GLIBC_2.4 finitel F +GLIBC_2.4 floor F +GLIBC_2.4 floorf F +GLIBC_2.4 floorl F +GLIBC_2.4 fma F +GLIBC_2.4 fmaf F +GLIBC_2.4 fmal F +GLIBC_2.4 fmax F +GLIBC_2.4 fmaxf F +GLIBC_2.4 fmaxl F +GLIBC_2.4 fmin F +GLIBC_2.4 fminf F +GLIBC_2.4 fminl F +GLIBC_2.4 fmod F +GLIBC_2.4 fmodf F +GLIBC_2.4 fmodl F +GLIBC_2.4 frexp F +GLIBC_2.4 frexpf F +GLIBC_2.4 frexpl F +GLIBC_2.4 gamma F +GLIBC_2.4 gammaf F +GLIBC_2.4 gammal F +GLIBC_2.4 hypot F +GLIBC_2.4 hypotf F +GLIBC_2.4 hypotl F +GLIBC_2.4 ilogb F +GLIBC_2.4 ilogbf F +GLIBC_2.4 ilogbl F +GLIBC_2.4 j0 F +GLIBC_2.4 j0f F +GLIBC_2.4 j0l F +GLIBC_2.4 j1 F +GLIBC_2.4 j1f F +GLIBC_2.4 j1l F +GLIBC_2.4 jn F +GLIBC_2.4 jnf F +GLIBC_2.4 jnl F +GLIBC_2.4 ldexp F +GLIBC_2.4 ldexpf F +GLIBC_2.4 ldexpl F +GLIBC_2.4 lgamma F +GLIBC_2.4 lgamma_r F +GLIBC_2.4 lgammaf F +GLIBC_2.4 lgammaf_r F +GLIBC_2.4 lgammal F +GLIBC_2.4 lgammal_r F +GLIBC_2.4 llrint F +GLIBC_2.4 llrintf F +GLIBC_2.4 llrintl F +GLIBC_2.4 llround F +GLIBC_2.4 llroundf F +GLIBC_2.4 llroundl F +GLIBC_2.4 log F +GLIBC_2.4 log10 F +GLIBC_2.4 log10f F +GLIBC_2.4 log10l F +GLIBC_2.4 log1p F +GLIBC_2.4 log1pf F +GLIBC_2.4 log1pl F +GLIBC_2.4 log2 F +GLIBC_2.4 log2f F +GLIBC_2.4 log2l F +GLIBC_2.4 logb F +GLIBC_2.4 logbf F +GLIBC_2.4 logbl F +GLIBC_2.4 logf F +GLIBC_2.4 logl F +GLIBC_2.4 lrint F +GLIBC_2.4 lrintf F +GLIBC_2.4 lrintl F +GLIBC_2.4 lround F +GLIBC_2.4 lroundf F +GLIBC_2.4 lroundl F +GLIBC_2.4 matherr F +GLIBC_2.4 modf F +GLIBC_2.4 modff F +GLIBC_2.4 modfl F +GLIBC_2.4 nan F +GLIBC_2.4 nanf F +GLIBC_2.4 nanl F +GLIBC_2.4 nearbyint F +GLIBC_2.4 nearbyintf F +GLIBC_2.4 nearbyintl F +GLIBC_2.4 nextafter F +GLIBC_2.4 nextafterf F +GLIBC_2.4 nextafterl F +GLIBC_2.4 nexttoward F +GLIBC_2.4 nexttowardf F +GLIBC_2.4 nexttowardl F +GLIBC_2.4 pow F +GLIBC_2.4 pow10 F +GLIBC_2.4 pow10f F +GLIBC_2.4 pow10l F +GLIBC_2.4 powf F +GLIBC_2.4 powl F +GLIBC_2.4 remainder F +GLIBC_2.4 remainderf F +GLIBC_2.4 remainderl F +GLIBC_2.4 remquo F +GLIBC_2.4 remquof F +GLIBC_2.4 remquol F +GLIBC_2.4 rint F +GLIBC_2.4 rintf F +GLIBC_2.4 rintl F +GLIBC_2.4 round F +GLIBC_2.4 roundf F +GLIBC_2.4 roundl F +GLIBC_2.4 scalb F +GLIBC_2.4 scalbf F +GLIBC_2.4 scalbl F +GLIBC_2.4 scalbln F +GLIBC_2.4 scalblnf F +GLIBC_2.4 scalblnl F +GLIBC_2.4 scalbn F +GLIBC_2.4 scalbnf F +GLIBC_2.4 scalbnl F +GLIBC_2.4 signgam D 0x4 +GLIBC_2.4 significand F +GLIBC_2.4 significandf F +GLIBC_2.4 significandl F +GLIBC_2.4 sin F +GLIBC_2.4 sincos F +GLIBC_2.4 sincosf F +GLIBC_2.4 sincosl F +GLIBC_2.4 sinf F +GLIBC_2.4 sinh F +GLIBC_2.4 sinhf F +GLIBC_2.4 sinhl F +GLIBC_2.4 sinl F +GLIBC_2.4 sqrt F +GLIBC_2.4 sqrtf F +GLIBC_2.4 sqrtl F +GLIBC_2.4 tan F +GLIBC_2.4 tanf F +GLIBC_2.4 tanh F +GLIBC_2.4 tanhf F +GLIBC_2.4 tanhl F +GLIBC_2.4 tanl F +GLIBC_2.4 tgamma F +GLIBC_2.4 tgammaf F +GLIBC_2.4 tgammal F +GLIBC_2.4 trunc F +GLIBC_2.4 truncf F +GLIBC_2.4 truncl F +GLIBC_2.4 y0 F +GLIBC_2.4 y0f F +GLIBC_2.4 y0l F +GLIBC_2.4 y1 F +GLIBC_2.4 y1f F +GLIBC_2.4 y1l F +GLIBC_2.4 yn F +GLIBC_2.4 ynf F +GLIBC_2.4 ynl F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/libnsl.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libnsl.abilist new file mode 100644 index 0000000000..2b2e49e6a1 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libnsl.abilist @@ -0,0 +1,122 @@ +GLIBC_2.4 GLIBC_2.4 A +GLIBC_2.4 __free_fdresult F +GLIBC_2.4 __nis_default_access F +GLIBC_2.4 __nis_default_group F +GLIBC_2.4 __nis_default_owner F +GLIBC_2.4 __nis_default_ttl F +GLIBC_2.4 __nis_finddirectory F +GLIBC_2.4 __nis_hash F +GLIBC_2.4 __nisbind_connect F +GLIBC_2.4 __nisbind_create F +GLIBC_2.4 __nisbind_destroy F +GLIBC_2.4 __nisbind_next F +GLIBC_2.4 __yp_check F +GLIBC_2.4 nis_add F +GLIBC_2.4 nis_add_entry F +GLIBC_2.4 nis_addmember F +GLIBC_2.4 nis_checkpoint F +GLIBC_2.4 nis_clone_directory F +GLIBC_2.4 nis_clone_object F +GLIBC_2.4 nis_clone_result F +GLIBC_2.4 nis_creategroup F +GLIBC_2.4 nis_destroy_object F +GLIBC_2.4 nis_destroygroup F +GLIBC_2.4 nis_dir_cmp F +GLIBC_2.4 nis_domain_of F +GLIBC_2.4 nis_domain_of_r F +GLIBC_2.4 nis_first_entry F +GLIBC_2.4 nis_free_directory F +GLIBC_2.4 nis_free_object F +GLIBC_2.4 nis_free_request F +GLIBC_2.4 nis_freenames F +GLIBC_2.4 nis_freeresult F +GLIBC_2.4 nis_freeservlist F +GLIBC_2.4 nis_freetags F +GLIBC_2.4 nis_getnames F +GLIBC_2.4 nis_getservlist F +GLIBC_2.4 nis_ismember F +GLIBC_2.4 nis_leaf_of F +GLIBC_2.4 nis_leaf_of_r F +GLIBC_2.4 nis_lerror F +GLIBC_2.4 nis_list F +GLIBC_2.4 nis_local_directory F +GLIBC_2.4 nis_local_group F +GLIBC_2.4 nis_local_host F +GLIBC_2.4 nis_local_principal F +GLIBC_2.4 nis_lookup F +GLIBC_2.4 nis_mkdir F +GLIBC_2.4 nis_modify F +GLIBC_2.4 nis_modify_entry F +GLIBC_2.4 nis_name_of F +GLIBC_2.4 nis_name_of_r F +GLIBC_2.4 nis_next_entry F +GLIBC_2.4 nis_perror F +GLIBC_2.4 nis_ping F +GLIBC_2.4 nis_print_directory F +GLIBC_2.4 nis_print_entry F +GLIBC_2.4 nis_print_group F +GLIBC_2.4 nis_print_group_entry F +GLIBC_2.4 nis_print_link F +GLIBC_2.4 nis_print_object F +GLIBC_2.4 nis_print_result F +GLIBC_2.4 nis_print_rights F +GLIBC_2.4 nis_print_table F +GLIBC_2.4 nis_read_obj F +GLIBC_2.4 nis_remove F +GLIBC_2.4 nis_remove_entry F +GLIBC_2.4 nis_removemember F +GLIBC_2.4 nis_rmdir F +GLIBC_2.4 nis_servstate F +GLIBC_2.4 nis_sperrno F +GLIBC_2.4 nis_sperror F +GLIBC_2.4 nis_sperror_r F +GLIBC_2.4 nis_stats F +GLIBC_2.4 nis_verifygroup F +GLIBC_2.4 nis_write_obj F +GLIBC_2.4 readColdStartFile F +GLIBC_2.4 writeColdStartFile F +GLIBC_2.4 xdr_cback_data F +GLIBC_2.4 xdr_domainname F +GLIBC_2.4 xdr_keydat F +GLIBC_2.4 xdr_mapname F +GLIBC_2.4 xdr_obj_p F +GLIBC_2.4 xdr_peername F +GLIBC_2.4 xdr_valdat F +GLIBC_2.4 xdr_yp_buf F +GLIBC_2.4 xdr_ypall F +GLIBC_2.4 xdr_ypbind_binding F +GLIBC_2.4 xdr_ypbind_resp F +GLIBC_2.4 xdr_ypbind_resptype F +GLIBC_2.4 xdr_ypbind_setdom F +GLIBC_2.4 xdr_ypdelete_args F +GLIBC_2.4 xdr_ypmap_parms F +GLIBC_2.4 xdr_ypmaplist F +GLIBC_2.4 xdr_yppush_status F +GLIBC_2.4 xdr_yppushresp_xfr F +GLIBC_2.4 xdr_ypreq_key F +GLIBC_2.4 xdr_ypreq_nokey F +GLIBC_2.4 xdr_ypreq_xfr F +GLIBC_2.4 xdr_ypresp_all F +GLIBC_2.4 xdr_ypresp_key_val F +GLIBC_2.4 xdr_ypresp_maplist F +GLIBC_2.4 xdr_ypresp_master F +GLIBC_2.4 xdr_ypresp_order F +GLIBC_2.4 xdr_ypresp_val F +GLIBC_2.4 xdr_ypresp_xfr F +GLIBC_2.4 xdr_ypstat F +GLIBC_2.4 xdr_ypupdate_args F +GLIBC_2.4 xdr_ypxfrstat F +GLIBC_2.4 yp_all F +GLIBC_2.4 yp_bind F +GLIBC_2.4 yp_first F +GLIBC_2.4 yp_get_default_domain F +GLIBC_2.4 yp_maplist F +GLIBC_2.4 yp_master F +GLIBC_2.4 yp_match F +GLIBC_2.4 yp_next F +GLIBC_2.4 yp_order F +GLIBC_2.4 yp_unbind F +GLIBC_2.4 yp_update F +GLIBC_2.4 ypbinderr_string F +GLIBC_2.4 yperr_string F +GLIBC_2.4 ypprot_err F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/libpthread.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libpthread.abilist new file mode 100644 index 0000000000..91545c1542 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libpthread.abilist @@ -0,0 +1,228 @@ +GLIBC_2.11 GLIBC_2.11 A +GLIBC_2.11 pthread_sigqueue F +GLIBC_2.12 GLIBC_2.12 A +GLIBC_2.12 pthread_getname_np F +GLIBC_2.12 pthread_mutex_consistent F +GLIBC_2.12 pthread_mutexattr_getrobust F +GLIBC_2.12 pthread_mutexattr_setrobust F +GLIBC_2.12 pthread_setname_np F +GLIBC_2.18 GLIBC_2.18 A +GLIBC_2.18 pthread_getattr_default_np F +GLIBC_2.18 pthread_setattr_default_np F +GLIBC_2.4 GLIBC_2.4 A +GLIBC_2.4 _IO_flockfile F +GLIBC_2.4 _IO_ftrylockfile F +GLIBC_2.4 _IO_funlockfile F +GLIBC_2.4 __close F +GLIBC_2.4 __connect F +GLIBC_2.4 __errno_location F +GLIBC_2.4 __fcntl F +GLIBC_2.4 __fork F +GLIBC_2.4 __h_errno_location F +GLIBC_2.4 __libc_allocate_rtsig F +GLIBC_2.4 __libc_current_sigrtmax F +GLIBC_2.4 __libc_current_sigrtmin F +GLIBC_2.4 __lseek F +GLIBC_2.4 __nanosleep F +GLIBC_2.4 __open F +GLIBC_2.4 __open64 F +GLIBC_2.4 __pread64 F +GLIBC_2.4 __pthread_cleanup_routine F +GLIBC_2.4 __pthread_getspecific F +GLIBC_2.4 __pthread_key_create F +GLIBC_2.4 __pthread_mutex_destroy F +GLIBC_2.4 __pthread_mutex_init F +GLIBC_2.4 __pthread_mutex_lock F +GLIBC_2.4 __pthread_mutex_trylock F +GLIBC_2.4 __pthread_mutex_unlock F +GLIBC_2.4 __pthread_mutexattr_destroy F +GLIBC_2.4 __pthread_mutexattr_init F +GLIBC_2.4 __pthread_mutexattr_settype F +GLIBC_2.4 __pthread_once F +GLIBC_2.4 __pthread_register_cancel F +GLIBC_2.4 __pthread_register_cancel_defer F +GLIBC_2.4 __pthread_rwlock_destroy F +GLIBC_2.4 __pthread_rwlock_init F +GLIBC_2.4 __pthread_rwlock_rdlock F +GLIBC_2.4 __pthread_rwlock_tryrdlock F +GLIBC_2.4 __pthread_rwlock_trywrlock F +GLIBC_2.4 __pthread_rwlock_unlock F +GLIBC_2.4 __pthread_rwlock_wrlock F +GLIBC_2.4 __pthread_setspecific F +GLIBC_2.4 __pthread_unregister_cancel F +GLIBC_2.4 __pthread_unregister_cancel_restore F +GLIBC_2.4 __pthread_unwind_next F +GLIBC_2.4 __pwrite64 F +GLIBC_2.4 __read F +GLIBC_2.4 __res_state F +GLIBC_2.4 __send F +GLIBC_2.4 __sigaction F +GLIBC_2.4 __vfork F +GLIBC_2.4 __wait F +GLIBC_2.4 __write F +GLIBC_2.4 _pthread_cleanup_pop F +GLIBC_2.4 _pthread_cleanup_pop_restore F +GLIBC_2.4 _pthread_cleanup_push F +GLIBC_2.4 _pthread_cleanup_push_defer F +GLIBC_2.4 accept F +GLIBC_2.4 close F +GLIBC_2.4 connect F +GLIBC_2.4 fcntl F +GLIBC_2.4 flockfile F +GLIBC_2.4 fork F +GLIBC_2.4 fsync F +GLIBC_2.4 ftrylockfile F +GLIBC_2.4 funlockfile F +GLIBC_2.4 longjmp F +GLIBC_2.4 lseek F +GLIBC_2.4 lseek64 F +GLIBC_2.4 msync F +GLIBC_2.4 nanosleep F +GLIBC_2.4 open F +GLIBC_2.4 open64 F +GLIBC_2.4 pause F +GLIBC_2.4 pread F +GLIBC_2.4 pread64 F +GLIBC_2.4 pthread_attr_destroy F +GLIBC_2.4 pthread_attr_getaffinity_np F +GLIBC_2.4 pthread_attr_getdetachstate F +GLIBC_2.4 pthread_attr_getguardsize F +GLIBC_2.4 pthread_attr_getinheritsched F +GLIBC_2.4 pthread_attr_getschedparam F +GLIBC_2.4 pthread_attr_getschedpolicy F +GLIBC_2.4 pthread_attr_getscope F +GLIBC_2.4 pthread_attr_getstack F +GLIBC_2.4 pthread_attr_getstackaddr F +GLIBC_2.4 pthread_attr_getstacksize F +GLIBC_2.4 pthread_attr_init F +GLIBC_2.4 pthread_attr_setaffinity_np F +GLIBC_2.4 pthread_attr_setdetachstate F +GLIBC_2.4 pthread_attr_setguardsize F +GLIBC_2.4 pthread_attr_setinheritsched F +GLIBC_2.4 pthread_attr_setschedparam F +GLIBC_2.4 pthread_attr_setschedpolicy F +GLIBC_2.4 pthread_attr_setscope F +GLIBC_2.4 pthread_attr_setstack F +GLIBC_2.4 pthread_attr_setstackaddr F +GLIBC_2.4 pthread_attr_setstacksize F +GLIBC_2.4 pthread_barrier_destroy F +GLIBC_2.4 pthread_barrier_init F +GLIBC_2.4 pthread_barrier_wait F +GLIBC_2.4 pthread_barrierattr_destroy F +GLIBC_2.4 pthread_barrierattr_getpshared F +GLIBC_2.4 pthread_barrierattr_init F +GLIBC_2.4 pthread_barrierattr_setpshared F +GLIBC_2.4 pthread_cancel F +GLIBC_2.4 pthread_cond_broadcast F +GLIBC_2.4 pthread_cond_destroy F +GLIBC_2.4 pthread_cond_init F +GLIBC_2.4 pthread_cond_signal F +GLIBC_2.4 pthread_cond_timedwait F +GLIBC_2.4 pthread_cond_wait F +GLIBC_2.4 pthread_condattr_destroy F +GLIBC_2.4 pthread_condattr_getclock F +GLIBC_2.4 pthread_condattr_getpshared F +GLIBC_2.4 pthread_condattr_init F +GLIBC_2.4 pthread_condattr_setclock F +GLIBC_2.4 pthread_condattr_setpshared F +GLIBC_2.4 pthread_create F +GLIBC_2.4 pthread_detach F +GLIBC_2.4 pthread_equal F +GLIBC_2.4 pthread_exit F +GLIBC_2.4 pthread_getaffinity_np F +GLIBC_2.4 pthread_getattr_np F +GLIBC_2.4 pthread_getconcurrency F +GLIBC_2.4 pthread_getcpuclockid F +GLIBC_2.4 pthread_getschedparam F +GLIBC_2.4 pthread_getspecific F +GLIBC_2.4 pthread_join F +GLIBC_2.4 pthread_key_create F +GLIBC_2.4 pthread_key_delete F +GLIBC_2.4 pthread_kill F +GLIBC_2.4 pthread_kill_other_threads_np F +GLIBC_2.4 pthread_mutex_consistent_np F +GLIBC_2.4 pthread_mutex_destroy F +GLIBC_2.4 pthread_mutex_getprioceiling F +GLIBC_2.4 pthread_mutex_init F +GLIBC_2.4 pthread_mutex_lock F +GLIBC_2.4 pthread_mutex_setprioceiling F +GLIBC_2.4 pthread_mutex_timedlock F +GLIBC_2.4 pthread_mutex_trylock F +GLIBC_2.4 pthread_mutex_unlock F +GLIBC_2.4 pthread_mutexattr_destroy F +GLIBC_2.4 pthread_mutexattr_getkind_np F +GLIBC_2.4 pthread_mutexattr_getprioceiling F +GLIBC_2.4 pthread_mutexattr_getprotocol F +GLIBC_2.4 pthread_mutexattr_getpshared F +GLIBC_2.4 pthread_mutexattr_getrobust_np F +GLIBC_2.4 pthread_mutexattr_gettype F +GLIBC_2.4 pthread_mutexattr_init F +GLIBC_2.4 pthread_mutexattr_setkind_np F +GLIBC_2.4 pthread_mutexattr_setprioceiling F +GLIBC_2.4 pthread_mutexattr_setprotocol F +GLIBC_2.4 pthread_mutexattr_setpshared F +GLIBC_2.4 pthread_mutexattr_setrobust_np F +GLIBC_2.4 pthread_mutexattr_settype F +GLIBC_2.4 pthread_once F +GLIBC_2.4 pthread_rwlock_destroy F +GLIBC_2.4 pthread_rwlock_init F +GLIBC_2.4 pthread_rwlock_rdlock F +GLIBC_2.4 pthread_rwlock_timedrdlock F +GLIBC_2.4 pthread_rwlock_timedwrlock F +GLIBC_2.4 pthread_rwlock_tryrdlock F +GLIBC_2.4 pthread_rwlock_trywrlock F +GLIBC_2.4 pthread_rwlock_unlock F +GLIBC_2.4 pthread_rwlock_wrlock F +GLIBC_2.4 pthread_rwlockattr_destroy F +GLIBC_2.4 pthread_rwlockattr_getkind_np F +GLIBC_2.4 pthread_rwlockattr_getpshared F +GLIBC_2.4 pthread_rwlockattr_init F +GLIBC_2.4 pthread_rwlockattr_setkind_np F +GLIBC_2.4 pthread_rwlockattr_setpshared F +GLIBC_2.4 pthread_self F +GLIBC_2.4 pthread_setaffinity_np F +GLIBC_2.4 pthread_setcancelstate F +GLIBC_2.4 pthread_setcanceltype F +GLIBC_2.4 pthread_setconcurrency F +GLIBC_2.4 pthread_setschedparam F +GLIBC_2.4 pthread_setschedprio F +GLIBC_2.4 pthread_setspecific F +GLIBC_2.4 pthread_sigmask F +GLIBC_2.4 pthread_spin_destroy F +GLIBC_2.4 pthread_spin_init F +GLIBC_2.4 pthread_spin_lock F +GLIBC_2.4 pthread_spin_trylock F +GLIBC_2.4 pthread_spin_unlock F +GLIBC_2.4 pthread_testcancel F +GLIBC_2.4 pthread_timedjoin_np F +GLIBC_2.4 pthread_tryjoin_np F +GLIBC_2.4 pthread_yield F +GLIBC_2.4 pwrite F +GLIBC_2.4 pwrite64 F +GLIBC_2.4 raise F +GLIBC_2.4 read F +GLIBC_2.4 recv F +GLIBC_2.4 recvfrom F +GLIBC_2.4 recvmsg F +GLIBC_2.4 sem_close F +GLIBC_2.4 sem_destroy F +GLIBC_2.4 sem_getvalue F +GLIBC_2.4 sem_init F +GLIBC_2.4 sem_open F +GLIBC_2.4 sem_post F +GLIBC_2.4 sem_timedwait F +GLIBC_2.4 sem_trywait F +GLIBC_2.4 sem_unlink F +GLIBC_2.4 sem_wait F +GLIBC_2.4 send F +GLIBC_2.4 sendmsg F +GLIBC_2.4 sendto F +GLIBC_2.4 sigaction F +GLIBC_2.4 siglongjmp F +GLIBC_2.4 sigwait F +GLIBC_2.4 system F +GLIBC_2.4 tcdrain F +GLIBC_2.4 vfork F +GLIBC_2.4 wait F +GLIBC_2.4 waitpid F +GLIBC_2.4 write F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/libresolv.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libresolv.abilist new file mode 100644 index 0000000000..c7023be532 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libresolv.abilist @@ -0,0 +1,93 @@ +GLIBC_2.4 GLIBC_2.4 A +GLIBC_2.4 __b64_ntop F +GLIBC_2.4 __b64_pton F +GLIBC_2.4 __dn_comp F +GLIBC_2.4 __dn_count_labels F +GLIBC_2.4 __dn_expand F +GLIBC_2.4 __dn_skipname F +GLIBC_2.4 __fp_nquery F +GLIBC_2.4 __fp_query F +GLIBC_2.4 __fp_resstat F +GLIBC_2.4 __hostalias F +GLIBC_2.4 __loc_aton F +GLIBC_2.4 __loc_ntoa F +GLIBC_2.4 __p_cdname F +GLIBC_2.4 __p_cdnname F +GLIBC_2.4 __p_class F +GLIBC_2.4 __p_class_syms D 0x54 +GLIBC_2.4 __p_fqname F +GLIBC_2.4 __p_fqnname F +GLIBC_2.4 __p_option F +GLIBC_2.4 __p_query F +GLIBC_2.4 __p_rcode F +GLIBC_2.4 __p_secstodate F +GLIBC_2.4 __p_time F +GLIBC_2.4 __p_type F +GLIBC_2.4 __p_type_syms D 0x228 +GLIBC_2.4 __putlong F +GLIBC_2.4 __putshort F +GLIBC_2.4 __res_close F +GLIBC_2.4 __res_dnok F +GLIBC_2.4 __res_hnok F +GLIBC_2.4 __res_hostalias F +GLIBC_2.4 __res_isourserver F +GLIBC_2.4 __res_mailok F +GLIBC_2.4 __res_mkquery F +GLIBC_2.4 __res_nameinquery F +GLIBC_2.4 __res_nmkquery F +GLIBC_2.4 __res_nquery F +GLIBC_2.4 __res_nquerydomain F +GLIBC_2.4 __res_nsearch F +GLIBC_2.4 __res_nsend F +GLIBC_2.4 __res_ownok F +GLIBC_2.4 __res_queriesmatch F +GLIBC_2.4 __res_query F +GLIBC_2.4 __res_querydomain F +GLIBC_2.4 __res_search F +GLIBC_2.4 __res_send F +GLIBC_2.4 __sym_ntop F +GLIBC_2.4 __sym_ntos F +GLIBC_2.4 __sym_ston F +GLIBC_2.4 _gethtbyaddr F +GLIBC_2.4 _gethtbyname F +GLIBC_2.4 _gethtbyname2 F +GLIBC_2.4 _gethtent F +GLIBC_2.4 _getlong F +GLIBC_2.4 _getshort F +GLIBC_2.4 _res_opcodes D 0x40 +GLIBC_2.4 _sethtent F +GLIBC_2.4 inet_net_ntop F +GLIBC_2.4 inet_net_pton F +GLIBC_2.4 inet_neta F +GLIBC_2.4 res_gethostbyaddr F +GLIBC_2.4 res_gethostbyname F +GLIBC_2.4 res_gethostbyname2 F +GLIBC_2.4 res_send_setqhook F +GLIBC_2.4 res_send_setrhook F +GLIBC_2.9 GLIBC_2.9 A +GLIBC_2.9 ns_datetosecs F +GLIBC_2.9 ns_format_ttl F +GLIBC_2.9 ns_get16 F +GLIBC_2.9 ns_get32 F +GLIBC_2.9 ns_initparse F +GLIBC_2.9 ns_makecanon F +GLIBC_2.9 ns_msg_getflag F +GLIBC_2.9 ns_name_compress F +GLIBC_2.9 ns_name_ntol F +GLIBC_2.9 ns_name_ntop F +GLIBC_2.9 ns_name_pack F +GLIBC_2.9 ns_name_pton F +GLIBC_2.9 ns_name_rollback F +GLIBC_2.9 ns_name_skip F +GLIBC_2.9 ns_name_uncompress F +GLIBC_2.9 ns_name_unpack F +GLIBC_2.9 ns_parse_ttl F +GLIBC_2.9 ns_parserr F +GLIBC_2.9 ns_put16 F +GLIBC_2.9 ns_put32 F +GLIBC_2.9 ns_samedomain F +GLIBC_2.9 ns_samename F +GLIBC_2.9 ns_skiprr F +GLIBC_2.9 ns_sprintrr F +GLIBC_2.9 ns_sprintrrf F +GLIBC_2.9 ns_subdomain F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/librt.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/arm/librt.abilist new file mode 100644 index 0000000000..b47aa0cc9c --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/librt.abilist @@ -0,0 +1,42 @@ +GLIBC_2.4 GLIBC_2.4 A +GLIBC_2.4 aio_cancel F +GLIBC_2.4 aio_cancel64 F +GLIBC_2.4 aio_error F +GLIBC_2.4 aio_error64 F +GLIBC_2.4 aio_fsync F +GLIBC_2.4 aio_fsync64 F +GLIBC_2.4 aio_init F +GLIBC_2.4 aio_read F +GLIBC_2.4 aio_read64 F +GLIBC_2.4 aio_return F +GLIBC_2.4 aio_return64 F +GLIBC_2.4 aio_suspend F +GLIBC_2.4 aio_suspend64 F +GLIBC_2.4 aio_write F +GLIBC_2.4 aio_write64 F +GLIBC_2.4 clock_getcpuclockid F +GLIBC_2.4 clock_getres F +GLIBC_2.4 clock_gettime F +GLIBC_2.4 clock_nanosleep F +GLIBC_2.4 clock_settime F +GLIBC_2.4 lio_listio F +GLIBC_2.4 lio_listio64 F +GLIBC_2.4 mq_close F +GLIBC_2.4 mq_getattr F +GLIBC_2.4 mq_notify F +GLIBC_2.4 mq_open F +GLIBC_2.4 mq_receive F +GLIBC_2.4 mq_send F +GLIBC_2.4 mq_setattr F +GLIBC_2.4 mq_timedreceive F +GLIBC_2.4 mq_timedsend F +GLIBC_2.4 mq_unlink F +GLIBC_2.4 shm_open F +GLIBC_2.4 shm_unlink F +GLIBC_2.4 timer_create F +GLIBC_2.4 timer_delete F +GLIBC_2.4 timer_getoverrun F +GLIBC_2.4 timer_gettime F +GLIBC_2.4 timer_settime F +GLIBC_2.7 GLIBC_2.7 A +GLIBC_2.7 __mq_open_2 F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/libthread_db.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libthread_db.abilist new file mode 100644 index 0000000000..4cffcd2238 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libthread_db.abilist @@ -0,0 +1,41 @@ +GLIBC_2.4 GLIBC_2.4 A +GLIBC_2.4 td_init F +GLIBC_2.4 td_log F +GLIBC_2.4 td_symbol_list F +GLIBC_2.4 td_ta_clear_event F +GLIBC_2.4 td_ta_delete F +GLIBC_2.4 td_ta_enable_stats F +GLIBC_2.4 td_ta_event_addr F +GLIBC_2.4 td_ta_event_getmsg F +GLIBC_2.4 td_ta_get_nthreads F +GLIBC_2.4 td_ta_get_ph F +GLIBC_2.4 td_ta_get_stats F +GLIBC_2.4 td_ta_map_id2thr F +GLIBC_2.4 td_ta_map_lwp2thr F +GLIBC_2.4 td_ta_new F +GLIBC_2.4 td_ta_reset_stats F +GLIBC_2.4 td_ta_set_event F +GLIBC_2.4 td_ta_setconcurrency F +GLIBC_2.4 td_ta_thr_iter F +GLIBC_2.4 td_ta_tsd_iter F +GLIBC_2.4 td_thr_clear_event F +GLIBC_2.4 td_thr_dbresume F +GLIBC_2.4 td_thr_dbsuspend F +GLIBC_2.4 td_thr_event_enable F +GLIBC_2.4 td_thr_event_getmsg F +GLIBC_2.4 td_thr_get_info F +GLIBC_2.4 td_thr_getfpregs F +GLIBC_2.4 td_thr_getgregs F +GLIBC_2.4 td_thr_getxregs F +GLIBC_2.4 td_thr_getxregsize F +GLIBC_2.4 td_thr_set_event F +GLIBC_2.4 td_thr_setfpregs F +GLIBC_2.4 td_thr_setgregs F +GLIBC_2.4 td_thr_setprio F +GLIBC_2.4 td_thr_setsigpending F +GLIBC_2.4 td_thr_setxregs F +GLIBC_2.4 td_thr_sigsetmask F +GLIBC_2.4 td_thr_tls_get_addr F +GLIBC_2.4 td_thr_tlsbase F +GLIBC_2.4 td_thr_tsd F +GLIBC_2.4 td_thr_validate F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/libutil.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libutil.abilist new file mode 100644 index 0000000000..0b4f746094 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/libutil.abilist @@ -0,0 +1,7 @@ +GLIBC_2.4 GLIBC_2.4 A +GLIBC_2.4 forkpty F +GLIBC_2.4 login F +GLIBC_2.4 login_tty F +GLIBC_2.4 logout F +GLIBC_2.4 logwtmp F +GLIBC_2.4 openpty F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/localplt.data b/REORG.TODO/sysdeps/unix/sysv/linux/arm/localplt.data new file mode 100644 index 0000000000..19d3299d98 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/localplt.data @@ -0,0 +1,19 @@ +libc.so: calloc +libc.so: free +libc.so: malloc +libc.so: memalign +libc.so: raise +libc.so: realloc +libm.so: matherr +libpthread.so: raise +# The dynamic loader needs __tls_get_addr for TLS. +ld.so: __tls_get_addr +# The main malloc is interposed into the dynamic linker, for +# allocations after the initial link (when dlopen is used). +ld.so: malloc +ld.so: calloc +ld.so: realloc +ld.so: free +# The TLS-enabled version of these functions is interposed from libc.so. +ld.so: _dl_signal_error +ld.so: _dl_catch_error diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/lockf64.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/lockf64.c new file mode 100644 index 0000000000..a88f5a784a --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/lockf64.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/i386/lockf64.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/lxstat.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/lxstat.c new file mode 100644 index 0000000000..0efa0aea49 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/lxstat.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/i386/lxstat.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/makecontext.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/makecontext.c new file mode 100644 index 0000000000..2ccd563869 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/makecontext.c @@ -0,0 +1,73 @@ +/* Copyright (C) 2012-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <stdarg.h> +#include <ucontext.h> + +/* Number of arguments that go in registers. */ +#define NREG_ARGS 4 + +/* Take a context previously prepared via getcontext() and set to + call func() with the given int only args. */ +void +__makecontext (ucontext_t *ucp, void (*func) (void), int argc, ...) +{ + extern void __startcontext (void); + unsigned long *funcstack; + va_list vl; + unsigned long *regptr; + unsigned int reg; + int misaligned; + + /* Start at the top of stack. */ + funcstack = (unsigned long *) (ucp->uc_stack.ss_sp + ucp->uc_stack.ss_size); + + /* Ensure the stack stays eight byte aligned. */ + misaligned = ((unsigned long) funcstack & 4) != 0; + + if ((argc > NREG_ARGS) && (argc & 1) != 0) + misaligned = !misaligned; + + if (misaligned) + funcstack -= 1; + + va_start (vl, argc); + + /* Reserve space for the on-stack arguments. */ + if (argc > NREG_ARGS) + funcstack -= (argc - NREG_ARGS); + + ucp->uc_mcontext.arm_sp = (unsigned long) funcstack; + ucp->uc_mcontext.arm_pc = (unsigned long) func; + + /* Exit to startcontext() with the next context in R4 */ + ucp->uc_mcontext.arm_r4 = (unsigned long) ucp->uc_link; + ucp->uc_mcontext.arm_lr = (unsigned long) __startcontext; + + /* The first four arguments go into registers. */ + regptr = &(ucp->uc_mcontext.arm_r0); + + for (reg = 0; (reg < argc) && (reg < NREG_ARGS); reg++) + *regptr++ = va_arg (vl, unsigned long); + + /* And the remainder on the stack. */ + for (; reg < argc; reg++) + *funcstack++ = va_arg (vl, unsigned long); + + va_end (vl); +} +weak_alias (__makecontext, makecontext) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/profil-counter.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/profil-counter.h new file mode 100644 index 0000000000..20346704b3 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/profil-counter.h @@ -0,0 +1,34 @@ +/* Low-level statistical profiling support function. Linux/ARM version. + Copyright (C) 1996-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <signal.h> +#include <sigcontextinfo.h> + +void +__profil_counter (int signo, const SIGCONTEXT scp) +{ + profil_count ((void *) GET_PC (scp)); + + /* This is a hack to prevent the compiler from implementing the + above function call as a sibcall. The sibcall would overwrite + the signal context. */ + asm volatile (""); +} +#ifndef __profil_counter +weak_alias (__profil_counter, profil_counter) +#endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/readahead.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/readahead.c new file mode 100644 index 0000000000..fa0279ed19 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/readahead.c @@ -0,0 +1,37 @@ +/* Provide kernel hint to read ahead. + Copyright (C) 2002-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#include <errno.h> +#include <fcntl.h> +#include <sys/types.h> +#include <endian.h> + +#include <sysdep.h> +#include <sys/syscall.h> + + +ssize_t +__readahead (int fd, off64_t offset, size_t count) +{ + return INLINE_SYSCALL (readahead, 5, fd, 0, + __LONG_LONG_PAIR ((off_t) (offset >> 32), + (off_t) (offset & 0xffffffff)), + count); +} + +weak_alias (__readahead, readahead) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/readdir64.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/readdir64.c new file mode 100644 index 0000000000..2ea26dd409 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/readdir64.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/i386/readdir64.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/readdir64_r.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/readdir64_r.c new file mode 100644 index 0000000000..9f54f897e3 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/readdir64_r.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/i386/readdir64_r.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/readelflib.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/readelflib.c new file mode 100644 index 0000000000..65273bcf77 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/readelflib.c @@ -0,0 +1,79 @@ +/* Copyright (C) 1999-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Andreas Jaeger <aj@suse.de>, 1999 and + Jakub Jelinek <jakub@redhat.com>, 1999. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + + +int process_elf32_file (const char *file_name, const char *lib, int *flag, + unsigned int *osversion, char **soname, + void *file_contents, size_t file_length); +int process_elf64_file (const char *file_name, const char *lib, int *flag, + unsigned int *osversion, char **soname, + void *file_contents, size_t file_length); + +/* Returns 0 if everything is ok, != 0 in case of error. */ +int +process_elf_file (const char *file_name, const char *lib, int *flag, + unsigned int *osversion, char **soname, void *file_contents, + size_t file_length) +{ + ElfW(Ehdr) *elf_header = (ElfW(Ehdr) *) file_contents; + int ret; + + if (elf_header->e_ident [EI_CLASS] == ELFCLASS32) + { + Elf32_Ehdr *elf32_header = (Elf32_Ehdr *) elf_header; + + ret = process_elf32_file (file_name, lib, flag, osversion, soname, + file_contents, file_length); + + if (!ret && EF_ARM_EABI_VERSION (elf32_header->e_flags) == EF_ARM_EABI_VER5) + { + if (elf32_header->e_flags & EF_ARM_ABI_FLOAT_HARD) + *flag = FLAG_ARM_LIBHF|FLAG_ELF_LIBC6; + else if (elf32_header->e_flags & EF_ARM_ABI_FLOAT_SOFT) + *flag = FLAG_ARM_LIBSF|FLAG_ELF_LIBC6; + else + /* We must assume the unmarked objects are compatible + with all ABI variants. Such objects may have been + generated in a transitional period when the ABI + tags were not added to all objects. */ + *flag = FLAG_ELF_LIBC6; + } + } + else + { + ret = process_elf64_file (file_name, lib, flag, osversion, soname, + file_contents, file_length); + /* AArch64 libraries are always libc.so.6+. */ + if (!ret) + *flag = FLAG_AARCH64_LIB64|FLAG_ELF_LIBC6; + } + return ret; +} + +#undef __ELF_NATIVE_CLASS +#undef process_elf_file +#define process_elf_file process_elf32_file +#define __ELF_NATIVE_CLASS 32 +#include "elf/readelflib.c" + +#undef __ELF_NATIVE_CLASS +#undef process_elf_file +#define process_elf_file process_elf64_file +#define __ELF_NATIVE_CLASS 64 +#include "elf/readelflib.c" diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/register-dump.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/register-dump.h new file mode 100644 index 0000000000..0f2bed7d1d --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/register-dump.h @@ -0,0 +1,136 @@ +/* Dump registers. + Copyright (C) 1998-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Philip Blundell <pb@nexus.co.uk>, 1998. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#include <sys/uio.h> +#include <_itoa.h> +#include <sys/ucontext.h> + +/* We will print the register dump in this format: + + R0: XXXXXXXX R1: XXXXXXXX R2: XXXXXXXX R3: XXXXXXXX + R4: XXXXXXXX R5: XXXXXXXX R6: XXXXXXXX R7: XXXXXXXX + R8: XXXXXXXX R9: XXXXXXXX SL: XXXXXXXX FP: XXXXXXXX + IP: XXXXXXXX SP: XXXXXXXX LR: XXXXXXXX PC: XXXXXXXX + + CPSR: XXXXXXXX + + Trap: XXXXXXXX Error: XXXXXXXX OldMask: XXXXXXXX + Addr: XXXXXXXX + + */ + +static void +hexvalue (unsigned long int value, char *buf, size_t len) +{ + char *cp = _itoa_word (value, buf + len, 16, 0); + while (cp > buf) + *--cp = '0'; +} + +static void +register_dump (int fd, const struct ucontext *ctx) +{ + char regs[21][8]; + struct iovec iov[97]; + size_t nr = 0; + +#define ADD_STRING(str) \ + iov[nr].iov_base = (char *) str; \ + iov[nr].iov_len = strlen (str); \ + ++nr +#define ADD_MEM(str, len) \ + iov[nr].iov_base = str; \ + iov[nr].iov_len = len; \ + ++nr + + /* Generate strings of register contents. */ + hexvalue (ctx->uc_mcontext.arm_r0, regs[0], 8); + hexvalue (ctx->uc_mcontext.arm_r1, regs[1], 8); + hexvalue (ctx->uc_mcontext.arm_r2, regs[2], 8); + hexvalue (ctx->uc_mcontext.arm_r3, regs[3], 8); + hexvalue (ctx->uc_mcontext.arm_r4, regs[4], 8); + hexvalue (ctx->uc_mcontext.arm_r5, regs[5], 8); + hexvalue (ctx->uc_mcontext.arm_r6, regs[6], 8); + hexvalue (ctx->uc_mcontext.arm_r7, regs[7], 8); + hexvalue (ctx->uc_mcontext.arm_r8, regs[8], 8); + hexvalue (ctx->uc_mcontext.arm_r9, regs[9], 8); + hexvalue (ctx->uc_mcontext.arm_r10, regs[10], 8); + hexvalue (ctx->uc_mcontext.arm_fp, regs[11], 8); + hexvalue (ctx->uc_mcontext.arm_ip, regs[12], 8); + hexvalue (ctx->uc_mcontext.arm_sp, regs[13], 8); + hexvalue (ctx->uc_mcontext.arm_lr, regs[14], 8); + hexvalue (ctx->uc_mcontext.arm_pc, regs[15], 8); + hexvalue (ctx->uc_mcontext.arm_cpsr, regs[16], 8); + hexvalue (ctx->uc_mcontext.trap_no, regs[17], 8); + hexvalue (ctx->uc_mcontext.error_code, regs[18], 8); + hexvalue (ctx->uc_mcontext.oldmask, regs[19], 8); + hexvalue (ctx->uc_mcontext.fault_address, regs[20], 8); + + /* Generate the output. */ + ADD_STRING ("Register dump:\n\n R0: "); + ADD_MEM (regs[0], 8); + ADD_STRING (" R1: "); + ADD_MEM (regs[1], 8); + ADD_STRING (" R2: "); + ADD_MEM (regs[2], 8); + ADD_STRING (" R3: "); + ADD_MEM (regs[3], 8); + ADD_STRING ("\n R4: "); + ADD_MEM (regs[4], 8); + ADD_STRING (" R5: "); + ADD_MEM (regs[5], 8); + ADD_STRING (" R6: "); + ADD_MEM (regs[6], 8); + ADD_STRING (" R7: "); + ADD_MEM (regs[7], 8); + ADD_STRING ("\n R8: "); + ADD_MEM (regs[8], 8); + ADD_STRING (" R9: "); + ADD_MEM (regs[9], 8); + ADD_STRING (" SL: "); + ADD_MEM (regs[10], 8); + ADD_STRING (" FP: "); + ADD_MEM (regs[11], 8); + ADD_STRING ("\n IP: "); + ADD_MEM (regs[12], 8); + ADD_STRING (" SP: "); + ADD_MEM (regs[13], 8); + ADD_STRING (" LR: "); + ADD_MEM (regs[14], 8); + ADD_STRING (" PC: "); + ADD_MEM (regs[15], 8); + ADD_STRING ("\n\n CPSR: "); + ADD_MEM (regs[16], 8); + ADD_STRING ("\n\n Trap: "); + ADD_MEM (regs[17], 8); + ADD_STRING (" Error: "); + ADD_MEM (regs[18], 8); + ADD_STRING (" OldMask: "); + ADD_MEM (regs[19], 8); + ADD_STRING ("\n Addr: "); + ADD_MEM (regs[20], 8); + + ADD_STRING ("\n"); + + /* Write the stuff out. */ + writev (fd, iov, nr); +} + + +#define REGISTER_DUMP register_dump (fd, ctx) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/scandir64.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/scandir64.c new file mode 100644 index 0000000000..506fd8877c --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/scandir64.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/i386/scandir64.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/setcontext.S b/REORG.TODO/sysdeps/unix/sysv/linux/arm/setcontext.S new file mode 100644 index 0000000000..db6aebfbd4 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/setcontext.S @@ -0,0 +1,111 @@ +/* Copyright (C) 2012-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +/* ??? Needs more rearrangement for the LDM to handle thumb mode. */ +#define NO_THUMB +#include <sysdep.h> +#include <rtld-global-offsets.h> + +#include "ucontext_i.h" + + .syntax unified + .text + +/* int setcontext (const ucontext_t *ucp) */ + +ENTRY(__setcontext) + mov r4, r0 + add r0, r0, #UCONTEXT_REGSPACE + + /* Restore the VFP registers. Copied from arm/__longjmp.S. */ +#ifdef PIC + ldr r2, 1f + ldr r1, .Lrtld_global_ro +0: add r2, pc, r2 + ldr r2, [r2, r1] + ldr r2, [r2, #RTLD_GLOBAL_RO_DL_HWCAP_OFFSET] +#else + ldr r2, .Lhwcap + ldr r2, [r2, #0] +#endif + +#ifdef __SOFTFP__ + tst r2, #HWCAP_ARM_VFP + beq .Lno_vfp_sc +#endif + + /* Following instruction is vldmia r0!, {d8-d15}. */ + ldc p11, cr8, [r0], #64 + /* Restore the floating-point status register. */ + ldr r1, [r0], #4 + /* Following instruction is fmxr fpscr, r1. */ + mcr p10, 7, r1, cr1, cr0, 0 +.Lno_vfp_sc: + tst r2, #HWCAP_ARM_IWMMXT + beq .Lno_iwmmxt_sc + + /* Restore the call-preserved iWMMXt registers. */ + /* Following instructions are wldrd wr10, [r0], #8 (etc.) */ + ldcl p1, cr10, [r0], #8 + ldcl p1, cr11, [r0], #8 + ldcl p1, cr12, [r0], #8 + ldcl p1, cr13, [r0], #8 + ldcl p1, cr14, [r0], #8 + ldcl p1, cr15, [r0], #8 +.Lno_iwmmxt_sc: + + /* Now bring back the signal status. */ + mov r0, #SIG_SETMASK + add r1, r4, #UCONTEXT_SIGMASK + mov r2, #0 + bl PLTJMP(__sigprocmask) + + /* Loading r0-r3 makes makecontext easier. */ + add r14, r4, #MCONTEXT_ARM_R0 + ldmia r14, {r0-r12} + ldr r13, [r14, #(MCONTEXT_ARM_SP - MCONTEXT_ARM_R0)] + add r14, r14, #(MCONTEXT_ARM_LR - MCONTEXT_ARM_R0) + ldmia r14, {r14, pc} + +END(setcontext) +weak_alias(__setcontext, setcontext) + + /* Called when a makecontext() context returns. Start the + context in R4 or fall through to exit(). */ + /* Unwind descriptors are looked up based on PC - 2, so we have to + make sure to mark the instruction preceding the __startcontext + label as .cantunwind. */ + .fnstart + .cantunwind + nop +ENTRY(__startcontext) + movs r0, r4 + bne PLTJMP(__setcontext) + + @ New context was 0 - exit + b PLTJMP(HIDDEN_JUMPTARGET(exit)) + .fnend +END(__startcontext) + +#ifdef PIC +1: .long _GLOBAL_OFFSET_TABLE_ - 0b - PC_OFS +.Lrtld_global_ro: + .long C_SYMBOL_NAME(_rtld_global_ro)(GOT) +#else +.Lhwcap: + .long C_SYMBOL_NAME(_dl_hwcap) +#endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/shlib-versions b/REORG.TODO/sysdeps/unix/sysv/linux/arm/shlib-versions new file mode 100644 index 0000000000..9b169530d4 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/shlib-versions @@ -0,0 +1,9 @@ +DEFAULT GLIBC_2.4 + +%ifdef HAVE_ARM_PCS_VFP +# The EABI-derived hard-float ABI uses a new dynamic linker. +ld=ld-linux-armhf.so.3 +%else +# The EABI-derived soft-float ABI continues to use ld-linux.so.3. +ld=ld-linux.so.3 +%endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/sigaction.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sigaction.c new file mode 100644 index 0000000000..e4c0d976b0 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sigaction.c @@ -0,0 +1,84 @@ +/* Copyright (C) 1997-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#include <errno.h> +#include <signal.h> +#include <string.h> + +#include <sysdep.h> +#include <sys/syscall.h> + +/* The difference here is that the sigaction structure used in the + kernel is not the same as we use in the libc. Therefore we must + translate it here. */ +#include <kernel_sigaction.h> + +#define SA_RESTORER 0x04000000 + +extern void __default_sa_restorer (void); +extern void __default_rt_sa_restorer (void); + +/* When RT signals are in use we need to use a different return stub. */ +#define choose_restorer(flags) \ + (flags & SA_SIGINFO) ? __default_rt_sa_restorer \ + : __default_sa_restorer + +/* If ACT is not NULL, change the action for SIG to *ACT. + If OACT is not NULL, put the old action for SIG in *OACT. */ +int +__libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact) +{ + int result; + + struct kernel_sigaction kact, koact; + + if (act) + { + kact.k_sa_handler = act->sa_handler; + memcpy (&kact.sa_mask, &act->sa_mask, sizeof (sigset_t)); + kact.sa_flags = act->sa_flags; +#ifdef HAVE_SA_RESTORER + if (kact.sa_flags & SA_RESTORER) + kact.sa_restorer = act->sa_restorer; + else + { + kact.sa_restorer = choose_restorer (kact.sa_flags); + kact.sa_flags |= SA_RESTORER; + } +#endif + } + + /* XXX The size argument hopefully will have to be changed to the + real size of the user-level sigset_t. */ + result = INLINE_SYSCALL (rt_sigaction, 4, sig, + act ? &kact : NULL, + oact ? &koact : NULL, _NSIG / 8); + + if (oact && result >= 0) + { + oact->sa_handler = koact.k_sa_handler; + memcpy (&oact->sa_mask, &koact.sa_mask, sizeof (sigset_t)); + oact->sa_flags = koact.sa_flags; +#ifdef HAVE_SA_RESTORER + oact->sa_restorer = koact.sa_restorer; +#endif + } + return result; +} +libc_hidden_def (__libc_sigaction) + +#include <nptl/sigaction.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/sigcontextinfo.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sigcontextinfo.h new file mode 100644 index 0000000000..f2a66d154d --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sigcontextinfo.h @@ -0,0 +1,48 @@ +/* Copyright (C) 1999-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Philip Blundell <philb@gnu.org>, 1999. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#include <sys/ucontext.h> + +#define SIGCONTEXT siginfo_t *_si, struct ucontext * +#define SIGCONTEXT_EXTRA_ARGS _si, + +/* The sigcontext structure changed between 2.0 and 2.1 kernels. On any + modern system we should be able to assume that the "new" format will be + in use. */ + +#define GET_PC(ctx) ((void *) (ctx)->uc_mcontext.arm_pc) +#define GET_FRAME(ctx) ADVANCE_STACK_FRAME ((void *) ctx->uc_mcontext.arm_fp) +#define GET_STACK(ctx) ((void *) (ctx)->uc_mcontext.arm_sp) + +#define ADVANCE_STACK_FRAME(frm) \ + ((struct layout *)frm - 1) + +#define CALL_SIGHANDLER(handler, signo, ctx) \ + (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx)) + +/* There is no reliable way to get the sigcontext unless we use a + three-argument signal handler. */ +#define __sigaction(sig, act, oact) ({ \ + (act)->sa_flags |= SA_SIGINFO; \ + (__sigaction) (sig, act, oact); \ +}) + +#define sigaction(sig, act, oact) ({ \ + (act)->sa_flags |= SA_SIGINFO; \ + (sigaction) (sig, act, oact); \ +}) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/sigrestorer.S b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sigrestorer.S new file mode 100644 index 0000000000..01136bef0e --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sigrestorer.S @@ -0,0 +1,84 @@ +/* Copyright (C) 1999-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> + +/* If no SA_RESTORER function was specified by the application we use + one of these. This avoids the need for the kernel to synthesise a return + instruction on the stack, which would involve expensive cache flushes. + + Nowadays (2.6 series, and somewhat earlier) the kernel uses a high page + for signal trampolines, so the cache flushes are not an issue. But since + we do not have a vDSO, continue to use these so that we can provide + unwind information. + + Start the unwind tables at least one instruction before the signal + trampoline, because the unwinder will assume we are returning after + a call site. */ + +/* Used in ENTRY. */ +#undef cfi_startproc +#define cfi_startproc \ + .cfi_startproc simple; \ + .cfi_signal_frame + +/* The CFA is not computed / used correctly here; this is neither trivial to + do, nor is it needed. */ +#define CFI \ + cfi_def_cfa (sp, 0); \ + cfi_offset (r0, OFFSET + 0 * 4); \ + cfi_offset (r1, OFFSET + 1 * 4); \ + cfi_offset (r2, OFFSET + 2 * 4); \ + cfi_offset (r3, OFFSET + 3 * 4); \ + cfi_offset (r4, OFFSET + 4 * 4); \ + cfi_offset (r5, OFFSET + 5 * 4); \ + cfi_offset (r6, OFFSET + 6 * 4); \ + cfi_offset (r7, OFFSET + 7 * 4); \ + cfi_offset (r8, OFFSET + 8 * 4); \ + cfi_offset (r9, OFFSET + 9 * 4); \ + cfi_offset (r10, OFFSET + 10 * 4); \ + cfi_offset (r11, OFFSET + 11 * 4); \ + cfi_offset (r12, OFFSET + 12 * 4); \ + cfi_offset (r13, OFFSET + 13 * 4); \ + cfi_offset (r14, OFFSET + 14 * 4); \ + cfi_offset (r15, OFFSET + 15 * 4) + +#define OFFSET 32 + .fnstart + .save {r0-r15} + .pad #OFFSET + nop +ENTRY(__default_sa_restorer) + CFI + mov r7, $SYS_ify(sigreturn) + swi 0x0 + .fnend +END(__default_sa_restorer) +#undef OFFSET + +#define OFFSET 160 + .fnstart + .save {r0-r15} + .pad #OFFSET + nop +ENTRY(__default_rt_sa_restorer) + CFI + mov r7, $SYS_ify(rt_sigreturn) + swi 0x0 + .fnend +END(__default_rt_sa_restorer) +#undef OFFSET diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/swapcontext.S b/REORG.TODO/sysdeps/unix/sysv/linux/arm/swapcontext.S new file mode 100644 index 0000000000..555da1fe0a --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/swapcontext.S @@ -0,0 +1,63 @@ +/* Copyright (C) 2012-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> + +#include "ucontext_i.h" + + .syntax unified + .text + +/* int swapcontext (ucontext_t *oucp, const ucontext_t *ucp) */ + +ENTRY(swapcontext) + + /* Have getcontext() do most of the work then fix up + LR afterwards. Save R3 to keep the stack aligned. */ + push {r0,r1,r3,r14} + cfi_adjust_cfa_offset (16) + cfi_rel_offset (r0,0) + cfi_rel_offset (r1,4) + cfi_rel_offset (r3,8) + cfi_rel_offset (r14,12) + + bl __getcontext + mov r4, r0 + + pop {r0,r1,r3,r14} + cfi_adjust_cfa_offset (-16) + cfi_restore (r0) + cfi_restore (r1) + cfi_restore (r3) + cfi_restore (r14) + + /* Exit if getcontext() failed. */ + cmp r4, #0 + itt ne + movne r0, r4 + RETINSTR(ne, r14) + + /* Fix up LR and the PC. */ + str r13,[r0, #MCONTEXT_ARM_SP] + str r14,[r0, #MCONTEXT_ARM_LR] + str r14,[r0, #MCONTEXT_ARM_PC] + + /* And swap using swapcontext(). */ + mov r0, r1 + b __setcontext + +END(swapcontext) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/sys/elf.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sys/elf.h new file mode 100644 index 0000000000..44af8d2b1e --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sys/elf.h @@ -0,0 +1,25 @@ +/* Copyright (C) 1996-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _SYS_ELF_H +#define _SYS_ELF_H 1 + +#warning "This header is obsolete; use <sys/procfs.h> instead." + +#include <sys/procfs.h> + +#endif /* sys/elf.h */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/sys/io.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sys/io.h new file mode 100644 index 0000000000..f4337823ce --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sys/io.h @@ -0,0 +1,47 @@ +/* Copyright (C) 1996-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _SYS_IO_H + +#define _SYS_IO_H 1 +#include <features.h> + +__BEGIN_DECLS + +/* If TURN_ON is TRUE, request for permission to do direct i/o on the + port numbers in the range [FROM,FROM+NUM-1]. Otherwise, turn I/O + permission off for that range. This call requires root privileges. */ +extern int ioperm (unsigned long int __from, unsigned long int __num, + int __turn_on) __THROW; + +/* Set the I/O privilege level to LEVEL. If LEVEL is nonzero, + permission to access any I/O port is granted. This call requires + root privileges. */ +extern int iopl (int __level) __THROW; + +/* The functions that actually perform reads and writes. */ +extern unsigned char inb (unsigned long int __port) __THROW; +extern unsigned short int inw (unsigned long int __port) __THROW; +extern unsigned long int inl (unsigned long int __port) __THROW; + +extern void outb (unsigned char __value, unsigned long int __port) __THROW; +extern void outw (unsigned short __value, unsigned long int __port) __THROW; +extern void outl (unsigned long __value, unsigned long int __port) __THROW; + +__END_DECLS + +#endif /* _SYS_IO_H */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/sys/procfs.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sys/procfs.h new file mode 100644 index 0000000000..1b1b153730 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sys/procfs.h @@ -0,0 +1,122 @@ +/* Copyright (C) 1996-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _SYS_PROCFS_H +#define _SYS_PROCFS_H 1 + +/* This is somewhat modelled after the file of the same name on SVR4 + systems. It provides a definition of the core file format for ELF + used on Linux. It doesn't have anything to do with the /proc file + system, even though Linux has one. + + Anyway, the whole purpose of this file is for GDB and GDB only. + Don't read too much into it. Don't use it for anything other than + GDB unless you know what you are doing. */ + +#include <features.h> +#include <sys/time.h> +#include <sys/types.h> +#include <sys/user.h> + +__BEGIN_DECLS + +/* Type for a general-purpose register. */ +typedef unsigned long elf_greg_t; + +/* And the whole bunch of them. We could have used `struct + user_regs' directly in the typedef, but tradition says that + the register set is an array, which does have some peculiar + semantics, so leave it that way. */ +#define ELF_NGREG (sizeof (struct user_regs) / sizeof(elf_greg_t)) +typedef elf_greg_t elf_gregset_t[ELF_NGREG]; + +/* Register set for the floating-point registers. */ +typedef struct user_fpregs elf_fpregset_t; + +/* Signal info. */ +struct elf_siginfo + { + int si_signo; /* Signal number. */ + int si_code; /* Extra code. */ + int si_errno; /* Errno. */ + }; + +/* Definitions to generate Intel SVR4-like core files. These mostly + have the same names as the SVR4 types with "elf_" tacked on the + front to prevent clashes with Linux definitions, and the typedef + forms have been avoided. This is mostly like the SVR4 structure, + but more Linuxy, with things that Linux does not support and which + GDB doesn't really use excluded. */ + +struct elf_prstatus + { + struct elf_siginfo pr_info; /* Info associated with signal. */ + short int pr_cursig; /* Current signal. */ + unsigned long int pr_sigpend; /* Set of pending signals. */ + unsigned long int pr_sighold; /* Set of held signals. */ + __pid_t pr_pid; + __pid_t pr_ppid; + __pid_t pr_pgrp; + __pid_t pr_sid; + struct timeval pr_utime; /* User time. */ + struct timeval pr_stime; /* System time. */ + struct timeval pr_cutime; /* Cumulative user time. */ + struct timeval pr_cstime; /* Cumulative system time. */ + elf_gregset_t pr_reg; /* GP registers. */ + int pr_fpvalid; /* True if math copro being used. */ + }; + + +#define ELF_PRARGSZ (80) /* Number of chars for args. */ + +struct elf_prpsinfo + { + char pr_state; /* Numeric process state. */ + char pr_sname; /* Char for pr_state. */ + char pr_zomb; /* Zombie. */ + char pr_nice; /* Nice val. */ + unsigned long int pr_flag; /* Flags. */ + unsigned short int pr_uid; + unsigned short int pr_gid; + int pr_pid, pr_ppid, pr_pgrp, pr_sid; + /* Lots missing */ + char pr_fname[16]; /* Filename of executable. */ + char pr_psargs[ELF_PRARGSZ]; /* Initial part of arg list. */ + }; + +/* The rest of this file provides the types for emulation of the + Solaris <proc_service.h> interfaces that should be implemented by + users of libthread_db. */ + +/* Addresses. */ +typedef void *psaddr_t; + +/* Register sets. Linux has different names. */ +typedef elf_gregset_t prgregset_t; +typedef elf_fpregset_t prfpregset_t; + +/* We don't have any differences between processes and threads, + therefore have only one PID type. */ +typedef __pid_t lwpid_t; + +/* Process status and info. In the end we do provide typedefs for them. */ +typedef struct elf_prstatus prstatus_t; +typedef struct elf_prpsinfo prpsinfo_t; + +__END_DECLS + +#endif /* sys/procfs.h */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/sys/ucontext.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sys/ucontext.h new file mode 100644 index 0000000000..0ce9b14ba5 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sys/ucontext.h @@ -0,0 +1,114 @@ +/* Copyright (C) 1998-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +/* System V/ARM ABI compliant context switching support. */ + +#ifndef _SYS_UCONTEXT_H +#define _SYS_UCONTEXT_H 1 + +#include <features.h> + +#include <bits/types/sigset_t.h> +#include <bits/sigcontext.h> +#include <bits/types/stack_t.h> + + +#ifdef __USE_MISC +typedef int greg_t; + +/* Number of general registers. */ +# define NGREG 18 + +/* Container for all general registers. */ +typedef greg_t gregset_t[NGREG]; + +/* Number of each register is the `gregset_t' array. */ +enum +{ + REG_R0 = 0, +# define REG_R0 REG_R0 + REG_R1 = 1, +# define REG_R1 REG_R1 + REG_R2 = 2, +# define REG_R2 REG_R2 + REG_R3 = 3, +# define REG_R3 REG_R3 + REG_R4 = 4, +# define REG_R4 REG_R4 + REG_R5 = 5, +# define REG_R5 REG_R5 + REG_R6 = 6, +# define REG_R6 REG_R6 + REG_R7 = 7, +# define REG_R7 REG_R7 + REG_R8 = 8, +# define REG_R8 REG_R8 + REG_R9 = 9, +# define REG_R9 REG_R9 + REG_R10 = 10, +# define REG_R10 REG_R10 + REG_R11 = 11, +# define REG_R11 REG_R11 + REG_R12 = 12, +# define REG_R12 REG_R12 + REG_R13 = 13, +# define REG_R13 REG_R13 + REG_R14 = 14, +# define REG_R14 REG_R14 + REG_R15 = 15 +# define REG_R15 REG_R15 +}; + +struct _libc_fpstate +{ + struct + { + unsigned int sign1:1; + unsigned int unused:15; + unsigned int sign2:1; + unsigned int exponent:14; + unsigned int j:1; + unsigned int mantissa1:31; + unsigned int mantissa0:32; + } fpregs[8]; + unsigned int fpsr:32; + unsigned int fpcr:32; + unsigned char ftype[8]; + unsigned int init_flag; +}; +/* Structure to describe FPU registers. */ +typedef struct _libc_fpstate fpregset_t; +#endif + +/* Context to describe whole processor state. This only describes + the core registers; coprocessor registers get saved elsewhere + (e.g. in uc_regspace, or somewhere unspecified on the stack + during non-RT signal handlers). */ +typedef struct sigcontext mcontext_t; + +/* Userlevel context. */ +typedef struct ucontext + { + unsigned long uc_flags; + struct ucontext *uc_link; + stack_t uc_stack; + mcontext_t uc_mcontext; + sigset_t uc_sigmask; + unsigned long uc_regspace[128] __attribute__((__aligned__(8))); + } ucontext_t; + +#endif /* sys/ucontext.h */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/sys/user.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sys/user.h new file mode 100644 index 0000000000..46ca428e66 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sys/user.h @@ -0,0 +1,71 @@ +/* Copyright (C) 1998-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _SYS_USER_H +#define _SYS_USER_H 1 + +/* The whole purpose of this file is for GDB and GDB only. Don't read + too much into it. Don't use it for anything other than GDB unless + you know what you are doing. */ + +struct user_fpregs +{ + struct fp_reg + { + unsigned int sign1:1; + unsigned int unused:15; + unsigned int sign2:1; + unsigned int exponent:14; + unsigned int j:1; + unsigned int mantissa1:31; + unsigned int mantissa0:32; + } fpregs[8]; + unsigned int fpsr:32; + unsigned int fpcr:32; + unsigned char ftype[8]; + unsigned int init_flag; +}; + +struct user_regs +{ + unsigned long int uregs[18]; +}; + +struct user +{ + struct user_regs regs; /* General registers */ + int u_fpvalid; /* True if math co-processor being used. */ + + unsigned long int u_tsize; /* Text segment size (pages). */ + unsigned long int u_dsize; /* Data segment size (pages). */ + unsigned long int u_ssize; /* Stack segment size (pages). */ + + unsigned long start_code; /* Starting virtual address of text. */ + unsigned long start_stack; /* Starting virtual address of stack. */ + + long int signal; /* Signal that caused the core dump. */ + int reserved; /* No longer used */ + struct user_regs *u_ar0; /* help gdb to find the general registers. */ + + unsigned long magic; /* uniquely identify a core file */ + char u_comm[32]; /* User command that was responsible */ + int u_debugreg[8]; + struct user_fpregs u_fp; /* Floating point registers */ + struct user_fpregs *u_fp0; /* help gdb to find the FP registers. */ +}; + +#endif /* sys/user.h */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/syscall.S b/REORG.TODO/sysdeps/unix/sysv/linux/arm/syscall.S new file mode 100644 index 0000000000..c9528fff40 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/syscall.S @@ -0,0 +1,48 @@ +/* Copyright (C) 2005-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> + +/* In the EABI syscall interface, we don't need a special syscall to + implement syscall(). It won't work reliably with 64-bit arguments + (but that is true on many modern platforms). */ + +ENTRY (syscall) + mov ip, sp + push {r4, r5, r6, r7} + cfi_adjust_cfa_offset (16) + cfi_rel_offset (r4, 0) + cfi_rel_offset (r5, 4) + cfi_rel_offset (r6, 8) + cfi_rel_offset (r7, 12) + mov r7, r0 + mov r0, r1 + mov r1, r2 + mov r2, r3 + ldmfd ip, {r3, r4, r5, r6} + swi 0x0 + pop {r4, r5, r6, r7} + cfi_adjust_cfa_offset (-16) + cfi_restore (r4) + cfi_restore (r5) + cfi_restore (r6) + cfi_restore (r7) + cmn r0, #4096 + it cc + RETINSTR(cc, lr) + b PLTJMP(syscall_error) +PSEUDO_END (syscall) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/syscalls.list b/REORG.TODO/sysdeps/unix/sysv/linux/arm/syscalls.list new file mode 100644 index 0000000000..13441f7eb4 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/syscalls.list @@ -0,0 +1,33 @@ +# File name Caller Syscall name # args Strong name Weak names + +chown - chown32 i:sii __chown chown +lchown - lchown32 i:sii __lchown lchown +fchown - fchown32 i:iii __fchown fchown + +getegid - getegid32 Ei: __getegid getegid +geteuid - geteuid32 Ei: __geteuid geteuid +getgid - getgid32 Ei: __getgid getgid +getuid - getuid32 Ei: __getuid getuid +getresgid - getresgid32 i:ppp __getresgid getresgid +getresuid - getresuid32 i:ppp __getresuid getresuid +getgroups - getgroups32 i:ip __getgroups getgroups + +setfsgid - setfsgid32 Ei:i setfsgid +setfsuid - setfsuid32 Ei:i setfsuid + +prlimit64 EXTRA prlimit64 i:iipp prlimit64 + +fanotify_mark EXTRA fanotify_mark i:iiiiis fanotify_mark + +personality EXTRA personality Ei:i __personality personality + +# proper socket implementations: +bind - bind i:ipi __bind bind +getpeername - getpeername i:ipp __getpeername getpeername +getsockname - getsockname i:ipp __getsockname getsockname +getsockopt - getsockopt i:iiiBN __getsockopt getsockopt +listen - listen i:ii __listen listen +setsockopt - setsockopt i:iiibn __setsockopt setsockopt +shutdown - shutdown i:ii __shutdown shutdown +socket - socket i:iii __socket socket +socketpair - socketpair i:iiif __socketpair socketpair diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h new file mode 100644 index 0000000000..de12acf046 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h @@ -0,0 +1,241 @@ +/* Copyright (C) 2003-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#include <tls.h> +#ifndef __ASSEMBLER__ +# include <nptl/pthreadP.h> +#endif + +#if IS_IN (libc) || IS_IN (libpthread) || IS_IN (librt) + +/* NOTE: We do mark syscalls with unwind annotations, for the benefit of + cancellation; but they're really only accurate at the point of the + syscall. The ARM unwind directives are not rich enough without adding + a custom personality function. */ + +# undef PSEUDO +# define PSEUDO(name, syscall_name, args) \ + .text; \ + ENTRY (__##syscall_name##_nocancel); \ + CFI_SECTIONS; \ + DO_CALL (syscall_name, args); \ + cmn r0, $4096; \ + PSEUDO_RET; \ + END (__##syscall_name##_nocancel); \ + ENTRY (name); \ + SINGLE_THREAD_P; \ + DOARGS_##args; \ + bne .Lpseudo_cancel; \ + cfi_remember_state; \ + ldr r7, =SYS_ify (syscall_name); \ + swi 0x0; \ + UNDOARGS_##args; \ + cmn r0, $4096; \ + PSEUDO_RET; \ + cfi_restore_state; \ + .Lpseudo_cancel: \ + .fnstart; /* matched by the .fnend in UNDOARGS below. */ \ + DOCARGS_##args; /* save syscall args etc. around CENABLE. */ \ + CENABLE; \ + mov ip, r0; /* put mask in safe place. */ \ + UNDOCARGS_##args; /* restore syscall args. */ \ + ldr r7, =SYS_ify (syscall_name); \ + swi 0x0; /* do the call. */ \ + mov r7, r0; /* save syscall return value. */ \ + mov r0, ip; /* get mask back. */ \ + CDISABLE; \ + mov r0, r7; /* retrieve return value. */ \ + RESTORE_LR_##args; \ + UNDOARGS_##args; \ + cmn r0, $4096 + +/* DOARGS pushes eight bytes on the stack for five arguments, twelve bytes for + six arguments, and four bytes for fewer. In order to preserve doubleword + alignment, sometimes we must save an extra register. */ + +# define RESTART_UNWIND \ + .fnend; \ + .fnstart; \ + .save {r7}; \ + .save {lr} + +# define DOCARGS_0 \ + .save {r7}; \ + push {lr}; \ + cfi_adjust_cfa_offset (4); \ + cfi_rel_offset (lr, 0); \ + .save {lr} +# define UNDOCARGS_0 +# define RESTORE_LR_0 \ + pop {lr}; \ + cfi_adjust_cfa_offset (-4); \ + cfi_restore (lr) + +# define DOCARGS_1 \ + .save {r7}; \ + push {r0, r1, lr}; \ + cfi_adjust_cfa_offset (12); \ + cfi_rel_offset (lr, 8); \ + .save {lr}; \ + .pad #8 +# define UNDOCARGS_1 \ + ldr r0, [sp], #8; \ + cfi_adjust_cfa_offset (-8); \ + RESTART_UNWIND +# define RESTORE_LR_1 \ + RESTORE_LR_0 + +# define DOCARGS_2 \ + .save {r7}; \ + push {r0, r1, lr}; \ + cfi_adjust_cfa_offset (12); \ + cfi_rel_offset (lr, 8); \ + .save {lr}; \ + .pad #8 +# define UNDOCARGS_2 \ + pop {r0, r1}; \ + cfi_adjust_cfa_offset (-8); \ + RESTART_UNWIND +# define RESTORE_LR_2 \ + RESTORE_LR_0 + +# define DOCARGS_3 \ + .save {r7}; \ + push {r0, r1, r2, r3, lr}; \ + cfi_adjust_cfa_offset (20); \ + cfi_rel_offset (lr, 16); \ + .save {lr}; \ + .pad #16 +# define UNDOCARGS_3 \ + pop {r0, r1, r2, r3}; \ + cfi_adjust_cfa_offset (-16); \ + RESTART_UNWIND +# define RESTORE_LR_3 \ + RESTORE_LR_0 + +# define DOCARGS_4 \ + .save {r7}; \ + push {r0, r1, r2, r3, lr}; \ + cfi_adjust_cfa_offset (20); \ + cfi_rel_offset (lr, 16); \ + .save {lr}; \ + .pad #16 +# define UNDOCARGS_4 \ + pop {r0, r1, r2, r3}; \ + cfi_adjust_cfa_offset (-16); \ + RESTART_UNWIND +# define RESTORE_LR_4 \ + RESTORE_LR_0 + +/* r4 is only stmfd'ed for correct stack alignment. */ +# define DOCARGS_5 \ + .save {r4, r7}; \ + push {r0, r1, r2, r3, r4, lr}; \ + cfi_adjust_cfa_offset (24); \ + cfi_rel_offset (lr, 20); \ + .save {lr}; \ + .pad #20 +# define UNDOCARGS_5 \ + pop {r0, r1, r2, r3}; \ + cfi_adjust_cfa_offset (-16); \ + .fnend; \ + .fnstart; \ + .save {r4, r7}; \ + .save {lr}; \ + .pad #4 +# define RESTORE_LR_5 \ + pop {r4, lr}; \ + cfi_adjust_cfa_offset (-8); \ + /* r4 will be marked as restored later. */ \ + cfi_restore (lr) + +# define DOCARGS_6 \ + .save {r4, r5, r7}; \ + push {r0, r1, r2, r3, lr}; \ + cfi_adjust_cfa_offset (20); \ + cfi_rel_offset (lr, 16); \ + .save {lr}; \ + .pad #16 +# define UNDOCARGS_6 \ + pop {r0, r1, r2, r3}; \ + cfi_adjust_cfa_offset (-16); \ + .fnend; \ + .fnstart; \ + .save {r4, r5, r7}; \ + .save {lr}; +# define RESTORE_LR_6 \ + RESTORE_LR_0 + +# if IS_IN (libpthread) +# define CENABLE bl PLTJMP(__pthread_enable_asynccancel) +# define CDISABLE bl PLTJMP(__pthread_disable_asynccancel) +# define __local_multiple_threads __pthread_multiple_threads +# elif IS_IN (libc) +# define CENABLE bl PLTJMP(__libc_enable_asynccancel) +# define CDISABLE bl PLTJMP(__libc_disable_asynccancel) +# define __local_multiple_threads __libc_multiple_threads +# elif IS_IN (librt) +# define CENABLE bl PLTJMP(__librt_enable_asynccancel) +# define CDISABLE bl PLTJMP(__librt_disable_asynccancel) +# else +# error Unsupported library +# endif + +# if IS_IN (libpthread) || IS_IN (libc) +# ifndef __ASSEMBLER__ +extern int __local_multiple_threads attribute_hidden; +# define SINGLE_THREAD_P __builtin_expect (__local_multiple_threads == 0, 1) +# else +# define SINGLE_THREAD_P \ + LDST_PCREL(ldr, ip, ip, __local_multiple_threads); \ + teq ip, #0 +# endif +# else +/* There is no __local_multiple_threads for librt, so use the TCB. */ +# ifndef __ASSEMBLER__ +# define SINGLE_THREAD_P \ + __builtin_expect (THREAD_GETMEM (THREAD_SELF, \ + header.multiple_threads) == 0, 1) +# else +# define SINGLE_THREAD_P \ + push {r0, lr}; \ + cfi_adjust_cfa_offset (8); \ + cfi_rel_offset (lr, 4); \ + GET_TLS (lr); \ + NEGOFF_ADJ_BASE (r0, MULTIPLE_THREADS_OFFSET); \ + ldr ip, NEGOFF_OFF1 (r0, MULTIPLE_THREADS_OFFSET); \ + pop {r0, lr}; \ + cfi_adjust_cfa_offset (-8); \ + cfi_restore (lr); \ + teq ip, #0 +# endif +# endif + +#elif !defined __ASSEMBLER__ + +/* For rtld, et cetera. */ +# define SINGLE_THREAD_P 1 +# define NO_CANCELLATION 1 + +#endif + +#ifndef __ASSEMBLER__ +# define RTLD_SINGLE_THREAD_P \ + __builtin_expect (THREAD_GETMEM (THREAD_SELF, \ + header.multiple_threads) == 0, 1) +#endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/sysdep.S b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sysdep.S new file mode 100644 index 0000000000..a9b8a034c1 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sysdep.S @@ -0,0 +1,33 @@ +/* Copyright (C) 1995-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> + + .text + +/* The syscall stubs jump here when they detect an error. + The code for Linux is almost identical to the canonical Unix + code, except that the error number in R0 is negated. */ + +#undef CALL_MCOUNT +#define CALL_MCOUNT /* Don't insert the profiling call, it clobbers R0. */ + +ENTRY (__syscall_error) + rsb r0, r0, $0 + +#define __syscall_error __syscall_error_1 +#include <sysdeps/unix/arm/sysdep.S> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/sysdep.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sysdep.h new file mode 100644 index 0000000000..3ca2198596 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/sysdep.h @@ -0,0 +1,442 @@ +/* Copyright (C) 1992-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>, August 1995. + ARM changes by Philip Blundell, <pjb27@cam.ac.uk>, May 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _LINUX_ARM_SYSDEP_H +#define _LINUX_ARM_SYSDEP_H 1 + +/* There is some commonality. */ +#include <sysdeps/unix/sysv/linux/sysdep.h> +#include <sysdeps/unix/arm/sysdep.h> + +/* Defines RTLD_PRIVATE_ERRNO and USE_DL_SYSINFO. */ +#include <dl-sysdep.h> + +#include <tls.h> + +/* In order to get __set_errno() definition in INLINE_SYSCALL. */ +#ifndef __ASSEMBLER__ +#include <errno.h> +#endif + +/* For Linux we can use the system call table in the header file + /usr/include/asm/unistd.h + of the kernel. But these symbols do not follow the SYS_* syntax + so we have to redefine the `SYS_ify' macro here. */ +#undef SYS_ify +#define SYS_ify(syscall_name) (__NR_##syscall_name) + +#include <bits/hwcap.h> + +#ifdef __ASSEMBLER__ + +#ifndef ARCH_HAS_HARD_TP +/* Internal macro calling the linux kernel kuser_get_tls helper. + Note that in thumb mode, a constant pool break is often out of range, so + we always expand the constant inline. */ +# ifdef __thumb2__ +# define GET_TLS_BODY \ + movw r0, #0x0fe0; \ + movt r0, #0xffff; \ + blx r0 +# else +# define GET_TLS_BODY \ + mov r0, #0xffff0fff; /* Point to the high page. */ \ + mov lr, pc; /* Save our return address. */ \ + sub pc, r0, #31 /* Jump to the TLS entry. */ +# endif + +/* Helper to get the TLS base pointer. Save LR in TMP, return in R0, + and no other registers clobbered. TMP may be LR itself to indicate + that no save is necessary. */ +# undef GET_TLS +# define GET_TLS(TMP) \ + .ifnc TMP, lr; \ + mov TMP, lr; \ + cfi_register (lr, TMP); \ + GET_TLS_BODY; \ + mov lr, TMP; \ + cfi_restore (lr); \ + .else; \ + GET_TLS_BODY; \ + .endif +#endif /* ARCH_HAS_HARD_TP */ + +/* Linux uses a negative return value to indicate syscall errors, + unlike most Unices, which use the condition codes' carry flag. + + Since version 2.1 the return value of a system call might be + negative even if the call succeeded. E.g., the `lseek' system call + might return a large offset. Therefore we must not anymore test + for < 0, but test for a real error by making sure the value in R0 + is a real error number. Linus said he will make sure the no syscall + returns a value in -1 .. -4095 as a valid result so we can safely + test with -4095. */ + +#undef PSEUDO +#define PSEUDO(name, syscall_name, args) \ + .text; \ + ENTRY (name); \ + DO_CALL (syscall_name, args); \ + cmn r0, $4096; + +#define PSEUDO_RET \ + it cc; \ + RETINSTR(cc, lr); \ + b PLTJMP(SYSCALL_ERROR) +#undef ret +#define ret PSEUDO_RET + +#undef PSEUDO_END +#define PSEUDO_END(name) \ + SYSCALL_ERROR_HANDLER; \ + END (name) + +#undef PSEUDO_NOERRNO +#define PSEUDO_NOERRNO(name, syscall_name, args) \ + .text; \ + ENTRY (name); \ + DO_CALL (syscall_name, args); + +#define PSEUDO_RET_NOERRNO \ + DO_RET (lr); + +#undef ret_NOERRNO +#define ret_NOERRNO PSEUDO_RET_NOERRNO + +#undef PSEUDO_END_NOERRNO +#define PSEUDO_END_NOERRNO(name) \ + END (name) + +/* The function has to return the error code. */ +#undef PSEUDO_ERRVAL +#define PSEUDO_ERRVAL(name, syscall_name, args) \ + .text; \ + ENTRY (name) \ + DO_CALL (syscall_name, args); \ + rsb r0, r0, #0 + +#undef PSEUDO_END_ERRVAL +#define PSEUDO_END_ERRVAL(name) \ + END (name) + +#define ret_ERRVAL PSEUDO_RET_NOERRNO + +#if !IS_IN (libc) +# define SYSCALL_ERROR __local_syscall_error +# if RTLD_PRIVATE_ERRNO +# define SYSCALL_ERROR_HANDLER \ +__local_syscall_error: \ + rsb r0, r0, #0; \ + LDST_PCREL(str, r0, r1, C_SYMBOL_NAME(rtld_errno)); \ + mvn r0, #0; \ + DO_RET(lr) +# else +# if defined(__ARM_ARCH_4T__) && defined(__THUMB_INTERWORK__) +# define POP_PC \ + pop { lr }; \ + cfi_adjust_cfa_offset (-4); \ + cfi_restore (lr); \ + bx lr +# else +# define POP_PC pop { pc } +# endif +# define SYSCALL_ERROR_HANDLER \ +__local_syscall_error: \ + push { lr }; \ + cfi_adjust_cfa_offset (4); \ + cfi_rel_offset (lr, 0); \ + push { r0 }; \ + cfi_adjust_cfa_offset (4); \ + bl PLTJMP(C_SYMBOL_NAME(__errno_location)); \ + pop { r1 }; \ + cfi_adjust_cfa_offset (-4); \ + rsb r1, r1, #0; \ + str r1, [r0]; \ + mvn r0, #0; \ + POP_PC; +# endif +#else +# define SYSCALL_ERROR_HANDLER /* Nothing here; code in sysdep.S is used. */ +# define SYSCALL_ERROR __syscall_error +#endif + +/* The ARM EABI user interface passes the syscall number in r7, instead + of in the swi. This is more efficient, because the kernel does not need + to fetch the swi from memory to find out the number; which can be painful + with separate I-cache and D-cache. Make sure to use 0 for the SWI + argument; otherwise the (optional) compatibility code for APCS binaries + may be invoked. */ + +/* Linux takes system call args in registers: + arg 1 r0 + arg 2 r1 + arg 3 r2 + arg 4 r3 + arg 5 r4 (this is different from the APCS convention) + arg 6 r5 + arg 7 r6 + + The compiler is going to form a call by coming here, through PSEUDO, with + arguments + syscall number in the DO_CALL macro + arg 1 r0 + arg 2 r1 + arg 3 r2 + arg 4 r3 + arg 5 [sp] + arg 6 [sp+4] + arg 7 [sp+8] + + We need to shuffle values between R4..R6 and the stack so that the + caller's v1..v3 and stack frame are not corrupted, and the kernel + sees the right arguments. + +*/ + +/* We must save and restore r7 (call-saved) for the syscall number. + We never make function calls from inside here (only potentially + signal handlers), so we do not bother with doubleword alignment. + + Just like the APCS syscall convention, the EABI syscall convention uses + r0 through r6 for up to seven syscall arguments. None are ever passed to + the kernel on the stack, although incoming arguments are on the stack for + syscalls with five or more arguments. + + The assembler will convert the literal pool load to a move for most + syscalls. */ + +#undef DO_CALL +#define DO_CALL(syscall_name, args) \ + DOARGS_##args; \ + ldr r7, =SYS_ify (syscall_name); \ + swi 0x0; \ + UNDOARGS_##args + +#undef DOARGS_0 +#define DOARGS_0 \ + .fnstart; \ + push { r7 }; \ + cfi_adjust_cfa_offset (4); \ + cfi_rel_offset (r7, 0); \ + .save { r7 } +#undef DOARGS_1 +#define DOARGS_1 DOARGS_0 +#undef DOARGS_2 +#define DOARGS_2 DOARGS_0 +#undef DOARGS_3 +#define DOARGS_3 DOARGS_0 +#undef DOARGS_4 +#define DOARGS_4 DOARGS_0 +#undef DOARGS_5 +#define DOARGS_5 \ + .fnstart; \ + push {r4, r7}; \ + cfi_adjust_cfa_offset (8); \ + cfi_rel_offset (r4, 0); \ + cfi_rel_offset (r7, 4); \ + .save { r4, r7 }; \ + ldr r4, [sp, #8] +#undef DOARGS_6 +#define DOARGS_6 \ + .fnstart; \ + mov ip, sp; \ + push {r4, r5, r7}; \ + cfi_adjust_cfa_offset (12); \ + cfi_rel_offset (r4, 0); \ + cfi_rel_offset (r5, 4); \ + cfi_rel_offset (r7, 8); \ + .save { r4, r5, r7 }; \ + ldmia ip, {r4, r5} +#undef DOARGS_7 +#define DOARGS_7 \ + .fnstart; \ + mov ip, sp; \ + push {r4, r5, r6, r7}; \ + cfi_adjust_cfa_offset (16); \ + cfi_rel_offset (r4, 0); \ + cfi_rel_offset (r5, 4); \ + cfi_rel_offset (r6, 8); \ + cfi_rel_offset (r7, 12); \ + .save { r4, r5, r6, r7 }; \ + ldmia ip, {r4, r5, r6} + +#undef UNDOARGS_0 +#define UNDOARGS_0 \ + pop {r7}; \ + cfi_adjust_cfa_offset (-4); \ + cfi_restore (r7); \ + .fnend +#undef UNDOARGS_1 +#define UNDOARGS_1 UNDOARGS_0 +#undef UNDOARGS_2 +#define UNDOARGS_2 UNDOARGS_0 +#undef UNDOARGS_3 +#define UNDOARGS_3 UNDOARGS_0 +#undef UNDOARGS_4 +#define UNDOARGS_4 UNDOARGS_0 +#undef UNDOARGS_5 +#define UNDOARGS_5 \ + pop {r4, r7}; \ + cfi_adjust_cfa_offset (-8); \ + cfi_restore (r4); \ + cfi_restore (r7); \ + .fnend +#undef UNDOARGS_6 +#define UNDOARGS_6 \ + pop {r4, r5, r7}; \ + cfi_adjust_cfa_offset (-12); \ + cfi_restore (r4); \ + cfi_restore (r5); \ + cfi_restore (r7); \ + .fnend +#undef UNDOARGS_7 +#define UNDOARGS_7 \ + pop {r4, r5, r6, r7}; \ + cfi_adjust_cfa_offset (-16); \ + cfi_restore (r4); \ + cfi_restore (r5); \ + cfi_restore (r6); \ + cfi_restore (r7); \ + .fnend + +#else /* not __ASSEMBLER__ */ + +/* Define a macro which expands into the inline wrapper code for a system + call. */ +#undef INLINE_SYSCALL +#define INLINE_SYSCALL(name, nr, args...) \ + ({ unsigned int _sys_result = INTERNAL_SYSCALL (name, , nr, args); \ + if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (_sys_result, ), 0)) \ + { \ + __set_errno (INTERNAL_SYSCALL_ERRNO (_sys_result, )); \ + _sys_result = (unsigned int) -1; \ + } \ + (int) _sys_result; }) + +#undef INTERNAL_SYSCALL_DECL +#define INTERNAL_SYSCALL_DECL(err) do { } while (0) + +#if defined(__thumb__) +/* We can not expose the use of r7 to the compiler. GCC (as + of 4.5) uses r7 as the hard frame pointer for Thumb - although + for Thumb-2 it isn't obviously a better choice than r11. + And GCC does not support asms that conflict with the frame + pointer. + + This would be easier if syscall numbers never exceeded 255, + but they do. For the moment the LOAD_ARGS_7 is sacrificed. + We can't use push/pop inside the asm because that breaks + unwinding (i.e. thread cancellation) for this frame. We can't + locally save and restore r7, because we do not know if this + function uses r7 or if it is our caller's r7; if it is our caller's, + then unwinding will fail higher up the stack. So we move the + syscall out of line and provide its own unwind information. */ +# undef INTERNAL_SYSCALL_RAW +# define INTERNAL_SYSCALL_RAW(name, err, nr, args...) \ + ({ \ + register int _a1 asm ("a1"); \ + int _nametmp = name; \ + LOAD_ARGS_##nr (args) \ + register int _name asm ("ip") = _nametmp; \ + asm volatile ("bl __libc_do_syscall" \ + : "=r" (_a1) \ + : "r" (_name) ASM_ARGS_##nr \ + : "memory", "lr"); \ + _a1; }) +#else /* ARM */ +# undef INTERNAL_SYSCALL_RAW +# define INTERNAL_SYSCALL_RAW(name, err, nr, args...) \ + ({ \ + register int _a1 asm ("r0"), _nr asm ("r7"); \ + LOAD_ARGS_##nr (args) \ + _nr = name; \ + asm volatile ("swi 0x0 @ syscall " #name \ + : "=r" (_a1) \ + : "r" (_nr) ASM_ARGS_##nr \ + : "memory"); \ + _a1; }) +#endif + +#undef INTERNAL_SYSCALL +#define INTERNAL_SYSCALL(name, err, nr, args...) \ + INTERNAL_SYSCALL_RAW(SYS_ify(name), err, nr, args) + +#undef INTERNAL_SYSCALL_ARM +#define INTERNAL_SYSCALL_ARM(name, err, nr, args...) \ + INTERNAL_SYSCALL_RAW(__ARM_NR_##name, err, nr, args) + +#undef INTERNAL_SYSCALL_ERROR_P +#define INTERNAL_SYSCALL_ERROR_P(val, err) \ + ((unsigned int) (val) >= 0xfffff001u) + +#undef INTERNAL_SYSCALL_ERRNO +#define INTERNAL_SYSCALL_ERRNO(val, err) (-(val)) + +/* List of system calls which are supported as vsyscalls. */ +#define HAVE_CLOCK_GETTIME_VSYSCALL 1 +#define HAVE_GETTIMEOFDAY_VSYSCALL 1 + +#define LOAD_ARGS_0() +#define ASM_ARGS_0 +#define LOAD_ARGS_1(a1) \ + int _a1tmp = (int) (a1); \ + LOAD_ARGS_0 () \ + _a1 = _a1tmp; +#define ASM_ARGS_1 ASM_ARGS_0, "r" (_a1) +#define LOAD_ARGS_2(a1, a2) \ + int _a2tmp = (int) (a2); \ + LOAD_ARGS_1 (a1) \ + register int _a2 asm ("a2") = _a2tmp; +#define ASM_ARGS_2 ASM_ARGS_1, "r" (_a2) +#define LOAD_ARGS_3(a1, a2, a3) \ + int _a3tmp = (int) (a3); \ + LOAD_ARGS_2 (a1, a2) \ + register int _a3 asm ("a3") = _a3tmp; +#define ASM_ARGS_3 ASM_ARGS_2, "r" (_a3) +#define LOAD_ARGS_4(a1, a2, a3, a4) \ + int _a4tmp = (int) (a4); \ + LOAD_ARGS_3 (a1, a2, a3) \ + register int _a4 asm ("a4") = _a4tmp; +#define ASM_ARGS_4 ASM_ARGS_3, "r" (_a4) +#define LOAD_ARGS_5(a1, a2, a3, a4, a5) \ + int _v1tmp = (int) (a5); \ + LOAD_ARGS_4 (a1, a2, a3, a4) \ + register int _v1 asm ("v1") = _v1tmp; +#define ASM_ARGS_5 ASM_ARGS_4, "r" (_v1) +#define LOAD_ARGS_6(a1, a2, a3, a4, a5, a6) \ + int _v2tmp = (int) (a6); \ + LOAD_ARGS_5 (a1, a2, a3, a4, a5) \ + register int _v2 asm ("v2") = _v2tmp; +#define ASM_ARGS_6 ASM_ARGS_5, "r" (_v2) +#ifndef __thumb__ +# define LOAD_ARGS_7(a1, a2, a3, a4, a5, a6, a7) \ + int _v3tmp = (int) (a7); \ + LOAD_ARGS_6 (a1, a2, a3, a4, a5, a6) \ + register int _v3 asm ("v3") = _v3tmp; +# define ASM_ARGS_7 ASM_ARGS_6, "r" (_v3) +#endif + +/* For EABI, non-constant syscalls are actually pretty easy... */ +#undef INTERNAL_SYSCALL_NCS +#define INTERNAL_SYSCALL_NCS(number, err, nr, args...) \ + INTERNAL_SYSCALL_RAW (number, err, nr, args) + +#endif /* __ASSEMBLER__ */ + +#endif /* linux/arm/sysdep.h */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/tls.h b/REORG.TODO/sysdeps/unix/sysv/linux/arm/tls.h new file mode 100644 index 0000000000..60f503081f --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/tls.h @@ -0,0 +1,42 @@ +/* Definition for thread-local data handling. ARM/Linux version. + Copyright (C) 2005-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _LINUX_ARM_TLS_H +#define _LINUX_ARM_TLS_H 1 + +/* Almost everything is OS-independent and common for all NPTL on ARM. */ +#include <sysdeps/arm/nptl/tls.h> + +#ifndef __ASSEMBLER__ + +/* Get system call information. */ +# include <sysdep.h> + +/* Code to initially initialize the thread pointer. This might need + special attention since 'errno' is not yet available and if the + operation can cause a failure 'errno' must not be touched. */ +# define TLS_INIT_TP(tcbp) \ + ({ INTERNAL_SYSCALL_DECL (err); \ + long int result_var; \ + result_var = INTERNAL_SYSCALL_ARM (set_tls, err, 1, (tcbp)); \ + INTERNAL_SYSCALL_ERROR_P (result_var, err) \ + ? "unknown error" : NULL; }) + +#endif /* __ASSEMBLER__ */ + +#endif /* tls.h */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/ucontext_i.sym b/REORG.TODO/sysdeps/unix/sysv/linux/arm/ucontext_i.sym new file mode 100644 index 0000000000..306292f1f8 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/ucontext_i.sym @@ -0,0 +1,30 @@ +#include <inttypes.h> +#include <signal.h> +#include <stddef.h> +#include <sys/ucontext.h> + +SIG_BLOCK +SIG_SETMASK + +-- Offsets of the fields in the ucontext_t structure. +#define ucontext(member) offsetof (ucontext_t, member) +#define mcontext(member) ucontext (uc_mcontext.member) + +UCONTEXT_FLAGS ucontext (uc_flags) +UCONTEXT_LINK ucontext (uc_link) +UCONTEXT_STACK ucontext (uc_stack) +UCONTEXT_MCONTEXT ucontext (uc_mcontext) +UCONTEXT_SIGMASK ucontext (uc_sigmask) + +UCONTEXT_REGSPACE ucontext (uc_regspace) + +MCONTEXT_TRAP_NO mcontext (trap_no) +MCONTEXT_ERROR_CODE mcontext (error_code) +MCONTEXT_OLDMASK mcontext (oldmask) +MCONTEXT_ARM_R0 mcontext (arm_r0) +MCONTEXT_ARM_R4 mcontext (arm_r4) +MCONTEXT_ARM_SP mcontext (arm_sp) +MCONTEXT_ARM_LR mcontext (arm_lr) +MCONTEXT_ARM_PC mcontext (arm_pc) +MCONTEXT_ARM_CPSR mcontext (arm_cpsr) +MCONTEXT_FAULT_ADDRESS mcontext (fault_address) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/umount.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/umount.c new file mode 100644 index 0000000000..64487c7819 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/umount.c @@ -0,0 +1,30 @@ +/* Copyright (C) 2000-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by David Huggins-Daines <dhd@debian.org>, 2000. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +/* Since we don't have an oldumount system call, do what the kernel + does down here. */ + +extern long int __umount2 (const char *name, int flags); + +long int +__umount (const char *name) +{ + return __umount2 (name, 0); +} + +weak_alias (__umount, umount); diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/versionsort64.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/versionsort64.c new file mode 100644 index 0000000000..144b691e56 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/versionsort64.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/i386/versionsort64.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/vfork.S b/REORG.TODO/sysdeps/unix/sysv/linux/arm/vfork.S new file mode 100644 index 0000000000..e3666ea501 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/vfork.S @@ -0,0 +1,59 @@ +/* Copyright (C) 1999-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Philip Blundell <philb@gnu.org>. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#define _ERRNO_H 1 +#include <bits/errno.h> +#include <tcb-offsets.h> + + +/* Clone the calling process, but without copying the whole address space. + The calling process is suspended until the new process exits or is + replaced by a call to `execve'. Return -1 for errors, 0 to the new process, + and the process ID of the new process to the old process. */ + +ENTRY (__vfork) + /* The DO_CALL macro saves r7 on the stack, to enable generation + of ARM unwind info. Since the stack is initially shared between + parent and child of vfork, that saved value could be corrupted. + To avoid this problem, we save r7 into ip as well, and restore + from there. */ + mov ip, r7 + cfi_register (r7, ip) + .fnstart + push { r7 } + cfi_adjust_cfa_offset (4) + .save { r7 } + ldr r7, =SYS_ify (vfork) + swi 0x0 + .fnend + add sp, sp, #4 + cfi_adjust_cfa_offset (-4) + mov r7, ip + cfi_restore (r7) + + cmn a1, #4096 + it cc + RETINSTR(cc, lr) + + b PLTJMP(SYSCALL_ERROR) +PSEUDO_END (__vfork) +libc_hidden_def (__vfork) + +weak_alias (__vfork, vfork) +strong_alias (__vfork, __libc_vfork) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/arm/xstat.c b/REORG.TODO/sysdeps/unix/sysv/linux/arm/xstat.c new file mode 100644 index 0000000000..e9869f5508 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/arm/xstat.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/i386/xstat.c> |