diff options
Diffstat (limited to 'REORG.TODO/sysdeps/unix/sysv/linux/s390')
174 files changed, 15345 insertions, 0 deletions
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/Implies b/REORG.TODO/sysdeps/unix/sysv/linux/s390/Implies new file mode 100644 index 0000000000..e6e51fa5a7 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/Implies @@ -0,0 +1,5 @@ +s390/nptl + +# These supply the ABI compatibility for when long double was double. +ieee754/ldbl-64-128 +ieee754/ldbl-opt diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/Makefile b/REORG.TODO/sysdeps/unix/sysv/linux/s390/Makefile new file mode 100644 index 0000000000..3867c33d91 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/Makefile @@ -0,0 +1,31 @@ +abi-variants := 32 64 +abi-32-options := -U__s390x__ +abi-32-condition := __WORDSIZE == 32 +abi-64-options := -D__s390x__ +abi-64-condition := __WORDSIZE == 64 + +ifeq ($(subdir),rt) +librt-routines += rt-sysdep +librt-shared-only-routines += rt-sysdep +endif + +ifeq ($(subdir),stdlib) +gen-as-const-headers += ucontext_i.sym +endif + +ifeq ($(subdir),elf) +sysdep_routines += dl-vdso +endif + +ifeq ($(subdir),nptl) +ifeq ($(enable-lock-elision),yes) +libpthread-sysdep_routines += elision-lock elision-unlock elision-timed \ + elision-trylock + +elision-CFLAGS = -mhtm -msoft-float +CFLAGS-elision-lock.c = $(elision-CFLAGS) +CFLAGS-elision-timed.c = $(elision-CFLAGS) +CFLAGS-elision-trylock.c = $(elision-CFLAGS) +CFLAGS-elision-unlock.c = $(elision-CFLAGS) +endif +endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/Versions b/REORG.TODO/sysdeps/unix/sysv/linux/s390/Versions new file mode 100644 index 0000000000..55518a7e5f --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/Versions @@ -0,0 +1,16 @@ +libc { + GLIBC_2.19 { + __longjmp_chk; + getcontext; + } + GLIBC_PRIVATE { + __vdso_clock_gettime; + __vdso_clock_getres; + } +} + +libpthread { + GLIBC_2.19 { + longjmp; siglongjmp; + } +} diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/arch-fork.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/arch-fork.h new file mode 100644 index 0000000000..299e638ce8 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/arch-fork.h @@ -0,0 +1,29 @@ +/* ARCH_FORK definition for Linux fork implementation. S390 version. + Copyright (C) 2003-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Martin Schwidefsky <schwidefsky@de.ibm.com>, 2003. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sched.h> +#include <signal.h> +#include <sysdep.h> +#include <tls.h> + + +#define ARCH_FORK() \ + INLINE_SYSCALL (clone, 5, \ + 0, CLONE_CHILD_SETTID | CLONE_CHILD_CLEARTID | SIGCHLD, \ + NULL, &THREAD_SELF->tid, NULL) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/elfclass.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/elfclass.h new file mode 100644 index 0000000000..723f75158e --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/elfclass.h @@ -0,0 +1,38 @@ +/* Copyright (C) 2001-2017 Free Software Foundation, Inc. + Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +/* This file specifies the native word size of the machine, which indicates + the ELF file class used for executables and shared objects on this + machine. */ + +#ifndef _LINK_H +# error "Never use <bits/elfclass.h> directly; include <link.h> instead." +#endif + +#include <bits/wordsize.h> + +#define __ELF_NATIVE_CLASS __WORDSIZE + +#if __WORDSIZE == 64 +/* 64 bit Linux for S/390 is exceptional as it has .hash section with + 64 bit entries. */ +typedef uint64_t Elf_Symndx; +#else +/* 32 bit Linux for S/390 has normal .hash section entries with 32 bits. */ +typedef uint32_t Elf_Symndx; +#endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/environments.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/environments.h new file mode 100644 index 0000000000..ab29ebfcc1 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/environments.h @@ -0,0 +1,96 @@ +/* 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/>. */ + +#ifndef _UNISTD_H +# error "Never include this file directly. Use <unistd.h> instead" +#endif + +#include <bits/wordsize.h> + +/* This header should define the following symbols under the described + situations. A value `1' means that the model is always supported, + `-1' means it is never supported. Undefined means it cannot be + statically decided. + + _POSIX_V7_ILP32_OFF32 32bit int, long, pointers, and off_t type + _POSIX_V7_ILP32_OFFBIG 32bit int, long, and pointers and larger off_t type + + _POSIX_V7_LP64_OFF32 64bit long and pointers and 32bit off_t type + _POSIX_V7_LPBIG_OFFBIG 64bit long and pointers and large off_t type + + The macros _POSIX_V6_ILP32_OFF32, _POSIX_V6_ILP32_OFFBIG, + _POSIX_V6_LP64_OFF32, _POSIX_V6_LPBIG_OFFBIG, _XBS5_ILP32_OFF32, + _XBS5_ILP32_OFFBIG, _XBS5_LP64_OFF32, and _XBS5_LPBIG_OFFBIG were + used in previous versions of the Unix standard and are available + only for compatibility. +*/ + +#if __WORDSIZE == 64 + +/* Environments with 32-bit wide pointers are optionally provided. + Therefore following macros aren't defined: + # undef _POSIX_V7_ILP32_OFF32 + # undef _POSIX_V7_ILP32_OFFBIG + # undef _POSIX_V6_ILP32_OFF32 + # undef _POSIX_V6_ILP32_OFFBIG + # undef _XBS5_ILP32_OFF32 + # undef _XBS5_ILP32_OFFBIG + and users need to check at runtime. */ + +/* We also have no use (for now) for an environment with bigger pointers + and offsets. */ +# define _POSIX_V7_LPBIG_OFFBIG -1 +# define _POSIX_V6_LPBIG_OFFBIG -1 +# define _XBS5_LPBIG_OFFBIG -1 + +/* By default we have 64-bit wide `long int', pointers and `off_t'. */ +# define _POSIX_V7_LP64_OFF64 1 +# define _POSIX_V6_LP64_OFF64 1 +# define _XBS5_LP64_OFF64 1 + +#else /* __WORDSIZE == 32 */ + +/* By default we have 32-bit wide `int', `long int', pointers and `off_t' + and all platforms support LFS. */ +# define _POSIX_V7_ILP32_OFF32 1 +# define _POSIX_V7_ILP32_OFFBIG 1 +# define _POSIX_V6_ILP32_OFF32 1 +# define _POSIX_V6_ILP32_OFFBIG 1 +# define _XBS5_ILP32_OFF32 1 +# define _XBS5_ILP32_OFFBIG 1 + +/* We optionally provide an environment with the above size but an 64-bit + side `off_t'. Therefore we don't define _POSIX_V7_ILP32_OFFBIG. */ + +/* Environments with 64-bit wide pointers can be provided, + so these macros aren't defined: + # undef _POSIX_V7_LP64_OFF64 + # undef _POSIX_V7_LPBIG_OFFBIG + # undef _POSIX_V6_LP64_OFF64 + # undef _POSIX_V6_LPBIG_OFFBIG + # undef _XBS5_LP64_OFF64 + # undef _XBS5_LPBIG_OFFBIG + and sysconf tests for it at runtime. */ + +#endif /* __WORDSIZE == 32 */ + +#define __ILP32_OFF32_CFLAGS "-m31" +#define __ILP32_OFFBIG_CFLAGS "-m31 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" +#define __ILP32_OFF32_LDFLAGS "-m31" +#define __ILP32_OFFBIG_LDFLAGS "-m31" +#define __LP64_OFF64_CFLAGS "-m64" +#define __LP64_OFF64_LDFLAGS "-m64" diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/fcntl.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/fcntl.h new file mode 100644 index 0000000000..bce5f1a577 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/fcntl.h @@ -0,0 +1,71 @@ +/* O_*, F_*, FD_* bit values for Linux. + Copyright (C) 2000-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _FCNTL_H +# error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead." +#endif + +#include <bits/wordsize.h> + +#if __WORDSIZE == 64 +/* Not necessary, files are always with 64bit off_t. */ +# define __O_LARGEFILE 0 +#endif + +#if __WORDSIZE == 64 +/* Not necessary, we always have 64-bit offsets. */ +# define F_GETLK64 5 /* Get record locking info. */ +# define F_SETLK64 6 /* Set record locking info (non-blocking). */ +# define F_SETLKW64 7 /* Set record locking info (blocking). */ +#endif + +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'). */ +#if __WORDSIZE == 64 || !defined __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 + +#if __WORDSIZE == 64 +# define __POSIX_FADV_DONTNEED 6 /* Don't need these pages. */ +# define __POSIX_FADV_NOREUSE 7 /* Data will be accessed once. */ +#else +# define __POSIX_FADV_DONTNEED 4 /* Don't need these pages. */ +# define __POSIX_FADV_NOREUSE 5 /* Data will be accessed once. */ +#endif + +/* Include generic Linux declarations. */ +#include <bits/fcntl-linux.h> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/hwcap.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/hwcap.h new file mode 100644 index 0000000000..6a7e4328c0 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/hwcap.h @@ -0,0 +1,38 @@ +/* Defines for bits in AT_HWCAP. + 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 _SYS_AUXV_H +# error "Never include <bits/hwcap.h> directly; use <sys/auxv.h> instead." +#endif + +/* + * The following must match the kernels asm/elf.h. + * Note that these are *not* the same as the STORE FACILITY LIST bits. + */ +#define HWCAP_S390_ESAN3 1 +#define HWCAP_S390_ZARCH 2 +#define HWCAP_S390_STFLE 4 +#define HWCAP_S390_MSA 8 +#define HWCAP_S390_LDISP 16 +#define HWCAP_S390_EIMM 32 +#define HWCAP_S390_DFP 64 +#define HWCAP_S390_HPAGE 128 +#define HWCAP_S390_ETF3EH 256 +#define HWCAP_S390_HIGH_GPRS 512 +#define HWCAP_S390_TE 1024 +#define HWCAP_S390_VX 2048 diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/ipc.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/ipc.h new file mode 100644 index 0000000000..3d462dbca4 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/ipc.h @@ -0,0 +1,60 @@ +/* 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/>. */ + +#ifndef _SYS_IPC_H +# error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead." +#endif + +#include <bits/types.h> +#include <bits/wordsize.h> + +/* Mode bits for `msgget', `semget', and `shmget'. */ +#define IPC_CREAT 01000 /* Create key if key does not exist. */ +#define IPC_EXCL 02000 /* Fail if key exists. */ +#define IPC_NOWAIT 04000 /* Return error on wait. */ + +/* Control commands for `msgctl', `semctl', and `shmctl'. */ +#define IPC_RMID 0 /* Remove identifier. */ +#define IPC_SET 1 /* Set `ipc_perm' options. */ +#define IPC_STAT 2 /* Get `ipc_perm' options. */ +#ifdef __USE_GNU +#define IPC_INFO 3 /* See ipcs. */ +#endif + +/* Special key values. */ +#define IPC_PRIVATE ((__key_t) 0) /* Private key. */ + + +/* Data structure used to pass permission information to IPC operations. */ +struct ipc_perm + { + __key_t __key; /* Key. */ + __uid_t uid; /* Owner's user ID. */ + __gid_t gid; /* Owner's group ID. */ + __uid_t cuid; /* Creator's user ID. */ + __gid_t cgid; /* Creator's group ID. */ +#if __WORDSIZE == 64 + __mode_t mode; /* Read/write permission. */ +#else + unsigned short int mode; /* Read/write permission. */ + unsigned short int __pad1; +#endif + unsigned short int __seq; /* Sequence number. */ + unsigned short int __pad2; + unsigned long int __glibc_reserved1; + unsigned long int __glibc_reserved2; + }; diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/mman.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/mman.h new file mode 100644 index 0000000000..922cd4dfbb --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/mman.h @@ -0,0 +1,41 @@ +/* Definitions for POSIX memory map interface. Linux/s390 version. + Copyright (C) 2000-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#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/s390/bits/msq.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/msq.h new file mode 100644 index 0000000000..5eb0b9a155 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/msq.h @@ -0,0 +1,84 @@ +/* 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/>. */ + +#ifndef _SYS_MSG_H +# error "Never use <bits/msq.h> directly; include <sys/msg.h> instead." +#endif + +#include <bits/types.h> +#include <bits/wordsize.h> + +/* Define options for message queue functions. */ +#define MSG_NOERROR 010000 /* no error if message is too big */ +#ifdef __USE_GNU +# define MSG_EXCEPT 020000 /* recv any msg except of specified type */ +# define MSG_COPY 040000 /* copy (not remove) all queue messages */ +#endif + +/* Types used in the structure definition. */ +typedef unsigned long int msgqnum_t; +typedef unsigned long int msglen_t; + + +/* Structure of record for one message inside the kernel. + The type `struct msg' is opaque. */ +struct msqid_ds +{ + struct ipc_perm msg_perm; /* structure describing operation permission */ + __time_t msg_stime; /* time of last msgsnd command */ +#if __WORDSIZE != 64 + unsigned long int __glibc_reserved1; +#endif + __time_t msg_rtime; /* time of last msgrcv command */ +#if __WORDSIZE != 64 + unsigned long int __glibc_reserved2; +#endif + __time_t msg_ctime; /* time of last change */ +#if __WORDSIZE != 64 + unsigned long int __glibc_reserved3; +#endif + unsigned long int __msg_cbytes; /* current number of bytes on queue */ + msgqnum_t msg_qnum; /* number of messages currently on queue */ + msglen_t msg_qbytes; /* max number of bytes allowed on queue */ + __pid_t msg_lspid; /* pid of last msgsnd() */ + __pid_t msg_lrpid; /* pid of last msgrcv() */ + unsigned long int __glibc_reserved4; + unsigned long int __glibc_reserved5; +}; + +#ifdef __USE_MISC + +# define msg_cbytes __msg_cbytes + +/* ipcs ctl commands */ +# define MSG_STAT 11 +# define MSG_INFO 12 + +/* buffer for msgctl calls IPC_INFO, MSG_INFO */ +struct msginfo + { + int msgpool; + int msgmap; + int msgmax; + int msgmnb; + int msgmni; + int msgssz; + int msgtql; + unsigned short int msgseg; + }; + +#endif /* __USE_MISC */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/sem.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/sem.h new file mode 100644 index 0000000000..0ff0be10ef --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/sem.h @@ -0,0 +1,90 @@ +/* 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/>. */ + +#ifndef _SYS_SEM_H +# error "Never include <bits/sem.h> directly; use <sys/sem.h> instead." +#endif + +#include <sys/types.h> + +/* Flags for `semop'. */ +#define SEM_UNDO 0x1000 /* undo the operation on exit */ + +/* Commands for `semctl'. */ +#define GETPID 11 /* get sempid */ +#define GETVAL 12 /* get semval */ +#define GETALL 13 /* get all semval's */ +#define GETNCNT 14 /* get semncnt */ +#define GETZCNT 15 /* get semzcnt */ +#define SETVAL 16 /* set semval */ +#define SETALL 17 /* set all semval's */ + + +/* Data structure describing a set of semaphores. */ +struct semid_ds +{ + struct ipc_perm sem_perm; /* operation permission struct */ + __time_t sem_otime; /* last semop() time */ +#if __WORDSIZE != 64 + unsigned long int __glibc_reserved1; +#endif + __time_t sem_ctime; /* last time changed by semctl() */ +#if __WORDSIZE != 64 + unsigned long int __glibc_reserved2; +#endif + unsigned long int sem_nsems; /* number of semaphores in set */ + unsigned long int __glibc_reserved3; + unsigned long int __glibc_reserved4; +}; + +/* The user should define a union like the following to use it for arguments + for `semctl'. + + union semun + { + int val; <= value for SETVAL + struct semid_ds *buf; <= buffer for IPC_STAT & IPC_SET + unsigned short int *array; <= array for GETALL & SETALL + struct seminfo *__buf; <= buffer for IPC_INFO + }; + + Previous versions of this file used to define this union but this is + incorrect. One can test the macro _SEM_SEMUN_UNDEFINED to see whether + one must define the union or not. */ +#define _SEM_SEMUN_UNDEFINED 1 + +#ifdef __USE_MISC + +/* ipcs ctl cmds */ +# define SEM_STAT 18 +# define SEM_INFO 19 + +struct seminfo +{ + int semmap; + int semmni; + int semmns; + int semmnu; + int semmsl; + int semopm; + int semume; + int semusz; + int semvmx; + int semaem; +}; + +#endif /* __USE_MISC */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/shm.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/shm.h new file mode 100644 index 0000000000..768b16929a --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/shm.h @@ -0,0 +1,110 @@ +/* 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/>. */ + +#ifndef _SYS_SHM_H +# error "Never include <bits/shm.h> directly; use <sys/shm.h> instead." +#endif + +#include <bits/types.h> +#include <bits/wordsize.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 ()) +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() */ +#if __WORDSIZE != 64 + unsigned long int __glibc_reserved1; +#endif + __time_t shm_dtime; /* time of last shmdt() */ +#if __WORDSIZE != 64 + unsigned long int __glibc_reserved2; +#endif + __time_t shm_ctime; /* time of last change by shmctl() */ +#if __WORDSIZE != 64 + unsigned long int __glibc_reserved3; +#endif + __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/s390/bits/sigaction.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/sigaction.h new file mode 100644 index 0000000000..9fc4ba41ca --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/sigaction.h @@ -0,0 +1,112 @@ +/* Definitions for 31 & 64 bit S/390 sigaction. + 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/>. */ + +#ifndef _SIGNAL_H +# error "Never include <bits/sigaction.h> directly; use <signal.h> instead." +#endif + +#include <bits/wordsize.h> + +#if __WORDSIZE == 64 +/* Structure describing the action to be taken when a signal arrives. */ +struct sigaction + { + /* Signal handler. */ +#ifdef __USE_POSIX199309 + union + { + /* Used if SA_SIGINFO is not set. */ + __sighandler_t sa_handler; + /* Used if SA_SIGINFO is set. */ + void (*sa_sigaction) (int, siginfo_t *, void *); + } + __sigaction_handler; +# define sa_handler __sigaction_handler.sa_handler +# define sa_sigaction __sigaction_handler.sa_sigaction +#else + __sighandler_t sa_handler; +#endif + + /* Special flags. */ + int __glibc_reserved0; + int sa_flags; + + /* Restore handler. */ + void (*sa_restorer) (void); + + /* Additional set of signals to be blocked. */ + __sigset_t sa_mask; + }; +#else +/* Structure describing the action to be taken when a signal arrives. */ +struct sigaction + { + /* Signal handler. */ +#ifdef __USE_POSIX199309 + union + { + /* Used if SA_SIGINFO is not set. */ + __sighandler_t sa_handler; + /* Used if SA_SIGINFO is set. */ + void (*sa_sigaction) (int, siginfo_t *, void *); + } + __sigaction_handler; +# define sa_handler __sigaction_handler.sa_handler +# define sa_sigaction __sigaction_handler.sa_sigaction +#else + __sighandler_t sa_handler; +#endif + + /* Additional set of signals to be blocked. */ + __sigset_t sa_mask; + + /* Special flags. */ + int sa_flags; + + /* Restore handler. */ + void (*sa_restorer) (void); + }; +#endif + +/* Bits in `sa_flags'. */ +#define SA_NOCLDSTOP 1 /* Don't send SIGCHLD when children stop. */ +#define SA_NOCLDWAIT 2 /* Don't create zombie on child death. */ +#define SA_SIGINFO 4 /* Invoke signal-catching function with + three arguments instead of one. */ +#if defined __USE_UNIX98 || defined __USE_MISC +# define SA_ONSTACK 0x08000000 /* Use signal stack by using `sa_restorer'. */ +#endif +#if defined __USE_UNIX98 || defined __USE_XOPEN2K8 +# define SA_RESTART 0x10000000 /* Restart syscall on signal return. */ +# define SA_NODEFER 0x40000000 /* Don't automatically block the signal when + its handler is being executed. */ +# define SA_RESETHAND 0x80000000 /* Reset to SIG_DFL on entry to handler. */ +#endif +#ifdef __USE_MISC +# define SA_INTERRUPT 0x20000000 /* Historical no-op. */ + +/* Some aliases for the SA_ constants. */ +# define SA_NOMASK SA_NODEFER +# define SA_ONESHOT SA_RESETHAND +# define SA_STACK SA_ONSTACK +#endif + +/* Values for the HOW argument to `sigprocmask'. */ +#define SIG_BLOCK 0 /* Block signals. */ +#define SIG_UNBLOCK 1 /* Unblock signals. */ +#define SIG_SETMASK 2 /* Set the set of blocked signals. */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/stat.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/stat.h new file mode 100644 index 0000000000..c13b697737 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/stat.h @@ -0,0 +1,265 @@ +/* Copyright (C) 2000-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#if !defined _SYS_STAT_H && !defined _FCNTL_H +# error "Never include <bits/stat.h> directly; use <sys/stat.h> instead." +#endif + +#ifndef _BITS_STAT_H +#define _BITS_STAT_H 1 + +#include <bits/wordsize.h> + +#if __WORDSIZE == 64 +/* Versions of the `struct stat' data structure. */ +# define _STAT_VER_KERNEL 0 +# define _STAT_VER_LINUX 1 +# define _STAT_VER _STAT_VER_LINUX + +/* Versions of the `xmknod' interface. */ +#define _MKNOD_VER_LINUX 0 +#else +/* Versions of the `struct stat' data structure. */ +# define _STAT_VER_LINUX_OLD 1 +# define _STAT_VER_KERNEL 1 +# define _STAT_VER_SVR4 2 +# define _STAT_VER_LINUX 3 +# define _STAT_VER _STAT_VER_LINUX + +/* Versions of the `xmknod' interface. */ +# define _MKNOD_VER_LINUX 1 +# define _MKNOD_VER_SVR4 2 +# define _MKNOD_VER _MKNOD_VER_LINUX +#endif + +#if __WORDSIZE == 64 +struct stat + { + __dev_t st_dev; /* Device. */ + __ino_t st_ino; /* File serial number. */ + __nlink_t st_nlink; /* Link count. */ + __mode_t st_mode; /* File mode. */ + __uid_t st_uid; /* User ID of the file's owner. */ + __gid_t st_gid; /* Group ID of the file's group.*/ + int __glibc_reserved0; + __dev_t st_rdev; /* Device number, if device. */ + __off_t st_size; /* Size of file, in bytes. */ +#ifdef __USE_XOPEN2K8 + /* Nanosecond resolution timestamps are stored in a format + equivalent to 'struct timespec'. This is the type used + whenever possible but the Unix namespace rules do not allow the + identifier 'timespec' to appear in the <sys/stat.h> header. + Therefore we have to handle the use of this header in strictly + standard-compliant sources special. */ + struct timespec st_atim; /* Time of last access. */ + struct timespec st_mtim; /* Time of last modification. */ + struct timespec st_ctim; /* Time of last status change. */ +# define st_atime st_atim.tv_sec /* Backward compatibility. */ +# define st_mtime st_mtim.tv_sec +# define st_ctime st_ctim.tv_sec +#else + __time_t st_atime; /* Time of last access. */ + unsigned long int st_atimensec; /* Nscecs of last access. */ + __time_t st_mtime; /* Time of last modification. */ + unsigned long int st_mtimensec; /* Nsecs of last modification. */ + __time_t st_ctime; /* Time of last status change. */ + unsigned long int st_ctimensec; /* Nsecs of last status change. */ +#endif + __blksize_t st_blksize; /* Optimal block size for I/O. */ + __blkcnt_t st_blocks; /* Nr. 512-byte blocks allocated. */ + long int __glibc_reserved[3]; + }; +#else +struct stat + { + __dev_t st_dev; /* Device. */ + unsigned int __pad1; +# ifndef __USE_FILE_OFFSET64 + __ino_t st_ino; /* File serial number. */ +# else + __ino_t __st_ino; /* 32bit file serial number. */ +# endif + __mode_t st_mode; /* File mode. */ + __nlink_t st_nlink; /* Link count. */ + __uid_t st_uid; /* User ID of the file's owner. */ + __gid_t st_gid; /* Group ID of the file's group.*/ + __dev_t st_rdev; /* Device number, if device. */ + unsigned int __pad2; +# ifndef __USE_FILE_OFFSET64 + __off_t st_size; /* Size of file, in bytes. */ +# else + __off64_t st_size; /* Size of file, in bytes. */ +# endif + __blksize_t st_blksize; /* Optimal block size for I/O. */ + +# ifndef __USE_FILE_OFFSET64 + __blkcnt_t st_blocks; /* Number 512-byte blocks allocated. */ +# else + __blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */ +# endif +# ifdef __USE_XOPEN2K8 + /* Nanosecond resolution timestamps are stored in a format + equivalent to 'struct timespec'. This is the type used + whenever possible but the Unix namespace rules do not allow the + identifier 'timespec' to appear in the <sys/stat.h> header. + Therefore we have to handle the use of this header in strictly + standard-compliant sources special. */ + struct timespec st_atim; /* Time of last access. */ + struct timespec st_mtim; /* Time of last modification. */ + struct timespec st_ctim; /* Time of last status change. */ +# define st_atime st_atim.tv_sec /* Backward compatibility. */ +# define st_mtime st_mtim.tv_sec +# define st_ctime st_ctim.tv_sec +# else + __time_t st_atime; /* Time of last access. */ + unsigned long int st_atimensec; /* Nscecs of last access. */ + __time_t st_mtime; /* Time of last modification. */ + unsigned long int st_mtimensec; /* Nsecs of last modification. */ + __time_t st_ctime; /* Time of last status change. */ + unsigned long int st_ctimensec; /* Nsecs of last status change. */ +# endif +# ifndef __USE_FILE_OFFSET64 + unsigned long int __glibc_reserved4; + unsigned long int __glibc_reserved5; +# else + __ino64_t st_ino; /* File serial number. */ +# endif + }; +#endif + +#ifdef __USE_LARGEFILE64 +# if __WORDSIZE == 64 +/* Note stat64 is the same shape as stat. */ +struct stat64 + { + __dev_t st_dev; /* Device. */ + __ino64_t st_ino; /* File serial number. */ + __nlink_t st_nlink; /* Link count. */ + __mode_t st_mode; /* File mode. */ + __uid_t st_uid; /* User ID of the file's owner. */ + __gid_t st_gid; /* Group ID of the file's group.*/ + int __glibc_reserved0; + __dev_t st_rdev; /* Device number, if device. */ + __off_t st_size; /* Size of file, in bytes. */ +# ifdef __USE_XOPEN2K8 + /* Nanosecond resolution timestamps are stored in a format + equivalent to 'struct timespec'. This is the type used + whenever possible but the Unix namespace rules do not allow the + identifier 'timespec' to appear in the <sys/stat.h> header. + Therefore we have to handle the use of this header in strictly + standard-compliant sources special. */ + struct timespec st_atim; /* Time of last access. */ + struct timespec st_mtim; /* Time of last modification. */ + struct timespec st_ctim; /* Time of last status change. */ +# define st_atime st_atim.tv_sec /* Backward compatibility. */ +# define st_mtime st_mtim.tv_sec +# define st_ctime st_ctim.tv_sec +# else + __time_t st_atime; /* Time of last access. */ + unsigned long int st_atimensec; /* Nscecs of last access. */ + __time_t st_mtime; /* Time of last modification. */ + unsigned long int st_mtimensec; /* Nsecs of last modification. */ + __time_t st_ctime; /* Time of last status change. */ + unsigned long int st_ctimensec; /* Nsecs of last status change. */ +# endif + __blksize_t st_blksize; /* Optimal block size for I/O. */ + __blkcnt64_t st_blocks; /* Nr. 512-byte blocks allocated. */ + long int __glibc_reserved[3]; + }; +# else +struct stat64 + { + __dev_t st_dev; /* Device. */ + unsigned int __pad1; + + __ino_t __st_ino; /* 32bit file serial number. */ + __mode_t st_mode; /* File mode. */ + __nlink_t st_nlink; /* Link count. */ + __uid_t st_uid; /* User ID of the file's owner. */ + __gid_t st_gid; /* Group ID of the file's group.*/ + __dev_t st_rdev; /* Device number, if device. */ + unsigned int __pad2; + __off64_t st_size; /* Size of file, in bytes. */ + __blksize_t st_blksize; /* Optimal block size for I/O. */ + + __blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */ +# ifdef __USE_XOPEN2K8 + /* Nanosecond resolution timestamps are stored in a format + equivalent to 'struct timespec'. This is the type used + whenever possible but the Unix namespace rules do not allow the + identifier 'timespec' to appear in the <sys/stat.h> header. + Therefore we have to handle the use of this header in strictly + standard-compliant sources special. */ + struct timespec st_atim; /* Time of last access. */ + struct timespec st_mtim; /* Time of last modification. */ + struct timespec st_ctim; /* Time of last status change. */ +# define st_atime st_atim.tv_sec /* Backward compatibility. */ +# define st_mtime st_mtim.tv_sec +# define st_ctime st_ctim.tv_sec +# else + __time_t st_atime; /* Time of last access. */ + unsigned long int st_atimensec; /* Nscecs of last access. */ + __time_t st_mtime; /* Time of last modification. */ + unsigned long int st_mtimensec; /* Nsecs of last modification. */ + __time_t st_ctime; /* Time of last status change. */ + unsigned long int st_ctimensec; /* Nsecs of last status change. */ +# endif + __ino64_t st_ino; /* File serial number. */ + }; +# endif +#endif + +/* Tell code we have these members. */ +#define _STATBUF_ST_BLKSIZE +#define _STATBUF_ST_RDEV +/* Nanosecond resolution time values are supported. */ +#define _STATBUF_ST_NSEC + +/* Encoding of the file mode. */ + +#define __S_IFMT 0170000 /* These bits determine file type. */ + +/* File types. */ +#define __S_IFDIR 0040000 /* Directory. */ +#define __S_IFCHR 0020000 /* Character device. */ +#define __S_IFBLK 0060000 /* Block device. */ +#define __S_IFREG 0100000 /* Regular file. */ +#define __S_IFIFO 0010000 /* FIFO. */ +#define __S_IFLNK 0120000 /* Symbolic link. */ +#define __S_IFSOCK 0140000 /* Socket. */ + +/* POSIX.1b objects. Note that these macros always evaluate to zero. But + they do it by enforcing the correct use of the macros. */ +#define __S_TYPEISMQ(buf) ((buf)->st_mode - (buf)->st_mode) +#define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode) +#define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode) + +/* Protection bits. */ + +#define __S_ISUID 04000 /* Set user ID on execution. */ +#define __S_ISGID 02000 /* Set group ID on execution. */ +#define __S_ISVTX 01000 /* Save swapped text after use (sticky). */ +#define __S_IREAD 0400 /* Read by owner. */ +#define __S_IWRITE 0200 /* Write by owner. */ +#define __S_IEXEC 0100 /* Execute by owner. */ + +#ifdef __USE_ATFILE +# define UTIME_NOW ((1l << 30) - 1l) +# define UTIME_OMIT ((1l << 30) - 2l) +#endif + +#endif /* bits/stat.h */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/statfs.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/statfs.h new file mode 100644 index 0000000000..4413da4f57 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/statfs.h @@ -0,0 +1,69 @@ +/* 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_STATFS_H +# error "Never include <bits/statfs.h> directly; use <sys/statfs.h> instead." +#endif + +#include <bits/types.h> /* for __fsid_t and __fsblkcnt_t. */ + +struct statfs + { + unsigned int f_type; + unsigned int f_bsize; +#ifndef __USE_FILE_OFFSET64 + __fsblkcnt_t f_blocks; + __fsblkcnt_t f_bfree; + __fsblkcnt_t f_bavail; + __fsfilcnt_t f_files; + __fsfilcnt_t f_ffree; +#else + __fsblkcnt64_t f_blocks; + __fsblkcnt64_t f_bfree; + __fsblkcnt64_t f_bavail; + __fsfilcnt64_t f_files; + __fsfilcnt64_t f_ffree; +#endif + __fsid_t f_fsid; + unsigned int f_namelen; + unsigned int f_frsize; + unsigned int f_flags; + unsigned int f_spare[4]; + }; + +#ifdef __USE_LARGEFILE64 +struct statfs64 + { + unsigned int f_type; + unsigned int f_bsize; + __fsblkcnt64_t f_blocks; + __fsblkcnt64_t f_bfree; + __fsblkcnt64_t f_bavail; + __fsfilcnt64_t f_files; + __fsfilcnt64_t f_ffree; + __fsid_t f_fsid; + unsigned int f_namelen; + unsigned int f_frsize; + unsigned int f_flags; + unsigned int f_spare[4]; + }; +#endif + +/* Tell code we have this member. */ +#define _STATFS_F_NAMELEN +#define _STATFS_F_FRSIZE +#define _STATFS_F_FLAGS diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/typesizes.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/typesizes.h new file mode 100644 index 0000000000..566849c8ec --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/typesizes.h @@ -0,0 +1,89 @@ +/* bits/typesizes.h -- underlying types for *_t. Linux/s390 version. + 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/>. */ + +#ifndef _BITS_TYPES_H +# error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead." +#endif + +#ifndef _BITS_TYPESIZES_H +#define _BITS_TYPESIZES_H 1 + +/* See <bits/types.h> for the meaning of these macros. This file exists so + that <bits/types.h> need not vary across different GNU platforms. */ + +#define __DEV_T_TYPE __UQUAD_TYPE +#define __UID_T_TYPE __U32_TYPE +#define __GID_T_TYPE __U32_TYPE +#define __INO_T_TYPE __ULONGWORD_TYPE +#define __INO64_T_TYPE __UQUAD_TYPE +#define __MODE_T_TYPE __U32_TYPE +#define __NLINK_T_TYPE __UWORD_TYPE +#define __OFF_T_TYPE __SLONGWORD_TYPE +#define __OFF64_T_TYPE __SQUAD_TYPE +#define __PID_T_TYPE __S32_TYPE +#define __RLIM_T_TYPE __ULONGWORD_TYPE +#define __RLIM64_T_TYPE __UQUAD_TYPE +#define __BLKCNT_T_TYPE __SLONGWORD_TYPE +#define __BLKCNT64_T_TYPE __SQUAD_TYPE +#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE +#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE +#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE +#define __FSFILCNT64_T_TYPE __UQUAD_TYPE +#define __FSWORD_T_TYPE __SWORD_TYPE +#define __ID_T_TYPE __U32_TYPE +#define __CLOCK_T_TYPE __SLONGWORD_TYPE +#define __TIME_T_TYPE __SLONGWORD_TYPE +#define __USECONDS_T_TYPE __U32_TYPE +#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE +#define __DADDR_T_TYPE __S32_TYPE +#define __KEY_T_TYPE __S32_TYPE +#define __CLOCKID_T_TYPE __S32_TYPE +#define __TIMER_T_TYPE void * +#define __BLKSIZE_T_TYPE __SLONGWORD_TYPE +#define __FSID_T_TYPE struct { int __val[2]; } +#if defined __GNUC__ && __GNUC__ <= 2 +/* Compatibility with g++ 2.95.x. */ +#define __SSIZE_T_TYPE __SWORD_TYPE +#else +/* size_t is unsigned long int on s390 -m31. */ +#define __SSIZE_T_TYPE __SLONGWORD_TYPE +#endif +#define __SYSCALL_SLONG_TYPE __SLONGWORD_TYPE +#define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE +#define __CPU_MASK_TYPE __ULONGWORD_TYPE + +#ifdef __s390x__ +/* Tell the libc code that off_t and off64_t are actually the same type + for all ABI purposes, even if possibly expressed as different base types + for C type-checking purposes. */ +# define __OFF_T_MATCHES_OFF64_T 1 + +/* Same for ino_t and ino64_t. */ +# define __INO_T_MATCHES_INO64_T 1 + +/* And for __rlim_t and __rlim64_t. */ +# define __RLIM_T_MATCHES_RLIM64_T 1 +#else +# define __RLIM_T_MATCHES_RLIM64_T 0 +#endif + +/* Number of descriptors that can fit in an `fd_set'. */ +#define __FD_SETSIZE 1024 + + +#endif /* bits/typesizes.h */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/utmp.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/utmp.h new file mode 100644 index 0000000000..36114c3b0e --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/utmp.h @@ -0,0 +1,123 @@ +/* The `struct utmp' type, describing entries in the utmp file. GNU version. + Copyright (C) 1993-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 _UTMP_H +# error "Never include <bits/utmp.h> directly; use <utmp.h> instead." +#endif + +#include <paths.h> +#include <sys/time.h> +#include <sys/types.h> +#include <bits/wordsize.h> + + +#define UT_LINESIZE 32 +#define UT_NAMESIZE 32 +#define UT_HOSTSIZE 256 + + +/* The structure describing an entry in the database of + previous logins. */ +struct lastlog + { +#if __WORDSIZE == 32 + int64_t ll_time; +#else + __time_t ll_time; +#endif + char ll_line[UT_LINESIZE]; + char ll_host[UT_HOSTSIZE]; + }; + + +/* The structure describing the status of a terminated process. This + type is used in `struct utmp' below. */ +struct exit_status + { + short int e_termination; /* Process termination status. */ + short int e_exit; /* Process exit status. */ + }; + + +/* The structure describing an entry in the user accounting database. */ +struct utmp +{ + short int ut_type; /* Type of login. */ + pid_t ut_pid; /* Process ID of login process. */ + char ut_line[UT_LINESIZE]; /* Devicename. */ + char ut_id[4]; /* Inittab ID. */ + char ut_user[UT_NAMESIZE]; /* Username. */ + char ut_host[UT_HOSTSIZE]; /* Hostname for remote login. */ + struct exit_status ut_exit; /* Exit status of a process marked + as DEAD_PROCESS. */ +/* The ut_session and ut_tv fields must be the same size when compiled + 32- and 64-bit. This allows data files and shared memory to be + shared between 32- and 64-bit applications. */ +#if __WORDSIZE == 32 + int64_t ut_session; /* Session ID, used for windowing. */ + struct + { + int64_t tv_sec; /* Seconds. */ + int64_t tv_usec; /* Microseconds. */ + } ut_tv; /* Time entry was made. */ +#else + long int ut_session; /* Session ID, used for windowing. */ + struct timeval ut_tv; /* Time entry was made. */ +#endif + + int32_t ut_addr_v6[4]; /* Internet address of remote host. */ + char __glibc_reserved[20]; /* Reserved for future use. */ +}; + +/* Backwards compatibility hacks. */ +#define ut_name ut_user +#ifndef _NO_UT_TIME +/* We have a problem here: `ut_time' is also used otherwise. Define + _NO_UT_TIME if the compiler complains. */ +# define ut_time ut_tv.tv_sec +#endif +#define ut_xtime ut_tv.tv_sec +#define ut_addr ut_addr_v6[0] + + +/* Values for the `ut_type' field of a `struct utmp'. */ +#define EMPTY 0 /* No valid user accounting information. */ + +#define RUN_LVL 1 /* The system's runlevel. */ +#define BOOT_TIME 2 /* Time of system boot. */ +#define NEW_TIME 3 /* Time after system clock changed. */ +#define OLD_TIME 4 /* Time when system clock changed. */ + +#define INIT_PROCESS 5 /* Process spawned by the init process. */ +#define LOGIN_PROCESS 6 /* Session leader of a logged in user. */ +#define USER_PROCESS 7 /* Normal process. */ +#define DEAD_PROCESS 8 /* Terminated process. */ + +#define ACCOUNTING 9 + +/* Old Linux name for the EMPTY type. */ +#define UT_UNKNOWN EMPTY + + +/* Tell the user that we have a modern system with UT_HOST, UT_PID, + UT_TYPE, UT_ID and UT_TV fields. */ +#define _HAVE_UT_TYPE 1 +#define _HAVE_UT_PID 1 +#define _HAVE_UT_ID 1 +#define _HAVE_UT_TV 1 +#define _HAVE_UT_HOST 1 diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/utmpx.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/utmpx.h new file mode 100644 index 0000000000..5850c1ec63 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/bits/utmpx.h @@ -0,0 +1,102 @@ +/* Structures and definitions for the user accounting database. GNU 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 _UTMPX_H +# error "Never include <bits/utmpx.h> directly; use <utmpx.h> instead." +#endif + +#include <bits/types.h> +#include <sys/time.h> +#include <bits/wordsize.h> + + +#ifdef __USE_GNU +# include <paths.h> +# define _PATH_UTMPX _PATH_UTMP +# define _PATH_WTMPX _PATH_WTMP +#endif + + +#define __UT_LINESIZE 32 +#define __UT_NAMESIZE 32 +#define __UT_HOSTSIZE 256 + + +/* The structure describing the status of a terminated process. This + type is used in `struct utmpx' below. */ +struct __exit_status + { +#ifdef __USE_GNU + short int e_termination; /* Process termination status. */ + short int e_exit; /* Process exit status. */ +#else + short int __e_termination; /* Process termination status. */ + short int __e_exit; /* Process exit status. */ +#endif + }; + + +/* The structure describing an entry in the user accounting database. */ +struct utmpx +{ + short int ut_type; /* Type of login. */ + __pid_t ut_pid; /* Process ID of login process. */ + char ut_line[__UT_LINESIZE]; /* Devicename. */ + char ut_id[4]; /* Inittab ID. */ + char ut_user[__UT_NAMESIZE]; /* Username. */ + char ut_host[__UT_HOSTSIZE]; /* Hostname for remote login. */ + struct __exit_status ut_exit; /* Exit status of a process marked + as DEAD_PROCESS. */ + +/* The fields ut_session and ut_tv must be the same size when compiled + 32- and 64-bit. This allows files and shared memory to be shared + between 32- and 64-bit applications. */ +#if __WORDSIZE == 32 + __int64_t ut_session; /* Session ID, used for windowing. */ + struct + { + __int64_t tv_sec; /* Seconds. */ + __int64_t tv_usec; /* Microseconds. */ + } ut_tv; /* Time entry was made. */ +#else + long int ut_session; /* Session ID, used for windowing. */ + struct timeval ut_tv; /* Time entry was made. */ +#endif + __int32_t ut_addr_v6[4]; /* Internet address of remote host. */ + char __glibc_reserved[20]; /* Reserved for future use. */ +}; + + +/* Values for the `ut_type' field of a `struct utmpx'. */ +#define EMPTY 0 /* No valid user accounting information. */ + +#ifdef __USE_GNU +# define RUN_LVL 1 /* The system's runlevel. */ +#endif +#define BOOT_TIME 2 /* Time of system boot. */ +#define NEW_TIME 3 /* Time after system clock changed. */ +#define OLD_TIME 4 /* Time when system clock changed. */ + +#define INIT_PROCESS 5 /* Process spawned by the init process. */ +#define LOGIN_PROCESS 6 /* Session leader of a logged in user. */ +#define USER_PROCESS 7 /* Normal process. */ +#define DEAD_PROCESS 8 /* Terminated process. */ + +#ifdef __USE_GNU +# define ACCOUNTING 9 /* System accounting. */ +#endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/brk.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/brk.c new file mode 100644 index 0000000000..2e5ad701ff --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/brk.c @@ -0,0 +1,55 @@ +/* + Copyright (C) 2000-2017 Free Software Foundation, Inc. + Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have 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> + +void *__curbrk = 0; + +/* Old braindamage in GCC's crtstuff.c requires this symbol in an attempt + to work around different old braindamage in the old Linux/x86 ELF + dynamic linker. Sigh. */ +weak_alias (__curbrk, ___brk_addr) + +int +__brk (void *addr) +{ + void *newbrk; + + { + register void *__addr __asm__("2") = addr; + + __asm__ ("svc %b1\n\t" /* call sys_brk */ + : "=d" (__addr) + : "I" (SYS_ify(brk)), "r" (__addr) + : "cc", "memory" ); + newbrk = __addr; + } + __curbrk = newbrk; + + if (newbrk < addr) + { + __set_errno (ENOMEM); + return -1; + } + + return 0; +} +weak_alias (__brk, brk) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/configure b/REORG.TODO/sysdeps/unix/sysv/linux/s390/configure new file mode 100644 index 0000000000..1d735d7b9c --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/configure @@ -0,0 +1,5 @@ +# This file is generated from configure.ac by Autoconf. DO NOT EDIT! + # Local configure fragment for sysdeps/unix/sysv/linux/s390. + +libc_cv_gcc_unwind_find_fde=yes +ldd_rewrite_script=sysdeps/unix/sysv/linux/s390/ldd-rewrite.sed diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/configure.ac b/REORG.TODO/sysdeps/unix/sysv/linux/s390/configure.ac new file mode 100644 index 0000000000..978450c94b --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/configure.ac @@ -0,0 +1,5 @@ +GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. +# Local configure fragment for sysdeps/unix/sysv/linux/s390. + +libc_cv_gcc_unwind_find_fde=yes +ldd_rewrite_script=sysdeps/unix/sysv/linux/s390/ldd-rewrite.sed diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/dl-cache.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/dl-cache.h new file mode 100644 index 0000000000..766bba4265 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/dl-cache.h @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/sparc/dl-cache.h> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/dl-procinfo.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/dl-procinfo.h new file mode 100644 index 0000000000..7cbce0a043 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/dl-procinfo.h @@ -0,0 +1,49 @@ +/* Linux/s390 version of processor capability information handling macros. + Copyright (C) 2006-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Martin Schwidefsky <schwidefsky@de.ibm.com>, 2006. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have 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_S390_PROCINFO_H +#define _DL_S390_PROCINFO_H 1 +#include <sysdeps/s390/dl-procinfo.h> +#include <ldsodefs.h> + + +#undef _dl_procinfo +static inline int +__attribute__ ((unused)) +_dl_procinfo (unsigned int type, unsigned long int word) +{ + /* This table should match the information from arch/s390/kernel/setup.c + in the kernel sources. */ + int i; + + /* Fallback to unknown output mechanism. */ + if (type == AT_HWCAP2) + return -1; + + _dl_printf ("AT_HWCAP: "); + + for (i = 0; i < _DL_HWCAP_COUNT; ++i) + if (word & (1UL << i)) + _dl_printf (" %s", GLRO(dl_s390_cap_flags)[i]); + + _dl_printf ("\n"); + + return 0; +} +#endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/elision-conf.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/elision-conf.c new file mode 100644 index 0000000000..cc0fdef2aa --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/elision-conf.c @@ -0,0 +1,82 @@ +/* Lock elision tunable parameters. + 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 <config.h> +#include <pthreadP.h> +#include <elision-conf.h> +#include <unistd.h> +#include <dl-procinfo.h> + +/* Reasonable initial tuning values, may be revised in the future. + This is a conservative initial value. */ + +struct elision_config __elision_aconf = + { + /* How often to not attempt to use elision if a transaction aborted + because the lock is already acquired. Expressed in number of lock + acquisition attempts. */ + .skip_lock_busy = 3, + /* How often to not attempt to use elision if a transaction aborted due + to reasons other than other threads' memory accesses. Expressed in + number of lock acquisition attempts. */ + .skip_lock_internal_abort = 3, + /* How often to not attempt to use elision if a lock used up all retries + without success. Expressed in number of lock acquisition attempts. */ + .skip_lock_out_of_tbegin_retries = 3, + /* How often we try using elision if there is chance for the transaction + to finish execution (e.g., it wasn't aborted due to the lock being + already acquired. */ + .try_tbegin = 3, + /* Same as SKIP_LOCK_INTERNAL_ABORT but for trylock. */ + .skip_trylock_internal_abort = 3, + }; + +/* Force elision for all new locks. This is used to decide whether existing + DEFAULT locks should be automatically upgraded to elision in + pthread_mutex_lock(). Disabled for suid programs. Only used when elision + is available. */ + +int __pthread_force_elision attribute_hidden = 0; + +/* Initialize elison. */ + +static void +elision_init (int argc __attribute__ ((unused)), + char **argv __attribute__ ((unused)), + char **environ) +{ + /* Set when the CPU and the kernel supports transactional execution. + When false elision is never attempted. */ + int elision_available = (GLRO (dl_hwcap) & HWCAP_S390_TE) ? 1 : 0; + + __pthread_force_elision = __libc_enable_secure ? 0 : elision_available; +} + +#ifdef SHARED +# define INIT_SECTION ".init_array" +# define MAYBE_CONST +#else +# define INIT_SECTION ".preinit_array" +# define MAYBE_CONST const +#endif + +void (*MAYBE_CONST __pthread_init_array []) (int, char **, char **) + __attribute__ ((section (INIT_SECTION), aligned (sizeof (void *)))) = +{ + &elision_init +}; diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/elision-conf.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/elision-conf.h new file mode 100644 index 0000000000..3143f3b114 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/elision-conf.h @@ -0,0 +1,44 @@ +/* Lock elision tunable parameters. + 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/>. */ +#ifdef ENABLE_LOCK_ELISION +#ifndef _ELISION_CONF_H +#define _ELISION_CONF_H 1 + +#include <pthread.h> +#include <time.h> + +/* Should make sure there is no false sharing on this. */ + +struct elision_config +{ + int skip_lock_busy; + int skip_lock_internal_abort; + int skip_lock_out_of_tbegin_retries; + int try_tbegin; + int skip_trylock_internal_abort; +}; + +extern struct elision_config __elision_aconf attribute_hidden; + +extern int __pthread_force_elision attribute_hidden; + +/* Tell the test suite to test elision for this architecture. */ +#define HAVE_ELISION 1 + +#endif +#endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/elision-lock.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/elision-lock.c new file mode 100644 index 0000000000..00815375c7 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/elision-lock.c @@ -0,0 +1,125 @@ +/* Elided pthread mutex lock. + 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 <pthread.h> +#include <pthreadP.h> +#include <lowlevellock.h> +#include <htm.h> +#include <elision-conf.h> +#include <stdint.h> + +#if !defined(LLL_LOCK) && !defined(EXTRAARG) +/* Make sure the configuration code is always linked in for static + libraries. */ +#include "elision-conf.c" +#endif + +#ifndef EXTRAARG +#define EXTRAARG +#endif +#ifndef LLL_LOCK +#define LLL_LOCK(a,b) lll_lock(a,b), 0 +#endif + +#define aconf __elision_aconf + +/* Adaptive lock using transactions. + By default the lock region is run as a transaction, and when it + aborts or the lock is busy the lock adapts itself. */ + +int +__lll_lock_elision (int *futex, short *adapt_count, EXTRAARG int private) +{ + /* adapt_count can be accessed concurrently; these accesses can be both + inside of transactions (if critical sections are nested and the outer + critical section uses lock elision) and outside of transactions. Thus, + we need to use atomic accesses to avoid data races. However, the + value of adapt_count is just a hint, so relaxed MO accesses are + sufficient. */ + if (atomic_load_relaxed (adapt_count) <= 0 && aconf.try_tbegin > 0) + { + /* Start a transaction and retry it automatically if it aborts with + _HTM_TBEGIN_TRANSIENT. This macro calls tbegin at most retry_cnt + + 1 times. The second argument is considered as retry_cnt. */ + int status = __libc_tbegin_retry ((void *) 0, aconf.try_tbegin - 1); + if (__glibc_likely (status == _HTM_TBEGIN_STARTED)) + { + /* Check the futex to make sure nobody has touched it in the + mean time. This forces the futex into the cache and makes + sure the transaction aborts if another thread acquires the lock + concurrently. */ + if (__glibc_likely (atomic_load_relaxed (futex) == 0)) + /* Lock was free. Return to user code in a transaction. */ + return 0; + + /* Lock was busy. Fall back to normal locking. + This can be the case if e.g. adapt_count was decremented to zero + by a former release and another thread has been waken up and + acquired it. */ + if (__glibc_likely (__libc_tx_nesting_depth () <= 1)) + { + /* In a non-nested transaction there is no need to abort, + which is expensive. Simply end the started transaction. */ + __libc_tend (); + /* Don't try to use transactions for the next couple of times. + See above for why relaxed MO is sufficient. */ + if (aconf.skip_lock_busy > 0) + atomic_store_relaxed (adapt_count, aconf.skip_lock_busy); + } + else /* nesting depth is > 1 */ + { + /* A nested transaction will abort eventually because it + cannot make any progress before *futex changes back to 0. + So we may as well abort immediately. + This persistently aborts the outer transaction to force + the outer mutex use the default lock instead of retrying + with transactions until the try_tbegin of the outer mutex + is zero. + The adapt_count of this inner mutex is not changed, + because using the default lock with the inner mutex + would abort the outer transaction. */ + __libc_tabort (_HTM_FIRST_USER_ABORT_CODE | 1); + __builtin_unreachable (); + } + } + else if (status != _HTM_TBEGIN_TRANSIENT) + { + /* A persistent abort (cc 1 or 3) indicates that a retry is + probably futile. Use the normal locking now and for the + next couple of calls. + Be careful to avoid writing to the lock. See above for why + relaxed MO is sufficient. */ + if (aconf.skip_lock_internal_abort > 0) + atomic_store_relaxed (adapt_count, + aconf.skip_lock_internal_abort); + } + else + { + /* The transaction failed for some retries with + _HTM_TBEGIN_TRANSIENT. Use the normal locking now and for the + next couple of calls. */ + if (aconf.skip_lock_out_of_tbegin_retries > 0) + atomic_store_relaxed (adapt_count, + aconf.skip_lock_out_of_tbegin_retries); + } + } + + /* Use normal locking as fallback path if the transaction does not + succeed. */ + return LLL_LOCK ((*futex), private); +} diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/elision-timed.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/elision-timed.c new file mode 100644 index 0000000000..8096ca14ad --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/elision-timed.c @@ -0,0 +1,26 @@ +/* Lock elision timed lock. + 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 <time.h> +#include <elision-conf.h> +#include <lowlevellock.h> +#define __lll_lock_elision __lll_timedlock_elision +#define EXTRAARG const struct timespec *t, +#undef LLL_LOCK +#define LLL_LOCK(a, b) lll_timedlock(a, t, b) +#include "elision-lock.c" diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/elision-trylock.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/elision-trylock.c new file mode 100644 index 0000000000..aa09073324 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/elision-trylock.c @@ -0,0 +1,97 @@ +/* Elided pthread mutex trylock. + 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 <pthread.h> +#include <pthreadP.h> +#include <lowlevellock.h> +#include <htm.h> +#include <elision-conf.h> + +#define aconf __elision_aconf + +/* Try to elide a futex trylock. FUTEX is the futex variable. ADAPT_COUNT is + the adaptation counter in the mutex. */ + +int +__lll_trylock_elision (int *futex, short *adapt_count) +{ + /* Implement POSIX semantics by forbiding nesting elided trylocks. + Sorry. After the abort the code is re-executed + non transactional and if the lock was already locked + return an error. */ + if (__libc_tx_nesting_depth () > 0) + { + /* Note that this abort may terminate an outermost transaction that + was created outside glibc. + This persistently aborts the current transactions to force + them to use the default lock instead of retrying transactions + until their try_tbegin is zero. + */ + __libc_tabort (_HTM_FIRST_USER_ABORT_CODE | 1); + __builtin_unreachable (); + } + + /* adapt_count can be accessed concurrently; these accesses can be both + inside of transactions (if critical sections are nested and the outer + critical section uses lock elision) and outside of transactions. Thus, + we need to use atomic accesses to avoid data races. However, the + value of adapt_count is just a hint, so relaxed MO accesses are + sufficient. */ + if (atomic_load_relaxed (adapt_count) <= 0 && aconf.try_tbegin > 0) + { + int status = __libc_tbegin ((void *) 0); + if (__glibc_likely (status == _HTM_TBEGIN_STARTED)) + { + /* Check the futex to make sure nobody has touched it in the + mean time. This forces the futex into the cache and makes + sure the transaction aborts if another thread acquires the lock + concurrently. */ + if (__glibc_likely (atomic_load_relaxed (futex) == 0)) + /* Lock was free. Return to user code in a transaction. */ + return 0; + + /* Lock was busy. Fall back to normal locking. + This can be the case if e.g. adapt_count was decremented to zero + by a former release and another thread has been waken up and + acquired it. + Since we are in a non-nested transaction there is no need to abort, + which is expensive. Simply end the started transaction. */ + __libc_tend (); + /* Note: Changing the adapt_count here might abort a transaction on a + different CPU, but that could happen anyway when the futex is + acquired, so there's no need to check the nesting depth here. + See above for why relaxed MO is sufficient. */ + if (aconf.skip_lock_busy > 0) + atomic_store_relaxed (adapt_count, aconf.skip_lock_busy); + } + else if (status != _HTM_TBEGIN_TRANSIENT) + { + /* A persistent abort (cc 1 or 3) indicates that a retry is + probably futile. Use the normal locking now and for the + next couple of calls. + Be careful to avoid writing to the lock. */ + if (aconf.skip_trylock_internal_abort > 0) + *adapt_count = aconf.skip_trylock_internal_abort; + } + /* Could do some retries here. */ + } + + /* Use normal locking as fallback path if the transaction does not + succeed. */ + return lll_trylock (*futex); +} diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/elision-unlock.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/elision-unlock.c new file mode 100644 index 0000000000..c062d71b77 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/elision-unlock.c @@ -0,0 +1,61 @@ +/* Commit an elided pthread lock. + 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 <pthreadP.h> +#include <lowlevellock.h> +#include <htm.h> + +int +__lll_unlock_elision(int *futex, short *adapt_count, int private) +{ + /* If the lock is free, we elided the lock earlier. This does not + necessarily mean that we are in a transaction, because the user code may + have closed the transaction, but that is impossible to detect reliably. + Relaxed MO access to futex is sufficient because a correct program + will only release a lock it has acquired; therefore, it must either + changed the futex word's value to something !=0 or it must have used + elision; these are actions by the same thread, so these actions are + sequenced-before the relaxed load (and thus also happens-before the + relaxed load). Therefore, relaxed MO is sufficient. */ + if (atomic_load_relaxed (futex) == 0) + { + __libc_tend (); + } + else + { + /* Update the adapt_count while unlocking before completing the critical + section. adapt_count is accessed concurrently outside of a + transaction or a critical section (e.g. in elision-lock.c). So we need + to use atomic accesses. However, the value of adapt_count is just a + hint, so relaxed MO accesses are sufficient. + If adapt_count would be decremented while locking, multiple + CPUs, trying to lock the acquired mutex, will decrement adapt_count to + zero and another CPU will try to start a transaction, which will be + immediately aborted as the mutex is locked. + The update of adapt_count is done before releasing the lock as POSIX' + mutex destruction requirements disallow accesses to the mutex after it + has been released and thus could have been acquired or destroyed by + another thread. */ + short adapt_count_val = atomic_load_relaxed (adapt_count); + if (adapt_count_val > 0) + atomic_store_relaxed (adapt_count, adapt_count_val - 1); + + lll_unlock ((*futex), private); + } + return 0; +} diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/force-elision.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/force-elision.h new file mode 100644 index 0000000000..3ae3bcd566 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/force-elision.h @@ -0,0 +1,28 @@ +/* Automatic enabling of elision for mutexes + 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/>. */ + +#ifdef ENABLE_LOCK_ELISION +/* Automatically enable elision for existing user lock kinds. */ +#define FORCE_ELISION(m, s) \ + if (__pthread_force_elision \ + && (m->__data.__kind & PTHREAD_MUTEX_ELISION_FLAGS_NP) == 0) \ + { \ + mutex->__data.__kind |= PTHREAD_MUTEX_ELISION_NP; \ + s; \ + } +#endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/fpu/Implies b/REORG.TODO/sysdeps/unix/sysv/linux/s390/fpu/Implies new file mode 100644 index 0000000000..3a8e225986 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/fpu/Implies @@ -0,0 +1,2 @@ +# Override ldbl-opt with s390 specific routines. +s390/fpu diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/fpu/s_fma.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/fpu/s_fma.c new file mode 100644 index 0000000000..2b2d505030 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/fpu/s_fma.c @@ -0,0 +1,5 @@ +#include <math_ldbl_opt.h> +#include <sysdeps/s390/fpu/s_fma.c> +#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1) +compat_symbol (libm, __fma, fmal, GLIBC_2_1); +#endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/htm.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/htm.h new file mode 100644 index 0000000000..70d7f66000 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/htm.h @@ -0,0 +1,187 @@ +/* Shared HTM header. Work around false transactional execution facility + intrinsics. + + Copyright (C) 2016-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 _HTM_H +#define _HTM_H 1 + +#include <htmintrin.h> + +#ifdef __s390x__ +# define TX_FPRS_BYTES 64 +# define TX_SAVE_FPRS \ + " std %%f8, 0(%[R_FPRS])\n\t" \ + " std %%f9, 8(%[R_FPRS])\n\t" \ + " std %%f10, 16(%[R_FPRS])\n\t" \ + " std %%f11, 24(%[R_FPRS])\n\t" \ + " std %%f12, 32(%[R_FPRS])\n\t" \ + " std %%f13, 40(%[R_FPRS])\n\t" \ + " std %%f14, 48(%[R_FPRS])\n\t" \ + " std %%f15, 56(%[R_FPRS])\n\t" + +# define TX_RESTORE_FPRS \ + " ld %%f8, 0(%[R_FPRS])\n\t" \ + " ld %%f9, 8(%[R_FPRS])\n\t" \ + " ld %%f10, 16(%[R_FPRS])\n\t" \ + " ld %%f11, 24(%[R_FPRS])\n\t" \ + " ld %%f12, 32(%[R_FPRS])\n\t" \ + " ld %%f13, 40(%[R_FPRS])\n\t" \ + " ld %%f14, 48(%[R_FPRS])\n\t" \ + " ld %%f15, 56(%[R_FPRS])\n\t" + +#else + +# define TX_FPRS_BYTES 16 +# define TX_SAVE_FPRS \ + " std %%f4, 0(%[R_FPRS])\n\t" \ + " std %%f6, 8(%[R_FPRS])\n\t" + +# define TX_RESTORE_FPRS \ + " ld %%f4, 0(%[R_FPRS])\n\t" \ + " ld %%f6, 8(%[R_FPRS])\n\t" + +#endif /* ! __s390x__ */ + +/* Use own inline assembly instead of __builtin_tbegin, as tbegin + has to filter program interruptions which can't be done with the builtin. + Now the fprs have to be saved / restored here, too. + The fpc is also not saved / restored with the builtin. + The used inline assembly does not clobber the volatile fprs / vrs! + Clobbering the latter ones would force the compiler to save / restore + the call saved fprs as those overlap with the vrs, but they only need to be + restored if the transaction fails but not if the transaction is successfully + started. Thus the user of the tbegin macros in this header file has to + compile the file / function with -msoft-float. It prevents gcc from using + fprs / vrs. */ +#define __libc_tbegin(tdb) __libc_tbegin_base(tdb,,,) + +#define __libc_tbegin_retry_output_regs , [R_TX_CNT] "+&d" (__tx_cnt) +#define __libc_tbegin_retry_input_regs(retry_cnt) , [R_RETRY] "d" (retry_cnt) +#define __libc_tbegin_retry_abort_path_insn \ + /* If tbegin returned _HTM_TBEGIN_TRANSIENT, retry immediately so \ + that max tbegin_cnt transactions are tried. Otherwise return and \ + let the caller of this macro do the fallback path. */ \ + " jnh 1f\n\t" /* cc 1/3: jump to fallback path. */ \ + /* tbegin returned _HTM_TBEGIN_TRANSIENT: retry with transaction. */ \ + " crje %[R_TX_CNT], %[R_RETRY], 1f\n\t" /* Reached max retries? */ \ + " ahi %[R_TX_CNT], 1\n\t" \ + " ppa %[R_TX_CNT], 0, 1\n\t" /* Transaction-Abort Assist. */ \ + " j 2b\n\t" /* Loop to tbegin. */ + +/* Same as __libc_tbegin except if tbegin aborts with _HTM_TBEGIN_TRANSIENT. + Then this macros restores the fpc, fprs and automatically retries up to + retry_cnt tbegins. Further saving of the state is omitted as it is already + saved. This macro calls tbegin at most as retry_cnt + 1 times. */ +#define __libc_tbegin_retry(tdb, retry_cnt) \ + ({ int __ret; \ + int __tx_cnt = 0; \ + __ret = __libc_tbegin_base(tdb, \ + __libc_tbegin_retry_abort_path_insn, \ + __libc_tbegin_retry_output_regs, \ + __libc_tbegin_retry_input_regs(retry_cnt)); \ + __ret; \ + }) + +#define __libc_tbegin_base(tdb, abort_path_insn, output_regs, input_regs) \ + ({ int __ret; \ + int __fpc; \ + char __fprs[TX_FPRS_BYTES]; \ + __asm__ __volatile__ (".machine push\n\t" \ + ".machinemode \"zarch_nohighgprs\"\n\t" \ + ".machine \"all\"\n\t" \ + /* Save state at the outermost transaction. \ + As extracting nesting depth is expensive \ + on at least zEC12, save fprs at inner \ + transactions, too. \ + The fpc and fprs are saved here as they \ + are not saved by tbegin. There exist no \ + call-saved vrs, thus they are not saved \ + here. */ \ + " efpc %[R_FPC]\n\t" \ + TX_SAVE_FPRS \ + /* Begin transaction: save all gprs, allow \ + ar modification and fp operations. Some \ + program-interruptions (e.g. a null \ + pointer access) are filtered and the \ + transaction will abort. In this case \ + the normal lock path will execute it \ + again and result in a core dump wich does \ + now show at tbegin but the real executed \ + instruction. \ + However it is not guaranteed that this \ + retry operate on the same data and thus \ + may not end in an program-interruption. \ + Note: This could also be used to probe \ + memory for being accessible! */ \ + "2: tbegin 0, 0xFF0E\n\t" \ + /* Branch away in abort case (this is the \ + prefered sequence. See PoP in chapter 5 \ + Transactional-Execution Facility \ + Operation). */ \ + " jnz 0f\n\t" \ + /* Transaction has successfully started. */ \ + " lhi %[R_RET], 0\n\t" \ + " j 1f\n\t" \ + /* Transaction has aborted. Now we are at \ + the outermost transaction. Restore fprs \ + and fpc. */ \ + "0: ipm %[R_RET]\n\t" \ + " srl %[R_RET], 28\n\t" \ + " sfpc %[R_FPC]\n\t" \ + TX_RESTORE_FPRS \ + abort_path_insn \ + "1:\n\t" \ + ".machine pop\n" \ + : [R_RET] "=&d" (__ret), \ + [R_FPC] "=&d" (__fpc) \ + output_regs \ + : [R_FPRS] "a" (__fprs) \ + input_regs \ + : "cc", "memory"); \ + __ret; \ + }) + +/* These builtins are usable in context of glibc lock elision code without any + changes. Use them. */ +#define __libc_tend() \ + ({ __asm__ __volatile__ (".machine push\n\t" \ + ".machinemode \"zarch_nohighgprs\"\n\t" \ + ".machine \"all\"\n\t"); \ + int __ret = __builtin_tend (); \ + __asm__ __volatile__ (".machine pop"); \ + __ret; \ + }) + +#define __libc_tabort(abortcode) \ + __asm__ __volatile__ (".machine push\n\t" \ + ".machinemode \"zarch_nohighgprs\"\n\t" \ + ".machine \"all\"\n\t"); \ + __builtin_tabort (abortcode); \ + __asm__ __volatile__ (".machine pop") + +#define __libc_tx_nesting_depth() \ + ({ __asm__ __volatile__ (".machine push\n\t" \ + ".machinemode \"zarch_nohighgprs\"\n\t" \ + ".machine \"all\"\n\t"); \ + int __ret = __builtin_tx_nesting_depth (); \ + __asm__ __volatile__ (".machine pop"); \ + __ret; \ + }) + +#endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/init-first.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/init-first.c new file mode 100644 index 0000000000..8bc86cf473 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/init-first.c @@ -0,0 +1,60 @@ +/* Initialization code run first thing by the ELF startup code. Linux/s390. + Copyright (C) 2008-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> + +long int (*VDSO_SYMBOL(gettimeofday)) (struct timeval *, void *) + attribute_hidden; + +long int (*VDSO_SYMBOL(clock_gettime)) (clockid_t, struct timespec *) + __attribute__ ((nocommon)); + +long int (*VDSO_SYMBOL(clock_getres)) (clockid_t, struct timespec *) + __attribute__ ((nocommon)); + +long int (*VDSO_SYMBOL(getcpu)) (unsigned *, unsigned *, void *) + attribute_hidden; + +static inline void +_libc_vdso_platform_setup (void) +{ + PREPARE_VERSION (linux2629, "LINUX_2.6.29", 123718585); + + void *p = _dl_vdso_vsym ("__kernel_gettimeofday", &linux2629); + PTR_MANGLE (p); + VDSO_SYMBOL (gettimeofday) = p; + + p = _dl_vdso_vsym ("__kernel_clock_gettime", &linux2629); + PTR_MANGLE (p); + VDSO_SYMBOL (clock_gettime) = p; + + p = _dl_vdso_vsym ("__kernel_clock_getres", &linux2629); + PTR_MANGLE (p); + VDSO_SYMBOL (clock_getres) = p; + + p = _dl_vdso_vsym ("__kernel_getcpu", &linux2629); + PTR_MANGLE (p); + VDSO_SYMBOL (getcpu) = p; +} + +# define VDSO_SETUP _libc_vdso_platform_setup +#endif + +#include <csu/init-first.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/jmp-unwind.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/jmp-unwind.c new file mode 100644 index 0000000000..3d9d4bc0b0 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/jmp-unwind.c @@ -0,0 +1,33 @@ +/* Clean up stack frames unwound by longjmp. Linux/s390 version. + 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 <setjmp.h> +#include <stddef.h> +#include <libc-lock.h> + +extern void __pthread_cleanup_upto (__jmp_buf env, char *targetframe); +#pragma weak __pthread_cleanup_upto + + +void +_longjmp_unwind (jmp_buf env, int val) +{ + char local_var; + + __libc_ptf_call (__pthread_cleanup_upto, (env->__jmpbuf, &local_var), 0); +} diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/kernel-features.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/kernel-features.h new file mode 100644 index 0000000000..f44d429365 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/kernel-features.h @@ -0,0 +1,52 @@ +/* Set flags signalling availability of kernel features based on given + kernel version number. S/390 version. + Copyright (C) 1999-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +/* S/390 uses socketcall. */ +#define __ASSUME_SOCKETCALL 1 + +/* Direct socketcalls available with kernel 4.3. */ +#if __LINUX_KERNEL_VERSION >= 0x040300 +# define __ASSUME_SOCKET_SYSCALL 1 +# define __ASSUME_SOCKETPAIR_SYSCALL 1 +# define __ASSUME_BIND_SYSCALL 1 +# define __ASSUME_LISTEN_SYSCALL 1 +# define __ASSUME_GETSOCKOPT_SYSCALL 1 +# define __ASSUME_SETSOCKOPT_SYSCALL 1 +# define __ASSUME_GETSOCKNAME_SYSCALL 1 +# define __ASSUME_GETPEERNAME_SYSCALL 1 +# define __ASSUME_SHUTDOWN_SYSCALL 1 +#endif + +#include_next <kernel-features.h> + +#undef __ASSUME_ACCEPT_SYSCALL + +#if __LINUX_KERNEL_VERSION < 0x040300 +# undef __ASSUME_ACCEPT4_SYSCALL +# undef __ASSUME_RECVMMSG_SYSCALL +# undef __ASSUME_SENDMMSG_SYSCALL +# undef __ASSUME_SENDMSG_SYSCALL +# undef __ASSUME_RECVMSG_SYSCALL +# undef __ASSUME_CONNECT_SYSCALL +# undef __ASSUME_RECVFROM_SYSCALL +# undef __ASSUME_SENDTO_SYSCALL +#endif + +/* s390 only supports ipc syscall. */ +#undef __ASSUME_DIRECT_SYSVIPC_SYSCALLS diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/ldconfig.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/ldconfig.h new file mode 100644 index 0000000000..f5f1c33692 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/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.so.1", FLAG_ELF_LIBC6 }, \ + { "/lib/ld64.so.1", 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/s390/ldd-rewrite.sed b/REORG.TODO/sysdeps/unix/sysv/linux/s390/ldd-rewrite.sed new file mode 100644 index 0000000000..6b4f1bfcad --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/ldd-rewrite.sed @@ -0,0 +1,15 @@ +/LD_TRACE_LOADED_OBJECTS=1/a\ +add_env="$add_env LD_LIBRARY_VERSION=\\$verify_out" + +# ldd is generated from elf/ldd.bash.in with the name +# of ld.so as generated in Makeconfig + +# that name is replaced by a pair referring to both +# the 32bit and 64bit dynamic linker. + +# /lib(64|)/*(64|).so* is replaced with /lib/*.so* and /lib/*64.so* +# this works for /lib64/ld64.so.x and /lib/ld.so.x as input +s_lib64_lib_ +s_64\.so_\.so_ +s_^RTLDLIST=\(.*lib\)\(/[^/]*\)\(\.so\.[0-9.]*\)[[:blank:]]*$_RTLDLIST="\1\2\3 \1\264\3"_ + diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/libanl.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/s390/libanl.abilist new file mode 100644 index 0000000000..edabfb436e --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/libanl.abilist @@ -0,0 +1,5 @@ +GLIBC_2.2.3 GLIBC_2.2.3 A +GLIBC_2.2.3 gai_cancel F +GLIBC_2.2.3 gai_error F +GLIBC_2.2.3 gai_suspend F +GLIBC_2.2.3 getaddrinfo_a F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/libc-vdso.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/libc-vdso.h new file mode 100644 index 0000000000..077e4aeac9 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/libc-vdso.h @@ -0,0 +1,38 @@ +/* Resolve function pointers to VDSO functions. + Copyright (C) 2008-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 long int (*VDSO_SYMBOL(gettimeofday)) (struct timeval *, void *) + attribute_hidden; + +extern long int (*VDSO_SYMBOL(clock_gettime)) (clockid_t, struct timespec *); + +extern long int (*VDSO_SYMBOL(clock_getres)) (clockid_t, struct timespec *); + +extern long int (*VDSO_SYMBOL(getcpu)) (unsigned *, unsigned *, void *) + attribute_hidden; +#endif + +#endif /* _LIBC_VDSO_H */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/localplt.data b/REORG.TODO/sysdeps/unix/sysv/linux/s390/localplt.data new file mode 100644 index 0000000000..50006317c7 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/localplt.data @@ -0,0 +1,16 @@ +libc.so: _Unwind_Find_FDE +libc.so: calloc +libc.so: free +libc.so: malloc +libc.so: memalign +libc.so: realloc +libm.so: matherr +# 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/s390/longjmp_chk.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/longjmp_chk.c new file mode 100644 index 0000000000..878cbd4850 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/longjmp_chk.c @@ -0,0 +1,48 @@ +/* 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/>. + + Versioned copy of debug/longjmp_chk.c modified for versioning + the reverted jmpbuf extension. */ + +#include <shlib-compat.h> + +#if IS_IN (libc) && defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_19, GLIBC_2_20) +/* this is a copy from debug/longjmp_chk.c because we need an unique name + for __longjmp_chk, but it is already named via a define + for __libc_siglongjmp in debug/longjmp_chk.c. */ +# include <setjmp.h> + +// XXX Should move to include/setjmp.h +extern void ____longjmp_chk (__jmp_buf __env, int __val) + __attribute__ ((__noreturn__)); + +# define __longjmp ____longjmp_chk +# define __libc_siglongjmp __v1__longjmp_chk + +# include <setjmp/longjmp.c> + +/* In glibc release 2.19 a new versions of __longjmp_chk was introduced, + but was reverted before 2.20. Thus both versions are the same function. */ +strong_alias (__v1__longjmp_chk, __v2__longjmp_chk); +versioned_symbol (libc, __v1__longjmp_chk, __longjmp_chk, GLIBC_2_11); +compat_symbol (libc, __v2__longjmp_chk, __longjmp_chk, GLIBC_2_19); + +#else + +# include <debug/longjmp_chk.c> + +#endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/lowlevellock.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/lowlevellock.h new file mode 100644 index 0000000000..604137f7f2 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/lowlevellock.h @@ -0,0 +1,50 @@ +/* Copyright (C) 2003-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Martin Schwidefsky <schwidefsky@de.ibm.com>, 2003. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have 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 _S390_LOWLEVELLOCK_H +#define _S390_LOWLEVELLOCK_H 1 + +#include <sysdeps/nptl/lowlevellock.h> + +/* Transactional lock elision definitions. */ +# ifdef ENABLE_LOCK_ELISION +extern int __lll_timedlock_elision + (int *futex, short *adapt_count, const struct timespec *timeout, int private) + attribute_hidden; + +# define lll_timedlock_elision(futex, adapt_count, timeout, private) \ + __lll_timedlock_elision(&(futex), &(adapt_count), timeout, private) + +extern int __lll_lock_elision (int *futex, short *adapt_count, int private) + attribute_hidden; + +extern int __lll_unlock_elision(int *futex, short *adapt_count, int private) + attribute_hidden; + +extern int __lll_trylock_elision(int *futex, short *adapt_count) + attribute_hidden; + +# define lll_lock_elision(futex, adapt_count, private) \ + __lll_lock_elision (&(futex), &(adapt_count), private) +# define lll_unlock_elision(futex, adapt_count, private) \ + __lll_unlock_elision (&(futex), &(adapt_count), private) +# define lll_trylock_elision(futex, adapt_count) \ + __lll_trylock_elision(&(futex), &(adapt_count)) +# endif /* ENABLE_LOCK_ELISION */ + +#endif /* lowlevellock.h */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/mmap_internal.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/mmap_internal.h new file mode 100644 index 0000000000..2b11ce4e68 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/mmap_internal.h @@ -0,0 +1,32 @@ +/* mmap - map files or devices into memory. Linux/s390 version. + Copyright (C) 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 MMAP_S390_INTERNAL_H +# define MMAP_S390_INTERNAL_H + +#define MMAP_CALL(__nr, __addr, __len, __prot, __flags, __fd, __offset) \ + ({ \ + long int __args[6] = { (long int) (__addr), (long int) (__len), \ + (long int) (__prot), (long int) (__flags), \ + (long int) (__fd), (long int) (__offset) }; \ + INLINE_SYSCALL_CALL (__nr, __args); \ + }) + +#include_next <mmap_internal.h> + +#endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/nldbl-abi.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/nldbl-abi.h new file mode 100644 index 0000000000..bd985cc59c --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/nldbl-abi.h @@ -0,0 +1,8 @@ +/* ABI version for long double switch. + This is used by the Versions and math_ldbl_opt.h files in + sysdeps/ieee754/ldbl-opt/. It gives the ABI version where + long double == double was replaced with proper long double + for libm *l functions and libc functions using long double. */ + +#define NLDBL_VERSION GLIBC_2.4 +#define LONG_DOUBLE_COMPAT_VERSION GLIBC_2_4 diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/opensock.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/opensock.c new file mode 100644 index 0000000000..f099d651ff --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/opensock.c @@ -0,0 +1,2 @@ +#define NEED_AF_IUCV 1 +#include "../opensock.c" diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/pt-longjmp.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/pt-longjmp.c new file mode 100644 index 0000000000..d324237edd --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/pt-longjmp.c @@ -0,0 +1,33 @@ +/* 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/>. + + Versioned copy of nptl/pt-longjmp.c modified for versioning + the reverted jmpbuf extension. */ + +#include <shlib-compat.h> + +#include <nptl/pt-longjmp.c> + +#if SHLIB_COMPAT (libpthread, GLIBC_2_19, GLIBC_2_20) +/* In glibc release 2.19 new versions of longjmp-functions were introduced, + but were reverted before 2.20. Thus both versions are the same function. */ + +strong_alias (longjmp_ifunc, __v2longjmp) +compat_symbol (libpthread, __v2longjmp, longjmp, GLIBC_2_19); +strong_alias (siglongjmp_ifunc, __v2siglongjmp) +compat_symbol (libpthread, __v2siglongjmp, siglongjmp, GLIBC_2_19); +#endif /* SHLIB_COMPAT (libpthread, GLIBC_2_19, GLIBC_2_20)) */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/pt-vfork.S b/REORG.TODO/sysdeps/unix/sysv/linux/s390/pt-vfork.S new file mode 100644 index 0000000000..65cc3823ac --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/pt-vfork.S @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/alpha/pt-vfork.S> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/pthread_mutex_cond_lock.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/pthread_mutex_cond_lock.c new file mode 100644 index 0000000000..15889799a5 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/pthread_mutex_cond_lock.c @@ -0,0 +1,22 @@ +/* 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/>. */ + +/* The cond lock is not actually elided yet, but we still need to handle + already elided locks. */ +#include <elision-conf.h> + +#include <nptl/pthread_mutex_cond_lock.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/pthread_mutex_lock.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/pthread_mutex_lock.c new file mode 100644 index 0000000000..eb02b02033 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/pthread_mutex_lock.c @@ -0,0 +1,22 @@ +/* Elided version of pthread_mutex_lock. + 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 <elision-conf.h> +#include <force-elision.h> + +#include <nptl/pthread_mutex_lock.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/pthread_mutex_timedlock.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/pthread_mutex_timedlock.c new file mode 100644 index 0000000000..096e2d83d8 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/pthread_mutex_timedlock.c @@ -0,0 +1,22 @@ +/* Elided version of pthread_mutex_timedlock. + 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 <elision-conf.h> +#include <force-elision.h> + +#include <nptl/pthread_mutex_timedlock.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/pthread_mutex_trylock.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/pthread_mutex_trylock.c new file mode 100644 index 0000000000..75349e0c3a --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/pthread_mutex_trylock.c @@ -0,0 +1,22 @@ +/* Elided version of pthread_mutex_trylock. + 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 <elision-conf.h> +#include <force-elision.h> + +#include <nptl/pthread_mutex_trylock.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/readelflib.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/readelflib.c new file mode 100644 index 0000000000..df8e5ab72d --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/readelflib.c @@ -0,0 +1,59 @@ +/* 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/>. */ + + +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) + return process_elf32_file (file_name, lib, flag, osversion, soname, + file_contents, file_length); + else + { + ret = process_elf64_file (file_name, lib, flag, osversion, soname, + file_contents, file_length); + /* S/390 64bit libraries are always libc.so.6+. */ + if (!ret) + *flag = FLAG_S390_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/s390/rt-sysdep.S b/REORG.TODO/sysdeps/unix/sysv/linux/s390/rt-sysdep.S new file mode 100644 index 0000000000..f966bf1e59 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/rt-sysdep.S @@ -0,0 +1 @@ +#include <sysdep.S> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/Makefile b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/Makefile new file mode 100644 index 0000000000..fd8cf92633 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/Makefile @@ -0,0 +1,31 @@ +# See Makeconfig regarding the use of default-abi. +default-abi := 32 + +ifeq ($(subdir),login) +sysdep_routines += utmp32 utmpx32 +libutil-routines += login32 +endif + +ifeq ($(subdir),misc) +sysdep_headers += sys/elf.h +endif + +ifeq ($(subdir),elf) +ifeq (yes,$(build-shared)) +# This is needed to support g++ v2 and v3. +sysdep_routines += framestate +shared-only-routines += framestate +endif +endif + +ifeq ($(subdir),stdlib) +sysdep_routines += __makecontext_ret +endif + +ifeq ($(subdir),csu) +ifeq (yes,$(build-shared)) +sysdep_routines += divdi3 +shared-only-routines += divdi3 +CPPFLAGS-divdi3.c = -Din_divdi3_c +endif +endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/Versions b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/Versions new file mode 100644 index 0000000000..1c120e8cbe --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/Versions @@ -0,0 +1,58 @@ +libc { + GLIBC_2.0 { + # Exception handling support functions from libgcc + __register_frame; __register_frame_table; __deregister_frame; + __frame_state_for; __register_frame_info_table; + } + GLIBC_2.1 { + __chown; + } + GLIBC_2.2 { + # functions used in other libraries + __xstat64; __fxstat64; __lxstat64; + + # a* + alphasort64; + + # New rlimit interface + getrlimit; setrlimit; getrlimit64; + + # r* + readdir64; readdir64_r; + + # s* + scandir64; + + # v* + versionsort64; + } + GLIBC_2.3.3 { + posix_fadvise64; posix_fallocate64; + } + GLIBC_2.9 { + getutent; + getutid; + getutline; + pututline; + updwtmp; + getutent_r; + getutid_r; + getutline_r; + getutxent; + getutxid; + getutxline; + pututxline; + updwtmpx; + getutmp; + getutmpx; + } + GLIBC_2.11 { + fallocate64; + } +} + +libutil { + GLIBC_2.9 { + login; + } +} diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/____longjmp_chk.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/____longjmp_chk.c new file mode 100644 index 0000000000..e25130179d --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/____longjmp_chk.c @@ -0,0 +1,54 @@ +/* Copyright (C) 2009-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Jakub Jelinek <jakub@redhat.com>. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <errno.h> +#include <sysdep.h> +#include <setjmp.h> +#include <bits/setjmp.h> +#include <stdlib.h> +#include <unistd.h> +#include <stdio.h> +#include <stdint.h> +#include <signal.h> +#include <sys/syscall.h> + +#define __longjmp ____longjmp_chk + +#define CHECK_SP(env, guard) \ + do \ + { \ + uintptr_t cur_sp; \ + uintptr_t new_sp = env->__gregs[9]; \ + __asm__ ("lr %0, %%r15" : "=r" (cur_sp)); \ + new_sp ^= guard; \ + if (new_sp < cur_sp) \ + { \ + stack_t oss; \ + INTERNAL_SYSCALL_DECL (err); \ + int res = INTERNAL_SYSCALL (sigaltstack, err, 2, NULL, &oss); \ + if (!INTERNAL_SYSCALL_ERROR_P (res, err)) \ + { \ + if ((oss.ss_flags & SS_ONSTACK) == 0 \ + || ((uintptr_t) (oss.ss_sp + oss.ss_size) - new_sp \ + < oss.ss_size)) \ + __fortify_fail ("longjmp causes uninitialized stack frame");\ + } \ + } \ + } while (0) + +#include "__longjmp.c" diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/__makecontext_ret.S b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/__makecontext_ret.S new file mode 100644 index 0000000000..f32cd3ca39 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/__makecontext_ret.S @@ -0,0 +1,56 @@ +/* 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> + +/* We do not want .eh_frame info so that __makecontext_ret stops unwinding + if backtrace was called within a context created by makecontext. (There + is also no .eh_frame info for _start or thread_start.) */ +#undef cfi_startproc +#define cfi_startproc +#undef cfi_endproc +#define cfi_endproc + +ENTRY(__makecontext_ret) + basr %r14,%r7 + ltr %r8,%r8 /* Check whether uc_link is 0. */ + jz 1f + lr %r2,%r8 + br %r9 +1: lhi %r2,0 /* EXIT return value. */ + basr %r13,0 +2: +#ifdef PIC + l %r12,4f-2b(%r13) + la %r12,0(%r12,%r13) /* GOT pointer in r12 after this. */ + l %r1,3f-2b(%r13) + bas %r14,0(%r1,%r12) + .align 4 +3: + .long HIDDEN_JUMPTARGET (exit)@GOTOFF +4: + .long _GLOBAL_OFFSET_TABLE_-2b +#else + l %r1,3f-2b(%r13) + basr %r14,%r1 + .align 4 +3: + .long HIDDEN_JUMPTARGET (exit) +#endif + .align 2 + j .+2 /* Trap if exit returns for some reason. */ +END(__makecontext_ret) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/alphasort64.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/alphasort64.c new file mode 100644 index 0000000000..0b5ae47d2f --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/alphasort64.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/i386/alphasort64.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/c++-types.data b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/c++-types.data new file mode 100644 index 0000000000..6e2036ec01 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/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:m +socklen_t:j +ssize_t:l +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/s390/s390-32/clone.S b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/clone.S new file mode 100644 index 0000000000..a8b4dbc90f --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/clone.S @@ -0,0 +1,65 @@ +/* Copyright (C) 2000-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Martin Schwidefsky (schwidefsky@de.ibm.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 <tls.h> +#define _ERRNO_H 1 +#include <bits/errno.h> + +/* int __clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg, + pid_t *parent_tid, void *tls, pid_t *child_tid); */ +/* sys_clone (void *child_stack, unsigned long flags, + pid_t *parent_tid, pid_t *child_tid, void *tls); */ + + .text +ENTRY(__clone) + st %r6,24(%r15) /* store %r6 to save area */ + cfi_offset (%r6, -72) + lr %r0,%r5 /* move *arg out of the way */ + ltr %r1,%r2 /* check fn and move to %r1 */ + jz error /* no NULL function pointers */ + ltr %r2,%r3 /* check child_stack and move to %r2 */ + jz error /* no NULL stack pointers */ + lr %r3,%r4 /* move flags to %r3 */ + lr %r4,%r6 /* move parent_tid to %r4 */ + l %r5,100(%r15) /* load child_tid from stack */ + l %r6,96(%r15) /* load tls from stack */ + svc SYS_ify(clone) + ltr %r2,%r2 /* check return code */ + jz thread_start + l %r6,24(%r15) /* restore %r6 */ + jm SYSCALL_ERROR_LABEL + br %r14 +error: + lhi %r2,-EINVAL + j SYSCALL_ERROR_LABEL +PSEUDO_END (__clone) + +thread_start: + /* fn is in gpr 1, arg in gpr 0 */ + lr %r2,%r0 /* set first parameter to void *arg */ + ahi %r15,-96 /* make room on the stack for the save area */ + xc 0(4,%r15),0(%r15) + basr %r14,%r1 /* jump to fn */ + DO_CALL (exit, 1) + +libc_hidden_def (__clone) +weak_alias (__clone, clone) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/fcntl.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/fcntl.c new file mode 100644 index 0000000000..ea951bc4f9 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/fcntl.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/i386/fcntl.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/fxstat.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/fxstat.c new file mode 100644 index 0000000000..4f219f0b9d --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/fxstat.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/i386/fxstat.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/fxstatat.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/fxstatat.c new file mode 100644 index 0000000000..0f8b3135d8 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/fxstatat.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/i386/fxstatat.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/getcontext.S b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/getcontext.S new file mode 100644 index 0000000000..5b931831ae --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/getcontext.S @@ -0,0 +1,89 @@ +/* Copyright (C) 2001-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#include <features.h> + +#include "ucontext_i.h" + +#include <shlib-compat.h> + +/* __getcontext (const ucontext_t *ucp) + + Saves the machine context in UCP such that when it is activated, + it appears as if __getcontext() returned again. + + This implementation is intended to be used for *synchronous* context + switches only. Therefore, it does not have to save anything + other than the PRESERVED state. */ + +ENTRY(__getcontext) + lr %r1,%r2 + + /* rt_sigprocmask (SIG_BLOCK, NULL, &sc->sc_mask, sigsetsize). */ + la %r2,SIG_BLOCK + slr %r3,%r3 + la %r4,SC_MASK(%r1) + lhi %r5,_NSIG8 + svc SYS_ify(rt_sigprocmask) + + /* Store fpu context. */ + stfpc SC_FPC(%r1) + std %f0,SC_FPRS(%r1) + std %f1,SC_FPRS+8(%r1) + std %f2,SC_FPRS+16(%r1) + std %f3,SC_FPRS+24(%r1) + std %f4,SC_FPRS+32(%r1) + std %f5,SC_FPRS+40(%r1) + std %f6,SC_FPRS+48(%r1) + std %f7,SC_FPRS+56(%r1) + std %f8,SC_FPRS+64(%r1) + std %f9,SC_FPRS+72(%r1) + std %f10,SC_FPRS+80(%r1) + std %f11,SC_FPRS+88(%r1) + std %f12,SC_FPRS+96(%r1) + std %f13,SC_FPRS+104(%r1) + std %f14,SC_FPRS+112(%r1) + std %f15,SC_FPRS+120(%r1) + + /* Set __getcontext return value to 0. */ + slr %r2,%r2 + + /* Store access registers. */ + stam %a0,%a15,SC_ACRS(%r1) + + /* Store general purpose registers. */ + stm %r0,%r15,SC_GPRS(%r1) + + /* Return. */ + br %r14 +END(__getcontext) + +#if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_19, GLIBC_2_20) +/* In glibc release 2.19 a new version of getcontext was introduced, + but was reverted before 2.20. Thus both versions are the same function. */ +weak_alias (__getcontext, __v1__getcontext) +weak_alias (__getcontext, __v2__getcontext) +versioned_symbol (libc, __v1__getcontext, getcontext, GLIBC_2_1) +compat_symbol (libc, __v2__getcontext, getcontext, GLIBC_2_19) + +#else + +weak_alias (__getcontext, getcontext) + +#endif /* !(defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_19, GLIBC_2_20)) */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/getdents64.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/getdents64.c new file mode 100644 index 0000000000..0c75fb5a06 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/getdents64.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/i386/getdents64.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/getutent.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/getutent.c new file mode 100644 index 0000000000..0c34565bb0 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/getutent.c @@ -0,0 +1,32 @@ +/* Copyright (C) 2008-2017 Free Software Foundation, Inc. + Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <stdlib.h> +#include <utmp.h> + +#include "utmp-compat.h" + +#if defined SHARED +# undef weak_alias +# define weak_alias(n,a) +#endif +#include "login/getutent.c" + +#if defined SHARED +default_symbol_version (__getutent, getutent, UTMP_COMPAT_BASE); +#endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/getutent_r.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/getutent_r.c new file mode 100644 index 0000000000..99bc11a062 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/getutent_r.c @@ -0,0 +1,38 @@ +/* Copyright (C) 2008-2017 Free Software Foundation, Inc. + Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have 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 <libc-lock.h> +#include <stdlib.h> +#include <utmp.h> + +#include "utmp-compat.h" +#include "utmp-private.h" + +#if defined SHARED +weak_alias (__setutent, setutent) +weak_alias (__endutent, endutent) + +# undef weak_alias +# define weak_alias(n,a) +#endif +#include "login/getutent_r.c" + +#if defined SHARED +default_symbol_version (__getutent_r, getutent_r, UTMP_COMPAT_BASE); +default_symbol_version (__pututline, pututline, UTMP_COMPAT_BASE); +#endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/getutid.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/getutid.c new file mode 100644 index 0000000000..41e59936b1 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/getutid.c @@ -0,0 +1,32 @@ +/* Copyright (C) 2008-2017 Free Software Foundation, Inc. + Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <stdlib.h> +#include <utmp.h> + +#include "utmp-compat.h" + +#if defined SHARED +# undef weak_alias +# define weak_alias(n,a) +#endif +#include "login/getutid.c" + +#if defined SHARED +default_symbol_version (__getutid, getutid, UTMP_COMPAT_BASE); +#endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/getutid_r.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/getutid_r.c new file mode 100644 index 0000000000..815e37372e --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/getutid_r.c @@ -0,0 +1,35 @@ +/* Copyright (C) 2008-2017 Free Software Foundation, Inc. + Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have 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 <libc-lock.h> +#include <errno.h> +#include <stdlib.h> +#include <utmp.h> + +#include "utmp-compat.h" +#include "utmp-private.h" + +#if defined SHARED +# undef weak_alias +# define weak_alias(n,a) +#endif +#include "login/getutid_r.c" + +#if defined SHARED +default_symbol_version (__getutid_r, getutid_r, UTMP_COMPAT_BASE); +#endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/getutline.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/getutline.c new file mode 100644 index 0000000000..25b94d980d --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/getutline.c @@ -0,0 +1,32 @@ +/* Copyright (C) 2008-2017 Free Software Foundation, Inc. + Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <stdlib.h> +#include <utmp.h> + +#include "utmp-compat.h" + +#if defined SHARED +# undef weak_alias +# define weak_alias(n,a) +#endif +#include "login/getutline.c" + +#if defined SHARED +default_symbol_version (__getutline, getutline, UTMP_COMPAT_BASE); +#endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/getutline_r.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/getutline_r.c new file mode 100644 index 0000000000..b118acc1bc --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/getutline_r.c @@ -0,0 +1,34 @@ +/* Copyright (C) 2008-2017 Free Software Foundation, Inc. + Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have 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 <libc-lock.h> +#include <utmp.h> + +#include "utmp-compat.h" +#include "utmp-private.h" + +#if defined SHARED +# undef weak_alias +# define weak_alias(n,a) +#endif +#include "login/getutline_r.c" + +#if defined SHARED +default_symbol_version (__getutline_r, getutline_r, UTMP_COMPAT_BASE);; +#endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/getutmp.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/getutmp.c new file mode 100644 index 0000000000..11b7ef012b --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/getutmp.c @@ -0,0 +1,37 @@ +/* Copyright (C) 2008-2017 Free Software Foundation, Inc. + Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <string.h> +#include <utmp.h> +/* This is an ugly hack but we must not see the getutmpx declaration. */ +#define getutmpx XXXgetutmpx +#include <utmpx.h> +#undef getutmpx + +#include "utmp-compat.h" + +#undef weak_alias +#define weak_alias(n,a) +#define getutmp __getutmp +#define getutmpx __getutmpx +#include "sysdeps/gnu/getutmp.c" +#undef getutmp +#undef getutmpx + +default_symbol_version (__getutmp, getutmp, UTMP_COMPAT_BASE); +default_symbol_version (__getutmpx, getutmpx, UTMP_COMPAT_BASE); diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/getutxent.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/getutxent.c new file mode 100644 index 0000000000..c1d967c6a2 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/getutxent.c @@ -0,0 +1,30 @@ +/* Copyright (C) 2008-2017 Free Software Foundation, Inc. + Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have 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 <utmp.h> +#include <utmpx.h> + +#include "utmp-compat.h" + +#undef weak_alias +#define weak_alias(n,a) +#define getutxent __getutxent +#include "login/getutxent.c" +#undef getutxent + +default_symbol_version (__getutxent, getutxent, UTMP_COMPAT_BASE); diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/getutxid.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/getutxid.c new file mode 100644 index 0000000000..18251fdef6 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/getutxid.c @@ -0,0 +1,30 @@ +/* Copyright (C) 2008-2017 Free Software Foundation, Inc. + Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have 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 <utmp.h> +#include <utmpx.h> + +#include "utmp-compat.h" + +#undef weak_alias +#define weak_alias(n,a) +#define getutxid __getutxid +#include "login/getutxid.c" +#undef getutxid + +default_symbol_version (__getutxid, getutxid, UTMP_COMPAT_BASE); diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/getutxline.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/getutxline.c new file mode 100644 index 0000000000..63f79ea68d --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/getutxline.c @@ -0,0 +1,30 @@ +/* Copyright (C) 2008-2017 Free Software Foundation, Inc. + Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have 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 <utmp.h> +#include <utmpx.h> + +#include "utmp-compat.h" + +#undef weak_alias +#define weak_alias(n,a) +#define getutxline __getutxline +#include "login/getutxline.c" +#undef getutxline + +default_symbol_version (__getutxline, getutxline, UTMP_COMPAT_BASE); diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/ld.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/ld.abilist new file mode 100644 index 0000000000..c16b2c1344 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/ld.abilist @@ -0,0 +1,12 @@ +GLIBC_2.0 GLIBC_2.0 A +GLIBC_2.0 _r_debug D 0x14 +GLIBC_2.0 calloc F +GLIBC_2.0 free F +GLIBC_2.0 malloc F +GLIBC_2.0 realloc F +GLIBC_2.1 GLIBC_2.1 A +GLIBC_2.1 __libc_stack_end D 0x4 +GLIBC_2.1 _dl_mcount F +GLIBC_2.3 GLIBC_2.3 A +GLIBC_2.3 __tls_get_offset F +GLIBC_2.4 GLIBC_2.4 A diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/libBrokenLocale.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/libBrokenLocale.abilist new file mode 100644 index 0000000000..4a56bb68a3 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/libBrokenLocale.abilist @@ -0,0 +1,2 @@ +GLIBC_2.0 GLIBC_2.0 A +GLIBC_2.0 __ctype_get_mb_cur_max F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist new file mode 100644 index 0000000000..63d33e8b37 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist @@ -0,0 +1,2476 @@ +GCC_3.0 GCC_3.0 A +GCC_3.0 _Unwind_Find_FDE F +GCC_3.0 __deregister_frame_info_bases F +GCC_3.0 __register_frame_info_bases F +GCC_3.0 __register_frame_info_table_bases F +GLIBC_2.0 GLIBC_2.0 A +GLIBC_2.0 _IO_adjust_column F +GLIBC_2.0 _IO_default_doallocate F +GLIBC_2.0 _IO_default_finish F +GLIBC_2.0 _IO_default_pbackfail F +GLIBC_2.0 _IO_default_uflow F +GLIBC_2.0 _IO_default_xsgetn F +GLIBC_2.0 _IO_default_xsputn F +GLIBC_2.0 _IO_do_write F +GLIBC_2.0 _IO_doallocbuf F +GLIBC_2.0 _IO_fclose F +GLIBC_2.0 _IO_fdopen F +GLIBC_2.0 _IO_feof F +GLIBC_2.0 _IO_ferror F +GLIBC_2.0 _IO_fflush F +GLIBC_2.0 _IO_fgetpos F +GLIBC_2.0 _IO_fgets F +GLIBC_2.0 _IO_file_attach F +GLIBC_2.0 _IO_file_close F +GLIBC_2.0 _IO_file_close_it F +GLIBC_2.0 _IO_file_doallocate F +GLIBC_2.0 _IO_file_fopen F +GLIBC_2.0 _IO_file_init F +GLIBC_2.0 _IO_file_jumps D 0x54 +GLIBC_2.0 _IO_file_open F +GLIBC_2.0 _IO_file_overflow F +GLIBC_2.0 _IO_file_read F +GLIBC_2.0 _IO_file_seek F +GLIBC_2.0 _IO_file_seekoff F +GLIBC_2.0 _IO_file_setbuf F +GLIBC_2.0 _IO_file_stat F +GLIBC_2.0 _IO_file_sync F +GLIBC_2.0 _IO_file_underflow F +GLIBC_2.0 _IO_file_write F +GLIBC_2.0 _IO_file_xsputn F +GLIBC_2.0 _IO_flockfile F +GLIBC_2.0 _IO_flush_all F +GLIBC_2.0 _IO_flush_all_linebuffered F +GLIBC_2.0 _IO_fopen F +GLIBC_2.0 _IO_fprintf F +GLIBC_2.0 _IO_fputs F +GLIBC_2.0 _IO_fread F +GLIBC_2.0 _IO_free_backup_area F +GLIBC_2.0 _IO_fsetpos F +GLIBC_2.0 _IO_ftell F +GLIBC_2.0 _IO_ftrylockfile F +GLIBC_2.0 _IO_funlockfile F +GLIBC_2.0 _IO_fwrite F +GLIBC_2.0 _IO_getc F +GLIBC_2.0 _IO_getline F +GLIBC_2.0 _IO_gets F +GLIBC_2.0 _IO_init F +GLIBC_2.0 _IO_init_marker F +GLIBC_2.0 _IO_link_in F +GLIBC_2.0 _IO_list_all D 0x4 +GLIBC_2.0 _IO_marker_delta F +GLIBC_2.0 _IO_marker_difference F +GLIBC_2.0 _IO_padn F +GLIBC_2.0 _IO_peekc_locked F +GLIBC_2.0 _IO_popen F +GLIBC_2.0 _IO_printf F +GLIBC_2.0 _IO_proc_close F +GLIBC_2.0 _IO_proc_open F +GLIBC_2.0 _IO_putc F +GLIBC_2.0 _IO_puts F +GLIBC_2.0 _IO_remove_marker F +GLIBC_2.0 _IO_seekmark F +GLIBC_2.0 _IO_seekoff F +GLIBC_2.0 _IO_seekpos F +GLIBC_2.0 _IO_setb F +GLIBC_2.0 _IO_setbuffer F +GLIBC_2.0 _IO_setvbuf F +GLIBC_2.0 _IO_sgetn F +GLIBC_2.0 _IO_sprintf F +GLIBC_2.0 _IO_sputbackc F +GLIBC_2.0 _IO_sscanf F +GLIBC_2.0 _IO_stderr_ D 0x50 +GLIBC_2.0 _IO_stdin_ D 0x50 +GLIBC_2.0 _IO_stdout_ D 0x50 +GLIBC_2.0 _IO_str_init_readonly F +GLIBC_2.0 _IO_str_init_static F +GLIBC_2.0 _IO_str_overflow F +GLIBC_2.0 _IO_str_pbackfail F +GLIBC_2.0 _IO_str_seekoff F +GLIBC_2.0 _IO_str_underflow F +GLIBC_2.0 _IO_sungetc F +GLIBC_2.0 _IO_switch_to_get_mode F +GLIBC_2.0 _IO_un_link F +GLIBC_2.0 _IO_ungetc F +GLIBC_2.0 _IO_unsave_markers F +GLIBC_2.0 _IO_vfprintf F +GLIBC_2.0 _IO_vfscanf F +GLIBC_2.0 _IO_vsprintf F +GLIBC_2.0 ___brk_addr D 0x4 +GLIBC_2.0 __adjtimex F +GLIBC_2.0 __after_morecore_hook D 0x4 +GLIBC_2.0 __argz_count F +GLIBC_2.0 __argz_next F +GLIBC_2.0 __argz_stringify F +GLIBC_2.0 __assert_fail F +GLIBC_2.0 __assert_perror_fail F +GLIBC_2.0 __bsd_getpgrp F +GLIBC_2.0 __bzero F +GLIBC_2.0 __check_rhosts_file D 0x4 +GLIBC_2.0 __clone F +GLIBC_2.0 __close F +GLIBC_2.0 __cmsg_nxthdr F +GLIBC_2.0 __connect F +GLIBC_2.0 __ctype32_b D 0x4 +GLIBC_2.0 __ctype_b D 0x4 +GLIBC_2.0 __ctype_get_mb_cur_max F +GLIBC_2.0 __ctype_tolower D 0x4 +GLIBC_2.0 __ctype_toupper D 0x4 +GLIBC_2.0 __curbrk D 0x4 +GLIBC_2.0 __daylight D 0x4 +GLIBC_2.0 __dcgettext F +GLIBC_2.0 __default_morecore F +GLIBC_2.0 __deregister_frame F +GLIBC_2.0 __deregister_frame_info F +GLIBC_2.0 __dgettext F +GLIBC_2.0 __divdi3 F +GLIBC_2.0 __dup2 F +GLIBC_2.0 __environ D 0x4 +GLIBC_2.0 __errno_location F +GLIBC_2.0 __fcntl F +GLIBC_2.0 __ffs F +GLIBC_2.0 __finite F +GLIBC_2.0 __finitef F +GLIBC_2.0 __finitel F +GLIBC_2.0 __fork F +GLIBC_2.0 __fpu_control D 0x4 +GLIBC_2.0 __frame_state_for F +GLIBC_2.0 __free_hook D 0x4 +GLIBC_2.0 __fxstat F +GLIBC_2.0 __getdelim F +GLIBC_2.0 __getpagesize F +GLIBC_2.0 __getpgid F +GLIBC_2.0 __getpid F +GLIBC_2.0 __gettimeofday F +GLIBC_2.0 __gmtime_r F +GLIBC_2.0 __h_errno_location F +GLIBC_2.0 __isinf F +GLIBC_2.0 __isinff F +GLIBC_2.0 __isinfl F +GLIBC_2.0 __isnan F +GLIBC_2.0 __isnanf F +GLIBC_2.0 __isnanl F +GLIBC_2.0 __iswctype F +GLIBC_2.0 __ivaliduser F +GLIBC_2.0 __libc_calloc F +GLIBC_2.0 __libc_free F +GLIBC_2.0 __libc_init_first F +GLIBC_2.0 __libc_mallinfo F +GLIBC_2.0 __libc_malloc F +GLIBC_2.0 __libc_mallopt F +GLIBC_2.0 __libc_memalign F +GLIBC_2.0 __libc_pvalloc F +GLIBC_2.0 __libc_realloc F +GLIBC_2.0 __libc_start_main F +GLIBC_2.0 __libc_valloc F +GLIBC_2.0 __lseek F +GLIBC_2.0 __lxstat F +GLIBC_2.0 __malloc_hook D 0x4 +GLIBC_2.0 __malloc_initialize_hook D 0x4 +GLIBC_2.0 __mbrlen F +GLIBC_2.0 __mbrtowc F +GLIBC_2.0 __memalign_hook D 0x4 +GLIBC_2.0 __mempcpy F +GLIBC_2.0 __moddi3 F +GLIBC_2.0 __monstartup F +GLIBC_2.0 __morecore D 0x4 +GLIBC_2.0 __nss_configure_lookup F +GLIBC_2.0 __nss_database_lookup F +GLIBC_2.0 __nss_group_lookup F +GLIBC_2.0 __nss_hosts_lookup F +GLIBC_2.0 __nss_next F +GLIBC_2.0 __nss_passwd_lookup F +GLIBC_2.0 __open F +GLIBC_2.0 __overflow F +GLIBC_2.0 __pipe F +GLIBC_2.0 __printf_fp F +GLIBC_2.0 __profile_frequency F +GLIBC_2.0 __progname D 0x4 +GLIBC_2.0 __progname_full D 0x4 +GLIBC_2.0 __rcmd_errstr D 0x4 +GLIBC_2.0 __read F +GLIBC_2.0 __realloc_hook D 0x4 +GLIBC_2.0 __register_frame F +GLIBC_2.0 __register_frame_info F +GLIBC_2.0 __register_frame_info_table F +GLIBC_2.0 __register_frame_table F +GLIBC_2.0 __res_randomid F +GLIBC_2.0 __sbrk F +GLIBC_2.0 __sched_get_priority_max F +GLIBC_2.0 __sched_get_priority_min F +GLIBC_2.0 __sched_getparam F +GLIBC_2.0 __sched_getscheduler F +GLIBC_2.0 __sched_setscheduler F +GLIBC_2.0 __sched_yield F +GLIBC_2.0 __secure_getenv F +GLIBC_2.0 __select F +GLIBC_2.0 __send F +GLIBC_2.0 __setpgid F +GLIBC_2.0 __sigaction F +GLIBC_2.0 __sigaddset F +GLIBC_2.0 __sigdelset F +GLIBC_2.0 __sigismember F +GLIBC_2.0 __sigpause F +GLIBC_2.0 __sigsetjmp F +GLIBC_2.0 __stpcpy F +GLIBC_2.0 __stpncpy F +GLIBC_2.0 __strcasecmp F +GLIBC_2.0 __strdup F +GLIBC_2.0 __strerror_r F +GLIBC_2.0 __strtod_internal F +GLIBC_2.0 __strtof_internal F +GLIBC_2.0 __strtok_r F +GLIBC_2.0 __strtol_internal F +GLIBC_2.0 __strtold_internal F +GLIBC_2.0 __strtoll_internal F +GLIBC_2.0 __strtoq_internal F +GLIBC_2.0 __strtoul_internal F +GLIBC_2.0 __strtoull_internal F +GLIBC_2.0 __strtouq_internal F +GLIBC_2.0 __sysv_signal F +GLIBC_2.0 __timezone D 0x4 +GLIBC_2.0 __tzname D 0x8 +GLIBC_2.0 __udivdi3 F +GLIBC_2.0 __uflow F +GLIBC_2.0 __umoddi3 F +GLIBC_2.0 __underflow F +GLIBC_2.0 __vfscanf F +GLIBC_2.0 __vsnprintf F +GLIBC_2.0 __vsscanf F +GLIBC_2.0 __wait F +GLIBC_2.0 __waitpid F +GLIBC_2.0 __wcstod_internal F +GLIBC_2.0 __wcstof_internal F +GLIBC_2.0 __wcstol_internal F +GLIBC_2.0 __wcstold_internal F +GLIBC_2.0 __wcstoll_internal F +GLIBC_2.0 __wcstoul_internal F +GLIBC_2.0 __wcstoull_internal F +GLIBC_2.0 __write F +GLIBC_2.0 __xmknod F +GLIBC_2.0 __xpg_basename F +GLIBC_2.0 __xstat F +GLIBC_2.0 _environ D 0x4 +GLIBC_2.0 _exit F +GLIBC_2.0 _libc_intl_domainname D 0x5 +GLIBC_2.0 _longjmp F +GLIBC_2.0 _mcleanup F +GLIBC_2.0 _mcount F +GLIBC_2.0 _nl_default_dirname D 0x12 +GLIBC_2.0 _nl_domain_bindings D 0x4 +GLIBC_2.0 _nl_msg_cat_cntr D 0x4 +GLIBC_2.0 _null_auth D 0xc +GLIBC_2.0 _obstack D 0x4 +GLIBC_2.0 _obstack_allocated_p F +GLIBC_2.0 _obstack_begin F +GLIBC_2.0 _obstack_begin_1 F +GLIBC_2.0 _obstack_free F +GLIBC_2.0 _obstack_memory_used F +GLIBC_2.0 _obstack_newchunk F +GLIBC_2.0 _res D 0x200 +GLIBC_2.0 _rpc_dtablesize F +GLIBC_2.0 _seterr_reply F +GLIBC_2.0 _setjmp F +GLIBC_2.0 _sys_errlist D 0x1ec +GLIBC_2.0 _sys_nerr D 0x4 +GLIBC_2.0 _sys_siglist D 0x80 +GLIBC_2.0 _tolower F +GLIBC_2.0 _toupper F +GLIBC_2.0 a64l F +GLIBC_2.0 abort F +GLIBC_2.0 abs F +GLIBC_2.0 accept F +GLIBC_2.0 access F +GLIBC_2.0 acct F +GLIBC_2.0 addmntent F +GLIBC_2.0 adjtime F +GLIBC_2.0 adjtimex F +GLIBC_2.0 advance F +GLIBC_2.0 alarm F +GLIBC_2.0 alphasort F +GLIBC_2.0 argz_add F +GLIBC_2.0 argz_add_sep F +GLIBC_2.0 argz_append F +GLIBC_2.0 argz_count F +GLIBC_2.0 argz_create F +GLIBC_2.0 argz_create_sep F +GLIBC_2.0 argz_delete F +GLIBC_2.0 argz_extract F +GLIBC_2.0 argz_insert F +GLIBC_2.0 argz_next F +GLIBC_2.0 argz_replace F +GLIBC_2.0 argz_stringify F +GLIBC_2.0 asctime F +GLIBC_2.0 asctime_r F +GLIBC_2.0 asprintf F +GLIBC_2.0 atexit F +GLIBC_2.0 atof F +GLIBC_2.0 atoi F +GLIBC_2.0 atol F +GLIBC_2.0 atoll F +GLIBC_2.0 authnone_create F +GLIBC_2.0 authunix_create F +GLIBC_2.0 authunix_create_default F +GLIBC_2.0 basename F +GLIBC_2.0 bcmp F +GLIBC_2.0 bcopy F +GLIBC_2.0 bdflush F +GLIBC_2.0 bind F +GLIBC_2.0 bindresvport F +GLIBC_2.0 bindtextdomain F +GLIBC_2.0 brk F +GLIBC_2.0 bsd_signal F +GLIBC_2.0 bsearch F +GLIBC_2.0 btowc F +GLIBC_2.0 bzero F +GLIBC_2.0 calloc F +GLIBC_2.0 callrpc F +GLIBC_2.0 canonicalize_file_name F +GLIBC_2.0 catclose F +GLIBC_2.0 catgets F +GLIBC_2.0 catopen F +GLIBC_2.0 cfgetispeed F +GLIBC_2.0 cfgetospeed F +GLIBC_2.0 cfmakeraw F +GLIBC_2.0 cfree F +GLIBC_2.0 cfsetispeed F +GLIBC_2.0 cfsetospeed F +GLIBC_2.0 cfsetspeed F +GLIBC_2.0 chdir F +GLIBC_2.0 chflags F +GLIBC_2.0 chmod F +GLIBC_2.0 chown F +GLIBC_2.0 chroot F +GLIBC_2.0 clearenv F +GLIBC_2.0 clearerr F +GLIBC_2.0 clearerr_unlocked F +GLIBC_2.0 clnt_broadcast F +GLIBC_2.0 clnt_create F +GLIBC_2.0 clnt_pcreateerror F +GLIBC_2.0 clnt_perrno F +GLIBC_2.0 clnt_perror F +GLIBC_2.0 clnt_spcreateerror F +GLIBC_2.0 clnt_sperrno F +GLIBC_2.0 clnt_sperror F +GLIBC_2.0 clntraw_create F +GLIBC_2.0 clnttcp_create F +GLIBC_2.0 clntudp_bufcreate F +GLIBC_2.0 clntudp_create F +GLIBC_2.0 clock F +GLIBC_2.0 clone F +GLIBC_2.0 close F +GLIBC_2.0 closedir F +GLIBC_2.0 closelog F +GLIBC_2.0 confstr F +GLIBC_2.0 connect F +GLIBC_2.0 copysign F +GLIBC_2.0 copysignf F +GLIBC_2.0 copysignl F +GLIBC_2.0 creat F +GLIBC_2.0 create_module F +GLIBC_2.0 ctermid F +GLIBC_2.0 ctime F +GLIBC_2.0 ctime_r F +GLIBC_2.0 cuserid F +GLIBC_2.0 daemon F +GLIBC_2.0 daylight D 0x4 +GLIBC_2.0 dcgettext F +GLIBC_2.0 delete_module F +GLIBC_2.0 dgettext F +GLIBC_2.0 difftime F +GLIBC_2.0 dirfd F +GLIBC_2.0 dirname F +GLIBC_2.0 div F +GLIBC_2.0 dprintf F +GLIBC_2.0 drand48 F +GLIBC_2.0 drand48_r F +GLIBC_2.0 dup F +GLIBC_2.0 dup2 F +GLIBC_2.0 dysize F +GLIBC_2.0 ecvt F +GLIBC_2.0 ecvt_r F +GLIBC_2.0 endaliasent F +GLIBC_2.0 endfsent F +GLIBC_2.0 endgrent F +GLIBC_2.0 endhostent F +GLIBC_2.0 endmntent F +GLIBC_2.0 endnetent F +GLIBC_2.0 endnetgrent F +GLIBC_2.0 endprotoent F +GLIBC_2.0 endpwent F +GLIBC_2.0 endrpcent F +GLIBC_2.0 endservent F +GLIBC_2.0 endspent F +GLIBC_2.0 endttyent F +GLIBC_2.0 endusershell F +GLIBC_2.0 endutent F +GLIBC_2.0 environ D 0x4 +GLIBC_2.0 envz_add F +GLIBC_2.0 envz_entry F +GLIBC_2.0 envz_get F +GLIBC_2.0 envz_merge F +GLIBC_2.0 envz_remove F +GLIBC_2.0 envz_strip F +GLIBC_2.0 erand48 F +GLIBC_2.0 erand48_r F +GLIBC_2.0 err F +GLIBC_2.0 error F +GLIBC_2.0 error_at_line F +GLIBC_2.0 error_message_count D 0x4 +GLIBC_2.0 error_one_per_line D 0x4 +GLIBC_2.0 error_print_progname D 0x4 +GLIBC_2.0 errx F +GLIBC_2.0 ether_aton F +GLIBC_2.0 ether_aton_r F +GLIBC_2.0 ether_hostton F +GLIBC_2.0 ether_line F +GLIBC_2.0 ether_ntoa F +GLIBC_2.0 ether_ntoa_r F +GLIBC_2.0 ether_ntohost F +GLIBC_2.0 euidaccess F +GLIBC_2.0 execl F +GLIBC_2.0 execle F +GLIBC_2.0 execlp F +GLIBC_2.0 execv F +GLIBC_2.0 execve F +GLIBC_2.0 execvp F +GLIBC_2.0 exit F +GLIBC_2.0 fchdir F +GLIBC_2.0 fchflags F +GLIBC_2.0 fchmod F +GLIBC_2.0 fchown F +GLIBC_2.0 fclose F +GLIBC_2.0 fcloseall F +GLIBC_2.0 fcntl F +GLIBC_2.0 fcvt F +GLIBC_2.0 fcvt_r F +GLIBC_2.0 fdatasync F +GLIBC_2.0 fdopen F +GLIBC_2.0 feof F +GLIBC_2.0 feof_unlocked F +GLIBC_2.0 ferror F +GLIBC_2.0 ferror_unlocked F +GLIBC_2.0 fexecve F +GLIBC_2.0 fflush F +GLIBC_2.0 fflush_unlocked F +GLIBC_2.0 ffs F +GLIBC_2.0 fgetc F +GLIBC_2.0 fgetgrent F +GLIBC_2.0 fgetgrent_r F +GLIBC_2.0 fgetpos F +GLIBC_2.0 fgetpwent F +GLIBC_2.0 fgetpwent_r F +GLIBC_2.0 fgets F +GLIBC_2.0 fgetspent F +GLIBC_2.0 fgetspent_r F +GLIBC_2.0 fileno F +GLIBC_2.0 fileno_unlocked F +GLIBC_2.0 finite F +GLIBC_2.0 finitef F +GLIBC_2.0 finitel F +GLIBC_2.0 flock F +GLIBC_2.0 flockfile F +GLIBC_2.0 fnmatch F +GLIBC_2.0 fopen F +GLIBC_2.0 fopencookie F +GLIBC_2.0 fork F +GLIBC_2.0 fpathconf F +GLIBC_2.0 fprintf F +GLIBC_2.0 fputc F +GLIBC_2.0 fputc_unlocked F +GLIBC_2.0 fputs F +GLIBC_2.0 fread F +GLIBC_2.0 free F +GLIBC_2.0 freeaddrinfo F +GLIBC_2.0 freopen F +GLIBC_2.0 frexp F +GLIBC_2.0 frexpf F +GLIBC_2.0 frexpl F +GLIBC_2.0 fscanf F +GLIBC_2.0 fseek F +GLIBC_2.0 fsetpos F +GLIBC_2.0 fstatfs F +GLIBC_2.0 fsync F +GLIBC_2.0 ftell F +GLIBC_2.0 ftime F +GLIBC_2.0 ftok F +GLIBC_2.0 ftruncate F +GLIBC_2.0 ftrylockfile F +GLIBC_2.0 fts_children F +GLIBC_2.0 fts_close F +GLIBC_2.0 fts_open F +GLIBC_2.0 fts_read F +GLIBC_2.0 fts_set F +GLIBC_2.0 ftw F +GLIBC_2.0 funlockfile F +GLIBC_2.0 fwrite F +GLIBC_2.0 gcvt F +GLIBC_2.0 get_avphys_pages F +GLIBC_2.0 get_current_dir_name F +GLIBC_2.0 get_kernel_syms F +GLIBC_2.0 get_myaddress F +GLIBC_2.0 get_nprocs F +GLIBC_2.0 get_nprocs_conf F +GLIBC_2.0 get_phys_pages F +GLIBC_2.0 getaddrinfo F +GLIBC_2.0 getaliasbyname F +GLIBC_2.0 getaliasbyname_r F +GLIBC_2.0 getaliasent F +GLIBC_2.0 getaliasent_r F +GLIBC_2.0 getc F +GLIBC_2.0 getc_unlocked F +GLIBC_2.0 getchar F +GLIBC_2.0 getchar_unlocked F +GLIBC_2.0 getcwd F +GLIBC_2.0 getdelim F +GLIBC_2.0 getdirentries F +GLIBC_2.0 getdomainname F +GLIBC_2.0 getdtablesize F +GLIBC_2.0 getegid F +GLIBC_2.0 getenv F +GLIBC_2.0 geteuid F +GLIBC_2.0 getfsent F +GLIBC_2.0 getfsfile F +GLIBC_2.0 getfsspec F +GLIBC_2.0 getgid F +GLIBC_2.0 getgrent F +GLIBC_2.0 getgrent_r F +GLIBC_2.0 getgrgid F +GLIBC_2.0 getgrgid_r F +GLIBC_2.0 getgrnam F +GLIBC_2.0 getgrnam_r F +GLIBC_2.0 getgroups F +GLIBC_2.0 gethostbyaddr F +GLIBC_2.0 gethostbyaddr_r F +GLIBC_2.0 gethostbyname F +GLIBC_2.0 gethostbyname2 F +GLIBC_2.0 gethostbyname2_r F +GLIBC_2.0 gethostbyname_r F +GLIBC_2.0 gethostent F +GLIBC_2.0 gethostent_r F +GLIBC_2.0 gethostid F +GLIBC_2.0 gethostname F +GLIBC_2.0 getitimer F +GLIBC_2.0 getline F +GLIBC_2.0 getlogin F +GLIBC_2.0 getlogin_r F +GLIBC_2.0 getmntent F +GLIBC_2.0 getmntent_r F +GLIBC_2.0 getnetbyaddr F +GLIBC_2.0 getnetbyaddr_r F +GLIBC_2.0 getnetbyname F +GLIBC_2.0 getnetbyname_r F +GLIBC_2.0 getnetent F +GLIBC_2.0 getnetent_r F +GLIBC_2.0 getnetgrent F +GLIBC_2.0 getnetgrent_r F +GLIBC_2.0 getopt F +GLIBC_2.0 getopt_long F +GLIBC_2.0 getopt_long_only F +GLIBC_2.0 getpagesize F +GLIBC_2.0 getpass F +GLIBC_2.0 getpeername F +GLIBC_2.0 getpgid F +GLIBC_2.0 getpgrp F +GLIBC_2.0 getpid F +GLIBC_2.0 getppid F +GLIBC_2.0 getpriority F +GLIBC_2.0 getprotobyname F +GLIBC_2.0 getprotobyname_r F +GLIBC_2.0 getprotobynumber F +GLIBC_2.0 getprotobynumber_r F +GLIBC_2.0 getprotoent F +GLIBC_2.0 getprotoent_r F +GLIBC_2.0 getpublickey F +GLIBC_2.0 getpw F +GLIBC_2.0 getpwent F +GLIBC_2.0 getpwent_r F +GLIBC_2.0 getpwnam F +GLIBC_2.0 getpwnam_r F +GLIBC_2.0 getpwuid F +GLIBC_2.0 getpwuid_r F +GLIBC_2.0 getresgid F +GLIBC_2.0 getresuid F +GLIBC_2.0 getrlimit F +GLIBC_2.0 getrpcbyname F +GLIBC_2.0 getrpcbyname_r F +GLIBC_2.0 getrpcbynumber F +GLIBC_2.0 getrpcbynumber_r F +GLIBC_2.0 getrpcent F +GLIBC_2.0 getrpcent_r F +GLIBC_2.0 getrpcport F +GLIBC_2.0 getrusage F +GLIBC_2.0 gets F +GLIBC_2.0 getsecretkey F +GLIBC_2.0 getservbyname F +GLIBC_2.0 getservbyname_r F +GLIBC_2.0 getservbyport F +GLIBC_2.0 getservbyport_r F +GLIBC_2.0 getservent F +GLIBC_2.0 getservent_r F +GLIBC_2.0 getsid F +GLIBC_2.0 getsockname F +GLIBC_2.0 getsockopt F +GLIBC_2.0 getspent F +GLIBC_2.0 getspent_r F +GLIBC_2.0 getspnam F +GLIBC_2.0 getspnam_r F +GLIBC_2.0 getsubopt F +GLIBC_2.0 gettext F +GLIBC_2.0 gettimeofday F +GLIBC_2.0 getttyent F +GLIBC_2.0 getttynam F +GLIBC_2.0 getuid F +GLIBC_2.0 getusershell F +GLIBC_2.0 getutent F +GLIBC_2.0 getutent_r F +GLIBC_2.0 getutid F +GLIBC_2.0 getutid_r F +GLIBC_2.0 getutline F +GLIBC_2.0 getutline_r F +GLIBC_2.0 getw F +GLIBC_2.0 getwd F +GLIBC_2.0 glob F +GLIBC_2.0 glob_pattern_p F +GLIBC_2.0 globfree F +GLIBC_2.0 gmtime F +GLIBC_2.0 gmtime_r F +GLIBC_2.0 group_member F +GLIBC_2.0 gsignal F +GLIBC_2.0 gtty F +GLIBC_2.0 h_errlist D 0x14 +GLIBC_2.0 h_nerr D 0x4 +GLIBC_2.0 hasmntopt F +GLIBC_2.0 hcreate F +GLIBC_2.0 hcreate_r F +GLIBC_2.0 hdestroy F +GLIBC_2.0 hdestroy_r F +GLIBC_2.0 herror F +GLIBC_2.0 hsearch F +GLIBC_2.0 hsearch_r F +GLIBC_2.0 hstrerror F +GLIBC_2.0 htonl F +GLIBC_2.0 htons F +GLIBC_2.0 index F +GLIBC_2.0 inet_addr F +GLIBC_2.0 inet_aton F +GLIBC_2.0 inet_lnaof F +GLIBC_2.0 inet_makeaddr F +GLIBC_2.0 inet_netof F +GLIBC_2.0 inet_network F +GLIBC_2.0 inet_nsap_addr F +GLIBC_2.0 inet_nsap_ntoa F +GLIBC_2.0 inet_ntoa F +GLIBC_2.0 inet_ntop F +GLIBC_2.0 inet_pton F +GLIBC_2.0 init_module F +GLIBC_2.0 initgroups F +GLIBC_2.0 initstate F +GLIBC_2.0 initstate_r F +GLIBC_2.0 innetgr F +GLIBC_2.0 insque F +GLIBC_2.0 ioctl F +GLIBC_2.0 iruserok F +GLIBC_2.0 isalnum F +GLIBC_2.0 isalpha F +GLIBC_2.0 isascii F +GLIBC_2.0 isatty F +GLIBC_2.0 isblank F +GLIBC_2.0 iscntrl F +GLIBC_2.0 isdigit F +GLIBC_2.0 isfdtype F +GLIBC_2.0 isgraph F +GLIBC_2.0 isinf F +GLIBC_2.0 isinff F +GLIBC_2.0 isinfl F +GLIBC_2.0 islower F +GLIBC_2.0 isnan F +GLIBC_2.0 isnanf F +GLIBC_2.0 isnanl F +GLIBC_2.0 isprint F +GLIBC_2.0 ispunct F +GLIBC_2.0 isspace F +GLIBC_2.0 isupper F +GLIBC_2.0 iswalnum F +GLIBC_2.0 iswalpha F +GLIBC_2.0 iswcntrl F +GLIBC_2.0 iswctype F +GLIBC_2.0 iswdigit F +GLIBC_2.0 iswgraph F +GLIBC_2.0 iswlower F +GLIBC_2.0 iswprint F +GLIBC_2.0 iswpunct F +GLIBC_2.0 iswspace F +GLIBC_2.0 iswupper F +GLIBC_2.0 iswxdigit F +GLIBC_2.0 isxdigit F +GLIBC_2.0 jrand48 F +GLIBC_2.0 jrand48_r F +GLIBC_2.0 kill F +GLIBC_2.0 killpg F +GLIBC_2.0 klogctl F +GLIBC_2.0 l64a F +GLIBC_2.0 labs F +GLIBC_2.0 lchown F +GLIBC_2.0 lckpwdf F +GLIBC_2.0 lcong48 F +GLIBC_2.0 lcong48_r F +GLIBC_2.0 ldexp F +GLIBC_2.0 ldexpf F +GLIBC_2.0 ldexpl F +GLIBC_2.0 ldiv F +GLIBC_2.0 lfind F +GLIBC_2.0 link F +GLIBC_2.0 listen F +GLIBC_2.0 llabs F +GLIBC_2.0 lldiv F +GLIBC_2.0 llseek F +GLIBC_2.0 loc1 D 0x4 +GLIBC_2.0 loc2 D 0x4 +GLIBC_2.0 localeconv F +GLIBC_2.0 localtime F +GLIBC_2.0 localtime_r F +GLIBC_2.0 lockf F +GLIBC_2.0 locs D 0x4 +GLIBC_2.0 longjmp F +GLIBC_2.0 lrand48 F +GLIBC_2.0 lrand48_r F +GLIBC_2.0 lsearch F +GLIBC_2.0 lseek F +GLIBC_2.0 madvise F +GLIBC_2.0 mallinfo F +GLIBC_2.0 malloc F +GLIBC_2.0 malloc_get_state F +GLIBC_2.0 malloc_set_state F +GLIBC_2.0 malloc_stats F +GLIBC_2.0 malloc_trim F +GLIBC_2.0 malloc_usable_size F +GLIBC_2.0 mallopt F +GLIBC_2.0 mallwatch D 0x4 +GLIBC_2.0 mblen F +GLIBC_2.0 mbrlen F +GLIBC_2.0 mbrtowc F +GLIBC_2.0 mbsinit F +GLIBC_2.0 mbsnrtowcs F +GLIBC_2.0 mbsrtowcs F +GLIBC_2.0 mbstowcs F +GLIBC_2.0 mbtowc F +GLIBC_2.0 mcheck F +GLIBC_2.0 mcount F +GLIBC_2.0 memalign F +GLIBC_2.0 memccpy F +GLIBC_2.0 memchr F +GLIBC_2.0 memcmp F +GLIBC_2.0 memcpy F +GLIBC_2.0 memfrob F +GLIBC_2.0 memmem F +GLIBC_2.0 memmove F +GLIBC_2.0 memset F +GLIBC_2.0 mkdir F +GLIBC_2.0 mkfifo F +GLIBC_2.0 mkstemp F +GLIBC_2.0 mktemp F +GLIBC_2.0 mktime F +GLIBC_2.0 mlock F +GLIBC_2.0 mlockall F +GLIBC_2.0 mmap F +GLIBC_2.0 modf F +GLIBC_2.0 modff F +GLIBC_2.0 modfl F +GLIBC_2.0 monstartup F +GLIBC_2.0 mount F +GLIBC_2.0 mprobe F +GLIBC_2.0 mprotect F +GLIBC_2.0 mrand48 F +GLIBC_2.0 mrand48_r F +GLIBC_2.0 mremap F +GLIBC_2.0 msgctl F +GLIBC_2.0 msgget F +GLIBC_2.0 msgrcv F +GLIBC_2.0 msgsnd F +GLIBC_2.0 msync F +GLIBC_2.0 mtrace F +GLIBC_2.0 munlock F +GLIBC_2.0 munlockall F +GLIBC_2.0 munmap F +GLIBC_2.0 muntrace F +GLIBC_2.0 nanosleep F +GLIBC_2.0 nfsservctl F +GLIBC_2.0 nice F +GLIBC_2.0 nl_langinfo F +GLIBC_2.0 nrand48 F +GLIBC_2.0 nrand48_r F +GLIBC_2.0 ntohl F +GLIBC_2.0 ntohs F +GLIBC_2.0 obstack_alloc_failed_handler D 0x4 +GLIBC_2.0 obstack_exit_failure D 0x4 +GLIBC_2.0 obstack_free F +GLIBC_2.0 obstack_printf F +GLIBC_2.0 obstack_vprintf F +GLIBC_2.0 on_exit F +GLIBC_2.0 open F +GLIBC_2.0 open_memstream F +GLIBC_2.0 opendir F +GLIBC_2.0 openlog F +GLIBC_2.0 optarg D 0x4 +GLIBC_2.0 opterr D 0x4 +GLIBC_2.0 optind D 0x4 +GLIBC_2.0 optopt D 0x4 +GLIBC_2.0 parse_printf_format F +GLIBC_2.0 pathconf F +GLIBC_2.0 pause F +GLIBC_2.0 pclose F +GLIBC_2.0 perror F +GLIBC_2.0 personality F +GLIBC_2.0 pipe F +GLIBC_2.0 pmap_getmaps F +GLIBC_2.0 pmap_getport F +GLIBC_2.0 pmap_rmtcall F +GLIBC_2.0 pmap_set F +GLIBC_2.0 pmap_unset F +GLIBC_2.0 poll F +GLIBC_2.0 popen F +GLIBC_2.0 prctl F +GLIBC_2.0 printf F +GLIBC_2.0 profil F +GLIBC_2.0 program_invocation_name D 0x4 +GLIBC_2.0 program_invocation_short_name D 0x4 +GLIBC_2.0 pselect F +GLIBC_2.0 psignal F +GLIBC_2.0 pthread_attr_destroy F +GLIBC_2.0 pthread_attr_getdetachstate F +GLIBC_2.0 pthread_attr_getinheritsched F +GLIBC_2.0 pthread_attr_getschedparam F +GLIBC_2.0 pthread_attr_getschedpolicy F +GLIBC_2.0 pthread_attr_getscope F +GLIBC_2.0 pthread_attr_init F +GLIBC_2.0 pthread_attr_setdetachstate F +GLIBC_2.0 pthread_attr_setinheritsched F +GLIBC_2.0 pthread_attr_setschedparam F +GLIBC_2.0 pthread_attr_setschedpolicy F +GLIBC_2.0 pthread_attr_setscope F +GLIBC_2.0 pthread_cond_broadcast F +GLIBC_2.0 pthread_cond_destroy F +GLIBC_2.0 pthread_cond_init F +GLIBC_2.0 pthread_cond_signal F +GLIBC_2.0 pthread_cond_timedwait F +GLIBC_2.0 pthread_cond_wait F +GLIBC_2.0 pthread_condattr_destroy F +GLIBC_2.0 pthread_condattr_init F +GLIBC_2.0 pthread_equal F +GLIBC_2.0 pthread_exit F +GLIBC_2.0 pthread_getschedparam F +GLIBC_2.0 pthread_mutex_destroy F +GLIBC_2.0 pthread_mutex_init F +GLIBC_2.0 pthread_mutex_lock F +GLIBC_2.0 pthread_mutex_unlock F +GLIBC_2.0 pthread_self F +GLIBC_2.0 pthread_setcancelstate F +GLIBC_2.0 pthread_setcanceltype F +GLIBC_2.0 pthread_setschedparam F +GLIBC_2.0 ptrace F +GLIBC_2.0 putc F +GLIBC_2.0 putc_unlocked F +GLIBC_2.0 putchar F +GLIBC_2.0 putchar_unlocked F +GLIBC_2.0 putenv F +GLIBC_2.0 putpwent F +GLIBC_2.0 puts F +GLIBC_2.0 putspent F +GLIBC_2.0 pututline F +GLIBC_2.0 putw F +GLIBC_2.0 pvalloc F +GLIBC_2.0 qecvt F +GLIBC_2.0 qecvt_r F +GLIBC_2.0 qfcvt F +GLIBC_2.0 qfcvt_r F +GLIBC_2.0 qgcvt F +GLIBC_2.0 qsort F +GLIBC_2.0 query_module F +GLIBC_2.0 quotactl F +GLIBC_2.0 raise F +GLIBC_2.0 rand F +GLIBC_2.0 rand_r F +GLIBC_2.0 random F +GLIBC_2.0 random_r F +GLIBC_2.0 rcmd F +GLIBC_2.0 re_comp F +GLIBC_2.0 re_compile_fastmap F +GLIBC_2.0 re_compile_pattern F +GLIBC_2.0 re_exec F +GLIBC_2.0 re_match F +GLIBC_2.0 re_match_2 F +GLIBC_2.0 re_max_failures D 0x4 +GLIBC_2.0 re_search F +GLIBC_2.0 re_search_2 F +GLIBC_2.0 re_set_registers F +GLIBC_2.0 re_set_syntax F +GLIBC_2.0 re_syntax_options D 0x4 +GLIBC_2.0 read F +GLIBC_2.0 readdir F +GLIBC_2.0 readdir_r F +GLIBC_2.0 readlink F +GLIBC_2.0 readv F +GLIBC_2.0 realloc F +GLIBC_2.0 realpath F +GLIBC_2.0 reboot F +GLIBC_2.0 recv F +GLIBC_2.0 recvfrom F +GLIBC_2.0 recvmsg F +GLIBC_2.0 regcomp F +GLIBC_2.0 regerror F +GLIBC_2.0 regexec F +GLIBC_2.0 regfree F +GLIBC_2.0 register_printf_function F +GLIBC_2.0 registerrpc F +GLIBC_2.0 remove F +GLIBC_2.0 remque F +GLIBC_2.0 rename F +GLIBC_2.0 res_init F +GLIBC_2.0 revoke F +GLIBC_2.0 rewind F +GLIBC_2.0 rewinddir F +GLIBC_2.0 rexec F +GLIBC_2.0 rexecoptions D 0x4 +GLIBC_2.0 rindex F +GLIBC_2.0 rmdir F +GLIBC_2.0 rpc_createerr D 0x10 +GLIBC_2.0 rpmatch F +GLIBC_2.0 rresvport F +GLIBC_2.0 ruserok F +GLIBC_2.0 ruserpass F +GLIBC_2.0 sbrk F +GLIBC_2.0 scalbn F +GLIBC_2.0 scalbnf F +GLIBC_2.0 scalbnl F +GLIBC_2.0 scandir F +GLIBC_2.0 scanf F +GLIBC_2.0 sched_get_priority_max F +GLIBC_2.0 sched_get_priority_min F +GLIBC_2.0 sched_getparam F +GLIBC_2.0 sched_getscheduler F +GLIBC_2.0 sched_rr_get_interval F +GLIBC_2.0 sched_setparam F +GLIBC_2.0 sched_setscheduler F +GLIBC_2.0 sched_yield F +GLIBC_2.0 seed48 F +GLIBC_2.0 seed48_r F +GLIBC_2.0 seekdir F +GLIBC_2.0 select F +GLIBC_2.0 semctl F +GLIBC_2.0 semget F +GLIBC_2.0 semop F +GLIBC_2.0 send F +GLIBC_2.0 sendmsg F +GLIBC_2.0 sendto F +GLIBC_2.0 setaliasent F +GLIBC_2.0 setbuf F +GLIBC_2.0 setbuffer F +GLIBC_2.0 setcontext F +GLIBC_2.0 setdomainname F +GLIBC_2.0 setegid F +GLIBC_2.0 setenv F +GLIBC_2.0 seteuid F +GLIBC_2.0 setfsent F +GLIBC_2.0 setfsgid F +GLIBC_2.0 setfsuid F +GLIBC_2.0 setgid F +GLIBC_2.0 setgrent F +GLIBC_2.0 setgroups F +GLIBC_2.0 sethostent F +GLIBC_2.0 sethostid F +GLIBC_2.0 sethostname F +GLIBC_2.0 setitimer F +GLIBC_2.0 setjmp F +GLIBC_2.0 setlinebuf F +GLIBC_2.0 setlocale F +GLIBC_2.0 setlogin F +GLIBC_2.0 setlogmask F +GLIBC_2.0 setmntent F +GLIBC_2.0 setnetent F +GLIBC_2.0 setnetgrent F +GLIBC_2.0 setpgid F +GLIBC_2.0 setpgrp F +GLIBC_2.0 setpriority F +GLIBC_2.0 setprotoent F +GLIBC_2.0 setpwent F +GLIBC_2.0 setregid F +GLIBC_2.0 setresgid F +GLIBC_2.0 setresuid F +GLIBC_2.0 setreuid F +GLIBC_2.0 setrlimit F +GLIBC_2.0 setrpcent F +GLIBC_2.0 setservent F +GLIBC_2.0 setsid F +GLIBC_2.0 setsockopt F +GLIBC_2.0 setspent F +GLIBC_2.0 setstate F +GLIBC_2.0 setstate_r F +GLIBC_2.0 settimeofday F +GLIBC_2.0 setttyent F +GLIBC_2.0 setuid F +GLIBC_2.0 setusershell F +GLIBC_2.0 setutent F +GLIBC_2.0 setvbuf F +GLIBC_2.0 sgetspent F +GLIBC_2.0 sgetspent_r F +GLIBC_2.0 shmat F +GLIBC_2.0 shmctl F +GLIBC_2.0 shmdt F +GLIBC_2.0 shmget F +GLIBC_2.0 shutdown F +GLIBC_2.0 sigaction F +GLIBC_2.0 sigaddset F +GLIBC_2.0 sigaltstack F +GLIBC_2.0 sigandset F +GLIBC_2.0 sigblock F +GLIBC_2.0 sigdelset F +GLIBC_2.0 sigemptyset F +GLIBC_2.0 sigfillset F +GLIBC_2.0 siggetmask F +GLIBC_2.0 siginterrupt F +GLIBC_2.0 sigisemptyset F +GLIBC_2.0 sigismember F +GLIBC_2.0 siglongjmp F +GLIBC_2.0 signal F +GLIBC_2.0 sigorset F +GLIBC_2.0 sigpause F +GLIBC_2.0 sigpending F +GLIBC_2.0 sigprocmask F +GLIBC_2.0 sigreturn F +GLIBC_2.0 sigsetmask F +GLIBC_2.0 sigstack F +GLIBC_2.0 sigsuspend F +GLIBC_2.0 sigvec F +GLIBC_2.0 sigwait F +GLIBC_2.0 sleep F +GLIBC_2.0 snprintf F +GLIBC_2.0 socket F +GLIBC_2.0 socketpair F +GLIBC_2.0 sprintf F +GLIBC_2.0 srand F +GLIBC_2.0 srand48 F +GLIBC_2.0 srand48_r F +GLIBC_2.0 srandom F +GLIBC_2.0 srandom_r F +GLIBC_2.0 sscanf F +GLIBC_2.0 ssignal F +GLIBC_2.0 sstk F +GLIBC_2.0 statfs F +GLIBC_2.0 stderr D 0x4 +GLIBC_2.0 stdin D 0x4 +GLIBC_2.0 stdout D 0x4 +GLIBC_2.0 step F +GLIBC_2.0 stime F +GLIBC_2.0 stpcpy F +GLIBC_2.0 stpncpy F +GLIBC_2.0 strcasecmp F +GLIBC_2.0 strcat F +GLIBC_2.0 strchr F +GLIBC_2.0 strcmp F +GLIBC_2.0 strcoll F +GLIBC_2.0 strcpy F +GLIBC_2.0 strcspn F +GLIBC_2.0 strdup F +GLIBC_2.0 strerror F +GLIBC_2.0 strerror_r F +GLIBC_2.0 strfmon F +GLIBC_2.0 strfry F +GLIBC_2.0 strftime F +GLIBC_2.0 strlen F +GLIBC_2.0 strncasecmp F +GLIBC_2.0 strncat F +GLIBC_2.0 strncmp F +GLIBC_2.0 strncpy F +GLIBC_2.0 strndup F +GLIBC_2.0 strnlen F +GLIBC_2.0 strpbrk F +GLIBC_2.0 strptime F +GLIBC_2.0 strrchr F +GLIBC_2.0 strsep F +GLIBC_2.0 strsignal F +GLIBC_2.0 strspn F +GLIBC_2.0 strstr F +GLIBC_2.0 strtod F +GLIBC_2.0 strtof F +GLIBC_2.0 strtok F +GLIBC_2.0 strtok_r F +GLIBC_2.0 strtol F +GLIBC_2.0 strtold F +GLIBC_2.0 strtoll F +GLIBC_2.0 strtoq F +GLIBC_2.0 strtoul F +GLIBC_2.0 strtoull F +GLIBC_2.0 strtouq F +GLIBC_2.0 strxfrm F +GLIBC_2.0 stty F +GLIBC_2.0 svc_exit F +GLIBC_2.0 svc_fdset D 0x80 +GLIBC_2.0 svc_getreq F +GLIBC_2.0 svc_getreqset F +GLIBC_2.0 svc_register F +GLIBC_2.0 svc_run F +GLIBC_2.0 svc_sendreply F +GLIBC_2.0 svc_unregister F +GLIBC_2.0 svcauthdes_stats D 0xc +GLIBC_2.0 svcerr_auth F +GLIBC_2.0 svcerr_decode F +GLIBC_2.0 svcerr_noproc F +GLIBC_2.0 svcerr_noprog F +GLIBC_2.0 svcerr_progvers F +GLIBC_2.0 svcerr_systemerr F +GLIBC_2.0 svcerr_weakauth F +GLIBC_2.0 svcfd_create F +GLIBC_2.0 svcraw_create F +GLIBC_2.0 svctcp_create F +GLIBC_2.0 svcudp_bufcreate F +GLIBC_2.0 svcudp_create F +GLIBC_2.0 svcudp_enablecache F +GLIBC_2.0 swab F +GLIBC_2.0 swapoff F +GLIBC_2.0 swapon F +GLIBC_2.0 symlink F +GLIBC_2.0 sync F +GLIBC_2.0 sys_errlist D 0x1ec +GLIBC_2.0 sys_nerr D 0x4 +GLIBC_2.0 sys_sigabbrev D 0x80 +GLIBC_2.0 sys_siglist D 0x80 +GLIBC_2.0 syscall F +GLIBC_2.0 sysconf F +GLIBC_2.0 sysctl F +GLIBC_2.0 sysinfo F +GLIBC_2.0 syslog F +GLIBC_2.0 system F +GLIBC_2.0 tcdrain F +GLIBC_2.0 tcflow F +GLIBC_2.0 tcflush F +GLIBC_2.0 tcgetattr F +GLIBC_2.0 tcgetpgrp F +GLIBC_2.0 tcsendbreak F +GLIBC_2.0 tcsetattr F +GLIBC_2.0 tcsetpgrp F +GLIBC_2.0 tdelete F +GLIBC_2.0 telldir F +GLIBC_2.0 tempnam F +GLIBC_2.0 textdomain F +GLIBC_2.0 tfind F +GLIBC_2.0 time F +GLIBC_2.0 timegm F +GLIBC_2.0 timelocal F +GLIBC_2.0 times F +GLIBC_2.0 timezone D 0x4 +GLIBC_2.0 tmpfile F +GLIBC_2.0 tmpnam F +GLIBC_2.0 tmpnam_r F +GLIBC_2.0 toascii F +GLIBC_2.0 tolower F +GLIBC_2.0 toupper F +GLIBC_2.0 towctrans F +GLIBC_2.0 towlower F +GLIBC_2.0 towupper F +GLIBC_2.0 tr_break F +GLIBC_2.0 truncate F +GLIBC_2.0 tsearch F +GLIBC_2.0 ttyname F +GLIBC_2.0 ttyname_r F +GLIBC_2.0 ttyslot F +GLIBC_2.0 twalk F +GLIBC_2.0 tzname D 0x8 +GLIBC_2.0 tzset F +GLIBC_2.0 ualarm F +GLIBC_2.0 ulckpwdf F +GLIBC_2.0 ulimit F +GLIBC_2.0 umask F +GLIBC_2.0 umount F +GLIBC_2.0 uname F +GLIBC_2.0 ungetc F +GLIBC_2.0 unlink F +GLIBC_2.0 unsetenv F +GLIBC_2.0 updwtmp F +GLIBC_2.0 uselib F +GLIBC_2.0 usleep F +GLIBC_2.0 ustat F +GLIBC_2.0 utime F +GLIBC_2.0 utimes F +GLIBC_2.0 utmpname F +GLIBC_2.0 valloc F +GLIBC_2.0 vasprintf F +GLIBC_2.0 vdprintf F +GLIBC_2.0 verr F +GLIBC_2.0 verrx F +GLIBC_2.0 vfork F +GLIBC_2.0 vfprintf F +GLIBC_2.0 vfscanf F +GLIBC_2.0 vhangup F +GLIBC_2.0 vlimit F +GLIBC_2.0 vprintf F +GLIBC_2.0 vscanf F +GLIBC_2.0 vsnprintf F +GLIBC_2.0 vsprintf F +GLIBC_2.0 vsscanf F +GLIBC_2.0 vsyslog F +GLIBC_2.0 vtimes F +GLIBC_2.0 vwarn F +GLIBC_2.0 vwarnx F +GLIBC_2.0 wait F +GLIBC_2.0 wait3 F +GLIBC_2.0 wait4 F +GLIBC_2.0 waitpid F +GLIBC_2.0 warn F +GLIBC_2.0 warnx F +GLIBC_2.0 wcpcpy F +GLIBC_2.0 wcpncpy F +GLIBC_2.0 wcrtomb F +GLIBC_2.0 wcscat F +GLIBC_2.0 wcschr F +GLIBC_2.0 wcscmp F +GLIBC_2.0 wcscoll F +GLIBC_2.0 wcscpy F +GLIBC_2.0 wcscspn F +GLIBC_2.0 wcsdup F +GLIBC_2.0 wcslen F +GLIBC_2.0 wcsncat F +GLIBC_2.0 wcsncmp F +GLIBC_2.0 wcsncpy F +GLIBC_2.0 wcsnrtombs F +GLIBC_2.0 wcspbrk F +GLIBC_2.0 wcsrchr F +GLIBC_2.0 wcsrtombs F +GLIBC_2.0 wcsspn F +GLIBC_2.0 wcsstr F +GLIBC_2.0 wcstod F +GLIBC_2.0 wcstof F +GLIBC_2.0 wcstok F +GLIBC_2.0 wcstol F +GLIBC_2.0 wcstold F +GLIBC_2.0 wcstombs F +GLIBC_2.0 wcstoq F +GLIBC_2.0 wcstoul F +GLIBC_2.0 wcstouq F +GLIBC_2.0 wcswidth F +GLIBC_2.0 wcsxfrm F +GLIBC_2.0 wctob F +GLIBC_2.0 wctomb F +GLIBC_2.0 wctrans F +GLIBC_2.0 wctype F +GLIBC_2.0 wcwidth F +GLIBC_2.0 wmemchr F +GLIBC_2.0 wmemcmp F +GLIBC_2.0 wmemcpy F +GLIBC_2.0 wmemmove F +GLIBC_2.0 wmemset F +GLIBC_2.0 write F +GLIBC_2.0 writev F +GLIBC_2.0 xdr_accepted_reply F +GLIBC_2.0 xdr_array F +GLIBC_2.0 xdr_authunix_parms F +GLIBC_2.0 xdr_bool F +GLIBC_2.0 xdr_bytes F +GLIBC_2.0 xdr_callhdr F +GLIBC_2.0 xdr_callmsg F +GLIBC_2.0 xdr_char F +GLIBC_2.0 xdr_cryptkeyarg F +GLIBC_2.0 xdr_cryptkeyarg2 F +GLIBC_2.0 xdr_cryptkeyres F +GLIBC_2.0 xdr_des_block F +GLIBC_2.0 xdr_double F +GLIBC_2.0 xdr_enum F +GLIBC_2.0 xdr_float F +GLIBC_2.0 xdr_free F +GLIBC_2.0 xdr_int F +GLIBC_2.0 xdr_key_netstarg F +GLIBC_2.0 xdr_key_netstres F +GLIBC_2.0 xdr_keybuf F +GLIBC_2.0 xdr_keystatus F +GLIBC_2.0 xdr_long F +GLIBC_2.0 xdr_netobj F +GLIBC_2.0 xdr_opaque F +GLIBC_2.0 xdr_opaque_auth F +GLIBC_2.0 xdr_pmap F +GLIBC_2.0 xdr_pmaplist F +GLIBC_2.0 xdr_pointer F +GLIBC_2.0 xdr_reference F +GLIBC_2.0 xdr_rejected_reply F +GLIBC_2.0 xdr_replymsg F +GLIBC_2.0 xdr_rmtcall_args F +GLIBC_2.0 xdr_rmtcallres F +GLIBC_2.0 xdr_short F +GLIBC_2.0 xdr_string F +GLIBC_2.0 xdr_u_char F +GLIBC_2.0 xdr_u_int F +GLIBC_2.0 xdr_u_long F +GLIBC_2.0 xdr_u_short F +GLIBC_2.0 xdr_union F +GLIBC_2.0 xdr_vector F +GLIBC_2.0 xdr_void F +GLIBC_2.0 xdr_wrapstring F +GLIBC_2.0 xdrmem_create F +GLIBC_2.0 xdrrec_create F +GLIBC_2.0 xdrrec_endofrecord F +GLIBC_2.0 xdrrec_eof F +GLIBC_2.0 xdrrec_skiprecord F +GLIBC_2.0 xdrstdio_create F +GLIBC_2.0 xencrypt F +GLIBC_2.0 xprt_register F +GLIBC_2.0 xprt_unregister F +GLIBC_2.1 GLIBC_2.1 A +GLIBC_2.1 _IO_2_1_stderr_ D 0xa0 +GLIBC_2.1 _IO_2_1_stdin_ D 0xa0 +GLIBC_2.1 _IO_2_1_stdout_ D 0xa0 +GLIBC_2.1 _IO_do_write F +GLIBC_2.1 _IO_fclose F +GLIBC_2.1 _IO_fdopen F +GLIBC_2.1 _IO_fgetpos64 F +GLIBC_2.1 _IO_file_attach F +GLIBC_2.1 _IO_file_close_it F +GLIBC_2.1 _IO_file_finish F +GLIBC_2.1 _IO_file_fopen F +GLIBC_2.1 _IO_file_init F +GLIBC_2.1 _IO_file_overflow F +GLIBC_2.1 _IO_file_seekoff F +GLIBC_2.1 _IO_file_setbuf F +GLIBC_2.1 _IO_file_sync F +GLIBC_2.1 _IO_file_underflow F +GLIBC_2.1 _IO_file_write F +GLIBC_2.1 _IO_file_xsputn F +GLIBC_2.1 _IO_fopen F +GLIBC_2.1 _IO_fsetpos64 F +GLIBC_2.1 _IO_getline_info F +GLIBC_2.1 _IO_popen F +GLIBC_2.1 _IO_proc_close F +GLIBC_2.1 _IO_proc_open F +GLIBC_2.1 __asprintf F +GLIBC_2.1 __backtrace F +GLIBC_2.1 __backtrace_symbols F +GLIBC_2.1 __backtrace_symbols_fd F +GLIBC_2.1 __chown F +GLIBC_2.1 __duplocale F +GLIBC_2.1 __freelocale F +GLIBC_2.1 __fxstat64 F +GLIBC_2.1 __isalnum_l F +GLIBC_2.1 __isalpha_l F +GLIBC_2.1 __isascii_l F +GLIBC_2.1 __isblank_l F +GLIBC_2.1 __iscntrl_l F +GLIBC_2.1 __isdigit_l F +GLIBC_2.1 __isgraph_l F +GLIBC_2.1 __islower_l F +GLIBC_2.1 __isprint_l F +GLIBC_2.1 __ispunct_l F +GLIBC_2.1 __isspace_l F +GLIBC_2.1 __isupper_l F +GLIBC_2.1 __iswalnum_l F +GLIBC_2.1 __iswalpha_l F +GLIBC_2.1 __iswblank_l F +GLIBC_2.1 __iswcntrl_l F +GLIBC_2.1 __iswctype_l F +GLIBC_2.1 __iswdigit_l F +GLIBC_2.1 __iswgraph_l F +GLIBC_2.1 __iswlower_l F +GLIBC_2.1 __iswprint_l F +GLIBC_2.1 __iswpunct_l F +GLIBC_2.1 __iswspace_l F +GLIBC_2.1 __iswupper_l F +GLIBC_2.1 __iswxdigit_l F +GLIBC_2.1 __isxdigit_l F +GLIBC_2.1 __key_decryptsession_pk_LOCAL D 0x4 +GLIBC_2.1 __key_encryptsession_pk_LOCAL D 0x4 +GLIBC_2.1 __key_gendes_LOCAL D 0x4 +GLIBC_2.1 __libc_allocate_rtsig F +GLIBC_2.1 __libc_current_sigrtmax F +GLIBC_2.1 __libc_current_sigrtmin F +GLIBC_2.1 __libc_freeres F +GLIBC_2.1 __libc_sa_len F +GLIBC_2.1 __lxstat64 F +GLIBC_2.1 __newlocale F +GLIBC_2.1 __poll F +GLIBC_2.1 __pread64 F +GLIBC_2.1 __pwrite64 F +GLIBC_2.1 __rawmemchr F +GLIBC_2.1 __signbit F +GLIBC_2.1 __signbitf F +GLIBC_2.1 __strcasecmp_l F +GLIBC_2.1 __strcasestr F +GLIBC_2.1 __strcoll_l F +GLIBC_2.1 __strfmon_l F +GLIBC_2.1 __strncasecmp_l F +GLIBC_2.1 __strtod_l F +GLIBC_2.1 __strtof_l F +GLIBC_2.1 __strtol_l F +GLIBC_2.1 __strtold_l F +GLIBC_2.1 __strtoll_l F +GLIBC_2.1 __strtoul_l F +GLIBC_2.1 __strtoull_l F +GLIBC_2.1 __strxfrm_l F +GLIBC_2.1 __toascii_l F +GLIBC_2.1 __tolower_l F +GLIBC_2.1 __toupper_l F +GLIBC_2.1 __towctrans F +GLIBC_2.1 __towctrans_l F +GLIBC_2.1 __towlower_l F +GLIBC_2.1 __towupper_l F +GLIBC_2.1 __wcscasecmp_l F +GLIBC_2.1 __wcscoll_l F +GLIBC_2.1 __wcsncasecmp_l F +GLIBC_2.1 __wcstod_l F +GLIBC_2.1 __wcstof_l F +GLIBC_2.1 __wcstol_l F +GLIBC_2.1 __wcstold_l F +GLIBC_2.1 __wcstoll_l F +GLIBC_2.1 __wcstoul_l F +GLIBC_2.1 __wcstoull_l F +GLIBC_2.1 __wcsxfrm_l F +GLIBC_2.1 __wctype_l F +GLIBC_2.1 __xstat64 F +GLIBC_2.1 _authenticate F +GLIBC_2.1 _dl_mcount_wrapper F +GLIBC_2.1 _dl_mcount_wrapper_check F +GLIBC_2.1 _sys_errlist D 0x1f4 +GLIBC_2.1 _sys_nerr D 0x4 +GLIBC_2.1 _sys_siglist D 0x100 +GLIBC_2.1 addseverity F +GLIBC_2.1 alphasort64 F +GLIBC_2.1 argp_err_exit_status D 0x4 +GLIBC_2.1 argp_error F +GLIBC_2.1 argp_failure F +GLIBC_2.1 argp_help F +GLIBC_2.1 argp_parse F +GLIBC_2.1 argp_program_bug_address D 0x4 +GLIBC_2.1 argp_program_version D 0x4 +GLIBC_2.1 argp_program_version_hook D 0x4 +GLIBC_2.1 argp_state_help F +GLIBC_2.1 argp_usage F +GLIBC_2.1 authdes_create F +GLIBC_2.1 authdes_getucred F +GLIBC_2.1 authdes_pk_create F +GLIBC_2.1 backtrace F +GLIBC_2.1 backtrace_symbols F +GLIBC_2.1 backtrace_symbols_fd F +GLIBC_2.1 capget F +GLIBC_2.1 capset F +GLIBC_2.1 cbc_crypt F +GLIBC_2.1 chown F +GLIBC_2.1 clntunix_create F +GLIBC_2.1 creat64 F +GLIBC_2.1 des_setparity F +GLIBC_2.1 ecb_crypt F +GLIBC_2.1 endutxent F +GLIBC_2.1 fattach F +GLIBC_2.1 fclose F +GLIBC_2.1 fdetach F +GLIBC_2.1 fdopen F +GLIBC_2.1 ffsl F +GLIBC_2.1 ffsll F +GLIBC_2.1 fgetc_unlocked F +GLIBC_2.1 fgetpos64 F +GLIBC_2.1 fgets_unlocked F +GLIBC_2.1 fmtmsg F +GLIBC_2.1 fopen F +GLIBC_2.1 fopen64 F +GLIBC_2.1 fputs_unlocked F +GLIBC_2.1 fread_unlocked F +GLIBC_2.1 freopen64 F +GLIBC_2.1 fseeko F +GLIBC_2.1 fseeko64 F +GLIBC_2.1 fsetpos64 F +GLIBC_2.1 fstatfs64 F +GLIBC_2.1 fstatvfs F +GLIBC_2.1 fstatvfs64 F +GLIBC_2.1 ftello F +GLIBC_2.1 ftello64 F +GLIBC_2.1 ftruncate64 F +GLIBC_2.1 ftw64 F +GLIBC_2.1 fwrite_unlocked F +GLIBC_2.1 gai_strerror F +GLIBC_2.1 getcontext F +GLIBC_2.1 getdate F +GLIBC_2.1 getdate_err D 0x4 +GLIBC_2.1 getdate_r F +GLIBC_2.1 getmsg F +GLIBC_2.1 getnameinfo F +GLIBC_2.1 getnetname F +GLIBC_2.1 getpmsg F +GLIBC_2.1 getpt F +GLIBC_2.1 getrlimit64 F +GLIBC_2.1 getutxent F +GLIBC_2.1 getutxid F +GLIBC_2.1 getutxline F +GLIBC_2.1 glob64 F +GLIBC_2.1 globfree64 F +GLIBC_2.1 gnu_get_libc_release F +GLIBC_2.1 gnu_get_libc_version F +GLIBC_2.1 grantpt F +GLIBC_2.1 host2netname F +GLIBC_2.1 iconv F +GLIBC_2.1 iconv_close F +GLIBC_2.1 iconv_open F +GLIBC_2.1 if_freenameindex F +GLIBC_2.1 if_indextoname F +GLIBC_2.1 if_nameindex F +GLIBC_2.1 if_nametoindex F +GLIBC_2.1 in6addr_any D 0x10 +GLIBC_2.1 in6addr_loopback D 0x10 +GLIBC_2.1 isastream F +GLIBC_2.1 iswblank F +GLIBC_2.1 key_decryptsession F +GLIBC_2.1 key_decryptsession_pk F +GLIBC_2.1 key_encryptsession F +GLIBC_2.1 key_encryptsession_pk F +GLIBC_2.1 key_gendes F +GLIBC_2.1 key_get_conv F +GLIBC_2.1 key_secretkey_is_set F +GLIBC_2.1 key_setnet F +GLIBC_2.1 key_setsecret F +GLIBC_2.1 lockf64 F +GLIBC_2.1 lseek64 F +GLIBC_2.1 makecontext F +GLIBC_2.1 mempcpy F +GLIBC_2.1 mmap64 F +GLIBC_2.1 netname2host F +GLIBC_2.1 netname2user F +GLIBC_2.1 nftw F +GLIBC_2.1 nftw64 F +GLIBC_2.1 ntp_adjtime F +GLIBC_2.1 ntp_gettime F +GLIBC_2.1 open64 F +GLIBC_2.1 passwd2des F +GLIBC_2.1 pclose F +GLIBC_2.1 popen F +GLIBC_2.1 pread F +GLIBC_2.1 pread64 F +GLIBC_2.1 printf_size F +GLIBC_2.1 printf_size_info F +GLIBC_2.1 pthread_attr_init F +GLIBC_2.1 ptsname F +GLIBC_2.1 ptsname_r F +GLIBC_2.1 putgrent F +GLIBC_2.1 putmsg F +GLIBC_2.1 putpmsg F +GLIBC_2.1 pututxline F +GLIBC_2.1 pwrite F +GLIBC_2.1 pwrite64 F +GLIBC_2.1 rawmemchr F +GLIBC_2.1 readdir64 F +GLIBC_2.1 readdir64_r F +GLIBC_2.1 rtime F +GLIBC_2.1 scandir64 F +GLIBC_2.1 sendfile F +GLIBC_2.1 setrlimit64 F +GLIBC_2.1 setutxent F +GLIBC_2.1 sighold F +GLIBC_2.1 sigignore F +GLIBC_2.1 sigqueue F +GLIBC_2.1 sigrelse F +GLIBC_2.1 sigset F +GLIBC_2.1 sigtimedwait F +GLIBC_2.1 sigwaitinfo F +GLIBC_2.1 statfs64 F +GLIBC_2.1 statvfs F +GLIBC_2.1 statvfs64 F +GLIBC_2.1 strcasestr F +GLIBC_2.1 strtoimax F +GLIBC_2.1 strtoumax F +GLIBC_2.1 strverscmp F +GLIBC_2.1 svcunix_create F +GLIBC_2.1 svcunixfd_create F +GLIBC_2.1 swapcontext F +GLIBC_2.1 sys_errlist D 0x1f4 +GLIBC_2.1 sys_nerr D 0x4 +GLIBC_2.1 sys_sigabbrev D 0x100 +GLIBC_2.1 sys_siglist D 0x100 +GLIBC_2.1 sysv_signal F +GLIBC_2.1 tcgetsid F +GLIBC_2.1 tdestroy F +GLIBC_2.1 tmpfile F +GLIBC_2.1 tmpfile64 F +GLIBC_2.1 truncate64 F +GLIBC_2.1 umount2 F +GLIBC_2.1 unlockpt F +GLIBC_2.1 updwtmpx F +GLIBC_2.1 user2netname F +GLIBC_2.1 utmpxname F +GLIBC_2.1 versionsort F +GLIBC_2.1 versionsort64 F +GLIBC_2.1 waitid F +GLIBC_2.1 wcscasecmp F +GLIBC_2.1 wcsncasecmp F +GLIBC_2.1 wcsnlen F +GLIBC_2.1 wcstoimax F +GLIBC_2.1 wcstoll F +GLIBC_2.1 wcstoull F +GLIBC_2.1 wcstoumax F +GLIBC_2.1 wcswcs F +GLIBC_2.1 wordexp F +GLIBC_2.1 wordfree F +GLIBC_2.1 xdecrypt F +GLIBC_2.1 xdr_authdes_cred F +GLIBC_2.1 xdr_authdes_verf F +GLIBC_2.1 xdr_getcredres F +GLIBC_2.1 xdr_int16_t F +GLIBC_2.1 xdr_int32_t F +GLIBC_2.1 xdr_int8_t F +GLIBC_2.1 xdr_netnamestr F +GLIBC_2.1 xdr_sizeof F +GLIBC_2.1 xdr_uint16_t F +GLIBC_2.1 xdr_uint32_t F +GLIBC_2.1 xdr_uint8_t F +GLIBC_2.1 xdr_unixcred F +GLIBC_2.1.1 GLIBC_2.1.1 A +GLIBC_2.1.1 _Exit F +GLIBC_2.1.1 __mempcpy_small F +GLIBC_2.1.1 __stpcpy_small F +GLIBC_2.1.1 __strcpy_small F +GLIBC_2.1.1 __strcspn_c1 F +GLIBC_2.1.1 __strcspn_c2 F +GLIBC_2.1.1 __strcspn_c3 F +GLIBC_2.1.1 __strpbrk_c2 F +GLIBC_2.1.1 __strpbrk_c3 F +GLIBC_2.1.1 __strsep_1c F +GLIBC_2.1.1 __strsep_2c F +GLIBC_2.1.1 __strsep_3c F +GLIBC_2.1.1 __strsep_g F +GLIBC_2.1.1 __strspn_c1 F +GLIBC_2.1.1 __strspn_c2 F +GLIBC_2.1.1 __strspn_c3 F +GLIBC_2.1.1 __strtok_r_1c F +GLIBC_2.1.1 __strverscmp F +GLIBC_2.1.1 getutmp F +GLIBC_2.1.1 getutmpx F +GLIBC_2.1.1 imaxabs F +GLIBC_2.1.1 imaxdiv F +GLIBC_2.1.1 strchrnul F +GLIBC_2.1.1 xdr_hyper F +GLIBC_2.1.1 xdr_int64_t F +GLIBC_2.1.1 xdr_longlong_t F +GLIBC_2.1.1 xdr_u_hyper F +GLIBC_2.1.1 xdr_u_longlong_t F +GLIBC_2.1.1 xdr_uint64_t F +GLIBC_2.1.2 GLIBC_2.1.2 A +GLIBC_2.1.2 __vfork F +GLIBC_2.1.2 getaliasbyname_r F +GLIBC_2.1.2 getaliasent_r F +GLIBC_2.1.2 getgrent_r F +GLIBC_2.1.2 getgrgid_r F +GLIBC_2.1.2 getgrnam_r F +GLIBC_2.1.2 gethostbyaddr_r F +GLIBC_2.1.2 gethostbyname2_r F +GLIBC_2.1.2 gethostbyname_r F +GLIBC_2.1.2 gethostent_r F +GLIBC_2.1.2 getnetbyaddr_r F +GLIBC_2.1.2 getnetbyname_r F +GLIBC_2.1.2 getnetent_r F +GLIBC_2.1.2 getprotobyname_r F +GLIBC_2.1.2 getprotobynumber_r F +GLIBC_2.1.2 getprotoent_r F +GLIBC_2.1.2 getpwent_r F +GLIBC_2.1.2 getpwnam_r F +GLIBC_2.1.2 getpwuid_r F +GLIBC_2.1.2 getrpcbyname_r F +GLIBC_2.1.2 getrpcbynumber_r F +GLIBC_2.1.2 getrpcent_r F +GLIBC_2.1.2 getservbyname_r F +GLIBC_2.1.2 getservbyport_r F +GLIBC_2.1.2 getservent_r F +GLIBC_2.1.2 getspent_r F +GLIBC_2.1.2 getspnam_r F +GLIBC_2.1.3 GLIBC_2.1.3 A +GLIBC_2.1.3 __cxa_atexit F +GLIBC_2.1.3 __cxa_finalize F +GLIBC_2.1.3 __sigsuspend F +GLIBC_2.10 GLIBC_2.10 A +GLIBC_2.10 __cxa_at_quick_exit F +GLIBC_2.10 __posix_getopt F +GLIBC_2.10 accept4 F +GLIBC_2.10 endsgent F +GLIBC_2.10 fallocate F +GLIBC_2.10 fgetsgent F +GLIBC_2.10 fgetsgent_r F +GLIBC_2.10 getsgent F +GLIBC_2.10 getsgent_r F +GLIBC_2.10 getsgnam F +GLIBC_2.10 getsgnam_r F +GLIBC_2.10 malloc_info F +GLIBC_2.10 preadv F +GLIBC_2.10 preadv64 F +GLIBC_2.10 psiginfo F +GLIBC_2.10 putsgent F +GLIBC_2.10 pwritev F +GLIBC_2.10 pwritev64 F +GLIBC_2.10 quick_exit F +GLIBC_2.10 register_printf_modifier F +GLIBC_2.10 register_printf_specifier F +GLIBC_2.10 register_printf_type F +GLIBC_2.10 setsgent F +GLIBC_2.10 sgetsgent F +GLIBC_2.10 sgetsgent_r F +GLIBC_2.11 GLIBC_2.11 A +GLIBC_2.11 __longjmp_chk F +GLIBC_2.11 execvpe F +GLIBC_2.11 fallocate64 F +GLIBC_2.11 mkostemps F +GLIBC_2.11 mkostemps64 F +GLIBC_2.11 mkstemps F +GLIBC_2.11 mkstemps64 F +GLIBC_2.12 GLIBC_2.12 A +GLIBC_2.12 _sys_errlist D 0x21c +GLIBC_2.12 _sys_nerr D 0x4 +GLIBC_2.12 ntp_gettimex F +GLIBC_2.12 recvmmsg F +GLIBC_2.12 sys_errlist D 0x21c +GLIBC_2.12 sys_nerr D 0x4 +GLIBC_2.13 GLIBC_2.13 A +GLIBC_2.13 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.19 GLIBC_2.19 A +GLIBC_2.19 __longjmp_chk F +GLIBC_2.19 __sigsetjmp F +GLIBC_2.19 _longjmp F +GLIBC_2.19 _setjmp F +GLIBC_2.19 getcontext F +GLIBC_2.19 longjmp F +GLIBC_2.19 setjmp F +GLIBC_2.19 siglongjmp F +GLIBC_2.2 GLIBC_2.2 A +GLIBC_2.2 _IO_adjust_wcolumn F +GLIBC_2.2 _IO_fgetpos F +GLIBC_2.2 _IO_fgetpos64 F +GLIBC_2.2 _IO_free_wbackup_area F +GLIBC_2.2 _IO_fsetpos F +GLIBC_2.2 _IO_fsetpos64 F +GLIBC_2.2 _IO_init_wmarker F +GLIBC_2.2 _IO_iter_begin F +GLIBC_2.2 _IO_iter_end F +GLIBC_2.2 _IO_iter_file F +GLIBC_2.2 _IO_iter_next F +GLIBC_2.2 _IO_least_wmarker F +GLIBC_2.2 _IO_list_lock F +GLIBC_2.2 _IO_list_resetlock F +GLIBC_2.2 _IO_list_unlock F +GLIBC_2.2 _IO_seekwmark F +GLIBC_2.2 _IO_sputbackwc F +GLIBC_2.2 _IO_sungetwc F +GLIBC_2.2 _IO_switch_to_main_wget_area F +GLIBC_2.2 _IO_switch_to_wbackup_area F +GLIBC_2.2 _IO_switch_to_wget_mode F +GLIBC_2.2 _IO_unsave_wmarkers F +GLIBC_2.2 _IO_wdefault_doallocate F +GLIBC_2.2 _IO_wdefault_finish F +GLIBC_2.2 _IO_wdefault_pbackfail F +GLIBC_2.2 _IO_wdefault_uflow F +GLIBC_2.2 _IO_wdefault_xsgetn F +GLIBC_2.2 _IO_wdefault_xsputn F +GLIBC_2.2 _IO_wdo_write F +GLIBC_2.2 _IO_wdoallocbuf F +GLIBC_2.2 _IO_wfile_jumps D 0x54 +GLIBC_2.2 _IO_wfile_overflow F +GLIBC_2.2 _IO_wfile_seekoff F +GLIBC_2.2 _IO_wfile_sync F +GLIBC_2.2 _IO_wfile_underflow F +GLIBC_2.2 _IO_wfile_xsputn F +GLIBC_2.2 _IO_wmarker_delta F +GLIBC_2.2 _IO_wsetb F +GLIBC_2.2 __assert F +GLIBC_2.2 __ctype32_tolower D 0x4 +GLIBC_2.2 __ctype32_toupper D 0x4 +GLIBC_2.2 __cyg_profile_func_enter F +GLIBC_2.2 __cyg_profile_func_exit F +GLIBC_2.2 __endmntent F +GLIBC_2.2 __fbufsize F +GLIBC_2.2 __flbf F +GLIBC_2.2 __fpending F +GLIBC_2.2 __fpurge F +GLIBC_2.2 __freadable F +GLIBC_2.2 __freading F +GLIBC_2.2 __fsetlocking F +GLIBC_2.2 __fwritable F +GLIBC_2.2 __fwriting F +GLIBC_2.2 __fxstat64 F +GLIBC_2.2 __getmntent_r F +GLIBC_2.2 __lxstat64 F +GLIBC_2.2 __nl_langinfo_l F +GLIBC_2.2 __open64 F +GLIBC_2.2 __res_init F +GLIBC_2.2 __res_nclose F +GLIBC_2.2 __res_ninit F +GLIBC_2.2 __res_state F +GLIBC_2.2 __setmntent F +GLIBC_2.2 __statfs F +GLIBC_2.2 __strndup F +GLIBC_2.2 __sysconf F +GLIBC_2.2 __sysctl F +GLIBC_2.2 __wctrans_l F +GLIBC_2.2 __woverflow F +GLIBC_2.2 __wuflow F +GLIBC_2.2 __wunderflow F +GLIBC_2.2 __xpg_sigpause F +GLIBC_2.2 __xstat64 F +GLIBC_2.2 _flushlbf F +GLIBC_2.2 _res_hconf D 0x30 +GLIBC_2.2 alphasort64 F +GLIBC_2.2 bind_textdomain_codeset F +GLIBC_2.2 dcngettext F +GLIBC_2.2 dngettext F +GLIBC_2.2 fgetpos F +GLIBC_2.2 fgetpos64 F +GLIBC_2.2 fgetwc F +GLIBC_2.2 fgetwc_unlocked F +GLIBC_2.2 fgetws F +GLIBC_2.2 fgetws_unlocked F +GLIBC_2.2 fmemopen F +GLIBC_2.2 fopencookie F +GLIBC_2.2 fputwc F +GLIBC_2.2 fputwc_unlocked F +GLIBC_2.2 fputws F +GLIBC_2.2 fputws_unlocked F +GLIBC_2.2 fsetpos F +GLIBC_2.2 fsetpos64 F +GLIBC_2.2 fwide F +GLIBC_2.2 fwprintf F +GLIBC_2.2 fwscanf F +GLIBC_2.2 getdirentries64 F +GLIBC_2.2 getloadavg F +GLIBC_2.2 getrlimit F +GLIBC_2.2 getrlimit64 F +GLIBC_2.2 getwc F +GLIBC_2.2 getwc_unlocked F +GLIBC_2.2 getwchar F +GLIBC_2.2 getwchar_unlocked F +GLIBC_2.2 iruserok_af F +GLIBC_2.2 localeconv F +GLIBC_2.2 mcheck_check_all F +GLIBC_2.2 mcheck_pedantic F +GLIBC_2.2 memrchr F +GLIBC_2.2 mincore F +GLIBC_2.2 mkdtemp F +GLIBC_2.2 mkstemp64 F +GLIBC_2.2 moncontrol F +GLIBC_2.2 msgctl F +GLIBC_2.2 ngettext F +GLIBC_2.2 posix_fadvise F +GLIBC_2.2 posix_fadvise64 F +GLIBC_2.2 posix_fallocate F +GLIBC_2.2 posix_fallocate64 F +GLIBC_2.2 posix_madvise F +GLIBC_2.2 posix_memalign F +GLIBC_2.2 posix_spawn F +GLIBC_2.2 posix_spawn_file_actions_addclose F +GLIBC_2.2 posix_spawn_file_actions_adddup2 F +GLIBC_2.2 posix_spawn_file_actions_addopen F +GLIBC_2.2 posix_spawn_file_actions_destroy F +GLIBC_2.2 posix_spawn_file_actions_init F +GLIBC_2.2 posix_spawnattr_destroy F +GLIBC_2.2 posix_spawnattr_getflags F +GLIBC_2.2 posix_spawnattr_getpgroup F +GLIBC_2.2 posix_spawnattr_getschedparam F +GLIBC_2.2 posix_spawnattr_getschedpolicy F +GLIBC_2.2 posix_spawnattr_getsigdefault F +GLIBC_2.2 posix_spawnattr_getsigmask F +GLIBC_2.2 posix_spawnattr_init F +GLIBC_2.2 posix_spawnattr_setflags F +GLIBC_2.2 posix_spawnattr_setpgroup F +GLIBC_2.2 posix_spawnattr_setschedparam F +GLIBC_2.2 posix_spawnattr_setschedpolicy F +GLIBC_2.2 posix_spawnattr_setsigdefault F +GLIBC_2.2 posix_spawnattr_setsigmask F +GLIBC_2.2 posix_spawnp F +GLIBC_2.2 putwc F +GLIBC_2.2 putwc_unlocked F +GLIBC_2.2 putwchar F +GLIBC_2.2 putwchar_unlocked F +GLIBC_2.2 rcmd_af F +GLIBC_2.2 readdir64 F +GLIBC_2.2 readdir64_r F +GLIBC_2.2 rexec_af F +GLIBC_2.2 rresvport_af F +GLIBC_2.2 ruserok_af F +GLIBC_2.2 scandir64 F +GLIBC_2.2 semctl F +GLIBC_2.2 setrlimit F +GLIBC_2.2 shmctl F +GLIBC_2.2 svc_getreq_common F +GLIBC_2.2 svc_getreq_poll F +GLIBC_2.2 svc_max_pollfd D 0x4 +GLIBC_2.2 svc_pollfd D 0x4 +GLIBC_2.2 swprintf F +GLIBC_2.2 swscanf F +GLIBC_2.2 ungetwc F +GLIBC_2.2 versionsort64 F +GLIBC_2.2 vfwprintf F +GLIBC_2.2 vfwscanf F +GLIBC_2.2 vswprintf F +GLIBC_2.2 vswscanf F +GLIBC_2.2 vwprintf F +GLIBC_2.2 vwscanf F +GLIBC_2.2 wcschrnul F +GLIBC_2.2 wcsftime F +GLIBC_2.2 wmempcpy F +GLIBC_2.2 wprintf F +GLIBC_2.2 wscanf F +GLIBC_2.2.1 GLIBC_2.2.1 A +GLIBC_2.2.1 pivot_root F +GLIBC_2.2.1 posix_openpt F +GLIBC_2.2.2 GLIBC_2.2.2 A +GLIBC_2.2.2 __nss_hostname_digits_dots F +GLIBC_2.2.3 GLIBC_2.2.3 A +GLIBC_2.2.3 __rpc_thread_createerr F +GLIBC_2.2.3 __rpc_thread_svc_fdset F +GLIBC_2.2.3 __rpc_thread_svc_max_pollfd F +GLIBC_2.2.3 __rpc_thread_svc_pollfd F +GLIBC_2.2.3 fnmatch F +GLIBC_2.2.3 sprofil F +GLIBC_2.2.4 GLIBC_2.2.4 A +GLIBC_2.2.4 dl_iterate_phdr F +GLIBC_2.2.4 getgrouplist F +GLIBC_2.2.4 sockatmark F +GLIBC_2.2.6 GLIBC_2.2.6 A +GLIBC_2.2.6 __nanosleep F +GLIBC_2.22 GLIBC_2.22 A +GLIBC_2.22 fmemopen F +GLIBC_2.23 GLIBC_2.23 A +GLIBC_2.23 fts64_children F +GLIBC_2.23 fts64_close F +GLIBC_2.23 fts64_open F +GLIBC_2.23 fts64_read F +GLIBC_2.23 fts64_set F +GLIBC_2.24 GLIBC_2.24 A +GLIBC_2.24 quick_exit F +GLIBC_2.25 GLIBC_2.25 A +GLIBC_2.25 __explicit_bzero_chk F +GLIBC_2.25 explicit_bzero F +GLIBC_2.25 getentropy F +GLIBC_2.25 getrandom F +GLIBC_2.25 strfromd F +GLIBC_2.25 strfromf F +GLIBC_2.25 strfroml F +GLIBC_2.26 GLIBC_2.26 A +GLIBC_2.26 preadv2 F +GLIBC_2.26 preadv64v2 F +GLIBC_2.26 pwritev2 F +GLIBC_2.26 pwritev64v2 F +GLIBC_2.26 reallocarray F +GLIBC_2.3 GLIBC_2.3 A +GLIBC_2.3 __ctype_b_loc F +GLIBC_2.3 __ctype_tolower_loc F +GLIBC_2.3 __ctype_toupper_loc F +GLIBC_2.3 __isctype F +GLIBC_2.3 __strftime_l F +GLIBC_2.3 __uselocale F +GLIBC_2.3 __wcsftime_l F +GLIBC_2.3 _sys_errlist D 0x1f8 +GLIBC_2.3 _sys_nerr D 0x4 +GLIBC_2.3 duplocale F +GLIBC_2.3 fgetxattr F +GLIBC_2.3 flistxattr F +GLIBC_2.3 freeifaddrs F +GLIBC_2.3 freelocale F +GLIBC_2.3 fremovexattr F +GLIBC_2.3 fsetxattr F +GLIBC_2.3 futimes F +GLIBC_2.3 getifaddrs F +GLIBC_2.3 getxattr F +GLIBC_2.3 isalnum_l F +GLIBC_2.3 isalpha_l F +GLIBC_2.3 isblank_l F +GLIBC_2.3 iscntrl_l F +GLIBC_2.3 isctype F +GLIBC_2.3 isdigit_l F +GLIBC_2.3 isgraph_l F +GLIBC_2.3 islower_l F +GLIBC_2.3 isprint_l F +GLIBC_2.3 ispunct_l F +GLIBC_2.3 isspace_l F +GLIBC_2.3 isupper_l F +GLIBC_2.3 iswalnum_l F +GLIBC_2.3 iswalpha_l F +GLIBC_2.3 iswblank_l F +GLIBC_2.3 iswcntrl_l F +GLIBC_2.3 iswctype_l F +GLIBC_2.3 iswdigit_l F +GLIBC_2.3 iswgraph_l F +GLIBC_2.3 iswlower_l F +GLIBC_2.3 iswprint_l F +GLIBC_2.3 iswpunct_l F +GLIBC_2.3 iswspace_l F +GLIBC_2.3 iswupper_l F +GLIBC_2.3 iswxdigit_l F +GLIBC_2.3 isxdigit_l F +GLIBC_2.3 lgetxattr F +GLIBC_2.3 listxattr F +GLIBC_2.3 llistxattr F +GLIBC_2.3 lremovexattr F +GLIBC_2.3 lsetxattr F +GLIBC_2.3 lutimes F +GLIBC_2.3 newlocale F +GLIBC_2.3 nl_langinfo_l F +GLIBC_2.3 readahead F +GLIBC_2.3 realpath F +GLIBC_2.3 removexattr F +GLIBC_2.3 sendfile64 F +GLIBC_2.3 setxattr F +GLIBC_2.3 strcasecmp_l F +GLIBC_2.3 strcoll_l F +GLIBC_2.3 strfmon_l F +GLIBC_2.3 strftime_l F +GLIBC_2.3 strncasecmp_l F +GLIBC_2.3 strtod_l F +GLIBC_2.3 strtof_l F +GLIBC_2.3 strtol_l F +GLIBC_2.3 strtold_l F +GLIBC_2.3 strtoll_l F +GLIBC_2.3 strtoul_l F +GLIBC_2.3 strtoull_l F +GLIBC_2.3 strxfrm_l F +GLIBC_2.3 sys_errlist D 0x1f8 +GLIBC_2.3 sys_nerr D 0x4 +GLIBC_2.3 tolower_l F +GLIBC_2.3 toupper_l F +GLIBC_2.3 towctrans_l F +GLIBC_2.3 towlower_l F +GLIBC_2.3 towupper_l F +GLIBC_2.3 uselocale F +GLIBC_2.3 wcscasecmp_l F +GLIBC_2.3 wcscoll_l F +GLIBC_2.3 wcsftime_l F +GLIBC_2.3 wcsncasecmp_l F +GLIBC_2.3 wcstod_l F +GLIBC_2.3 wcstof_l F +GLIBC_2.3 wcstol_l F +GLIBC_2.3 wcstold_l F +GLIBC_2.3 wcstoll_l F +GLIBC_2.3 wcstoul_l F +GLIBC_2.3 wcstoull_l F +GLIBC_2.3 wcsxfrm_l F +GLIBC_2.3 wctrans_l F +GLIBC_2.3 wctype_l F +GLIBC_2.3.2 GLIBC_2.3.2 A +GLIBC_2.3.2 __register_atfork F +GLIBC_2.3.2 epoll_create F +GLIBC_2.3.2 epoll_ctl F +GLIBC_2.3.2 epoll_wait F +GLIBC_2.3.2 lchmod F +GLIBC_2.3.2 pthread_cond_broadcast F +GLIBC_2.3.2 pthread_cond_destroy F +GLIBC_2.3.2 pthread_cond_init F +GLIBC_2.3.2 pthread_cond_signal F +GLIBC_2.3.2 pthread_cond_timedwait F +GLIBC_2.3.2 pthread_cond_wait F +GLIBC_2.3.2 strptime_l F +GLIBC_2.3.3 GLIBC_2.3.3 A +GLIBC_2.3.3 _sys_siglist D 0x104 +GLIBC_2.3.3 gnu_dev_major F +GLIBC_2.3.3 gnu_dev_makedev F +GLIBC_2.3.3 gnu_dev_minor F +GLIBC_2.3.3 inet6_option_alloc F +GLIBC_2.3.3 inet6_option_append F +GLIBC_2.3.3 inet6_option_find F +GLIBC_2.3.3 inet6_option_init F +GLIBC_2.3.3 inet6_option_next F +GLIBC_2.3.3 inet6_option_space F +GLIBC_2.3.3 nftw F +GLIBC_2.3.3 nftw64 F +GLIBC_2.3.3 posix_fadvise64 F +GLIBC_2.3.3 posix_fallocate64 F +GLIBC_2.3.3 remap_file_pages F +GLIBC_2.3.3 sched_getaffinity F +GLIBC_2.3.3 sched_setaffinity F +GLIBC_2.3.3 semtimedop F +GLIBC_2.3.3 sys_sigabbrev D 0x104 +GLIBC_2.3.3 sys_siglist D 0x104 +GLIBC_2.3.4 GLIBC_2.3.4 A +GLIBC_2.3.4 __chk_fail F +GLIBC_2.3.4 __fprintf_chk F +GLIBC_2.3.4 __gets_chk F +GLIBC_2.3.4 __memcpy_chk F +GLIBC_2.3.4 __memmove_chk F +GLIBC_2.3.4 __mempcpy_chk F +GLIBC_2.3.4 __memset_chk F +GLIBC_2.3.4 __printf_chk F +GLIBC_2.3.4 __snprintf_chk F +GLIBC_2.3.4 __sprintf_chk F +GLIBC_2.3.4 __stpcpy_chk F +GLIBC_2.3.4 __strcat_chk F +GLIBC_2.3.4 __strcpy_chk F +GLIBC_2.3.4 __strncat_chk F +GLIBC_2.3.4 __strncpy_chk F +GLIBC_2.3.4 __vfprintf_chk F +GLIBC_2.3.4 __vprintf_chk F +GLIBC_2.3.4 __vsnprintf_chk F +GLIBC_2.3.4 __vsprintf_chk F +GLIBC_2.3.4 __xpg_strerror_r F +GLIBC_2.3.4 getipv4sourcefilter F +GLIBC_2.3.4 getsourcefilter F +GLIBC_2.3.4 regexec F +GLIBC_2.3.4 sched_getaffinity F +GLIBC_2.3.4 sched_setaffinity F +GLIBC_2.3.4 setipv4sourcefilter F +GLIBC_2.3.4 setsourcefilter F +GLIBC_2.3.4 xdr_quad_t F +GLIBC_2.3.4 xdr_u_quad_t F +GLIBC_2.4 GLIBC_2.4 A +GLIBC_2.4 _IO_fprintf F +GLIBC_2.4 _IO_printf F +GLIBC_2.4 _IO_sprintf F +GLIBC_2.4 _IO_sscanf F +GLIBC_2.4 _IO_vfprintf F +GLIBC_2.4 _IO_vfscanf F +GLIBC_2.4 _IO_vsprintf F +GLIBC_2.4 __asprintf F +GLIBC_2.4 __confstr_chk F +GLIBC_2.4 __fgets_chk F +GLIBC_2.4 __fgets_unlocked_chk F +GLIBC_2.4 __fgetws_chk F +GLIBC_2.4 __fgetws_unlocked_chk F +GLIBC_2.4 __finitel F +GLIBC_2.4 __fprintf_chk F +GLIBC_2.4 __fwprintf_chk F +GLIBC_2.4 __fxstatat F +GLIBC_2.4 __fxstatat64 F +GLIBC_2.4 __getcwd_chk F +GLIBC_2.4 __getdomainname_chk F +GLIBC_2.4 __getgroups_chk F +GLIBC_2.4 __gethostname_chk F +GLIBC_2.4 __getlogin_r_chk F +GLIBC_2.4 __getwd_chk F +GLIBC_2.4 __isinfl F +GLIBC_2.4 __isnanl F +GLIBC_2.4 __mbsnrtowcs_chk F +GLIBC_2.4 __mbsrtowcs_chk F +GLIBC_2.4 __mbstowcs_chk F +GLIBC_2.4 __nldbl__IO_fprintf F +GLIBC_2.4 __nldbl__IO_printf F +GLIBC_2.4 __nldbl__IO_sprintf F +GLIBC_2.4 __nldbl__IO_sscanf F +GLIBC_2.4 __nldbl__IO_vfprintf F +GLIBC_2.4 __nldbl__IO_vfscanf F +GLIBC_2.4 __nldbl__IO_vsprintf F +GLIBC_2.4 __nldbl___asprintf F +GLIBC_2.4 __nldbl___fprintf_chk F +GLIBC_2.4 __nldbl___fwprintf_chk F +GLIBC_2.4 __nldbl___printf_chk F +GLIBC_2.4 __nldbl___printf_fp F +GLIBC_2.4 __nldbl___snprintf_chk F +GLIBC_2.4 __nldbl___sprintf_chk F +GLIBC_2.4 __nldbl___strfmon_l F +GLIBC_2.4 __nldbl___swprintf_chk F +GLIBC_2.4 __nldbl___syslog_chk F +GLIBC_2.4 __nldbl___vfprintf_chk F +GLIBC_2.4 __nldbl___vfscanf F +GLIBC_2.4 __nldbl___vfwprintf_chk F +GLIBC_2.4 __nldbl___vprintf_chk F +GLIBC_2.4 __nldbl___vsnprintf F +GLIBC_2.4 __nldbl___vsnprintf_chk F +GLIBC_2.4 __nldbl___vsprintf_chk F +GLIBC_2.4 __nldbl___vsscanf F +GLIBC_2.4 __nldbl___vstrfmon F +GLIBC_2.4 __nldbl___vstrfmon_l F +GLIBC_2.4 __nldbl___vswprintf_chk F +GLIBC_2.4 __nldbl___vsyslog_chk F +GLIBC_2.4 __nldbl___vwprintf_chk F +GLIBC_2.4 __nldbl___wprintf_chk F +GLIBC_2.4 __nldbl_asprintf F +GLIBC_2.4 __nldbl_dprintf F +GLIBC_2.4 __nldbl_fprintf F +GLIBC_2.4 __nldbl_fscanf F +GLIBC_2.4 __nldbl_fwprintf F +GLIBC_2.4 __nldbl_fwscanf F +GLIBC_2.4 __nldbl_obstack_printf F +GLIBC_2.4 __nldbl_obstack_vprintf F +GLIBC_2.4 __nldbl_printf F +GLIBC_2.4 __nldbl_printf_size F +GLIBC_2.4 __nldbl_scanf F +GLIBC_2.4 __nldbl_snprintf F +GLIBC_2.4 __nldbl_sprintf F +GLIBC_2.4 __nldbl_sscanf F +GLIBC_2.4 __nldbl_strfmon F +GLIBC_2.4 __nldbl_strfmon_l F +GLIBC_2.4 __nldbl_swprintf F +GLIBC_2.4 __nldbl_swscanf F +GLIBC_2.4 __nldbl_syslog F +GLIBC_2.4 __nldbl_vasprintf F +GLIBC_2.4 __nldbl_vdprintf F +GLIBC_2.4 __nldbl_vfprintf F +GLIBC_2.4 __nldbl_vfscanf F +GLIBC_2.4 __nldbl_vfwprintf F +GLIBC_2.4 __nldbl_vfwscanf F +GLIBC_2.4 __nldbl_vprintf F +GLIBC_2.4 __nldbl_vscanf F +GLIBC_2.4 __nldbl_vsnprintf F +GLIBC_2.4 __nldbl_vsprintf F +GLIBC_2.4 __nldbl_vsscanf F +GLIBC_2.4 __nldbl_vswprintf F +GLIBC_2.4 __nldbl_vswscanf F +GLIBC_2.4 __nldbl_vsyslog F +GLIBC_2.4 __nldbl_vwprintf F +GLIBC_2.4 __nldbl_vwscanf F +GLIBC_2.4 __nldbl_wprintf F +GLIBC_2.4 __nldbl_wscanf 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 __ptsname_r_chk F +GLIBC_2.4 __read_chk F +GLIBC_2.4 __readlink_chk F +GLIBC_2.4 __realpath_chk F +GLIBC_2.4 __recv_chk F +GLIBC_2.4 __recvfrom_chk F +GLIBC_2.4 __signbitl F +GLIBC_2.4 __snprintf_chk F +GLIBC_2.4 __sprintf_chk F +GLIBC_2.4 __stack_chk_fail F +GLIBC_2.4 __stpncpy_chk F +GLIBC_2.4 __strfmon_l F +GLIBC_2.4 __strtold_internal F +GLIBC_2.4 __strtold_l F +GLIBC_2.4 __swprintf_chk F +GLIBC_2.4 __syslog_chk F +GLIBC_2.4 __ttyname_r_chk 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 __wcpcpy_chk F +GLIBC_2.4 __wcpncpy_chk F +GLIBC_2.4 __wcrtomb_chk F +GLIBC_2.4 __wcscat_chk F +GLIBC_2.4 __wcscpy_chk F +GLIBC_2.4 __wcsncat_chk F +GLIBC_2.4 __wcsncpy_chk F +GLIBC_2.4 __wcsnrtombs_chk F +GLIBC_2.4 __wcsrtombs_chk F +GLIBC_2.4 __wcstold_internal F +GLIBC_2.4 __wcstold_l F +GLIBC_2.4 __wcstombs_chk F +GLIBC_2.4 __wctomb_chk F +GLIBC_2.4 __wmemcpy_chk F +GLIBC_2.4 __wmemmove_chk F +GLIBC_2.4 __wmempcpy_chk F +GLIBC_2.4 __wmemset_chk F +GLIBC_2.4 __wprintf_chk F +GLIBC_2.4 __xmknodat F +GLIBC_2.4 _sys_errlist D 0x210 +GLIBC_2.4 _sys_nerr D 0x4 +GLIBC_2.4 asprintf F +GLIBC_2.4 copysignl F +GLIBC_2.4 dprintf F +GLIBC_2.4 eaccess F +GLIBC_2.4 faccessat F +GLIBC_2.4 fchmodat F +GLIBC_2.4 fchownat F +GLIBC_2.4 fdopendir F +GLIBC_2.4 finitel F +GLIBC_2.4 fprintf F +GLIBC_2.4 frexpl F +GLIBC_2.4 fscanf F +GLIBC_2.4 futimesat F +GLIBC_2.4 fwprintf F +GLIBC_2.4 fwscanf F +GLIBC_2.4 inotify_add_watch F +GLIBC_2.4 inotify_init F +GLIBC_2.4 inotify_rm_watch F +GLIBC_2.4 isinfl F +GLIBC_2.4 isnanl F +GLIBC_2.4 ldexpl F +GLIBC_2.4 linkat F +GLIBC_2.4 mkdirat F +GLIBC_2.4 mkfifoat F +GLIBC_2.4 modfl F +GLIBC_2.4 obstack_printf F +GLIBC_2.4 obstack_vprintf F +GLIBC_2.4 open_wmemstream F +GLIBC_2.4 openat F +GLIBC_2.4 openat64 F +GLIBC_2.4 ppoll F +GLIBC_2.4 printf F +GLIBC_2.4 printf_size 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 readlinkat F +GLIBC_2.4 renameat F +GLIBC_2.4 scalbnl F +GLIBC_2.4 scanf F +GLIBC_2.4 snprintf F +GLIBC_2.4 sprintf F +GLIBC_2.4 sscanf F +GLIBC_2.4 strfmon F +GLIBC_2.4 strfmon_l F +GLIBC_2.4 strtold F +GLIBC_2.4 strtold_l F +GLIBC_2.4 swprintf F +GLIBC_2.4 swscanf F +GLIBC_2.4 symlinkat F +GLIBC_2.4 sys_errlist D 0x210 +GLIBC_2.4 sys_nerr D 0x4 +GLIBC_2.4 syslog F +GLIBC_2.4 unlinkat F +GLIBC_2.4 unshare F +GLIBC_2.4 vasprintf F +GLIBC_2.4 vdprintf F +GLIBC_2.4 vfprintf F +GLIBC_2.4 vfscanf F +GLIBC_2.4 vfwprintf F +GLIBC_2.4 vfwscanf 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 vwprintf F +GLIBC_2.4 vwscanf F +GLIBC_2.4 wcstold F +GLIBC_2.4 wcstold_l F +GLIBC_2.4 wprintf F +GLIBC_2.4 wscanf 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 __nldbl___isoc99_fscanf F +GLIBC_2.7 __nldbl___isoc99_fwscanf F +GLIBC_2.7 __nldbl___isoc99_scanf F +GLIBC_2.7 __nldbl___isoc99_sscanf F +GLIBC_2.7 __nldbl___isoc99_swscanf F +GLIBC_2.7 __nldbl___isoc99_vfscanf F +GLIBC_2.7 __nldbl___isoc99_vfwscanf F +GLIBC_2.7 __nldbl___isoc99_vscanf F +GLIBC_2.7 __nldbl___isoc99_vsscanf F +GLIBC_2.7 __nldbl___isoc99_vswscanf F +GLIBC_2.7 __nldbl___isoc99_vwscanf F +GLIBC_2.7 __nldbl___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 __nldbl___asprintf_chk F +GLIBC_2.8 __nldbl___dprintf_chk F +GLIBC_2.8 __nldbl___obstack_printf_chk F +GLIBC_2.8 __nldbl___obstack_vprintf_chk F +GLIBC_2.8 __nldbl___vasprintf_chk F +GLIBC_2.8 __nldbl___vdprintf_chk F +GLIBC_2.8 __obstack_printf_chk F +GLIBC_2.8 __obstack_vprintf_chk F +GLIBC_2.8 __vasprintf_chk F +GLIBC_2.8 __vdprintf_chk F +GLIBC_2.8 qsort_r F +GLIBC_2.8 timerfd_create F +GLIBC_2.8 timerfd_gettime F +GLIBC_2.8 timerfd_settime F +GLIBC_2.9 GLIBC_2.9 A +GLIBC_2.9 dup3 F +GLIBC_2.9 epoll_create1 F +GLIBC_2.9 getutent F +GLIBC_2.9 getutent_r F +GLIBC_2.9 getutid F +GLIBC_2.9 getutid_r F +GLIBC_2.9 getutline F +GLIBC_2.9 getutline_r F +GLIBC_2.9 getutmp F +GLIBC_2.9 getutmpx F +GLIBC_2.9 getutxent F +GLIBC_2.9 getutxid F +GLIBC_2.9 getutxline F +GLIBC_2.9 inotify_init1 F +GLIBC_2.9 pipe2 F +GLIBC_2.9 pututline F +GLIBC_2.9 pututxline F +GLIBC_2.9 updwtmp F +GLIBC_2.9 updwtmpx F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/libcrypt.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/libcrypt.abilist new file mode 100644 index 0000000000..4db2639336 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/libcrypt.abilist @@ -0,0 +1,8 @@ +GLIBC_2.0 GLIBC_2.0 A +GLIBC_2.0 crypt F +GLIBC_2.0 crypt_r F +GLIBC_2.0 encrypt F +GLIBC_2.0 encrypt_r F +GLIBC_2.0 fcrypt F +GLIBC_2.0 setkey F +GLIBC_2.0 setkey_r F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist new file mode 100644 index 0000000000..5536f6e0a9 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist @@ -0,0 +1,14 @@ +GLIBC_2.0 GLIBC_2.0 A +GLIBC_2.0 dladdr F +GLIBC_2.0 dlclose F +GLIBC_2.0 dlerror F +GLIBC_2.0 dlopen F +GLIBC_2.0 dlsym F +GLIBC_2.1 GLIBC_2.1 A +GLIBC_2.1 dlopen F +GLIBC_2.1 dlvsym F +GLIBC_2.3.3 GLIBC_2.3.3 A +GLIBC_2.3.3 dladdr1 F +GLIBC_2.3.3 dlinfo F +GLIBC_2.3.4 GLIBC_2.3.4 A +GLIBC_2.3.4 dlmopen F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist new file mode 100644 index 0000000000..604dff18d4 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist @@ -0,0 +1,565 @@ +GLIBC_2.0 GLIBC_2.0 A +GLIBC_2.0 _LIB_VERSION D 0x4 +GLIBC_2.0 acos F +GLIBC_2.0 acosf F +GLIBC_2.0 acosh F +GLIBC_2.0 acoshf F +GLIBC_2.0 acoshl F +GLIBC_2.0 acosl F +GLIBC_2.0 asin F +GLIBC_2.0 asinf F +GLIBC_2.0 asinh F +GLIBC_2.0 asinhf F +GLIBC_2.0 asinhl F +GLIBC_2.0 asinl F +GLIBC_2.0 atan F +GLIBC_2.0 atan2 F +GLIBC_2.0 atan2f F +GLIBC_2.0 atan2l F +GLIBC_2.0 atanf F +GLIBC_2.0 atanh F +GLIBC_2.0 atanhf F +GLIBC_2.0 atanhl F +GLIBC_2.0 atanl F +GLIBC_2.0 cbrt F +GLIBC_2.0 cbrtf F +GLIBC_2.0 cbrtl F +GLIBC_2.0 ceil F +GLIBC_2.0 ceilf F +GLIBC_2.0 ceill F +GLIBC_2.0 copysign F +GLIBC_2.0 copysignf F +GLIBC_2.0 copysignl F +GLIBC_2.0 cos F +GLIBC_2.0 cosf F +GLIBC_2.0 cosh F +GLIBC_2.0 coshf F +GLIBC_2.0 coshl F +GLIBC_2.0 cosl F +GLIBC_2.0 drem F +GLIBC_2.0 dremf F +GLIBC_2.0 dreml F +GLIBC_2.0 erf F +GLIBC_2.0 erfc F +GLIBC_2.0 erfcf F +GLIBC_2.0 erfcl F +GLIBC_2.0 erff F +GLIBC_2.0 erfl F +GLIBC_2.0 exp F +GLIBC_2.0 expf F +GLIBC_2.0 expl F +GLIBC_2.0 expm1 F +GLIBC_2.0 expm1f F +GLIBC_2.0 expm1l F +GLIBC_2.0 fabs F +GLIBC_2.0 fabsf F +GLIBC_2.0 fabsl F +GLIBC_2.0 finite F +GLIBC_2.0 finitef F +GLIBC_2.0 finitel F +GLIBC_2.0 floor F +GLIBC_2.0 floorf F +GLIBC_2.0 floorl F +GLIBC_2.0 fmod F +GLIBC_2.0 fmodf F +GLIBC_2.0 fmodl F +GLIBC_2.0 frexp F +GLIBC_2.0 frexpf F +GLIBC_2.0 frexpl F +GLIBC_2.0 gamma F +GLIBC_2.0 gammaf F +GLIBC_2.0 gammal F +GLIBC_2.0 hypot F +GLIBC_2.0 hypotf F +GLIBC_2.0 hypotl F +GLIBC_2.0 ilogb F +GLIBC_2.0 ilogbf F +GLIBC_2.0 ilogbl F +GLIBC_2.0 j0 F +GLIBC_2.0 j0f F +GLIBC_2.0 j0l F +GLIBC_2.0 j1 F +GLIBC_2.0 j1f F +GLIBC_2.0 j1l F +GLIBC_2.0 jn F +GLIBC_2.0 jnf F +GLIBC_2.0 jnl F +GLIBC_2.0 ldexp F +GLIBC_2.0 ldexpf F +GLIBC_2.0 ldexpl F +GLIBC_2.0 lgamma F +GLIBC_2.0 lgamma_r F +GLIBC_2.0 lgammaf F +GLIBC_2.0 lgammaf_r F +GLIBC_2.0 lgammal F +GLIBC_2.0 lgammal_r F +GLIBC_2.0 log F +GLIBC_2.0 log10 F +GLIBC_2.0 log10f F +GLIBC_2.0 log10l F +GLIBC_2.0 log1p F +GLIBC_2.0 log1pf F +GLIBC_2.0 log1pl F +GLIBC_2.0 logb F +GLIBC_2.0 logbf F +GLIBC_2.0 logbl F +GLIBC_2.0 logf F +GLIBC_2.0 logl F +GLIBC_2.0 matherr F +GLIBC_2.0 modf F +GLIBC_2.0 modff F +GLIBC_2.0 modfl F +GLIBC_2.0 nextafter F +GLIBC_2.0 nextafterf F +GLIBC_2.0 nextafterl F +GLIBC_2.0 pow F +GLIBC_2.0 powf F +GLIBC_2.0 powl F +GLIBC_2.0 remainder F +GLIBC_2.0 remainderf F +GLIBC_2.0 remainderl F +GLIBC_2.0 rint F +GLIBC_2.0 rintf F +GLIBC_2.0 rintl F +GLIBC_2.0 scalb F +GLIBC_2.0 scalbf F +GLIBC_2.0 scalbl F +GLIBC_2.0 scalbn F +GLIBC_2.0 scalbnf F +GLIBC_2.0 scalbnl F +GLIBC_2.0 signgam D 0x4 +GLIBC_2.0 significand F +GLIBC_2.0 significandf F +GLIBC_2.0 significandl F +GLIBC_2.0 sin F +GLIBC_2.0 sinf F +GLIBC_2.0 sinh F +GLIBC_2.0 sinhf F +GLIBC_2.0 sinhl F +GLIBC_2.0 sinl F +GLIBC_2.0 sqrt F +GLIBC_2.0 sqrtf F +GLIBC_2.0 sqrtl F +GLIBC_2.0 tan F +GLIBC_2.0 tanf F +GLIBC_2.0 tanh F +GLIBC_2.0 tanhf F +GLIBC_2.0 tanhl F +GLIBC_2.0 tanl F +GLIBC_2.0 y0 F +GLIBC_2.0 y0f F +GLIBC_2.0 y0l F +GLIBC_2.0 y1 F +GLIBC_2.0 y1f F +GLIBC_2.0 y1l F +GLIBC_2.0 yn F +GLIBC_2.0 ynf F +GLIBC_2.0 ynl F +GLIBC_2.1 GLIBC_2.1 A +GLIBC_2.1 __clog10 F +GLIBC_2.1 __clog10f F +GLIBC_2.1 __clog10l F +GLIBC_2.1 __finite F +GLIBC_2.1 __finitef F +GLIBC_2.1 __finitel F +GLIBC_2.1 __fpclassify F +GLIBC_2.1 __fpclassifyf F +GLIBC_2.1 __signbit F +GLIBC_2.1 __signbitf F +GLIBC_2.1 cabs F +GLIBC_2.1 cabsf F +GLIBC_2.1 cabsl F +GLIBC_2.1 cacos F +GLIBC_2.1 cacosf F +GLIBC_2.1 cacosh F +GLIBC_2.1 cacoshf F +GLIBC_2.1 cacoshl F +GLIBC_2.1 cacosl F +GLIBC_2.1 carg F +GLIBC_2.1 cargf F +GLIBC_2.1 cargl F +GLIBC_2.1 casin F +GLIBC_2.1 casinf F +GLIBC_2.1 casinh F +GLIBC_2.1 casinhf F +GLIBC_2.1 casinhl F +GLIBC_2.1 casinl F +GLIBC_2.1 catan F +GLIBC_2.1 catanf F +GLIBC_2.1 catanh F +GLIBC_2.1 catanhf F +GLIBC_2.1 catanhl F +GLIBC_2.1 catanl F +GLIBC_2.1 ccos F +GLIBC_2.1 ccosf F +GLIBC_2.1 ccosh F +GLIBC_2.1 ccoshf F +GLIBC_2.1 ccoshl F +GLIBC_2.1 ccosl F +GLIBC_2.1 cexp F +GLIBC_2.1 cexpf F +GLIBC_2.1 cexpl F +GLIBC_2.1 cimag F +GLIBC_2.1 cimagf F +GLIBC_2.1 cimagl F +GLIBC_2.1 clog F +GLIBC_2.1 clog10 F +GLIBC_2.1 clog10f F +GLIBC_2.1 clog10l F +GLIBC_2.1 clogf F +GLIBC_2.1 clogl F +GLIBC_2.1 conj F +GLIBC_2.1 conjf F +GLIBC_2.1 conjl F +GLIBC_2.1 cpow F +GLIBC_2.1 cpowf F +GLIBC_2.1 cpowl F +GLIBC_2.1 cproj F +GLIBC_2.1 cprojf F +GLIBC_2.1 cprojl F +GLIBC_2.1 creal F +GLIBC_2.1 crealf F +GLIBC_2.1 creall F +GLIBC_2.1 csin F +GLIBC_2.1 csinf F +GLIBC_2.1 csinh F +GLIBC_2.1 csinhf F +GLIBC_2.1 csinhl F +GLIBC_2.1 csinl F +GLIBC_2.1 csqrt F +GLIBC_2.1 csqrtf F +GLIBC_2.1 csqrtl F +GLIBC_2.1 ctan F +GLIBC_2.1 ctanf F +GLIBC_2.1 ctanh F +GLIBC_2.1 ctanhf F +GLIBC_2.1 ctanhl F +GLIBC_2.1 ctanl F +GLIBC_2.1 exp10 F +GLIBC_2.1 exp10f F +GLIBC_2.1 exp10l F +GLIBC_2.1 exp2 F +GLIBC_2.1 exp2f F +GLIBC_2.1 fdim F +GLIBC_2.1 fdimf F +GLIBC_2.1 fdiml F +GLIBC_2.1 feclearexcept F +GLIBC_2.1 fegetenv F +GLIBC_2.1 fegetexceptflag F +GLIBC_2.1 fegetround F +GLIBC_2.1 feholdexcept F +GLIBC_2.1 feraiseexcept F +GLIBC_2.1 fesetenv F +GLIBC_2.1 fesetexceptflag F +GLIBC_2.1 fesetround F +GLIBC_2.1 fetestexcept F +GLIBC_2.1 feupdateenv F +GLIBC_2.1 fma F +GLIBC_2.1 fmaf F +GLIBC_2.1 fmal F +GLIBC_2.1 fmax F +GLIBC_2.1 fmaxf F +GLIBC_2.1 fmaxl F +GLIBC_2.1 fmin F +GLIBC_2.1 fminf F +GLIBC_2.1 fminl F +GLIBC_2.1 llrint F +GLIBC_2.1 llrintf F +GLIBC_2.1 llrintl F +GLIBC_2.1 llround F +GLIBC_2.1 llroundf F +GLIBC_2.1 llroundl F +GLIBC_2.1 log2 F +GLIBC_2.1 log2f F +GLIBC_2.1 log2l F +GLIBC_2.1 lrint F +GLIBC_2.1 lrintf F +GLIBC_2.1 lrintl F +GLIBC_2.1 lround F +GLIBC_2.1 lroundf F +GLIBC_2.1 lroundl F +GLIBC_2.1 nan F +GLIBC_2.1 nanf F +GLIBC_2.1 nanl F +GLIBC_2.1 nearbyint F +GLIBC_2.1 nearbyintf F +GLIBC_2.1 nearbyintl F +GLIBC_2.1 nexttoward F +GLIBC_2.1 nexttowardf F +GLIBC_2.1 nexttowardl F +GLIBC_2.1 pow10 F +GLIBC_2.1 pow10f F +GLIBC_2.1 pow10l F +GLIBC_2.1 remquo F +GLIBC_2.1 remquof F +GLIBC_2.1 remquol F +GLIBC_2.1 round F +GLIBC_2.1 roundf F +GLIBC_2.1 roundl F +GLIBC_2.1 scalbln F +GLIBC_2.1 scalblnf F +GLIBC_2.1 scalblnl F +GLIBC_2.1 sincos F +GLIBC_2.1 sincosf F +GLIBC_2.1 sincosl F +GLIBC_2.1 tgamma F +GLIBC_2.1 tgammaf F +GLIBC_2.1 tgammal F +GLIBC_2.1 trunc F +GLIBC_2.1 truncf F +GLIBC_2.1 truncl F +GLIBC_2.15 GLIBC_2.15 A +GLIBC_2.15 __acos_finite F +GLIBC_2.15 __acosf_finite F +GLIBC_2.15 __acosh_finite F +GLIBC_2.15 __acoshf_finite F +GLIBC_2.15 __acoshl_finite F +GLIBC_2.15 __acosl_finite F +GLIBC_2.15 __asin_finite F +GLIBC_2.15 __asinf_finite F +GLIBC_2.15 __asinl_finite F +GLIBC_2.15 __atan2_finite F +GLIBC_2.15 __atan2f_finite F +GLIBC_2.15 __atan2l_finite F +GLIBC_2.15 __atanh_finite F +GLIBC_2.15 __atanhf_finite F +GLIBC_2.15 __atanhl_finite F +GLIBC_2.15 __cosh_finite F +GLIBC_2.15 __coshf_finite F +GLIBC_2.15 __coshl_finite F +GLIBC_2.15 __exp10_finite F +GLIBC_2.15 __exp10f_finite F +GLIBC_2.15 __exp10l_finite F +GLIBC_2.15 __exp2_finite F +GLIBC_2.15 __exp2f_finite F +GLIBC_2.15 __exp2l_finite F +GLIBC_2.15 __exp_finite F +GLIBC_2.15 __expf_finite F +GLIBC_2.15 __expl_finite F +GLIBC_2.15 __fmod_finite F +GLIBC_2.15 __fmodf_finite F +GLIBC_2.15 __fmodl_finite F +GLIBC_2.15 __gamma_r_finite F +GLIBC_2.15 __gammaf_r_finite F +GLIBC_2.15 __gammal_r_finite F +GLIBC_2.15 __hypot_finite F +GLIBC_2.15 __hypotf_finite F +GLIBC_2.15 __hypotl_finite F +GLIBC_2.15 __j0_finite F +GLIBC_2.15 __j0f_finite F +GLIBC_2.15 __j0l_finite F +GLIBC_2.15 __j1_finite F +GLIBC_2.15 __j1f_finite F +GLIBC_2.15 __j1l_finite F +GLIBC_2.15 __jn_finite F +GLIBC_2.15 __jnf_finite F +GLIBC_2.15 __jnl_finite F +GLIBC_2.15 __lgamma_r_finite F +GLIBC_2.15 __lgammaf_r_finite F +GLIBC_2.15 __lgammal_r_finite F +GLIBC_2.15 __log10_finite F +GLIBC_2.15 __log10f_finite F +GLIBC_2.15 __log10l_finite F +GLIBC_2.15 __log2_finite F +GLIBC_2.15 __log2f_finite F +GLIBC_2.15 __log2l_finite F +GLIBC_2.15 __log_finite F +GLIBC_2.15 __logf_finite F +GLIBC_2.15 __logl_finite F +GLIBC_2.15 __pow_finite F +GLIBC_2.15 __powf_finite F +GLIBC_2.15 __powl_finite F +GLIBC_2.15 __remainder_finite F +GLIBC_2.15 __remainderf_finite F +GLIBC_2.15 __remainderl_finite F +GLIBC_2.15 __scalb_finite F +GLIBC_2.15 __scalbf_finite F +GLIBC_2.15 __scalbl_finite F +GLIBC_2.15 __sinh_finite F +GLIBC_2.15 __sinhf_finite F +GLIBC_2.15 __sinhl_finite F +GLIBC_2.15 __sqrt_finite F +GLIBC_2.15 __sqrtf_finite F +GLIBC_2.15 __sqrtl_finite F +GLIBC_2.15 __y0_finite F +GLIBC_2.15 __y0f_finite F +GLIBC_2.15 __y0l_finite F +GLIBC_2.15 __y1_finite F +GLIBC_2.15 __y1f_finite F +GLIBC_2.15 __y1l_finite F +GLIBC_2.15 __yn_finite F +GLIBC_2.15 __ynf_finite F +GLIBC_2.15 __ynl_finite F +GLIBC_2.18 GLIBC_2.18 A +GLIBC_2.18 __issignaling F +GLIBC_2.18 __issignalingf F +GLIBC_2.18 __issignalingl F +GLIBC_2.2 GLIBC_2.2 A +GLIBC_2.2 fedisableexcept F +GLIBC_2.2 feenableexcept F +GLIBC_2.2 fegetexcept 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 __iseqsigl F +GLIBC_2.25 canonicalize F +GLIBC_2.25 canonicalizef F +GLIBC_2.25 canonicalizel F +GLIBC_2.25 fegetmode F +GLIBC_2.25 fesetexcept F +GLIBC_2.25 fesetmode F +GLIBC_2.25 fetestexceptflag F +GLIBC_2.25 fmaxmag F +GLIBC_2.25 fmaxmagf F +GLIBC_2.25 fmaxmagl F +GLIBC_2.25 fminmag F +GLIBC_2.25 fminmagf F +GLIBC_2.25 fminmagl F +GLIBC_2.25 fromfp F +GLIBC_2.25 fromfpf F +GLIBC_2.25 fromfpl F +GLIBC_2.25 fromfpx F +GLIBC_2.25 fromfpxf F +GLIBC_2.25 fromfpxl F +GLIBC_2.25 getpayload F +GLIBC_2.25 getpayloadf F +GLIBC_2.25 getpayloadl F +GLIBC_2.25 llogb F +GLIBC_2.25 llogbf F +GLIBC_2.25 llogbl F +GLIBC_2.25 roundeven F +GLIBC_2.25 roundevenf F +GLIBC_2.25 roundevenl F +GLIBC_2.25 setpayload F +GLIBC_2.25 setpayloadf F +GLIBC_2.25 setpayloadl F +GLIBC_2.25 setpayloadsig F +GLIBC_2.25 setpayloadsigf F +GLIBC_2.25 setpayloadsigl F +GLIBC_2.25 totalorder F +GLIBC_2.25 totalorderf F +GLIBC_2.25 totalorderl F +GLIBC_2.25 totalordermag F +GLIBC_2.25 totalordermagf F +GLIBC_2.25 totalordermagl F +GLIBC_2.25 ufromfp F +GLIBC_2.25 ufromfpf F +GLIBC_2.25 ufromfpl F +GLIBC_2.25 ufromfpx F +GLIBC_2.25 ufromfpxf F +GLIBC_2.25 ufromfpxl F +GLIBC_2.4 GLIBC_2.4 A +GLIBC_2.4 __clog10l F +GLIBC_2.4 __finitel F +GLIBC_2.4 __fpclassifyl F +GLIBC_2.4 __nldbl_nexttowardf F +GLIBC_2.4 __signbitl F +GLIBC_2.4 acoshl F +GLIBC_2.4 acosl F +GLIBC_2.4 asinhl F +GLIBC_2.4 asinl F +GLIBC_2.4 atan2l F +GLIBC_2.4 atanhl F +GLIBC_2.4 atanl F +GLIBC_2.4 cabsl F +GLIBC_2.4 cacoshl F +GLIBC_2.4 cacosl F +GLIBC_2.4 cargl F +GLIBC_2.4 casinhl F +GLIBC_2.4 casinl F +GLIBC_2.4 catanhl F +GLIBC_2.4 catanl F +GLIBC_2.4 cbrtl F +GLIBC_2.4 ccoshl F +GLIBC_2.4 ccosl F +GLIBC_2.4 ceill F +GLIBC_2.4 cexpl F +GLIBC_2.4 cimagl F +GLIBC_2.4 clog10l F +GLIBC_2.4 clogl F +GLIBC_2.4 conjl F +GLIBC_2.4 copysignl F +GLIBC_2.4 coshl F +GLIBC_2.4 cosl F +GLIBC_2.4 cpowl F +GLIBC_2.4 cprojl F +GLIBC_2.4 creall F +GLIBC_2.4 csinhl F +GLIBC_2.4 csinl F +GLIBC_2.4 csqrtl F +GLIBC_2.4 ctanhl F +GLIBC_2.4 ctanl F +GLIBC_2.4 dreml F +GLIBC_2.4 erfcl F +GLIBC_2.4 erfl F +GLIBC_2.4 exp10l F +GLIBC_2.4 exp2l F +GLIBC_2.4 expl F +GLIBC_2.4 expm1l F +GLIBC_2.4 fabsl F +GLIBC_2.4 fdiml F +GLIBC_2.4 finitel F +GLIBC_2.4 floorl F +GLIBC_2.4 fmal F +GLIBC_2.4 fmaxl F +GLIBC_2.4 fminl F +GLIBC_2.4 fmodl F +GLIBC_2.4 frexpl F +GLIBC_2.4 gammal F +GLIBC_2.4 hypotl F +GLIBC_2.4 ilogbl F +GLIBC_2.4 j0l F +GLIBC_2.4 j1l F +GLIBC_2.4 jnl F +GLIBC_2.4 ldexpl F +GLIBC_2.4 lgammal F +GLIBC_2.4 lgammal_r F +GLIBC_2.4 llrintl F +GLIBC_2.4 llroundl F +GLIBC_2.4 log10l F +GLIBC_2.4 log1pl F +GLIBC_2.4 log2l F +GLIBC_2.4 logbl F +GLIBC_2.4 logl F +GLIBC_2.4 lrintl F +GLIBC_2.4 lroundl F +GLIBC_2.4 modfl F +GLIBC_2.4 nanl F +GLIBC_2.4 nearbyintl F +GLIBC_2.4 nextafterl F +GLIBC_2.4 nexttoward F +GLIBC_2.4 nexttowardf F +GLIBC_2.4 nexttowardl F +GLIBC_2.4 pow10l F +GLIBC_2.4 powl F +GLIBC_2.4 remainderl F +GLIBC_2.4 remquol F +GLIBC_2.4 rintl F +GLIBC_2.4 roundl F +GLIBC_2.4 scalbl F +GLIBC_2.4 scalblnl F +GLIBC_2.4 scalbnl F +GLIBC_2.4 significandl F +GLIBC_2.4 sincosl F +GLIBC_2.4 sinhl F +GLIBC_2.4 sinl F +GLIBC_2.4 sqrtl F +GLIBC_2.4 tanhl F +GLIBC_2.4 tanl F +GLIBC_2.4 tgammal F +GLIBC_2.4 truncl F +GLIBC_2.4 y0l F +GLIBC_2.4 y1l F +GLIBC_2.4 ynl F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/libnsl.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/libnsl.abilist new file mode 100644 index 0000000000..a23db2aeaf --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/libnsl.abilist @@ -0,0 +1,124 @@ +GLIBC_2.0 GLIBC_2.0 A +GLIBC_2.0 __yp_check F +GLIBC_2.0 xdr_domainname F +GLIBC_2.0 xdr_keydat F +GLIBC_2.0 xdr_mapname F +GLIBC_2.0 xdr_peername F +GLIBC_2.0 xdr_valdat F +GLIBC_2.0 xdr_yp_buf F +GLIBC_2.0 xdr_ypbind_binding F +GLIBC_2.0 xdr_ypbind_resp F +GLIBC_2.0 xdr_ypbind_resptype F +GLIBC_2.0 xdr_ypbind_setdom F +GLIBC_2.0 xdr_ypdelete_args F +GLIBC_2.0 xdr_ypmap_parms F +GLIBC_2.0 xdr_ypmaplist F +GLIBC_2.0 xdr_yppush_status F +GLIBC_2.0 xdr_yppushresp_xfr F +GLIBC_2.0 xdr_ypreq_key F +GLIBC_2.0 xdr_ypreq_nokey F +GLIBC_2.0 xdr_ypreq_xfr F +GLIBC_2.0 xdr_ypresp_all F +GLIBC_2.0 xdr_ypresp_key_val F +GLIBC_2.0 xdr_ypresp_maplist F +GLIBC_2.0 xdr_ypresp_master F +GLIBC_2.0 xdr_ypresp_order F +GLIBC_2.0 xdr_ypresp_val F +GLIBC_2.0 xdr_ypresp_xfr F +GLIBC_2.0 xdr_ypstat F +GLIBC_2.0 xdr_ypupdate_args F +GLIBC_2.0 xdr_ypxfrstat F +GLIBC_2.0 yp_all F +GLIBC_2.0 yp_bind F +GLIBC_2.0 yp_first F +GLIBC_2.0 yp_get_default_domain F +GLIBC_2.0 yp_maplist F +GLIBC_2.0 yp_master F +GLIBC_2.0 yp_match F +GLIBC_2.0 yp_next F +GLIBC_2.0 yp_order F +GLIBC_2.0 yp_unbind F +GLIBC_2.0 yp_update F +GLIBC_2.0 ypbinderr_string F +GLIBC_2.0 yperr_string F +GLIBC_2.0 ypprot_err F +GLIBC_2.1 GLIBC_2.1 A +GLIBC_2.1 __free_fdresult F +GLIBC_2.1 __nis_default_access F +GLIBC_2.1 __nis_default_group F +GLIBC_2.1 __nis_default_owner F +GLIBC_2.1 __nis_default_ttl F +GLIBC_2.1 __nis_finddirectory F +GLIBC_2.1 __nis_hash F +GLIBC_2.1 __nisbind_connect F +GLIBC_2.1 __nisbind_create F +GLIBC_2.1 __nisbind_destroy F +GLIBC_2.1 __nisbind_next F +GLIBC_2.1 nis_add F +GLIBC_2.1 nis_add_entry F +GLIBC_2.1 nis_addmember F +GLIBC_2.1 nis_checkpoint F +GLIBC_2.1 nis_clone_directory F +GLIBC_2.1 nis_clone_object F +GLIBC_2.1 nis_clone_result F +GLIBC_2.1 nis_creategroup F +GLIBC_2.1 nis_destroy_object F +GLIBC_2.1 nis_destroygroup F +GLIBC_2.1 nis_dir_cmp F +GLIBC_2.1 nis_domain_of F +GLIBC_2.1 nis_domain_of_r F +GLIBC_2.1 nis_first_entry F +GLIBC_2.1 nis_free_directory F +GLIBC_2.1 nis_free_object F +GLIBC_2.1 nis_free_request F +GLIBC_2.1 nis_freenames F +GLIBC_2.1 nis_freeresult F +GLIBC_2.1 nis_freeservlist F +GLIBC_2.1 nis_freetags F +GLIBC_2.1 nis_getnames F +GLIBC_2.1 nis_getservlist F +GLIBC_2.1 nis_ismember F +GLIBC_2.1 nis_leaf_of F +GLIBC_2.1 nis_leaf_of_r F +GLIBC_2.1 nis_lerror F +GLIBC_2.1 nis_list F +GLIBC_2.1 nis_local_directory F +GLIBC_2.1 nis_local_group F +GLIBC_2.1 nis_local_host F +GLIBC_2.1 nis_local_principal F +GLIBC_2.1 nis_lookup F +GLIBC_2.1 nis_mkdir F +GLIBC_2.1 nis_modify F +GLIBC_2.1 nis_modify_entry F +GLIBC_2.1 nis_name_of F +GLIBC_2.1 nis_name_of_r F +GLIBC_2.1 nis_next_entry F +GLIBC_2.1 nis_perror F +GLIBC_2.1 nis_ping F +GLIBC_2.1 nis_print_directory F +GLIBC_2.1 nis_print_entry F +GLIBC_2.1 nis_print_group F +GLIBC_2.1 nis_print_group_entry F +GLIBC_2.1 nis_print_link F +GLIBC_2.1 nis_print_object F +GLIBC_2.1 nis_print_result F +GLIBC_2.1 nis_print_rights F +GLIBC_2.1 nis_print_table F +GLIBC_2.1 nis_read_obj F +GLIBC_2.1 nis_remove F +GLIBC_2.1 nis_remove_entry F +GLIBC_2.1 nis_removemember F +GLIBC_2.1 nis_rmdir F +GLIBC_2.1 nis_servstate F +GLIBC_2.1 nis_sperrno F +GLIBC_2.1 nis_sperror F +GLIBC_2.1 nis_sperror_r F +GLIBC_2.1 nis_stats F +GLIBC_2.1 nis_verifygroup F +GLIBC_2.1 nis_write_obj F +GLIBC_2.1 readColdStartFile F +GLIBC_2.1 writeColdStartFile F +GLIBC_2.1 xdr_cback_data F +GLIBC_2.1 xdr_obj_p F +GLIBC_2.2 GLIBC_2.2 A +GLIBC_2.2 xdr_ypall F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist new file mode 100644 index 0000000000..3c5e11aafe --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist @@ -0,0 +1,260 @@ +GLIBC_2.0 GLIBC_2.0 A +GLIBC_2.0 _IO_flockfile F +GLIBC_2.0 _IO_ftrylockfile F +GLIBC_2.0 _IO_funlockfile F +GLIBC_2.0 __close F +GLIBC_2.0 __connect F +GLIBC_2.0 __errno_location F +GLIBC_2.0 __fcntl F +GLIBC_2.0 __fork F +GLIBC_2.0 __h_errno_location F +GLIBC_2.0 __lseek F +GLIBC_2.0 __open F +GLIBC_2.0 __pthread_getspecific F +GLIBC_2.0 __pthread_key_create F +GLIBC_2.0 __pthread_mutex_destroy F +GLIBC_2.0 __pthread_mutex_init F +GLIBC_2.0 __pthread_mutex_lock F +GLIBC_2.0 __pthread_mutex_trylock F +GLIBC_2.0 __pthread_mutex_unlock F +GLIBC_2.0 __pthread_mutexattr_destroy F +GLIBC_2.0 __pthread_mutexattr_init F +GLIBC_2.0 __pthread_mutexattr_settype F +GLIBC_2.0 __pthread_once F +GLIBC_2.0 __pthread_setspecific F +GLIBC_2.0 __read F +GLIBC_2.0 __send F +GLIBC_2.0 __sigaction F +GLIBC_2.0 __wait F +GLIBC_2.0 __write F +GLIBC_2.0 _pthread_cleanup_pop F +GLIBC_2.0 _pthread_cleanup_pop_restore F +GLIBC_2.0 _pthread_cleanup_push F +GLIBC_2.0 _pthread_cleanup_push_defer F +GLIBC_2.0 accept F +GLIBC_2.0 close F +GLIBC_2.0 connect F +GLIBC_2.0 fcntl F +GLIBC_2.0 flockfile F +GLIBC_2.0 fork F +GLIBC_2.0 fsync F +GLIBC_2.0 ftrylockfile F +GLIBC_2.0 funlockfile F +GLIBC_2.0 longjmp F +GLIBC_2.0 lseek F +GLIBC_2.0 msync F +GLIBC_2.0 nanosleep F +GLIBC_2.0 open F +GLIBC_2.0 pause F +GLIBC_2.0 pthread_atfork F +GLIBC_2.0 pthread_attr_destroy F +GLIBC_2.0 pthread_attr_getdetachstate F +GLIBC_2.0 pthread_attr_getinheritsched F +GLIBC_2.0 pthread_attr_getschedparam F +GLIBC_2.0 pthread_attr_getschedpolicy F +GLIBC_2.0 pthread_attr_getscope F +GLIBC_2.0 pthread_attr_init F +GLIBC_2.0 pthread_attr_setdetachstate F +GLIBC_2.0 pthread_attr_setinheritsched F +GLIBC_2.0 pthread_attr_setschedparam F +GLIBC_2.0 pthread_attr_setschedpolicy F +GLIBC_2.0 pthread_attr_setscope F +GLIBC_2.0 pthread_cancel F +GLIBC_2.0 pthread_cond_broadcast F +GLIBC_2.0 pthread_cond_destroy F +GLIBC_2.0 pthread_cond_init F +GLIBC_2.0 pthread_cond_signal F +GLIBC_2.0 pthread_cond_timedwait F +GLIBC_2.0 pthread_cond_wait F +GLIBC_2.0 pthread_condattr_destroy F +GLIBC_2.0 pthread_condattr_init F +GLIBC_2.0 pthread_create F +GLIBC_2.0 pthread_detach F +GLIBC_2.0 pthread_equal F +GLIBC_2.0 pthread_exit F +GLIBC_2.0 pthread_getschedparam F +GLIBC_2.0 pthread_getspecific F +GLIBC_2.0 pthread_join F +GLIBC_2.0 pthread_key_create F +GLIBC_2.0 pthread_key_delete F +GLIBC_2.0 pthread_kill F +GLIBC_2.0 pthread_kill_other_threads_np F +GLIBC_2.0 pthread_mutex_destroy F +GLIBC_2.0 pthread_mutex_init F +GLIBC_2.0 pthread_mutex_lock F +GLIBC_2.0 pthread_mutex_trylock F +GLIBC_2.0 pthread_mutex_unlock F +GLIBC_2.0 pthread_mutexattr_destroy F +GLIBC_2.0 pthread_mutexattr_getkind_np F +GLIBC_2.0 pthread_mutexattr_init F +GLIBC_2.0 pthread_mutexattr_setkind_np F +GLIBC_2.0 pthread_once F +GLIBC_2.0 pthread_self F +GLIBC_2.0 pthread_setcancelstate F +GLIBC_2.0 pthread_setcanceltype F +GLIBC_2.0 pthread_setschedparam F +GLIBC_2.0 pthread_setspecific F +GLIBC_2.0 pthread_sigmask F +GLIBC_2.0 pthread_testcancel F +GLIBC_2.0 raise F +GLIBC_2.0 read F +GLIBC_2.0 recv F +GLIBC_2.0 recvfrom F +GLIBC_2.0 recvmsg F +GLIBC_2.0 sem_destroy F +GLIBC_2.0 sem_getvalue F +GLIBC_2.0 sem_init F +GLIBC_2.0 sem_post F +GLIBC_2.0 sem_trywait F +GLIBC_2.0 sem_wait F +GLIBC_2.0 send F +GLIBC_2.0 sendmsg F +GLIBC_2.0 sendto F +GLIBC_2.0 sigaction F +GLIBC_2.0 siglongjmp F +GLIBC_2.0 sigwait F +GLIBC_2.0 system F +GLIBC_2.0 tcdrain F +GLIBC_2.0 vfork F +GLIBC_2.0 wait F +GLIBC_2.0 waitpid F +GLIBC_2.0 write F +GLIBC_2.1 GLIBC_2.1 A +GLIBC_2.1 __libc_allocate_rtsig F +GLIBC_2.1 __libc_current_sigrtmax F +GLIBC_2.1 __libc_current_sigrtmin F +GLIBC_2.1 pthread_attr_getguardsize F +GLIBC_2.1 pthread_attr_getstackaddr F +GLIBC_2.1 pthread_attr_getstacksize F +GLIBC_2.1 pthread_attr_init F +GLIBC_2.1 pthread_attr_setguardsize F +GLIBC_2.1 pthread_attr_setstackaddr F +GLIBC_2.1 pthread_attr_setstacksize F +GLIBC_2.1 pthread_create F +GLIBC_2.1 pthread_getconcurrency F +GLIBC_2.1 pthread_mutexattr_gettype F +GLIBC_2.1 pthread_mutexattr_settype F +GLIBC_2.1 pthread_rwlock_destroy F +GLIBC_2.1 pthread_rwlock_init F +GLIBC_2.1 pthread_rwlock_rdlock F +GLIBC_2.1 pthread_rwlock_tryrdlock F +GLIBC_2.1 pthread_rwlock_trywrlock F +GLIBC_2.1 pthread_rwlock_unlock F +GLIBC_2.1 pthread_rwlock_wrlock F +GLIBC_2.1 pthread_rwlockattr_destroy F +GLIBC_2.1 pthread_rwlockattr_getkind_np F +GLIBC_2.1 pthread_rwlockattr_getpshared F +GLIBC_2.1 pthread_rwlockattr_init F +GLIBC_2.1 pthread_rwlockattr_setkind_np F +GLIBC_2.1 pthread_rwlockattr_setpshared F +GLIBC_2.1 pthread_setconcurrency F +GLIBC_2.1 sem_destroy F +GLIBC_2.1 sem_getvalue F +GLIBC_2.1 sem_init F +GLIBC_2.1 sem_post F +GLIBC_2.1 sem_trywait F +GLIBC_2.1 sem_wait F +GLIBC_2.1.1 GLIBC_2.1.1 A +GLIBC_2.1.1 sem_close F +GLIBC_2.1.1 sem_open F +GLIBC_2.1.1 sem_unlink F +GLIBC_2.1.2 GLIBC_2.1.2 A +GLIBC_2.1.2 __vfork F +GLIBC_2.11 GLIBC_2.11 A +GLIBC_2.11 pthread_sigqueue F +GLIBC_2.12 GLIBC_2.12 A +GLIBC_2.12 pthread_getname_np F +GLIBC_2.12 pthread_mutex_consistent F +GLIBC_2.12 pthread_mutexattr_getrobust F +GLIBC_2.12 pthread_mutexattr_setrobust F +GLIBC_2.12 pthread_setname_np F +GLIBC_2.18 GLIBC_2.18 A +GLIBC_2.18 pthread_getattr_default_np F +GLIBC_2.18 pthread_setattr_default_np F +GLIBC_2.19 GLIBC_2.19 A +GLIBC_2.19 longjmp F +GLIBC_2.19 siglongjmp F +GLIBC_2.2 GLIBC_2.2 A +GLIBC_2.2 __open64 F +GLIBC_2.2 __pread64 F +GLIBC_2.2 __pthread_rwlock_destroy F +GLIBC_2.2 __pthread_rwlock_init F +GLIBC_2.2 __pthread_rwlock_rdlock F +GLIBC_2.2 __pthread_rwlock_tryrdlock F +GLIBC_2.2 __pthread_rwlock_trywrlock F +GLIBC_2.2 __pthread_rwlock_unlock F +GLIBC_2.2 __pthread_rwlock_wrlock F +GLIBC_2.2 __pwrite64 F +GLIBC_2.2 __res_state F +GLIBC_2.2 lseek64 F +GLIBC_2.2 open64 F +GLIBC_2.2 pread F +GLIBC_2.2 pread64 F +GLIBC_2.2 pthread_attr_getstack F +GLIBC_2.2 pthread_attr_setstack F +GLIBC_2.2 pthread_barrier_destroy F +GLIBC_2.2 pthread_barrier_init F +GLIBC_2.2 pthread_barrier_wait F +GLIBC_2.2 pthread_barrierattr_destroy F +GLIBC_2.2 pthread_barrierattr_init F +GLIBC_2.2 pthread_barrierattr_setpshared F +GLIBC_2.2 pthread_condattr_getpshared F +GLIBC_2.2 pthread_condattr_setpshared F +GLIBC_2.2 pthread_getcpuclockid F +GLIBC_2.2 pthread_mutex_timedlock F +GLIBC_2.2 pthread_mutexattr_getpshared F +GLIBC_2.2 pthread_mutexattr_setpshared F +GLIBC_2.2 pthread_rwlock_timedrdlock F +GLIBC_2.2 pthread_rwlock_timedwrlock F +GLIBC_2.2 pthread_spin_destroy F +GLIBC_2.2 pthread_spin_init F +GLIBC_2.2 pthread_spin_lock F +GLIBC_2.2 pthread_spin_trylock F +GLIBC_2.2 pthread_spin_unlock F +GLIBC_2.2 pthread_yield F +GLIBC_2.2 pwrite F +GLIBC_2.2 pwrite64 F +GLIBC_2.2 sem_timedwait F +GLIBC_2.2.3 GLIBC_2.2.3 A +GLIBC_2.2.3 pthread_getattr_np F +GLIBC_2.2.6 GLIBC_2.2.6 A +GLIBC_2.2.6 __nanosleep F +GLIBC_2.3.2 GLIBC_2.3.2 A +GLIBC_2.3.2 pthread_cond_broadcast F +GLIBC_2.3.2 pthread_cond_destroy F +GLIBC_2.3.2 pthread_cond_init F +GLIBC_2.3.2 pthread_cond_signal F +GLIBC_2.3.2 pthread_cond_timedwait F +GLIBC_2.3.2 pthread_cond_wait F +GLIBC_2.3.3 GLIBC_2.3.3 A +GLIBC_2.3.3 __pthread_cleanup_routine F +GLIBC_2.3.3 __pthread_register_cancel F +GLIBC_2.3.3 __pthread_register_cancel_defer F +GLIBC_2.3.3 __pthread_unregister_cancel F +GLIBC_2.3.3 __pthread_unregister_cancel_restore F +GLIBC_2.3.3 __pthread_unwind_next F +GLIBC_2.3.3 pthread_attr_getaffinity_np F +GLIBC_2.3.3 pthread_attr_setaffinity_np F +GLIBC_2.3.3 pthread_barrierattr_getpshared F +GLIBC_2.3.3 pthread_condattr_getclock F +GLIBC_2.3.3 pthread_condattr_setclock F +GLIBC_2.3.3 pthread_getaffinity_np F +GLIBC_2.3.3 pthread_setaffinity_np F +GLIBC_2.3.3 pthread_timedjoin_np F +GLIBC_2.3.3 pthread_tryjoin_np F +GLIBC_2.3.4 GLIBC_2.3.4 A +GLIBC_2.3.4 pthread_attr_getaffinity_np F +GLIBC_2.3.4 pthread_attr_setaffinity_np F +GLIBC_2.3.4 pthread_getaffinity_np F +GLIBC_2.3.4 pthread_setaffinity_np F +GLIBC_2.3.4 pthread_setschedprio F +GLIBC_2.4 GLIBC_2.4 A +GLIBC_2.4 pthread_mutex_consistent_np F +GLIBC_2.4 pthread_mutex_getprioceiling F +GLIBC_2.4 pthread_mutex_setprioceiling F +GLIBC_2.4 pthread_mutexattr_getprioceiling F +GLIBC_2.4 pthread_mutexattr_getprotocol F +GLIBC_2.4 pthread_mutexattr_getrobust_np F +GLIBC_2.4 pthread_mutexattr_setprioceiling F +GLIBC_2.4 pthread_mutexattr_setprotocol F +GLIBC_2.4 pthread_mutexattr_setrobust_np F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/libresolv.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/libresolv.abilist new file mode 100644 index 0000000000..4d50e7c8c6 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/libresolv.abilist @@ -0,0 +1,100 @@ +GLIBC_2.0 GLIBC_2.0 A +GLIBC_2.0 __b64_ntop F +GLIBC_2.0 __b64_pton F +GLIBC_2.0 __dn_comp F +GLIBC_2.0 __dn_count_labels F +GLIBC_2.0 __dn_skipname F +GLIBC_2.0 __fp_nquery F +GLIBC_2.0 __fp_query F +GLIBC_2.0 __fp_resstat F +GLIBC_2.0 __hostalias F +GLIBC_2.0 __loc_aton F +GLIBC_2.0 __loc_ntoa F +GLIBC_2.0 __p_cdname F +GLIBC_2.0 __p_cdnname F +GLIBC_2.0 __p_class F +GLIBC_2.0 __p_class_syms D 0x54 +GLIBC_2.0 __p_fqname F +GLIBC_2.0 __p_fqnname F +GLIBC_2.0 __p_option F +GLIBC_2.0 __p_query F +GLIBC_2.0 __p_secstodate F +GLIBC_2.0 __p_time F +GLIBC_2.0 __p_type F +GLIBC_2.0 __p_type_syms D 0x228 +GLIBC_2.0 __putlong F +GLIBC_2.0 __putshort F +GLIBC_2.0 __res_close F +GLIBC_2.0 __res_dnok F +GLIBC_2.0 __res_hnok F +GLIBC_2.0 __res_isourserver F +GLIBC_2.0 __res_mailok F +GLIBC_2.0 __res_nameinquery F +GLIBC_2.0 __res_ownok F +GLIBC_2.0 __res_queriesmatch F +GLIBC_2.0 __res_send F +GLIBC_2.0 __sym_ntop F +GLIBC_2.0 __sym_ntos F +GLIBC_2.0 __sym_ston F +GLIBC_2.0 _gethtbyaddr F +GLIBC_2.0 _gethtbyname F +GLIBC_2.0 _gethtbyname2 F +GLIBC_2.0 _gethtent F +GLIBC_2.0 _getlong F +GLIBC_2.0 _getshort F +GLIBC_2.0 _res_opcodes D 0x40 +GLIBC_2.0 _sethtent F +GLIBC_2.0 dn_expand F +GLIBC_2.0 inet_net_ntop F +GLIBC_2.0 inet_net_pton F +GLIBC_2.0 inet_neta F +GLIBC_2.0 res_gethostbyaddr F +GLIBC_2.0 res_gethostbyname F +GLIBC_2.0 res_gethostbyname2 F +GLIBC_2.0 res_mkquery F +GLIBC_2.0 res_query F +GLIBC_2.0 res_querydomain F +GLIBC_2.0 res_search F +GLIBC_2.0 res_send_setqhook F +GLIBC_2.0 res_send_setrhook F +GLIBC_2.2 GLIBC_2.2 A +GLIBC_2.2 __dn_expand F +GLIBC_2.2 __res_hostalias F +GLIBC_2.2 __res_mkquery F +GLIBC_2.2 __res_nmkquery F +GLIBC_2.2 __res_nquery F +GLIBC_2.2 __res_nquerydomain F +GLIBC_2.2 __res_nsearch F +GLIBC_2.2 __res_nsend F +GLIBC_2.2 __res_query F +GLIBC_2.2 __res_querydomain F +GLIBC_2.2 __res_search F +GLIBC_2.3.2 GLIBC_2.3.2 A +GLIBC_2.3.2 __p_rcode F +GLIBC_2.9 GLIBC_2.9 A +GLIBC_2.9 ns_datetosecs F +GLIBC_2.9 ns_format_ttl F +GLIBC_2.9 ns_get16 F +GLIBC_2.9 ns_get32 F +GLIBC_2.9 ns_initparse F +GLIBC_2.9 ns_makecanon F +GLIBC_2.9 ns_msg_getflag F +GLIBC_2.9 ns_name_compress F +GLIBC_2.9 ns_name_ntol F +GLIBC_2.9 ns_name_ntop F +GLIBC_2.9 ns_name_pack F +GLIBC_2.9 ns_name_pton F +GLIBC_2.9 ns_name_rollback F +GLIBC_2.9 ns_name_skip F +GLIBC_2.9 ns_name_uncompress F +GLIBC_2.9 ns_name_unpack F +GLIBC_2.9 ns_parse_ttl F +GLIBC_2.9 ns_parserr F +GLIBC_2.9 ns_put16 F +GLIBC_2.9 ns_put32 F +GLIBC_2.9 ns_samedomain F +GLIBC_2.9 ns_samename F +GLIBC_2.9 ns_skiprr F +GLIBC_2.9 ns_sprintrr F +GLIBC_2.9 ns_sprintrrf F +GLIBC_2.9 ns_subdomain F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist new file mode 100644 index 0000000000..15e4418863 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist @@ -0,0 +1,47 @@ +GLIBC_2.1 GLIBC_2.1 A +GLIBC_2.1 aio_cancel F +GLIBC_2.1 aio_cancel64 F +GLIBC_2.1 aio_error F +GLIBC_2.1 aio_error64 F +GLIBC_2.1 aio_fsync F +GLIBC_2.1 aio_fsync64 F +GLIBC_2.1 aio_init F +GLIBC_2.1 aio_read F +GLIBC_2.1 aio_read64 F +GLIBC_2.1 aio_return F +GLIBC_2.1 aio_return64 F +GLIBC_2.1 aio_suspend F +GLIBC_2.1 aio_suspend64 F +GLIBC_2.1 aio_write F +GLIBC_2.1 aio_write64 F +GLIBC_2.1 lio_listio F +GLIBC_2.1 lio_listio64 F +GLIBC_2.2 GLIBC_2.2 A +GLIBC_2.2 clock_getcpuclockid F +GLIBC_2.2 clock_getres F +GLIBC_2.2 clock_gettime F +GLIBC_2.2 clock_nanosleep F +GLIBC_2.2 clock_settime F +GLIBC_2.2 shm_open F +GLIBC_2.2 shm_unlink F +GLIBC_2.2 timer_create F +GLIBC_2.2 timer_delete F +GLIBC_2.2 timer_getoverrun F +GLIBC_2.2 timer_gettime F +GLIBC_2.2 timer_settime F +GLIBC_2.3.4 GLIBC_2.3.4 A +GLIBC_2.3.4 mq_close F +GLIBC_2.3.4 mq_getattr F +GLIBC_2.3.4 mq_notify F +GLIBC_2.3.4 mq_open F +GLIBC_2.3.4 mq_receive F +GLIBC_2.3.4 mq_send F +GLIBC_2.3.4 mq_setattr F +GLIBC_2.3.4 mq_timedreceive F +GLIBC_2.3.4 mq_timedsend F +GLIBC_2.3.4 mq_unlink F +GLIBC_2.4 GLIBC_2.4 A +GLIBC_2.4 lio_listio F +GLIBC_2.4 lio_listio64 F +GLIBC_2.7 GLIBC_2.7 A +GLIBC_2.7 __mq_open_2 F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/libthread_db.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/libthread_db.abilist new file mode 100644 index 0000000000..a8a8c2c68d --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/libthread_db.abilist @@ -0,0 +1,44 @@ +GLIBC_2.1.3 GLIBC_2.1.3 A +GLIBC_2.1.3 td_init F +GLIBC_2.1.3 td_log F +GLIBC_2.1.3 td_ta_clear_event F +GLIBC_2.1.3 td_ta_delete F +GLIBC_2.1.3 td_ta_enable_stats F +GLIBC_2.1.3 td_ta_event_addr F +GLIBC_2.1.3 td_ta_event_getmsg F +GLIBC_2.1.3 td_ta_get_nthreads F +GLIBC_2.1.3 td_ta_get_ph F +GLIBC_2.1.3 td_ta_get_stats F +GLIBC_2.1.3 td_ta_map_id2thr F +GLIBC_2.1.3 td_ta_map_lwp2thr F +GLIBC_2.1.3 td_ta_new F +GLIBC_2.1.3 td_ta_reset_stats F +GLIBC_2.1.3 td_ta_set_event F +GLIBC_2.1.3 td_ta_setconcurrency F +GLIBC_2.1.3 td_ta_thr_iter F +GLIBC_2.1.3 td_ta_tsd_iter F +GLIBC_2.1.3 td_thr_clear_event F +GLIBC_2.1.3 td_thr_dbresume F +GLIBC_2.1.3 td_thr_dbsuspend F +GLIBC_2.1.3 td_thr_event_enable F +GLIBC_2.1.3 td_thr_event_getmsg F +GLIBC_2.1.3 td_thr_get_info F +GLIBC_2.1.3 td_thr_getfpregs F +GLIBC_2.1.3 td_thr_getgregs F +GLIBC_2.1.3 td_thr_getxregs F +GLIBC_2.1.3 td_thr_getxregsize F +GLIBC_2.1.3 td_thr_set_event F +GLIBC_2.1.3 td_thr_setfpregs F +GLIBC_2.1.3 td_thr_setgregs F +GLIBC_2.1.3 td_thr_setprio F +GLIBC_2.1.3 td_thr_setsigpending F +GLIBC_2.1.3 td_thr_setxregs F +GLIBC_2.1.3 td_thr_sigsetmask F +GLIBC_2.1.3 td_thr_tsd F +GLIBC_2.1.3 td_thr_validate F +GLIBC_2.2.3 GLIBC_2.2.3 A +GLIBC_2.2.3 td_symbol_list F +GLIBC_2.3 GLIBC_2.3 A +GLIBC_2.3 td_thr_tls_get_addr F +GLIBC_2.3.3 GLIBC_2.3.3 A +GLIBC_2.3.3 td_thr_tlsbase F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/libutil.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/libutil.abilist new file mode 100644 index 0000000000..8a99773ccf --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/libutil.abilist @@ -0,0 +1,9 @@ +GLIBC_2.0 GLIBC_2.0 A +GLIBC_2.0 forkpty F +GLIBC_2.0 login F +GLIBC_2.0 login_tty F +GLIBC_2.0 logout F +GLIBC_2.0 logwtmp F +GLIBC_2.0 openpty F +GLIBC_2.9 GLIBC_2.9 A +GLIBC_2.9 login F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/lockf64.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/lockf64.c new file mode 100644 index 0000000000..a88f5a784a --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/lockf64.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/i386/lockf64.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/login.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/login.c new file mode 100644 index 0000000000..c9fc8a4845 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/login.c @@ -0,0 +1,35 @@ +/* Copyright (C) 2008-2017 Free Software Foundation, Inc. + Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <assert.h> +#include <errno.h> +#include <limits.h> +#include <string.h> +#include <unistd.h> +#include <stdlib.h> +#include <utmp.h> + +#include "utmp-compat.h" + +#undef weak_alias +#define weak_alias(n,a) +#define login __login +#include "login/login.c" +#undef login + +default_symbol_version (__login, login, UTMP_COMPAT_BASE); diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/login32.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/login32.c new file mode 100644 index 0000000000..339b13d900 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/login32.c @@ -0,0 +1,36 @@ +/* Copyright (C) 2008-2017 Free Software Foundation, Inc. + Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sys/types.h> +#include <utmp.h> +#include <libc-symbols.h> + +#include "utmp32.h" +#include "utmp-convert.h" + +/* Write the given entry into utmp and wtmp. */ +void +login32 (const struct utmp32 *entry) +{ + struct utmp in64; + + utmp_convert32to64 (entry, &in64); + login (&in64); +} + +symbol_version (login32, login, GLIBC_2.0); diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/lxstat.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/lxstat.c new file mode 100644 index 0000000000..0efa0aea49 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/lxstat.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/i386/lxstat.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/makecontext.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/makecontext.c new file mode 100644 index 0000000000..de828fd8f3 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/makecontext.c @@ -0,0 +1,96 @@ +/* Copyright (C) 2001-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <libintl.h> +#include <stdarg.h> +#include <stdio.h> +#include <stdlib.h> +#include <ucontext.h> + +/* This implementation can handle any ARGC value but only + normal integer type parameters. Parameters of type float, + double, complex and structure with sizes 0, 2, 4 or 8 + won't work. + makecontext sets up a stack and the registers for the + user context. The stack looks like this: + size offset + %r15 -> +-----------------------+ + 4 | back chain (zero) | 0 + 4 | reserved | 4 + 88 | save area for (*func) | 8 + +-----------------------+ + n | overflow parameters | 96 + +-----------------------+ + The registers are set up like this: + %r2-%r6: parameters 1 to 5 + %r7 : (*func) pointer + %r8 : uc_link from ucontext structure + %r9 : address of setcontext + %r14 : return address to uc_link trampoline + %r15 : stack pointer. + + The trampoline looks like this: + basr %r14,%r7 + lr %r2,%r8 + br %r9. */ + +void +__makecontext (ucontext_t *ucp, void (*func) (void), int argc, ...) +{ + extern void __makecontext_ret (void); + unsigned long int *sp; + va_list ap; + + sp = (unsigned long int *) (((unsigned long int) ucp->uc_stack.ss_sp + + ucp->uc_stack.ss_size) & -8L); + + /* Set the return address to trampoline. */ + ucp->uc_mcontext.gregs[14] = (long int) __makecontext_ret; + + /* Set register parameters. */ + va_start (ap, argc); + for (int i = 0; i < argc && i < 5; ++i) + ucp->uc_mcontext.gregs[2 + i] = va_arg (ap, long int); + + /* The remaining arguments go to the overflow area. */ + if (argc > 5) + { + sp -= argc - 5; + for (int i = 5; i < argc; ++i) + sp[i - 5] = va_arg (ap, long int); + } + va_end (ap); + + /* Make room for the save area and set the backchain. */ + sp -= 24; + *sp = 0; + + /* Pass (*func) to __makecontext_ret in %r7. */ + ucp->uc_mcontext.gregs[7] = (long int) func; + + /* Pass ucp->uc_link to __makecontext_ret in %r8. */ + ucp->uc_mcontext.gregs[8] = (long int) ucp->uc_link; + + /* Pass address of setcontext in %r9. */ + ucp->uc_mcontext.gregs[9] = (long int) &setcontext; + + /* Set stack pointer. */ + ucp->uc_mcontext.gregs[15] = (long int) sp; +} + +weak_alias (__makecontext, makecontext) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/posix_fadvise64.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/posix_fadvise64.c new file mode 100644 index 0000000000..1ca2853b23 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/posix_fadvise64.c @@ -0,0 +1,67 @@ +/* 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 <errno.h> +#include <fcntl.h> +#include <sysdep.h> + +int __posix_fadvise64_l64 (int fd, off64_t offset, off64_t len, int advise); +int __posix_fadvise64_l32 (int fd, off64_t offset, size_t len, int advise); + +/* Advice the system about the expected behaviour of the application with + respect to the file associated with FD. */ + +struct fadvise64_64_layout +{ + int fd; + off64_t offset; + off64_t len; + int advise; +}; + +int +__posix_fadvise64_l64 (int fd, off64_t offset, off64_t len, int advise) +{ + struct fadvise64_64_layout parameters; + INTERNAL_SYSCALL_DECL (err); + + parameters.fd = fd; + parameters.offset = offset; + parameters.len = len; + parameters.advise = advise; + int ret = INTERNAL_SYSCALL (fadvise64_64, err, 1, ¶meters); + if (!INTERNAL_SYSCALL_ERROR_P (ret, err)) + return 0; + return INTERNAL_SYSCALL_ERRNO (ret, err); +} + +#include <shlib-compat.h> + +#if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_3_3) + +int +attribute_compat_text_section +__posix_fadvise64_l32 (int fd, off64_t offset, size_t len, int advise) +{ + return __posix_fadvise64_l64 (fd, offset, len, advise); +} + +versioned_symbol (libc, __posix_fadvise64_l64, posix_fadvise64, GLIBC_2_3_3); +compat_symbol (libc, __posix_fadvise64_l32, posix_fadvise64, GLIBC_2_2); +#else +strong_alias (__posix_fadvise64_l64, posix_fadvise64); +#endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/profil-counter.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/profil-counter.h new file mode 100644 index 0000000000..f84940787f --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/profil-counter.h @@ -0,0 +1,26 @@ +/* Low-level statistical profiling support function. Linux/s390 version. + Copyright (C) 2000-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <signal.h> +#include <sigcontextinfo.h> + +static void +__profil_counter (int signo, SIGCONTEXT scp) +{ + profil_count((void *) ((unsigned long) GET_PC (scp) & 0x7fffffffUL)); +} diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/pututxline.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/pututxline.c new file mode 100644 index 0000000000..ca88836747 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/pututxline.c @@ -0,0 +1,30 @@ +/* Copyright (C) 2008-2017 Free Software Foundation, Inc. + Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have 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 <utmp.h> +#include <utmpx.h> + +#include "utmp-compat.h" + +#undef weak_alias +#define weak_alias(n,a) +#define pututxline __pututxline +#include "login/pututxline.c" +#undef pututxline + +default_symbol_version (__pututxline, pututxline, UTMP_COMPAT_BASE); diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/readdir64.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/readdir64.c new file mode 100644 index 0000000000..2ea26dd409 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/readdir64.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/i386/readdir64.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/readdir64_r.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/readdir64_r.c new file mode 100644 index 0000000000..9f54f897e3 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/readdir64_r.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/i386/readdir64_r.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/register-dump.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/register-dump.h new file mode 100644 index 0000000000..8a9ea87688 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/register-dump.h @@ -0,0 +1,129 @@ +/* Dump registers. + Copyright (C) 2000-2017 Free Software Foundation, Inc. + Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sys/uio.h> +#include <_itoa.h> + +/* We will print the register dump in this format: + + GPR0: XXXXXXXX GPR1: XXXXXXXX GPR2: XXXXXXXX GPR3: XXXXXXXX + GPR4: XXXXXXXX GPR5: XXXXXXXX GPR6: XXXXXXXX GPR7: XXXXXXXX + GPR8: XXXXXXXX GPR9: XXXXXXXX GPRA: XXXXXXXX GPRB: XXXXXXXX + GPRC: XXXXXXXX GPRD: XXXXXXXX GPRE: XXXXXXXX GPRF: XXXXXXXX + + PSW.MASK: XXXXXXXX PSW.ADDR: XXXXXXXX + + ST(0) XXXX XXXXXXXXXXXXXXXX ST(1) XXXX XXXXXXXXXXXXXXXX + ST(2) XXXX XXXXXXXXXXXXXXXX ST(3) XXXX XXXXXXXXXXXXXXXX + ST(4) XXXX XXXXXXXXXXXXXXXX ST(5) XXXX XXXXXXXXXXXXXXXX + ST(6) XXXX XXXXXXXXXXXXXXXX ST(7) XXXX XXXXXXXXXXXXXXXX + + */ + +static void +hexvalue (unsigned long int value, char *buf, size_t len) +{ + char *cp = _itoa_word (value, buf + len, 16, 0); + while (cp > buf) + *--cp = '0'; +} + +static void +register_dump (int fd, struct sigcontext *ctx) +{ + char regs[19][8]; + struct iovec iov[40]; + 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->sregs->regs.gprs[0], regs[0], 8); + hexvalue (ctx->sregs->regs.gprs[1], regs[1], 8); + hexvalue (ctx->sregs->regs.gprs[2], regs[2], 8); + hexvalue (ctx->sregs->regs.gprs[3], regs[3], 8); + hexvalue (ctx->sregs->regs.gprs[4], regs[4], 8); + hexvalue (ctx->sregs->regs.gprs[5], regs[5], 8); + hexvalue (ctx->sregs->regs.gprs[6], regs[6], 8); + hexvalue (ctx->sregs->regs.gprs[7], regs[7], 8); + hexvalue (ctx->sregs->regs.gprs[8], regs[8], 8); + hexvalue (ctx->sregs->regs.gprs[9], regs[9], 8); + hexvalue (ctx->sregs->regs.gprs[10], regs[10], 8); + hexvalue (ctx->sregs->regs.gprs[11], regs[11], 8); + hexvalue (ctx->sregs->regs.gprs[12], regs[12], 8); + hexvalue (ctx->sregs->regs.gprs[13], regs[13], 8); + hexvalue (ctx->sregs->regs.gprs[14], regs[14], 8); + hexvalue (ctx->sregs->regs.gprs[15], regs[15], 8); + hexvalue (ctx->sregs->regs.psw.mask, regs[16], 8); + hexvalue (ctx->sregs->regs.psw.addr, regs[17], 8); + + /* Generate the output. */ + ADD_STRING ("Register dump:\n\n GPR0: "); + ADD_MEM (regs[0], 8); + ADD_STRING (" GPR1: "); + ADD_MEM (regs[1], 8); + ADD_STRING (" GPR2: "); + ADD_MEM (regs[2], 8); + ADD_STRING (" GPR3: "); + ADD_MEM (regs[3], 8); + ADD_STRING ("\n GPR4: "); + ADD_MEM (regs[4], 8); + ADD_STRING (" GPR5: "); + ADD_MEM (regs[5], 8); + ADD_STRING (" GPR6: "); + ADD_MEM (regs[6], 8); + ADD_STRING (" GPR7: "); + ADD_MEM (regs[7], 8); + ADD_STRING ("\n GPR8: "); + ADD_MEM (regs[8], 8); + ADD_STRING (" GPR9: "); + ADD_MEM (regs[9], 8); + ADD_STRING (" GPRA: "); + ADD_MEM (regs[10], 8); + ADD_STRING (" GPRB: "); + ADD_MEM (regs[11], 8); + ADD_STRING ("\n GPRC: "); + ADD_MEM (regs[12], 8); + ADD_STRING (" GPRD: "); + ADD_MEM (regs[13], 8); + ADD_STRING (" GPRE: "); + ADD_MEM (regs[14], 8); + ADD_STRING (" GPRF: "); + ADD_MEM (regs[15], 8); + ADD_STRING ("\n\n PSW.MASK: "); + ADD_MEM (regs[16], 8); + ADD_STRING (" PSW.ADDR: "); + ADD_MEM (regs[17], 8); + ADD_STRING (" TRAP: "); + ADD_MEM (regs[18], 4); + 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/s390/s390-32/scandir64.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/scandir64.c new file mode 100644 index 0000000000..506fd8877c --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/scandir64.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/i386/scandir64.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/setcontext.S b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/setcontext.S new file mode 100644 index 0000000000..b70eef0cec --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/setcontext.S @@ -0,0 +1,72 @@ +/* Copyright (C) 2001-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#include <features.h> + +#include "ucontext_i.h" + +/* __setcontext (const ucontext_t *ucp) + + Restores the machine context in UCP and thereby resumes execution + in that context. + + This implementation is intended to be used for *synchronous* context + switches only. Therefore, it does not have to restore anything + other than the PRESERVED state. */ + +ENTRY(__setcontext) + lr %r1,%r2 + + /* rt_sigprocmask (SIG_SETMASK, &sc->sc_mask, NULL, sigsetsize). */ + la %r2,SIG_SETMASK + la %r3,SC_MASK(%r1) + slr %r4,%r4 + lhi %r5,_NSIG8 + svc SYS_ify(rt_sigprocmask) + + /* Load fpu context. */ + lfpc SC_FPC(%r1) + ld %f0,SC_FPRS(%r1) + ld %f1,SC_FPRS+8(%r1) + ld %f2,SC_FPRS+16(%r1) + ld %f3,SC_FPRS+24(%r1) + ld %f4,SC_FPRS+32(%r1) + ld %f5,SC_FPRS+40(%r1) + ld %f6,SC_FPRS+48(%r1) + ld %f7,SC_FPRS+56(%r1) + ld %f8,SC_FPRS+64(%r1) + ld %f9,SC_FPRS+72(%r1) + ld %f10,SC_FPRS+80(%r1) + ld %f11,SC_FPRS+88(%r1) + ld %f12,SC_FPRS+96(%r1) + ld %f13,SC_FPRS+104(%r1) + ld %f14,SC_FPRS+112(%r1) + ld %f15,SC_FPRS+120(%r1) + + /* Don't touch %a0, used for thread purposes. */ + lam %a1,%a15,SC_ACRS+4(%r1) + + /* Load general purpose registers. */ + lm %r0,%r15,SC_GPRS(%r1) + + /* Return. */ + br %r14 +END(__setcontext) + +weak_alias (__setcontext, setcontext) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/swapcontext.S b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/swapcontext.S new file mode 100644 index 0000000000..f08d30cd7f --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/swapcontext.S @@ -0,0 +1,108 @@ +/* Copyright (C) 2002-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#include <features.h> + +#include "ucontext_i.h" + +/* __swapcontext (ucontext_t *oucp, const ucontext_t *ucp) + + Saves the machine context in oucp such that when it is activated, + it appears as if __swapcontext() returned again, restores the + machine context in ucp and thereby resumes execution in that + context. + + This implementation is intended to be used for *synchronous* context + switches only. Therefore, it does not have to save anything + other than the PRESERVED state. */ + +ENTRY(__swapcontext) + /* While not part of the ABI a system call never clobbers r0 + or r1. So keeping the values here while calling + rt_sigprocmask is ok. */ + lr %r1,%r2 + lr %r0,%r3 + + /* Store fpu context. */ + stfpc SC_FPC(%r1) + std %f0,SC_FPRS(%r1) + std %f1,SC_FPRS+8(%r1) + std %f2,SC_FPRS+16(%r1) + std %f3,SC_FPRS+24(%r1) + std %f4,SC_FPRS+32(%r1) + std %f5,SC_FPRS+40(%r1) + std %f6,SC_FPRS+48(%r1) + std %f7,SC_FPRS+56(%r1) + std %f8,SC_FPRS+64(%r1) + std %f9,SC_FPRS+72(%r1) + std %f10,SC_FPRS+80(%r1) + std %f11,SC_FPRS+88(%r1) + std %f12,SC_FPRS+96(%r1) + std %f13,SC_FPRS+104(%r1) + std %f14,SC_FPRS+112(%r1) + std %f15,SC_FPRS+120(%r1) + + /* Set __swapcontext return value to 0. */ + slr %r2,%r2 + + /* Store access registers. */ + stam %a0,%a15,SC_ACRS(%r1) + + /* Store general purpose registers. */ + stm %r0,%r15,SC_GPRS(%r1) + + /* rt_sigprocmask (SIG_SETMASK, &ucp->uc_sigmask, &oucp->uc_sigmask, + sigsetsize). */ + la %r2,SIG_SETMASK + lr %r5,%r0 + la %r3,SC_MASK(%r5) + la %r4,SC_MASK(%r1) + lhi %r5,_NSIG8 + svc SYS_ify(rt_sigprocmask) + + /* Load fpu context. */ + lr %r5,%r0 + lfpc SC_FPC(%r5) + ld %f0,SC_FPRS(%r5) + ld %f1,SC_FPRS+8(%r5) + ld %f2,SC_FPRS+16(%r5) + ld %f3,SC_FPRS+24(%r5) + ld %f4,SC_FPRS+32(%r5) + ld %f5,SC_FPRS+40(%r5) + ld %f6,SC_FPRS+48(%r5) + ld %f7,SC_FPRS+56(%r5) + ld %f8,SC_FPRS+64(%r5) + ld %f9,SC_FPRS+72(%r5) + ld %f10,SC_FPRS+80(%r5) + ld %f11,SC_FPRS+88(%r5) + ld %f12,SC_FPRS+96(%r5) + ld %f13,SC_FPRS+104(%r5) + ld %f14,SC_FPRS+112(%r5) + ld %f15,SC_FPRS+120(%r5) + + /* Don't touch %a0, used for thread purposes. */ + lam %a1,%a15,SC_ACRS+4(%r5) + + /* Load general purpose registers. */ + lm %r0,%r15,SC_GPRS(%r5) + + /* Return. */ + br %r14 +END(__swapcontext) +weak_alias (__swapcontext, swapcontext) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/syscall.S b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/syscall.S new file mode 100644 index 0000000000..8506db1cc1 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/syscall.S @@ -0,0 +1,67 @@ +/* Copyright (C) 2000-2017 Free Software Foundation, Inc. + Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> + +/* Please consult the file sysdeps/unix/sysv/linux/s390/sysdep.h for + more information about the value -4095 used below.*/ + +ENTRY (syscall) + /* Save registers and setup stack. */ + stm %r6,%r15,24(%r15) /* save registers */ + cfi_offset (%r15, -36) + cfi_offset (%r14, -40) + cfi_offset (%r13, -44) + cfi_offset (%r12, -48) + cfi_offset (%r11, -52) + cfi_offset (%r10, -56) + cfi_offset (%r9, -60) + cfi_offset (%r8, -64) + cfi_offset (%r7, -68) + cfi_offset (%r6, -72) + lr %r1,%r15 + l %r0,4(0,%r15) /* load eos */ + ahi %r15,-96 /* buy stack space */ + cfi_adjust_cfa_offset (96) + st %r1,0(0,%r15) /* store back chain */ + st %r0,4(0,%r15) /* store eos */ + + lr %r1,%r2 /* move syscall number */ + lr %r2,%r3 /* first parameter */ + lr %r3,%r4 /* second parameter */ + lr %r4,%r5 /* third parameter */ + lr %r5,%r6 /* fourth parameter */ + l %r6,192(%r15) /* fifth parameter */ + l %r7,196(%r15) /* sixth parameter */ + + basr %r8,0 +0: cl %r1,4f-0b(%r8) /* svc number < 256? */ + jl 2f +1: svc 0 + j 3f +2: ex %r1,1b-0b(%r8) /* lsb of R1 is subsituted as SVC number */ +3: l %r15,0(%r15) /* load back chain */ + cfi_adjust_cfa_offset (-96) + lm %r6,15,24(%r15) /* load registers */ + + lhi %r0,-4095 + clr %r2,%r0 /* check R2 for error */ + jnl SYSCALL_ERROR_LABEL + br %r14 /* return to caller */ +4: .long 256 +PSEUDO_END (syscall) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/syscalls.list b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/syscalls.list new file mode 100644 index 0000000000..300b13dd01 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/syscalls.list @@ -0,0 +1,20 @@ +# File name Caller Syscall name Args Strong name Weak names + +chown - chown32 i:sii __chown chown@@GLIBC_2.1 +lchown - lchown32 i:sii __lchown lchown@@GLIBC_2.0 chown@GLIBC_2.0 +fchown - fchown32 i:iii __fchown fchown + +getegid - getegid32 Ei: __getegid getegid +geteuid - geteuid32 Ei: __geteuid geteuid +getgid - getgid32 Ei: __getgid getgid +getuid - getuid32 Ei: __getuid getuid +getresgid - getresgid32 i:ppp __getresgid getresgid +getresuid - getresuid32 i:ppp __getresuid getresuid +getgroups - getgroups32 i:ip __getgroups getgroups + +setfsgid - setfsgid32 Ei:i setfsgid +setfsuid - setfsuid32 Ei:i setfsuid + +prlimit64 EXTRA prlimit64 i:iipp prlimit64 +fanotify_mark EXTRA fanotify_mark i:iiiiis fanotify_mark +personality EXTRA personality Ei:i __personality personality diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h new file mode 100644 index 0000000000..b1e80bcfcd --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h @@ -0,0 +1,139 @@ +/* Copyright (C) 2003-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Jakub Jelinek <jakub@redhat.com>, 2003. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#include <tls.h> +#ifndef __ASSEMBLER__ +# include <nptl/pthreadP.h> +#endif + +#if IS_IN (libc) || IS_IN (libpthread) || IS_IN (librt) + +# undef PSEUDO +# define PSEUDO(name, syscall_name, args) \ + .text; \ +L(pseudo_cancel): \ + cfi_startproc; \ + STM_##args \ + stm %r12,%r15,48(%r15); \ + cfi_offset (%r15, -36); \ + cfi_offset (%r14, -40); \ + cfi_offset (%r13, -44); \ + cfi_offset (%r12, -48); \ + lr %r14,%r15; \ + ahi %r15,-96; \ + cfi_adjust_cfa_offset (96); \ + st %r14,0(%r15); \ + basr %r13,0; \ +0: l %r1,1f-0b(%r13); \ + bas %r14,0(%r1,%r13); \ + lr %r0,%r2; \ + LM_##args \ + .if SYS_ify (syscall_name) < 256; \ + svc SYS_ify (syscall_name); \ + .else; \ + lhi %r1,SYS_ify (syscall_name); \ + svc 0; \ + .endif; \ + LR7_##args \ + l %r1,2f-0b(%r13); \ + lr %r12,%r2; \ + lr %r2,%r0; \ + bas %r14,0(%r1,%r13); \ + lr %r2,%r12; \ + lm %r12,%r15,48+96(%r15); \ + cfi_endproc; \ + j L(pseudo_check); \ +1: .long CENABLE-0b; \ +2: .long CDISABLE-0b; \ +ENTRY(name) \ + SINGLE_THREAD_P(%r1) \ + jne L(pseudo_cancel); \ +.type __##syscall_name##_nocancel,@function; \ +.globl __##syscall_name##_nocancel; \ +__##syscall_name##_nocancel: \ + DO_CALL(syscall_name, args); \ +L(pseudo_check): \ + lhi %r4,-4095; \ + clr %r2,%r4; \ + jnl SYSCALL_ERROR_LABEL; \ +.size __##syscall_name##_nocancel,.-__##syscall_name##_nocancel; \ +L(pseudo_end): + +# if IS_IN (libpthread) +# define CENABLE __pthread_enable_asynccancel +# define CDISABLE __pthread_disable_asynccancel +# elif IS_IN (libc) +# define CENABLE __libc_enable_asynccancel +# define CDISABLE __libc_disable_asynccancel +# elif IS_IN (librt) +# define CENABLE __librt_enable_asynccancel +# define CDISABLE __librt_disable_asynccancel +# else +# error Unsupported library +# endif + +#define STM_0 /* Nothing */ +#define STM_1 st %r2,8(%r15); +#define STM_2 stm %r2,%r3,8(%r15); +#define STM_3 stm %r2,%r4,8(%r15); +#define STM_4 stm %r2,%r5,8(%r15); +#define STM_5 stm %r2,%r5,8(%r15); +#define STM_6 stm %r2,%r7,8(%r15); + +#define LM_0 /* Nothing */ +#define LM_1 l %r2,8+96(%r15); +#define LM_2 lm %r2,%r3,8+96(%r15); +#define LM_3 lm %r2,%r4,8+96(%r15); +#define LM_4 lm %r2,%r5,8+96(%r15); +#define LM_5 lm %r2,%r5,8+96(%r15); +#define LM_6 lm %r2,%r5,8+96(%r15); \ + cfi_offset (%r7, -68); \ + l %r7,96+96(%r15); + +#define LR7_0 /* Nothing */ +#define LR7_1 /* Nothing */ +#define LR7_2 /* Nothing */ +#define LR7_3 /* Nothing */ +#define LR7_4 /* Nothing */ +#define LR7_5 /* Nothing */ +#define LR7_6 l %r7,28+96(%r15); \ + cfi_restore (%r7); + +# ifndef __ASSEMBLER__ +# define SINGLE_THREAD_P \ + __builtin_expect (THREAD_GETMEM (THREAD_SELF, \ + header.multiple_threads) == 0, 1) +# else +# define SINGLE_THREAD_P(reg) \ + ear reg,%a0; \ + icm reg,15,MULTIPLE_THREADS_OFFSET(reg); +# endif + +#elif !defined __ASSEMBLER__ + +# define SINGLE_THREAD_P (1) +# define NO_CANCELLATION 1 + +#endif + +#ifndef __ASSEMBLER__ +# define RTLD_SINGLE_THREAD_P \ + __builtin_expect (THREAD_GETMEM (THREAD_SELF, \ + header.multiple_threads) == 0, 1) +#endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S new file mode 100644 index 0000000000..e07fd48488 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S @@ -0,0 +1,74 @@ +/* Copyright (C) 2000-2017 Free Software Foundation, Inc. + Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have 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> + +/* The following code is only used in the shared library when we + compile the reentrant version. Otherwise each system call defines + each own version. */ + +/* The syscall stubs jump here when they detect an error. */ + +#undef CALL_MCOUNT +#define CALL_MCOUNT + + .text +ENTRY(__syscall_error) +#ifndef PIC +# if IS_IN (libc) +# define SYSCALL_ERROR_ERRNO __libc_errno +# else +# define SYSCALL_ERROR_ERRNO errno +# endif + basr %r1,0 +0: l %r1,1f-0b(%r1) + ear %r3,%a0 + lcr %r2,%r2 + st %r2,0(%r1,%r3) + lhi %r2,-1 + br %r14 +1: .long SYSCALL_ERROR_ERRNO@ntpoff +#else +# if RTLD_PRIVATE_ERRNO + basr %r1,0 +0: al %r1,1f-0b(%r1) + lcr %r2,%r2 + st %r2,0(%r1) + lhi %r2,-1 + br %r14 +1: .long rtld_errno - 0b +# else +# if IS_IN (libc) +# define SYSCALL_ERROR_ERRNO __libc_errno +# else +# define SYSCALL_ERROR_ERRNO errno +# endif + basr %r1,0 +0: al %r1,1f-0b(%r1) + ear %r3,%a0 + l %r1,SYSCALL_ERROR_ERRNO@gotntpoff(%r1) + lcr %r2,%r2 + st %r2,0(%r1,%r3) + lhi %r2,-1 + br %r14 +1: .long _GLOBAL_OFFSET_TABLE_-0b +# endif +#endif + +END (__syscall_error) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h new file mode 100644 index 0000000000..e56fc3234f --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h @@ -0,0 +1,337 @@ +/* Copyright (C) 2000-2017 Free Software Foundation, Inc. + Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have 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_S390_SYSDEP_H +#define _LINUX_S390_SYSDEP_H + +#include <sysdeps/s390/s390-32/sysdep.h> +#include <sysdeps/unix/sysdep.h> +#include <sysdeps/unix/sysv/linux/sysdep.h> +#include <dl-sysdep.h> /* For RTLD_PRIVATE_ERRNO. */ +#include <tls.h> + +/* Define __set_errno() for INLINE_SYSCALL macro below. */ +#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. */ +/* in newer 2.1 kernels __NR_syscall is missing so we define it here */ +#define __NR_syscall 0 + +#undef SYS_ify +#define SYS_ify(syscall_name) __NR_##syscall_name + +#ifdef __ASSEMBLER__ + +/* Linux uses a negative return value to indicate syscall errors, unlike + most Unices, which use the condition codes' carry flag. + + Since version 2.1 the return value of a system call might be negative + even if the call succeeded. E.g., the `lseek' system call might return + a large offset. Therefore we must not anymore test for < 0, but test + for a real error by making sure the value in gpr2 is a real error + number. Linus said he will make sure that no syscall returns a value + in -1 .. -4095 as a valid result so we can savely test with -4095. */ + +#undef PSEUDO +#define PSEUDO(name, syscall_name, args) \ + .text; \ + ENTRY (name) \ + DO_CALL (syscall_name, args); \ + lhi %r4,-4095 ; \ + clr %r2,%r4 ; \ + jnl SYSCALL_ERROR_LABEL + +#undef PSEUDO_END +#define PSEUDO_END(name) \ + SYSCALL_ERROR_HANDLER; \ + END (name) + +#undef PSEUDO_NOERRNO +#define PSEUDO_NOERRNO(name, syscall_name, args) \ + .text; \ + ENTRY (name) \ + DO_CALL (syscall_name, args) + +#undef PSEUDO_END_NOERRNO +#define PSEUDO_END_NOERRNO(name) \ + END (name) + +#undef PSEUDO_ERRVAL +#define PSEUDO_ERRVAL(name, syscall_name, args) \ + .text; \ + ENTRY (name) \ + DO_CALL (syscall_name, args); \ + lcr %r2,%r2 + +#undef PSEUDO_END_ERRVAL +#define PSEUDO_END_ERRVAL(name) \ + END (name) + +#ifndef PIC +# define SYSCALL_ERROR_LABEL 0f +# define SYSCALL_ERROR_HANDLER \ +0: basr %r1,0; \ +1: l %r1,2f-1b(%r1); \ + br %r1; \ +2: .long syscall_error +#else +# if RTLD_PRIVATE_ERRNO +# define SYSCALL_ERROR_LABEL 0f +# define SYSCALL_ERROR_HANDLER \ +0: basr %r1,0; \ +1: al %r1,2f-1b(%r1); \ + lcr %r2,%r2; \ + st %r2,0(%r1); \ + lhi %r2,-1; \ + br %r14; \ +2: .long rtld_errno-1b +# elif defined _LIBC_REENTRANT +# if IS_IN (libc) +# define SYSCALL_ERROR_ERRNO __libc_errno +# else +# define SYSCALL_ERROR_ERRNO errno +# endif +# define SYSCALL_ERROR_LABEL 0f +# define SYSCALL_ERROR_HANDLER \ +0: lcr %r0,%r2; \ + basr %r1,0; \ +1: al %r1,2f-1b(%r1); \ + l %r1,SYSCALL_ERROR_ERRNO@gotntpoff(%r1); \ + ear %r2,%a0; \ + st %r0,0(%r1,%r2); \ + lhi %r2,-1; \ + br %r14; \ +2: .long _GLOBAL_OFFSET_TABLE_-1b +# else +# define SYSCALL_ERROR_LABEL 0f +# define SYSCALL_ERROR_HANDLER \ +0: basr %r1,0; \ +1: al %r1,2f-1b(%r1); \ + l %r1,errno@GOT(%r1); \ + lcr %r2,%r2; \ + st %r2,0(%r1); \ + lhi %r2,-1; \ + br %r14; \ +2: .long _GLOBAL_OFFSET_TABLE_-1b +# endif /* _LIBC_REENTRANT */ +#endif /* PIC */ + +/* Linux takes system call arguments in registers: + + syscall number 1 call-clobbered + arg 1 2 call-clobbered + arg 2 3 call-clobbered + arg 3 4 call-clobbered + arg 4 5 call-clobbered + arg 5 6 call-saved + arg 6 7 call-saved + + (Of course a function with say 3 arguments does not have entries for + arguments 4 and 5.) + For system calls with 6 parameters a stack operation is required + to load the 6th parameter to register 7. Call saved register 7 is + moved to register 0 and back to avoid an additional stack frame. + */ + +#define DO_CALL(syscall, args) \ + .if args > 5; \ + lr %r0,%r7; \ + l %r7,96(%r15); \ + .endif; \ + .if SYS_ify (syscall) < 256; \ + svc SYS_ify (syscall); \ + .else; \ + lhi %r1,SYS_ify (syscall); \ + svc 0; \ + .endif; \ + .if args > 5; \ + lr %r7,%r0; \ + .endif + +#define ret \ + br 14 + +#define ret_NOERRNO \ + br 14 + +#define ret_ERRVAL \ + br 14 + +#endif /* __ASSEMBLER__ */ + +#undef INLINE_SYSCALL +#define INLINE_SYSCALL(name, nr, args...) \ + ({ \ + unsigned int _ret = INTERNAL_SYSCALL (name, , nr, args); \ + if (__glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (_ret, ))) \ + { \ + __set_errno (INTERNAL_SYSCALL_ERRNO (_ret, )); \ + _ret = 0xffffffff; \ + } \ + (int) _ret; }) + +#undef INTERNAL_SYSCALL_DECL +#define INTERNAL_SYSCALL_DECL(err) do { } while (0) + +#undef INTERNAL_SYSCALL_DIRECT +#define INTERNAL_SYSCALL_DIRECT(name, err, nr, args...) \ + ({ \ + DECLARGS_##nr(args) \ + register int _ret __asm__("2"); \ + __asm__ __volatile__ ( \ + "svc %b1\n\t" \ + : "=d" (_ret) \ + : "i" (__NR_##name) ASMFMT_##nr \ + : "memory" ); \ + _ret; }) + +#undef INTERNAL_SYSCALL_SVC0 +#define INTERNAL_SYSCALL_SVC0(name, err, nr, args...) \ + ({ \ + DECLARGS_##nr(args) \ + register unsigned long _nr __asm__("1") = (unsigned long)(__NR_##name); \ + register int _ret __asm__("2"); \ + __asm__ __volatile__ ( \ + "svc 0\n\t" \ + : "=d" (_ret) \ + : "d" (_nr) ASMFMT_##nr \ + : "memory" ); \ + _ret; }) + +#undef INTERNAL_SYSCALL_NCS +#define INTERNAL_SYSCALL_NCS(no, err, nr, args...) \ + ({ \ + DECLARGS_##nr(args) \ + register unsigned long _nr __asm__("1") = (unsigned long)(no); \ + register int _ret __asm__("2"); \ + __asm__ __volatile__ ( \ + "svc 0\n\t" \ + : "=d" (_ret) \ + : "d" (_nr) ASMFMT_##nr \ + : "memory" ); \ + _ret; }) + +#undef INTERNAL_SYSCALL +#define INTERNAL_SYSCALL(name, err, nr, args...) \ + (((__NR_##name) < 256) ? \ + INTERNAL_SYSCALL_DIRECT(name, err, nr, args) : \ + INTERNAL_SYSCALL_SVC0(name, err,nr, args)) + +#undef INTERNAL_SYSCALL_ERROR_P +#define INTERNAL_SYSCALL_ERROR_P(val, err) \ + ((unsigned int) (val) >= 0xfffff001u) + +#undef INTERNAL_SYSCALL_ERRNO +#define INTERNAL_SYSCALL_ERRNO(val, err) (-(val)) + +#define DECLARGS_0() +#define DECLARGS_1(arg1) \ + register unsigned long gpr2 __asm__ ("2") = (unsigned long)(arg1); +#define DECLARGS_2(arg1, arg2) \ + DECLARGS_1(arg1) \ + register unsigned long gpr3 __asm__ ("3") = (unsigned long)(arg2); +#define DECLARGS_3(arg1, arg2, arg3) \ + DECLARGS_2(arg1, arg2) \ + register unsigned long gpr4 __asm__ ("4") = (unsigned long)(arg3); +#define DECLARGS_4(arg1, arg2, arg3, arg4) \ + DECLARGS_3(arg1, arg2, arg3) \ + register unsigned long gpr5 __asm__ ("5") = (unsigned long)(arg4); +#define DECLARGS_5(arg1, arg2, arg3, arg4, arg5) \ + DECLARGS_4(arg1, arg2, arg3, arg4) \ + register unsigned long gpr6 __asm__ ("6") = (unsigned long)(arg5); +#define DECLARGS_6(arg1, arg2, arg3, arg4, arg5, arg6) \ + DECLARGS_5(arg1, arg2, arg3, arg4, arg5) \ + register unsigned long gpr7 __asm__ ("7") = (unsigned long)(arg6); + +#define ASMFMT_0 +#define ASMFMT_1 , "0" (gpr2) +#define ASMFMT_2 , "0" (gpr2), "d" (gpr3) +#define ASMFMT_3 , "0" (gpr2), "d" (gpr3), "d" (gpr4) +#define ASMFMT_4 , "0" (gpr2), "d" (gpr3), "d" (gpr4), "d" (gpr5) +#define ASMFMT_5 , "0" (gpr2), "d" (gpr3), "d" (gpr4), "d" (gpr5), "d" (gpr6) +#define ASMFMT_6 , "0" (gpr2), "d" (gpr3), "d" (gpr4), "d" (gpr5), "d" (gpr6), "d" (gpr7) + +#define CLOBBER_0 , "3", "4", "5" +#define CLOBBER_1 , "3", "4", "5" +#define CLOBBER_2 , "4", "5" +#define CLOBBER_3 , "5" +#define CLOBBER_4 +#define CLOBBER_5 +#define CLOBBER_6 + +/* List of system calls which are supported as vsyscalls. */ +#define HAVE_CLOCK_GETRES_VSYSCALL 1 +#define HAVE_CLOCK_GETTIME_VSYSCALL 1 +#define HAVE_GETTIMEOFDAY_VSYSCALL 1 +#define HAVE_GETCPU_VSYSCALL 1 + +/* This version is for internal uses when there is no desire + to set errno */ +#define INTERNAL_VSYSCALL_NO_SYSCALL_FALLBACK(name, err, nr, args...) \ + ({ \ + long int _ret = ENOSYS; \ + \ + __typeof (__vdso_##name) vdsop = __vdso_##name; \ + PTR_DEMANGLE (vdsop); \ + if (vdsop != NULL) \ + _ret = INTERNAL_VSYSCALL_CALL (vdsop, err, nr, ##args); \ + else \ + err = 1 << 28; \ + _ret; \ + }) + +#define INTERNAL_VSYSCALL_CALL(fn, err, nr, args...) \ + ({ \ + DECLARGS_##nr(args) \ + register long _ret __asm__("2"); \ + __asm__ __volatile__ ( \ + "lr 10,14\n\t" \ + "basr 14,%1\n\t" \ + "lr 14,10\n\t" \ + : "=d" (_ret) \ + : "d" (fn) ASMFMT_##nr \ + : "cc", "memory", "0", "1", "10" CLOBBER_##nr); \ + _ret; }) + +/* Pointer mangling support. */ +#if IS_IN (rtld) +/* We cannot use the thread descriptor because in ld.so we use setjmp + earlier than the descriptor is initialized. */ +#else +/* For the time being just use stack_guard rather than a separate + pointer_guard. */ +# ifdef __ASSEMBLER__ +# define PTR_MANGLE(reg, tmpreg) \ + ear tmpreg,%a0; \ + x reg,STACK_GUARD(tmpreg) +# define PTR_MANGLE2(reg, tmpreg) \ + x reg,STACK_GUARD(tmpreg) +# define PTR_DEMANGLE(reg, tmpreg) PTR_MANGLE (reg, tmpreg) +# else +# define PTR_MANGLE(var) \ + (var) = (void *) ((uintptr_t) (var) ^ THREAD_GET_POINTER_GUARD ()) +# define PTR_DEMANGLE(var) PTR_MANGLE (var) +# endif +#endif + +#endif /* _LINUX_S390_SYSDEP_H */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/updwtmp.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/updwtmp.c new file mode 100644 index 0000000000..b40abd5dd8 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/updwtmp.c @@ -0,0 +1,32 @@ +/* Copyright (C) 2008-2017 Free Software Foundation, Inc. + Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have 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 <utmp.h> + +#include "utmp-compat.h" +#include "utmp-private.h" + +#if defined SHARED +# undef weak_alias +# define weak_alias(n,a) +#endif +#include "sysdeps/gnu/updwtmp.c" + +#if defined SHARED +default_symbol_version (__updwtmp, updwtmp, UTMP_COMPAT_BASE); +#endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/updwtmpx.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/updwtmpx.c new file mode 100644 index 0000000000..a344fb1e2b --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/updwtmpx.c @@ -0,0 +1,30 @@ +/* Copyright (C) 2008-2017 Free Software Foundation, Inc. + Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have 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 <utmp.h> +#include <utmpx.h> + +#include "utmp-compat.h" + +#undef weak_alias +#define weak_alias(n,a) +#define updwtmpx __updwtmpx +#include "login/updwtmpx.c" +#undef updwtmpx + +default_symbol_version (__updwtmpx, updwtmpx, UTMP_COMPAT_BASE); diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/utmp-compat.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/utmp-compat.h new file mode 100644 index 0000000000..fe54c23e6b --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/utmp-compat.h @@ -0,0 +1,21 @@ +/* Copyright (C) 2008-2017 Free Software Foundation, Inc. + Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have 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 macro defines the glibc version tag at which the 64 bit struct + utmp functions have been added to the 32 bit glibc. */ +#define UTMP_COMPAT_BASE GLIBC_2.9 diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/utmp-convert.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/utmp-convert.h new file mode 100644 index 0000000000..5a2af614c9 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/utmp-convert.h @@ -0,0 +1,86 @@ +/* Copyright (C) 2008-2017 Free Software Foundation, Inc. + Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + + +/* This file provides functions converting between the 32 and 64 bit + struct utmp variants. */ + +#ifndef _UTMP_CONVERT_H +#define _UTMP_CONVERT_H 1 + +#include <string.h> + +#include "utmp32.h" + +/* Convert the 64 bit struct utmp value in FROM to the 32 bit version + returned in TO. */ +static inline void +utmp_convert64to32 (const struct utmp *from, struct utmp32 *to) +{ +#if _HAVE_UT_TYPE - 0 + to->ut_type = from->ut_type; +#endif +#if _HAVE_UT_PID - 0 + to->ut_pid = from->ut_pid; +#endif + memcpy (to->ut_line, from->ut_line, UT_LINESIZE); + memcpy (to->ut_user, from->ut_user, UT_NAMESIZE); +#if _HAVE_UT_ID - 0 + memcpy (to->ut_id, from->ut_id, 4); +#endif +#if _HAVE_UT_HOST - 0 + memcpy (to->ut_host, from->ut_host, UT_HOSTSIZE); +#endif + to->ut_exit = from->ut_exit; + to->ut_session = (int32_t) from->ut_session; +#if _HAVE_UT_TV - 0 + to->ut_tv.tv_sec = (int32_t) from->ut_tv.tv_sec; + to->ut_tv.tv_usec = (int32_t) from->ut_tv.tv_usec; +#endif + memcpy (to->ut_addr_v6, from->ut_addr_v6, 4 * 4); +} + +/* Convert the 32 bit struct utmp value in FROM to the 64 bit version + returned in TO. */ +static inline void +utmp_convert32to64 (const struct utmp32 *from, struct utmp *to) +{ +#if _HAVE_UT_TYPE - 0 + to->ut_type = from->ut_type; +#endif +#if _HAVE_UT_PID - 0 + to->ut_pid = from->ut_pid; +#endif + memcpy (to->ut_line, from->ut_line, UT_LINESIZE); + memcpy (to->ut_user, from->ut_user, UT_NAMESIZE); +#if _HAVE_UT_ID - 0 + memcpy (to->ut_id, from->ut_id, 4); +#endif +#if _HAVE_UT_HOST - 0 + memcpy (to->ut_host, from->ut_host, UT_HOSTSIZE); +#endif + to->ut_exit = from->ut_exit; + to->ut_session = (int64_t) from->ut_session; +#if _HAVE_UT_TV - 0 + to->ut_tv.tv_sec = (int64_t) from->ut_tv.tv_sec; + to->ut_tv.tv_usec = (int64_t) from->ut_tv.tv_usec; +#endif + memcpy (to->ut_addr_v6, from->ut_addr_v6, 4 * 4); +} + +#endif /* utmp-convert.h */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/utmp32.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/utmp32.c new file mode 100644 index 0000000000..eb8a478a82 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/utmp32.c @@ -0,0 +1,184 @@ +/* Copyright (C) 2008-2017 Free Software Foundation, Inc. + Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sys/types.h> +#include <utmp.h> +#include <errno.h> +#include <libc-symbols.h> + +#include "utmp32.h" +#include "utmp-convert.h" + +/* Allocate a static buffer to be returned to the caller. As well as + with the existing version of these functions the caller has to be + aware that the contents of this buffer will change with subsequent + calls. */ +#define ALLOCATE_UTMP32_OUT(OUT) \ + static struct utmp32 *OUT = NULL; \ + \ + if (OUT == NULL) \ + { \ + OUT = malloc (sizeof (struct utmp32)); \ + if (OUT == NULL) \ + return NULL; \ + } + +/* Perform a lookup for a utmp entry matching FIELD using function + FUNC. FIELD is converted to a 64 bit utmp and the result is + converted back to 32 bit utmp. */ +#define ACCESS_UTMP_ENTRY(FUNC, FIELD) \ + struct utmp in64; \ + struct utmp *out64; \ + ALLOCATE_UTMP32_OUT (out32); \ + \ + utmp_convert32to64 (FIELD, &in64); \ + out64 = FUNC (&in64); \ + \ + if (out64 == NULL) \ + return NULL; \ + \ + utmp_convert64to32 (out64, out32); \ + \ + return out32; + +/* Search forward from the current point in the utmp file until the + next entry with a ut_type matching ID->ut_type. */ +struct utmp32 * +getutid32 (const struct utmp32 *id) +{ + ACCESS_UTMP_ENTRY (__getutid, id) +} +symbol_version (getutid32, getutid, GLIBC_2.0); + +/* Search forward from the current point in the utmp file until the + next entry with a ut_line matching LINE->ut_line. */ +struct utmp32 * +getutline32 (const struct utmp32 *line) +{ + ACCESS_UTMP_ENTRY (__getutline, line) +} +symbol_version (getutline32, getutline, GLIBC_2.0); + +/* Write out entry pointed to by UTMP_PTR into the utmp file. */ +struct utmp32 * +pututline32 (const struct utmp32 *utmp_ptr) +{ + ACCESS_UTMP_ENTRY (__pututline, utmp_ptr) +} +symbol_version (pututline32, pututline, GLIBC_2.0); + +/* Read next entry from a utmp-like file. */ +struct utmp32 * +getutent32 (void) +{ + struct utmp *out64; + ALLOCATE_UTMP32_OUT (out32); + + out64 = __getutent (); + if (!out64) + return NULL; + + utmp_convert64to32 (out64, out32); + return out32; +} +symbol_version (getutent32, getutent, GLIBC_2.0); + +/* Reentrant versions of the file for handling utmp files. */ + +int +getutent32_r (struct utmp32 *buffer, struct utmp32 **result) +{ + struct utmp out64; + struct utmp *out64p; + int ret; + + ret = __getutent_r (&out64, &out64p); + if (ret == -1) + { + *result = NULL; + return -1; + } + + utmp_convert64to32 (out64p, buffer); + *result = buffer; + + return 0; +} +symbol_version (getutent32_r, getutent_r, GLIBC_2.0); + +int +getutid32_r (const struct utmp32 *id, struct utmp32 *buffer, + struct utmp32 **result) +{ + struct utmp in64; + struct utmp out64; + struct utmp *out64p; + int ret; + + utmp_convert32to64 (id, &in64); + + ret = __getutid_r (&in64, &out64, &out64p); + if (ret == -1) + { + *result = NULL; + return -1; + } + + utmp_convert64to32 (out64p, buffer); + *result = buffer; + + return 0; +} +symbol_version (getutid32_r, getutid_r, GLIBC_2.0); + +int +getutline32_r (const struct utmp32 *line, + struct utmp32 *buffer, struct utmp32 **result) +{ + struct utmp in64; + struct utmp out64; + struct utmp *out64p; + int ret; + + utmp_convert32to64 (line, &in64); + + ret = __getutline_r (&in64, &out64, &out64p); + if (ret == -1) + { + *result = NULL; + return -1; + } + + utmp_convert64to32 (out64p, buffer); + *result = buffer; + + return 0; + +} +symbol_version (getutline32_r, getutline_r, GLIBC_2.0); + +/* Append entry UTMP to the wtmp-like file WTMP_FILE. */ +void +updwtmp32 (const char *wtmp_file, const struct utmp32 *utmp) +{ + struct utmp in32; + + utmp_convert32to64 (utmp, &in32); + __updwtmp (wtmp_file, &in32); +} +symbol_version (updwtmp32, updwtmp, GLIBC_2.0); diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/utmp32.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/utmp32.h new file mode 100644 index 0000000000..d5019292c1 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/utmp32.h @@ -0,0 +1,51 @@ +/* The `struct utmp' type, describing entries in the utmp file. GNU version. + Copyright (C) 1993-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 _UTMP32_H +#define _UTMP32_H 1 + +#include <paths.h> +#include <sys/time.h> +#include <sys/types.h> +#include <bits/wordsize.h> +#include <utmp.h> + +/* The structure describing an entry in the user accounting database. */ +struct utmp32 +{ + short int ut_type; /* Type of login. */ + pid_t ut_pid; /* Process ID of login process. */ + char ut_line[UT_LINESIZE]; /* Devicename. */ + char ut_id[4]; /* Inittab ID. */ + char ut_user[UT_NAMESIZE]; /* Username. */ + char ut_host[UT_HOSTSIZE]; /* Hostname for remote login. */ + struct exit_status ut_exit; /* Exit status of a process marked + as DEAD_PROCESS. */ + int32_t ut_session; /* Session ID, used for windowing. */ + struct + { + int32_t tv_sec; /* Seconds. */ + int32_t tv_usec; /* Microseconds. */ + } ut_tv; /* Time entry was made. */ + + int32_t ut_addr_v6[4]; /* Internet address of remote host. */ + char __glibc_reserved[20]; /* Reserved for future use. */ +}; + + +#endif /* utmp32.h */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/utmpx-convert.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/utmpx-convert.h new file mode 100644 index 0000000000..c10bd165aa --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/utmpx-convert.h @@ -0,0 +1,85 @@ +/* Copyright (C) 2008-2017 Free Software Foundation, Inc. + Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + + +/* This file provides functions converting between the 32 and 64 bit + struct utmp variants. */ + +#ifndef _UTMPX_CONVERT_H +#define _UTMPX_CONVERT_H 1 + +#include <string.h> +#include "utmpx32.h" + +/* Convert the 64 bit struct utmpx value in FROM to the 32 bit version + returned in TO. */ +static inline void +utmpx_convert64to32 (const struct utmpx *from, struct utmpx32 *to) +{ +#if _HAVE_UT_TYPE - 0 + to->ut_type = from->ut_type; +#endif +#if _HAVE_UT_PID - 0 + to->ut_pid = from->ut_pid; +#endif + memcpy (to->ut_line, from->ut_line, __UT_LINESIZE); + memcpy (to->ut_user, from->ut_user, __UT_NAMESIZE); +#if _HAVE_UT_ID - 0 + memcpy (to->ut_id, from->ut_id, 4); +#endif +#if _HAVE_UT_HOST - 0 + memcpy (to->ut_host, from->ut_host, __UT_HOSTSIZE); +#endif + to->ut_exit = from->ut_exit; + to->ut_session = (int32_t) from->ut_session; +#if _HAVE_UT_TV - 0 + to->ut_tv.tv_sec = (int32_t) from->ut_tv.tv_sec; + to->ut_tv.tv_usec = (int32_t) from->ut_tv.tv_usec; +#endif + memcpy (to->ut_addr_v6, from->ut_addr_v6, 4 * 4); +} + +/* Convert the 32 bit struct utmpx value in FROM to the 64 bit version + returned in TO. */ +static inline void +utmpx_convert32to64 (const struct utmpx32 *from, struct utmpx *to) +{ +#if _HAVE_UT_TYPE - 0 + to->ut_type = from->ut_type; +#endif +#if _HAVE_UT_PID - 0 + to->ut_pid = from->ut_pid; +#endif + memcpy (to->ut_line, from->ut_line, __UT_LINESIZE); + memcpy (to->ut_user, from->ut_user, __UT_NAMESIZE); +#if _HAVE_UT_ID - 0 + memcpy (to->ut_id, from->ut_id, 4); +#endif +#if _HAVE_UT_HOST - 0 + memcpy (to->ut_host, from->ut_host, __UT_HOSTSIZE); +#endif + to->ut_exit = from->ut_exit; + to->ut_session = (int64_t) from->ut_session; +#if _HAVE_UT_TV - 0 + to->ut_tv.tv_sec = (int64_t) from->ut_tv.tv_sec; + to->ut_tv.tv_usec = (int64_t) from->ut_tv.tv_usec; +#endif + memcpy (to->ut_addr_v6, from->ut_addr_v6, 4 * 4); +} + +#endif /* utmpx-convert.h */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.c new file mode 100644 index 0000000000..eb312f6bdb --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.c @@ -0,0 +1,139 @@ +/* Copyright (C) 2008-2017 Free Software Foundation, Inc. + Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sys/types.h> +#include <utmp.h> +#include <errno.h> +#include <libc-symbols.h> + +#include "utmp32.h" +#include "utmp-convert.h" + +#include "utmpx32.h" +#include "utmpx-convert.h" + +/* Allocate a static buffer to be returned to the caller. As well as + with the existing version of these functions the caller has to be + aware that the contents of this buffer will change with subsequent + calls. */ +#define ALLOCATE_UTMPX32_OUT(OUT) \ + static struct utmpx32 *OUT = NULL; \ + \ + if (OUT == NULL) \ + { \ + OUT = malloc (sizeof (struct utmpx32)); \ + if (OUT == NULL) \ + return NULL; \ + } + +/* Perform a lookup for a utmpx entry matching FIELD using function + FUNC. FIELD is converted to a 64 bit utmpx and the result is + converted back to 32 bit utmpx. */ +#define ACCESS_UTMPX_ENTRY(FUNC, FIELD) \ + struct utmpx in64; \ + struct utmpx *out64; \ + ALLOCATE_UTMPX32_OUT (out32); \ + \ + utmpx_convert32to64 (FIELD, &in64); \ + out64 = FUNC (&in64); \ + \ + if (out64 == NULL) \ + return NULL; \ + \ + utmpx_convert64to32 (out64, out32); \ + \ + return out32; + + +/* Get the next entry from the user accounting database. */ +struct utmpx32 * +getutxent32 (void) +{ + struct utmpx *out64; + ALLOCATE_UTMPX32_OUT (out32); + + out64 = __getutxent (); + if (!out64) + return NULL; + + utmpx_convert64to32 (out64, out32); + return out32; + +} +symbol_version (getutxent32, getutxent, GLIBC_2.1); + +/* Get the user accounting database entry corresponding to ID. */ +struct utmpx32 * +getutxid32 (const struct utmpx32 *id) +{ + ACCESS_UTMPX_ENTRY (__getutxid, id); +} +symbol_version (getutxid32, getutxid, GLIBC_2.1); + +/* Get the user accounting database entry corresponding to LINE. */ +struct utmpx32 * +getutxline32 (const struct utmpx32 *line) +{ + ACCESS_UTMPX_ENTRY (__getutxline, line); +} +symbol_version (getutxline32, getutxline, GLIBC_2.1); + +/* Write the entry UTMPX into the user accounting database. */ +struct utmpx32 * +pututxline32 (const struct utmpx32 *utmpx) +{ + ACCESS_UTMPX_ENTRY (__pututxline, utmpx); +} +symbol_version (pututxline32, pututxline, GLIBC_2.1); + +/* Append entry UTMP to the wtmpx-like file WTMPX_FILE. */ +void +updwtmpx32 (const char *wtmpx_file, const struct utmpx32 *utmpx) +{ + struct utmpx in64; + + utmpx_convert32to64 (utmpx, &in64); + __updwtmpx (wtmpx_file, &in64); +} +symbol_version (updwtmpx32, updwtmpx, GLIBC_2.1); + +/* Copy the information in UTMPX to UTMP. */ +void +getutmp32 (const struct utmpx32 *utmpx, struct utmp32 *utmp) +{ + struct utmpx in64; + struct utmp out64; + + utmpx_convert32to64 (utmpx, &in64); + __getutmp (&in64, &out64); + utmp_convert64to32 (&out64, utmp); +} +symbol_version (getutmp32, getutmp, GLIBC_2.1.1); + +/* Copy the information in UTMP to UTMPX. */ +void +getutmpx32 (const struct utmp32 *utmp, struct utmpx32 *utmpx) +{ + struct utmp in64; + struct utmpx out64; + + utmp_convert32to64 (utmp, &in64); + __getutmpx (&in64, &out64); + utmpx_convert64to32 (&out64, utmpx); +} +symbol_version (getutmpx32, getutmpx, GLIBC_2.1.1); diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.h new file mode 100644 index 0000000000..ca5e60c3c4 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.h @@ -0,0 +1,59 @@ +/* The `struct utmp' type, describing entries in the utmp file. GNU version. + Copyright (C) 1993-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 _UTMPX32_H +#define _UTMPX32_H 1 + +#include <paths.h> +#include <sys/time.h> +#include <sys/types.h> +#include <bits/wordsize.h> +#include <utmpx.h> + +/* The structure describing an entry in the user accounting database. */ +struct utmpx32 +{ + short int ut_type; /* Type of login. */ + __pid_t ut_pid; /* Process ID of login process. */ + char ut_line[__UT_LINESIZE]; /* Devicename. */ + char ut_id[4]; /* Inittab ID. */ + char ut_user[__UT_NAMESIZE]; /* Username. */ + char ut_host[__UT_HOSTSIZE]; /* Hostname for remote login. */ + struct __exit_status ut_exit; /* Exit status of a process marked + as DEAD_PROCESS. */ + __int64_t ut_session; /* Session ID, used for windowing. */ + struct + { + __int64_t tv_sec; /* Seconds. */ + __int64_t tv_usec; /* Microseconds. */ + } ut_tv; /* Time entry was made. */ + + __int32_t ut_addr_v6[4]; /* Internet address of remote host. */ + char __glibc_reserved[20]; /* Reserved for future use. */ +}; + +/* The internal interface needed by the compat wrapper functions. */ +extern struct utmpx *__getutxent (void); +extern struct utmpx *__getutxid (const struct utmpx *__id); +extern struct utmpx *__getutxline (const struct utmpx *__line); +extern struct utmpx *__pututxline (const struct utmpx *__utmpx); +extern void __updwtmpx (const char *__wtmpx_file, const struct utmpx *__utmpx); +extern void __getutmp (const struct utmpx *__utmpx, struct utmp *__utmp); +extern void __getutmpx (const struct utmp *__utmp, struct utmpx *__utmpx); + +#endif /* utmpx32.h */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/versionsort64.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/versionsort64.c new file mode 100644 index 0000000000..144b691e56 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/versionsort64.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/i386/versionsort64.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/vfork.S b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/vfork.S new file mode 100644 index 0000000000..4da2345836 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/vfork.S @@ -0,0 +1,47 @@ +/* Copyright (C) 2004-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Jakub Jelinek <jakub@redhat.com>, 2004. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have 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 <bits/wordsize.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 (__libc_vfork) + /* Do vfork system call. */ + svc SYS_ify (vfork) + + /* Check for error. */ + lhi %r4,-4095 + clr %r2,%r4 + jnl SYSCALL_ERROR_LABEL + + /* Normal return. */ + br %r14 +PSEUDO_END (__libc_vfork) + +#if IS_IN (libc) +weak_alias (__libc_vfork, vfork) +strong_alias (__libc_vfork, __vfork) +libc_hidden_def (__vfork) +#endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/xstat.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/xstat.c new file mode 100644 index 0000000000..e9869f5508 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-32/xstat.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/i386/xstat.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/Implies b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/Implies new file mode 100644 index 0000000000..8d91c80097 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/Implies @@ -0,0 +1 @@ +unix/sysv/linux/wordsize-64 diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/Makefile b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/Makefile new file mode 100644 index 0000000000..6795734747 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/Makefile @@ -0,0 +1,18 @@ +# See Makeconfig regarding the use of default-abi. +default-abi := 64 + +ifeq ($(subdir),misc) +sysdep_headers += sys/elf.h +endif + +ifeq ($(subdir),elf) +ifeq (yes,$(build-shared)) +# This is needed to support g++ v2 and v3. +sysdep_routines += framestate +shared-only-routines += framestate +endif +endif + +ifeq ($(subdir),stdlib) +sysdep_routines += __makecontext_ret +endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/Versions b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/Versions new file mode 100644 index 0000000000..3f4d960421 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/Versions @@ -0,0 +1,15 @@ +libc { + GLIBC_2.2 { + # Exception handling support functions from libgcc + __register_frame; __register_frame_table; __deregister_frame; + __frame_state_for; __register_frame_info_table; + } +} + +librt { + GLIBC_2.3.3 { + # Changed timer_t. + timer_create; timer_delete; timer_getoverrun; timer_gettime; + timer_settime; + } +} diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/____longjmp_chk.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/____longjmp_chk.c new file mode 100644 index 0000000000..7a4492c567 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/____longjmp_chk.c @@ -0,0 +1,54 @@ +/* Copyright (C) 2009-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Jakub Jelinek <jakub@redhat.com>. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <errno.h> +#include <sysdep.h> +#include <setjmp.h> +#include <bits/setjmp.h> +#include <stdlib.h> +#include <unistd.h> +#include <stdio.h> +#include <stdint.h> +#include <signal.h> +#include <sys/syscall.h> + +#define __longjmp ____longjmp_chk + +#define CHECK_SP(env, guard) \ + do \ + { \ + uintptr_t cur_sp; \ + uintptr_t new_sp = env->__gregs[9]; \ + __asm__ ("lgr %0, %%r15" : "=r" (cur_sp)); \ + new_sp ^= guard; \ + if (new_sp < cur_sp) \ + { \ + stack_t oss; \ + INTERNAL_SYSCALL_DECL (err); \ + int res = INTERNAL_SYSCALL (sigaltstack, err, 2, NULL, &oss); \ + if (!INTERNAL_SYSCALL_ERROR_P (res, err)) \ + { \ + if ((oss.ss_flags & SS_ONSTACK) == 0 \ + || ((uintptr_t) (oss.ss_sp + oss.ss_size) - new_sp \ + < oss.ss_size)) \ + __fortify_fail ("longjmp causes uninitialized stack frame");\ + } \ + } \ + } while (0) + +#include "__longjmp.c" diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/__makecontext_ret.S b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/__makecontext_ret.S new file mode 100644 index 0000000000..16901638b5 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/__makecontext_ret.S @@ -0,0 +1,37 @@ +/* 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> + +/* We do not want .eh_frame info so that __makecontext_ret stops unwinding + if backtrace was called within a context created by makecontext. (There + is also no .eh_frame info for _start or thread_start.) */ +#undef cfi_startproc +#define cfi_startproc +#undef cfi_endproc +#define cfi_endproc + +ENTRY(__makecontext_ret) + basr %r14,%r7 + ltgr %r8,%r8 /* Check whether uc_link is 0. */ + jz 1f + lgr %r2,%r8 + br %r9 +1: lghi %r2,0 + brasl %r14,HIDDEN_JUMPTARGET (exit) + j .+2 /* Trap if exit returns. */ +END(__makecontext_ret) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/c++-types.data b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/c++-types.data new file mode 100644 index 0000000000..23c11dc41b --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/c++-types.data @@ -0,0 +1,67 @@ +blkcnt64_t:l +blkcnt_t:l +blksize_t:l +caddr_t:Pc +clockid_t:i +clock_t:l +daddr_t:i +dev_t:m +fd_mask:l +fsblkcnt64_t:m +fsblkcnt_t:m +fsfilcnt64_t:m +fsfilcnt_t:m +fsid_t:8__fsid_t +gid_t:j +id_t:j +ino64_t:m +ino_t:m +int16_t:s +int32_t:i +int64_t:l +int8_t:a +intptr_t:l +key_t:i +loff_t:l +mode_t:j +nlink_t:m +off64_t:l +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:l +register_t:l +rlim64_t:m +rlim_t:m +sigset_t:10__sigset_t +size_t:m +socklen_t:j +ssize_t:l +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:m +u_int8_t:h +ulong:m +u_long:m +u_quad_t:m +useconds_t:j +ushort:t +u_short:t diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/clone.S b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/clone.S new file mode 100644 index 0000000000..daf8a58326 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/clone.S @@ -0,0 +1,66 @@ +/* Wrapper around clone system call. 64 bit S/390 version. + Copyright (C) 2001-2017 Free Software Foundation, Inc. + Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have 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 <tls.h> +#define _ERRNO_H 1 +#include <bits/errno.h> + +/* int __clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg, + pid_t *parent_tid, void *tls, pid_t *child_tid); */ +/* sys_clone (void *child_stack, unsigned long flags, + pid_t *parent_tid, pid_t *child_tid, void *tls); */ + + .text +ENTRY(__clone) + stg %r6,48(%r15) /* store %r6 to save area */ + cfi_offset (%r6,-112) + lgr %r0,%r5 /* move *arg out of the way */ + ltgr %r1,%r2 /* check fn and move to %r1 */ + jz error /* no NULL function pointers */ + ltgr %r2,%r3 /* check child_stack and move to %r2 */ + jz error /* no NULL stack pointers */ + lgr %r3,%r4 /* move flags to %r3 */ + lgr %r4,%r6 /* move parent_tid to %r4 */ + lg %r5,168(%r15) /* load child_tid from stack */ + lg %r6,160(%r15) /* load tls from stack */ + svc SYS_ify(clone) + ltgr %r2,%r2 /* check return code */ + jz thread_start + lg %r6,48(%r15) /* restore %r6 */ + jgm SYSCALL_ERROR_LABEL + br %r14 +error: + lghi %r2,-EINVAL + jg SYSCALL_ERROR_LABEL +PSEUDO_END (__clone) + +thread_start: + /* fn is in gpr 1, arg in gpr 0 */ + lgr %r2,%r0 /* set first parameter to void *arg */ + aghi %r15,-160 /* make room on the stack for the save area */ + xc 0(8,%r15),0(%r15) + basr %r14,%r1 /* jump to fn */ + DO_CALL (exit, 1) + +libc_hidden_def (__clone) +weak_alias (__clone, clone) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/configure b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/configure new file mode 100644 index 0000000000..7392cdfb42 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/configure @@ -0,0 +1,15 @@ +# This file is generated from configure.ac by Autoconf. DO NOT EDIT! + # Local configure fragment for sysdeps/unix/sysv/linux/s390/s390-64. + +test -n "$libc_cv_slibdir" || +case "$prefix" in +/usr | /usr/) + libc_cv_slibdir=/lib64 + libc_cv_rtlddir=/lib + if test "$libdir" = '${exec_prefix}/lib'; then + libdir='${exec_prefix}/lib64'; + # Locale data can be shared between 32-bit and 64-bit libraries. + libc_cv_complocaledir='${exec_prefix}/lib/locale' + fi + ;; +esac diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/configure.ac b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/configure.ac new file mode 100644 index 0000000000..8c75888b62 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/configure.ac @@ -0,0 +1,4 @@ +GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. +# Local configure fragment for sysdeps/unix/sysv/linux/s390/s390-64. + +LIBC_SLIBDIR_RTLDDIR([lib64], [lib]) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/dl-cache.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/dl-cache.h new file mode 100644 index 0000000000..391d1b72f3 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/dl-cache.h @@ -0,0 +1,24 @@ +/* Support for reading /etc/ld.so.cache files written by Linux ldconfig. + 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/>. */ + +#define _DL_CACHE_DEFAULT_ID 0x403 + +#define _dl_cache_check_flags(flags) \ + ((flags) == _DL_CACHE_DEFAULT_ID) + +#include_next <dl-cache.h> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/getcontext.S b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/getcontext.S new file mode 100644 index 0000000000..4b031aafdb --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/getcontext.S @@ -0,0 +1,89 @@ +/* Copyright (C) 2001-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#include <features.h> + +#include "ucontext_i.h" + +#include <shlib-compat.h> + +/* __getcontext (const ucontext_t *ucp) + + Saves the machine context in UCP such that when it is activated, + it appears as if __getcontext() returned again. + + This implementation is intended to be used for *synchronous* context + switches only. Therefore, it does not have to save anything + other than the PRESERVED state. */ + +ENTRY(__getcontext) + lgr %r1,%r2 + + /* rt_sigprocmask (SIG_BLOCK, NULL, &sc->sc_mask, sigsetsize). */ + la %r2,SIG_BLOCK + slgr %r3,%r3 + la %r4,SC_MASK(%r1) + lghi %r5,_NSIG8 + svc SYS_ify(rt_sigprocmask) + + /* Store fpu context. */ + stfpc SC_FPC(%r1) + std %f0,SC_FPRS(%r1) + std %f1,SC_FPRS+8(%r1) + std %f2,SC_FPRS+16(%r1) + std %f3,SC_FPRS+24(%r1) + std %f4,SC_FPRS+32(%r1) + std %f5,SC_FPRS+40(%r1) + std %f6,SC_FPRS+48(%r1) + std %f7,SC_FPRS+56(%r1) + std %f8,SC_FPRS+64(%r1) + std %f9,SC_FPRS+72(%r1) + std %f10,SC_FPRS+80(%r1) + std %f11,SC_FPRS+88(%r1) + std %f12,SC_FPRS+96(%r1) + std %f13,SC_FPRS+104(%r1) + std %f14,SC_FPRS+112(%r1) + std %f15,SC_FPRS+120(%r1) + + /* Set __getcontext return value to 0. */ + slgr %r2,%r2 + + /* Store access registers. */ + stam %a0,%a15,SC_ACRS(%r1) + + /* Store general purpose registers. */ + stmg %r0,%r15,SC_GPRS(%r1) + + /* Return. */ + br %r14 +END(__getcontext) + +#if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_19, GLIBC_2_20) +/* In glibc release 2.19 a new version of getcontext was introduced, + but was reverted before 2.20. Thus both versions are the same function. */ +weak_alias (__getcontext, __v1__getcontext) +weak_alias (__getcontext, __v2__getcontext) +versioned_symbol (libc, __v1__getcontext, getcontext, GLIBC_2_1) +compat_symbol (libc, __v2__getcontext, getcontext, GLIBC_2_19) + +#else + +weak_alias (__getcontext, getcontext) + +#endif /* !(defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_19, GLIBC_2_20)) */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/kernel_stat.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/kernel_stat.h new file mode 100644 index 0000000000..945c02930c --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/kernel_stat.h @@ -0,0 +1,21 @@ +/* Definition of `struct stat' used in the kernel. + 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/>. */ + +#define STAT_IS_KERNEL_STAT 1 +#define XSTAT_IS_XSTAT64 1 +#define STATFS_IS_STATFS64 0 diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/ld.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/ld.abilist new file mode 100644 index 0000000000..5e604f5376 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/ld.abilist @@ -0,0 +1,11 @@ +GLIBC_2.2 GLIBC_2.2 A +GLIBC_2.2 __libc_stack_end D 0x8 +GLIBC_2.2 _dl_mcount F +GLIBC_2.2 _r_debug D 0x28 +GLIBC_2.2 calloc F +GLIBC_2.2 free F +GLIBC_2.2 malloc F +GLIBC_2.2 realloc F +GLIBC_2.3 GLIBC_2.3 A +GLIBC_2.3 __tls_get_offset F +GLIBC_2.4 GLIBC_2.4 A diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/libBrokenLocale.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/libBrokenLocale.abilist new file mode 100644 index 0000000000..21343df781 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/libBrokenLocale.abilist @@ -0,0 +1,2 @@ +GLIBC_2.2 GLIBC_2.2 A +GLIBC_2.2 __ctype_get_mb_cur_max F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist new file mode 100644 index 0000000000..b1b2b29c94 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist @@ -0,0 +1,2360 @@ +GCC_3.0 GCC_3.0 A +GCC_3.0 _Unwind_Find_FDE F +GCC_3.0 __deregister_frame_info_bases F +GCC_3.0 __register_frame_info_bases F +GCC_3.0 __register_frame_info_table_bases F +GLIBC_2.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 fallocate64 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 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 0x438 +GLIBC_2.12 _sys_nerr D 0x4 +GLIBC_2.12 ntp_gettimex F +GLIBC_2.12 recvmmsg F +GLIBC_2.12 sys_errlist D 0x438 +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.19 GLIBC_2.19 A +GLIBC_2.19 __longjmp_chk F +GLIBC_2.19 __sigsetjmp F +GLIBC_2.19 _longjmp F +GLIBC_2.19 _setjmp F +GLIBC_2.19 getcontext F +GLIBC_2.19 longjmp F +GLIBC_2.19 setjmp F +GLIBC_2.19 siglongjmp F +GLIBC_2.2 GLIBC_2.2 A +GLIBC_2.2 _Exit F +GLIBC_2.2 _IO_2_1_stderr_ D 0xe0 +GLIBC_2.2 _IO_2_1_stdin_ D 0xe0 +GLIBC_2.2 _IO_2_1_stdout_ D 0xe0 +GLIBC_2.2 _IO_adjust_column F +GLIBC_2.2 _IO_adjust_wcolumn F +GLIBC_2.2 _IO_default_doallocate F +GLIBC_2.2 _IO_default_finish F +GLIBC_2.2 _IO_default_pbackfail F +GLIBC_2.2 _IO_default_uflow F +GLIBC_2.2 _IO_default_xsgetn F +GLIBC_2.2 _IO_default_xsputn F +GLIBC_2.2 _IO_do_write F +GLIBC_2.2 _IO_doallocbuf F +GLIBC_2.2 _IO_fclose F +GLIBC_2.2 _IO_fdopen F +GLIBC_2.2 _IO_feof F +GLIBC_2.2 _IO_ferror F +GLIBC_2.2 _IO_fflush F +GLIBC_2.2 _IO_fgetpos F +GLIBC_2.2 _IO_fgetpos64 F +GLIBC_2.2 _IO_fgets F +GLIBC_2.2 _IO_file_attach F +GLIBC_2.2 _IO_file_close F +GLIBC_2.2 _IO_file_close_it F +GLIBC_2.2 _IO_file_doallocate F +GLIBC_2.2 _IO_file_finish F +GLIBC_2.2 _IO_file_fopen F +GLIBC_2.2 _IO_file_init F +GLIBC_2.2 _IO_file_jumps D 0xa8 +GLIBC_2.2 _IO_file_open F +GLIBC_2.2 _IO_file_overflow F +GLIBC_2.2 _IO_file_read F +GLIBC_2.2 _IO_file_seek F +GLIBC_2.2 _IO_file_seekoff F +GLIBC_2.2 _IO_file_setbuf F +GLIBC_2.2 _IO_file_stat F +GLIBC_2.2 _IO_file_sync F +GLIBC_2.2 _IO_file_underflow F +GLIBC_2.2 _IO_file_write F +GLIBC_2.2 _IO_file_xsputn F +GLIBC_2.2 _IO_flockfile F +GLIBC_2.2 _IO_flush_all F +GLIBC_2.2 _IO_flush_all_linebuffered F +GLIBC_2.2 _IO_fopen F +GLIBC_2.2 _IO_fprintf F +GLIBC_2.2 _IO_fputs F +GLIBC_2.2 _IO_fread F +GLIBC_2.2 _IO_free_backup_area F +GLIBC_2.2 _IO_free_wbackup_area F +GLIBC_2.2 _IO_fsetpos F +GLIBC_2.2 _IO_fsetpos64 F +GLIBC_2.2 _IO_ftell F +GLIBC_2.2 _IO_ftrylockfile F +GLIBC_2.2 _IO_funlockfile F +GLIBC_2.2 _IO_fwrite F +GLIBC_2.2 _IO_getc F +GLIBC_2.2 _IO_getline F +GLIBC_2.2 _IO_getline_info F +GLIBC_2.2 _IO_gets F +GLIBC_2.2 _IO_init F +GLIBC_2.2 _IO_init_marker F +GLIBC_2.2 _IO_init_wmarker F +GLIBC_2.2 _IO_iter_begin F +GLIBC_2.2 _IO_iter_end F +GLIBC_2.2 _IO_iter_file F +GLIBC_2.2 _IO_iter_next F +GLIBC_2.2 _IO_least_wmarker F +GLIBC_2.2 _IO_link_in F +GLIBC_2.2 _IO_list_all D 0x8 +GLIBC_2.2 _IO_list_lock F +GLIBC_2.2 _IO_list_resetlock F +GLIBC_2.2 _IO_list_unlock F +GLIBC_2.2 _IO_marker_delta F +GLIBC_2.2 _IO_marker_difference F +GLIBC_2.2 _IO_padn F +GLIBC_2.2 _IO_peekc_locked F +GLIBC_2.2 _IO_popen F +GLIBC_2.2 _IO_printf F +GLIBC_2.2 _IO_proc_close F +GLIBC_2.2 _IO_proc_open F +GLIBC_2.2 _IO_putc F +GLIBC_2.2 _IO_puts F +GLIBC_2.2 _IO_remove_marker F +GLIBC_2.2 _IO_seekmark F +GLIBC_2.2 _IO_seekoff F +GLIBC_2.2 _IO_seekpos F +GLIBC_2.2 _IO_seekwmark F +GLIBC_2.2 _IO_setb F +GLIBC_2.2 _IO_setbuffer F +GLIBC_2.2 _IO_setvbuf F +GLIBC_2.2 _IO_sgetn F +GLIBC_2.2 _IO_sprintf F +GLIBC_2.2 _IO_sputbackc F +GLIBC_2.2 _IO_sputbackwc F +GLIBC_2.2 _IO_sscanf F +GLIBC_2.2 _IO_str_init_readonly F +GLIBC_2.2 _IO_str_init_static F +GLIBC_2.2 _IO_str_overflow F +GLIBC_2.2 _IO_str_pbackfail F +GLIBC_2.2 _IO_str_seekoff F +GLIBC_2.2 _IO_str_underflow F +GLIBC_2.2 _IO_sungetc F +GLIBC_2.2 _IO_sungetwc F +GLIBC_2.2 _IO_switch_to_get_mode F +GLIBC_2.2 _IO_switch_to_main_wget_area F +GLIBC_2.2 _IO_switch_to_wbackup_area F +GLIBC_2.2 _IO_switch_to_wget_mode F +GLIBC_2.2 _IO_un_link F +GLIBC_2.2 _IO_ungetc F +GLIBC_2.2 _IO_unsave_markers F +GLIBC_2.2 _IO_unsave_wmarkers F +GLIBC_2.2 _IO_vfprintf F +GLIBC_2.2 _IO_vfscanf F +GLIBC_2.2 _IO_vsprintf F +GLIBC_2.2 _IO_wdefault_doallocate F +GLIBC_2.2 _IO_wdefault_finish F +GLIBC_2.2 _IO_wdefault_pbackfail F +GLIBC_2.2 _IO_wdefault_uflow F +GLIBC_2.2 _IO_wdefault_xsgetn F +GLIBC_2.2 _IO_wdefault_xsputn F +GLIBC_2.2 _IO_wdo_write F +GLIBC_2.2 _IO_wdoallocbuf F +GLIBC_2.2 _IO_wfile_jumps D 0xa8 +GLIBC_2.2 _IO_wfile_overflow F +GLIBC_2.2 _IO_wfile_seekoff F +GLIBC_2.2 _IO_wfile_sync F +GLIBC_2.2 _IO_wfile_underflow F +GLIBC_2.2 _IO_wfile_xsputn F +GLIBC_2.2 _IO_wmarker_delta F +GLIBC_2.2 _IO_wsetb F +GLIBC_2.2 ___brk_addr D 0x8 +GLIBC_2.2 __adjtimex F +GLIBC_2.2 __after_morecore_hook D 0x8 +GLIBC_2.2 __argz_count F +GLIBC_2.2 __argz_next F +GLIBC_2.2 __argz_stringify F +GLIBC_2.2 __asprintf F +GLIBC_2.2 __assert F +GLIBC_2.2 __assert_fail F +GLIBC_2.2 __assert_perror_fail F +GLIBC_2.2 __backtrace F +GLIBC_2.2 __backtrace_symbols F +GLIBC_2.2 __backtrace_symbols_fd F +GLIBC_2.2 __bsd_getpgrp F +GLIBC_2.2 __bzero F +GLIBC_2.2 __check_rhosts_file D 0x4 +GLIBC_2.2 __clone F +GLIBC_2.2 __close F +GLIBC_2.2 __cmsg_nxthdr F +GLIBC_2.2 __connect F +GLIBC_2.2 __ctype32_b D 0x8 +GLIBC_2.2 __ctype32_tolower D 0x8 +GLIBC_2.2 __ctype32_toupper D 0x8 +GLIBC_2.2 __ctype_b D 0x8 +GLIBC_2.2 __ctype_get_mb_cur_max F +GLIBC_2.2 __ctype_tolower D 0x8 +GLIBC_2.2 __ctype_toupper D 0x8 +GLIBC_2.2 __curbrk D 0x8 +GLIBC_2.2 __cxa_atexit F +GLIBC_2.2 __cxa_finalize F +GLIBC_2.2 __cyg_profile_func_enter F +GLIBC_2.2 __cyg_profile_func_exit F +GLIBC_2.2 __daylight D 0x4 +GLIBC_2.2 __dcgettext F +GLIBC_2.2 __default_morecore F +GLIBC_2.2 __deregister_frame F +GLIBC_2.2 __deregister_frame_info F +GLIBC_2.2 __dgettext F +GLIBC_2.2 __dup2 F +GLIBC_2.2 __duplocale F +GLIBC_2.2 __endmntent F +GLIBC_2.2 __environ D 0x8 +GLIBC_2.2 __errno_location F +GLIBC_2.2 __fbufsize F +GLIBC_2.2 __fcntl F +GLIBC_2.2 __ffs F +GLIBC_2.2 __finite F +GLIBC_2.2 __finitef F +GLIBC_2.2 __finitel F +GLIBC_2.2 __flbf F +GLIBC_2.2 __fork F +GLIBC_2.2 __fpending F +GLIBC_2.2 __fpu_control D 0x4 +GLIBC_2.2 __fpurge F +GLIBC_2.2 __frame_state_for F +GLIBC_2.2 __freadable F +GLIBC_2.2 __freading F +GLIBC_2.2 __free_hook D 0x8 +GLIBC_2.2 __freelocale F +GLIBC_2.2 __fsetlocking F +GLIBC_2.2 __fwritable F +GLIBC_2.2 __fwriting F +GLIBC_2.2 __fxstat F +GLIBC_2.2 __fxstat64 F +GLIBC_2.2 __getdelim F +GLIBC_2.2 __getmntent_r F +GLIBC_2.2 __getpagesize F +GLIBC_2.2 __getpgid F +GLIBC_2.2 __getpid F +GLIBC_2.2 __gettimeofday F +GLIBC_2.2 __gmtime_r F +GLIBC_2.2 __h_errno_location F +GLIBC_2.2 __isalnum_l F +GLIBC_2.2 __isalpha_l F +GLIBC_2.2 __isascii_l F +GLIBC_2.2 __isblank_l F +GLIBC_2.2 __iscntrl_l F +GLIBC_2.2 __isdigit_l F +GLIBC_2.2 __isgraph_l F +GLIBC_2.2 __isinf F +GLIBC_2.2 __isinff F +GLIBC_2.2 __isinfl F +GLIBC_2.2 __islower_l F +GLIBC_2.2 __isnan F +GLIBC_2.2 __isnanf F +GLIBC_2.2 __isnanl F +GLIBC_2.2 __isprint_l F +GLIBC_2.2 __ispunct_l F +GLIBC_2.2 __isspace_l F +GLIBC_2.2 __isupper_l F +GLIBC_2.2 __iswalnum_l F +GLIBC_2.2 __iswalpha_l F +GLIBC_2.2 __iswblank_l F +GLIBC_2.2 __iswcntrl_l F +GLIBC_2.2 __iswctype F +GLIBC_2.2 __iswctype_l F +GLIBC_2.2 __iswdigit_l F +GLIBC_2.2 __iswgraph_l F +GLIBC_2.2 __iswlower_l F +GLIBC_2.2 __iswprint_l F +GLIBC_2.2 __iswpunct_l F +GLIBC_2.2 __iswspace_l F +GLIBC_2.2 __iswupper_l F +GLIBC_2.2 __iswxdigit_l F +GLIBC_2.2 __isxdigit_l F +GLIBC_2.2 __ivaliduser F +GLIBC_2.2 __key_decryptsession_pk_LOCAL D 0x8 +GLIBC_2.2 __key_encryptsession_pk_LOCAL D 0x8 +GLIBC_2.2 __key_gendes_LOCAL D 0x8 +GLIBC_2.2 __libc_allocate_rtsig F +GLIBC_2.2 __libc_calloc F +GLIBC_2.2 __libc_current_sigrtmax F +GLIBC_2.2 __libc_current_sigrtmin F +GLIBC_2.2 __libc_free F +GLIBC_2.2 __libc_freeres F +GLIBC_2.2 __libc_init_first F +GLIBC_2.2 __libc_mallinfo F +GLIBC_2.2 __libc_malloc F +GLIBC_2.2 __libc_mallopt F +GLIBC_2.2 __libc_memalign F +GLIBC_2.2 __libc_pvalloc F +GLIBC_2.2 __libc_realloc F +GLIBC_2.2 __libc_sa_len F +GLIBC_2.2 __libc_start_main F +GLIBC_2.2 __libc_valloc F +GLIBC_2.2 __lseek F +GLIBC_2.2 __lxstat F +GLIBC_2.2 __lxstat64 F +GLIBC_2.2 __malloc_hook D 0x8 +GLIBC_2.2 __malloc_initialize_hook D 0x8 +GLIBC_2.2 __mbrlen F +GLIBC_2.2 __mbrtowc F +GLIBC_2.2 __memalign_hook D 0x8 +GLIBC_2.2 __mempcpy F +GLIBC_2.2 __mempcpy_small F +GLIBC_2.2 __monstartup F +GLIBC_2.2 __morecore D 0x8 +GLIBC_2.2 __newlocale F +GLIBC_2.2 __nl_langinfo_l F +GLIBC_2.2 __nss_configure_lookup F +GLIBC_2.2 __nss_database_lookup F +GLIBC_2.2 __nss_group_lookup F +GLIBC_2.2 __nss_hosts_lookup F +GLIBC_2.2 __nss_next F +GLIBC_2.2 __nss_passwd_lookup F +GLIBC_2.2 __open F +GLIBC_2.2 __open64 F +GLIBC_2.2 __overflow F +GLIBC_2.2 __pipe F +GLIBC_2.2 __poll F +GLIBC_2.2 __pread64 F +GLIBC_2.2 __printf_fp F +GLIBC_2.2 __profile_frequency F +GLIBC_2.2 __progname D 0x8 +GLIBC_2.2 __progname_full D 0x8 +GLIBC_2.2 __pwrite64 F +GLIBC_2.2 __rawmemchr F +GLIBC_2.2 __rcmd_errstr D 0x8 +GLIBC_2.2 __read F +GLIBC_2.2 __realloc_hook D 0x8 +GLIBC_2.2 __register_frame F +GLIBC_2.2 __register_frame_info F +GLIBC_2.2 __register_frame_info_table F +GLIBC_2.2 __register_frame_table F +GLIBC_2.2 __res_init F +GLIBC_2.2 __res_nclose F +GLIBC_2.2 __res_ninit F +GLIBC_2.2 __res_randomid F +GLIBC_2.2 __res_state F +GLIBC_2.2 __sbrk F +GLIBC_2.2 __sched_get_priority_max F +GLIBC_2.2 __sched_get_priority_min F +GLIBC_2.2 __sched_getparam F +GLIBC_2.2 __sched_getscheduler F +GLIBC_2.2 __sched_setscheduler F +GLIBC_2.2 __sched_yield F +GLIBC_2.2 __secure_getenv F +GLIBC_2.2 __select F +GLIBC_2.2 __send F +GLIBC_2.2 __setmntent F +GLIBC_2.2 __setpgid F +GLIBC_2.2 __sigaction F +GLIBC_2.2 __sigaddset F +GLIBC_2.2 __sigdelset F +GLIBC_2.2 __sigismember F +GLIBC_2.2 __signbit F +GLIBC_2.2 __signbitf F +GLIBC_2.2 __sigpause F +GLIBC_2.2 __sigsetjmp F +GLIBC_2.2 __sigsuspend F +GLIBC_2.2 __statfs F +GLIBC_2.2 __stpcpy F +GLIBC_2.2 __stpcpy_small F +GLIBC_2.2 __stpncpy F +GLIBC_2.2 __strcasecmp F +GLIBC_2.2 __strcasecmp_l F +GLIBC_2.2 __strcasestr F +GLIBC_2.2 __strcoll_l F +GLIBC_2.2 __strcpy_small F +GLIBC_2.2 __strcspn_c1 F +GLIBC_2.2 __strcspn_c2 F +GLIBC_2.2 __strcspn_c3 F +GLIBC_2.2 __strdup F +GLIBC_2.2 __strerror_r F +GLIBC_2.2 __strfmon_l F +GLIBC_2.2 __strncasecmp_l F +GLIBC_2.2 __strndup F +GLIBC_2.2 __strpbrk_c2 F +GLIBC_2.2 __strpbrk_c3 F +GLIBC_2.2 __strsep_1c F +GLIBC_2.2 __strsep_2c F +GLIBC_2.2 __strsep_3c F +GLIBC_2.2 __strsep_g F +GLIBC_2.2 __strspn_c1 F +GLIBC_2.2 __strspn_c2 F +GLIBC_2.2 __strspn_c3 F +GLIBC_2.2 __strtod_internal F +GLIBC_2.2 __strtod_l F +GLIBC_2.2 __strtof_internal F +GLIBC_2.2 __strtof_l F +GLIBC_2.2 __strtok_r F +GLIBC_2.2 __strtok_r_1c F +GLIBC_2.2 __strtol_internal F +GLIBC_2.2 __strtol_l F +GLIBC_2.2 __strtold_internal F +GLIBC_2.2 __strtold_l F +GLIBC_2.2 __strtoll_internal F +GLIBC_2.2 __strtoll_l F +GLIBC_2.2 __strtoul_internal F +GLIBC_2.2 __strtoul_l F +GLIBC_2.2 __strtoull_internal F +GLIBC_2.2 __strtoull_l F +GLIBC_2.2 __strverscmp F +GLIBC_2.2 __strxfrm_l F +GLIBC_2.2 __sysconf F +GLIBC_2.2 __sysctl F +GLIBC_2.2 __sysv_signal F +GLIBC_2.2 __timezone D 0x8 +GLIBC_2.2 __toascii_l F +GLIBC_2.2 __tolower_l F +GLIBC_2.2 __toupper_l F +GLIBC_2.2 __towctrans F +GLIBC_2.2 __towctrans_l F +GLIBC_2.2 __towlower_l F +GLIBC_2.2 __towupper_l F +GLIBC_2.2 __tzname D 0x10 +GLIBC_2.2 __uflow F +GLIBC_2.2 __underflow F +GLIBC_2.2 __vfork F +GLIBC_2.2 __vfscanf F +GLIBC_2.2 __vsnprintf F +GLIBC_2.2 __vsscanf F +GLIBC_2.2 __wait F +GLIBC_2.2 __waitpid F +GLIBC_2.2 __wcscasecmp_l F +GLIBC_2.2 __wcscoll_l F +GLIBC_2.2 __wcsncasecmp_l F +GLIBC_2.2 __wcstod_internal F +GLIBC_2.2 __wcstod_l F +GLIBC_2.2 __wcstof_internal F +GLIBC_2.2 __wcstof_l F +GLIBC_2.2 __wcstol_internal F +GLIBC_2.2 __wcstol_l F +GLIBC_2.2 __wcstold_internal F +GLIBC_2.2 __wcstold_l F +GLIBC_2.2 __wcstoll_internal F +GLIBC_2.2 __wcstoll_l F +GLIBC_2.2 __wcstoul_internal F +GLIBC_2.2 __wcstoul_l F +GLIBC_2.2 __wcstoull_internal F +GLIBC_2.2 __wcstoull_l F +GLIBC_2.2 __wcsxfrm_l F +GLIBC_2.2 __wctrans_l F +GLIBC_2.2 __wctype_l F +GLIBC_2.2 __woverflow F +GLIBC_2.2 __write F +GLIBC_2.2 __wuflow F +GLIBC_2.2 __wunderflow F +GLIBC_2.2 __xmknod F +GLIBC_2.2 __xpg_basename F +GLIBC_2.2 __xpg_sigpause F +GLIBC_2.2 __xstat F +GLIBC_2.2 __xstat64 F +GLIBC_2.2 _authenticate F +GLIBC_2.2 _dl_mcount_wrapper F +GLIBC_2.2 _dl_mcount_wrapper_check F +GLIBC_2.2 _environ D 0x8 +GLIBC_2.2 _exit F +GLIBC_2.2 _flushlbf F +GLIBC_2.2 _libc_intl_domainname D 0x5 +GLIBC_2.2 _longjmp F +GLIBC_2.2 _mcleanup F +GLIBC_2.2 _mcount F +GLIBC_2.2 _nl_default_dirname D 0x12 +GLIBC_2.2 _nl_domain_bindings D 0x8 +GLIBC_2.2 _nl_msg_cat_cntr D 0x4 +GLIBC_2.2 _null_auth D 0x18 +GLIBC_2.2 _obstack D 0x8 +GLIBC_2.2 _obstack_allocated_p F +GLIBC_2.2 _obstack_begin F +GLIBC_2.2 _obstack_begin_1 F +GLIBC_2.2 _obstack_free F +GLIBC_2.2 _obstack_memory_used F +GLIBC_2.2 _obstack_newchunk F +GLIBC_2.2 _res D 0x238 +GLIBC_2.2 _res_hconf D 0x48 +GLIBC_2.2 _rpc_dtablesize F +GLIBC_2.2 _seterr_reply F +GLIBC_2.2 _setjmp F +GLIBC_2.2 _sys_errlist D 0x3e8 +GLIBC_2.2 _sys_nerr D 0x4 +GLIBC_2.2 _sys_siglist D 0x200 +GLIBC_2.2 _tolower F +GLIBC_2.2 _toupper F +GLIBC_2.2 a64l F +GLIBC_2.2 abort F +GLIBC_2.2 abs F +GLIBC_2.2 accept F +GLIBC_2.2 access F +GLIBC_2.2 acct F +GLIBC_2.2 addmntent F +GLIBC_2.2 addseverity F +GLIBC_2.2 adjtime F +GLIBC_2.2 adjtimex F +GLIBC_2.2 advance F +GLIBC_2.2 alarm F +GLIBC_2.2 alphasort F +GLIBC_2.2 alphasort64 F +GLIBC_2.2 argp_err_exit_status D 0x4 +GLIBC_2.2 argp_error F +GLIBC_2.2 argp_failure F +GLIBC_2.2 argp_help F +GLIBC_2.2 argp_parse F +GLIBC_2.2 argp_program_bug_address D 0x8 +GLIBC_2.2 argp_program_version D 0x8 +GLIBC_2.2 argp_program_version_hook D 0x8 +GLIBC_2.2 argp_state_help F +GLIBC_2.2 argp_usage F +GLIBC_2.2 argz_add F +GLIBC_2.2 argz_add_sep F +GLIBC_2.2 argz_append F +GLIBC_2.2 argz_count F +GLIBC_2.2 argz_create F +GLIBC_2.2 argz_create_sep F +GLIBC_2.2 argz_delete F +GLIBC_2.2 argz_extract F +GLIBC_2.2 argz_insert F +GLIBC_2.2 argz_next F +GLIBC_2.2 argz_replace F +GLIBC_2.2 argz_stringify F +GLIBC_2.2 asctime F +GLIBC_2.2 asctime_r F +GLIBC_2.2 asprintf F +GLIBC_2.2 atexit F +GLIBC_2.2 atof F +GLIBC_2.2 atoi F +GLIBC_2.2 atol F +GLIBC_2.2 atoll F +GLIBC_2.2 authdes_create F +GLIBC_2.2 authdes_getucred F +GLIBC_2.2 authdes_pk_create F +GLIBC_2.2 authnone_create F +GLIBC_2.2 authunix_create F +GLIBC_2.2 authunix_create_default F +GLIBC_2.2 backtrace F +GLIBC_2.2 backtrace_symbols F +GLIBC_2.2 backtrace_symbols_fd F +GLIBC_2.2 basename F +GLIBC_2.2 bcmp F +GLIBC_2.2 bcopy F +GLIBC_2.2 bdflush F +GLIBC_2.2 bind F +GLIBC_2.2 bind_textdomain_codeset F +GLIBC_2.2 bindresvport F +GLIBC_2.2 bindtextdomain F +GLIBC_2.2 brk F +GLIBC_2.2 bsd_signal F +GLIBC_2.2 bsearch F +GLIBC_2.2 btowc F +GLIBC_2.2 bzero F +GLIBC_2.2 calloc F +GLIBC_2.2 callrpc F +GLIBC_2.2 canonicalize_file_name F +GLIBC_2.2 capget F +GLIBC_2.2 capset F +GLIBC_2.2 catclose F +GLIBC_2.2 catgets F +GLIBC_2.2 catopen F +GLIBC_2.2 cbc_crypt F +GLIBC_2.2 cfgetispeed F +GLIBC_2.2 cfgetospeed F +GLIBC_2.2 cfmakeraw F +GLIBC_2.2 cfree F +GLIBC_2.2 cfsetispeed F +GLIBC_2.2 cfsetospeed F +GLIBC_2.2 cfsetspeed F +GLIBC_2.2 chdir F +GLIBC_2.2 chflags F +GLIBC_2.2 chmod F +GLIBC_2.2 chown F +GLIBC_2.2 chroot F +GLIBC_2.2 clearenv F +GLIBC_2.2 clearerr F +GLIBC_2.2 clearerr_unlocked F +GLIBC_2.2 clnt_broadcast F +GLIBC_2.2 clnt_create F +GLIBC_2.2 clnt_pcreateerror F +GLIBC_2.2 clnt_perrno F +GLIBC_2.2 clnt_perror F +GLIBC_2.2 clnt_spcreateerror F +GLIBC_2.2 clnt_sperrno F +GLIBC_2.2 clnt_sperror F +GLIBC_2.2 clntraw_create F +GLIBC_2.2 clnttcp_create F +GLIBC_2.2 clntudp_bufcreate F +GLIBC_2.2 clntudp_create F +GLIBC_2.2 clntunix_create F +GLIBC_2.2 clock F +GLIBC_2.2 clone F +GLIBC_2.2 close F +GLIBC_2.2 closedir F +GLIBC_2.2 closelog F +GLIBC_2.2 confstr F +GLIBC_2.2 connect F +GLIBC_2.2 copysign F +GLIBC_2.2 copysignf F +GLIBC_2.2 copysignl F +GLIBC_2.2 creat F +GLIBC_2.2 creat64 F +GLIBC_2.2 create_module F +GLIBC_2.2 ctermid F +GLIBC_2.2 ctime F +GLIBC_2.2 ctime_r F +GLIBC_2.2 cuserid F +GLIBC_2.2 daemon F +GLIBC_2.2 daylight D 0x4 +GLIBC_2.2 dcgettext F +GLIBC_2.2 dcngettext F +GLIBC_2.2 delete_module F +GLIBC_2.2 des_setparity F +GLIBC_2.2 dgettext F +GLIBC_2.2 difftime F +GLIBC_2.2 dirfd F +GLIBC_2.2 dirname F +GLIBC_2.2 div F +GLIBC_2.2 dngettext F +GLIBC_2.2 dprintf F +GLIBC_2.2 drand48 F +GLIBC_2.2 drand48_r F +GLIBC_2.2 dup F +GLIBC_2.2 dup2 F +GLIBC_2.2 dysize F +GLIBC_2.2 ecb_crypt F +GLIBC_2.2 ecvt F +GLIBC_2.2 ecvt_r F +GLIBC_2.2 endaliasent F +GLIBC_2.2 endfsent F +GLIBC_2.2 endgrent F +GLIBC_2.2 endhostent F +GLIBC_2.2 endmntent F +GLIBC_2.2 endnetent F +GLIBC_2.2 endnetgrent F +GLIBC_2.2 endprotoent F +GLIBC_2.2 endpwent F +GLIBC_2.2 endrpcent F +GLIBC_2.2 endservent F +GLIBC_2.2 endspent F +GLIBC_2.2 endttyent F +GLIBC_2.2 endusershell F +GLIBC_2.2 endutent F +GLIBC_2.2 endutxent F +GLIBC_2.2 environ D 0x8 +GLIBC_2.2 envz_add F +GLIBC_2.2 envz_entry F +GLIBC_2.2 envz_get F +GLIBC_2.2 envz_merge F +GLIBC_2.2 envz_remove F +GLIBC_2.2 envz_strip F +GLIBC_2.2 erand48 F +GLIBC_2.2 erand48_r F +GLIBC_2.2 err F +GLIBC_2.2 error F +GLIBC_2.2 error_at_line F +GLIBC_2.2 error_message_count D 0x4 +GLIBC_2.2 error_one_per_line D 0x4 +GLIBC_2.2 error_print_progname D 0x8 +GLIBC_2.2 errx F +GLIBC_2.2 ether_aton F +GLIBC_2.2 ether_aton_r F +GLIBC_2.2 ether_hostton F +GLIBC_2.2 ether_line F +GLIBC_2.2 ether_ntoa F +GLIBC_2.2 ether_ntoa_r F +GLIBC_2.2 ether_ntohost F +GLIBC_2.2 euidaccess F +GLIBC_2.2 execl F +GLIBC_2.2 execle F +GLIBC_2.2 execlp F +GLIBC_2.2 execv F +GLIBC_2.2 execve F +GLIBC_2.2 execvp F +GLIBC_2.2 exit F +GLIBC_2.2 fattach F +GLIBC_2.2 fchdir F +GLIBC_2.2 fchflags F +GLIBC_2.2 fchmod F +GLIBC_2.2 fchown F +GLIBC_2.2 fclose F +GLIBC_2.2 fcloseall F +GLIBC_2.2 fcntl F +GLIBC_2.2 fcvt F +GLIBC_2.2 fcvt_r F +GLIBC_2.2 fdatasync F +GLIBC_2.2 fdetach F +GLIBC_2.2 fdopen F +GLIBC_2.2 feof F +GLIBC_2.2 feof_unlocked F +GLIBC_2.2 ferror F +GLIBC_2.2 ferror_unlocked F +GLIBC_2.2 fexecve F +GLIBC_2.2 fflush F +GLIBC_2.2 fflush_unlocked F +GLIBC_2.2 ffs F +GLIBC_2.2 ffsl F +GLIBC_2.2 ffsll F +GLIBC_2.2 fgetc F +GLIBC_2.2 fgetc_unlocked F +GLIBC_2.2 fgetgrent F +GLIBC_2.2 fgetgrent_r F +GLIBC_2.2 fgetpos F +GLIBC_2.2 fgetpos64 F +GLIBC_2.2 fgetpwent F +GLIBC_2.2 fgetpwent_r F +GLIBC_2.2 fgets F +GLIBC_2.2 fgets_unlocked F +GLIBC_2.2 fgetspent F +GLIBC_2.2 fgetspent_r F +GLIBC_2.2 fgetwc F +GLIBC_2.2 fgetwc_unlocked F +GLIBC_2.2 fgetws F +GLIBC_2.2 fgetws_unlocked F +GLIBC_2.2 fileno F +GLIBC_2.2 fileno_unlocked F +GLIBC_2.2 finite F +GLIBC_2.2 finitef F +GLIBC_2.2 finitel F +GLIBC_2.2 flock F +GLIBC_2.2 flockfile F +GLIBC_2.2 fmemopen F +GLIBC_2.2 fmtmsg F +GLIBC_2.2 fnmatch F +GLIBC_2.2 fopen F +GLIBC_2.2 fopen64 F +GLIBC_2.2 fopencookie F +GLIBC_2.2 fork F +GLIBC_2.2 fpathconf F +GLIBC_2.2 fprintf F +GLIBC_2.2 fputc F +GLIBC_2.2 fputc_unlocked F +GLIBC_2.2 fputs F +GLIBC_2.2 fputs_unlocked F +GLIBC_2.2 fputwc F +GLIBC_2.2 fputwc_unlocked F +GLIBC_2.2 fputws F +GLIBC_2.2 fputws_unlocked F +GLIBC_2.2 fread F +GLIBC_2.2 fread_unlocked F +GLIBC_2.2 free F +GLIBC_2.2 freeaddrinfo F +GLIBC_2.2 freopen F +GLIBC_2.2 freopen64 F +GLIBC_2.2 frexp F +GLIBC_2.2 frexpf F +GLIBC_2.2 frexpl F +GLIBC_2.2 fscanf F +GLIBC_2.2 fseek F +GLIBC_2.2 fseeko F +GLIBC_2.2 fseeko64 F +GLIBC_2.2 fsetpos F +GLIBC_2.2 fsetpos64 F +GLIBC_2.2 fstatfs F +GLIBC_2.2 fstatfs64 F +GLIBC_2.2 fstatvfs F +GLIBC_2.2 fstatvfs64 F +GLIBC_2.2 fsync F +GLIBC_2.2 ftell F +GLIBC_2.2 ftello F +GLIBC_2.2 ftello64 F +GLIBC_2.2 ftime F +GLIBC_2.2 ftok F +GLIBC_2.2 ftruncate F +GLIBC_2.2 ftruncate64 F +GLIBC_2.2 ftrylockfile F +GLIBC_2.2 fts_children F +GLIBC_2.2 fts_close F +GLIBC_2.2 fts_open F +GLIBC_2.2 fts_read F +GLIBC_2.2 fts_set F +GLIBC_2.2 ftw F +GLIBC_2.2 ftw64 F +GLIBC_2.2 funlockfile F +GLIBC_2.2 fwide F +GLIBC_2.2 fwprintf F +GLIBC_2.2 fwrite F +GLIBC_2.2 fwrite_unlocked F +GLIBC_2.2 fwscanf F +GLIBC_2.2 gai_strerror F +GLIBC_2.2 gcvt F +GLIBC_2.2 get_avphys_pages F +GLIBC_2.2 get_current_dir_name F +GLIBC_2.2 get_kernel_syms F +GLIBC_2.2 get_myaddress F +GLIBC_2.2 get_nprocs F +GLIBC_2.2 get_nprocs_conf F +GLIBC_2.2 get_phys_pages F +GLIBC_2.2 getaddrinfo F +GLIBC_2.2 getaliasbyname F +GLIBC_2.2 getaliasbyname_r F +GLIBC_2.2 getaliasent F +GLIBC_2.2 getaliasent_r F +GLIBC_2.2 getc F +GLIBC_2.2 getc_unlocked F +GLIBC_2.2 getchar F +GLIBC_2.2 getchar_unlocked F +GLIBC_2.2 getcontext F +GLIBC_2.2 getcwd F +GLIBC_2.2 getdate F +GLIBC_2.2 getdate_err D 0x4 +GLIBC_2.2 getdate_r F +GLIBC_2.2 getdelim F +GLIBC_2.2 getdirentries F +GLIBC_2.2 getdirentries64 F +GLIBC_2.2 getdomainname F +GLIBC_2.2 getdtablesize F +GLIBC_2.2 getegid F +GLIBC_2.2 getenv F +GLIBC_2.2 geteuid F +GLIBC_2.2 getfsent F +GLIBC_2.2 getfsfile F +GLIBC_2.2 getfsspec F +GLIBC_2.2 getgid F +GLIBC_2.2 getgrent F +GLIBC_2.2 getgrent_r F +GLIBC_2.2 getgrgid F +GLIBC_2.2 getgrgid_r F +GLIBC_2.2 getgrnam F +GLIBC_2.2 getgrnam_r F +GLIBC_2.2 getgroups F +GLIBC_2.2 gethostbyaddr F +GLIBC_2.2 gethostbyaddr_r F +GLIBC_2.2 gethostbyname F +GLIBC_2.2 gethostbyname2 F +GLIBC_2.2 gethostbyname2_r F +GLIBC_2.2 gethostbyname_r F +GLIBC_2.2 gethostent F +GLIBC_2.2 gethostent_r F +GLIBC_2.2 gethostid F +GLIBC_2.2 gethostname F +GLIBC_2.2 getitimer F +GLIBC_2.2 getline F +GLIBC_2.2 getloadavg F +GLIBC_2.2 getlogin F +GLIBC_2.2 getlogin_r F +GLIBC_2.2 getmntent F +GLIBC_2.2 getmntent_r F +GLIBC_2.2 getmsg F +GLIBC_2.2 getnameinfo F +GLIBC_2.2 getnetbyaddr F +GLIBC_2.2 getnetbyaddr_r F +GLIBC_2.2 getnetbyname F +GLIBC_2.2 getnetbyname_r F +GLIBC_2.2 getnetent F +GLIBC_2.2 getnetent_r F +GLIBC_2.2 getnetgrent F +GLIBC_2.2 getnetgrent_r F +GLIBC_2.2 getnetname F +GLIBC_2.2 getopt F +GLIBC_2.2 getopt_long F +GLIBC_2.2 getopt_long_only F +GLIBC_2.2 getpagesize F +GLIBC_2.2 getpass F +GLIBC_2.2 getpeername F +GLIBC_2.2 getpgid F +GLIBC_2.2 getpgrp F +GLIBC_2.2 getpid F +GLIBC_2.2 getpmsg F +GLIBC_2.2 getppid F +GLIBC_2.2 getpriority F +GLIBC_2.2 getprotobyname F +GLIBC_2.2 getprotobyname_r F +GLIBC_2.2 getprotobynumber F +GLIBC_2.2 getprotobynumber_r F +GLIBC_2.2 getprotoent F +GLIBC_2.2 getprotoent_r F +GLIBC_2.2 getpt F +GLIBC_2.2 getpublickey F +GLIBC_2.2 getpw F +GLIBC_2.2 getpwent F +GLIBC_2.2 getpwent_r F +GLIBC_2.2 getpwnam F +GLIBC_2.2 getpwnam_r F +GLIBC_2.2 getpwuid F +GLIBC_2.2 getpwuid_r F +GLIBC_2.2 getresgid F +GLIBC_2.2 getresuid F +GLIBC_2.2 getrlimit F +GLIBC_2.2 getrlimit64 F +GLIBC_2.2 getrpcbyname F +GLIBC_2.2 getrpcbyname_r F +GLIBC_2.2 getrpcbynumber F +GLIBC_2.2 getrpcbynumber_r F +GLIBC_2.2 getrpcent F +GLIBC_2.2 getrpcent_r F +GLIBC_2.2 getrpcport F +GLIBC_2.2 getrusage F +GLIBC_2.2 gets F +GLIBC_2.2 getsecretkey F +GLIBC_2.2 getservbyname F +GLIBC_2.2 getservbyname_r F +GLIBC_2.2 getservbyport F +GLIBC_2.2 getservbyport_r F +GLIBC_2.2 getservent F +GLIBC_2.2 getservent_r F +GLIBC_2.2 getsid F +GLIBC_2.2 getsockname F +GLIBC_2.2 getsockopt F +GLIBC_2.2 getspent F +GLIBC_2.2 getspent_r F +GLIBC_2.2 getspnam F +GLIBC_2.2 getspnam_r F +GLIBC_2.2 getsubopt F +GLIBC_2.2 gettext F +GLIBC_2.2 gettimeofday F +GLIBC_2.2 getttyent F +GLIBC_2.2 getttynam F +GLIBC_2.2 getuid F +GLIBC_2.2 getusershell F +GLIBC_2.2 getutent F +GLIBC_2.2 getutent_r F +GLIBC_2.2 getutid F +GLIBC_2.2 getutid_r F +GLIBC_2.2 getutline F +GLIBC_2.2 getutline_r F +GLIBC_2.2 getutmp F +GLIBC_2.2 getutmpx F +GLIBC_2.2 getutxent F +GLIBC_2.2 getutxid F +GLIBC_2.2 getutxline F +GLIBC_2.2 getw F +GLIBC_2.2 getwc F +GLIBC_2.2 getwc_unlocked F +GLIBC_2.2 getwchar F +GLIBC_2.2 getwchar_unlocked F +GLIBC_2.2 getwd F +GLIBC_2.2 glob F +GLIBC_2.2 glob64 F +GLIBC_2.2 glob_pattern_p F +GLIBC_2.2 globfree F +GLIBC_2.2 globfree64 F +GLIBC_2.2 gmtime F +GLIBC_2.2 gmtime_r F +GLIBC_2.2 gnu_get_libc_release F +GLIBC_2.2 gnu_get_libc_version F +GLIBC_2.2 grantpt F +GLIBC_2.2 group_member F +GLIBC_2.2 gsignal F +GLIBC_2.2 gtty F +GLIBC_2.2 h_errlist D 0x28 +GLIBC_2.2 h_nerr D 0x4 +GLIBC_2.2 hasmntopt F +GLIBC_2.2 hcreate F +GLIBC_2.2 hcreate_r F +GLIBC_2.2 hdestroy F +GLIBC_2.2 hdestroy_r F +GLIBC_2.2 herror F +GLIBC_2.2 host2netname F +GLIBC_2.2 hsearch F +GLIBC_2.2 hsearch_r F +GLIBC_2.2 hstrerror F +GLIBC_2.2 htonl F +GLIBC_2.2 htons F +GLIBC_2.2 iconv F +GLIBC_2.2 iconv_close F +GLIBC_2.2 iconv_open F +GLIBC_2.2 if_freenameindex F +GLIBC_2.2 if_indextoname F +GLIBC_2.2 if_nameindex F +GLIBC_2.2 if_nametoindex F +GLIBC_2.2 imaxabs F +GLIBC_2.2 imaxdiv F +GLIBC_2.2 in6addr_any D 0x10 +GLIBC_2.2 in6addr_loopback D 0x10 +GLIBC_2.2 index F +GLIBC_2.2 inet_addr F +GLIBC_2.2 inet_aton F +GLIBC_2.2 inet_lnaof F +GLIBC_2.2 inet_makeaddr F +GLIBC_2.2 inet_netof F +GLIBC_2.2 inet_network F +GLIBC_2.2 inet_nsap_addr F +GLIBC_2.2 inet_nsap_ntoa F +GLIBC_2.2 inet_ntoa F +GLIBC_2.2 inet_ntop F +GLIBC_2.2 inet_pton F +GLIBC_2.2 init_module F +GLIBC_2.2 initgroups F +GLIBC_2.2 initstate F +GLIBC_2.2 initstate_r F +GLIBC_2.2 innetgr F +GLIBC_2.2 insque F +GLIBC_2.2 ioctl F +GLIBC_2.2 iruserok F +GLIBC_2.2 iruserok_af F +GLIBC_2.2 isalnum F +GLIBC_2.2 isalpha F +GLIBC_2.2 isascii F +GLIBC_2.2 isastream F +GLIBC_2.2 isatty F +GLIBC_2.2 isblank F +GLIBC_2.2 iscntrl F +GLIBC_2.2 isdigit F +GLIBC_2.2 isfdtype F +GLIBC_2.2 isgraph F +GLIBC_2.2 isinf F +GLIBC_2.2 isinff F +GLIBC_2.2 isinfl F +GLIBC_2.2 islower F +GLIBC_2.2 isnan F +GLIBC_2.2 isnanf F +GLIBC_2.2 isnanl F +GLIBC_2.2 isprint F +GLIBC_2.2 ispunct F +GLIBC_2.2 isspace F +GLIBC_2.2 isupper F +GLIBC_2.2 iswalnum F +GLIBC_2.2 iswalpha F +GLIBC_2.2 iswblank F +GLIBC_2.2 iswcntrl F +GLIBC_2.2 iswctype F +GLIBC_2.2 iswdigit F +GLIBC_2.2 iswgraph F +GLIBC_2.2 iswlower F +GLIBC_2.2 iswprint F +GLIBC_2.2 iswpunct F +GLIBC_2.2 iswspace F +GLIBC_2.2 iswupper F +GLIBC_2.2 iswxdigit F +GLIBC_2.2 isxdigit F +GLIBC_2.2 jrand48 F +GLIBC_2.2 jrand48_r F +GLIBC_2.2 key_decryptsession F +GLIBC_2.2 key_decryptsession_pk F +GLIBC_2.2 key_encryptsession F +GLIBC_2.2 key_encryptsession_pk F +GLIBC_2.2 key_gendes F +GLIBC_2.2 key_get_conv F +GLIBC_2.2 key_secretkey_is_set F +GLIBC_2.2 key_setnet F +GLIBC_2.2 key_setsecret F +GLIBC_2.2 kill F +GLIBC_2.2 killpg F +GLIBC_2.2 klogctl F +GLIBC_2.2 l64a F +GLIBC_2.2 labs F +GLIBC_2.2 lchown F +GLIBC_2.2 lckpwdf F +GLIBC_2.2 lcong48 F +GLIBC_2.2 lcong48_r F +GLIBC_2.2 ldexp F +GLIBC_2.2 ldexpf F +GLIBC_2.2 ldexpl F +GLIBC_2.2 ldiv F +GLIBC_2.2 lfind F +GLIBC_2.2 link F +GLIBC_2.2 listen F +GLIBC_2.2 llabs F +GLIBC_2.2 lldiv F +GLIBC_2.2 llseek F +GLIBC_2.2 loc1 D 0x8 +GLIBC_2.2 loc2 D 0x8 +GLIBC_2.2 localeconv F +GLIBC_2.2 localtime F +GLIBC_2.2 localtime_r F +GLIBC_2.2 lockf F +GLIBC_2.2 lockf64 F +GLIBC_2.2 locs D 0x8 +GLIBC_2.2 longjmp F +GLIBC_2.2 lrand48 F +GLIBC_2.2 lrand48_r F +GLIBC_2.2 lsearch F +GLIBC_2.2 lseek F +GLIBC_2.2 lseek64 F +GLIBC_2.2 madvise F +GLIBC_2.2 makecontext F +GLIBC_2.2 mallinfo F +GLIBC_2.2 malloc F +GLIBC_2.2 malloc_get_state F +GLIBC_2.2 malloc_set_state F +GLIBC_2.2 malloc_stats F +GLIBC_2.2 malloc_trim F +GLIBC_2.2 malloc_usable_size F +GLIBC_2.2 mallopt F +GLIBC_2.2 mallwatch D 0x8 +GLIBC_2.2 mblen F +GLIBC_2.2 mbrlen F +GLIBC_2.2 mbrtowc F +GLIBC_2.2 mbsinit F +GLIBC_2.2 mbsnrtowcs F +GLIBC_2.2 mbsrtowcs F +GLIBC_2.2 mbstowcs F +GLIBC_2.2 mbtowc F +GLIBC_2.2 mcheck F +GLIBC_2.2 mcheck_check_all F +GLIBC_2.2 mcheck_pedantic F +GLIBC_2.2 mcount F +GLIBC_2.2 memalign F +GLIBC_2.2 memccpy F +GLIBC_2.2 memchr F +GLIBC_2.2 memcmp F +GLIBC_2.2 memcpy F +GLIBC_2.2 memfrob F +GLIBC_2.2 memmem F +GLIBC_2.2 memmove F +GLIBC_2.2 mempcpy F +GLIBC_2.2 memrchr F +GLIBC_2.2 memset F +GLIBC_2.2 mincore F +GLIBC_2.2 mkdir F +GLIBC_2.2 mkdtemp F +GLIBC_2.2 mkfifo F +GLIBC_2.2 mkstemp F +GLIBC_2.2 mkstemp64 F +GLIBC_2.2 mktemp F +GLIBC_2.2 mktime F +GLIBC_2.2 mlock F +GLIBC_2.2 mlockall F +GLIBC_2.2 mmap F +GLIBC_2.2 mmap64 F +GLIBC_2.2 modf F +GLIBC_2.2 modff F +GLIBC_2.2 modfl F +GLIBC_2.2 moncontrol F +GLIBC_2.2 monstartup F +GLIBC_2.2 mount F +GLIBC_2.2 mprobe F +GLIBC_2.2 mprotect F +GLIBC_2.2 mrand48 F +GLIBC_2.2 mrand48_r F +GLIBC_2.2 mremap F +GLIBC_2.2 msgctl F +GLIBC_2.2 msgget F +GLIBC_2.2 msgrcv F +GLIBC_2.2 msgsnd F +GLIBC_2.2 msync F +GLIBC_2.2 mtrace F +GLIBC_2.2 munlock F +GLIBC_2.2 munlockall F +GLIBC_2.2 munmap F +GLIBC_2.2 muntrace F +GLIBC_2.2 nanosleep F +GLIBC_2.2 netname2host F +GLIBC_2.2 netname2user F +GLIBC_2.2 nfsservctl F +GLIBC_2.2 nftw F +GLIBC_2.2 nftw64 F +GLIBC_2.2 ngettext F +GLIBC_2.2 nice F +GLIBC_2.2 nl_langinfo F +GLIBC_2.2 nrand48 F +GLIBC_2.2 nrand48_r F +GLIBC_2.2 ntohl F +GLIBC_2.2 ntohs F +GLIBC_2.2 ntp_adjtime F +GLIBC_2.2 ntp_gettime F +GLIBC_2.2 obstack_alloc_failed_handler D 0x8 +GLIBC_2.2 obstack_exit_failure D 0x4 +GLIBC_2.2 obstack_free F +GLIBC_2.2 obstack_printf F +GLIBC_2.2 obstack_vprintf F +GLIBC_2.2 on_exit F +GLIBC_2.2 open F +GLIBC_2.2 open64 F +GLIBC_2.2 open_memstream F +GLIBC_2.2 opendir F +GLIBC_2.2 openlog F +GLIBC_2.2 optarg D 0x8 +GLIBC_2.2 opterr D 0x4 +GLIBC_2.2 optind D 0x4 +GLIBC_2.2 optopt D 0x4 +GLIBC_2.2 parse_printf_format F +GLIBC_2.2 passwd2des F +GLIBC_2.2 pathconf F +GLIBC_2.2 pause F +GLIBC_2.2 pclose F +GLIBC_2.2 perror F +GLIBC_2.2 personality F +GLIBC_2.2 pipe F +GLIBC_2.2 pmap_getmaps F +GLIBC_2.2 pmap_getport F +GLIBC_2.2 pmap_rmtcall F +GLIBC_2.2 pmap_set F +GLIBC_2.2 pmap_unset F +GLIBC_2.2 poll F +GLIBC_2.2 popen F +GLIBC_2.2 posix_fadvise F +GLIBC_2.2 posix_fadvise64 F +GLIBC_2.2 posix_fallocate F +GLIBC_2.2 posix_fallocate64 F +GLIBC_2.2 posix_madvise F +GLIBC_2.2 posix_memalign F +GLIBC_2.2 posix_spawn F +GLIBC_2.2 posix_spawn_file_actions_addclose F +GLIBC_2.2 posix_spawn_file_actions_adddup2 F +GLIBC_2.2 posix_spawn_file_actions_addopen F +GLIBC_2.2 posix_spawn_file_actions_destroy F +GLIBC_2.2 posix_spawn_file_actions_init F +GLIBC_2.2 posix_spawnattr_destroy F +GLIBC_2.2 posix_spawnattr_getflags F +GLIBC_2.2 posix_spawnattr_getpgroup F +GLIBC_2.2 posix_spawnattr_getschedparam F +GLIBC_2.2 posix_spawnattr_getschedpolicy F +GLIBC_2.2 posix_spawnattr_getsigdefault F +GLIBC_2.2 posix_spawnattr_getsigmask F +GLIBC_2.2 posix_spawnattr_init F +GLIBC_2.2 posix_spawnattr_setflags F +GLIBC_2.2 posix_spawnattr_setpgroup F +GLIBC_2.2 posix_spawnattr_setschedparam F +GLIBC_2.2 posix_spawnattr_setschedpolicy F +GLIBC_2.2 posix_spawnattr_setsigdefault F +GLIBC_2.2 posix_spawnattr_setsigmask F +GLIBC_2.2 posix_spawnp F +GLIBC_2.2 prctl F +GLIBC_2.2 pread F +GLIBC_2.2 pread64 F +GLIBC_2.2 printf F +GLIBC_2.2 printf_size F +GLIBC_2.2 printf_size_info F +GLIBC_2.2 profil F +GLIBC_2.2 program_invocation_name D 0x8 +GLIBC_2.2 program_invocation_short_name D 0x8 +GLIBC_2.2 pselect F +GLIBC_2.2 psignal F +GLIBC_2.2 pthread_attr_destroy F +GLIBC_2.2 pthread_attr_getdetachstate F +GLIBC_2.2 pthread_attr_getinheritsched F +GLIBC_2.2 pthread_attr_getschedparam F +GLIBC_2.2 pthread_attr_getschedpolicy F +GLIBC_2.2 pthread_attr_getscope F +GLIBC_2.2 pthread_attr_init F +GLIBC_2.2 pthread_attr_setdetachstate F +GLIBC_2.2 pthread_attr_setinheritsched F +GLIBC_2.2 pthread_attr_setschedparam F +GLIBC_2.2 pthread_attr_setschedpolicy F +GLIBC_2.2 pthread_attr_setscope F +GLIBC_2.2 pthread_cond_broadcast F +GLIBC_2.2 pthread_cond_destroy F +GLIBC_2.2 pthread_cond_init F +GLIBC_2.2 pthread_cond_signal F +GLIBC_2.2 pthread_cond_timedwait F +GLIBC_2.2 pthread_cond_wait F +GLIBC_2.2 pthread_condattr_destroy F +GLIBC_2.2 pthread_condattr_init F +GLIBC_2.2 pthread_equal F +GLIBC_2.2 pthread_exit F +GLIBC_2.2 pthread_getschedparam F +GLIBC_2.2 pthread_mutex_destroy F +GLIBC_2.2 pthread_mutex_init F +GLIBC_2.2 pthread_mutex_lock F +GLIBC_2.2 pthread_mutex_unlock F +GLIBC_2.2 pthread_self F +GLIBC_2.2 pthread_setcancelstate F +GLIBC_2.2 pthread_setcanceltype F +GLIBC_2.2 pthread_setschedparam F +GLIBC_2.2 ptrace F +GLIBC_2.2 ptsname F +GLIBC_2.2 ptsname_r F +GLIBC_2.2 putc F +GLIBC_2.2 putc_unlocked F +GLIBC_2.2 putchar F +GLIBC_2.2 putchar_unlocked F +GLIBC_2.2 putenv F +GLIBC_2.2 putgrent F +GLIBC_2.2 putmsg F +GLIBC_2.2 putpmsg F +GLIBC_2.2 putpwent F +GLIBC_2.2 puts F +GLIBC_2.2 putspent F +GLIBC_2.2 pututline F +GLIBC_2.2 pututxline F +GLIBC_2.2 putw F +GLIBC_2.2 putwc F +GLIBC_2.2 putwc_unlocked F +GLIBC_2.2 putwchar F +GLIBC_2.2 putwchar_unlocked F +GLIBC_2.2 pvalloc F +GLIBC_2.2 pwrite F +GLIBC_2.2 pwrite64 F +GLIBC_2.2 qecvt F +GLIBC_2.2 qecvt_r F +GLIBC_2.2 qfcvt F +GLIBC_2.2 qfcvt_r F +GLIBC_2.2 qgcvt F +GLIBC_2.2 qsort F +GLIBC_2.2 query_module F +GLIBC_2.2 quotactl F +GLIBC_2.2 raise F +GLIBC_2.2 rand F +GLIBC_2.2 rand_r F +GLIBC_2.2 random F +GLIBC_2.2 random_r F +GLIBC_2.2 rawmemchr F +GLIBC_2.2 rcmd F +GLIBC_2.2 rcmd_af F +GLIBC_2.2 re_comp F +GLIBC_2.2 re_compile_fastmap F +GLIBC_2.2 re_compile_pattern F +GLIBC_2.2 re_exec F +GLIBC_2.2 re_match F +GLIBC_2.2 re_match_2 F +GLIBC_2.2 re_max_failures D 0x4 +GLIBC_2.2 re_search F +GLIBC_2.2 re_search_2 F +GLIBC_2.2 re_set_registers F +GLIBC_2.2 re_set_syntax F +GLIBC_2.2 re_syntax_options D 0x8 +GLIBC_2.2 read F +GLIBC_2.2 readdir F +GLIBC_2.2 readdir64 F +GLIBC_2.2 readdir64_r F +GLIBC_2.2 readdir_r F +GLIBC_2.2 readlink F +GLIBC_2.2 readv F +GLIBC_2.2 realloc F +GLIBC_2.2 realpath F +GLIBC_2.2 reboot F +GLIBC_2.2 recv F +GLIBC_2.2 recvfrom F +GLIBC_2.2 recvmsg F +GLIBC_2.2 regcomp F +GLIBC_2.2 regerror F +GLIBC_2.2 regexec F +GLIBC_2.2 regfree F +GLIBC_2.2 register_printf_function F +GLIBC_2.2 registerrpc F +GLIBC_2.2 remove F +GLIBC_2.2 remque F +GLIBC_2.2 rename F +GLIBC_2.2 revoke F +GLIBC_2.2 rewind F +GLIBC_2.2 rewinddir F +GLIBC_2.2 rexec F +GLIBC_2.2 rexec_af F +GLIBC_2.2 rexecoptions D 0x4 +GLIBC_2.2 rindex F +GLIBC_2.2 rmdir F +GLIBC_2.2 rpc_createerr D 0x20 +GLIBC_2.2 rpmatch F +GLIBC_2.2 rresvport F +GLIBC_2.2 rresvport_af F +GLIBC_2.2 rtime F +GLIBC_2.2 ruserok F +GLIBC_2.2 ruserok_af F +GLIBC_2.2 ruserpass F +GLIBC_2.2 sbrk F +GLIBC_2.2 scalbn F +GLIBC_2.2 scalbnf F +GLIBC_2.2 scalbnl F +GLIBC_2.2 scandir F +GLIBC_2.2 scandir64 F +GLIBC_2.2 scanf F +GLIBC_2.2 sched_get_priority_max F +GLIBC_2.2 sched_get_priority_min F +GLIBC_2.2 sched_getparam F +GLIBC_2.2 sched_getscheduler F +GLIBC_2.2 sched_rr_get_interval F +GLIBC_2.2 sched_setparam F +GLIBC_2.2 sched_setscheduler F +GLIBC_2.2 sched_yield F +GLIBC_2.2 seed48 F +GLIBC_2.2 seed48_r F +GLIBC_2.2 seekdir F +GLIBC_2.2 select F +GLIBC_2.2 semctl F +GLIBC_2.2 semget F +GLIBC_2.2 semop F +GLIBC_2.2 send F +GLIBC_2.2 sendfile F +GLIBC_2.2 sendmsg F +GLIBC_2.2 sendto F +GLIBC_2.2 setaliasent F +GLIBC_2.2 setbuf F +GLIBC_2.2 setbuffer F +GLIBC_2.2 setcontext F +GLIBC_2.2 setdomainname F +GLIBC_2.2 setegid F +GLIBC_2.2 setenv F +GLIBC_2.2 seteuid F +GLIBC_2.2 setfsent F +GLIBC_2.2 setfsgid F +GLIBC_2.2 setfsuid F +GLIBC_2.2 setgid F +GLIBC_2.2 setgrent F +GLIBC_2.2 setgroups F +GLIBC_2.2 sethostent F +GLIBC_2.2 sethostid F +GLIBC_2.2 sethostname F +GLIBC_2.2 setitimer F +GLIBC_2.2 setjmp F +GLIBC_2.2 setlinebuf F +GLIBC_2.2 setlocale F +GLIBC_2.2 setlogin F +GLIBC_2.2 setlogmask F +GLIBC_2.2 setmntent F +GLIBC_2.2 setnetent F +GLIBC_2.2 setnetgrent F +GLIBC_2.2 setpgid F +GLIBC_2.2 setpgrp F +GLIBC_2.2 setpriority F +GLIBC_2.2 setprotoent F +GLIBC_2.2 setpwent F +GLIBC_2.2 setregid F +GLIBC_2.2 setresgid F +GLIBC_2.2 setresuid F +GLIBC_2.2 setreuid F +GLIBC_2.2 setrlimit F +GLIBC_2.2 setrlimit64 F +GLIBC_2.2 setrpcent F +GLIBC_2.2 setservent F +GLIBC_2.2 setsid F +GLIBC_2.2 setsockopt F +GLIBC_2.2 setspent F +GLIBC_2.2 setstate F +GLIBC_2.2 setstate_r F +GLIBC_2.2 settimeofday F +GLIBC_2.2 setttyent F +GLIBC_2.2 setuid F +GLIBC_2.2 setusershell F +GLIBC_2.2 setutent F +GLIBC_2.2 setutxent F +GLIBC_2.2 setvbuf F +GLIBC_2.2 sgetspent F +GLIBC_2.2 sgetspent_r F +GLIBC_2.2 shmat F +GLIBC_2.2 shmctl F +GLIBC_2.2 shmdt F +GLIBC_2.2 shmget F +GLIBC_2.2 shutdown F +GLIBC_2.2 sigaction F +GLIBC_2.2 sigaddset F +GLIBC_2.2 sigaltstack F +GLIBC_2.2 sigandset F +GLIBC_2.2 sigblock F +GLIBC_2.2 sigdelset F +GLIBC_2.2 sigemptyset F +GLIBC_2.2 sigfillset F +GLIBC_2.2 siggetmask F +GLIBC_2.2 sighold F +GLIBC_2.2 sigignore F +GLIBC_2.2 siginterrupt F +GLIBC_2.2 sigisemptyset F +GLIBC_2.2 sigismember F +GLIBC_2.2 siglongjmp F +GLIBC_2.2 signal F +GLIBC_2.2 sigorset F +GLIBC_2.2 sigpause F +GLIBC_2.2 sigpending F +GLIBC_2.2 sigprocmask F +GLIBC_2.2 sigqueue F +GLIBC_2.2 sigrelse F +GLIBC_2.2 sigreturn F +GLIBC_2.2 sigset F +GLIBC_2.2 sigsetmask F +GLIBC_2.2 sigstack F +GLIBC_2.2 sigsuspend F +GLIBC_2.2 sigtimedwait F +GLIBC_2.2 sigvec F +GLIBC_2.2 sigwait F +GLIBC_2.2 sigwaitinfo F +GLIBC_2.2 sleep F +GLIBC_2.2 snprintf F +GLIBC_2.2 socket F +GLIBC_2.2 socketpair F +GLIBC_2.2 sprintf F +GLIBC_2.2 srand F +GLIBC_2.2 srand48 F +GLIBC_2.2 srand48_r F +GLIBC_2.2 srandom F +GLIBC_2.2 srandom_r F +GLIBC_2.2 sscanf F +GLIBC_2.2 ssignal F +GLIBC_2.2 sstk F +GLIBC_2.2 statfs F +GLIBC_2.2 statfs64 F +GLIBC_2.2 statvfs F +GLIBC_2.2 statvfs64 F +GLIBC_2.2 stderr D 0x8 +GLIBC_2.2 stdin D 0x8 +GLIBC_2.2 stdout D 0x8 +GLIBC_2.2 step F +GLIBC_2.2 stime F +GLIBC_2.2 stpcpy F +GLIBC_2.2 stpncpy F +GLIBC_2.2 strcasecmp F +GLIBC_2.2 strcasestr F +GLIBC_2.2 strcat F +GLIBC_2.2 strchr F +GLIBC_2.2 strchrnul F +GLIBC_2.2 strcmp F +GLIBC_2.2 strcoll F +GLIBC_2.2 strcpy F +GLIBC_2.2 strcspn F +GLIBC_2.2 strdup F +GLIBC_2.2 strerror F +GLIBC_2.2 strerror_r F +GLIBC_2.2 strfmon F +GLIBC_2.2 strfry F +GLIBC_2.2 strftime F +GLIBC_2.2 strlen F +GLIBC_2.2 strncasecmp F +GLIBC_2.2 strncat F +GLIBC_2.2 strncmp F +GLIBC_2.2 strncpy F +GLIBC_2.2 strndup F +GLIBC_2.2 strnlen F +GLIBC_2.2 strpbrk F +GLIBC_2.2 strptime F +GLIBC_2.2 strrchr F +GLIBC_2.2 strsep F +GLIBC_2.2 strsignal F +GLIBC_2.2 strspn F +GLIBC_2.2 strstr F +GLIBC_2.2 strtod F +GLIBC_2.2 strtof F +GLIBC_2.2 strtoimax F +GLIBC_2.2 strtok F +GLIBC_2.2 strtok_r F +GLIBC_2.2 strtol F +GLIBC_2.2 strtold F +GLIBC_2.2 strtoll F +GLIBC_2.2 strtoq F +GLIBC_2.2 strtoul F +GLIBC_2.2 strtoull F +GLIBC_2.2 strtoumax F +GLIBC_2.2 strtouq F +GLIBC_2.2 strverscmp F +GLIBC_2.2 strxfrm F +GLIBC_2.2 stty F +GLIBC_2.2 svc_exit F +GLIBC_2.2 svc_fdset D 0x80 +GLIBC_2.2 svc_getreq F +GLIBC_2.2 svc_getreq_common F +GLIBC_2.2 svc_getreq_poll F +GLIBC_2.2 svc_getreqset F +GLIBC_2.2 svc_max_pollfd D 0x4 +GLIBC_2.2 svc_pollfd D 0x8 +GLIBC_2.2 svc_register F +GLIBC_2.2 svc_run F +GLIBC_2.2 svc_sendreply F +GLIBC_2.2 svc_unregister F +GLIBC_2.2 svcauthdes_stats D 0x18 +GLIBC_2.2 svcerr_auth F +GLIBC_2.2 svcerr_decode F +GLIBC_2.2 svcerr_noproc F +GLIBC_2.2 svcerr_noprog F +GLIBC_2.2 svcerr_progvers F +GLIBC_2.2 svcerr_systemerr F +GLIBC_2.2 svcerr_weakauth F +GLIBC_2.2 svcfd_create F +GLIBC_2.2 svcraw_create F +GLIBC_2.2 svctcp_create F +GLIBC_2.2 svcudp_bufcreate F +GLIBC_2.2 svcudp_create F +GLIBC_2.2 svcudp_enablecache F +GLIBC_2.2 svcunix_create F +GLIBC_2.2 svcunixfd_create F +GLIBC_2.2 swab F +GLIBC_2.2 swapcontext F +GLIBC_2.2 swapoff F +GLIBC_2.2 swapon F +GLIBC_2.2 swprintf F +GLIBC_2.2 swscanf F +GLIBC_2.2 symlink F +GLIBC_2.2 sync F +GLIBC_2.2 sys_errlist D 0x3e8 +GLIBC_2.2 sys_nerr D 0x4 +GLIBC_2.2 sys_sigabbrev D 0x200 +GLIBC_2.2 sys_siglist D 0x200 +GLIBC_2.2 syscall F +GLIBC_2.2 sysconf F +GLIBC_2.2 sysctl F +GLIBC_2.2 sysinfo F +GLIBC_2.2 syslog F +GLIBC_2.2 system F +GLIBC_2.2 sysv_signal F +GLIBC_2.2 tcdrain F +GLIBC_2.2 tcflow F +GLIBC_2.2 tcflush F +GLIBC_2.2 tcgetattr F +GLIBC_2.2 tcgetpgrp F +GLIBC_2.2 tcgetsid F +GLIBC_2.2 tcsendbreak F +GLIBC_2.2 tcsetattr F +GLIBC_2.2 tcsetpgrp F +GLIBC_2.2 tdelete F +GLIBC_2.2 tdestroy F +GLIBC_2.2 telldir F +GLIBC_2.2 tempnam F +GLIBC_2.2 textdomain F +GLIBC_2.2 tfind F +GLIBC_2.2 time F +GLIBC_2.2 timegm F +GLIBC_2.2 timelocal F +GLIBC_2.2 times F +GLIBC_2.2 timezone D 0x8 +GLIBC_2.2 tmpfile F +GLIBC_2.2 tmpfile64 F +GLIBC_2.2 tmpnam F +GLIBC_2.2 tmpnam_r F +GLIBC_2.2 toascii F +GLIBC_2.2 tolower F +GLIBC_2.2 toupper F +GLIBC_2.2 towctrans F +GLIBC_2.2 towlower F +GLIBC_2.2 towupper F +GLIBC_2.2 tr_break F +GLIBC_2.2 truncate F +GLIBC_2.2 truncate64 F +GLIBC_2.2 tsearch F +GLIBC_2.2 ttyname F +GLIBC_2.2 ttyname_r F +GLIBC_2.2 ttyslot F +GLIBC_2.2 twalk F +GLIBC_2.2 tzname D 0x10 +GLIBC_2.2 tzset F +GLIBC_2.2 ualarm F +GLIBC_2.2 ulckpwdf F +GLIBC_2.2 ulimit F +GLIBC_2.2 umask F +GLIBC_2.2 umount F +GLIBC_2.2 umount2 F +GLIBC_2.2 uname F +GLIBC_2.2 ungetc F +GLIBC_2.2 ungetwc F +GLIBC_2.2 unlink F +GLIBC_2.2 unlockpt F +GLIBC_2.2 unsetenv F +GLIBC_2.2 updwtmp F +GLIBC_2.2 updwtmpx F +GLIBC_2.2 uselib F +GLIBC_2.2 user2netname F +GLIBC_2.2 usleep F +GLIBC_2.2 ustat F +GLIBC_2.2 utime F +GLIBC_2.2 utimes F +GLIBC_2.2 utmpname F +GLIBC_2.2 utmpxname F +GLIBC_2.2 valloc F +GLIBC_2.2 vasprintf F +GLIBC_2.2 vdprintf F +GLIBC_2.2 verr F +GLIBC_2.2 verrx F +GLIBC_2.2 versionsort F +GLIBC_2.2 versionsort64 F +GLIBC_2.2 vfork F +GLIBC_2.2 vfprintf F +GLIBC_2.2 vfscanf F +GLIBC_2.2 vfwprintf F +GLIBC_2.2 vfwscanf F +GLIBC_2.2 vhangup F +GLIBC_2.2 vlimit F +GLIBC_2.2 vprintf F +GLIBC_2.2 vscanf F +GLIBC_2.2 vsnprintf F +GLIBC_2.2 vsprintf F +GLIBC_2.2 vsscanf F +GLIBC_2.2 vswprintf F +GLIBC_2.2 vswscanf F +GLIBC_2.2 vsyslog F +GLIBC_2.2 vtimes F +GLIBC_2.2 vwarn F +GLIBC_2.2 vwarnx F +GLIBC_2.2 vwprintf F +GLIBC_2.2 vwscanf F +GLIBC_2.2 wait F +GLIBC_2.2 wait3 F +GLIBC_2.2 wait4 F +GLIBC_2.2 waitid F +GLIBC_2.2 waitpid F +GLIBC_2.2 warn F +GLIBC_2.2 warnx F +GLIBC_2.2 wcpcpy F +GLIBC_2.2 wcpncpy F +GLIBC_2.2 wcrtomb F +GLIBC_2.2 wcscasecmp F +GLIBC_2.2 wcscat F +GLIBC_2.2 wcschr F +GLIBC_2.2 wcschrnul F +GLIBC_2.2 wcscmp F +GLIBC_2.2 wcscoll F +GLIBC_2.2 wcscpy F +GLIBC_2.2 wcscspn F +GLIBC_2.2 wcsdup F +GLIBC_2.2 wcsftime F +GLIBC_2.2 wcslen F +GLIBC_2.2 wcsncasecmp F +GLIBC_2.2 wcsncat F +GLIBC_2.2 wcsncmp F +GLIBC_2.2 wcsncpy F +GLIBC_2.2 wcsnlen F +GLIBC_2.2 wcsnrtombs F +GLIBC_2.2 wcspbrk F +GLIBC_2.2 wcsrchr F +GLIBC_2.2 wcsrtombs F +GLIBC_2.2 wcsspn F +GLIBC_2.2 wcsstr F +GLIBC_2.2 wcstod F +GLIBC_2.2 wcstof F +GLIBC_2.2 wcstoimax F +GLIBC_2.2 wcstok F +GLIBC_2.2 wcstol F +GLIBC_2.2 wcstold F +GLIBC_2.2 wcstoll F +GLIBC_2.2 wcstombs F +GLIBC_2.2 wcstoq F +GLIBC_2.2 wcstoul F +GLIBC_2.2 wcstoull F +GLIBC_2.2 wcstoumax F +GLIBC_2.2 wcstouq F +GLIBC_2.2 wcswcs F +GLIBC_2.2 wcswidth F +GLIBC_2.2 wcsxfrm F +GLIBC_2.2 wctob F +GLIBC_2.2 wctomb F +GLIBC_2.2 wctrans F +GLIBC_2.2 wctype F +GLIBC_2.2 wcwidth F +GLIBC_2.2 wmemchr F +GLIBC_2.2 wmemcmp F +GLIBC_2.2 wmemcpy F +GLIBC_2.2 wmemmove F +GLIBC_2.2 wmempcpy F +GLIBC_2.2 wmemset F +GLIBC_2.2 wordexp F +GLIBC_2.2 wordfree F +GLIBC_2.2 wprintf F +GLIBC_2.2 write F +GLIBC_2.2 writev F +GLIBC_2.2 wscanf F +GLIBC_2.2 xdecrypt F +GLIBC_2.2 xdr_accepted_reply F +GLIBC_2.2 xdr_array F +GLIBC_2.2 xdr_authdes_cred F +GLIBC_2.2 xdr_authdes_verf F +GLIBC_2.2 xdr_authunix_parms F +GLIBC_2.2 xdr_bool F +GLIBC_2.2 xdr_bytes F +GLIBC_2.2 xdr_callhdr F +GLIBC_2.2 xdr_callmsg F +GLIBC_2.2 xdr_char F +GLIBC_2.2 xdr_cryptkeyarg F +GLIBC_2.2 xdr_cryptkeyarg2 F +GLIBC_2.2 xdr_cryptkeyres F +GLIBC_2.2 xdr_des_block F +GLIBC_2.2 xdr_double F +GLIBC_2.2 xdr_enum F +GLIBC_2.2 xdr_float F +GLIBC_2.2 xdr_free F +GLIBC_2.2 xdr_getcredres F +GLIBC_2.2 xdr_hyper F +GLIBC_2.2 xdr_int F +GLIBC_2.2 xdr_int16_t F +GLIBC_2.2 xdr_int32_t F +GLIBC_2.2 xdr_int64_t F +GLIBC_2.2 xdr_int8_t F +GLIBC_2.2 xdr_key_netstarg F +GLIBC_2.2 xdr_key_netstres F +GLIBC_2.2 xdr_keybuf F +GLIBC_2.2 xdr_keystatus F +GLIBC_2.2 xdr_long F +GLIBC_2.2 xdr_longlong_t F +GLIBC_2.2 xdr_netnamestr F +GLIBC_2.2 xdr_netobj F +GLIBC_2.2 xdr_opaque F +GLIBC_2.2 xdr_opaque_auth F +GLIBC_2.2 xdr_pmap F +GLIBC_2.2 xdr_pmaplist F +GLIBC_2.2 xdr_pointer F +GLIBC_2.2 xdr_reference F +GLIBC_2.2 xdr_rejected_reply F +GLIBC_2.2 xdr_replymsg F +GLIBC_2.2 xdr_rmtcall_args F +GLIBC_2.2 xdr_rmtcallres F +GLIBC_2.2 xdr_short F +GLIBC_2.2 xdr_sizeof F +GLIBC_2.2 xdr_string F +GLIBC_2.2 xdr_u_char F +GLIBC_2.2 xdr_u_hyper F +GLIBC_2.2 xdr_u_int F +GLIBC_2.2 xdr_u_long F +GLIBC_2.2 xdr_u_longlong_t F +GLIBC_2.2 xdr_u_short F +GLIBC_2.2 xdr_uint16_t F +GLIBC_2.2 xdr_uint32_t F +GLIBC_2.2 xdr_uint64_t F +GLIBC_2.2 xdr_uint8_t F +GLIBC_2.2 xdr_union F +GLIBC_2.2 xdr_unixcred F +GLIBC_2.2 xdr_vector F +GLIBC_2.2 xdr_void F +GLIBC_2.2 xdr_wrapstring F +GLIBC_2.2 xdrmem_create F +GLIBC_2.2 xdrrec_create F +GLIBC_2.2 xdrrec_endofrecord F +GLIBC_2.2 xdrrec_eof F +GLIBC_2.2 xdrrec_skiprecord F +GLIBC_2.2 xdrstdio_create F +GLIBC_2.2 xencrypt F +GLIBC_2.2 xprt_register F +GLIBC_2.2 xprt_unregister F +GLIBC_2.2.1 GLIBC_2.2.1 A +GLIBC_2.2.1 pivot_root F +GLIBC_2.2.1 posix_openpt F +GLIBC_2.2.2 GLIBC_2.2.2 A +GLIBC_2.2.2 __nss_hostname_digits_dots F +GLIBC_2.2.3 GLIBC_2.2.3 A +GLIBC_2.2.3 __rpc_thread_createerr F +GLIBC_2.2.3 __rpc_thread_svc_fdset F +GLIBC_2.2.3 __rpc_thread_svc_max_pollfd F +GLIBC_2.2.3 __rpc_thread_svc_pollfd F +GLIBC_2.2.3 fnmatch F +GLIBC_2.2.3 sprofil F +GLIBC_2.2.4 GLIBC_2.2.4 A +GLIBC_2.2.4 dl_iterate_phdr F +GLIBC_2.2.4 getgrouplist F +GLIBC_2.2.4 sockatmark F +GLIBC_2.2.6 GLIBC_2.2.6 A +GLIBC_2.2.6 __nanosleep F +GLIBC_2.22 GLIBC_2.22 A +GLIBC_2.22 fmemopen F +GLIBC_2.23 GLIBC_2.23 A +GLIBC_2.23 fts64_children F +GLIBC_2.23 fts64_close F +GLIBC_2.23 fts64_open F +GLIBC_2.23 fts64_read F +GLIBC_2.23 fts64_set F +GLIBC_2.24 GLIBC_2.24 A +GLIBC_2.24 quick_exit F +GLIBC_2.25 GLIBC_2.25 A +GLIBC_2.25 __explicit_bzero_chk F +GLIBC_2.25 explicit_bzero F +GLIBC_2.25 getentropy F +GLIBC_2.25 getrandom F +GLIBC_2.25 strfromd F +GLIBC_2.25 strfromf F +GLIBC_2.25 strfroml F +GLIBC_2.26 GLIBC_2.26 A +GLIBC_2.26 preadv2 F +GLIBC_2.26 preadv64v2 F +GLIBC_2.26 pwritev2 F +GLIBC_2.26 pwritev64v2 F +GLIBC_2.26 reallocarray F +GLIBC_2.3 GLIBC_2.3 A +GLIBC_2.3 __ctype_b_loc F +GLIBC_2.3 __ctype_tolower_loc F +GLIBC_2.3 __ctype_toupper_loc F +GLIBC_2.3 __isctype F +GLIBC_2.3 __strftime_l F +GLIBC_2.3 __uselocale F +GLIBC_2.3 __wcsftime_l F +GLIBC_2.3 _sys_errlist D 0x3f0 +GLIBC_2.3 _sys_nerr D 0x4 +GLIBC_2.3 duplocale F +GLIBC_2.3 fgetxattr F +GLIBC_2.3 flistxattr F +GLIBC_2.3 freeifaddrs F +GLIBC_2.3 freelocale F +GLIBC_2.3 fremovexattr F +GLIBC_2.3 fsetxattr F +GLIBC_2.3 futimes F +GLIBC_2.3 getifaddrs F +GLIBC_2.3 getxattr F +GLIBC_2.3 isalnum_l F +GLIBC_2.3 isalpha_l F +GLIBC_2.3 isblank_l F +GLIBC_2.3 iscntrl_l F +GLIBC_2.3 isctype F +GLIBC_2.3 isdigit_l F +GLIBC_2.3 isgraph_l F +GLIBC_2.3 islower_l F +GLIBC_2.3 isprint_l F +GLIBC_2.3 ispunct_l F +GLIBC_2.3 isspace_l F +GLIBC_2.3 isupper_l F +GLIBC_2.3 iswalnum_l F +GLIBC_2.3 iswalpha_l F +GLIBC_2.3 iswblank_l F +GLIBC_2.3 iswcntrl_l F +GLIBC_2.3 iswctype_l F +GLIBC_2.3 iswdigit_l F +GLIBC_2.3 iswgraph_l F +GLIBC_2.3 iswlower_l F +GLIBC_2.3 iswprint_l F +GLIBC_2.3 iswpunct_l F +GLIBC_2.3 iswspace_l F +GLIBC_2.3 iswupper_l F +GLIBC_2.3 iswxdigit_l F +GLIBC_2.3 isxdigit_l F +GLIBC_2.3 lgetxattr F +GLIBC_2.3 listxattr F +GLIBC_2.3 llistxattr F +GLIBC_2.3 lremovexattr F +GLIBC_2.3 lsetxattr F +GLIBC_2.3 lutimes F +GLIBC_2.3 newlocale F +GLIBC_2.3 nl_langinfo_l F +GLIBC_2.3 readahead F +GLIBC_2.3 realpath F +GLIBC_2.3 removexattr F +GLIBC_2.3 sendfile64 F +GLIBC_2.3 setxattr F +GLIBC_2.3 strcasecmp_l F +GLIBC_2.3 strcoll_l F +GLIBC_2.3 strfmon_l F +GLIBC_2.3 strftime_l F +GLIBC_2.3 strncasecmp_l F +GLIBC_2.3 strtod_l F +GLIBC_2.3 strtof_l F +GLIBC_2.3 strtol_l F +GLIBC_2.3 strtold_l F +GLIBC_2.3 strtoul_l F +GLIBC_2.3 strxfrm_l F +GLIBC_2.3 sys_errlist D 0x3f0 +GLIBC_2.3 sys_nerr D 0x4 +GLIBC_2.3 tolower_l F +GLIBC_2.3 toupper_l F +GLIBC_2.3 towctrans_l F +GLIBC_2.3 towlower_l F +GLIBC_2.3 towupper_l F +GLIBC_2.3 uselocale F +GLIBC_2.3 wcscasecmp_l F +GLIBC_2.3 wcscoll_l F +GLIBC_2.3 wcsftime_l F +GLIBC_2.3 wcsncasecmp_l F +GLIBC_2.3 wcstod_l F +GLIBC_2.3 wcstof_l F +GLIBC_2.3 wcstol_l F +GLIBC_2.3 wcstold_l F +GLIBC_2.3 wcstoll_l F +GLIBC_2.3 wcstoul_l F +GLIBC_2.3 wcstoull_l F +GLIBC_2.3 wcsxfrm_l F +GLIBC_2.3 wctrans_l F +GLIBC_2.3 wctype_l F +GLIBC_2.3.2 GLIBC_2.3.2 A +GLIBC_2.3.2 __register_atfork F +GLIBC_2.3.2 epoll_create F +GLIBC_2.3.2 epoll_ctl F +GLIBC_2.3.2 epoll_wait F +GLIBC_2.3.2 lchmod F +GLIBC_2.3.2 pthread_cond_broadcast F +GLIBC_2.3.2 pthread_cond_destroy F +GLIBC_2.3.2 pthread_cond_init F +GLIBC_2.3.2 pthread_cond_signal F +GLIBC_2.3.2 pthread_cond_timedwait F +GLIBC_2.3.2 pthread_cond_wait F +GLIBC_2.3.2 strptime_l F +GLIBC_2.3.3 GLIBC_2.3.3 A +GLIBC_2.3.3 _sys_siglist D 0x208 +GLIBC_2.3.3 gnu_dev_major F +GLIBC_2.3.3 gnu_dev_makedev F +GLIBC_2.3.3 gnu_dev_minor F +GLIBC_2.3.3 inet6_option_alloc F +GLIBC_2.3.3 inet6_option_append F +GLIBC_2.3.3 inet6_option_find F +GLIBC_2.3.3 inet6_option_init F +GLIBC_2.3.3 inet6_option_next F +GLIBC_2.3.3 inet6_option_space F +GLIBC_2.3.3 nftw F +GLIBC_2.3.3 nftw64 F +GLIBC_2.3.3 remap_file_pages F +GLIBC_2.3.3 sched_getaffinity F +GLIBC_2.3.3 sched_setaffinity F +GLIBC_2.3.3 semtimedop F +GLIBC_2.3.3 strtoll_l F +GLIBC_2.3.3 strtoull_l F +GLIBC_2.3.3 sys_sigabbrev D 0x208 +GLIBC_2.3.3 sys_siglist D 0x208 +GLIBC_2.3.4 GLIBC_2.3.4 A +GLIBC_2.3.4 __chk_fail F +GLIBC_2.3.4 __fprintf_chk F +GLIBC_2.3.4 __gets_chk F +GLIBC_2.3.4 __memcpy_chk F +GLIBC_2.3.4 __memmove_chk F +GLIBC_2.3.4 __mempcpy_chk F +GLIBC_2.3.4 __memset_chk F +GLIBC_2.3.4 __printf_chk F +GLIBC_2.3.4 __snprintf_chk F +GLIBC_2.3.4 __sprintf_chk F +GLIBC_2.3.4 __stpcpy_chk F +GLIBC_2.3.4 __strcat_chk F +GLIBC_2.3.4 __strcpy_chk F +GLIBC_2.3.4 __strncat_chk F +GLIBC_2.3.4 __strncpy_chk F +GLIBC_2.3.4 __vfprintf_chk F +GLIBC_2.3.4 __vprintf_chk F +GLIBC_2.3.4 __vsnprintf_chk F +GLIBC_2.3.4 __vsprintf_chk F +GLIBC_2.3.4 __xpg_strerror_r F +GLIBC_2.3.4 getipv4sourcefilter F +GLIBC_2.3.4 getsourcefilter F +GLIBC_2.3.4 regexec F +GLIBC_2.3.4 sched_getaffinity F +GLIBC_2.3.4 sched_setaffinity F +GLIBC_2.3.4 setipv4sourcefilter F +GLIBC_2.3.4 setsourcefilter F +GLIBC_2.3.4 xdr_quad_t F +GLIBC_2.3.4 xdr_u_quad_t F +GLIBC_2.4 GLIBC_2.4 A +GLIBC_2.4 _IO_fprintf F +GLIBC_2.4 _IO_printf F +GLIBC_2.4 _IO_sprintf F +GLIBC_2.4 _IO_sscanf F +GLIBC_2.4 _IO_vfprintf F +GLIBC_2.4 _IO_vfscanf F +GLIBC_2.4 _IO_vsprintf F +GLIBC_2.4 __asprintf F +GLIBC_2.4 __confstr_chk F +GLIBC_2.4 __fgets_chk F +GLIBC_2.4 __fgets_unlocked_chk F +GLIBC_2.4 __fgetws_chk F +GLIBC_2.4 __fgetws_unlocked_chk F +GLIBC_2.4 __finitel F +GLIBC_2.4 __fprintf_chk F +GLIBC_2.4 __fwprintf_chk F +GLIBC_2.4 __fxstatat F +GLIBC_2.4 __fxstatat64 F +GLIBC_2.4 __getcwd_chk F +GLIBC_2.4 __getdomainname_chk F +GLIBC_2.4 __getgroups_chk F +GLIBC_2.4 __gethostname_chk F +GLIBC_2.4 __getlogin_r_chk F +GLIBC_2.4 __getwd_chk F +GLIBC_2.4 __isinfl F +GLIBC_2.4 __isnanl F +GLIBC_2.4 __mbsnrtowcs_chk F +GLIBC_2.4 __mbsrtowcs_chk F +GLIBC_2.4 __mbstowcs_chk F +GLIBC_2.4 __nldbl__IO_fprintf F +GLIBC_2.4 __nldbl__IO_printf F +GLIBC_2.4 __nldbl__IO_sprintf F +GLIBC_2.4 __nldbl__IO_sscanf F +GLIBC_2.4 __nldbl__IO_vfprintf F +GLIBC_2.4 __nldbl__IO_vfscanf F +GLIBC_2.4 __nldbl__IO_vsprintf F +GLIBC_2.4 __nldbl___asprintf F +GLIBC_2.4 __nldbl___fprintf_chk F +GLIBC_2.4 __nldbl___fwprintf_chk F +GLIBC_2.4 __nldbl___printf_chk F +GLIBC_2.4 __nldbl___printf_fp F +GLIBC_2.4 __nldbl___snprintf_chk F +GLIBC_2.4 __nldbl___sprintf_chk F +GLIBC_2.4 __nldbl___strfmon_l F +GLIBC_2.4 __nldbl___swprintf_chk F +GLIBC_2.4 __nldbl___syslog_chk F +GLIBC_2.4 __nldbl___vfprintf_chk F +GLIBC_2.4 __nldbl___vfscanf F +GLIBC_2.4 __nldbl___vfwprintf_chk F +GLIBC_2.4 __nldbl___vprintf_chk F +GLIBC_2.4 __nldbl___vsnprintf F +GLIBC_2.4 __nldbl___vsnprintf_chk F +GLIBC_2.4 __nldbl___vsprintf_chk F +GLIBC_2.4 __nldbl___vsscanf F +GLIBC_2.4 __nldbl___vstrfmon F +GLIBC_2.4 __nldbl___vstrfmon_l F +GLIBC_2.4 __nldbl___vswprintf_chk F +GLIBC_2.4 __nldbl___vsyslog_chk F +GLIBC_2.4 __nldbl___vwprintf_chk F +GLIBC_2.4 __nldbl___wprintf_chk F +GLIBC_2.4 __nldbl_asprintf F +GLIBC_2.4 __nldbl_dprintf F +GLIBC_2.4 __nldbl_fprintf F +GLIBC_2.4 __nldbl_fscanf F +GLIBC_2.4 __nldbl_fwprintf F +GLIBC_2.4 __nldbl_fwscanf F +GLIBC_2.4 __nldbl_obstack_printf F +GLIBC_2.4 __nldbl_obstack_vprintf F +GLIBC_2.4 __nldbl_printf F +GLIBC_2.4 __nldbl_printf_size F +GLIBC_2.4 __nldbl_scanf F +GLIBC_2.4 __nldbl_snprintf F +GLIBC_2.4 __nldbl_sprintf F +GLIBC_2.4 __nldbl_sscanf F +GLIBC_2.4 __nldbl_strfmon F +GLIBC_2.4 __nldbl_strfmon_l F +GLIBC_2.4 __nldbl_swprintf F +GLIBC_2.4 __nldbl_swscanf F +GLIBC_2.4 __nldbl_syslog F +GLIBC_2.4 __nldbl_vasprintf F +GLIBC_2.4 __nldbl_vdprintf F +GLIBC_2.4 __nldbl_vfprintf F +GLIBC_2.4 __nldbl_vfscanf F +GLIBC_2.4 __nldbl_vfwprintf F +GLIBC_2.4 __nldbl_vfwscanf F +GLIBC_2.4 __nldbl_vprintf F +GLIBC_2.4 __nldbl_vscanf F +GLIBC_2.4 __nldbl_vsnprintf F +GLIBC_2.4 __nldbl_vsprintf F +GLIBC_2.4 __nldbl_vsscanf F +GLIBC_2.4 __nldbl_vswprintf F +GLIBC_2.4 __nldbl_vswscanf F +GLIBC_2.4 __nldbl_vsyslog F +GLIBC_2.4 __nldbl_vwprintf F +GLIBC_2.4 __nldbl_vwscanf F +GLIBC_2.4 __nldbl_wprintf F +GLIBC_2.4 __nldbl_wscanf 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 __ptsname_r_chk F +GLIBC_2.4 __read_chk F +GLIBC_2.4 __readlink_chk F +GLIBC_2.4 __realpath_chk F +GLIBC_2.4 __recv_chk F +GLIBC_2.4 __recvfrom_chk F +GLIBC_2.4 __signbitl F +GLIBC_2.4 __snprintf_chk F +GLIBC_2.4 __sprintf_chk F +GLIBC_2.4 __stack_chk_fail F +GLIBC_2.4 __stpncpy_chk F +GLIBC_2.4 __strfmon_l F +GLIBC_2.4 __strtold_internal F +GLIBC_2.4 __strtold_l F +GLIBC_2.4 __swprintf_chk F +GLIBC_2.4 __syslog_chk F +GLIBC_2.4 __ttyname_r_chk 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 __wcpcpy_chk F +GLIBC_2.4 __wcpncpy_chk F +GLIBC_2.4 __wcrtomb_chk F +GLIBC_2.4 __wcscat_chk F +GLIBC_2.4 __wcscpy_chk F +GLIBC_2.4 __wcsncat_chk F +GLIBC_2.4 __wcsncpy_chk F +GLIBC_2.4 __wcsnrtombs_chk F +GLIBC_2.4 __wcsrtombs_chk F +GLIBC_2.4 __wcstold_internal F +GLIBC_2.4 __wcstold_l F +GLIBC_2.4 __wcstombs_chk F +GLIBC_2.4 __wctomb_chk F +GLIBC_2.4 __wmemcpy_chk F +GLIBC_2.4 __wmemmove_chk F +GLIBC_2.4 __wmempcpy_chk F +GLIBC_2.4 __wmemset_chk F +GLIBC_2.4 __wprintf_chk F +GLIBC_2.4 __xmknodat F +GLIBC_2.4 _sys_errlist D 0x420 +GLIBC_2.4 _sys_nerr D 0x4 +GLIBC_2.4 asprintf F +GLIBC_2.4 copysignl F +GLIBC_2.4 dprintf F +GLIBC_2.4 eaccess F +GLIBC_2.4 faccessat F +GLIBC_2.4 fchmodat F +GLIBC_2.4 fchownat F +GLIBC_2.4 fdopendir F +GLIBC_2.4 finitel F +GLIBC_2.4 fprintf F +GLIBC_2.4 frexpl F +GLIBC_2.4 fscanf F +GLIBC_2.4 futimesat F +GLIBC_2.4 fwprintf F +GLIBC_2.4 fwscanf F +GLIBC_2.4 inotify_add_watch F +GLIBC_2.4 inotify_init F +GLIBC_2.4 inotify_rm_watch F +GLIBC_2.4 isinfl F +GLIBC_2.4 isnanl F +GLIBC_2.4 ldexpl F +GLIBC_2.4 linkat F +GLIBC_2.4 mkdirat F +GLIBC_2.4 mkfifoat F +GLIBC_2.4 modfl F +GLIBC_2.4 obstack_printf F +GLIBC_2.4 obstack_vprintf F +GLIBC_2.4 open_wmemstream F +GLIBC_2.4 openat F +GLIBC_2.4 openat64 F +GLIBC_2.4 ppoll F +GLIBC_2.4 printf F +GLIBC_2.4 printf_size 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 readlinkat F +GLIBC_2.4 renameat F +GLIBC_2.4 scalbnl F +GLIBC_2.4 scanf F +GLIBC_2.4 snprintf F +GLIBC_2.4 sprintf F +GLIBC_2.4 sscanf F +GLIBC_2.4 strfmon F +GLIBC_2.4 strfmon_l F +GLIBC_2.4 strtold F +GLIBC_2.4 strtold_l F +GLIBC_2.4 swprintf F +GLIBC_2.4 swscanf F +GLIBC_2.4 symlinkat F +GLIBC_2.4 sys_errlist D 0x420 +GLIBC_2.4 sys_nerr D 0x4 +GLIBC_2.4 syslog F +GLIBC_2.4 unlinkat F +GLIBC_2.4 unshare F +GLIBC_2.4 vasprintf F +GLIBC_2.4 vdprintf F +GLIBC_2.4 vfprintf F +GLIBC_2.4 vfscanf F +GLIBC_2.4 vfwprintf F +GLIBC_2.4 vfwscanf 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 vwprintf F +GLIBC_2.4 vwscanf F +GLIBC_2.4 wcstold F +GLIBC_2.4 wcstold_l F +GLIBC_2.4 wprintf F +GLIBC_2.4 wscanf 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 __nldbl___isoc99_fscanf F +GLIBC_2.7 __nldbl___isoc99_fwscanf F +GLIBC_2.7 __nldbl___isoc99_scanf F +GLIBC_2.7 __nldbl___isoc99_sscanf F +GLIBC_2.7 __nldbl___isoc99_swscanf F +GLIBC_2.7 __nldbl___isoc99_vfscanf F +GLIBC_2.7 __nldbl___isoc99_vfwscanf F +GLIBC_2.7 __nldbl___isoc99_vscanf F +GLIBC_2.7 __nldbl___isoc99_vsscanf F +GLIBC_2.7 __nldbl___isoc99_vswscanf F +GLIBC_2.7 __nldbl___isoc99_vwscanf F +GLIBC_2.7 __nldbl___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 __nldbl___asprintf_chk F +GLIBC_2.8 __nldbl___dprintf_chk F +GLIBC_2.8 __nldbl___obstack_printf_chk F +GLIBC_2.8 __nldbl___obstack_vprintf_chk F +GLIBC_2.8 __nldbl___vasprintf_chk F +GLIBC_2.8 __nldbl___vdprintf_chk F +GLIBC_2.8 __obstack_printf_chk F +GLIBC_2.8 __obstack_vprintf_chk F +GLIBC_2.8 __vasprintf_chk F +GLIBC_2.8 __vdprintf_chk F +GLIBC_2.8 qsort_r F +GLIBC_2.8 timerfd_create F +GLIBC_2.8 timerfd_gettime F +GLIBC_2.8 timerfd_settime F +GLIBC_2.9 GLIBC_2.9 A +GLIBC_2.9 dup3 F +GLIBC_2.9 epoll_create1 F +GLIBC_2.9 inotify_init1 F +GLIBC_2.9 pipe2 F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/libcrypt.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/libcrypt.abilist new file mode 100644 index 0000000000..f2854f3a0a --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/libcrypt.abilist @@ -0,0 +1,8 @@ +GLIBC_2.2 GLIBC_2.2 A +GLIBC_2.2 crypt F +GLIBC_2.2 crypt_r F +GLIBC_2.2 encrypt F +GLIBC_2.2 encrypt_r F +GLIBC_2.2 fcrypt F +GLIBC_2.2 setkey F +GLIBC_2.2 setkey_r F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist new file mode 100644 index 0000000000..98b031bc6d --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist @@ -0,0 +1,12 @@ +GLIBC_2.2 GLIBC_2.2 A +GLIBC_2.2 dladdr F +GLIBC_2.2 dlclose F +GLIBC_2.2 dlerror F +GLIBC_2.2 dlopen F +GLIBC_2.2 dlsym F +GLIBC_2.2 dlvsym F +GLIBC_2.3.3 GLIBC_2.3.3 A +GLIBC_2.3.3 dladdr1 F +GLIBC_2.3.3 dlinfo F +GLIBC_2.3.4 GLIBC_2.3.4 A +GLIBC_2.3.4 dlmopen F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist new file mode 100644 index 0000000000..b56701e350 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist @@ -0,0 +1,563 @@ +GLIBC_2.15 GLIBC_2.15 A +GLIBC_2.15 __acos_finite F +GLIBC_2.15 __acosf_finite F +GLIBC_2.15 __acosh_finite F +GLIBC_2.15 __acoshf_finite F +GLIBC_2.15 __acoshl_finite F +GLIBC_2.15 __acosl_finite F +GLIBC_2.15 __asin_finite F +GLIBC_2.15 __asinf_finite F +GLIBC_2.15 __asinl_finite F +GLIBC_2.15 __atan2_finite F +GLIBC_2.15 __atan2f_finite F +GLIBC_2.15 __atan2l_finite F +GLIBC_2.15 __atanh_finite F +GLIBC_2.15 __atanhf_finite F +GLIBC_2.15 __atanhl_finite F +GLIBC_2.15 __cosh_finite F +GLIBC_2.15 __coshf_finite F +GLIBC_2.15 __coshl_finite F +GLIBC_2.15 __exp10_finite F +GLIBC_2.15 __exp10f_finite F +GLIBC_2.15 __exp10l_finite F +GLIBC_2.15 __exp2_finite F +GLIBC_2.15 __exp2f_finite F +GLIBC_2.15 __exp2l_finite F +GLIBC_2.15 __exp_finite F +GLIBC_2.15 __expf_finite F +GLIBC_2.15 __expl_finite F +GLIBC_2.15 __fmod_finite F +GLIBC_2.15 __fmodf_finite F +GLIBC_2.15 __fmodl_finite F +GLIBC_2.15 __gamma_r_finite F +GLIBC_2.15 __gammaf_r_finite F +GLIBC_2.15 __gammal_r_finite F +GLIBC_2.15 __hypot_finite F +GLIBC_2.15 __hypotf_finite F +GLIBC_2.15 __hypotl_finite F +GLIBC_2.15 __j0_finite F +GLIBC_2.15 __j0f_finite F +GLIBC_2.15 __j0l_finite F +GLIBC_2.15 __j1_finite F +GLIBC_2.15 __j1f_finite F +GLIBC_2.15 __j1l_finite F +GLIBC_2.15 __jn_finite F +GLIBC_2.15 __jnf_finite F +GLIBC_2.15 __jnl_finite F +GLIBC_2.15 __lgamma_r_finite F +GLIBC_2.15 __lgammaf_r_finite F +GLIBC_2.15 __lgammal_r_finite F +GLIBC_2.15 __log10_finite F +GLIBC_2.15 __log10f_finite F +GLIBC_2.15 __log10l_finite F +GLIBC_2.15 __log2_finite F +GLIBC_2.15 __log2f_finite F +GLIBC_2.15 __log2l_finite F +GLIBC_2.15 __log_finite F +GLIBC_2.15 __logf_finite F +GLIBC_2.15 __logl_finite F +GLIBC_2.15 __pow_finite F +GLIBC_2.15 __powf_finite F +GLIBC_2.15 __powl_finite F +GLIBC_2.15 __remainder_finite F +GLIBC_2.15 __remainderf_finite F +GLIBC_2.15 __remainderl_finite F +GLIBC_2.15 __scalb_finite F +GLIBC_2.15 __scalbf_finite F +GLIBC_2.15 __scalbl_finite F +GLIBC_2.15 __sinh_finite F +GLIBC_2.15 __sinhf_finite F +GLIBC_2.15 __sinhl_finite F +GLIBC_2.15 __sqrt_finite F +GLIBC_2.15 __sqrtf_finite F +GLIBC_2.15 __sqrtl_finite F +GLIBC_2.15 __y0_finite F +GLIBC_2.15 __y0f_finite F +GLIBC_2.15 __y0l_finite F +GLIBC_2.15 __y1_finite F +GLIBC_2.15 __y1f_finite F +GLIBC_2.15 __y1l_finite F +GLIBC_2.15 __yn_finite F +GLIBC_2.15 __ynf_finite F +GLIBC_2.15 __ynl_finite F +GLIBC_2.18 GLIBC_2.18 A +GLIBC_2.18 __issignaling F +GLIBC_2.18 __issignalingf F +GLIBC_2.18 __issignalingl F +GLIBC_2.2 GLIBC_2.2 A +GLIBC_2.2 _LIB_VERSION D 0x4 +GLIBC_2.2 __clog10 F +GLIBC_2.2 __clog10f F +GLIBC_2.2 __clog10l F +GLIBC_2.2 __finite F +GLIBC_2.2 __finitef F +GLIBC_2.2 __finitel F +GLIBC_2.2 __fpclassify F +GLIBC_2.2 __fpclassifyf F +GLIBC_2.2 __signbit F +GLIBC_2.2 __signbitf F +GLIBC_2.2 acos F +GLIBC_2.2 acosf F +GLIBC_2.2 acosh F +GLIBC_2.2 acoshf F +GLIBC_2.2 acoshl F +GLIBC_2.2 acosl F +GLIBC_2.2 asin F +GLIBC_2.2 asinf F +GLIBC_2.2 asinh F +GLIBC_2.2 asinhf F +GLIBC_2.2 asinhl F +GLIBC_2.2 asinl F +GLIBC_2.2 atan F +GLIBC_2.2 atan2 F +GLIBC_2.2 atan2f F +GLIBC_2.2 atan2l F +GLIBC_2.2 atanf F +GLIBC_2.2 atanh F +GLIBC_2.2 atanhf F +GLIBC_2.2 atanhl F +GLIBC_2.2 atanl F +GLIBC_2.2 cabs F +GLIBC_2.2 cabsf F +GLIBC_2.2 cabsl F +GLIBC_2.2 cacos F +GLIBC_2.2 cacosf F +GLIBC_2.2 cacosh F +GLIBC_2.2 cacoshf F +GLIBC_2.2 cacoshl F +GLIBC_2.2 cacosl F +GLIBC_2.2 carg F +GLIBC_2.2 cargf F +GLIBC_2.2 cargl F +GLIBC_2.2 casin F +GLIBC_2.2 casinf F +GLIBC_2.2 casinh F +GLIBC_2.2 casinhf F +GLIBC_2.2 casinhl F +GLIBC_2.2 casinl F +GLIBC_2.2 catan F +GLIBC_2.2 catanf F +GLIBC_2.2 catanh F +GLIBC_2.2 catanhf F +GLIBC_2.2 catanhl F +GLIBC_2.2 catanl F +GLIBC_2.2 cbrt F +GLIBC_2.2 cbrtf F +GLIBC_2.2 cbrtl F +GLIBC_2.2 ccos F +GLIBC_2.2 ccosf F +GLIBC_2.2 ccosh F +GLIBC_2.2 ccoshf F +GLIBC_2.2 ccoshl F +GLIBC_2.2 ccosl F +GLIBC_2.2 ceil F +GLIBC_2.2 ceilf F +GLIBC_2.2 ceill F +GLIBC_2.2 cexp F +GLIBC_2.2 cexpf F +GLIBC_2.2 cexpl F +GLIBC_2.2 cimag F +GLIBC_2.2 cimagf F +GLIBC_2.2 cimagl F +GLIBC_2.2 clog F +GLIBC_2.2 clog10 F +GLIBC_2.2 clog10f F +GLIBC_2.2 clog10l F +GLIBC_2.2 clogf F +GLIBC_2.2 clogl F +GLIBC_2.2 conj F +GLIBC_2.2 conjf F +GLIBC_2.2 conjl F +GLIBC_2.2 copysign F +GLIBC_2.2 copysignf F +GLIBC_2.2 copysignl F +GLIBC_2.2 cos F +GLIBC_2.2 cosf F +GLIBC_2.2 cosh F +GLIBC_2.2 coshf F +GLIBC_2.2 coshl F +GLIBC_2.2 cosl F +GLIBC_2.2 cpow F +GLIBC_2.2 cpowf F +GLIBC_2.2 cpowl F +GLIBC_2.2 cproj F +GLIBC_2.2 cprojf F +GLIBC_2.2 cprojl F +GLIBC_2.2 creal F +GLIBC_2.2 crealf F +GLIBC_2.2 creall F +GLIBC_2.2 csin F +GLIBC_2.2 csinf F +GLIBC_2.2 csinh F +GLIBC_2.2 csinhf F +GLIBC_2.2 csinhl F +GLIBC_2.2 csinl F +GLIBC_2.2 csqrt F +GLIBC_2.2 csqrtf F +GLIBC_2.2 csqrtl F +GLIBC_2.2 ctan F +GLIBC_2.2 ctanf F +GLIBC_2.2 ctanh F +GLIBC_2.2 ctanhf F +GLIBC_2.2 ctanhl F +GLIBC_2.2 ctanl F +GLIBC_2.2 drem F +GLIBC_2.2 dremf F +GLIBC_2.2 dreml F +GLIBC_2.2 erf F +GLIBC_2.2 erfc F +GLIBC_2.2 erfcf F +GLIBC_2.2 erfcl F +GLIBC_2.2 erff F +GLIBC_2.2 erfl F +GLIBC_2.2 exp F +GLIBC_2.2 exp10 F +GLIBC_2.2 exp10f F +GLIBC_2.2 exp10l F +GLIBC_2.2 exp2 F +GLIBC_2.2 exp2f F +GLIBC_2.2 expf F +GLIBC_2.2 expl F +GLIBC_2.2 expm1 F +GLIBC_2.2 expm1f F +GLIBC_2.2 expm1l F +GLIBC_2.2 fabs F +GLIBC_2.2 fabsf F +GLIBC_2.2 fabsl F +GLIBC_2.2 fdim F +GLIBC_2.2 fdimf F +GLIBC_2.2 fdiml F +GLIBC_2.2 feclearexcept F +GLIBC_2.2 fedisableexcept F +GLIBC_2.2 feenableexcept F +GLIBC_2.2 fegetenv F +GLIBC_2.2 fegetexcept F +GLIBC_2.2 fegetexceptflag F +GLIBC_2.2 fegetround F +GLIBC_2.2 feholdexcept F +GLIBC_2.2 feraiseexcept F +GLIBC_2.2 fesetenv F +GLIBC_2.2 fesetexceptflag F +GLIBC_2.2 fesetround F +GLIBC_2.2 fetestexcept F +GLIBC_2.2 feupdateenv F +GLIBC_2.2 finite F +GLIBC_2.2 finitef F +GLIBC_2.2 finitel F +GLIBC_2.2 floor F +GLIBC_2.2 floorf F +GLIBC_2.2 floorl F +GLIBC_2.2 fma F +GLIBC_2.2 fmaf F +GLIBC_2.2 fmal F +GLIBC_2.2 fmax F +GLIBC_2.2 fmaxf F +GLIBC_2.2 fmaxl F +GLIBC_2.2 fmin F +GLIBC_2.2 fminf F +GLIBC_2.2 fminl F +GLIBC_2.2 fmod F +GLIBC_2.2 fmodf F +GLIBC_2.2 fmodl F +GLIBC_2.2 frexp F +GLIBC_2.2 frexpf F +GLIBC_2.2 frexpl F +GLIBC_2.2 gamma F +GLIBC_2.2 gammaf F +GLIBC_2.2 gammal F +GLIBC_2.2 hypot F +GLIBC_2.2 hypotf F +GLIBC_2.2 hypotl F +GLIBC_2.2 ilogb F +GLIBC_2.2 ilogbf F +GLIBC_2.2 ilogbl F +GLIBC_2.2 j0 F +GLIBC_2.2 j0f F +GLIBC_2.2 j0l F +GLIBC_2.2 j1 F +GLIBC_2.2 j1f F +GLIBC_2.2 j1l F +GLIBC_2.2 jn F +GLIBC_2.2 jnf F +GLIBC_2.2 jnl F +GLIBC_2.2 ldexp F +GLIBC_2.2 ldexpf F +GLIBC_2.2 ldexpl F +GLIBC_2.2 lgamma F +GLIBC_2.2 lgamma_r F +GLIBC_2.2 lgammaf F +GLIBC_2.2 lgammaf_r F +GLIBC_2.2 lgammal F +GLIBC_2.2 lgammal_r F +GLIBC_2.2 llrint F +GLIBC_2.2 llrintf F +GLIBC_2.2 llrintl F +GLIBC_2.2 llround F +GLIBC_2.2 llroundf F +GLIBC_2.2 llroundl F +GLIBC_2.2 log F +GLIBC_2.2 log10 F +GLIBC_2.2 log10f F +GLIBC_2.2 log10l F +GLIBC_2.2 log1p F +GLIBC_2.2 log1pf F +GLIBC_2.2 log1pl F +GLIBC_2.2 log2 F +GLIBC_2.2 log2f F +GLIBC_2.2 log2l F +GLIBC_2.2 logb F +GLIBC_2.2 logbf F +GLIBC_2.2 logbl F +GLIBC_2.2 logf F +GLIBC_2.2 logl F +GLIBC_2.2 lrint F +GLIBC_2.2 lrintf F +GLIBC_2.2 lrintl F +GLIBC_2.2 lround F +GLIBC_2.2 lroundf F +GLIBC_2.2 lroundl F +GLIBC_2.2 matherr F +GLIBC_2.2 modf F +GLIBC_2.2 modff F +GLIBC_2.2 modfl F +GLIBC_2.2 nan F +GLIBC_2.2 nanf F +GLIBC_2.2 nanl F +GLIBC_2.2 nearbyint F +GLIBC_2.2 nearbyintf F +GLIBC_2.2 nearbyintl F +GLIBC_2.2 nextafter F +GLIBC_2.2 nextafterf F +GLIBC_2.2 nextafterl F +GLIBC_2.2 nexttoward F +GLIBC_2.2 nexttowardf F +GLIBC_2.2 nexttowardl F +GLIBC_2.2 pow F +GLIBC_2.2 pow10 F +GLIBC_2.2 pow10f F +GLIBC_2.2 pow10l F +GLIBC_2.2 powf F +GLIBC_2.2 powl F +GLIBC_2.2 remainder F +GLIBC_2.2 remainderf F +GLIBC_2.2 remainderl F +GLIBC_2.2 remquo F +GLIBC_2.2 remquof F +GLIBC_2.2 remquol F +GLIBC_2.2 rint F +GLIBC_2.2 rintf F +GLIBC_2.2 rintl F +GLIBC_2.2 round F +GLIBC_2.2 roundf F +GLIBC_2.2 roundl F +GLIBC_2.2 scalb F +GLIBC_2.2 scalbf F +GLIBC_2.2 scalbl F +GLIBC_2.2 scalbln F +GLIBC_2.2 scalblnf F +GLIBC_2.2 scalblnl F +GLIBC_2.2 scalbn F +GLIBC_2.2 scalbnf F +GLIBC_2.2 scalbnl F +GLIBC_2.2 signgam D 0x4 +GLIBC_2.2 significand F +GLIBC_2.2 significandf F +GLIBC_2.2 significandl F +GLIBC_2.2 sin F +GLIBC_2.2 sincos F +GLIBC_2.2 sincosf F +GLIBC_2.2 sincosl F +GLIBC_2.2 sinf F +GLIBC_2.2 sinh F +GLIBC_2.2 sinhf F +GLIBC_2.2 sinhl F +GLIBC_2.2 sinl F +GLIBC_2.2 sqrt F +GLIBC_2.2 sqrtf F +GLIBC_2.2 sqrtl F +GLIBC_2.2 tan F +GLIBC_2.2 tanf F +GLIBC_2.2 tanh F +GLIBC_2.2 tanhf F +GLIBC_2.2 tanhl F +GLIBC_2.2 tanl F +GLIBC_2.2 tgamma F +GLIBC_2.2 tgammaf F +GLIBC_2.2 tgammal F +GLIBC_2.2 trunc F +GLIBC_2.2 truncf F +GLIBC_2.2 truncl F +GLIBC_2.2 y0 F +GLIBC_2.2 y0f F +GLIBC_2.2 y0l F +GLIBC_2.2 y1 F +GLIBC_2.2 y1f F +GLIBC_2.2 y1l F +GLIBC_2.2 yn F +GLIBC_2.2 ynf F +GLIBC_2.2 ynl 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 __iseqsigl F +GLIBC_2.25 canonicalize F +GLIBC_2.25 canonicalizef F +GLIBC_2.25 canonicalizel F +GLIBC_2.25 fegetmode F +GLIBC_2.25 fesetexcept F +GLIBC_2.25 fesetmode F +GLIBC_2.25 fetestexceptflag F +GLIBC_2.25 fmaxmag F +GLIBC_2.25 fmaxmagf F +GLIBC_2.25 fmaxmagl F +GLIBC_2.25 fminmag F +GLIBC_2.25 fminmagf F +GLIBC_2.25 fminmagl F +GLIBC_2.25 fromfp F +GLIBC_2.25 fromfpf F +GLIBC_2.25 fromfpl F +GLIBC_2.25 fromfpx F +GLIBC_2.25 fromfpxf F +GLIBC_2.25 fromfpxl F +GLIBC_2.25 getpayload F +GLIBC_2.25 getpayloadf F +GLIBC_2.25 getpayloadl F +GLIBC_2.25 llogb F +GLIBC_2.25 llogbf F +GLIBC_2.25 llogbl F +GLIBC_2.25 roundeven F +GLIBC_2.25 roundevenf F +GLIBC_2.25 roundevenl F +GLIBC_2.25 setpayload F +GLIBC_2.25 setpayloadf F +GLIBC_2.25 setpayloadl F +GLIBC_2.25 setpayloadsig F +GLIBC_2.25 setpayloadsigf F +GLIBC_2.25 setpayloadsigl F +GLIBC_2.25 totalorder F +GLIBC_2.25 totalorderf F +GLIBC_2.25 totalorderl F +GLIBC_2.25 totalordermag F +GLIBC_2.25 totalordermagf F +GLIBC_2.25 totalordermagl F +GLIBC_2.25 ufromfp F +GLIBC_2.25 ufromfpf F +GLIBC_2.25 ufromfpl F +GLIBC_2.25 ufromfpx F +GLIBC_2.25 ufromfpxf F +GLIBC_2.25 ufromfpxl F +GLIBC_2.4 GLIBC_2.4 A +GLIBC_2.4 __clog10l F +GLIBC_2.4 __finitel F +GLIBC_2.4 __fpclassifyl F +GLIBC_2.4 __nldbl_nexttowardf F +GLIBC_2.4 __signbitl F +GLIBC_2.4 acoshl F +GLIBC_2.4 acosl F +GLIBC_2.4 asinhl F +GLIBC_2.4 asinl F +GLIBC_2.4 atan2l F +GLIBC_2.4 atanhl F +GLIBC_2.4 atanl F +GLIBC_2.4 cabsl F +GLIBC_2.4 cacoshl F +GLIBC_2.4 cacosl F +GLIBC_2.4 cargl F +GLIBC_2.4 casinhl F +GLIBC_2.4 casinl F +GLIBC_2.4 catanhl F +GLIBC_2.4 catanl F +GLIBC_2.4 cbrtl F +GLIBC_2.4 ccoshl F +GLIBC_2.4 ccosl F +GLIBC_2.4 ceill F +GLIBC_2.4 cexpl F +GLIBC_2.4 cimagl F +GLIBC_2.4 clog10l F +GLIBC_2.4 clogl F +GLIBC_2.4 conjl F +GLIBC_2.4 copysignl F +GLIBC_2.4 coshl F +GLIBC_2.4 cosl F +GLIBC_2.4 cpowl F +GLIBC_2.4 cprojl F +GLIBC_2.4 creall F +GLIBC_2.4 csinhl F +GLIBC_2.4 csinl F +GLIBC_2.4 csqrtl F +GLIBC_2.4 ctanhl F +GLIBC_2.4 ctanl F +GLIBC_2.4 dreml F +GLIBC_2.4 erfcl F +GLIBC_2.4 erfl F +GLIBC_2.4 exp10l F +GLIBC_2.4 exp2l F +GLIBC_2.4 expl F +GLIBC_2.4 expm1l F +GLIBC_2.4 fabsl F +GLIBC_2.4 fdiml F +GLIBC_2.4 finitel F +GLIBC_2.4 floorl F +GLIBC_2.4 fmal F +GLIBC_2.4 fmaxl F +GLIBC_2.4 fminl F +GLIBC_2.4 fmodl F +GLIBC_2.4 frexpl F +GLIBC_2.4 gammal F +GLIBC_2.4 hypotl F +GLIBC_2.4 ilogbl F +GLIBC_2.4 j0l F +GLIBC_2.4 j1l F +GLIBC_2.4 jnl F +GLIBC_2.4 ldexpl F +GLIBC_2.4 lgammal F +GLIBC_2.4 lgammal_r F +GLIBC_2.4 llrintl F +GLIBC_2.4 llroundl F +GLIBC_2.4 log10l F +GLIBC_2.4 log1pl F +GLIBC_2.4 log2l F +GLIBC_2.4 logbl F +GLIBC_2.4 logl F +GLIBC_2.4 lrintl F +GLIBC_2.4 lroundl F +GLIBC_2.4 modfl F +GLIBC_2.4 nanl F +GLIBC_2.4 nearbyintl F +GLIBC_2.4 nextafterl F +GLIBC_2.4 nexttoward F +GLIBC_2.4 nexttowardf F +GLIBC_2.4 nexttowardl F +GLIBC_2.4 pow10l F +GLIBC_2.4 powl F +GLIBC_2.4 remainderl F +GLIBC_2.4 remquol F +GLIBC_2.4 rintl F +GLIBC_2.4 roundl F +GLIBC_2.4 scalbl F +GLIBC_2.4 scalblnl F +GLIBC_2.4 scalbnl F +GLIBC_2.4 significandl F +GLIBC_2.4 sincosl F +GLIBC_2.4 sinhl F +GLIBC_2.4 sinl F +GLIBC_2.4 sqrtl F +GLIBC_2.4 tanhl F +GLIBC_2.4 tanl F +GLIBC_2.4 tgammal F +GLIBC_2.4 truncl F +GLIBC_2.4 y0l F +GLIBC_2.4 y1l F +GLIBC_2.4 ynl F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/libnsl.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/libnsl.abilist new file mode 100644 index 0000000000..ff0199f313 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/libnsl.abilist @@ -0,0 +1,122 @@ +GLIBC_2.2 GLIBC_2.2 A +GLIBC_2.2 __free_fdresult F +GLIBC_2.2 __nis_default_access F +GLIBC_2.2 __nis_default_group F +GLIBC_2.2 __nis_default_owner F +GLIBC_2.2 __nis_default_ttl F +GLIBC_2.2 __nis_finddirectory F +GLIBC_2.2 __nis_hash F +GLIBC_2.2 __nisbind_connect F +GLIBC_2.2 __nisbind_create F +GLIBC_2.2 __nisbind_destroy F +GLIBC_2.2 __nisbind_next F +GLIBC_2.2 __yp_check F +GLIBC_2.2 nis_add F +GLIBC_2.2 nis_add_entry F +GLIBC_2.2 nis_addmember F +GLIBC_2.2 nis_checkpoint F +GLIBC_2.2 nis_clone_directory F +GLIBC_2.2 nis_clone_object F +GLIBC_2.2 nis_clone_result F +GLIBC_2.2 nis_creategroup F +GLIBC_2.2 nis_destroy_object F +GLIBC_2.2 nis_destroygroup F +GLIBC_2.2 nis_dir_cmp F +GLIBC_2.2 nis_domain_of F +GLIBC_2.2 nis_domain_of_r F +GLIBC_2.2 nis_first_entry F +GLIBC_2.2 nis_free_directory F +GLIBC_2.2 nis_free_object F +GLIBC_2.2 nis_free_request F +GLIBC_2.2 nis_freenames F +GLIBC_2.2 nis_freeresult F +GLIBC_2.2 nis_freeservlist F +GLIBC_2.2 nis_freetags F +GLIBC_2.2 nis_getnames F +GLIBC_2.2 nis_getservlist F +GLIBC_2.2 nis_ismember F +GLIBC_2.2 nis_leaf_of F +GLIBC_2.2 nis_leaf_of_r F +GLIBC_2.2 nis_lerror F +GLIBC_2.2 nis_list F +GLIBC_2.2 nis_local_directory F +GLIBC_2.2 nis_local_group F +GLIBC_2.2 nis_local_host F +GLIBC_2.2 nis_local_principal F +GLIBC_2.2 nis_lookup F +GLIBC_2.2 nis_mkdir F +GLIBC_2.2 nis_modify F +GLIBC_2.2 nis_modify_entry F +GLIBC_2.2 nis_name_of F +GLIBC_2.2 nis_name_of_r F +GLIBC_2.2 nis_next_entry F +GLIBC_2.2 nis_perror F +GLIBC_2.2 nis_ping F +GLIBC_2.2 nis_print_directory F +GLIBC_2.2 nis_print_entry F +GLIBC_2.2 nis_print_group F +GLIBC_2.2 nis_print_group_entry F +GLIBC_2.2 nis_print_link F +GLIBC_2.2 nis_print_object F +GLIBC_2.2 nis_print_result F +GLIBC_2.2 nis_print_rights F +GLIBC_2.2 nis_print_table F +GLIBC_2.2 nis_read_obj F +GLIBC_2.2 nis_remove F +GLIBC_2.2 nis_remove_entry F +GLIBC_2.2 nis_removemember F +GLIBC_2.2 nis_rmdir F +GLIBC_2.2 nis_servstate F +GLIBC_2.2 nis_sperrno F +GLIBC_2.2 nis_sperror F +GLIBC_2.2 nis_sperror_r F +GLIBC_2.2 nis_stats F +GLIBC_2.2 nis_verifygroup F +GLIBC_2.2 nis_write_obj F +GLIBC_2.2 readColdStartFile F +GLIBC_2.2 writeColdStartFile F +GLIBC_2.2 xdr_cback_data F +GLIBC_2.2 xdr_domainname F +GLIBC_2.2 xdr_keydat F +GLIBC_2.2 xdr_mapname F +GLIBC_2.2 xdr_obj_p F +GLIBC_2.2 xdr_peername F +GLIBC_2.2 xdr_valdat F +GLIBC_2.2 xdr_yp_buf F +GLIBC_2.2 xdr_ypall F +GLIBC_2.2 xdr_ypbind_binding F +GLIBC_2.2 xdr_ypbind_resp F +GLIBC_2.2 xdr_ypbind_resptype F +GLIBC_2.2 xdr_ypbind_setdom F +GLIBC_2.2 xdr_ypdelete_args F +GLIBC_2.2 xdr_ypmap_parms F +GLIBC_2.2 xdr_ypmaplist F +GLIBC_2.2 xdr_yppush_status F +GLIBC_2.2 xdr_yppushresp_xfr F +GLIBC_2.2 xdr_ypreq_key F +GLIBC_2.2 xdr_ypreq_nokey F +GLIBC_2.2 xdr_ypreq_xfr F +GLIBC_2.2 xdr_ypresp_all F +GLIBC_2.2 xdr_ypresp_key_val F +GLIBC_2.2 xdr_ypresp_maplist F +GLIBC_2.2 xdr_ypresp_master F +GLIBC_2.2 xdr_ypresp_order F +GLIBC_2.2 xdr_ypresp_val F +GLIBC_2.2 xdr_ypresp_xfr F +GLIBC_2.2 xdr_ypstat F +GLIBC_2.2 xdr_ypupdate_args F +GLIBC_2.2 xdr_ypxfrstat F +GLIBC_2.2 yp_all F +GLIBC_2.2 yp_bind F +GLIBC_2.2 yp_first F +GLIBC_2.2 yp_get_default_domain F +GLIBC_2.2 yp_maplist F +GLIBC_2.2 yp_master F +GLIBC_2.2 yp_match F +GLIBC_2.2 yp_next F +GLIBC_2.2 yp_order F +GLIBC_2.2 yp_unbind F +GLIBC_2.2 yp_update F +GLIBC_2.2 ypbinderr_string F +GLIBC_2.2 yperr_string F +GLIBC_2.2 ypprot_err F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist new file mode 100644 index 0000000000..83a1fcd239 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist @@ -0,0 +1,248 @@ +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.19 GLIBC_2.19 A +GLIBC_2.19 longjmp F +GLIBC_2.19 siglongjmp F +GLIBC_2.2 GLIBC_2.2 A +GLIBC_2.2 _IO_flockfile F +GLIBC_2.2 _IO_ftrylockfile F +GLIBC_2.2 _IO_funlockfile F +GLIBC_2.2 __close F +GLIBC_2.2 __connect F +GLIBC_2.2 __errno_location F +GLIBC_2.2 __fcntl F +GLIBC_2.2 __fork F +GLIBC_2.2 __h_errno_location F +GLIBC_2.2 __libc_allocate_rtsig F +GLIBC_2.2 __libc_current_sigrtmax F +GLIBC_2.2 __libc_current_sigrtmin F +GLIBC_2.2 __lseek F +GLIBC_2.2 __open F +GLIBC_2.2 __open64 F +GLIBC_2.2 __pread64 F +GLIBC_2.2 __pthread_getspecific F +GLIBC_2.2 __pthread_key_create F +GLIBC_2.2 __pthread_mutex_destroy F +GLIBC_2.2 __pthread_mutex_init F +GLIBC_2.2 __pthread_mutex_lock F +GLIBC_2.2 __pthread_mutex_trylock F +GLIBC_2.2 __pthread_mutex_unlock F +GLIBC_2.2 __pthread_mutexattr_destroy F +GLIBC_2.2 __pthread_mutexattr_init F +GLIBC_2.2 __pthread_mutexattr_settype F +GLIBC_2.2 __pthread_once F +GLIBC_2.2 __pthread_rwlock_destroy F +GLIBC_2.2 __pthread_rwlock_init F +GLIBC_2.2 __pthread_rwlock_rdlock F +GLIBC_2.2 __pthread_rwlock_tryrdlock F +GLIBC_2.2 __pthread_rwlock_trywrlock F +GLIBC_2.2 __pthread_rwlock_unlock F +GLIBC_2.2 __pthread_rwlock_wrlock F +GLIBC_2.2 __pthread_setspecific F +GLIBC_2.2 __pwrite64 F +GLIBC_2.2 __read F +GLIBC_2.2 __res_state F +GLIBC_2.2 __send F +GLIBC_2.2 __sigaction F +GLIBC_2.2 __vfork F +GLIBC_2.2 __wait F +GLIBC_2.2 __write F +GLIBC_2.2 _pthread_cleanup_pop F +GLIBC_2.2 _pthread_cleanup_pop_restore F +GLIBC_2.2 _pthread_cleanup_push F +GLIBC_2.2 _pthread_cleanup_push_defer F +GLIBC_2.2 accept F +GLIBC_2.2 close F +GLIBC_2.2 connect F +GLIBC_2.2 fcntl F +GLIBC_2.2 flockfile F +GLIBC_2.2 fork F +GLIBC_2.2 fsync F +GLIBC_2.2 ftrylockfile F +GLIBC_2.2 funlockfile F +GLIBC_2.2 longjmp F +GLIBC_2.2 lseek F +GLIBC_2.2 lseek64 F +GLIBC_2.2 msync F +GLIBC_2.2 nanosleep F +GLIBC_2.2 open F +GLIBC_2.2 open64 F +GLIBC_2.2 pause F +GLIBC_2.2 pread F +GLIBC_2.2 pread64 F +GLIBC_2.2 pthread_atfork F +GLIBC_2.2 pthread_attr_destroy F +GLIBC_2.2 pthread_attr_getdetachstate F +GLIBC_2.2 pthread_attr_getguardsize F +GLIBC_2.2 pthread_attr_getinheritsched F +GLIBC_2.2 pthread_attr_getschedparam F +GLIBC_2.2 pthread_attr_getschedpolicy F +GLIBC_2.2 pthread_attr_getscope F +GLIBC_2.2 pthread_attr_getstack F +GLIBC_2.2 pthread_attr_getstackaddr F +GLIBC_2.2 pthread_attr_getstacksize F +GLIBC_2.2 pthread_attr_init F +GLIBC_2.2 pthread_attr_setdetachstate F +GLIBC_2.2 pthread_attr_setguardsize F +GLIBC_2.2 pthread_attr_setinheritsched F +GLIBC_2.2 pthread_attr_setschedparam F +GLIBC_2.2 pthread_attr_setschedpolicy F +GLIBC_2.2 pthread_attr_setscope F +GLIBC_2.2 pthread_attr_setstack F +GLIBC_2.2 pthread_attr_setstackaddr F +GLIBC_2.2 pthread_attr_setstacksize F +GLIBC_2.2 pthread_barrier_destroy F +GLIBC_2.2 pthread_barrier_init F +GLIBC_2.2 pthread_barrier_wait F +GLIBC_2.2 pthread_barrierattr_destroy F +GLIBC_2.2 pthread_barrierattr_init F +GLIBC_2.2 pthread_barrierattr_setpshared F +GLIBC_2.2 pthread_cancel F +GLIBC_2.2 pthread_cond_broadcast F +GLIBC_2.2 pthread_cond_destroy F +GLIBC_2.2 pthread_cond_init F +GLIBC_2.2 pthread_cond_signal F +GLIBC_2.2 pthread_cond_timedwait F +GLIBC_2.2 pthread_cond_wait F +GLIBC_2.2 pthread_condattr_destroy F +GLIBC_2.2 pthread_condattr_getpshared F +GLIBC_2.2 pthread_condattr_init F +GLIBC_2.2 pthread_condattr_setpshared F +GLIBC_2.2 pthread_create F +GLIBC_2.2 pthread_detach F +GLIBC_2.2 pthread_equal F +GLIBC_2.2 pthread_exit F +GLIBC_2.2 pthread_getconcurrency F +GLIBC_2.2 pthread_getcpuclockid F +GLIBC_2.2 pthread_getschedparam F +GLIBC_2.2 pthread_getspecific F +GLIBC_2.2 pthread_join F +GLIBC_2.2 pthread_key_create F +GLIBC_2.2 pthread_key_delete F +GLIBC_2.2 pthread_kill F +GLIBC_2.2 pthread_kill_other_threads_np F +GLIBC_2.2 pthread_mutex_destroy F +GLIBC_2.2 pthread_mutex_init F +GLIBC_2.2 pthread_mutex_lock F +GLIBC_2.2 pthread_mutex_timedlock F +GLIBC_2.2 pthread_mutex_trylock F +GLIBC_2.2 pthread_mutex_unlock F +GLIBC_2.2 pthread_mutexattr_destroy F +GLIBC_2.2 pthread_mutexattr_getkind_np F +GLIBC_2.2 pthread_mutexattr_getpshared F +GLIBC_2.2 pthread_mutexattr_gettype F +GLIBC_2.2 pthread_mutexattr_init F +GLIBC_2.2 pthread_mutexattr_setkind_np F +GLIBC_2.2 pthread_mutexattr_setpshared F +GLIBC_2.2 pthread_mutexattr_settype F +GLIBC_2.2 pthread_once F +GLIBC_2.2 pthread_rwlock_destroy F +GLIBC_2.2 pthread_rwlock_init F +GLIBC_2.2 pthread_rwlock_rdlock F +GLIBC_2.2 pthread_rwlock_timedrdlock F +GLIBC_2.2 pthread_rwlock_timedwrlock F +GLIBC_2.2 pthread_rwlock_tryrdlock F +GLIBC_2.2 pthread_rwlock_trywrlock F +GLIBC_2.2 pthread_rwlock_unlock F +GLIBC_2.2 pthread_rwlock_wrlock F +GLIBC_2.2 pthread_rwlockattr_destroy F +GLIBC_2.2 pthread_rwlockattr_getkind_np F +GLIBC_2.2 pthread_rwlockattr_getpshared F +GLIBC_2.2 pthread_rwlockattr_init F +GLIBC_2.2 pthread_rwlockattr_setkind_np F +GLIBC_2.2 pthread_rwlockattr_setpshared F +GLIBC_2.2 pthread_self F +GLIBC_2.2 pthread_setcancelstate F +GLIBC_2.2 pthread_setcanceltype F +GLIBC_2.2 pthread_setconcurrency F +GLIBC_2.2 pthread_setschedparam F +GLIBC_2.2 pthread_setspecific F +GLIBC_2.2 pthread_sigmask F +GLIBC_2.2 pthread_spin_destroy F +GLIBC_2.2 pthread_spin_init F +GLIBC_2.2 pthread_spin_lock F +GLIBC_2.2 pthread_spin_trylock F +GLIBC_2.2 pthread_spin_unlock F +GLIBC_2.2 pthread_testcancel F +GLIBC_2.2 pthread_yield F +GLIBC_2.2 pwrite F +GLIBC_2.2 pwrite64 F +GLIBC_2.2 raise F +GLIBC_2.2 read F +GLIBC_2.2 recv F +GLIBC_2.2 recvfrom F +GLIBC_2.2 recvmsg F +GLIBC_2.2 sem_close F +GLIBC_2.2 sem_destroy F +GLIBC_2.2 sem_getvalue F +GLIBC_2.2 sem_init F +GLIBC_2.2 sem_open F +GLIBC_2.2 sem_post F +GLIBC_2.2 sem_timedwait F +GLIBC_2.2 sem_trywait F +GLIBC_2.2 sem_unlink F +GLIBC_2.2 sem_wait F +GLIBC_2.2 send F +GLIBC_2.2 sendmsg F +GLIBC_2.2 sendto F +GLIBC_2.2 sigaction F +GLIBC_2.2 siglongjmp F +GLIBC_2.2 sigwait F +GLIBC_2.2 system F +GLIBC_2.2 tcdrain F +GLIBC_2.2 vfork F +GLIBC_2.2 wait F +GLIBC_2.2 waitpid F +GLIBC_2.2 write F +GLIBC_2.2.3 GLIBC_2.2.3 A +GLIBC_2.2.3 pthread_getattr_np F +GLIBC_2.2.6 GLIBC_2.2.6 A +GLIBC_2.2.6 __nanosleep F +GLIBC_2.3.2 GLIBC_2.3.2 A +GLIBC_2.3.2 pthread_cond_broadcast F +GLIBC_2.3.2 pthread_cond_destroy F +GLIBC_2.3.2 pthread_cond_init F +GLIBC_2.3.2 pthread_cond_signal F +GLIBC_2.3.2 pthread_cond_timedwait F +GLIBC_2.3.2 pthread_cond_wait F +GLIBC_2.3.3 GLIBC_2.3.3 A +GLIBC_2.3.3 __pthread_cleanup_routine F +GLIBC_2.3.3 __pthread_register_cancel F +GLIBC_2.3.3 __pthread_register_cancel_defer F +GLIBC_2.3.3 __pthread_unregister_cancel F +GLIBC_2.3.3 __pthread_unregister_cancel_restore F +GLIBC_2.3.3 __pthread_unwind_next F +GLIBC_2.3.3 pthread_attr_getaffinity_np F +GLIBC_2.3.3 pthread_attr_setaffinity_np F +GLIBC_2.3.3 pthread_barrierattr_getpshared F +GLIBC_2.3.3 pthread_condattr_getclock F +GLIBC_2.3.3 pthread_condattr_setclock F +GLIBC_2.3.3 pthread_getaffinity_np F +GLIBC_2.3.3 pthread_setaffinity_np F +GLIBC_2.3.3 pthread_timedjoin_np F +GLIBC_2.3.3 pthread_tryjoin_np F +GLIBC_2.3.4 GLIBC_2.3.4 A +GLIBC_2.3.4 pthread_attr_getaffinity_np F +GLIBC_2.3.4 pthread_attr_setaffinity_np F +GLIBC_2.3.4 pthread_getaffinity_np F +GLIBC_2.3.4 pthread_setaffinity_np F +GLIBC_2.3.4 pthread_setschedprio F +GLIBC_2.4 GLIBC_2.4 A +GLIBC_2.4 pthread_mutex_consistent_np F +GLIBC_2.4 pthread_mutex_getprioceiling F +GLIBC_2.4 pthread_mutex_setprioceiling F +GLIBC_2.4 pthread_mutexattr_getprioceiling F +GLIBC_2.4 pthread_mutexattr_getprotocol F +GLIBC_2.4 pthread_mutexattr_getrobust_np F +GLIBC_2.4 pthread_mutexattr_setprioceiling F +GLIBC_2.4 pthread_mutexattr_setprotocol F +GLIBC_2.4 pthread_mutexattr_setrobust_np F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/libresolv.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/libresolv.abilist new file mode 100644 index 0000000000..3cb1405aed --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/libresolv.abilist @@ -0,0 +1,94 @@ +GLIBC_2.2 GLIBC_2.2 A +GLIBC_2.2 __b64_ntop F +GLIBC_2.2 __b64_pton F +GLIBC_2.2 __dn_comp F +GLIBC_2.2 __dn_count_labels F +GLIBC_2.2 __dn_expand F +GLIBC_2.2 __dn_skipname F +GLIBC_2.2 __fp_nquery F +GLIBC_2.2 __fp_query F +GLIBC_2.2 __fp_resstat F +GLIBC_2.2 __hostalias F +GLIBC_2.2 __loc_aton F +GLIBC_2.2 __loc_ntoa F +GLIBC_2.2 __p_cdname F +GLIBC_2.2 __p_cdnname F +GLIBC_2.2 __p_class F +GLIBC_2.2 __p_class_syms D 0xa8 +GLIBC_2.2 __p_fqname F +GLIBC_2.2 __p_fqnname F +GLIBC_2.2 __p_option F +GLIBC_2.2 __p_query F +GLIBC_2.2 __p_secstodate F +GLIBC_2.2 __p_time F +GLIBC_2.2 __p_type F +GLIBC_2.2 __p_type_syms D 0x450 +GLIBC_2.2 __putlong F +GLIBC_2.2 __putshort F +GLIBC_2.2 __res_close F +GLIBC_2.2 __res_dnok F +GLIBC_2.2 __res_hnok F +GLIBC_2.2 __res_hostalias F +GLIBC_2.2 __res_isourserver F +GLIBC_2.2 __res_mailok F +GLIBC_2.2 __res_mkquery F +GLIBC_2.2 __res_nameinquery F +GLIBC_2.2 __res_nmkquery F +GLIBC_2.2 __res_nquery F +GLIBC_2.2 __res_nquerydomain F +GLIBC_2.2 __res_nsearch F +GLIBC_2.2 __res_nsend F +GLIBC_2.2 __res_ownok F +GLIBC_2.2 __res_queriesmatch F +GLIBC_2.2 __res_query F +GLIBC_2.2 __res_querydomain F +GLIBC_2.2 __res_search F +GLIBC_2.2 __res_send F +GLIBC_2.2 __sym_ntop F +GLIBC_2.2 __sym_ntos F +GLIBC_2.2 __sym_ston F +GLIBC_2.2 _gethtbyaddr F +GLIBC_2.2 _gethtbyname F +GLIBC_2.2 _gethtbyname2 F +GLIBC_2.2 _gethtent F +GLIBC_2.2 _getlong F +GLIBC_2.2 _getshort F +GLIBC_2.2 _res_opcodes D 0x80 +GLIBC_2.2 _sethtent F +GLIBC_2.2 inet_net_ntop F +GLIBC_2.2 inet_net_pton F +GLIBC_2.2 inet_neta F +GLIBC_2.2 res_gethostbyaddr F +GLIBC_2.2 res_gethostbyname F +GLIBC_2.2 res_gethostbyname2 F +GLIBC_2.2 res_send_setqhook F +GLIBC_2.2 res_send_setrhook F +GLIBC_2.3.2 GLIBC_2.3.2 A +GLIBC_2.3.2 __p_rcode F +GLIBC_2.9 GLIBC_2.9 A +GLIBC_2.9 ns_datetosecs F +GLIBC_2.9 ns_format_ttl F +GLIBC_2.9 ns_get16 F +GLIBC_2.9 ns_get32 F +GLIBC_2.9 ns_initparse F +GLIBC_2.9 ns_makecanon F +GLIBC_2.9 ns_msg_getflag F +GLIBC_2.9 ns_name_compress F +GLIBC_2.9 ns_name_ntol F +GLIBC_2.9 ns_name_ntop F +GLIBC_2.9 ns_name_pack F +GLIBC_2.9 ns_name_pton F +GLIBC_2.9 ns_name_rollback F +GLIBC_2.9 ns_name_skip F +GLIBC_2.9 ns_name_uncompress F +GLIBC_2.9 ns_name_unpack F +GLIBC_2.9 ns_parse_ttl F +GLIBC_2.9 ns_parserr F +GLIBC_2.9 ns_put16 F +GLIBC_2.9 ns_put32 F +GLIBC_2.9 ns_samedomain F +GLIBC_2.9 ns_samename F +GLIBC_2.9 ns_skiprr F +GLIBC_2.9 ns_sprintrr F +GLIBC_2.9 ns_sprintrrf F +GLIBC_2.9 ns_subdomain F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist new file mode 100644 index 0000000000..41c442bf60 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist @@ -0,0 +1,52 @@ +GLIBC_2.2 GLIBC_2.2 A +GLIBC_2.2 aio_cancel F +GLIBC_2.2 aio_cancel64 F +GLIBC_2.2 aio_error F +GLIBC_2.2 aio_error64 F +GLIBC_2.2 aio_fsync F +GLIBC_2.2 aio_fsync64 F +GLIBC_2.2 aio_init F +GLIBC_2.2 aio_read F +GLIBC_2.2 aio_read64 F +GLIBC_2.2 aio_return F +GLIBC_2.2 aio_return64 F +GLIBC_2.2 aio_suspend F +GLIBC_2.2 aio_suspend64 F +GLIBC_2.2 aio_write F +GLIBC_2.2 aio_write64 F +GLIBC_2.2 clock_getcpuclockid F +GLIBC_2.2 clock_getres F +GLIBC_2.2 clock_gettime F +GLIBC_2.2 clock_nanosleep F +GLIBC_2.2 clock_settime F +GLIBC_2.2 lio_listio F +GLIBC_2.2 lio_listio64 F +GLIBC_2.2 shm_open F +GLIBC_2.2 shm_unlink F +GLIBC_2.2 timer_create F +GLIBC_2.2 timer_delete F +GLIBC_2.2 timer_getoverrun F +GLIBC_2.2 timer_gettime F +GLIBC_2.2 timer_settime F +GLIBC_2.3.3 GLIBC_2.3.3 A +GLIBC_2.3.3 timer_create F +GLIBC_2.3.3 timer_delete F +GLIBC_2.3.3 timer_getoverrun F +GLIBC_2.3.3 timer_gettime F +GLIBC_2.3.3 timer_settime F +GLIBC_2.3.4 GLIBC_2.3.4 A +GLIBC_2.3.4 mq_close F +GLIBC_2.3.4 mq_getattr F +GLIBC_2.3.4 mq_notify F +GLIBC_2.3.4 mq_open F +GLIBC_2.3.4 mq_receive F +GLIBC_2.3.4 mq_send F +GLIBC_2.3.4 mq_setattr F +GLIBC_2.3.4 mq_timedreceive F +GLIBC_2.3.4 mq_timedsend F +GLIBC_2.3.4 mq_unlink F +GLIBC_2.4 GLIBC_2.4 A +GLIBC_2.4 lio_listio F +GLIBC_2.4 lio_listio64 F +GLIBC_2.7 GLIBC_2.7 A +GLIBC_2.7 __mq_open_2 F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/libthread_db.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/libthread_db.abilist new file mode 100644 index 0000000000..228bbc9de8 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/libthread_db.abilist @@ -0,0 +1,44 @@ +GLIBC_2.2 GLIBC_2.2 A +GLIBC_2.2 td_init F +GLIBC_2.2 td_log F +GLIBC_2.2 td_ta_clear_event F +GLIBC_2.2 td_ta_delete F +GLIBC_2.2 td_ta_enable_stats F +GLIBC_2.2 td_ta_event_addr F +GLIBC_2.2 td_ta_event_getmsg F +GLIBC_2.2 td_ta_get_nthreads F +GLIBC_2.2 td_ta_get_ph F +GLIBC_2.2 td_ta_get_stats F +GLIBC_2.2 td_ta_map_id2thr F +GLIBC_2.2 td_ta_map_lwp2thr F +GLIBC_2.2 td_ta_new F +GLIBC_2.2 td_ta_reset_stats F +GLIBC_2.2 td_ta_set_event F +GLIBC_2.2 td_ta_setconcurrency F +GLIBC_2.2 td_ta_thr_iter F +GLIBC_2.2 td_ta_tsd_iter F +GLIBC_2.2 td_thr_clear_event F +GLIBC_2.2 td_thr_dbresume F +GLIBC_2.2 td_thr_dbsuspend F +GLIBC_2.2 td_thr_event_enable F +GLIBC_2.2 td_thr_event_getmsg F +GLIBC_2.2 td_thr_get_info F +GLIBC_2.2 td_thr_getfpregs F +GLIBC_2.2 td_thr_getgregs F +GLIBC_2.2 td_thr_getxregs F +GLIBC_2.2 td_thr_getxregsize F +GLIBC_2.2 td_thr_set_event F +GLIBC_2.2 td_thr_setfpregs F +GLIBC_2.2 td_thr_setgregs F +GLIBC_2.2 td_thr_setprio F +GLIBC_2.2 td_thr_setsigpending F +GLIBC_2.2 td_thr_setxregs F +GLIBC_2.2 td_thr_sigsetmask F +GLIBC_2.2 td_thr_tsd F +GLIBC_2.2 td_thr_validate F +GLIBC_2.2.3 GLIBC_2.2.3 A +GLIBC_2.2.3 td_symbol_list F +GLIBC_2.3 GLIBC_2.3 A +GLIBC_2.3 td_thr_tls_get_addr F +GLIBC_2.3.3 GLIBC_2.3.3 A +GLIBC_2.3.3 td_thr_tlsbase F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/libutil.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/libutil.abilist new file mode 100644 index 0000000000..cff37bb42e --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/libutil.abilist @@ -0,0 +1,7 @@ +GLIBC_2.2 GLIBC_2.2 A +GLIBC_2.2 forkpty F +GLIBC_2.2 login F +GLIBC_2.2 login_tty F +GLIBC_2.2 logout F +GLIBC_2.2 logwtmp F +GLIBC_2.2 openpty F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/makecontext.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/makecontext.c new file mode 100644 index 0000000000..01ba5255f6 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/makecontext.c @@ -0,0 +1,96 @@ +/* Copyright (C) 2001-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <libintl.h> +#include <stdarg.h> +#include <stdio.h> +#include <stdlib.h> +#include <ucontext.h> + +/* This implementation can handle any ARGC value but only + normal integer type parameters. Parameters of type float, + double, complex and structure with sizes 0, 2, 4 or 8 + won't work. + makecontext sets up a stack and the registers for the + user context. The stack looks like this: + size offset + %r15 -> +-----------------------+ + 8 | back chain (zero) | 0 + 8 | reserved | 8 + 144 | save area for (*func) | 16 + +-----------------------+ + n | overflow parameters | 160 + +-----------------------+ + The registers are set up like this: + %r2-%r6: parameters 1 to 5 + %r7 : (*func) pointer + %r8 : uc_link from ucontext structure + %r9 : address of setcontext + %r14 : return address to uc_link trampoline + %r15 : stack pointer. + + The trampoline looks like this: + basr %r14,%r7 + lgr %r2,%r8 + br %r9. */ + +void +__makecontext (ucontext_t *ucp, void (*func) (void), int argc, ...) +{ + extern void __makecontext_ret (void); + unsigned long int *sp; + va_list ap; + + sp = (unsigned long int *) (((unsigned long int) ucp->uc_stack.ss_sp + + ucp->uc_stack.ss_size) & -8L); + + /* Set the return address to trampoline. */ + ucp->uc_mcontext.gregs[14] = (long int) __makecontext_ret; + + /* Set register parameters. */ + va_start (ap, argc); + for (int i = 0; i < argc && i < 5; ++i) + ucp->uc_mcontext.gregs[2 + i] = va_arg (ap, long int); + + /* The remaining arguments go to the overflow area. */ + if (argc > 5) + { + sp -= argc - 5; + for (int i = 5; i < argc; ++i) + sp[i - 5] = va_arg (ap, long int); + } + va_end (ap); + + /* Make room for the save area and set the backchain. */ + sp -= 20; + *sp = 0; + + /* Pass (*func) to __makecontext_ret in %r7. */ + ucp->uc_mcontext.gregs[7] = (long int) func; + + /* Pass ucp->uc_link to __makecontext_ret in %r8. */ + ucp->uc_mcontext.gregs[8] = (long int) ucp->uc_link; + + /* Pass address of setcontext in %r9. */ + ucp->uc_mcontext.gregs[9] = (long int) &setcontext; + + /* Set stack pointer. */ + ucp->uc_mcontext.gregs[15] = (long int) sp; +} + +weak_alias (__makecontext, makecontext) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/profil-counter.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/profil-counter.h new file mode 100644 index 0000000000..29a1731abb --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/profil-counter.h @@ -0,0 +1,26 @@ +/* Low-level statistical profiling support function. Linux/s390 version. + Copyright (C) 2000-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <signal.h> +#include <sigcontextinfo.h> + +static void +__profil_counter (int signo, SIGCONTEXT scp) +{ + profil_count ((void *) GET_PC (scp)); +} diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/register-dump.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/register-dump.h new file mode 100644 index 0000000000..1b7bbeb7b2 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/register-dump.h @@ -0,0 +1,132 @@ +/* Dump registers. 64 bit S/390 version. + Copyright (C) 2001-2017 Free Software Foundation, Inc. + Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sys/uio.h> +#include <_itoa.h> + +/* We will print the register dump in this format: + + GPR0: XXXXXXXXXXXXXXXX GPR1: XXXXXXXXXXXXXXXX + GPR2: XXXXXXXXXXXXXXXX GPR3: XXXXXXXXXXXXXXXX + GPR4: XXXXXXXXXXXXXXXX GPR5: XXXXXXXXXXXXXXXX + GPR6: XXXXXXXXXXXXXXXX GPR7: XXXXXXXXXXXXXXXX + GPR8: XXXXXXXXXXXXXXXX GPR9: XXXXXXXXXXXXXXXX + GPRA: XXXXXXXXXXXXXXXX GPRB: XXXXXXXXXXXXXXXX + GPRC: XXXXXXXXXXXXXXXX GPRD: XXXXXXXXXXXXXXXX + GPRE: XXXXXXXXXXXXXXXX GPRF: XXXXXXXXXXXXXXXX + + PSW.MASK: XXXXXXXXXXXXXXXX PSW.ADDR: XXXXXXXXXXXXXXXX + + ST(0) XXXX XXXXXXXXXXXXXXXX ST(1) XXXX XXXXXXXXXXXXXXXX + ST(2) XXXX XXXXXXXXXXXXXXXX ST(3) XXXX XXXXXXXXXXXXXXXX + ST(4) XXXX XXXXXXXXXXXXXXXX ST(5) XXXX XXXXXXXXXXXXXXXX + ST(6) XXXX XXXXXXXXXXXXXXXX ST(7) XXXX XXXXXXXXXXXXXXXX + */ + +static void +hexvalue (unsigned long int value, char *buf, size_t len) +{ + char *cp = _itoa_word (value, buf + len, 16, 0); + while (cp > buf) + *--cp = '0'; +} + +static void +register_dump (int fd, struct sigcontext *ctx) +{ + char regs[19][16]; + struct iovec iov[40]; + 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->sregs->regs.gprs[0], regs[0], 16); + hexvalue (ctx->sregs->regs.gprs[1], regs[1], 16); + hexvalue (ctx->sregs->regs.gprs[2], regs[2], 16); + hexvalue (ctx->sregs->regs.gprs[3], regs[3], 16); + hexvalue (ctx->sregs->regs.gprs[4], regs[4], 16); + hexvalue (ctx->sregs->regs.gprs[5], regs[5], 16); + hexvalue (ctx->sregs->regs.gprs[6], regs[6], 16); + hexvalue (ctx->sregs->regs.gprs[7], regs[7], 16); + hexvalue (ctx->sregs->regs.gprs[8], regs[8], 16); + hexvalue (ctx->sregs->regs.gprs[9], regs[9], 16); + hexvalue (ctx->sregs->regs.gprs[10], regs[10], 16); + hexvalue (ctx->sregs->regs.gprs[11], regs[11], 16); + hexvalue (ctx->sregs->regs.gprs[12], regs[12], 16); + hexvalue (ctx->sregs->regs.gprs[13], regs[13], 16); + hexvalue (ctx->sregs->regs.gprs[14], regs[14], 16); + hexvalue (ctx->sregs->regs.gprs[15], regs[15], 16); + hexvalue (ctx->sregs->regs.psw.mask, regs[16], 16); + hexvalue (ctx->sregs->regs.psw.addr, regs[17], 16); + + /* Generate the output. */ + ADD_STRING ("Register dump:\n\n GPR0: "); + ADD_MEM (regs[0], 16); + ADD_STRING (" GPR1: "); + ADD_MEM (regs[1], 16); + ADD_STRING (" GPR2: "); + ADD_MEM (regs[2], 16); + ADD_STRING (" GPR3: "); + ADD_MEM (regs[3], 16); + ADD_STRING ("\n GPR4: "); + ADD_MEM (regs[4], 16); + ADD_STRING (" GPR5: "); + ADD_MEM (regs[5], 16); + ADD_STRING (" GPR6: "); + ADD_MEM (regs[6], 16); + ADD_STRING (" GPR7: "); + ADD_MEM (regs[7], 16); + ADD_STRING ("\n GPR8: "); + ADD_MEM (regs[8], 16); + ADD_STRING (" GPR9: "); + ADD_MEM (regs[9], 16); + ADD_STRING (" GPRA: "); + ADD_MEM (regs[10], 16); + ADD_STRING (" GPRB: "); + ADD_MEM (regs[11], 16); + ADD_STRING ("\n GPRC: "); + ADD_MEM (regs[12], 16); + ADD_STRING (" GPRD: "); + ADD_MEM (regs[13], 16); + ADD_STRING (" GPRE: "); + ADD_MEM (regs[14], 16); + ADD_STRING (" GPRF: "); + ADD_MEM (regs[15], 16); + ADD_STRING ("\n\n PSW.MASK: "); + ADD_MEM (regs[16], 16); + ADD_STRING (" PSW.ADDR: "); + ADD_MEM (regs[17], 16); + ADD_STRING (" TRAP: "); + ADD_MEM (regs[18], 4); + 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/s390/s390-64/setcontext.S b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/setcontext.S new file mode 100644 index 0000000000..f96ee2dc85 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/setcontext.S @@ -0,0 +1,72 @@ +/* Copyright (C) 2001-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#include <features.h> + +#include "ucontext_i.h" + +/* __setcontext (const ucontext_t *ucp) + + Restores the machine context in UCP and thereby resumes execution + in that context. + + This implementation is intended to be used for *synchronous* context + switches only. Therefore, it does not have to restore anything + other than the PRESERVED state. */ + +ENTRY(__setcontext) + lgr %r1,%r2 + + /* sigprocmask (SIG_SETMASK, &sc->sc_mask, NULL). */ + la %r2,SIG_SETMASK + la %r3,SC_MASK(%r1) + slgr %r4,%r4 + lghi %r5,_NSIG8 + svc SYS_ify(rt_sigprocmask) + + /* Load fpu context. */ + lfpc SC_FPC(%r1) + ld %f0,SC_FPRS(%r1) + ld %f1,SC_FPRS+8(%r1) + ld %f2,SC_FPRS+16(%r1) + ld %f3,SC_FPRS+24(%r1) + ld %f4,SC_FPRS+32(%r1) + ld %f5,SC_FPRS+40(%r1) + ld %f6,SC_FPRS+48(%r1) + ld %f7,SC_FPRS+56(%r1) + ld %f8,SC_FPRS+64(%r1) + ld %f9,SC_FPRS+72(%r1) + ld %f10,SC_FPRS+80(%r1) + ld %f11,SC_FPRS+88(%r1) + ld %f12,SC_FPRS+96(%r1) + ld %f13,SC_FPRS+104(%r1) + ld %f14,SC_FPRS+112(%r1) + ld %f15,SC_FPRS+120(%r1) + + /* Don't touch %a0 and %a1, used for thread purposes. */ + lam %a2,%a15,SC_ACRS+8(%r1) + + /* Load general purpose registers. */ + lmg %r0,%r15,SC_GPRS(%r1) + + /* Return. */ + br %r14 +END(__setcontext) + +weak_alias (__setcontext, setcontext) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/shlib-versions b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/shlib-versions new file mode 100644 index 0000000000..669a0c9869 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/shlib-versions @@ -0,0 +1,2 @@ +DEFAULT GLIBC_2.2 +ld=ld64.so.1 diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/sigaction.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/sigaction.c new file mode 100644 index 0000000000..a3de0ead69 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/sigaction.c @@ -0,0 +1,43 @@ +/* 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/>. */ + +/* 64 bit Linux for S/390 only has rt signals, thus we do not even want to try + falling back to the old style signals as the default Linux handler does. */ + +#include <errno.h> +#include <signal.h> +#include <string.h> + +#include <sysdep.h> +#include <sys/syscall.h> + +/* The variable is shared between all wrappers around signal handling + functions which have RT equivalents. This is the definition. */ + + +/* 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) +{ + /* XXX The size argument hopefully will have to be changed to the + real size of the user-level sigset_t. */ + return INLINE_SYSCALL (rt_sigaction, 4, sig, act, oact, _NSIG / 8); +} +libc_hidden_def (__libc_sigaction) + +#include <nptl/sigaction.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/sigpending.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/sigpending.c new file mode 100644 index 0000000000..daf8cfd1b8 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/sigpending.c @@ -0,0 +1,36 @@ +/* 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/>. */ + +/* 64 bit Linux for S/390 only has rt signals, thus we do not even want to try + falling back to the old style signals as the default Linux handler does. */ + +#include <errno.h> +#include <signal.h> +#include <unistd.h> + +#include <sysdep.h> +#include <sys/syscall.h> + +/* Change the set of blocked signals to SET, + wait until a signal arrives, and restore the set of blocked signals. */ +int +sigpending (sigset_t *set) +{ + /* XXX The size argument hopefully will have to be changed to the + real size of the user-level sigset_t. */ + return INLINE_SYSCALL (rt_sigpending, 2, set, _NSIG / 8); +} diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/sigprocmask.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/sigprocmask.c new file mode 100644 index 0000000000..4cbbc8e133 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/sigprocmask.c @@ -0,0 +1,37 @@ +/* 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/>. */ + +/* 64 bit Linux for S/390 only has rt signals, thus we do not even want to try + falling back to the old style signals as the default Linux handler does. */ + +#include <errno.h> +#include <signal.h> +#include <unistd.h> + +#include <sysdep.h> +#include <sys/syscall.h> + +/* Get and/or change the set of blocked signals. */ +int +__sigprocmask (int how, const sigset_t *set, sigset_t *oset) +{ + + /* XXX The size argument hopefully will have to be changed to the + real size of the user-level sigset_t. */ + return INLINE_SYSCALL (rt_sigprocmask, 4, how, set, oset, _NSIG / 8); +} +weak_alias (__sigprocmask, sigprocmask) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/swapcontext.S b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/swapcontext.S new file mode 100644 index 0000000000..e033ec1672 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/swapcontext.S @@ -0,0 +1,108 @@ +/* Copyright (C) 2002-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#include <features.h> + +#include "ucontext_i.h" + +/* __swapcontext (ucontext_t *oucp, const ucontext_t *ucp) + + Saves the machine context in oucp such that when it is activated, + it appears as if __swapcontext() returned again, restores the + machine context in ucp and thereby resumes execution in that + context. + + This implementation is intended to be used for *synchronous* context + switches only. Therefore, it does not have to save anything + other than the PRESERVED state. */ + +ENTRY(__swapcontext) + /* While not part of the ABI a system call never clobbers r0 + or r1. So keeping the values here while calling + rt_sigprocmask is ok. */ + lgr %r1,%r2 + lgr %r0,%r3 + + /* Store fpu context. */ + stfpc SC_FPC(%r1) + std %f0,SC_FPRS(%r1) + std %f1,SC_FPRS+8(%r1) + std %f2,SC_FPRS+16(%r1) + std %f3,SC_FPRS+24(%r1) + std %f4,SC_FPRS+32(%r1) + std %f5,SC_FPRS+40(%r1) + std %f6,SC_FPRS+48(%r1) + std %f7,SC_FPRS+56(%r1) + std %f8,SC_FPRS+64(%r1) + std %f9,SC_FPRS+72(%r1) + std %f10,SC_FPRS+80(%r1) + std %f11,SC_FPRS+88(%r1) + std %f12,SC_FPRS+96(%r1) + std %f13,SC_FPRS+104(%r1) + std %f14,SC_FPRS+112(%r1) + std %f15,SC_FPRS+120(%r1) + + /* Set __swapcontext return value to 0. */ + slgr %r2,%r2 + + /* Store access registers. */ + stam %a0,%a15,SC_ACRS(%r1) + + /* Store general purpose registers. */ + stmg %r0,%r15,SC_GPRS(%r1) + + /* rt_sigprocmask (SIG_SETMASK, &ucp->uc_sigmask, &oucp->uc_sigmask, + sigsetsize). */ + la %r2,SIG_SETMASK + lgr %r5,%r0 + la %r3,SC_MASK(%r5) + la %r4,SC_MASK(%r1) + lghi %r5,_NSIG8 + svc SYS_ify(rt_sigprocmask) + + /* Load fpu context. */ + lgr %r5,%r0 + lfpc SC_FPC(%r5) + ld %f0,SC_FPRS(%r5) + ld %f1,SC_FPRS+8(%r5) + ld %f2,SC_FPRS+16(%r5) + ld %f3,SC_FPRS+24(%r5) + ld %f4,SC_FPRS+32(%r5) + ld %f5,SC_FPRS+40(%r5) + ld %f6,SC_FPRS+48(%r5) + ld %f7,SC_FPRS+56(%r5) + ld %f8,SC_FPRS+64(%r5) + ld %f9,SC_FPRS+72(%r5) + ld %f10,SC_FPRS+80(%r5) + ld %f11,SC_FPRS+88(%r5) + ld %f12,SC_FPRS+96(%r5) + ld %f13,SC_FPRS+104(%r5) + ld %f14,SC_FPRS+112(%r5) + ld %f15,SC_FPRS+120(%r5) + + /* Don't touch %a0 and %a1, used for thread purposes. */ + lam %a2,%a15,SC_ACRS+8(%r5) + + /* Load general purpose registers. */ + lmg %r0,%r15,SC_GPRS(%r5) + + /* Return. */ + br %r14 +END(__swapcontext) +weak_alias (__swapcontext, swapcontext) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/syscall.S b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/syscall.S new file mode 100644 index 0000000000..24c47cb75a --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/syscall.S @@ -0,0 +1,68 @@ +/* Copyright (C) 2001-2017 Free Software Foundation, Inc. + Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> + +/* Please consult the file sysdeps/unix/sysv/linux/s390/sysdep.h for + more information about the value -4095 used below.*/ + +ENTRY (syscall) + /* Save registers and setup stack. */ + stmg %r6,%r15,48(%r15) /* Save registers. */ + cfi_offset (%r15,-40) + cfi_offset (%r14,-48) + cfi_offset (%r13,-56) + cfi_offset (%r12,-64) + cfi_offset (%r11,-72) + cfi_offset (%r10,-80) + cfi_offset (%r9,-88) + cfi_offset (%r8,-96) + cfi_offset (%r7,-104) + cfi_offset (%r6,-112) + lgr %r1,%r15 + lg %r0,8(%r15) /* Load eos. */ + aghi %r15,-160 /* Buy stack space. */ + cfi_adjust_cfa_offset (160) + stg %r1,0(%r15) /* Store back chain. */ + stg %r0,8(%r15) /* Store eos. */ + + lgr %r1,%r2 /* Move syscall number. */ + lgr %r2,%r3 /* First parameter. */ + lgr %r3,%r4 /* Second parameter. */ + lgr %r4,%r5 /* Third parameter. */ + lgr %r5,%r6 /* Fourth parameter. */ + lg %r6,320(%r15) /* Fifth parameter. */ + lg %r7,328(%r15) /* Sixth parameter. */ + + basr %r8,0 +0: clg %r1,4f-0b(%r8) /* svc number < 256? */ + jl 2f +1: svc 0 + j 3f +2: ex %r1,1b-0b(%r8) /* lsb of R1 is subsituted as SVC number */ +3: lg %r15,0(%r15) /* load back chain */ + cfi_adjust_cfa_offset (-160) + lmg %r6,15,48(%r15) /* Load registers. */ + + lghi %r0,-4095 + clgr %r2,%r0 /* Check R2 for error. */ + jgnl SYSCALL_ERROR_LABEL + br %r14 /* Return to caller. */ +4: .quad 256 +PSEUDO_END (syscall) + diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h new file mode 100644 index 0000000000..9b2c546b9d --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h @@ -0,0 +1,152 @@ +/* Copyright (C) 2003-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Jakub Jelinek <jakub@redhat.com>, 2003. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#include <tls.h> +#ifndef __ASSEMBLER__ +# include <nptl/pthreadP.h> +#endif + +#if IS_IN (libc) || IS_IN (libpthread) || IS_IN (librt) + +# undef PSEUDO +# define PSEUDO(name, syscall_name, args) \ + .text; \ +L(pseudo_cancel): \ + cfi_startproc; \ + STM_##args \ + stmg %r13,%r15,104(%r15); \ + cfi_offset (%r15,-40); \ + cfi_offset (%r14,-48); \ + cfi_offset (%r13,-56); \ + lgr %r14,%r15; \ + aghi %r15,-160; \ + cfi_adjust_cfa_offset (160); \ + stg %r14,0(%r15); \ + brasl %r14,CENABLE; \ + lgr %r0,%r2; \ + LM_##args \ + .if SYS_ify (syscall_name) < 256; \ + svc SYS_ify (syscall_name); \ + .else; \ + lghi %r1,SYS_ify (syscall_name); \ + svc 0; \ + .endif; \ + LR7_##args \ + lgr %r13,%r2; \ + lgr %r2,%r0; \ + brasl %r14,CDISABLE; \ + lgr %r2,%r13; \ + lmg %r13,%r15,104+160(%r15); \ + cfi_endproc; \ + j L(pseudo_check); \ +ENTRY(name) \ + SINGLE_THREAD_P \ + jne L(pseudo_cancel); \ +.type __##syscall_name##_nocancel,@function; \ +.globl __##syscall_name##_nocancel; \ +__##syscall_name##_nocancel: \ + DO_CALL(syscall_name, args); \ +L(pseudo_check): \ + lghi %r4,-4095; \ + clgr %r2,%r4; \ + jgnl SYSCALL_ERROR_LABEL; \ +.size __##syscall_name##_nocancel,.-__##syscall_name##_nocancel; \ +L(pseudo_end): + +# if IS_IN (libpthread) +# define CENABLE __pthread_enable_asynccancel +# define CDISABLE __pthread_disable_asynccancel +# define __local_multiple_threads __pthread_multiple_threads +# elif IS_IN (libc) +# define CENABLE __libc_enable_asynccancel +# define CDISABLE __libc_disable_asynccancel +# define __local_multiple_threads __libc_multiple_threads +# elif IS_IN (librt) +# define CENABLE __librt_enable_asynccancel +# define CDISABLE __librt_disable_asynccancel +# else +# error Unsupported library +# endif + +#define STM_0 /* Nothing */ +#define STM_1 stg %r2,16(%r15); +#define STM_2 stmg %r2,%r3,16(%r15); +#define STM_3 stmg %r2,%r4,16(%r15); +#define STM_4 stmg %r2,%r5,16(%r15); +#define STM_5 stmg %r2,%r5,16(%r15); +#define STM_6 stmg %r2,%r7,16(%r15); + +#define LM_0 /* Nothing */ +#define LM_1 lg %r2,16+160(%r15); +#define LM_2 lmg %r2,%r3,16+160(%r15); +#define LM_3 lmg %r2,%r4,16+160(%r15); +#define LM_4 lmg %r2,%r5,16+160(%r15); +#define LM_5 lmg %r2,%r5,16+160(%r15); +#define LM_6 lmg %r2,%r5,16+160(%r15); \ + cfi_offset (%r7, -104); \ + lg %r7,160+160(%r15); + +#define LR7_0 /* Nothing */ +#define LR7_1 /* Nothing */ +#define LR7_2 /* Nothing */ +#define LR7_3 /* Nothing */ +#define LR7_4 /* Nothing */ +#define LR7_5 /* Nothing */ +#define LR7_6 lg %r7,56+160(%r15); \ + cfi_restore (%r7); + +# 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 \ + larl %r1,__local_multiple_threads; \ + icm %r0,15,0(%r1); +# endif + +# else + +# ifndef __ASSEMBLER__ +# define SINGLE_THREAD_P \ + __builtin_expect (THREAD_GETMEM (THREAD_SELF, \ + header.multiple_threads) == 0, 1) +# else +# define SINGLE_THREAD_P \ + ear %r1,%a0; \ + sllg %r1,%r1,32; \ + ear %r1,%a1; \ + icm %r1,15,MULTIPLE_THREADS_OFFSET(%r1); +# endif + +# endif + +#elif !defined __ASSEMBLER__ + +# define SINGLE_THREAD_P (1) +# define NO_CANCELLATION 1 + +#endif + +#ifndef __ASSEMBLER__ +# define RTLD_SINGLE_THREAD_P \ + __builtin_expect (THREAD_GETMEM (THREAD_SELF, \ + header.multiple_threads) == 0, 1) +#endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S new file mode 100644 index 0000000000..a08a2ff188 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S @@ -0,0 +1,75 @@ +/* Copyright (C) 2001-2017 Free Software Foundation, Inc. + Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have 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> + + +/* The following code is only used in the shared library when we + compile the reentrant version. Otherwise each system call defines + each own version. */ + +/* The syscall stubs jump here when they detect an error. */ + +#undef CALL_MCOUNT +#define CALL_MCOUNT + +.text +ENTRY(__syscall_error) +#ifndef PIC +# if IS_IN (libc) +# define SYSCALL_ERROR_ERRNO __libc_errno +# else +# define SYSCALL_ERROR_ERRNO errno +# endif + basr %r1,0 +0: lg %r1,1f-0b(%r1) + ear %r3,%a0 + sllg %r3,%r3,32 + ear %r3,%a1 + lcr %r2,%r2 + st %r2,0(%r1,%r3) + lghi %r2,-1 + br %r14 +1: .quad SYSCALL_ERROR_ERRNO@ntpoff +#else +# if RTLD_PRIVATE_ERRNO + larl %r1,rtld_errno + lcr %r2,%r2 + st %r2,0(%r1) + lghi %r2,-1 + br %r14 +# else +# if IS_IN (libc) +# define SYSCALL_ERROR_ERRNO __libc_errno +# else +# define SYSCALL_ERROR_ERRNO errno +# endif + larl %r1,_GLOBAL_OFFSET_TABLE_ + lg %r1,SYSCALL_ERROR_ERRNO@gotntpoff(%r1) + ear %r3,%a0 + sllg %r3,%r3,32 + ear %r3,%a1 + lcr %r2,%r2 + st %r2,0(%r1,%r3) + lghi %r2,-1 + br %r14 +# endif +#endif + +END (__syscall_error) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h new file mode 100644 index 0000000000..e22d9b6b13 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h @@ -0,0 +1,345 @@ +/* Assembler macros for 64 bit S/390. + Copyright (C) 2001-2017 Free Software Foundation, Inc. + Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have 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_S390_SYSDEP_H +#define _LINUX_S390_SYSDEP_H + +#include <sysdeps/s390/s390-64/sysdep.h> +#include <sysdeps/unix/sysdep.h> +#include <sysdeps/unix/sysv/linux/sysdep.h> +#include <dl-sysdep.h> /* For RTLD_PRIVATE_ERRNO. */ +#include <tls.h> + +/* Define __set_errno() for INLINE_SYSCALL macro below. */ +#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. */ +/* In newer 2.1 kernels __NR_syscall is missing so we define it here. */ +#define __NR_syscall 0 + +/* + * Newer kernel versions redefined __NR_pread and __NR_pwrite to + * __NR_pread64 and __NR_pwrite64. + */ +#ifndef __NR_pread +# define __NR_pread __NR_pread64 +#endif +#ifndef __NR_pwrite +# define __NR_pwrite __NR_pwrite64 +#endif + +#undef SYS_ify +#define SYS_ify(syscall_name) __NR_##syscall_name + +#ifdef __ASSEMBLER__ + +/* Linux uses a negative return value to indicate syscall errors, unlike + most Unices, which use the condition codes' carry flag. + + Since version 2.1 the return value of a system call might be negative + even if the call succeeded. E.g., the `lseek' system call might return + a large offset. Therefore we must not anymore test for < 0, but test + for a real error by making sure the value in gpr2 is a real error + number. Linus said he will make sure that no syscall returns a value + in -1 .. -4095 as a valid result so we can savely test with -4095. */ + +#undef PSEUDO +#define PSEUDO(name, syscall_name, args) \ + .text; \ + ENTRY (name) \ + DO_CALL (syscall_name, args); \ + lghi %r4,-4095 ; \ + clgr %r2,%r4 ; \ + jgnl SYSCALL_ERROR_LABEL + +#undef PSEUDO_END +#define PSEUDO_END(name) \ + SYSCALL_ERROR_HANDLER; \ + END (name) + +#undef PSEUDO_NOERRNO +#define PSEUDO_NOERRNO(name, syscall_name, args) \ + .text; \ + ENTRY (name) \ + DO_CALL (syscall_name, args) + +#undef PSEUDO_END_NOERRNO +#define PSEUDO_END_NOERRNO(name) \ + SYSCALL_ERROR_HANDLER; \ + END (name) + +#undef PSEUDO_ERRVAL +#define PSEUDO_ERRVAL(name, syscall_name, args) \ + .text; \ + ENTRY (name) \ + DO_CALL (syscall_name, args); \ + lcgr %r2,%r2 + +#undef PSEUDO_END_ERRVAL +#define PSEUDO_END_ERRVAL(name) \ + SYSCALL_ERROR_HANDLER; \ + END (name) + +#ifndef PIC +# define SYSCALL_ERROR_LABEL syscall_error +# define SYSCALL_ERROR_HANDLER +#else +# if RTLD_PRIVATE_ERRNO +# define SYSCALL_ERROR_LABEL 0f +# define SYSCALL_ERROR_HANDLER \ +0: larl %r1,rtld_errno; \ + lcr %r2,%r2; \ + st %r2,0(%r1); \ + lghi %r2,-1; \ + br %r14 +# elif defined _LIBC_REENTRANT +# if IS_IN (libc) +# define SYSCALL_ERROR_ERRNO __libc_errno +# else +# define SYSCALL_ERROR_ERRNO errno +# endif +# define SYSCALL_ERROR_LABEL 0f +# define SYSCALL_ERROR_HANDLER \ +0: lcr %r0,%r2; \ + larl %r1,SYSCALL_ERROR_ERRNO@indntpoff; \ + lg %r1,0(%r1); \ + ear %r2,%a0; \ + sllg %r2,%r2,32; \ + ear %r2,%a1; \ + st %r0,0(%r1,%r2); \ + lghi %r2,-1; \ + br %r14 +# else +# define SYSCALL_ERROR_LABEL 0f +# define SYSCALL_ERROR_HANDLER \ +0: larl %r1,_GLOBAL_OFFSET_TABLE_; \ + lg %r1,errno@GOT(%r1); \ + lcr %r2,%r2; \ + st %r2,0(%r1); \ + lghi %r2,-1; \ + br %r14 +# endif /* _LIBC_REENTRANT */ +#endif /* PIC */ + +/* Linux takes system call arguments in registers: + + syscall number 1 call-clobbered + arg 1 2 call-clobbered + arg 2 3 call-clobbered + arg 3 4 call-clobbered + arg 4 5 call-clobbered + arg 5 6 call-saved + arg 6 7 call-saved + + (Of course a function with say 3 arguments does not have entries for + arguments 4 and 5.) + For system calls with 6 parameters a stack operation is required + to load the 6th parameter to register 7. Call saved register 7 is + moved to register 0 and back to avoid an additional stack frame. + */ + +#define DO_CALL(syscall, args) \ + .if args > 5; \ + lgr %r0,%r7; \ + lg %r7,160(%r15); \ + .endif; \ + .if SYS_ify (syscall) < 256; \ + svc SYS_ify (syscall); \ + .else; \ + lghi %r1,SYS_ify (syscall); \ + svc 0; \ + .endif; \ + .if args > 5; \ + lgr %r7,%r0; \ + .endif + +#define ret \ + br 14 + +#define ret_NOERRNO \ + br 14 + +#define ret_ERRVAL \ + br 14 + +#endif /* __ASSEMBLER__ */ + +#undef INLINE_SYSCALL +#define INLINE_SYSCALL(name, nr, args...) \ + ({ \ + long _ret = INTERNAL_SYSCALL (name, , nr, args); \ + if (__glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (_ret, ))) \ + { \ + __set_errno (INTERNAL_SYSCALL_ERRNO (_ret, )); \ + _ret = -1; \ + } \ + _ret; }) + +#undef INTERNAL_SYSCALL_DECL +#define INTERNAL_SYSCALL_DECL(err) do { } while (0) + +#undef INTERNAL_SYSCALL_DIRECT +#define INTERNAL_SYSCALL_DIRECT(name, err, nr, args...) \ + ({ \ + DECLARGS_##nr(args) \ + register long _ret __asm__("2"); \ + __asm__ __volatile__ ( \ + "svc %b1\n\t" \ + : "=d" (_ret) \ + : "i" (__NR_##name) ASMFMT_##nr \ + : "memory" ); \ + _ret; }) + +#undef INTERNAL_SYSCALL_SVC0 +#define INTERNAL_SYSCALL_SVC0(name, err, nr, args...) \ + ({ \ + DECLARGS_##nr(args) \ + register unsigned long _nr __asm__("1") = (unsigned long)(__NR_##name); \ + register long _ret __asm__("2"); \ + __asm__ __volatile__ ( \ + "svc 0\n\t" \ + : "=d" (_ret) \ + : "d" (_nr) ASMFMT_##nr \ + : "memory" ); \ + _ret; }) + +#undef INTERNAL_SYSCALL_NCS +#define INTERNAL_SYSCALL_NCS(no, err, nr, args...) \ + ({ \ + DECLARGS_##nr(args) \ + register unsigned long _nr __asm__("1") = (unsigned long)(no); \ + register long _ret __asm__("2"); \ + __asm__ __volatile__ ( \ + "svc 0\n\t" \ + : "=d" (_ret) \ + : "d" (_nr) ASMFMT_##nr \ + : "memory" ); \ + _ret; }) + +#undef INTERNAL_SYSCALL +#define INTERNAL_SYSCALL(name, err, nr, args...) \ + (((__NR_##name) < 256) ? \ + INTERNAL_SYSCALL_DIRECT(name, err, nr, args) : \ + INTERNAL_SYSCALL_SVC0(name, err,nr, args)) + +#undef INTERNAL_SYSCALL_ERROR_P +#define INTERNAL_SYSCALL_ERROR_P(val, err) \ + ((unsigned long) (val) >= -4095UL) + +#undef INTERNAL_SYSCALL_ERRNO +#define INTERNAL_SYSCALL_ERRNO(val, err) (-(val)) + +#define DECLARGS_0() +#define DECLARGS_1(arg1) \ + register unsigned long gpr2 __asm__ ("2") = (unsigned long)(arg1); +#define DECLARGS_2(arg1, arg2) \ + DECLARGS_1(arg1) \ + register unsigned long gpr3 __asm__ ("3") = (unsigned long)(arg2); +#define DECLARGS_3(arg1, arg2, arg3) \ + DECLARGS_2(arg1, arg2) \ + register unsigned long gpr4 __asm__ ("4") = (unsigned long)(arg3); +#define DECLARGS_4(arg1, arg2, arg3, arg4) \ + DECLARGS_3(arg1, arg2, arg3) \ + register unsigned long gpr5 __asm__ ("5") = (unsigned long)(arg4); +#define DECLARGS_5(arg1, arg2, arg3, arg4, arg5) \ + DECLARGS_4(arg1, arg2, arg3, arg4) \ + register unsigned long gpr6 __asm__ ("6") = (unsigned long)(arg5); +#define DECLARGS_6(arg1, arg2, arg3, arg4, arg5, arg6) \ + DECLARGS_5(arg1, arg2, arg3, arg4, arg5) \ + register unsigned long gpr7 __asm__ ("7") = (unsigned long)(arg6); + +#define ASMFMT_0 +#define ASMFMT_1 , "0" (gpr2) +#define ASMFMT_2 , "0" (gpr2), "d" (gpr3) +#define ASMFMT_3 , "0" (gpr2), "d" (gpr3), "d" (gpr4) +#define ASMFMT_4 , "0" (gpr2), "d" (gpr3), "d" (gpr4), "d" (gpr5) +#define ASMFMT_5 , "0" (gpr2), "d" (gpr3), "d" (gpr4), "d" (gpr5), "d" (gpr6) +#define ASMFMT_6 , "0" (gpr2), "d" (gpr3), "d" (gpr4), "d" (gpr5), "d" (gpr6), "d" (gpr7) + +#define CLOBBER_0 , "3", "4", "5" +#define CLOBBER_1 , "3", "4", "5" +#define CLOBBER_2 , "4", "5" +#define CLOBBER_3 , "5" +#define CLOBBER_4 +#define CLOBBER_5 +#define CLOBBER_6 + +/* List of system calls which are supported as vsyscalls. */ +#define HAVE_CLOCK_GETRES_VSYSCALL 1 +#define HAVE_CLOCK_GETTIME_VSYSCALL 1 +#define HAVE_GETTIMEOFDAY_VSYSCALL 1 +#define HAVE_GETCPU_VSYSCALL 1 + +/* This version is for internal uses when there is no desire + to set errno */ +#define INTERNAL_VSYSCALL_NO_SYSCALL_FALLBACK(name, err, nr, args...) \ + ({ \ + long int _ret = ENOSYS; \ + \ + __typeof (__vdso_##name) vdsop = __vdso_##name; \ + PTR_DEMANGLE (vdsop); \ + if (vdsop != NULL) \ + _ret = INTERNAL_VSYSCALL_CALL (vdsop, err, nr, ##args); \ + else \ + err = 1 << 28; \ + _ret; \ + }) + +#define INTERNAL_VSYSCALL_CALL(fn, err, nr, args...) \ + ({ \ + DECLARGS_##nr(args) \ + register long _ret __asm__("2"); \ + __asm__ __volatile__ ( \ + "lgr 10,14\n\t" \ + "basr 14,%1\n\t" \ + "lgr 14,10\n\t" \ + : "=d" (_ret) \ + : "a" (fn) ASMFMT_##nr \ + : "cc", "memory", "0", "1", "10" CLOBBER_##nr); \ + _ret; }) + +/* Pointer mangling support. */ +#if IS_IN (rtld) +/* We cannot use the thread descriptor because in ld.so we use setjmp + earlier than the descriptor is initialized. */ +#else +/* For the time being just use stack_guard rather than a separate + pointer_guard. */ +# ifdef __ASSEMBLER__ +# define PTR_MANGLE(reg, tmpreg) \ + ear tmpreg,%a0; \ + sllg tmpreg,tmpreg,32; \ + ear tmpreg,%a1; \ + xg reg,STACK_GUARD(tmpreg) +# define PTR_MANGLE2(reg, tmpreg) \ + xg reg,STACK_GUARD(tmpreg) +# define PTR_DEMANGLE(reg, tmpreg) PTR_MANGLE (reg, tmpreg) +# else +# define PTR_MANGLE(var) \ + (var) = (void *) ((uintptr_t) (var) ^ THREAD_GET_POINTER_GUARD ()) +# define PTR_DEMANGLE(var) PTR_MANGLE (var) +# endif +#endif + +#endif /* _LINUX_S390_SYSDEP_H */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/timer_create.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/timer_create.c new file mode 100644 index 0000000000..d307135003 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/timer_create.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/x86_64/timer_create.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/timer_delete.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/timer_delete.c new file mode 100644 index 0000000000..2dd94f5c7a --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/timer_delete.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/x86_64/timer_delete.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/timer_getoverr.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/timer_getoverr.c new file mode 100644 index 0000000000..22eaff5cda --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/timer_getoverr.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/timer_gettime.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/timer_gettime.c new file mode 100644 index 0000000000..cea524bae5 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/timer_gettime.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/x86_64/timer_gettime.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/timer_settime.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/timer_settime.c new file mode 100644 index 0000000000..fa231149d5 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/timer_settime.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/x86_64/timer_settime.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/vfork.S b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/vfork.S new file mode 100644 index 0000000000..5f3c9c5028 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/s390-64/vfork.S @@ -0,0 +1,47 @@ +/* Copyright (C) 2004-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Jakub Jelinek <jakub@redhat.com>, 2004. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have 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 <bits/wordsize.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 (__libc_vfork) + /* Do vfork system call. */ + svc SYS_ify (vfork) + + /* Check for error. */ + lghi %r4,-4095 + clgr %r2,%r4 + jgnl SYSCALL_ERROR_LABEL + + /* Normal return. */ + br %r14 +PSEUDO_END (__libc_vfork) + +#if IS_IN (libc) +weak_alias (__libc_vfork, vfork) +strong_alias (__libc_vfork, __vfork) +libc_hidden_def (__vfork) +#endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/sa_len.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/sa_len.c new file mode 100644 index 0000000000..7b47aa8d67 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/sa_len.c @@ -0,0 +1,3 @@ +#define HAVE_NETIUCV_IUCV_H + +#include <sysdeps/unix/sysv/linux/sa_len.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/semtimedop.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/semtimedop.c new file mode 100644 index 0000000000..6f4ca186b4 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/semtimedop.c @@ -0,0 +1,36 @@ +/* Copyright (C) 2003-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Martin Schwidefsky <schwidefsky@de.ibm.com>, 2003. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have 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/sem.h> +#include <ipc_priv.h> +#include <sysdep.h> +#include <errno.h> + +/* Perform user-defined atomical operation of array of semaphores. */ + +int +semtimedop (int semid, struct sembuf *sops, size_t nsops, + const struct timespec *timeout) +{ + /* The s390 sys_ipc variant has only five parameters instead of six + (as for default variant) and the only difference is the handling of + SEMTIMEDOP where on s390 the third parameter is used as a pointer + to a struct timespec where the generic variant uses fifth parameter. */ + return INLINE_SYSCALL_CALL (ipc, IPCOP_semtimedop, semid, nsops, timeout, + sops); +} diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/sigcontextinfo.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/sigcontextinfo.h new file mode 100644 index 0000000000..90ead3f43c --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/sigcontextinfo.h @@ -0,0 +1,27 @@ +/* Copyright (C) 2000-2017 Free Software Foundation, Inc. + Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have 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> + +#define SIGCONTEXT struct sigcontext * +#define SIGCONTEXT_EXTRA_ARGS +#define GET_PC(ctx) ((void *)((ctx)->sregs->regs.psw.addr)) +#define GET_FRAME(ctx) (*(void **)((ctx)->sregs->regs.gprs[11])) +#define GET_STACK(ctx) ((void *)((ctx)->sregs->regs.gprs[15])) +#define CALL_SIGHANDLER(handler, signo, ctx) \ + (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx)) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/sys/elf.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/sys/elf.h new file mode 100644 index 0000000000..9a093ba273 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/sys/elf.h @@ -0,0 +1,25 @@ +/* Copyright (C) 2000-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _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/s390/sys/procfs.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/sys/procfs.h new file mode 100644 index 0000000000..2445f110f9 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/sys/procfs.h @@ -0,0 +1,176 @@ +/* Copyright (C) 2000-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _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> +#include <sys/ucontext.h> + +__BEGIN_DECLS + +typedef greg_t elf_greg_t; +#define ELF_NGREG NGREG +typedef gregset_t elf_gregset_t; +typedef fpreg_t elf_fpreg_t; +typedef fpregset_t 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. */ +#if __WORDSIZE == 64 + unsigned int pr_uid; + unsigned int pr_gid; +#else + unsigned short int pr_uid; + unsigned short int pr_gid; +#endif + 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; + +#if __WORDSIZE == 64 + +/* Provide 32-bit variants so that BFD can read 32-bit + core files. */ +#define ELF_NGREG32 36 +typedef unsigned int elf_greg_t32; +typedef elf_greg_t32 + elf_gregset_t32[ELF_NGREG32] __attribute__ ((__aligned__ (8))); +typedef elf_fpregset_t elf_fpregset_t32; + +struct elf_prstatus32 + { + struct elf_siginfo pr_info; /* Info associated with signal. */ + short int pr_cursig; /* Current signal. */ + unsigned int pr_sigpend; /* Set of pending signals. */ + unsigned int pr_sighold; /* Set of held signals. */ + __pid_t pr_pid; + __pid_t pr_ppid; + __pid_t pr_pgrp; + __pid_t pr_sid; + struct + { + int tv_sec, tv_usec; + } pr_utime, /* User time. */ + pr_stime, /* System time. */ + pr_cutime, /* Cumulative user time. */ + pr_cstime; /* Cumulative system time. */ + elf_gregset_t32 pr_reg; /* GP registers. */ + int pr_fpvalid; /* True if math copro being used. */ + }; + +struct elf_prpsinfo32 + { + char pr_state; /* Numeric process state. */ + char pr_sname; /* Char for pr_state. */ + char pr_zomb; /* Zombie. */ + char pr_nice; /* Nice val. */ + unsigned 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. */ + }; + +typedef elf_gregset_t32 prgregset32_t; +typedef elf_fpregset_t32 prfpregset32_t; + +typedef struct elf_prstatus32 prstatus32_t; +typedef struct elf_prpsinfo32 prpsinfo32_t; + +#endif + +__END_DECLS + +#endif /* sys/procfs.h */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/sys/ptrace.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/sys/ptrace.h new file mode 100644 index 0000000000..7caf1015b2 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/sys/ptrace.h @@ -0,0 +1,238 @@ +/* `ptrace' debugger support interface. Linux version. + Copyright (C) 2000-2017 Free Software Foundation, Inc. + Contributed by Denis Joseph Barrow (djbarrow@de.ibm.com). + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have 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_PTRACE_H +#define _SYS_PTRACE_H 1 + +#include <features.h> +#include <bits/types.h> + +__BEGIN_DECLS +#ifdef _LINUX_PTRACE_H +/* Kludge to stop stuff gdb & strace compiles from getting upset + */ +#undef PTRACE_TRACEME +#undef PTRACE_PEEKTEXT +#undef PTRACE_PEEKDATA +#undef PTRACE_PEEKUSR +#undef PTRACE_POKETEXT +#undef PTRACE_POKEDATA +#undef PTRACE_POKEUSR +#undef PTRACE_CONT +#undef PTRACE_KILL +#undef PTRACE_SINGLESTEP + +#undef PTRACE_ATTACH +#undef PTRACE_DETACH + +#undef PTRACE_SYSCALL +#endif +/* Type of the REQUEST argument to `ptrace.' */ +enum __ptrace_request +{ + /* Indicate that the process making this request should be traced. + All signals received by this process can be intercepted by its + parent, and its parent can use the other `ptrace' requests. */ + PTRACE_TRACEME = 0, +#define PT_TRACE_ME PTRACE_TRACEME + + /* Return the word in the process's text space at address ADDR. */ + PTRACE_PEEKTEXT = 1, +#define PT_READ_I PTRACE_PEEKTEXT + + /* Return the word in the process's data space at address ADDR. */ + PTRACE_PEEKDATA = 2, +#define PT_READ_D PTRACE_PEEKDATA + + /* Return the word in the process's user area at offset ADDR. */ + PTRACE_PEEKUSER = 3, +#define PT_READ_U PTRACE_PEEKUSER + + /* Write the word DATA into the process's text space at address ADDR. */ + PTRACE_POKETEXT = 4, +#define PT_WRITE_I PTRACE_POKETEXT + + /* Write the word DATA into the process's data space at address ADDR. */ + PTRACE_POKEDATA = 5, +#define PT_WRITE_D PTRACE_POKEDATA + + /* Write the word DATA into the process's user area at offset ADDR. */ + PTRACE_POKEUSER = 6, +#define PT_WRITE_U PTRACE_POKEUSER + + /* Continue the process. */ + PTRACE_CONT = 7, +#define PT_CONTINUE PTRACE_CONT + + /* Kill the process. */ + PTRACE_KILL = 8, +#define PT_KILL PTRACE_KILL + + /* Single step the process. + This is not supported on all machines. */ + PTRACE_SINGLESTEP = 9, +#define PT_STEP PTRACE_SINGLESTEP + + /* Get all general purpose registers used by a processes. + This is not supported on all machines. */ + PTRACE_GETREGS = 12, +#define PT_GETREGS PTRACE_GETREGS + + /* Set all general purpose registers used by a processes. + This is not supported on all machines. */ + PTRACE_SETREGS = 13, +#define PT_SETREGS PTRACE_SETREGS + + /* Get all floating point registers used by a processes. + This is not supported on all machines. */ + PTRACE_GETFPREGS = 14, +#define PT_GETFPREGS PTRACE_GETFPREGS + + /* Set all floating point registers used by a processes. + This is not supported on all machines. */ + PTRACE_SETFPREGS = 15, +#define PT_SETFPREGS PTRACE_SETFPREGS + + /* Attach to a process that is already running. */ + PTRACE_ATTACH = 16, +#define PT_ATTACH PTRACE_ATTACH + + /* Detach from a process attached to with PTRACE_ATTACH. */ + PTRACE_DETACH = 17, +#define PT_DETACH PTRACE_DETACH + + /* Continue and stop at the next (return from) syscall. */ + PTRACE_SYSCALL = 24, +#define PT_SYSCALL PTRACE_SYSCALL + + /* Set ptrace filter options. */ + PTRACE_SETOPTIONS = 0x4200, +#define PT_SETOPTIONS PTRACE_SETOPTIONS + + /* Get last ptrace message. */ + PTRACE_GETEVENTMSG = 0x4201, +#define PT_GETEVENTMSG PTRACE_GETEVENTMSG + + /* Get siginfo for process. */ + PTRACE_GETSIGINFO = 0x4202, +#define PT_GETSIGINFO PTRACE_GETSIGINFO + + /* Set new siginfo for process. */ + PTRACE_SETSIGINFO = 0x4203, +#define PT_SETSIGINFO PTRACE_SETSIGINFO + + /* Get register content. */ + PTRACE_GETREGSET = 0x4204, +#define PTRACE_GETREGSET PTRACE_GETREGSET + + /* Set register content. */ + PTRACE_SETREGSET = 0x4205, +#define PTRACE_SETREGSET PTRACE_SETREGSET + + /* Like PTRACE_ATTACH, but do not force tracee to trap and do not affect + signal or group stop state. */ + PTRACE_SEIZE = 0x4206, +#define PTRACE_SEIZE PTRACE_SEIZE + + /* Trap seized tracee. */ + PTRACE_INTERRUPT = 0x4207, +#define PTRACE_INTERRUPT PTRACE_INTERRUPT + + /* Wait for next group event. */ + PTRACE_LISTEN = 0x4208, +#define PTRACE_LISTEN PTRACE_LISTEN + + PTRACE_PEEKSIGINFO = 0x4209, +#define PTRACE_PEEKSIGINFO PTRACE_PEEKSIGINFO + + PTRACE_GETSIGMASK = 0x420a, +#define PTRACE_GETSIGMASK PTRACE_GETSIGMASK + + PTRACE_SETSIGMASK = 0x420b, +#define PTRACE_SETSIGMASK PTRACE_SETSIGMASK + + PTRACE_SECCOMP_GET_FILTER = 0x420c +#define PTRACE_SECCOMP_GET_FILTER PTRACE_SECCOMP_GET_FILTER +}; + + +/* Flag for PTRACE_LISTEN. */ +enum __ptrace_flags +{ + PTRACE_SEIZE_DEVEL = 0x80000000 +}; + +/* Options set using PTRACE_SETOPTIONS. */ +enum __ptrace_setoptions +{ + PTRACE_O_TRACESYSGOOD = 0x00000001, + PTRACE_O_TRACEFORK = 0x00000002, + PTRACE_O_TRACEVFORK = 0x00000004, + PTRACE_O_TRACECLONE = 0x00000008, + PTRACE_O_TRACEEXEC = 0x00000010, + PTRACE_O_TRACEVFORKDONE = 0x00000020, + PTRACE_O_TRACEEXIT = 0x00000040, + PTRACE_O_TRACESECCOMP = 0x00000080, + PTRACE_O_EXITKILL = 0x00100000, + PTRACE_O_SUSPEND_SECCOMP = 0x00200000, + PTRACE_O_MASK = 0x003000ff +}; + +enum __ptrace_eventcodes +{ +/* Wait extended result codes for the above trace options. */ + PTRACE_EVENT_FORK = 1, + PTRACE_EVENT_VFORK = 2, + PTRACE_EVENT_CLONE = 3, + PTRACE_EVENT_EXEC = 4, + PTRACE_EVENT_VFORK_DONE = 5, + PTRACE_EVENT_EXIT = 6, + PTRACE_EVENT_SECCOMP = 7, +/* Extended result codes enabled by means other than options. */ + PTRACE_EVENT_STOP = 128 +}; + +/* Arguments for PTRACE_PEEKSIGINFO. */ +struct __ptrace_peeksiginfo_args +{ + __uint64_t off; /* From which siginfo to start. */ + __uint32_t flags; /* Flags for peeksiginfo. */ + __int32_t nr; /* How many siginfos to take. */ +}; + +enum __ptrace_peeksiginfo_flags +{ + /* Read signals from a shared (process wide) queue. */ + PTRACE_PEEKSIGINFO_SHARED = (1 << 0) +}; + +/* Perform process tracing functions. REQUEST is one of the values + above, and determines the action to be taken. + For all requests except PTRACE_TRACEME, PID specifies the process to be + traced. + + PID and the other arguments described above for the various requests should + appear (those that are used for the particular request) as: + pid_t PID, void *ADDR, int DATA, void *ADDR2 + after REQUEST. */ +extern long int ptrace (enum __ptrace_request __request, ...) __THROW; + +__END_DECLS + +#endif /* _SYS_PTRACE_H */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/sys/ucontext.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/sys/ucontext.h new file mode 100644 index 0000000000..183da5c8f9 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/sys/ucontext.h @@ -0,0 +1,96 @@ +/* Copyright (C) 2000-2017 Free Software Foundation, Inc. + Contributed by Denis Joseph Barrow (djbarrow@de.ibm.com). + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have 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_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 +# define __ctx(fld) fld +#else +# define __ctx(fld) __ ## fld +#endif + +/* Type for a program status word. */ +typedef struct +{ + unsigned long __ctx(mask); + unsigned long __ctx(addr); +} __attribute__ ((__aligned__(8))) __psw_t; + +/* Type for a general-purpose register. */ +typedef unsigned long greg_t; + +/* And the whole bunch of them. We should have used `struct s390_regs', + but to avoid name space pollution and since the tradition says that + the register set is an array, we make gregset_t a simple array + that has the same size as s390_regs. This is needed for the + elf_prstatus structure. */ +#if __WORDSIZE == 64 +# define __NGREG 27 +#else +# define __NGREG 36 +#endif +#ifdef __USE_MISC +# define NGREG __NGREG +#endif +/* Must match kernels psw_t alignment. */ +typedef greg_t gregset_t[__NGREG] __attribute__ ((__aligned__(8))); + +typedef union + { + double __ctx(d); + float __ctx(f); + } fpreg_t; + +/* Register set for the floating-point registers. */ +typedef struct + { + unsigned int __ctx(fpc); + fpreg_t __ctx(fprs)[16]; + } fpregset_t; + +/* Context to describe whole processor state. */ +typedef struct + { + __psw_t __ctx(psw); + unsigned long __ctx(gregs)[16]; + unsigned int __ctx(aregs)[16]; + fpregset_t __ctx(fpregs); + } mcontext_t; + +#undef __ctx + +/* Userlevel context. */ +typedef struct ucontext + { + unsigned long int uc_flags; + struct ucontext *uc_link; + stack_t uc_stack; + mcontext_t uc_mcontext; + sigset_t uc_sigmask; + } ucontext_t; + + +#endif /* sys/ucontext.h */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/sys/user.h b/REORG.TODO/sysdeps/unix/sysv/linux/s390/sys/user.h new file mode 100644 index 0000000000..8f8fcca59f --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/sys/user.h @@ -0,0 +1,82 @@ +/* Copyright (C) 2000-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _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_psw_struct +{ + unsigned long mask; + unsigned long addr; +}; + +struct _user_fpregs_struct +{ + unsigned int fpc; + double fprs[16]; +}; + +struct _user_per_struct +{ + unsigned long control_regs[3]; + unsigned single_step : 1; + unsigned instruction_fetch : 1; + unsigned : 30; + unsigned long starting_addr; + unsigned long ending_addr; + unsigned short perc_atmid; + unsigned long address; + unsigned char access_id; +}; + +struct _user_regs_struct +{ + struct _user_psw_struct psw; /* Program status word. */ + unsigned long gprs[16]; /* General purpose registers. */ + unsigned int acrs[16]; /* Access registers. */ + unsigned long orig_gpr2; /* Original gpr2. */ + struct _user_fpregs_struct fp_regs; /* Floating point registers. */ + struct _user_per_struct per_info; /* Hardware tracing registers. */ + unsigned long ieee_instruction_pointer; /* Always 0. */ +}; + +struct user { + struct _user_regs_struct regs; /* User registers. */ + 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 address of text. */ + unsigned long start_stack; /* Starting address of stack area. */ + long int signal; /* Signal causing the core dump. */ + struct _user_regs_struct *u_ar0; /* Help gdb find registers. */ + unsigned long magic; /* Identifies a core file. */ + char u_comm[32]; /* User command naem. */ +}; + +#define PAGE_SHIFT 12 +#define PAGE_SIZE (1UL << PAGE_SHIFT) +#define PAGE_MASK (~(PAGE_SIZE-1)) +#define NBPG PAGE_SIZE +#define UPAGES 1 +#define HOST_TEXT_START_ADDR (u.start_code) +#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG) + +#endif /* _SYS_USER_H */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/sysconf.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/sysconf.c new file mode 100644 index 0000000000..5d78fdd073 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/sysconf.c @@ -0,0 +1,230 @@ +/* Get system parameters, e.g. cache information. S390/S390x version. + Copyright (C) 2015-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#include <unistd.h> +#include <dl-procinfo.h> + +static long int linux_sysconf (int name); + +/* Possible arguments for get_cache_info. + The values are reflecting the level/attribute/type indications + of ecag-instruction (extract cpu attribue). */ +#define CACHE_LEVEL_MAX 8 +#define CACHE_ATTR_LINESIZE 1 +#define CACHE_ATTR_SIZE 2 +#define CACHE_ATTR_ASSOC 3 +#define CACHE_TYPE_DATA 0 +#define CACHE_TYPE_INSTRUCTION 1 + +static long +get_cache_info (int level, int attr, int type) +{ + unsigned long int val; + unsigned int cmd; + unsigned long int arg; + + /* Check arguments. */ + if (level < 1 || level > CACHE_LEVEL_MAX + || attr < CACHE_ATTR_LINESIZE || attr > CACHE_ATTR_ASSOC + || type < CACHE_TYPE_DATA || type > CACHE_TYPE_INSTRUCTION) + return 0L; + + /* Check if ecag-instruction is available. + ecag - extract CPU attribute (only in zarch; arch >= z10; in as 2.24) */ + if (!(GLRO (dl_hwcap) & HWCAP_S390_STFLE) +#if !defined __s390x__ + || !(GLRO (dl_hwcap) & HWCAP_S390_ZARCH) + || !(GLRO (dl_hwcap) & HWCAP_S390_HIGH_GPRS) +#endif /* !__s390x__ */ + ) + { + /* stfle (or zarch, high-gprs on s390-32) is not available. + We are on an old machine. Return 256byte for LINESIZE for L1 d/i-cache, + otherwise 0. */ + if (level == 1 && attr == CACHE_ATTR_LINESIZE) + return 256L; + else + return 0L; + } + + /* Store facility list and check for z10. + (see ifunc-resolver for details) */ + register unsigned long reg0 __asm__("0") = 0; +#ifdef __s390x__ + unsigned long stfle_bits; +# define STFLE_Z10_MASK (1UL << (63 - 34)) +#else + unsigned long long stfle_bits; +# define STFLE_Z10_MASK (1ULL << (63 - 34)) +#endif /* !__s390x__ */ + __asm__ __volatile__(".machine push" "\n\t" + ".machinemode \"zarch_nohighgprs\"\n\t" + ".machine \"z9-109\"" "\n\t" + "stfle %0" "\n\t" + ".machine pop" "\n" + : "=QS" (stfle_bits), "+d" (reg0) + : : "cc"); + + if (!(stfle_bits & STFLE_Z10_MASK)) + { + /* We are at least on a z9 machine. + Return 256byte for LINESIZE for L1 d/i-cache, + otherwise 0. */ + if (level == 1 && attr == CACHE_ATTR_LINESIZE) + return 256L; + else + return 0L; + } + + /* Check cache topology, if cache is available at this level. */ + arg = (CACHE_LEVEL_MAX - level) * 8; + __asm__ __volatile__ (".machine push\n\t" + ".machine \"z10\"\n\t" + ".machinemode \"zarch_nohighgprs\"\n\t" + "ecag %0,%%r0,0\n\t" /* returns 64bit unsigned integer. */ + "srlg %0,%0,0(%1)\n\t" /* right align 8bit cache info field. */ + ".machine pop" + : "=&d" (val) + : "a" (arg) + ); + val &= 0xCUL; /* Extract cache scope information from cache topology summary. + (bits 4-5 of 8bit-field; 00 means cache does not exist). */ + if (val == 0) + return 0L; + + /* Get cache information for level, attribute and type. */ + cmd = (attr << 4) | ((level - 1) << 1) | type; + __asm__ __volatile__ (".machine push\n\t" + ".machine \"z10\"\n\t" + ".machinemode \"zarch_nohighgprs\"\n\t" + "ecag %0,%%r0,0(%1)\n\t" + ".machine pop" + : "=d" (val) + : "a" (cmd) + ); + return val; +} + +long int +__sysconf (int name) +{ + if (name >= _SC_LEVEL1_ICACHE_SIZE && name <= _SC_LEVEL4_CACHE_LINESIZE) + { + int level; + int attr; + int type; + + switch (name) + { + case _SC_LEVEL1_ICACHE_SIZE: + level = 1; + attr = CACHE_ATTR_SIZE; + type = CACHE_TYPE_INSTRUCTION; + break; + case _SC_LEVEL1_ICACHE_ASSOC: + level = 1; + attr = CACHE_ATTR_ASSOC; + type = CACHE_TYPE_INSTRUCTION; + break; + case _SC_LEVEL1_ICACHE_LINESIZE: + level = 1; + attr = CACHE_ATTR_LINESIZE; + type = CACHE_TYPE_INSTRUCTION; + break; + + case _SC_LEVEL1_DCACHE_SIZE: + level = 1; + attr = CACHE_ATTR_SIZE; + type = CACHE_TYPE_DATA; + break; + case _SC_LEVEL1_DCACHE_ASSOC: + level = 1; + attr = CACHE_ATTR_ASSOC; + type = CACHE_TYPE_DATA; + break; + case _SC_LEVEL1_DCACHE_LINESIZE: + level = 1; + attr = CACHE_ATTR_LINESIZE; + type = CACHE_TYPE_DATA; + break; + + case _SC_LEVEL2_CACHE_SIZE: + level = 2; + attr = CACHE_ATTR_SIZE; + type = CACHE_TYPE_DATA; + break; + case _SC_LEVEL2_CACHE_ASSOC: + level = 2; + attr = CACHE_ATTR_ASSOC; + type = CACHE_TYPE_DATA; + break; + case _SC_LEVEL2_CACHE_LINESIZE: + level = 2; + attr = CACHE_ATTR_LINESIZE; + type = CACHE_TYPE_DATA; + break; + + case _SC_LEVEL3_CACHE_SIZE: + level = 3; + attr = CACHE_ATTR_SIZE; + type = CACHE_TYPE_DATA; + break; + case _SC_LEVEL3_CACHE_ASSOC: + level = 3; + attr = CACHE_ATTR_ASSOC; + type = CACHE_TYPE_DATA; + break; + case _SC_LEVEL3_CACHE_LINESIZE: + level = 3; + attr = CACHE_ATTR_LINESIZE; + type = CACHE_TYPE_DATA; + break; + + case _SC_LEVEL4_CACHE_SIZE: + level = 4; + attr = CACHE_ATTR_SIZE; + type = CACHE_TYPE_DATA; + break; + case _SC_LEVEL4_CACHE_ASSOC: + level = 4; + attr = CACHE_ATTR_ASSOC; + type = CACHE_TYPE_DATA; + break; + case _SC_LEVEL4_CACHE_LINESIZE: + level = 4; + attr = CACHE_ATTR_LINESIZE; + type = CACHE_TYPE_DATA; + break; + + default: + level = 0; + attr = 0; + type = 0; + break; + } + + return get_cache_info (level, attr, type); + } + + return linux_sysconf (name); +} + +/* Now the generic Linux version. */ +#undef __sysconf +#define __sysconf static linux_sysconf +#include <sysdeps/unix/sysv/linux/sysconf.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/system.c b/REORG.TODO/sysdeps/unix/sysv/linux/s390/system.c new file mode 100644 index 0000000000..da90073a9d --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/system.c @@ -0,0 +1,29 @@ +/* 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/>. */ + +/* We have to and actually can handle cancelable system(). The big + problem: we have to kill the child process if necessary. To do + this a cleanup handler has to be registered and is has to be able + to find the PID of the child. The main problem is to reliable have + the PID when needed. It is not necessary for the parent thread to + return. It might still be in the kernel when the cancellation + request comes. Therefore we have to use the clone() calls ability + to have the kernel write the PID into the user-level variable. */ +#define FORK() \ + INLINE_SYSCALL (clone, 3, 0, CLONE_PARENT_SETTID | SIGCHLD, &pid) + +#include "../system.c" diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/s390/ucontext_i.sym b/REORG.TODO/sysdeps/unix/sysv/linux/s390/ucontext_i.sym new file mode 100644 index 0000000000..6cc9f19624 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/s390/ucontext_i.sym @@ -0,0 +1,25 @@ +#include <stddef.h> +#include <signal.h> +#include <sys/ucontext.h> + +-- + +SIG_BLOCK +SIG_UNBLOCK +SIG_SETMASK + +_NSIG8 (_NSIG / 8) + +#define ucontext(member) offsetof (ucontext_t, member) +#define mcontext(member) ucontext (uc_mcontext.member) + +SC_FLGS ucontext (uc_flags) +SC_LINK ucontext (uc_link) +SC_STCK ucontext (uc_stack.ss_sp) +SC_STSZ ucontext (uc_stack.ss_size) +SC_PSW mcontext (psw) +SC_GPRS mcontext (gregs) +SC_ACRS mcontext (aregs) +SC_FPC mcontext (fpregs.fpc) +SC_FPRS mcontext (fpregs.fprs) +SC_MASK ucontext (uc_sigmask) |