diff options
Diffstat (limited to 'REORG.TODO/sysdeps/unix/sysv/linux/hppa')
75 files changed, 8113 insertions, 0 deletions
diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/Implies b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/Implies new file mode 100644 index 0000000000..c3d145cb44 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/Implies @@ -0,0 +1 @@ +hppa/nptl diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/Makefile b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/Makefile new file mode 100644 index 0000000000..68569013fb --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/Makefile @@ -0,0 +1,4 @@ +# Used by *context() functions +ifeq ($(subdir),stdlib) +gen-as-const-headers += ucontext_i.sym +endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/Versions b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/Versions new file mode 100644 index 0000000000..b5098b2171 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/Versions @@ -0,0 +1,38 @@ +libc { + # The comment lines with "#errlist-compat" are magic; see errlist-compat.awk. + # When you get an error from errlist-compat.awk, you need to add a new + # version here. Don't do this blindly, since this means changing the ABI + # for all GNU/Linux configurations. + + GLIBC_2.1 { + #errlist-compat 253 + _sys_errlist; sys_errlist; _sys_nerr; sys_nerr; + } + GLIBC_2.2 { + # New rlimit interface + getrlimit; setrlimit; getrlimit64; setrlimit64; + } + GLIBC_2.3 { + #errlist-compat 254 + _sys_errlist; sys_errlist; _sys_nerr; sys_nerr; + } + GLIBC_2.4 { + #errlist-compat 256 + _sys_errlist; sys_errlist; _sys_nerr; sys_nerr; + } + GLIBC_2.11 { + fallocate64; + } + GLIBC_2.12 { + #errlist-compat 257 + _sys_errlist; sys_errlist; _sys_nerr; sys_nerr; + } + GLIBC_2.17 { + #errlist-compat 260 + _sys_errlist; sys_errlist; _sys_nerr; sys_nerr; + prlimit64; + } + GLIBC_2.19 { + fanotify_mark; + } +} diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/____longjmp_chk.c b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/____longjmp_chk.c new file mode 100644 index 0000000000..48aaeb36c9 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/____longjmp_chk.c @@ -0,0 +1,47 @@ +/* Copyright (C) 2009-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING. If not, write to the Free + Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. */ + +#include <stdio.h> +#include <signal.h> +#include <sysdep.h> +#define __longjmp ____longjmp_chk +#define CHECK_SP(sp) \ + do { \ + register unsigned long this_sp asm ("r30"); \ + /* The stack grows up, therefore frames that were created and then \ + destroyed must all have stack values higher than ours. */ \ + if ((unsigned long) (sp) > this_sp) \ + { \ + stack_t oss; \ + INTERNAL_SYSCALL_DECL (err); \ + int result = INTERNAL_SYSCALL (sigaltstack, err, 2, NULL, &oss);\ + /* If we aren't using an alternate stack then we have already \ + shown that we are jumping to a frame that doesn't exist so \ + error out. If we are using an alternate stack we must prove \ + that we are jumping *out* of the alternate stack. Note that \ + the check for that is the same as that for _STACK_GROWS_UP \ + as for _STACK_GROWS_DOWN. */ \ + if (!INTERNAL_SYSCALL_ERROR_P (result, err) \ + && ((oss.ss_flags & SS_ONSTACK) == 0 \ + || ((unsigned long) oss.ss_sp + oss.ss_size \ + - (unsigned long) (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/hppa/arch-fork.h b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/arch-fork.h new file mode 100644 index 0000000000..108305417d --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/arch-fork.h @@ -0,0 +1,32 @@ +/* ARCH_FORK definition for Linux fork implementation. HPPA version. + Copyright (C) 2005-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#include <sched.h> +#include <signal.h> +#include <sysdep.h> +#include <tls.h> + +/* Argument 1 - Clone flags. + 2 - Child stack pointer. + 3 - Parent tid pointer. + 4 - New TLS area pointer. + 5 - Child tid pointer. */ +#define ARCH_FORK() \ + INLINE_SYSCALL (clone, 5, \ + CLONE_CHILD_SETTID | CLONE_CHILD_CLEARTID | SIGCHLD, \ + NULL, NULL, NULL, &THREAD_SELF->tid) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/atomic-machine.h b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/atomic-machine.h new file mode 100644 index 0000000000..59581bd4bc --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/atomic-machine.h @@ -0,0 +1,94 @@ +/* Copyright (C) 2003-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Carlos O'Donell <carlos@baldric.uwo.ca>, 2005. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#include <stdint.h> /* Required for type definitions e.g. uint8_t. */ + +#ifndef _ATOMIC_MACHINE_H +#define _ATOMIC_MACHINE_H 1 + +typedef int8_t atomic8_t; +typedef uint8_t uatomic8_t; +typedef int_fast8_t atomic_fast8_t; +typedef uint_fast8_t uatomic_fast8_t; + +typedef int32_t atomic32_t; +typedef uint32_t uatomic32_t; +typedef int_fast32_t atomic_fast32_t; +typedef uint_fast32_t uatomic_fast32_t; + +typedef intptr_t atomicptr_t; +typedef uintptr_t uatomicptr_t; +typedef intmax_t atomic_max_t; +typedef uintmax_t uatomic_max_t; + +#define __HAVE_64B_ATOMICS 0 +#define USE_ATOMIC_COMPILER_BUILTINS 0 + +/* XXX Is this actually correct? */ +#define ATOMIC_EXCHANGE_USES_CAS 1 + +/* prev = *addr; + if (prev == old) + *addr = new; + return prev; */ + +/* Use the kernel atomic light weight syscalls on hppa. */ +#define _LWS "0xb0" +#define _LWS_CAS "0" +/* Note r31 is the link register. */ +#define _LWS_CLOBBER "r1", "r23", "r22", "r20", "r31", "memory" +/* String constant for -EAGAIN. */ +#define _ASM_EAGAIN "-11" +/* String constant for -EDEADLOCK. */ +#define _ASM_EDEADLOCK "-45" + +/* The only basic operation needed is compare and exchange. The mem + pointer must be word aligned. We no longer loop on deadlock. */ +#define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \ + ({ \ + register long lws_errno asm("r21"); \ + register unsigned long lws_ret asm("r28"); \ + register unsigned long lws_mem asm("r26") = (unsigned long)(mem); \ + register unsigned long lws_old asm("r25") = (unsigned long)(oldval);\ + register unsigned long lws_new asm("r24") = (unsigned long)(newval);\ + __asm__ __volatile__( \ + "0: \n\t" \ + "ble " _LWS "(%%sr2, %%r0) \n\t" \ + "ldi " _LWS_CAS ", %%r20 \n\t" \ + "cmpiclr,<> " _ASM_EAGAIN ", %%r21, %%r0\n\t" \ + "b,n 0b \n\t" \ + "cmpclr,= %%r0, %%r21, %%r0 \n\t" \ + "iitlbp %%r0,(%%sr0, %%r0) \n\t" \ + : "=r" (lws_ret), "=r" (lws_errno) \ + : "r" (lws_mem), "r" (lws_old), "r" (lws_new) \ + : _LWS_CLOBBER \ + ); \ + \ + (__typeof (oldval)) lws_ret; \ + }) + +#define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \ + ({ \ + __typeof__ (*mem) ret; \ + ret = atomic_compare_and_exchange_val_acq(mem, newval, oldval); \ + /* Return 1 if it was already acquired. */ \ + (ret != oldval); \ + }) + +#endif +/* _ATOMIC_MACHINE_H */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/epoll.h b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/epoll.h new file mode 100644 index 0000000000..0ba399dd2b --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/epoll.h @@ -0,0 +1,27 @@ +/* Copyright (C) 2002-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _SYS_EPOLL_H +# error "Never use <bits/epoll.h> directly; include <sys/epoll.h> instead." +#endif + +/* Flags to be passed to epoll_create1. */ +enum + { + EPOLL_CLOEXEC = 010000000 +#define EPOLL_CLOEXEC EPOLL_CLOEXEC + }; diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/errno.h b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/errno.h new file mode 100644 index 0000000000..ce6bebe8b0 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/errno.h @@ -0,0 +1,66 @@ +/* Error constants. Linux/HPPA specific version. + Copyright (C) 1996-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#ifdef _ERRNO_H + +# undef EDOM +# undef EILSEQ +# undef ERANGE +# include <linux/errno.h> + +/* Linux also has no ECANCELED error code. Since it is not used here + we define it to an invalid value. */ +# ifndef ECANCELED +# define ECANCELED ECANCELLED +# endif + +# ifndef EOWNERDEAD +# define EOWNERDEAD 254 +# endif + +# ifndef ENOTRECOVERABLE +# define ENOTRECOVERABLE 255 +# endif + +# ifndef ERFKILL +# define ERFKILL 256 +# endif + +# ifndef EHWPOISON +# define EHWPOISON 257 +# endif + +# ifndef __ASSEMBLER__ +/* Function to get address of global `errno' variable. */ +extern int *__errno_location (void) __THROW __attribute__ ((__const__)); + +# if !defined _LIBC || defined _LIBC_REENTRANT +/* When using threads, errno is a per-thread value. */ +# define errno (*__errno_location ()) +# endif +# endif /* !__ASSEMBLER__ */ +#endif /* _ERRNO_H */ + +#if !defined _ERRNO_H && defined __need_Emath +/* This is ugly but the kernel header is not clean enough. We must + define only the values EDOM, EILSEQ and ERANGE in case __need_Emath is + defined. */ +# define EDOM 33 /* Math argument out of domain of function. */ +# define EILSEQ 47 /* Illegal byte sequence. */ +# define ERANGE 34 /* Math result not representable. */ +#endif /* !_ERRNO_H && __need_Emath */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/eventfd.h b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/eventfd.h new file mode 100644 index 0000000000..aaed52f736 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/eventfd.h @@ -0,0 +1,31 @@ +/* Copyright (C) 2007-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_EVENTFD_H +# error "Never use <bits/eventfd.h> directly; include <sys/eventfd.h> instead." +#endif + +/* Flags for eventfd. */ +enum + { + EFD_SEMAPHORE = 1, +#define EFD_SEMAPHORE EFD_SEMAPHORE + EFD_CLOEXEC = 010000000, +#define EFD_CLOEXEC EFD_CLOEXEC + EFD_NONBLOCK = 00200004 /* HPUX has separate NDELAY & NONBLOCK */ +#define EFD_NONBLOCK EFD_NONBLOCK + }; diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/fcntl.h b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/fcntl.h new file mode 100644 index 0000000000..2bd799883d --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/fcntl.h @@ -0,0 +1,85 @@ +/* O_*, F_*, FD_* bit values for Linux. + Copyright (C) 1995-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _FCNTL_H +# error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead." +#endif + +#define O_CREAT 00000400 /* not fcntl */ +#define O_EXCL 00002000 /* not fcntl */ +#define O_NOCTTY 00400000 /* not fcntl */ +#define O_APPEND 00000010 +#define O_NONBLOCK 00200004 /* HPUX has separate NDELAY & NONBLOCK */ +#define __O_DSYNC 01000000 +#define __O_RSYNC 02000000 /* HPUX only */ +#define __O_SYNC 00100000 +#define O_SYNC (__O_SYNC|__O_DSYNC) + +#define O_BLKSEEK 00000100 /* HPUX only */ + +#define __O_DIRECTORY 000010000 /* Must be a directory. */ +#define __O_NOFOLLOW 000000200 /* Do not follow links. */ +#define __O_CLOEXEC 010000000 /* Set close_on_exec. */ +#define __O_NOATIME 004000000 /* Do not set atime. */ +#define __O_PATH 020000000 +#define __O_TMPFILE 040010000 /* Atomically create nameless file. */ + +#define __O_LARGEFILE 00004000 + +#define F_GETLK64 8 /* Get record locking info. */ +#define F_SETLK64 9 /* Set record locking info (non-blocking). */ +#define F_SETLKW64 10 /* Set record locking info (blocking). */ + +#define __F_GETOWN 11 /* Get owner of socket (receiver of SIGIO). */ +#define __F_SETOWN 12 /* Set owner of socket (receiver of SIGIO). */ + +#define __F_SETSIG 13 /* Set number of signal to be sent. */ +#define __F_GETSIG 14 /* Get number of signal to be sent. */ + +/* For posix fcntl() and `l_type' field of a `struct flock' for lockf(). */ +#define F_RDLCK 1 /* Read lock. */ +#define F_WRLCK 2 /* Write lock. */ +#define F_UNLCK 3 /* Remove lock. */ + +struct flock + { + short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */ + short int l_whence; /* Where `l_start' is relative to (like `lseek'). */ +#ifndef __USE_FILE_OFFSET64 + __off_t l_start; /* Offset where the lock begins. */ + __off_t l_len; /* Size of the locked area; zero means until EOF. */ +#else + __off64_t l_start; /* Offset where the lock begins. */ + __off64_t l_len; /* Size of the locked area; zero means until EOF. */ +#endif + __pid_t l_pid; /* Process holding the lock. */ + }; + +#ifdef __USE_LARGEFILE64 +struct flock64 + { + short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */ + short int l_whence; /* Where `l_start' is relative to (like `lseek'). */ + __off64_t l_start; /* Offset where the lock begins. */ + __off64_t l_len; /* Size of the locked area; zero means until EOF. */ + __pid_t l_pid; /* Process holding the lock. */ + }; +#endif + +/* Include generic Linux declarations. */ +#include <bits/fcntl-linux.h> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/inotify.h b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/inotify.h new file mode 100644 index 0000000000..dfe5c8497c --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/inotify.h @@ -0,0 +1,29 @@ +/* Copyright (C) 2005-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _SYS_INOTIFY_H +# error "Never use <bits/inotify.h> directly; include <sys/inotify.h> instead." +#endif + +/* Flags for the parameter of inotify_init1. */ +enum + { + IN_CLOEXEC = 010000000, +#define IN_CLOEXEC IN_CLOEXEC + IN_NONBLOCK = 000200004 /* HPUX has separate NDELAY & NONBLOCK */ +#define IN_NONBLOCK IN_NONBLOCK + }; diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/ioctls.h b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/ioctls.h new file mode 100644 index 0000000000..f81e67017b --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/ioctls.h @@ -0,0 +1,36 @@ +/* Copyright (C) 1996-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _SYS_IOCTL_H +# error "Never use <bits/ioctls.h> directly; include <sys/ioctl.h> instead." +#endif + +/* Use the definitions from the kernel header files. */ +#include <asm/ioctls.h> + +/* Oh well, this is necessary since the kernel data structure is + different from the user-level version. */ +#undef TCGETS +#undef TCSETS +#undef TCSETSW +#undef TCSETSF +#define TCGETS _IOR ('T', 16, char[36]) +#define TCSETS _IOW ('T', 17, char[36]) +#define TCSETSW _IOW ('T', 18, char[36]) +#define TCSETSF _IOW ('T', 19, char[36]) + +#include <linux/sockios.h> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/ipc.h b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/ipc.h new file mode 100644 index 0000000000..b2c2cc1ecb --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/ipc.h @@ -0,0 +1,62 @@ +/* Copyright (C) 1995-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _SYS_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 == 32 + unsigned short int __pad1; + unsigned short int mode; /* Read/write permission. */ + unsigned short int __pad2; +#else + __mode_t mode; /* Read/write permission. */ + unsigned short int __pad2; +#endif + unsigned short int __seq; /* Sequence number. */ + unsigned int __pad3; + __extension__ unsigned long long int __glibc_reserved1; + __extension__ unsigned long long int __glibc_reserved2; + }; diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/mman.h b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/mman.h new file mode 100644 index 0000000000..acf7002beb --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/mman.h @@ -0,0 +1,111 @@ +/* Definitions for POSIX memory map interface. Linux/HPPA version. + Copyright (C) 1997-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _SYS_MMAN_H +# error "Never use <bits/mman.h> directly; include <sys/mman.h> instead." +#endif + +/* These are taken from the kernel definitions. */ + +#define PROT_READ 0x1 /* Page can be read */ +#define PROT_WRITE 0x2 /* Page can be written */ +#define PROT_EXEC 0x4 /* Page can be executed */ +#define PROT_NONE 0x0 /* Page can not be accessed */ +#define PROT_GROWSDOWN 0x01000000 /* Extend change to start of + growsdown vma (mprotect only). */ +#define PROT_GROWSUP 0x02000000 /* Extend change to start of + growsup vma (mprotect only). */ + +#define MAP_SHARED 0x01 /* Share changes */ +#define MAP_PRIVATE 0x02 /* Changes are private */ +#ifdef __USE_MISC +# define MAP_TYPE 0x03 /* Mask for type of mapping */ +#endif + +/* Other flags. */ +#define MAP_FIXED 0x04 /* Interpret addr exactly */ +#ifdef __USE_MISC +# define MAP_FILE 0x0 +# define MAP_ANONYMOUS 0x10 /* Don't use a file */ +# define MAP_ANON MAP_ANONYMOUS +# define MAP_VARIABLE 0 +/* When MAP_HUGETLB is set bits [26:31] encode the log2 of the huge page size. */ +# define MAP_HUGE_SHIFT 26 +# define MAP_HUGE_MASK 0x3f +#endif + +/* These are Linux-specific. */ +#ifdef __USE_MISC +# define MAP_DENYWRITE 0x0800 /* ETXTBSY */ +# define MAP_EXECUTABLE 0x1000 /* Mark it as an executable */ +# define MAP_LOCKED 0x2000 /* Pages are locked */ +# define MAP_NORESERVE 0x4000 /* Don't check for reservations */ +# define MAP_GROWSDOWN 0x8000 /* Stack-like segment */ +# define MAP_POPULATE 0x10000 /* Populate (prefault) pagetables */ +# define MAP_NONBLOCK 0x20000 /* Do not block on IO */ +# define MAP_STACK 0x40000 /* Create for process/thread stacks */ +# define MAP_HUGETLB 0x80000 /* Create a huge page mapping */ +#endif + +/* Flags to "msync" */ +#define MS_SYNC 1 /* Synchronous memory sync */ +#define MS_ASYNC 2 /* Sync memory asynchronously */ +#define MS_INVALIDATE 4 /* Invalidate the caches */ + +/* Flags to "mlockall" */ +#define MCL_CURRENT 1 /* Lock all current mappings */ +#define MCL_FUTURE 2 /* Lock all future mappings */ +#define MCL_ONFAULT 4 /* Lock all pages that are faulted in */ + +/* Flags for `mremap'. */ +#ifdef __USE_GNU +# define MREMAP_MAYMOVE 1 +# define MREMAP_FIXED 2 +#endif + +/* Advice to "madvise" */ +#ifdef __USE_MISC +# define MADV_NORMAL 0 /* No further special treatment */ +# define MADV_RANDOM 1 /* Expect random page references */ +# define MADV_SEQUENTIAL 2 /* Expect sequential page references */ +# define MADV_WILLNEED 3 /* Will need these pages */ +# define MADV_DONTNEED 4 /* Dont need these pages */ +# define MADV_SPACEAVAIL 5 /* Insure that resources are reserved */ +# define MADV_VPS_PURGE 6 /* Purge pages from VM page cache */ +# define MADV_VPS_INHERIT 7 /* Inherit parents page size */ +# define MADV_FREE 8 /* Free pages only if memory pressure. */ +# define MADV_REMOVE 9 /* Remove these pages and resources. */ +# define MADV_DONTFORK 10 /* Do not inherit across fork. */ +# define MADV_DOFORK 11 /* Do inherit across fork. */ +# define MADV_MERGEABLE 65 /* KSM may merge identical pages */ +# define MADV_UNMERGEABLE 66 /* KSM may not merge identical pages */ +# define MADV_HUGEPAGE 67 /* Worth backing with hugepages */ +# define MADV_NOHUGEPAGE 68 /* Not worth backing with hugepages */ +# define MADV_DONTDUMP 69 /* Explicity exclude from the core dump, + overrides the coredump filter bits */ +# define MADV_DODUMP 70 /* Clear the MADV_NODUMP flag */ +#endif + +/* The POSIX people had to invent similar names for the same things. */ +#ifdef __USE_XOPEN2K +# define POSIX_MADV_NORMAL 0 /* No further special treatment. */ +# define POSIX_MADV_RANDOM 1 /* Expect random page references. */ +# define POSIX_MADV_SEQUENTIAL 2 /* Expect sequential page references. */ +# define POSIX_MADV_WILLNEED 3 /* Will need these pages. */ +# define POSIX_MADV_DONTNEED 4 /* Don't need these pages. */ +#endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/msq.h b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/msq.h new file mode 100644 index 0000000000..e022a95809 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/msq.h @@ -0,0 +1,84 @@ +/* Copyright (C) 1995-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _SYS_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 */ +#if __WORDSIZE == 32 + unsigned int __pad1; +#endif + __time_t msg_stime; /* time of last msgsnd command */ +#if __WORDSIZE == 32 + unsigned int __pad2; +#endif + __time_t msg_rtime; /* time of last msgrcv command */ +#if __WORDSIZE == 32 + unsigned int __pad3; +#endif + __time_t msg_ctime; /* time of last change */ + 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_reserved1; + unsigned long int __glibc_reserved2; +}; + +#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/hppa/bits/sem.h b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/sem.h new file mode 100644 index 0000000000..a891494c3a --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/sem.h @@ -0,0 +1,91 @@ +/* Copyright (C) 1995-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _SYS_SEM_H +# error "Never include <bits/sem.h> directly; use <sys/sem.h> instead." +#endif + +#include <sys/types.h> +#include <bits/wordsize.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 */ +#if __WORDSIZE == 32 + unsigned int __pad1; +#endif + __time_t sem_otime; /* last semop() time */ +#if __WORDSIZE == 32 + unsigned int __pad2; +#endif + __time_t sem_ctime; /* last time changed by semctl() */ + unsigned long int sem_nsems; /* number of semaphores in set */ + unsigned long int __glibc_reserved1; + unsigned long int __glibc_reserved2; +}; + +/* 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/hppa/bits/shm.h b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/shm.h new file mode 100644 index 0000000000..794f0ab2da --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/shm.h @@ -0,0 +1,107 @@ +/* Copyright (C) 1995-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _SYS_SHM_H +# error "Never include <bits/shm.h> directly; use <sys/shm.h> instead." +#endif + +#include <bits/types.h> +#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) */ + +/* Segment low boundary address multiple. */ +#define SHMLBA 0x00400000 /* address needs to be 4 Mb aligned */ + +/* 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 */ +#if __WORDSIZE == 32 + unsigned int __pad1; +#endif + __time_t shm_atime; /* time of last shmat() */ +#if __WORDSIZE == 32 + unsigned int __pad2; +#endif + __time_t shm_dtime; /* time of last shmdt() */ +#if __WORDSIZE == 32 + unsigned int __pad3; +#endif + __time_t shm_ctime; /* time of last change by shmctl() */ +#if __WORDSIZE == 32 + unsigned int __pad4; +#endif + size_t shm_segsz; /* size of segment in bytes */ + __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_reserved1; + unsigned long int __glibc_reserved2; + }; + +#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 shmmax; + unsigned long shmmin; + unsigned long shmmni; + unsigned long shmseg; + unsigned long shmall; + unsigned long __glibc_reserved1; + unsigned long __glibc_reserved2; + unsigned long __glibc_reserved3; + unsigned long __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 */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/sigaction.h b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/sigaction.h new file mode 100644 index 0000000000..06ba2db8f2 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/sigaction.h @@ -0,0 +1,81 @@ +/* Definitions for Linux/HPPA sigaction. + Copyright (C) 1996-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _SIGNAL_H +# error "Never include <bits/sigaction.h> directly; use <signal.h> instead." +#endif + +#include <bits/wordsize.h> + +/* 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. */ +#if __WORDSIZE == 64 + int __glibc_reserved0; +#endif + int sa_flags; + + /* Additional set of signals to be blocked. */ + __sigset_t sa_mask; + }; + +/* Bits in `sa_flags'. */ + +#define SA_NOCLDSTOP 0x00000008 /* Don't send SIGCHLD when children stop. */ +#define SA_NOCLDWAIT 0x00000080 /* Don't create zombie on child death. */ +#define SA_SIGINFO 0x00000010 /* Invoke signal-catching function with + three arguments instead of one. */ +#if defined __USE_UNIX98 || defined __USE_MISC +# define SA_ONSTACK 0x00000001 /* Use signal stack by using `sa_restorer'. */ +#endif +#if defined __USE_UNIX98 || defined __USE_XOPEN2K8 +# define SA_RESETHAND 0x00000004 /* Reset to SIG_DFL on entry to handler. */ +# define SA_NODEFER 0x00000020 /* Don't automatically block the signal + when its handler is being executed. */ +# define SA_RESTART 0x00000040 /* Restart syscall on signal return. */ +#endif +#ifdef __USE_MISC +# define SA_INTERRUPT 0x20000000 /* Historic 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 /* for blocking signals */ +#define SIG_UNBLOCK 1 /* for unblocking signals */ +#define SIG_SETMASK 2 /* for setting the signal mask */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/signalfd.h b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/signalfd.h new file mode 100644 index 0000000000..34bf6d6bf3 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/signalfd.h @@ -0,0 +1,29 @@ +/* Copyright (C) 2007-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_SIGNALFD_H +# error "Never use <bits/signalfd.h> directly; include <sys/signalfd.h> instead." +#endif + +/* Flags for signalfd. */ +enum + { + SFD_CLOEXEC = 010000000, +#define SFD_CLOEXEC SFD_CLOEXEC + SFD_NONBLOCK = 00200004 /* HPUX has separate NDELAY & NONBLOCK */ +#define SFD_NONBLOCK SFD_NONBLOCK + }; diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/signum.h b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/signum.h new file mode 100644 index 0000000000..20c0b60c9f --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/signum.h @@ -0,0 +1,89 @@ +/* Signal number definitions. Linux/HPPA version. + Copyright (C) 1995-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#ifdef _SIGNAL_H + +/* Fake signal functions. */ +#define SIG_ERR ((__sighandler_t) -1) /* Error return. */ +#define SIG_DFL ((__sighandler_t) 0) /* Default action. */ +#define SIG_IGN ((__sighandler_t) 1) /* Ignore signal. */ + +#ifdef __USE_XOPEN +# define SIG_HOLD ((__sighandler_t) 2) /* Add signal to hold mask. */ +#endif + + +/* Signals. */ +#define SIGHUP 1 /* Hangup (POSIX). */ +#define SIGINT 2 /* Interrupt (ANSI). */ +#define SIGQUIT 3 /* Quit (POSIX). */ +#define SIGILL 4 /* Illegal instruction (ANSI). */ +#define SIGTRAP 5 /* Trace trap (POSIX). */ +#define SIGABRT 6 /* Abort (ANSI). */ +#define SIGIOT 6 /* IOT trap (4.2 BSD). */ +#define SIGSTKFLT 7 /* Stack fault. */ +#define SIGFPE 8 /* Floating-point exception (ANSI). */ +#define SIGKILL 9 /* Kill, unblockable (POSIX). */ +#define SIGBUS 10 /* BUS error (4.2 BSD). */ +#define SIGSEGV 11 /* Segmentation violation (ANSI). */ +#define SIGXCPU 12 /* CPU limit exceeded (4.2 BSD). */ +#define SIGPIPE 13 /* Broken pipe (POSIX). */ +#define SIGALRM 14 /* Alarm clock (POSIX). */ +#define SIGTERM 15 /* Termination (ANSI). */ +#define SIGUSR1 16 /* User-defined signal 1 (POSIX). */ +#define SIGUSR2 17 /* User-defined signal 2 (POSIX). */ +#define SIGCLD SIGCHLD /* Same as SIGCHLD (System V). */ +#define SIGCHLD 18 /* Child status has changed (POSIX). */ +#define SIGPWR 19 /* Power failure restart (System V). */ +#define SIGVTALRM 20 /* Virtual alarm clock (4.2 BSD). */ +#define SIGPROF 21 /* Profiling alarm clock (4.2 BSD). */ +#define SIGPOLL SIGIO /* Pollable event occurred (System V). */ +#define SIGIO 22 /* I/O now possible (4.2 BSD). */ +#define SIGWINCH 23 /* Window size change (4.3 BSD, Sun). */ +#define SIGSTOP 24 /* Stop, unblockable (POSIX). */ +#define SIGTSTP 25 /* Keyboard stop (POSIX). */ +#define SIGCONT 26 /* Continue (POSIX). */ +#define SIGTTIN 27 /* Background read from tty (POSIX). */ +#define SIGTTOU 28 /* Background write to tty (POSIX). */ +#define SIGURG 29 /* Urgent condition on socket (4.2 BSD). */ +#define SIGXFSZ 30 /* File size limit exceeded (4.2 BSD). */ +#define SIGSYS 31 /* Bad system call. */ +#define SIGUNUSED 31 + +#define _NSIG 65 /* Biggest signal number + 1 + (including real-time signals). */ + +#define SIGRTMIN (__libc_current_sigrtmin ()) +#define SIGRTMAX (__libc_current_sigrtmax ()) + +/* These are the hard limits of the kernel. These values should not be + used directly at user level. */ +/* In the Linux kernel version 3.17, and glibc 2.21, the signal numbers + were rearranged in order to make hppa like every other arch. Previously + we started __SIGRTMIN at 37, and that meant several pieces of important + software, including systemd, would fail to build. To support systemd we + removed SIGEMT and SIGLOST, and rearranged the others according to + expected values. This is technically an ABI incompatible change, but + because zero applications use SIGSTKFLT, SIGXCPU, SIGXFSZ and SIGSYS + nothing broke. Nothing uses SIGEMT and SIGLOST, and they were present + for HPUX compatibility which is no longer supported. Thus because + nothing breaks we don't do any compatibility work here. */ +#define __SIGRTMIN 32 /* Kernel > 3.17. */ +#define __SIGRTMAX (_NSIG - 1) + +#endif /* <signal.h> included. */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/socket_type.h b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/socket_type.h new file mode 100644 index 0000000000..8c99f2116f --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/socket_type.h @@ -0,0 +1,55 @@ +/* Define enum __socket_type for Linux/HP-PARISC. + 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_SOCKET_H +# error "Never include <bits/socket_type.h> directly; use <sys/socket.h> instead." +#endif + +/* Types of sockets. */ +enum __socket_type +{ + SOCK_STREAM = 1, /* Sequenced, reliable, connection-based + byte streams. */ +#define SOCK_STREAM SOCK_STREAM + SOCK_DGRAM = 2, /* Connectionless, unreliable datagrams + of fixed maximum length. */ +#define SOCK_DGRAM SOCK_DGRAM + SOCK_RAW = 3, /* Raw protocol interface. */ +#define SOCK_RAW SOCK_RAW + SOCK_RDM = 4, /* Reliably-delivered messages. */ +#define SOCK_RDM SOCK_RDM + SOCK_SEQPACKET = 5, /* Sequenced, reliable, connection-based, + datagrams of fixed maximum length. */ +#define SOCK_SEQPACKET SOCK_SEQPACKET + SOCK_DCCP = 6, /* Datagram Congestion Control Protocol. */ +#define SOCK_DCCP SOCK_DCCP + SOCK_PACKET = 10, /* Linux specific way of getting packets + at the dev level. For writing rarp and + other similar things on the user level. */ +#define SOCK_PACKET SOCK_PACKET + + /* Flags to be ORed into the type parameter of socket and socketpair and + used for the flags parameter of paccept. */ + + SOCK_CLOEXEC = 010000000, /* Atomically set close-on-exec flag for the + new descriptor(s). */ +#define SOCK_CLOEXEC SOCK_CLOEXEC + SOCK_NONBLOCK = 0x40000000 /* Atomically mark descriptor(s) as + non-blocking. */ +#define SOCK_NONBLOCK SOCK_NONBLOCK +}; diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/timerfd.h b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/timerfd.h new file mode 100644 index 0000000000..2a62c980af --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/bits/timerfd.h @@ -0,0 +1,29 @@ +/* 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 _SYS_TIMERFD_H +# error "Never use <bits/timerfd.h> directly; include <sys/timerfd.h> instead." +#endif + +/* Bits to be set in the FLAGS parameter of `timerfd_create'. */ +enum + { + TFD_CLOEXEC = 010000000, +#define TFD_CLOEXEC TFD_CLOEXEC + TFD_NONBLOCK = 000200004 /* HPUX has separate NDELAY & NONBLOCK */ +#define TFD_NONBLOCK TFD_NONBLOCK + }; diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/brk.c b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/brk.c new file mode 100644 index 0000000000..f500ab419f --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/brk.c @@ -0,0 +1,41 @@ +/* brk system call for Linux/HPPA. + Copyright (C) 1995-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#include <errno.h> +#include <unistd.h> +#include <sysdep.h> + +/* This must be initialized data because commons can't have aliases. */ +void *__curbrk = 0; + +int +__brk (void *addr) +{ + void *newbrk; + + __curbrk = newbrk = (void *) INLINE_SYSCALL (brk, 1, addr); + + if (newbrk < addr) + { + __set_errno (ENOMEM); + return -1; + } + + return 0; +} +weak_alias (__brk, brk) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/c++-types.data b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/c++-types.data new file mode 100644 index 0000000000..fde53bf337 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/c++-types.data @@ -0,0 +1,67 @@ +blkcnt64_t:x +blkcnt_t:l +blksize_t:l +caddr_t:Pc +clockid_t:i +clock_t:l +daddr_t:i +dev_t:y +fd_mask:l +fsblkcnt64_t:y +fsblkcnt_t:m +fsfilcnt64_t:y +fsfilcnt_t:m +fsid_t:8__fsid_t +gid_t:j +id_t:j +ino64_t:y +ino_t:m +int16_t:s +int32_t:i +int64_t:x +int8_t:a +intptr_t:i +key_t:i +loff_t:x +mode_t:j +nlink_t:j +off64_t:x +off_t:l +pid_t:i +pthread_attr_t:14pthread_attr_t +pthread_barrier_t:17pthread_barrier_t +pthread_barrierattr_t:21pthread_barrierattr_t +pthread_cond_t:14pthread_cond_t +pthread_condattr_t:18pthread_condattr_t +pthread_key_t:j +pthread_mutex_t:15pthread_mutex_t +pthread_mutexattr_t:19pthread_mutexattr_t +pthread_once_t:i +pthread_rwlock_t:16pthread_rwlock_t +pthread_rwlockattr_t:20pthread_rwlockattr_t +pthread_spinlock_t:i +pthread_t:m +quad_t:x +register_t:i +rlim64_t:y +rlim_t:m +sigset_t:10__sigset_t +size_t:j +socklen_t:j +ssize_t:i +suseconds_t:l +time_t:l +u_char:h +uid_t:j +uint:j +u_int:j +u_int16_t:t +u_int32_t:j +u_int64_t:y +u_int8_t:h +ulong:m +u_long:m +u_quad_t:y +useconds_t:j +ushort:t +u_short:t diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/clone.S b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/clone.S new file mode 100644 index 0000000000..d36b302199 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/clone.S @@ -0,0 +1,161 @@ +/* Copyright (C) 1996-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by David Huggins-Daines <dhd@debian.org>, 2000. + Based on the Alpha version by Richard Henderson <rth@tamu.edu>, 1996. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have 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 <asm/unistd.h> +#include <sysdep.h> +#define _ERRNO_H 1 +#include <bits/errno.h> +#include <tcb-offsets.h> + +/* Non-thread code calls __clone with the following parameters: + int clone(int (*fn)(void *arg), + void *child_stack, + int flags, + void *arg) + + NPTL Code will call __clone with the following parameters: + int clone(int (*fn)(void *arg), + void *child_stack, + int flags, + void *arg, + int *parent_tidptr, + struct user_desc *newtls, + int *child_pidptr) + + The code should not mangle the extra input registers. + Syscall expects: Input to __clone: + 4(r25) - function pointer (r26, arg0) + 0(r25) - argument (r23, arg3) + r26 - clone flags. (r24, arg2) + r25+64 - user stack pointer. (r25, arg1) + r24 - parent tid pointer. (stack - 52) + r23 - struct user_desc newtls pointer. (stack - 56) + r22 - child tid pointer. (stack - 60) + r20 - clone syscall number (constant) + + Return: + + On success the thread ID of the child process is returend in + the callers context. + On error return -1, and set errno to the value returned by + the syscall. + */ + + .text +ENTRY(__clone) + /* Prologue */ + stwm %r4, 64(%sp) + stw %sp, -4(%sp) +#ifdef PIC + stw %r19, -32(%sp) +#endif + + /* Sanity check arguments. */ + comib,=,n 0, %arg0, .LerrorSanity /* no NULL function pointers */ + comib,=,n 0, %arg1, .LerrorSanity /* no NULL stack pointers */ + + /* Save the function pointer, arg, and flags on the new stack. */ + stwm %r26, 64(%r25) + stw %r23, -60(%r25) + stw %r24, -56(%r25) + /* Clone arguments are (int flags, void * child_stack) */ + copy %r24, %r26 /* flags are first */ + /* User stack pointer is in the correct register already */ + + /* Load args from stack... */ + ldw -116(%sp), %r24 /* Load parent_tidptr */ + ldw -120(%sp), %r23 /* Load newtls */ + ldw -124(%sp), %r22 /* Load child_tidptr */ + + /* Save the PIC register. */ +#ifdef PIC + copy %r19, %r4 /* parent */ +#endif + + /* Do the system call */ + ble 0x100(%sr2, %r0) + ldi __NR_clone, %r20 + + ldi -4096, %r1 + comclr,>>= %r1, %ret0, %r0 /* Note: unsigned compare. */ + b,n .LerrorRest + + /* Restore the PIC register. */ +#ifdef PIC + copy %r4, %r19 /* parent */ +#endif + + comib,=,n 0, %ret0, .LthreadStart + + /* Successful return from the parent + No need to restore the PIC register, + since we return immediately. */ + + ldw -84(%sp), %rp + bv %r0(%rp) + ldwm -64(%sp), %r4 + +.LerrorRest: + /* Something bad happened -- no child created */ + bl __syscall_error, %rp + sub %r0, %ret0, %arg0 + ldw -84(%sp), %rp + /* Return after setting errno, ret0 is set to -1 by __syscall_error. */ + bv %r0(%rp) + ldwm -64(%sp), %r4 + +.LerrorSanity: + /* Sanity checks failed, return -1, and set errno to EINVAL. */ + bl __syscall_error, %rp + ldi EINVAL, %arg0 + ldw -84(%sp), %rp + bv %r0(%rp) + ldwm -64(%sp), %r4 + +.LthreadStart: + /* Load up the arguments. */ + ldw -60(%sp), %arg0 + ldw -64(%sp), %r22 + + /* $$dyncall fixes child's PIC register */ + + /* Call the user's function */ +#ifdef PIC + copy %r19, %r4 +#endif + bl $$dyncall, %r31 + copy %r31, %rp +#ifdef PIC + copy %r4, %r19 +#endif + /* The call to _exit needs saved r19. */ + bl _exit, %rp + copy %ret0, %arg0 + + /* We should not return from _exit. + We do not restore r4, or the stack state. */ + iitlbp %r0, (%sr0, %r0) + +PSEUDO_END(__clone) + +libc_hidden_def (__clone) +weak_alias (__clone, clone) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/fcntl.c b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/fcntl.c new file mode 100644 index 0000000000..ea951bc4f9 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/fcntl.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/i386/fcntl.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/fxstat.c b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/fxstat.c new file mode 100644 index 0000000000..4f219f0b9d --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/fxstat.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/i386/fxstat.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/fxstatat.c b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/fxstatat.c new file mode 100644 index 0000000000..0f8b3135d8 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/fxstatat.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/i386/fxstatat.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/getcontext.S b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/getcontext.S new file mode 100644 index 0000000000..6f52f2149d --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/getcontext.S @@ -0,0 +1,165 @@ +/* Get current user context. + Copyright (C) 2008-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Helge Deller <deller@gmx.de>, 2008. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> + +#include "ucontext_i.h" + + + /* Trampoline function. Non-standard calling ABI. */ + /* Can not use ENTRY(__getcontext_ret) here. */ + .type __getcontext_ret, @function + .hidden __getcontext_ret +__getcontext_ret: + .proc + .callinfo FRAME=0,NO_CALLS + /* r26-r23 contain original r3-r6, but because setcontext + does not reload r3-r6 (it's using them as temporaries) + we must save them elsewhere and swap them back in. */ + copy %r23, %r3 + copy %r24, %r4 + copy %r25, %r5 + copy %r26, %r6 + /* r20 contains original return pointer. */ + bv 0(%r20) + copy %r0, %ret0 + .procend + .size __getcontext_ret, .-__getcontext_ret + + +ENTRY(__getcontext) + /* Save the registers. */ + stw %r0, oR0(%r26) + stw %r1, oR1(%r26) + /* stw %r2, oR2(%r26) - used for trampoline. */ + stw %r3, oR3(%r26) + stw %r4, oR4(%r26) + stw %r5, oR5(%r26) + stw %r6, oR6(%r26) + stw %r7, oR7(%r26) + stw %r8, oR8(%r26) + stw %r9, oR9(%r26) + stw %r10, oR10(%r26) + stw %r11, oR11(%r26) + stw %r12, oR12(%r26) + stw %r13, oR13(%r26) + stw %r14, oR14(%r26) + stw %r15, oR15(%r26) + stw %r16, oR16(%r26) + stw %r17, oR17(%r26) + stw %r18, oR18(%r26) + stw %r19, oR19(%r26) + /* stw %r20, oR20(%r26) - used for trampoline. */ + stw %r21, oR21(%r26) + stw %r22, oR22(%r26) + /* stw %r23, oR23(%r26) - used for trampoline. */ + /* stw %r24, oR24(%r26) - used for trampoline. */ + /* stw %r25, oR25(%r26) - used for trampoline. */ + /* stw %r26, oR26(%r26) - used for trampoline. */ + stw %r27, oR27(%r26) + stw %r28, oR28(%r26) + stw %r29, oR29(%r26) + stw %sp, oR30(%r26) + stw %r31, oR31(%r26) + + stw %r0, oUC_FLAGS(%r26) + /* stw %r0, oUC_LINK(%r26) - Do not overwrite. */ + stw %sp, oSS_SP(%r26) + stw %r0, oSS_FLAGS(%r26) + stw %r0, oSS_SIZE(%r26) + + stw %r0, oSC_FLAGS(%r26) + + stw %r0, oIASQ0(%r26) + stw %r0, oIASQ1(%r26) + stw %r0, oIAOQ0(%r26) + stw %r0, oIAOQ1(%r26) + stw %r0, oSAR(%r26) /* used as flag in swapcontext(). */ + + + /* Store floating-point regs. */ + ldo oFPREGS0(%r26),%r1 + fstds,ma %fr0, 8(%r1) + fstds,ma %fr1, 8(%r1) + fstds,ma %fr2, 8(%r1) + fstds,ma %fr3, 8(%r1) + fstds,ma %fr4, 8(%r1) + fstds,ma %fr5, 8(%r1) + fstds,ma %fr6, 8(%r1) + fstds,ma %fr7, 8(%r1) + fstds,ma %fr8, 8(%r1) + fstds,ma %fr9, 8(%r1) + fstds,ma %fr10, 8(%r1) + fstds,ma %fr11, 8(%r1) + fstds,ma %fr12, 8(%r1) + fstds,ma %fr13, 8(%r1) + fstds,ma %fr14, 8(%r1) + fstds,ma %fr15, 8(%r1) + fstds,ma %fr16, 8(%r1) + fstds,ma %fr17, 8(%r1) + fstds,ma %fr18, 8(%r1) + fstds,ma %fr19, 8(%r1) + fstds,ma %fr20, 8(%r1) + fstds,ma %fr21, 8(%r1) + fstds,ma %fr22, 8(%r1) + fstds,ma %fr23, 8(%r1) + fstds,ma %fr24, 8(%r1) + fstds,ma %fr25, 8(%r1) + fstds,ma %fr26, 8(%r1) + fstds,ma %fr27, 8(%r1) + fstds,ma %fr28, 8(%r1) + fstds,ma %fr29, 8(%r1) + fstds,ma %fr30, 8(%r1) + fstds %fr31, 0(%r1) + + /* Prologue */ + stwm %r4, 64(%sp) +#ifdef PIC + stw %r19, -32(%sp) +#endif + + /* Set up the trampoline registers. + r20, r23, r24, r25, r26 and r2 are clobbered + by call to getcontext() anyway. Reuse them. */ + stw %r2, oR20(%r26) + stw %r3, oR23(%r26) + stw %r4, oR24(%r26) + stw %r5, oR25(%r26) + stw %r6, oR26(%r26) + ldil L%__getcontext_ret, %r1 + ldo R%__getcontext_ret(%r1), %r1 + stw %r1, oR2(%r26) + + /* Save the current signal mask. */ + /* sigprocmask(SIG_BLOCK, NULL, &ucp->uc_sigmask); */ + ldo oSIGMASK(%r26), %r24 + copy %r0, %r25 + bl sigprocmask, %r2 + ldi SIG_BLOCK, %r26 + + /* Epilogue */ + ldw -84(%sp), %r2 +#ifdef PIC + ldw -96(%sp), %r19 +#endif + bv %r0(%r2) + ldwm -64(%sp), %r4 +END(__getcontext) + +weak_alias (__getcontext, getcontext) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/getdents64.c b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/getdents64.c new file mode 100644 index 0000000000..0c75fb5a06 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/getdents64.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/i386/getdents64.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/internaltypes.h b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/internaltypes.h new file mode 100644 index 0000000000..d6496579da --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/internaltypes.h @@ -0,0 +1,84 @@ +#include_next <internaltypes.h> +#ifndef _INTERNAL_TYPES_H_HPPA_ +#define _INTERNAL_TYPES_H_HPPA_ 1 +#include <atomic.h> + +/* In GLIBC 2.10 HPPA switched from Linuxthreads to NPTL, and in order +to maintain ABI compatibility with pthread_cond_t, some care had to be +taken. + +The NPTL pthread_cond_t grew in size. When HPPA switched to NPTL, we +dropped the use of ldcw, and switched to the kernel helper routine for +compare-and-swap. This allowed HPPA to use the 4-word 16-byte aligned +lock words, and alignment words to store the additional pthread_cond_t +data. Once organized properly the new NPTL pthread_cond_t was 1 word +smaller than the Linuxthreads version. + +However, we were faced with the case that users may have initialized the +pthread_cond_t with PTHREAD_COND_INITIALIZER. In this case, the first +four words were set to one, and must be cleared before any NPTL code +used these words. + +We didn't want to use LDCW, because it continues to be a source of bugs +when applications memset pthread_cond_t to all zeroes by accident. This +works on all other architectures where lock words are unlocked at zero. +Remember that because of the semantics of LDCW, a locked word is set to +zero, and an unlocked word is set to 1. + +Instead we used atomic_compare_and_exchange_val_acq, but we couldn't use +this on any of the pthread_cond_t words, otherwise it might interfere +with the current operation of the structure. To solve this problem we +used the left over word. + +If the stucture was initialized by a legacy Linuxthread +PTHREAD_COND_INITIALIZER it contained a 1, and this indicates that the +structure requires zeroing for NPTL. The first thread to come upon a +pthread_cond_t with a 1 in the __initializer field, will +compare-and-swap the value, placing a 2 there which will cause all other +threads using the same pthread_cond_t to wait for the completion of the +initialization. Lastly, we use a store (with memory barrier) to change +__initializer from 2 to 0. Note that the store is strongly ordered, but +we use the PA 1.1 compatible form which is ",ma" with zero offset. + +In the future, when the application is recompiled with NPTL +PTHREAD_COND_INITIALIZER it will be a quick compare-and-swap, which +fails because __initializer is zero, and the structure will be used as +is correctly. */ + +#define cond_compat_clear(var) \ +({ \ + int tmp = 0; \ + var->__data.__wseq = 0; \ + var->__data.__signals_sent = 0; \ + var->__data.__confirmed = 0; \ + var->__data.__generation = 0; \ + var->__data.__mutex = NULL; \ + var->__data.__quiescence_waiters = 0; \ + var->__data.__clockid = 0; \ + /* Clear __initializer last, to indicate initialization is done. */ \ + /* This synchronizes-with the acquire load below. */ \ + atomic_store_release (&var->__data.__initializer, 0); \ +}) + +#define cond_compat_check_and_clear(var) \ +({ \ + int v; \ + int *value = &var->__data.__initializer; \ + /* This synchronizes-with the release store above. */ \ + while ((v = atomic_load_acquire (value)) != 0) \ + { \ + if (v == 1 \ + /* Relaxed MO is fine; it only matters who's first. */ \ + && atomic_compare_exchange_acquire_weak_relaxed (value, 1, 2)) \ + { \ + /* We're first; initialize structure. */ \ + cond_compat_clear (var); \ + break; \ + } \ + else \ + /* Yield before we re-check initialization status. */ \ + sched_yield (); \ + } \ +}) + +#endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/ipc_priv.h b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/ipc_priv.h new file mode 100644 index 0000000000..d880f5029a --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/ipc_priv.h @@ -0,0 +1,21 @@ +/* Old SysV permission definition for Linux. Hppa 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/>. */ + +#include <sys/ipc.h> /* For __key_t */ + +#define __IPC_64 0x0 diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/kernel-features.h b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/kernel-features.h new file mode 100644 index 0000000000..0e73a5c0df --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/kernel-features.h @@ -0,0 +1,29 @@ +/* Set flags signalling availability of kernel features based on given + kernel version number. + Copyright (C) 2006-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + + +/* Support for the utimes syscall was added in 3.14. */ +#if __LINUX_KERNEL_VERSION >= 0x030e00 +# define __ASSUME_UTIMES 1 +#endif + +#include_next <kernel-features.h> + +#define __ASSUME_RECV_SYSCALL 1 +#define __ASSUME_SEND_SYSCALL 1 diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/kernel_sigaction.h b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/kernel_sigaction.h new file mode 100644 index 0000000000..af048cbe7d --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/kernel_sigaction.h @@ -0,0 +1,18 @@ +/* We have a separate header file here because we do not support + SA_RESTORER on hppa. */ + +/* This is the sigaction struction from the Linux 2.1.20 kernel. */ +/* Blah. This is bogus. We don't ever use it. */ +struct old_kernel_sigaction { + __sighandler_t k_sa_handler; + unsigned long sa_mask; + unsigned long sa_flags; +}; + +/* This is the sigaction structure from the Linux 2.1.68 kernel. */ + +struct kernel_sigaction { + __sighandler_t k_sa_handler; + unsigned long sa_flags; + sigset_t sa_mask; +}; diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/kernel_stat.h b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/kernel_stat.h new file mode 100644 index 0000000000..a3ac53a1ef --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/kernel_stat.h @@ -0,0 +1,34 @@ +/* definition of "struct stat" from the kernel */ +struct kernel_stat { + unsigned long st_dev; /* dev_t is 32 bits on parisc */ + unsigned long st_ino; /* 32 bits */ + unsigned short st_mode; /* 16 bits */ + unsigned short st_nlink; /* 16 bits */ + unsigned short st_reserved1; /* old st_uid */ + unsigned short st_reserved2; /* old st_gid */ + unsigned long st_rdev; + unsigned long st_size; + struct timespec st_atim; + struct timespec st_mtim; + struct timespec st_ctim; + long st_blksize; + long st_blocks; + unsigned long __glibc_reserved1; /* ACL stuff */ + unsigned long __glibc_reserved2; /* network */ + unsigned long __glibc_reserved3; /* network */ + unsigned long __glibc_reserved4; /* cnodes */ + unsigned short __glibc_reserved5; /* netsite */ + short st_fstype; + unsigned long st_realdev; + unsigned short st_basemode; + unsigned short st_spareshort; + unsigned long st_uid; + unsigned long st_gid; + unsigned long st_spare4[3]; +}; + +#define _HAVE_STAT_NSEC +#define _HAVE_STAT64_NSEC + +#define XSTAT_IS_XSTAT64 0 +#define STATFS_IS_STATFS64 0 diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/ld.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/ld.abilist new file mode 100644 index 0000000000..fc1c60ea17 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/ld.abilist @@ -0,0 +1,12 @@ +GLIBC_2.2 GLIBC_2.2 A +GLIBC_2.2 __libc_stack_end D 0x4 +GLIBC_2.2 _dl_mcount F +GLIBC_2.2 _r_debug D 0x14 +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_addr F +GLIBC_2.4 GLIBC_2.4 A +GLIBC_2.4 __stack_chk_guard D 0x4 diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/libBrokenLocale.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/libBrokenLocale.abilist new file mode 100644 index 0000000000..21343df781 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/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/hppa/libanl.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/libanl.abilist new file mode 100644 index 0000000000..edabfb436e --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/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/hppa/libc.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/libc.abilist new file mode 100644 index 0000000000..24bb7300d3 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/libc.abilist @@ -0,0 +1,2174 @@ +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 0x404 +GLIBC_2.12 _sys_nerr D 0x4 +GLIBC_2.12 ntp_gettimex F +GLIBC_2.12 recvmmsg F +GLIBC_2.12 sys_errlist D 0x404 +GLIBC_2.12 sys_nerr D 0x4 +GLIBC_2.13 GLIBC_2.13 A +GLIBC_2.13 fanotify_init F +GLIBC_2.13 prlimit 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 _sys_errlist D 0x410 +GLIBC_2.17 _sys_nerr D 0x4 +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 prlimit64 F +GLIBC_2.17 secure_getenv F +GLIBC_2.17 sys_errlist D 0x410 +GLIBC_2.17 sys_nerr D 0x4 +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 fanotify_mark F +GLIBC_2.2 GLIBC_2.2 A +GLIBC_2.2 _Exit F +GLIBC_2.2 _IO_2_1_stderr_ D 0xa0 +GLIBC_2.2 _IO_2_1_stdin_ D 0xa0 +GLIBC_2.2 _IO_2_1_stdout_ D 0xa0 +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 0x54 +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 0x4 +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 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 __adjtimex F +GLIBC_2.2 __after_morecore_hook D 0x4 +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 __clz_tab D 0x100 +GLIBC_2.2 __cmsg_nxthdr F +GLIBC_2.2 __connect F +GLIBC_2.2 __ctype32_b D 0x4 +GLIBC_2.2 __ctype32_tolower D 0x4 +GLIBC_2.2 __ctype32_toupper D 0x4 +GLIBC_2.2 __ctype_b D 0x4 +GLIBC_2.2 __ctype_get_mb_cur_max F +GLIBC_2.2 __ctype_tolower D 0x4 +GLIBC_2.2 __ctype_toupper D 0x4 +GLIBC_2.2 __curbrk D 0x4 +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 __dgettext F +GLIBC_2.2 __dup2 F +GLIBC_2.2 __duplocale F +GLIBC_2.2 __endmntent F +GLIBC_2.2 __environ D 0x4 +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 __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 __freadable F +GLIBC_2.2 __freading F +GLIBC_2.2 __free_hook D 0x4 +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 __islower_l F +GLIBC_2.2 __isnan F +GLIBC_2.2 __isnanf 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 0x4 +GLIBC_2.2 __key_encryptsession_pk_LOCAL D 0x4 +GLIBC_2.2 __key_gendes_LOCAL D 0x4 +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 0x4 +GLIBC_2.2 __malloc_initialize_hook D 0x4 +GLIBC_2.2 __mbrlen F +GLIBC_2.2 __mbrtowc F +GLIBC_2.2 __memalign_hook D 0x4 +GLIBC_2.2 __mempcpy F +GLIBC_2.2 __mempcpy_small F +GLIBC_2.2 __monstartup F +GLIBC_2.2 __morecore D 0x4 +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 0x4 +GLIBC_2.2 __progname_full D 0x4 +GLIBC_2.2 __pwrite64 F +GLIBC_2.2 __rawmemchr F +GLIBC_2.2 __rcmd_errstr D 0x4 +GLIBC_2.2 __read F +GLIBC_2.2 __realloc_hook D 0x4 +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 __signbitl 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 0x4 +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 0x8 +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 0x4 +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 0x4 +GLIBC_2.2 _nl_msg_cat_cntr D 0x4 +GLIBC_2.2 _null_auth D 0xc +GLIBC_2.2 _obstack D 0x4 +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 0x200 +GLIBC_2.2 _res_hconf D 0x30 +GLIBC_2.2 _rpc_dtablesize F +GLIBC_2.2 _seterr_reply F +GLIBC_2.2 _setjmp F +GLIBC_2.2 _sys_errlist D 0x3f4 +GLIBC_2.2 _sys_nerr D 0x4 +GLIBC_2.2 _sys_siglist D 0x100 +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 0x4 +GLIBC_2.2 argp_program_version D 0x4 +GLIBC_2.2 argp_program_version_hook D 0x4 +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 0x4 +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 0x4 +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 0x14 +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 0x4 +GLIBC_2.2 loc2 D 0x4 +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 0x4 +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 0x4 +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 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 0x4 +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 0x4 +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 0x4 +GLIBC_2.2 program_invocation_short_name D 0x4 +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 0x4 +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 0x10 +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 0x4 +GLIBC_2.2 stdin D 0x4 +GLIBC_2.2 stdout D 0x4 +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 0x4 +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 0xc +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 0x3f4 +GLIBC_2.2 sys_nerr D 0x4 +GLIBC_2.2 sys_sigabbrev D 0x100 +GLIBC_2.2 sys_siglist D 0x100 +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 0x4 +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 0x8 +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 0x3f8 +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 0x3f8 +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 __confstr_chk F +GLIBC_2.4 __fgets_chk F +GLIBC_2.4 __fgets_unlocked_chk F +GLIBC_2.4 __fgetws_chk F +GLIBC_2.4 __fgetws_unlocked_chk F +GLIBC_2.4 __fwprintf_chk F +GLIBC_2.4 __fxstatat F +GLIBC_2.4 __fxstatat64 F +GLIBC_2.4 __getcwd_chk F +GLIBC_2.4 __getdomainname_chk F +GLIBC_2.4 __getgroups_chk F +GLIBC_2.4 __gethostname_chk F +GLIBC_2.4 __getlogin_r_chk F +GLIBC_2.4 __getwd_chk F +GLIBC_2.4 __mbsnrtowcs_chk F +GLIBC_2.4 __mbsrtowcs_chk F +GLIBC_2.4 __mbstowcs_chk F +GLIBC_2.4 __pread64_chk F +GLIBC_2.4 __pread_chk F +GLIBC_2.4 __ptsname_r_chk F +GLIBC_2.4 __read_chk F +GLIBC_2.4 __readlink_chk F +GLIBC_2.4 __realpath_chk F +GLIBC_2.4 __recv_chk F +GLIBC_2.4 __recvfrom_chk F +GLIBC_2.4 __stack_chk_fail F +GLIBC_2.4 __stpncpy_chk F +GLIBC_2.4 __swprintf_chk F +GLIBC_2.4 __syslog_chk F +GLIBC_2.4 __ttyname_r_chk F +GLIBC_2.4 __vfwprintf_chk F +GLIBC_2.4 __vswprintf_chk F +GLIBC_2.4 __vsyslog_chk F +GLIBC_2.4 __vwprintf_chk F +GLIBC_2.4 __wcpcpy_chk F +GLIBC_2.4 __wcpncpy_chk F +GLIBC_2.4 __wcrtomb_chk F +GLIBC_2.4 __wcscat_chk F +GLIBC_2.4 __wcscpy_chk F +GLIBC_2.4 __wcsncat_chk F +GLIBC_2.4 __wcsncpy_chk F +GLIBC_2.4 __wcsnrtombs_chk F +GLIBC_2.4 __wcsrtombs_chk F +GLIBC_2.4 __wcstombs_chk F +GLIBC_2.4 __wctomb_chk F +GLIBC_2.4 __wmemcpy_chk F +GLIBC_2.4 __wmemmove_chk F +GLIBC_2.4 __wmempcpy_chk F +GLIBC_2.4 __wmemset_chk F +GLIBC_2.4 __wprintf_chk F +GLIBC_2.4 __xmknodat F +GLIBC_2.4 _sys_errlist D 0x400 +GLIBC_2.4 _sys_nerr D 0x4 +GLIBC_2.4 eaccess F +GLIBC_2.4 faccessat F +GLIBC_2.4 fchmodat F +GLIBC_2.4 fchownat F +GLIBC_2.4 fdopendir F +GLIBC_2.4 futimesat F +GLIBC_2.4 inotify_add_watch F +GLIBC_2.4 inotify_init F +GLIBC_2.4 inotify_rm_watch F +GLIBC_2.4 linkat F +GLIBC_2.4 mkdirat F +GLIBC_2.4 mkfifoat F +GLIBC_2.4 open_wmemstream F +GLIBC_2.4 openat F +GLIBC_2.4 openat64 F +GLIBC_2.4 ppoll F +GLIBC_2.4 readlinkat F +GLIBC_2.4 renameat F +GLIBC_2.4 symlinkat F +GLIBC_2.4 sys_errlist D 0x400 +GLIBC_2.4 sys_nerr D 0x4 +GLIBC_2.4 unlinkat F +GLIBC_2.4 unshare F +GLIBC_2.5 GLIBC_2.5 A +GLIBC_2.5 __readlinkat_chk F +GLIBC_2.5 inet6_opt_append F +GLIBC_2.5 inet6_opt_find F +GLIBC_2.5 inet6_opt_finish F +GLIBC_2.5 inet6_opt_get_val F +GLIBC_2.5 inet6_opt_init F +GLIBC_2.5 inet6_opt_next F +GLIBC_2.5 inet6_opt_set_val F +GLIBC_2.5 inet6_rth_add F +GLIBC_2.5 inet6_rth_getaddr F +GLIBC_2.5 inet6_rth_init F +GLIBC_2.5 inet6_rth_reverse F +GLIBC_2.5 inet6_rth_segments F +GLIBC_2.5 inet6_rth_space F +GLIBC_2.5 splice F +GLIBC_2.5 tee F +GLIBC_2.5 vmsplice F +GLIBC_2.6 GLIBC_2.6 A +GLIBC_2.6 __sched_cpucount F +GLIBC_2.6 epoll_pwait F +GLIBC_2.6 futimens F +GLIBC_2.6 sched_getcpu F +GLIBC_2.6 strerror_l F +GLIBC_2.6 sync_file_range F +GLIBC_2.6 utimensat F +GLIBC_2.7 GLIBC_2.7 A +GLIBC_2.7 __fread_chk F +GLIBC_2.7 __fread_unlocked_chk F +GLIBC_2.7 __isoc99_fscanf F +GLIBC_2.7 __isoc99_fwscanf F +GLIBC_2.7 __isoc99_scanf F +GLIBC_2.7 __isoc99_sscanf F +GLIBC_2.7 __isoc99_swscanf F +GLIBC_2.7 __isoc99_vfscanf F +GLIBC_2.7 __isoc99_vfwscanf F +GLIBC_2.7 __isoc99_vscanf F +GLIBC_2.7 __isoc99_vsscanf F +GLIBC_2.7 __isoc99_vswscanf F +GLIBC_2.7 __isoc99_vwscanf F +GLIBC_2.7 __isoc99_wscanf F +GLIBC_2.7 __open64_2 F +GLIBC_2.7 __open_2 F +GLIBC_2.7 __openat64_2 F +GLIBC_2.7 __openat_2 F +GLIBC_2.7 __sched_cpualloc F +GLIBC_2.7 __sched_cpufree F +GLIBC_2.7 eventfd F +GLIBC_2.7 eventfd_read F +GLIBC_2.7 eventfd_write F +GLIBC_2.7 mkostemp F +GLIBC_2.7 mkostemp64 F +GLIBC_2.7 signalfd F +GLIBC_2.8 GLIBC_2.8 A +GLIBC_2.8 __asprintf_chk F +GLIBC_2.8 __dprintf_chk F +GLIBC_2.8 __obstack_printf_chk F +GLIBC_2.8 __obstack_vprintf_chk F +GLIBC_2.8 __vasprintf_chk F +GLIBC_2.8 __vdprintf_chk F +GLIBC_2.8 qsort_r F +GLIBC_2.8 timerfd_create F +GLIBC_2.8 timerfd_gettime F +GLIBC_2.8 timerfd_settime F +GLIBC_2.9 GLIBC_2.9 A +GLIBC_2.9 dup3 F +GLIBC_2.9 epoll_create1 F +GLIBC_2.9 inotify_init1 F +GLIBC_2.9 pipe2 F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/libcrypt.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/libcrypt.abilist new file mode 100644 index 0000000000..4db2639336 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/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/hppa/libdl.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/libdl.abilist new file mode 100644 index 0000000000..5536f6e0a9 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/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/hppa/libm.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/libm.abilist new file mode 100644 index 0000000000..80fd4ada99 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/libm.abilist @@ -0,0 +1,433 @@ +GLIBC_2.15 GLIBC_2.15 A +GLIBC_2.15 __acos_finite F +GLIBC_2.15 __acosf_finite F +GLIBC_2.15 __acosh_finite F +GLIBC_2.15 __acoshf_finite F +GLIBC_2.15 __asin_finite F +GLIBC_2.15 __asinf_finite F +GLIBC_2.15 __atan2_finite F +GLIBC_2.15 __atan2f_finite F +GLIBC_2.15 __atanh_finite F +GLIBC_2.15 __atanhf_finite F +GLIBC_2.15 __cosh_finite F +GLIBC_2.15 __coshf_finite F +GLIBC_2.15 __exp10_finite F +GLIBC_2.15 __exp10f_finite F +GLIBC_2.15 __exp2_finite F +GLIBC_2.15 __exp2f_finite F +GLIBC_2.15 __exp_finite F +GLIBC_2.15 __expf_finite F +GLIBC_2.15 __fmod_finite F +GLIBC_2.15 __fmodf_finite F +GLIBC_2.15 __gamma_r_finite F +GLIBC_2.15 __gammaf_r_finite F +GLIBC_2.15 __hypot_finite F +GLIBC_2.15 __hypotf_finite F +GLIBC_2.15 __j0_finite F +GLIBC_2.15 __j0f_finite F +GLIBC_2.15 __j1_finite F +GLIBC_2.15 __j1f_finite F +GLIBC_2.15 __jn_finite F +GLIBC_2.15 __jnf_finite F +GLIBC_2.15 __lgamma_r_finite F +GLIBC_2.15 __lgammaf_r_finite F +GLIBC_2.15 __log10_finite F +GLIBC_2.15 __log10f_finite F +GLIBC_2.15 __log2_finite F +GLIBC_2.15 __log2f_finite F +GLIBC_2.15 __log_finite F +GLIBC_2.15 __logf_finite F +GLIBC_2.15 __pow_finite F +GLIBC_2.15 __powf_finite F +GLIBC_2.15 __remainder_finite F +GLIBC_2.15 __remainderf_finite F +GLIBC_2.15 __scalb_finite F +GLIBC_2.15 __scalbf_finite F +GLIBC_2.15 __sinh_finite F +GLIBC_2.15 __sinhf_finite F +GLIBC_2.15 __sqrt_finite F +GLIBC_2.15 __sqrtf_finite F +GLIBC_2.15 __y0_finite F +GLIBC_2.15 __y0f_finite F +GLIBC_2.15 __y1_finite F +GLIBC_2.15 __y1f_finite F +GLIBC_2.15 __yn_finite F +GLIBC_2.15 __ynf_finite F +GLIBC_2.18 GLIBC_2.18 A +GLIBC_2.18 __issignaling F +GLIBC_2.18 __issignalingf F +GLIBC_2.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 __fpclassify F +GLIBC_2.2 __fpclassifyf F +GLIBC_2.2 __signbit F +GLIBC_2.2 __signbitf F +GLIBC_2.2 __signbitl 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 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 exp2l F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/libnsl.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/libnsl.abilist new file mode 100644 index 0000000000..a23db2aeaf --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/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/hppa/libpthread.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/libpthread.abilist new file mode 100644 index 0000000000..a73aa43c55 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/libpthread.abilist @@ -0,0 +1,245 @@ +GLIBC_2.11 GLIBC_2.11 A +GLIBC_2.11 pthread_sigqueue F +GLIBC_2.12 GLIBC_2.12 A +GLIBC_2.12 pthread_getname_np F +GLIBC_2.12 pthread_mutex_consistent F +GLIBC_2.12 pthread_mutexattr_getrobust F +GLIBC_2.12 pthread_mutexattr_setrobust F +GLIBC_2.12 pthread_setname_np F +GLIBC_2.18 GLIBC_2.18 A +GLIBC_2.18 pthread_getattr_default_np F +GLIBC_2.18 pthread_setattr_default_np F +GLIBC_2.2 GLIBC_2.2 A +GLIBC_2.2 _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/hppa/libresolv.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/libresolv.abilist new file mode 100644 index 0000000000..4d50e7c8c6 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/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/hppa/librt.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/librt.abilist new file mode 100644 index 0000000000..15e4418863 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/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/hppa/libthread_db.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/libthread_db.abilist new file mode 100644 index 0000000000..a8a8c2c68d --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/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/hppa/libutil.abilist b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/libutil.abilist new file mode 100644 index 0000000000..89c67755c4 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/libutil.abilist @@ -0,0 +1,7 @@ +GLIBC_2.0 GLIBC_2.0 A +GLIBC_2.0 forkpty F +GLIBC_2.0 login F +GLIBC_2.0 login_tty F +GLIBC_2.0 logout F +GLIBC_2.0 logwtmp F +GLIBC_2.0 openpty F diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/localplt.data b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/localplt.data new file mode 100644 index 0000000000..9dd81b47c8 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/localplt.data @@ -0,0 +1,24 @@ +# See scripts/check-localplt.awk for how this file is processed. +# PLT use is required for the malloc family and for matherr because +# users can define their own functions and have library internals call them. +libc.so: calloc +libc.so: free +libc.so: malloc +libc.so: memalign +libc.so: realloc +libc.so: _exit +libc.so: __sigsetjmp +libc.so: _IO_funlockfile +libc.so: sigprocmask +libc.so: __errno_location +libm.so: matherr +libpthread.so: __errno_location +# 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/hppa/lxstat.c b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/lxstat.c new file mode 100644 index 0000000000..0efa0aea49 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/lxstat.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/i386/lxstat.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/makecontext.c b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/makecontext.c new file mode 100644 index 0000000000..9b02e49608 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/makecontext.c @@ -0,0 +1,99 @@ +/* Create new context. + Copyright (C) 2008-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Helge Deller <deller@gmx.de>, 2008. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have 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 <sysdep.h> +#include <ucontext.h> + +/* POSIX only supports integer arguments. */ + +/* Stack must be 64-byte aligned at all times. */ +#define STACK_ALIGN 64 +/* Size of frame marker in unsigned long words. */ +#define FRAME_SIZE_UL 8 +/* Size of frame marker in bytes. */ +#define FRAME_SIZE_BYTES (8 * sizeof(unsigned long)) +/* Size of X arguments in bytes. */ +#define ARGS(x) (x * sizeof(unsigned long)) + +void +__makecontext (ucontext_t *ucp, void (*func) (void), int argc, ...) +{ + unsigned long *sp, *osp; + va_list ap; + int i; + + /* Create a 64-byte aligned frame to store args. Use ss_sp if + it is available, otherwise be robust and use the currently + saved stack pointer. */ + if (ucp->uc_stack.ss_sp && ucp->uc_stack.ss_size) + osp = (unsigned long *)ucp->uc_stack.ss_sp; + else + osp = (unsigned long *)ucp->uc_mcontext.sc_gr[30]; + + sp = (unsigned long *)((((unsigned long) osp) + + FRAME_SIZE_BYTES + ARGS(argc) + STACK_ALIGN) + & ~(STACK_ALIGN - 1)); + + /* Use new frame. */ + ucp->uc_mcontext.sc_gr[30] = ((unsigned long) sp); + + /* Finish frame setup. */ + if (ucp->uc_link) + { + /* Returning to the next context and next frame. */ + sp[-4/sizeof(unsigned long)] = ucp->uc_link->uc_mcontext.sc_gr[30]; + sp[-20/sizeof(unsigned long)] = ucp->uc_link->uc_mcontext.sc_gr[2]; + } + else + { + /* This is the main context. No frame marker, and no return address. */ + sp[-4/sizeof(unsigned long)] = 0x0; + sp[-20/sizeof(unsigned long)] = 0x0; + } + + /* Store address to jump to. */ + ucp->uc_mcontext.sc_gr[2] = (unsigned long) func; + + /* Process arguments. */ + va_start (ap, argc); + for (i = 0; i < argc; ++i) + { + if (i < 4) + { + ucp->uc_mcontext.sc_gr[26-i] = va_arg (ap, int); + continue; + } + + if ((i < 8) && (sizeof(unsigned long) == 8)) + { + /* 64bit: r19-r22 are arg7-arg4. */ + ucp->uc_mcontext.sc_gr[22+4-i] = va_arg (ap, int); + continue; + } + + /* All other arguments go on the stack. */ + sp[-1 * (FRAME_SIZE_UL + 1 + i)] = va_arg (ap, int); + } + va_end (ap); +} +weak_alias(__makecontext, makecontext) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/profil-counter.h b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/profil-counter.h new file mode 100644 index 0000000000..0bb6e37298 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/profil-counter.h @@ -0,0 +1,24 @@ +/* Machine-dependent SIGPROF signal handler. PA-RISC version + Copyright (C) 1996-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +static void +__profil_counter (int signr, siginfo_t *si, struct ucontext *uctx) +{ + unsigned long ip = uctx->uc_mcontext.sc_iaoq[0] & ~0x3; + profil_count ((void *) ip); +} diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/pt-vfork.S b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/pt-vfork.S new file mode 100644 index 0000000000..fc4573c86b --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/pt-vfork.S @@ -0,0 +1,79 @@ +/* Copyright (C) 2005-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#define _ERRNO_H 1 +#include <bits/errno.h> +#include <tcb-offsets.h> + +/* Clone the calling process, but without copying the whole address space. + The calling process is suspended until the new process exits or is + replaced by a call to `execve'. Return -1 for errors, 0 to the new process, + and the process ID of the new process to the old process. */ + +.Lthread_start: ASM_LINE_SEP + + /* r26, r25, r24, r23 are free since vfork has no arguments */ +ENTRY(__vfork) + /* We must not create a frame. When the child unwinds to call + exec it will clobber the same frame that the parent + needs to unwind. */ + + /* Save the PIC register. */ +#ifdef PIC + copy %r19, %r25 /* parent */ +#endif + + /* Syscall saves and restores all register states */ + ble 0x100(%sr2,%r0) + ldi __NR_vfork,%r20 + + /* Check for error */ + ldi -4096,%r1 + comclr,>>= %r1,%ret0,%r0 /* Note: unsigned compare. */ + b,n .Lerror + + /* Return, and DO NOT restore rp. The child may have called + functions that updated the frame's rp. This works because + the kernel ensures rp is preserved across the vfork + syscall. */ + bv,n %r0(%rp) + +.Lerror: + /* Now we need a stack to call a function. We are assured + that there is no child now, so it's safe to create + a frame. */ + stw %rp, -20(%sp) + stwm %r3, 64(%sp) + stw %sp, -4(%sp) + + sub %r0,%ret0,%r3 + SYSCALL_ERROR_HANDLER + /* Restore the PIC register (in delay slot) on error */ +#ifdef PIC + copy %r25, %r19 /* parent */ +#else + nop +#endif + /* Write syscall return into errno location */ + stw %r3, 0(%ret0) + ldw -84(%sp), %rp + bv %r0(%rp) + ldwm -64(%sp), %r3 +PSEUDO_END (__vfork) +libc_hidden_def (__vfork) +weak_alias (__vfork, vfork) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/pthread.h b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/pthread.h new file mode 100644 index 0000000000..ac617201d2 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/pthread.h @@ -0,0 +1,1203 @@ +/* Copyright (C) 2002-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _PTHREAD_H +#define _PTHREAD_H 1 + +#include <features.h> +#include <endian.h> +#include <sched.h> +#include <time.h> + +#include <bits/pthreadtypes.h> +#include <bits/setjmp.h> +#include <bits/wordsize.h> + + +/* Detach state. */ +enum +{ + PTHREAD_CREATE_JOINABLE, +#define PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_JOINABLE + PTHREAD_CREATE_DETACHED +#define PTHREAD_CREATE_DETACHED PTHREAD_CREATE_DETACHED +}; + + +/* Mutex types. */ +enum +{ + PTHREAD_MUTEX_TIMED_NP, + PTHREAD_MUTEX_RECURSIVE_NP, + PTHREAD_MUTEX_ERRORCHECK_NP, + PTHREAD_MUTEX_ADAPTIVE_NP +#if defined __USE_UNIX98 || defined __USE_XOPEN2K8 + , + PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_TIMED_NP, + PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP, + PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP, + PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL +#endif +#ifdef __USE_GNU + /* For compatibility. */ + , PTHREAD_MUTEX_FAST_NP = PTHREAD_MUTEX_TIMED_NP +#endif +}; + + +#ifdef __USE_XOPEN2K +/* Robust mutex or not flags. */ +enum +{ + PTHREAD_MUTEX_STALLED, + PTHREAD_MUTEX_STALLED_NP = PTHREAD_MUTEX_STALLED, + PTHREAD_MUTEX_ROBUST, + PTHREAD_MUTEX_ROBUST_NP = PTHREAD_MUTEX_ROBUST +}; +#endif + + +#if defined __USE_POSIX199506 || defined __USE_UNIX98 +/* Mutex protocols. */ +enum +{ + PTHREAD_PRIO_NONE, + PTHREAD_PRIO_INHERIT, + PTHREAD_PRIO_PROTECT +}; +#endif + + +#ifdef __PTHREAD_MUTEX_HAVE_PREV +# define PTHREAD_MUTEX_INITIALIZER \ + { { 0, 0, 0, 0, 0, __PTHREAD_SPINS, { 0, 0 } } } +# ifdef __USE_GNU +# define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP \ + { { 0, 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP, __PTHREAD_SPINS, { 0, 0 } } } +# define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP \ + { { 0, 0, 0, 0, PTHREAD_MUTEX_ERRORCHECK_NP, __PTHREAD_SPINS, { 0, 0 } } } +# define PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP \ + { { 0, 0, 0, 0, PTHREAD_MUTEX_ADAPTIVE_NP, __PTHREAD_SPINS, { 0, 0 } } } +# define PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP \ + { { 0, 0, 0, 0, PTHREAD_MUTEX_ADAPTIVE_NP, __PTHREAD_SPINS, { 0, 0 } } } + +# endif +#else +# define PTHREAD_MUTEX_INITIALIZER \ + { { 0, 0, 0, 0, 0, { __PTHREAD_SPINS } } } +# ifdef __USE_GNU +# define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP \ + { { 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP, 0, { __PTHREAD_SPINS } } } +# define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP \ + { { 0, 0, 0, PTHREAD_MUTEX_ERRORCHECK_NP, 0, { __PTHREAD_SPINS } } } +# define PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP \ + { { 0, 0, 0, PTHREAD_MUTEX_ADAPTIVE_NP, 0, { __PTHREAD_SPINS } } } + +# endif +#endif + + +/* Read-write lock types. */ +#if defined __USE_UNIX98 || defined __USE_XOPEN2K +enum +{ + PTHREAD_RWLOCK_PREFER_READER_NP, + PTHREAD_RWLOCK_PREFER_WRITER_NP, + PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP, + PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_READER_NP +}; + +/* Define __PTHREAD_RWLOCK_INT_FLAGS_SHARED to 1 if pthread_rwlock_t + has the shared field. All 64-bit architectures have the shared field + in pthread_rwlock_t. */ +#ifndef __PTHREAD_RWLOCK_INT_FLAGS_SHARED +# if __WORDSIZE == 64 +# define __PTHREAD_RWLOCK_INT_FLAGS_SHARED 1 +# endif +#endif + +/* Read-write lock initializers. */ +# define PTHREAD_RWLOCK_INITIALIZER \ + { { 0, 0, 0, 0, 0, 0, 0, 0, __PTHREAD_RWLOCK_ELISION_EXTRA, 0, 0 } } +# ifdef __USE_GNU +# ifdef __PTHREAD_RWLOCK_INT_FLAGS_SHARED +# define PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP \ + { { 0, 0, 0, 0, 0, 0, 0, 0, __PTHREAD_RWLOCK_ELISION_EXTRA, 0, \ + PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP } } +# else +# if __BYTE_ORDER == __LITTLE_ENDIAN +# define PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP \ + { { 0, 0, 0, 0, 0, 0, PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP, \ + 0, __PTHREAD_RWLOCK_ELISION_EXTRA, 0, 0 } } +# else +# define PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP \ + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP,\ + 0 } } +# endif +# endif +# endif +#endif /* Unix98 or XOpen2K */ + + +/* Scheduler inheritance. */ +enum +{ + PTHREAD_INHERIT_SCHED, +#define PTHREAD_INHERIT_SCHED PTHREAD_INHERIT_SCHED + PTHREAD_EXPLICIT_SCHED +#define PTHREAD_EXPLICIT_SCHED PTHREAD_EXPLICIT_SCHED +}; + + +/* Scope handling. */ +enum +{ + PTHREAD_SCOPE_SYSTEM, +#define PTHREAD_SCOPE_SYSTEM PTHREAD_SCOPE_SYSTEM + PTHREAD_SCOPE_PROCESS +#define PTHREAD_SCOPE_PROCESS PTHREAD_SCOPE_PROCESS +}; + + +/* Process shared or private flag. */ +enum +{ + PTHREAD_PROCESS_PRIVATE, +#define PTHREAD_PROCESS_PRIVATE PTHREAD_PROCESS_PRIVATE + PTHREAD_PROCESS_SHARED +#define PTHREAD_PROCESS_SHARED PTHREAD_PROCESS_SHARED +}; + + + +/* Conditional variable handling. */ +#define PTHREAD_COND_INITIALIZER { { 0, 0, 0, 0, 0, (void *) 0, 0, 0 } } + + +/* Cleanup buffers */ +struct _pthread_cleanup_buffer +{ + void (*__routine) (void *); /* Function to call. */ + void *__arg; /* Its argument. */ + int __canceltype; /* Saved cancellation type. */ + struct _pthread_cleanup_buffer *__prev; /* Chaining of cleanup functions. */ +}; + +/* Cancellation */ +enum +{ + PTHREAD_CANCEL_ENABLE, +#define PTHREAD_CANCEL_ENABLE PTHREAD_CANCEL_ENABLE + PTHREAD_CANCEL_DISABLE +#define PTHREAD_CANCEL_DISABLE PTHREAD_CANCEL_DISABLE +}; +enum +{ + PTHREAD_CANCEL_DEFERRED, +#define PTHREAD_CANCEL_DEFERRED PTHREAD_CANCEL_DEFERRED + PTHREAD_CANCEL_ASYNCHRONOUS +#define PTHREAD_CANCEL_ASYNCHRONOUS PTHREAD_CANCEL_ASYNCHRONOUS +}; +#define PTHREAD_CANCELED ((void *) -1) + + +/* Single execution handling. */ +#define PTHREAD_ONCE_INIT 0 + + +#ifdef __USE_XOPEN2K +/* Value returned by 'pthread_barrier_wait' for one of the threads after + the required number of threads have called this function. + -1 is distinct from 0 and all errno constants */ +# define PTHREAD_BARRIER_SERIAL_THREAD -1 +#endif + + +__BEGIN_DECLS + +/* Create a new thread, starting with execution of START-ROUTINE + getting passed ARG. Creation attributed come from ATTR. The new + handle is stored in *NEWTHREAD. */ +extern int pthread_create (pthread_t *__restrict __newthread, + const pthread_attr_t *__restrict __attr, + void *(*__start_routine) (void *), + void *__restrict __arg) __THROWNL __nonnull ((1, 3)); + +/* Terminate calling thread. + + The registered cleanup handlers are called via exception handling + so we cannot mark this function with __THROW.*/ +extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__)); + +/* Make calling thread wait for termination of the thread TH. The + exit status of the thread is stored in *THREAD_RETURN, if THREAD_RETURN + is not NULL. + + This function is a cancellation point and therefore not marked with + __THROW. */ +extern int pthread_join (pthread_t __th, void **__thread_return); + +#ifdef __USE_GNU +/* Check whether thread TH has terminated. If yes return the status of + the thread in *THREAD_RETURN, if THREAD_RETURN is not NULL. */ +extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) __THROW; + +/* Make calling thread wait for termination of the thread TH, but only + until TIMEOUT. The exit status of the thread is stored in + *THREAD_RETURN, if THREAD_RETURN is not NULL. + + This function is a cancellation point and therefore not marked with + __THROW. */ +extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return, + const struct timespec *__abstime); +#endif + +/* Indicate that the thread TH is never to be joined with PTHREAD_JOIN. + The resources of TH will therefore be freed immediately when it + terminates, instead of waiting for another thread to perform PTHREAD_JOIN + on it. */ +extern int pthread_detach (pthread_t __th) __THROW; + + +/* Obtain the identifier of the current thread. */ +extern pthread_t pthread_self (void) __THROW __attribute__ ((__const__)); + +/* Compare two thread identifiers. */ +extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) + __THROW __attribute__ ((__const__)); + + +/* Thread attribute handling. */ + +/* Initialize thread attribute *ATTR with default attributes + (detachstate is PTHREAD_JOINABLE, scheduling policy is SCHED_OTHER, + no user-provided stack). */ +extern int pthread_attr_init (pthread_attr_t *__attr) __THROW __nonnull ((1)); + +/* Destroy thread attribute *ATTR. */ +extern int pthread_attr_destroy (pthread_attr_t *__attr) + __THROW __nonnull ((1)); + +/* Get detach state attribute. */ +extern int pthread_attr_getdetachstate (const pthread_attr_t *__attr, + int *__detachstate) + __THROW __nonnull ((1, 2)); + +/* Set detach state attribute. */ +extern int pthread_attr_setdetachstate (pthread_attr_t *__attr, + int __detachstate) + __THROW __nonnull ((1)); + + +/* Get the size of the guard area created for stack overflow protection. */ +extern int pthread_attr_getguardsize (const pthread_attr_t *__attr, + size_t *__guardsize) + __THROW __nonnull ((1, 2)); + +/* Set the size of the guard area created for stack overflow protection. */ +extern int pthread_attr_setguardsize (pthread_attr_t *__attr, + size_t __guardsize) + __THROW __nonnull ((1)); + + +/* Return in *PARAM the scheduling parameters of *ATTR. */ +extern int pthread_attr_getschedparam (const pthread_attr_t *__restrict __attr, + struct sched_param *__restrict __param) + __THROW __nonnull ((1, 2)); + +/* Set scheduling parameters (priority, etc) in *ATTR according to PARAM. */ +extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr, + const struct sched_param *__restrict + __param) __THROW __nonnull ((1, 2)); + +/* Return in *POLICY the scheduling policy of *ATTR. */ +extern int pthread_attr_getschedpolicy (const pthread_attr_t *__restrict + __attr, int *__restrict __policy) + __THROW __nonnull ((1, 2)); + +/* Set scheduling policy in *ATTR according to POLICY. */ +extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy) + __THROW __nonnull ((1)); + +/* Return in *INHERIT the scheduling inheritance mode of *ATTR. */ +extern int pthread_attr_getinheritsched (const pthread_attr_t *__restrict + __attr, int *__restrict __inherit) + __THROW __nonnull ((1, 2)); + +/* Set scheduling inheritance mode in *ATTR according to INHERIT. */ +extern int pthread_attr_setinheritsched (pthread_attr_t *__attr, + int __inherit) + __THROW __nonnull ((1)); + + +/* Return in *SCOPE the scheduling contention scope of *ATTR. */ +extern int pthread_attr_getscope (const pthread_attr_t *__restrict __attr, + int *__restrict __scope) + __THROW __nonnull ((1, 2)); + +/* Set scheduling contention scope in *ATTR according to SCOPE. */ +extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope) + __THROW __nonnull ((1)); + +/* Return the previously set address for the stack. */ +extern int pthread_attr_getstackaddr (const pthread_attr_t *__restrict + __attr, void **__restrict __stackaddr) + __THROW __nonnull ((1, 2)) __attribute_deprecated__; + +/* Set the starting address of the stack of the thread to be created. + Depending on whether the stack grows up or down the value must either + be higher or lower than all the address in the memory block. The + minimal size of the block must be PTHREAD_STACK_MIN. */ +extern int pthread_attr_setstackaddr (pthread_attr_t *__attr, + void *__stackaddr) + __THROW __nonnull ((1)) __attribute_deprecated__; + +/* Return the currently used minimal stack size. */ +extern int pthread_attr_getstacksize (const pthread_attr_t *__restrict + __attr, size_t *__restrict __stacksize) + __THROW __nonnull ((1, 2)); + +/* Add information about the minimum stack size needed for the thread + to be started. This size must never be less than PTHREAD_STACK_MIN + and must also not exceed the system limits. */ +extern int pthread_attr_setstacksize (pthread_attr_t *__attr, + size_t __stacksize) + __THROW __nonnull ((1)); + +#ifdef __USE_XOPEN2K +/* Return the previously set address for the stack. */ +extern int pthread_attr_getstack (const pthread_attr_t *__restrict __attr, + void **__restrict __stackaddr, + size_t *__restrict __stacksize) + __THROW __nonnull ((1, 2, 3)); + +/* The following two interfaces are intended to replace the last two. They + require setting the address as well as the size since only setting the + address will make the implementation on some architectures impossible. */ +extern int pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr, + size_t __stacksize) __THROW __nonnull ((1)); +#endif + +#ifdef __USE_GNU +/* Thread created with attribute ATTR will be limited to run only on + the processors represented in CPUSET. */ +extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr, + size_t __cpusetsize, + const cpu_set_t *__cpuset) + __THROW __nonnull ((1, 3)); + +/* Get bit set in CPUSET representing the processors threads created with + ATTR can run on. */ +extern int pthread_attr_getaffinity_np (const pthread_attr_t *__attr, + size_t __cpusetsize, + cpu_set_t *__cpuset) + __THROW __nonnull ((1, 3)); + +/* Get the default attributes used by pthread_create in this process. */ +extern int pthread_getattr_default_np (pthread_attr_t *__attr) + __THROW __nonnull ((1)); + +/* Set the default attributes to be used by pthread_create in this + process. */ +extern int pthread_setattr_default_np (const pthread_attr_t *__attr) + __THROW __nonnull ((1)); + +/* Initialize thread attribute *ATTR with attributes corresponding to the + already running thread TH. It shall be called on uninitialized ATTR + and destroyed with pthread_attr_destroy when no longer needed. */ +extern int pthread_getattr_np (pthread_t __th, pthread_attr_t *__attr) + __THROW __nonnull ((2)); +#endif + + +/* Functions for scheduling control. */ + +/* Set the scheduling parameters for TARGET_THREAD according to POLICY + and *PARAM. */ +extern int pthread_setschedparam (pthread_t __target_thread, int __policy, + const struct sched_param *__param) + __THROW __nonnull ((3)); + +/* Return in *POLICY and *PARAM the scheduling parameters for TARGET_THREAD. */ +extern int pthread_getschedparam (pthread_t __target_thread, + int *__restrict __policy, + struct sched_param *__restrict __param) + __THROW __nonnull ((2, 3)); + +/* Set the scheduling priority for TARGET_THREAD. */ +extern int pthread_setschedprio (pthread_t __target_thread, int __prio) + __THROW; + + +#ifdef __USE_GNU +/* Get thread name visible in the kernel and its interfaces. */ +extern int pthread_getname_np (pthread_t __target_thread, char *__buf, + size_t __buflen) + __THROW __nonnull ((2)); + +/* Set thread name visible in the kernel and its interfaces. */ +extern int pthread_setname_np (pthread_t __target_thread, const char *__name) + __THROW __nonnull ((2)); +#endif + + +#ifdef __USE_UNIX98 +/* Determine level of concurrency. */ +extern int pthread_getconcurrency (void) __THROW; + +/* Set new concurrency level to LEVEL. */ +extern int pthread_setconcurrency (int __level) __THROW; +#endif + +#ifdef __USE_GNU +/* Yield the processor to another thread or process. + This function is similar to the POSIX `sched_yield' function but + might be differently implemented in the case of a m-on-n thread + implementation. */ +extern int pthread_yield (void) __THROW; + + +/* Limit specified thread TH to run only on the processors represented + in CPUSET. */ +extern int pthread_setaffinity_np (pthread_t __th, size_t __cpusetsize, + const cpu_set_t *__cpuset) + __THROW __nonnull ((3)); + +/* Get bit set in CPUSET representing the processors TH can run on. */ +extern int pthread_getaffinity_np (pthread_t __th, size_t __cpusetsize, + cpu_set_t *__cpuset) + __THROW __nonnull ((3)); +#endif + + +/* Functions for handling initialization. */ + +/* Guarantee that the initialization function INIT_ROUTINE will be called + only once, even if pthread_once is executed several times with the + same ONCE_CONTROL argument. ONCE_CONTROL must point to a static or + extern variable initialized to PTHREAD_ONCE_INIT. + + The initialization functions might throw exception which is why + this function is not marked with __THROW. */ +extern int pthread_once (pthread_once_t *__once_control, + void (*__init_routine) (void)) __nonnull ((1, 2)); + + +/* Functions for handling cancellation. + + Note that these functions are explicitly not marked to not throw an + exception in C++ code. If cancellation is implemented by unwinding + this is necessary to have the compiler generate the unwind information. */ + +/* Set cancelability state of current thread to STATE, returning old + state in *OLDSTATE if OLDSTATE is not NULL. */ +extern int pthread_setcancelstate (int __state, int *__oldstate); + +/* Set cancellation state of current thread to TYPE, returning the old + type in *OLDTYPE if OLDTYPE is not NULL. */ +extern int pthread_setcanceltype (int __type, int *__oldtype); + +/* Cancel THREAD immediately or at the next possibility. */ +extern int pthread_cancel (pthread_t __th); + +/* Test for pending cancellation for the current thread and terminate + the thread as per pthread_exit(PTHREAD_CANCELED) if it has been + cancelled. */ +extern void pthread_testcancel (void); + + +/* Cancellation handling with integration into exception handling. */ + +typedef struct +{ + struct + { + __jmp_buf __cancel_jmp_buf; + int __mask_was_saved; + } __cancel_jmp_buf[1]; + void *__pad[4]; +} __pthread_unwind_buf_t __attribute__ ((__aligned__)); + +/* No special attributes by default. */ +#ifndef __cleanup_fct_attribute +# define __cleanup_fct_attribute +#endif + + +/* Structure to hold the cleanup handler information. */ +struct __pthread_cleanup_frame +{ + void (*__cancel_routine) (void *); + void *__cancel_arg; + int __do_it; + int __cancel_type; +}; + +#if defined __GNUC__ && defined __EXCEPTIONS +# ifdef __cplusplus +/* Class to handle cancellation handler invocation. */ +class __pthread_cleanup_class +{ + void (*__cancel_routine) (void *); + void *__cancel_arg; + int __do_it; + int __cancel_type; + + public: + __pthread_cleanup_class (void (*__fct) (void *), void *__arg) + : __cancel_routine (__fct), __cancel_arg (__arg), __do_it (1) { } + ~__pthread_cleanup_class () { if (__do_it) __cancel_routine (__cancel_arg); } + void __setdoit (int __newval) { __do_it = __newval; } + void __defer () { pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED, + &__cancel_type); } + void __restore () const { pthread_setcanceltype (__cancel_type, 0); } +}; + +/* Install a cleanup handler: ROUTINE will be called with arguments ARG + when the thread is canceled or calls pthread_exit. ROUTINE will also + be called with arguments ARG when the matching pthread_cleanup_pop + is executed with non-zero EXECUTE argument. + + pthread_cleanup_push and pthread_cleanup_pop are macros and must always + be used in matching pairs at the same nesting level of braces. */ +# define pthread_cleanup_push(routine, arg) \ + do { \ + __pthread_cleanup_class __clframe (routine, arg) + +/* Remove a cleanup handler installed by the matching pthread_cleanup_push. + If EXECUTE is non-zero, the handler function is called. */ +# define pthread_cleanup_pop(execute) \ + __clframe.__setdoit (execute); \ + } while (0) + +# ifdef __USE_GNU +/* Install a cleanup handler as pthread_cleanup_push does, but also + saves the current cancellation type and sets it to deferred + cancellation. */ +# define pthread_cleanup_push_defer_np(routine, arg) \ + do { \ + __pthread_cleanup_class __clframe (routine, arg); \ + __clframe.__defer () + +/* Remove a cleanup handler as pthread_cleanup_pop does, but also + restores the cancellation type that was in effect when the matching + pthread_cleanup_push_defer was called. */ +# define pthread_cleanup_pop_restore_np(execute) \ + __clframe.__restore (); \ + __clframe.__setdoit (execute); \ + } while (0) +# endif +# else +/* Function called to call the cleanup handler. As an extern inline + function the compiler is free to decide inlining the change when + needed or fall back on the copy which must exist somewhere + else. */ +__extern_inline void +__pthread_cleanup_routine (struct __pthread_cleanup_frame *__frame) +{ + if (__frame->__do_it) + __frame->__cancel_routine (__frame->__cancel_arg); +} + +/* Install a cleanup handler: ROUTINE will be called with arguments ARG + when the thread is canceled or calls pthread_exit. ROUTINE will also + be called with arguments ARG when the matching pthread_cleanup_pop + is executed with non-zero EXECUTE argument. + + pthread_cleanup_push and pthread_cleanup_pop are macros and must always + be used in matching pairs at the same nesting level of braces. */ +# define pthread_cleanup_push(routine, arg) \ + do { \ + struct __pthread_cleanup_frame __clframe \ + __attribute__ ((__cleanup__ (__pthread_cleanup_routine))) \ + = { .__cancel_routine = (routine), .__cancel_arg = (arg), \ + .__do_it = 1 }; + +/* Remove a cleanup handler installed by the matching pthread_cleanup_push. + If EXECUTE is non-zero, the handler function is called. */ +# define pthread_cleanup_pop(execute) \ + __clframe.__do_it = (execute); \ + } while (0) + +# ifdef __USE_GNU +/* Install a cleanup handler as pthread_cleanup_push does, but also + saves the current cancellation type and sets it to deferred + cancellation. */ +# define pthread_cleanup_push_defer_np(routine, arg) \ + do { \ + struct __pthread_cleanup_frame __clframe \ + __attribute__ ((__cleanup__ (__pthread_cleanup_routine))) \ + = { .__cancel_routine = (routine), .__cancel_arg = (arg), \ + .__do_it = 1 }; \ + (void) pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED, \ + &__clframe.__cancel_type) + +/* Remove a cleanup handler as pthread_cleanup_pop does, but also + restores the cancellation type that was in effect when the matching + pthread_cleanup_push_defer was called. */ +# define pthread_cleanup_pop_restore_np(execute) \ + (void) pthread_setcanceltype (__clframe.__cancel_type, NULL); \ + __clframe.__do_it = (execute); \ + } while (0) +# endif +# endif +#else +/* Install a cleanup handler: ROUTINE will be called with arguments ARG + when the thread is canceled or calls pthread_exit. ROUTINE will also + be called with arguments ARG when the matching pthread_cleanup_pop + is executed with non-zero EXECUTE argument. + + pthread_cleanup_push and pthread_cleanup_pop are macros and must always + be used in matching pairs at the same nesting level of braces. */ +# define pthread_cleanup_push(routine, arg) \ + do { \ + __pthread_unwind_buf_t __cancel_buf; \ + void (*__cancel_routine) (void *) = (routine); \ + void *__cancel_arg = (arg); \ + int __not_first_call = __sigsetjmp ((struct __jmp_buf_tag *) (void *) \ + __cancel_buf.__cancel_jmp_buf, 0); \ + if (__glibc_unlikely (__not_first_call)) \ + { \ + __cancel_routine (__cancel_arg); \ + __pthread_unwind_next (&__cancel_buf); \ + /* NOTREACHED */ \ + } \ + \ + __pthread_register_cancel (&__cancel_buf); \ + do { +extern void __pthread_register_cancel (__pthread_unwind_buf_t *__buf) + __cleanup_fct_attribute; + +/* Remove a cleanup handler installed by the matching pthread_cleanup_push. + If EXECUTE is non-zero, the handler function is called. */ +# define pthread_cleanup_pop(execute) \ + do { } while (0);/* Empty to allow label before pthread_cleanup_pop. */\ + } while (0); \ + __pthread_unregister_cancel (&__cancel_buf); \ + if (execute) \ + __cancel_routine (__cancel_arg); \ + } while (0) +extern void __pthread_unregister_cancel (__pthread_unwind_buf_t *__buf) + __cleanup_fct_attribute; + +# ifdef __USE_GNU +/* Install a cleanup handler as pthread_cleanup_push does, but also + saves the current cancellation type and sets it to deferred + cancellation. */ +# define pthread_cleanup_push_defer_np(routine, arg) \ + do { \ + __pthread_unwind_buf_t __cancel_buf; \ + void (*__cancel_routine) (void *) = (routine); \ + void *__cancel_arg = (arg); \ + int __not_first_call = __sigsetjmp ((struct __jmp_buf_tag *) (void *) \ + __cancel_buf.__cancel_jmp_buf, 0); \ + if (__glibc_unlikely (__not_first_call)) \ + { \ + __cancel_routine (__cancel_arg); \ + __pthread_unwind_next (&__cancel_buf); \ + /* NOTREACHED */ \ + } \ + \ + __pthread_register_cancel_defer (&__cancel_buf); \ + do { +extern void __pthread_register_cancel_defer (__pthread_unwind_buf_t *__buf) + __cleanup_fct_attribute; + +/* Remove a cleanup handler as pthread_cleanup_pop does, but also + restores the cancellation type that was in effect when the matching + pthread_cleanup_push_defer was called. */ +# define pthread_cleanup_pop_restore_np(execute) \ + do { } while (0);/* Empty to allow label before pthread_cleanup_pop. */\ + } while (0); \ + __pthread_unregister_cancel_restore (&__cancel_buf); \ + if (execute) \ + __cancel_routine (__cancel_arg); \ + } while (0) +extern void __pthread_unregister_cancel_restore (__pthread_unwind_buf_t *__buf) + __cleanup_fct_attribute; +# endif + +/* Internal interface to initiate cleanup. */ +extern void __pthread_unwind_next (__pthread_unwind_buf_t *__buf) + __cleanup_fct_attribute __attribute__ ((__noreturn__)) +# ifndef SHARED + __attribute__ ((__weak__)) +# endif + ; +#endif + +/* Function used in the macros. */ +struct __jmp_buf_tag; +extern int __sigsetjmp (struct __jmp_buf_tag *__env, int __savemask) __THROWNL; + + +/* Mutex handling. */ + +/* Initialize a mutex. */ +extern int pthread_mutex_init (pthread_mutex_t *__mutex, + const pthread_mutexattr_t *__mutexattr) + __THROW __nonnull ((1)); + +/* Destroy a mutex. */ +extern int pthread_mutex_destroy (pthread_mutex_t *__mutex) + __THROW __nonnull ((1)); + +/* Try locking a mutex. */ +extern int pthread_mutex_trylock (pthread_mutex_t *__mutex) + __THROWNL __nonnull ((1)); + +/* Lock a mutex. */ +extern int pthread_mutex_lock (pthread_mutex_t *__mutex) + __THROWNL __nonnull ((1)); + +#ifdef __USE_XOPEN2K +/* Wait until lock becomes available, or specified time passes. */ +extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex, + const struct timespec *__restrict + __abstime) __THROWNL __nonnull ((1, 2)); +#endif + +/* Unlock a mutex. */ +extern int pthread_mutex_unlock (pthread_mutex_t *__mutex) + __THROWNL __nonnull ((1)); + + +/* Get the priority ceiling of MUTEX. */ +extern int pthread_mutex_getprioceiling (const pthread_mutex_t * + __restrict __mutex, + int *__restrict __prioceiling) + __THROW __nonnull ((1, 2)); + +/* Set the priority ceiling of MUTEX to PRIOCEILING, return old + priority ceiling value in *OLD_CEILING. */ +extern int pthread_mutex_setprioceiling (pthread_mutex_t *__restrict __mutex, + int __prioceiling, + int *__restrict __old_ceiling) + __THROW __nonnull ((1, 3)); + + +#ifdef __USE_XOPEN2K8 +/* Declare the state protected by MUTEX as consistent. */ +extern int pthread_mutex_consistent (pthread_mutex_t *__mutex) + __THROW __nonnull ((1)); +# ifdef __USE_GNU +extern int pthread_mutex_consistent_np (pthread_mutex_t *__mutex) + __THROW __nonnull ((1)); +# endif +#endif + + +/* Functions for handling mutex attributes. */ + +/* Initialize mutex attribute object ATTR with default attributes + (kind is PTHREAD_MUTEX_TIMED_NP). */ +extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr) + __THROW __nonnull ((1)); + +/* Destroy mutex attribute object ATTR. */ +extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr) + __THROW __nonnull ((1)); + +/* Get the process-shared flag of the mutex attribute ATTR. */ +extern int pthread_mutexattr_getpshared (const pthread_mutexattr_t * + __restrict __attr, + int *__restrict __pshared) + __THROW __nonnull ((1, 2)); + +/* Set the process-shared flag of the mutex attribute ATTR. */ +extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr, + int __pshared) + __THROW __nonnull ((1)); + +#if defined __USE_UNIX98 || defined __USE_XOPEN2K8 +/* Return in *KIND the mutex kind attribute in *ATTR. */ +extern int pthread_mutexattr_gettype (const pthread_mutexattr_t *__restrict + __attr, int *__restrict __kind) + __THROW __nonnull ((1, 2)); + +/* Set the mutex kind attribute in *ATTR to KIND (either PTHREAD_MUTEX_NORMAL, + PTHREAD_MUTEX_RECURSIVE, PTHREAD_MUTEX_ERRORCHECK, or + PTHREAD_MUTEX_DEFAULT). */ +extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind) + __THROW __nonnull ((1)); +#endif + +/* Return in *PROTOCOL the mutex protocol attribute in *ATTR. */ +extern int pthread_mutexattr_getprotocol (const pthread_mutexattr_t * + __restrict __attr, + int *__restrict __protocol) + __THROW __nonnull ((1, 2)); + +/* Set the mutex protocol attribute in *ATTR to PROTOCOL (either + PTHREAD_PRIO_NONE, PTHREAD_PRIO_INHERIT, or PTHREAD_PRIO_PROTECT). */ +extern int pthread_mutexattr_setprotocol (pthread_mutexattr_t *__attr, + int __protocol) + __THROW __nonnull ((1)); + +/* Return in *PRIOCEILING the mutex prioceiling attribute in *ATTR. */ +extern int pthread_mutexattr_getprioceiling (const pthread_mutexattr_t * + __restrict __attr, + int *__restrict __prioceiling) + __THROW __nonnull ((1, 2)); + +/* Set the mutex prioceiling attribute in *ATTR to PRIOCEILING. */ +extern int pthread_mutexattr_setprioceiling (pthread_mutexattr_t *__attr, + int __prioceiling) + __THROW __nonnull ((1)); + +#ifdef __USE_XOPEN2K +/* Get the robustness flag of the mutex attribute ATTR. */ +extern int pthread_mutexattr_getrobust (const pthread_mutexattr_t *__attr, + int *__robustness) + __THROW __nonnull ((1, 2)); +# ifdef __USE_GNU +extern int pthread_mutexattr_getrobust_np (const pthread_mutexattr_t *__attr, + int *__robustness) + __THROW __nonnull ((1, 2)); +# endif + +/* Set the robustness flag of the mutex attribute ATTR. */ +extern int pthread_mutexattr_setrobust (pthread_mutexattr_t *__attr, + int __robustness) + __THROW __nonnull ((1)); +# ifdef __USE_GNU +extern int pthread_mutexattr_setrobust_np (pthread_mutexattr_t *__attr, + int __robustness) + __THROW __nonnull ((1)); +# endif +#endif + + +#if defined __USE_UNIX98 || defined __USE_XOPEN2K +/* Functions for handling read-write locks. */ + +/* Initialize read-write lock RWLOCK using attributes ATTR, or use + the default values if later is NULL. */ +extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock, + const pthread_rwlockattr_t *__restrict + __attr) __THROW __nonnull ((1)); + +/* Destroy read-write lock RWLOCK. */ +extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock) + __THROW __nonnull ((1)); + +/* Acquire read lock for RWLOCK. */ +extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock) + __THROWNL __nonnull ((1)); + +/* Try to acquire read lock for RWLOCK. */ +extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock) + __THROWNL __nonnull ((1)); + +# ifdef __USE_XOPEN2K +/* Try to acquire read lock for RWLOCK or return after specfied time. */ +extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock, + const struct timespec *__restrict + __abstime) __THROWNL __nonnull ((1, 2)); +# endif + +/* Acquire write lock for RWLOCK. */ +extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock) + __THROWNL __nonnull ((1)); + +/* Try to acquire write lock for RWLOCK. */ +extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock) + __THROWNL __nonnull ((1)); + +# ifdef __USE_XOPEN2K +/* Try to acquire write lock for RWLOCK or return after specfied time. */ +extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock, + const struct timespec *__restrict + __abstime) __THROWNL __nonnull ((1, 2)); +# endif + +/* Unlock RWLOCK. */ +extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock) + __THROWNL __nonnull ((1)); + + +/* Functions for handling read-write lock attributes. */ + +/* Initialize attribute object ATTR with default values. */ +extern int pthread_rwlockattr_init (pthread_rwlockattr_t *__attr) + __THROW __nonnull ((1)); + +/* Destroy attribute object ATTR. */ +extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr) + __THROW __nonnull ((1)); + +/* Return current setting of process-shared attribute of ATTR in PSHARED. */ +extern int pthread_rwlockattr_getpshared (const pthread_rwlockattr_t * + __restrict __attr, + int *__restrict __pshared) + __THROW __nonnull ((1, 2)); + +/* Set process-shared attribute of ATTR to PSHARED. */ +extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr, + int __pshared) + __THROW __nonnull ((1)); + +/* Return current setting of reader/writer preference. */ +extern int pthread_rwlockattr_getkind_np (const pthread_rwlockattr_t * + __restrict __attr, + int *__restrict __pref) + __THROW __nonnull ((1, 2)); + +/* Set reader/write preference. */ +extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr, + int __pref) __THROW __nonnull ((1)); +#endif + + +/* Functions for handling conditional variables. */ + +/* Initialize condition variable COND using attributes ATTR, or use + the default values if later is NULL. */ +extern int pthread_cond_init (pthread_cond_t *__restrict __cond, + const pthread_condattr_t *__restrict __cond_attr) + __THROW __nonnull ((1)); + +/* Destroy condition variable COND. */ +extern int pthread_cond_destroy (pthread_cond_t *__cond) + __THROW __nonnull ((1)); + +/* Wake up one thread waiting for condition variable COND. */ +extern int pthread_cond_signal (pthread_cond_t *__cond) + __THROWNL __nonnull ((1)); + +/* Wake up all threads waiting for condition variables COND. */ +extern int pthread_cond_broadcast (pthread_cond_t *__cond) + __THROWNL __nonnull ((1)); + +/* Wait for condition variable COND to be signaled or broadcast. + MUTEX is assumed to be locked before. + + This function is a cancellation point and therefore not marked with + __THROW. */ +extern int pthread_cond_wait (pthread_cond_t *__restrict __cond, + pthread_mutex_t *__restrict __mutex) + __nonnull ((1, 2)); + +/* Wait for condition variable COND to be signaled or broadcast until + ABSTIME. MUTEX is assumed to be locked before. ABSTIME is an + absolute time specification; zero is the beginning of the epoch + (00:00:00 GMT, January 1, 1970). + + This function is a cancellation point and therefore not marked with + __THROW. */ +extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond, + pthread_mutex_t *__restrict __mutex, + const struct timespec *__restrict __abstime) + __nonnull ((1, 2, 3)); + +/* Functions for handling condition variable attributes. */ + +/* Initialize condition variable attribute ATTR. */ +extern int pthread_condattr_init (pthread_condattr_t *__attr) + __THROW __nonnull ((1)); + +/* Destroy condition variable attribute ATTR. */ +extern int pthread_condattr_destroy (pthread_condattr_t *__attr) + __THROW __nonnull ((1)); + +/* Get the process-shared flag of the condition variable attribute ATTR. */ +extern int pthread_condattr_getpshared (const pthread_condattr_t * + __restrict __attr, + int *__restrict __pshared) + __THROW __nonnull ((1, 2)); + +/* Set the process-shared flag of the condition variable attribute ATTR. */ +extern int pthread_condattr_setpshared (pthread_condattr_t *__attr, + int __pshared) __THROW __nonnull ((1)); + +#ifdef __USE_XOPEN2K +/* Get the clock selected for the condition variable attribute ATTR. */ +extern int pthread_condattr_getclock (const pthread_condattr_t * + __restrict __attr, + __clockid_t *__restrict __clock_id) + __THROW __nonnull ((1, 2)); + +/* Set the clock selected for the condition variable attribute ATTR. */ +extern int pthread_condattr_setclock (pthread_condattr_t *__attr, + __clockid_t __clock_id) + __THROW __nonnull ((1)); +#endif + + +#ifdef __USE_XOPEN2K +/* Functions to handle spinlocks. */ + +/* Initialize the spinlock LOCK. If PSHARED is nonzero the spinlock can + be shared between different processes. */ +extern int pthread_spin_init (pthread_spinlock_t *__lock, int __pshared) + __THROW __nonnull ((1)); + +/* Destroy the spinlock LOCK. */ +extern int pthread_spin_destroy (pthread_spinlock_t *__lock) + __THROW __nonnull ((1)); + +/* Wait until spinlock LOCK is retrieved. */ +extern int pthread_spin_lock (pthread_spinlock_t *__lock) + __THROWNL __nonnull ((1)); + +/* Try to lock spinlock LOCK. */ +extern int pthread_spin_trylock (pthread_spinlock_t *__lock) + __THROWNL __nonnull ((1)); + +/* Release spinlock LOCK. */ +extern int pthread_spin_unlock (pthread_spinlock_t *__lock) + __THROWNL __nonnull ((1)); + + +/* Functions to handle barriers. */ + +/* Initialize BARRIER with the attributes in ATTR. The barrier is + opened when COUNT waiters arrived. */ +extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier, + const pthread_barrierattr_t *__restrict + __attr, unsigned int __count) + __THROW __nonnull ((1)); + +/* Destroy a previously dynamically initialized barrier BARRIER. */ +extern int pthread_barrier_destroy (pthread_barrier_t *__barrier) + __THROW __nonnull ((1)); + +/* Wait on barrier BARRIER. */ +extern int pthread_barrier_wait (pthread_barrier_t *__barrier) + __THROWNL __nonnull ((1)); + + +/* Initialize barrier attribute ATTR. */ +extern int pthread_barrierattr_init (pthread_barrierattr_t *__attr) + __THROW __nonnull ((1)); + +/* Destroy previously dynamically initialized barrier attribute ATTR. */ +extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr) + __THROW __nonnull ((1)); + +/* Get the process-shared flag of the barrier attribute ATTR. */ +extern int pthread_barrierattr_getpshared (const pthread_barrierattr_t * + __restrict __attr, + int *__restrict __pshared) + __THROW __nonnull ((1, 2)); + +/* Set the process-shared flag of the barrier attribute ATTR. */ +extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr, + int __pshared) + __THROW __nonnull ((1)); +#endif + + +/* Functions for handling thread-specific data. */ + +/* Create a key value identifying a location in the thread-specific + data area. Each thread maintains a distinct thread-specific data + area. DESTR_FUNCTION, if non-NULL, is called with the value + associated to that key when the key is destroyed. + DESTR_FUNCTION is not called if the value associated is NULL when + the key is destroyed. */ +extern int pthread_key_create (pthread_key_t *__key, + void (*__destr_function) (void *)) + __THROW __nonnull ((1)); + +/* Destroy KEY. */ +extern int pthread_key_delete (pthread_key_t __key) __THROW; + +/* Return current value of the thread-specific data slot identified by KEY. */ +extern void *pthread_getspecific (pthread_key_t __key) __THROW; + +/* Store POINTER in the thread-specific data slot identified by KEY. */ +extern int pthread_setspecific (pthread_key_t __key, + const void *__pointer) __THROW ; + + +#ifdef __USE_XOPEN2K +/* Get ID of CPU-time clock for thread THREAD_ID. */ +extern int pthread_getcpuclockid (pthread_t __thread_id, + __clockid_t *__clock_id) + __THROW __nonnull ((2)); +#endif + + +/* Install handlers to be called when a new process is created with FORK. + The PREPARE handler is called in the parent process just before performing + FORK. The PARENT handler is called in the parent process just after FORK. + The CHILD handler is called in the child process. Each of the three + handlers can be NULL, meaning that no handler needs to be called at that + point. + PTHREAD_ATFORK can be called several times, in which case the PREPARE + handlers are called in LIFO order (last added with PTHREAD_ATFORK, + first called before FORK), and the PARENT and CHILD handlers are called + in FIFO (first added, first called). */ + +extern int pthread_atfork (void (*__prepare) (void), + void (*__parent) (void), + void (*__child) (void)) __THROW; + + +#ifdef __USE_EXTERN_INLINES +/* Optimizations. */ +__extern_inline int +__NTH (pthread_equal (pthread_t __thread1, pthread_t __thread2)) +{ + return __thread1 == __thread2; +} +#endif + +__END_DECLS + +#endif /* pthread.h */ + +#ifndef _PTHREAD_H_HPPA_ +#define _PTHREAD_H_HPPA_ 1 + +/* The pthread_cond_t initializer is compatible only with NPTL. We do not + want to be forwards compatible, we eventually want to drop the code + that has to clear the old LT initializer. */ +#undef PTHREAD_COND_INITIALIZER +#define PTHREAD_COND_INITIALIZER { { 0, 0, 0, (void *) 0, 0, 0, 0, 0, 0 } } + +/* The pthread_mutex_t and pthread_rwlock_t initializers are compatible + only with NPTL. NPTL assumes pthread_rwlock_t is all zero. */ +#undef PTHREAD_MUTEX_INITIALIZER +#undef PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#undef PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP +#undef PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP +/* Mutex initializers. */ +#define PTHREAD_MUTEX_INITIALIZER \ + { { 0, 0, 0, 0, { 0, 0, 0, 0 }, 0, { 0 }, 0, 0 } } +#ifdef __USE_GNU +# define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP \ + { { 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP, { 0, 0, 0, 0 }, 0, { 0 }, 0, 0 } } +# define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP \ + { { 0, 0, 0, PTHREAD_MUTEX_ERRORCHECK_NP, { 0, 0, 0, 0 }, 0, { 0 }, 0, 0 } } +# define PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP \ + { { 0, 0, 0, PTHREAD_MUTEX_ADAPTIVE_NP, { 0, 0, 0, 0 }, 0, { 0 }, 0, 0 } } +#endif + +#undef PTHREAD_RWLOCK_INITIALIZER +#undef PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP +/* Read-write lock initializers. */ +#define PTHREAD_RWLOCK_INITIALIZER \ + { { { 0, 0, 0, 0 }, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } +#ifdef __USE_GNU +# define PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP \ + { { { 0, 0, 0, 0 }, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP,\ + 0, 0, 0 } } +#endif /* Unix98 or XOpen2K */ + +#endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/pthreadP.h b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/pthreadP.h new file mode 100644 index 0000000000..744b5b090b --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/pthreadP.h @@ -0,0 +1,16 @@ +#include_next <pthreadP.h> +#ifndef _PTHREADP_H_HPPA_ +#define _PTHREADP_H_HPPA_ 1 + +/* Internal cond functions. */ +extern int __pthread_cond_broadcast_internal (pthread_cond_t *cond); +extern int __pthread_cond_destroy_internal (pthread_cond_t *cond); +extern int __pthread_cond_init_internal (pthread_cond_t *cond, + const pthread_condattr_t *cond_attr); +extern int __pthread_cond_signal_internal (pthread_cond_t *cond); +extern int __pthread_cond_timedwait_internal (pthread_cond_t *cond, + pthread_mutex_t *mutex, + const struct timespec *abstime); +extern int __pthread_cond_wait_internal (pthread_cond_t *cond, + pthread_mutex_t *mutex); +#endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/pthread_cond_broadcast.c b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/pthread_cond_broadcast.c new file mode 100644 index 0000000000..a6f9f5d433 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/pthread_cond_broadcast.c @@ -0,0 +1,40 @@ +/* Copyright (C) 2009-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Carlos O'Donell <carlos@codesourcery.com>, 2009. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have 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 INCLUDED_SELF +# define INCLUDED_SELF +# include <pthread_cond_broadcast.c> +#else +# include <pthread.h> +# include <pthreadP.h> +# include <internaltypes.h> +# include <shlib-compat.h> +int +__pthread_cond_broadcast (pthread_cond_t *cond) +{ + cond_compat_check_and_clear (cond); + return __pthread_cond_broadcast_internal (cond); +} +versioned_symbol (libpthread, __pthread_cond_broadcast, pthread_cond_broadcast, + GLIBC_2_3_2); +# undef versioned_symbol +# define versioned_symbol(lib, local, symbol, version) +# undef __pthread_cond_broadcast +# define __pthread_cond_broadcast __pthread_cond_broadcast_internal +# include_next <pthread_cond_broadcast.c> +#endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/pthread_cond_destroy.c b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/pthread_cond_destroy.c new file mode 100644 index 0000000000..49af087bb4 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/pthread_cond_destroy.c @@ -0,0 +1,40 @@ +/* Copyright (C) 2009-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Carlos O'Donell <carlos@codesourcery.com>, 2009. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have 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 INCLUDED_SELF +# define INCLUDED_SELF +# include <pthread_cond_destroy.c> +#else +# include <pthread.h> +# include <pthreadP.h> +# include <internaltypes.h> +# include <shlib-compat.h> +int +__pthread_cond_destroy (pthread_cond_t *cond) +{ + cond_compat_check_and_clear (cond); + return __pthread_cond_destroy_internal (cond); +} +versioned_symbol (libpthread, __pthread_cond_destroy, pthread_cond_destroy, + GLIBC_2_3_2); +# undef versioned_symbol +# define versioned_symbol(lib, local, symbol, version) +# undef __pthread_cond_destroy +# define __pthread_cond_destroy __pthread_cond_destroy_internal +# include_next <pthread_cond_destroy.c> +#endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/pthread_cond_init.c b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/pthread_cond_init.c new file mode 100644 index 0000000000..ccb3de07ff --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/pthread_cond_init.c @@ -0,0 +1,40 @@ +/* Copyright (C) 2009-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Carlos O'Donell <carlos@codesourcery.com>, 2009. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have 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 INCLUDED_SELF +# define INCLUDED_SELF +# include <pthread_cond_init.c> +#else +# include <pthread.h> +# include <pthreadP.h> +# include <internaltypes.h> +# include <shlib-compat.h> +int +__pthread_cond_init (pthread_cond_t *cond, const pthread_condattr_t *cond_attr) +{ + cond_compat_clear (cond); + return __pthread_cond_init_internal (cond, cond_attr); +} +versioned_symbol (libpthread, __pthread_cond_init, pthread_cond_init, + GLIBC_2_3_2); +# undef versioned_symbol +# define versioned_symbol(lib, local, symbol, version) +# undef __pthread_cond_init +# define __pthread_cond_init __pthread_cond_init_internal +# include_next <pthread_cond_init.c> +#endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/pthread_cond_signal.c b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/pthread_cond_signal.c new file mode 100644 index 0000000000..2bf32af933 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/pthread_cond_signal.c @@ -0,0 +1,40 @@ +/* Copyright (C) 2009-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Carlos O'Donell <carlos@codesourcery.com>, 2009. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have 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 INCLUDED_SELF +# define INCLUDED_SELF +# include <pthread_cond_signal.c> +#else +# include <pthread.h> +# include <pthreadP.h> +# include <internaltypes.h> +# include <shlib-compat.h> +int +__pthread_cond_signal (pthread_cond_t *cond) +{ + cond_compat_check_and_clear (cond); + return __pthread_cond_signal_internal (cond); +} +versioned_symbol (libpthread, __pthread_cond_signal, pthread_cond_signal, + GLIBC_2_3_2); +# undef versioned_symbol +# define versioned_symbol(lib, local, symbol, version) +# undef __pthread_cond_signal +# define __pthread_cond_signal __pthread_cond_signal_internal +# include_next <pthread_cond_signal.c> +#endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/pthread_cond_wait.c b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/pthread_cond_wait.c new file mode 100644 index 0000000000..1cc2fc15d4 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/pthread_cond_wait.c @@ -0,0 +1,53 @@ +/* Copyright (C) 2009-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Carlos O'Donell <carlos@codesourcery.com>, 2009. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have 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 INCLUDED_SELF +# define INCLUDED_SELF +# include <pthread_cond_wait.c> +#else +# include <pthread.h> +# include <pthreadP.h> +# include <internaltypes.h> +# include <shlib-compat.h> +int +__pthread_cond_wait (pthread_cond_t *cond, pthread_mutex_t *mutex) +{ + cond_compat_check_and_clear (cond); + return __pthread_cond_wait_internal (cond, mutex); +} +versioned_symbol (libpthread, __pthread_cond_wait, pthread_cond_wait, + GLIBC_2_3_2); +int +__pthread_cond_timedwait (cond, mutex, abstime) + pthread_cond_t *cond; + pthread_mutex_t *mutex; + const struct timespec *abstime; +{ + cond_compat_check_and_clear (cond); + return __pthread_cond_timedwait_internal (cond, mutex, abstime); +} +versioned_symbol (libpthread, __pthread_cond_timedwait, pthread_cond_timedwait, + GLIBC_2_3_2); +# undef versioned_symbol +# define versioned_symbol(lib, local, symbol, version) +# undef __pthread_cond_wait +# define __pthread_cond_wait __pthread_cond_wait_internal +# undef __pthread_cond_timedwait +# define __pthread_cond_timedwait __pthread_cond_timedwait_internal +# include_next <pthread_cond_wait.c> +#endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/setcontext.S b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/setcontext.S new file mode 100644 index 0000000000..3f4da7938f --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/setcontext.S @@ -0,0 +1,158 @@ +/* Install given context. + Copyright (C) 2008-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Helge Deller <deller@gmx.de>, 2008. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have 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 <libc-symbols.h> + +#include "ucontext_i.h" + + +ENTRY(__setcontext) + /* Prologue */ + stwm %r3, 64(%sp) +#ifdef PIC + stw %r19, -32(%sp) +#endif + + /* Save ucp. */ + copy %r26, %r3 + +.Lagain: + /* Set the current signal mask. */ + /* sigprocmask(SIG_BLOCK, &ucp->uc_sigmask, NULL); */ + copy %r0, %r24 + ldo oSIGMASK(%r3), %r25 + bl sigprocmask, %r2 + ldi SIG_SETMASK, %r26 + + comib,<>,n 0,%ret0,.Lerror + + /* Save %sp, %dp. */ + copy %sp, %r4 + copy %dp, %r5 + copy %r19, %r6 + + /* Get the registers. */ + ldw oR1(%r3), %r1 + ldw oR2(%r3), %r2 + /* ldw oR3(%r3), %r3 - used for ucp pointer. */ + /* ldw oR4(%r3), %r4 - used for original %sp. */ + /* ldw oR5(%r3), %r5 - used for %dp / %r27. */ + /* ldw oR6(%r3), %r6 - used for %r19. */ + ldw oR7(%r3), %r7 + ldw oR8(%r3), %r8 + ldw oR9(%r3), %r9 + ldw oR10(%r3), %r10 + ldw oR11(%r3), %r11 + ldw oR12(%r3), %r12 + ldw oR13(%r3), %r13 + ldw oR14(%r3), %r14 + ldw oR15(%r3), %r15 + ldw oR16(%r3), %r16 + ldw oR17(%r3), %r17 + ldw oR18(%r3), %r18 + ldw oR19(%r3), %r19 + ldw oR20(%r3), %r20 + ldw oR21(%r3), %r21 + /* ldw oR22(%r3), %r22 - dyncall arg. */ + ldw oR23(%r3), %r23 + ldw oR24(%r3), %r24 + ldw oR25(%r3), %r25 + ldw oR26(%r3), %r26 + ldw oR27(%r3), %r27 + ldw oR28(%r3), %r28 + ldw oR29(%r3), %r29 + ldw oR30(%r3), %sp + /* ldw oR31(%r3), %r31 - dyncall scratch register */ + + /* Restore floating-point registers. */ + ldo oFPREGS31(%r3), %r22 + fldds 0(%r22), %fr31 + fldds,mb -8(%r22), %fr30 + fldds,mb -8(%r22), %fr29 + fldds,mb -8(%r22), %fr28 + fldds,mb -8(%r22), %fr27 + fldds,mb -8(%r22), %fr26 + fldds,mb -8(%r22), %fr25 + fldds,mb -8(%r22), %fr24 + fldds,mb -8(%r22), %fr23 + fldds,mb -8(%r22), %fr22 + fldds,mb -8(%r22), %fr21 + fldds,mb -8(%r22), %fr20 + fldds,mb -8(%r22), %fr19 + fldds,mb -8(%r22), %fr18 + fldds,mb -8(%r22), %fr17 + fldds,mb -8(%r22), %fr16 + fldds,mb -8(%r22), %fr15 + fldds,mb -8(%r22), %fr14 + fldds,mb -8(%r22), %fr13 + fldds,mb -8(%r22), %fr12 + fldds,mb -8(%r22), %fr11 + fldds,mb -8(%r22), %fr10 + fldds,mb -8(%r22), %fr9 + fldds,mb -8(%r22), %fr8 + fldds,mb -8(%r22), %fr7 + fldds,mb -8(%r22), %fr6 + fldds,mb -8(%r22), %fr5 + fldds,mb -8(%r22), %fr4 + fldds,mb -8(%r22), %fr3 + fldds,mb -8(%r22), %fr2 + fldds,mb -8(%r22), %fr1 + fldds,mb -8(%r22), %fr0 + + /* Do not load oSS_SP into %sp. The value of oSS_SP indicates + the start of the user allocated stack, but not the sp that + should be used by the new context. In fact makecontext + will create a frame, and adjust sp as required. We do not + support calling getcontext and modifying ss_sp without + a call to makecontext to synchronize ss_sp into the machine + context. */ + + /* Call external function. */ + copy %r2, %r22 + bl $$dyncall, %r31 + copy %r31, %r2 + + /* We return here. Get new ucp in %r3, reload %sp. */ + ldw oUC_LINK(%r3), %r3 + copy %r4, %sp + copy %r5, %dp + copy %r6, %r19 + + /* Continue until ucp == NULL. */ + comib,<> 0,%r3,.Lagain + nop + + /* No further context available. Exit now. */ + bl HIDDEN_JUMPTARGET(exit), %r2 + ldi -1, %r26 + + +.Lerror: + /* Epilogue */ + ldw -84(%r30), %r2 +#ifdef PIC + ldw -96(%r30), %r19 +#endif + bv %r0(%r2) + ldwm -64(%r30), %r3 +L(pseudo_end): +PSEUDO_END(__setcontext) + +weak_alias(__setcontext, setcontext) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/shlib-versions b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/shlib-versions new file mode 100644 index 0000000000..3a2d496220 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/shlib-versions @@ -0,0 +1,9 @@ +libm=6 GLIBC_2.2 + +libc=6 GLIBC_2.2 + +ld=ld.so.1 GLIBC_2.2 + +libBrokenLocale=1 GLIBC_2.2 + +libpthread=0 GLIBC_2.2 diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/swapcontext.c b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/swapcontext.c new file mode 100644 index 0000000000..c341f2d3a5 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/swapcontext.c @@ -0,0 +1,42 @@ +/* Swap to new context. + Copyright (C) 2008-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Helge Deller <deller@gmx.de>, 2008. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have 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 <ucontext.h> + +extern int __getcontext (ucontext_t *ucp); +extern int __setcontext (const ucontext_t *ucp); + +int +__swapcontext (ucontext_t *oucp, const ucontext_t *ucp) +{ + /* Save the current machine context to oucp. */ + __getcontext (oucp); + + /* mark sc_sar flag to skip the setcontext call on reactivation. */ + if (oucp->uc_mcontext.sc_sar == 0) { + oucp->uc_mcontext.sc_sar++; + + /* Restore the machine context in ucp. */ + __setcontext (ucp); + } + + return 0; +} + +weak_alias (__swapcontext, swapcontext) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/sys/procfs.h b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/sys/procfs.h new file mode 100644 index 0000000000..f0d53c4bc6 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/sys/procfs.h @@ -0,0 +1,118 @@ +/* Copyright (C) 1996-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _SYS_PROCFS_H +#define _SYS_PROCFS_H 1 + +/* This is somewhat modelled after the file of the same name on SVR4 + systems. It provides a definition of the core file format for ELF + used on Linux. It doesn't have anything to do with the /proc file + system, even though Linux has one. + + Anyway, the whole purpose of this file is for GDB and GDB only. + Don't read too much into it. Don't use it for anything other than + GDB unless you know what you are doing. */ + +#include <features.h> +#include <sys/time.h> +#include <sys/types.h> +#include <sys/user.h> + +__BEGIN_DECLS + +typedef unsigned long elf_greg_t; +#define ELF_NGREG 80 /* We only need 64 at present, but leave space + for expansion. */ +typedef elf_greg_t elf_gregset_t[ELF_NGREG]; + +#define ELF_NFPREG 32 +typedef double elf_fpreg_t; +typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG]; + +struct elf_siginfo + { + int si_signo; /* Signal number. */ + int si_code; /* Extra code. */ + int si_errno; /* Errno. */ + }; + +/* Definitions to generate Intel SVR4-like core files. These mostly + have the same names as the SVR4 types with "elf_" tacked on the + front to prevent clashes with Linux definitions, and the typedef + forms have been avoided. This is mostly like the SVR4 structure, + but more Linuxy, with things that Linux does not support and which + GDB doesn't really use excluded. */ + +struct elf_prstatus + { + struct elf_siginfo pr_info; /* Info associated with signal. */ + short int pr_cursig; /* Current signal. */ + unsigned long int pr_sigpend; /* Set of pending signals. */ + unsigned long int pr_sighold; /* Set of held signals. */ + __pid_t pr_pid; + __pid_t pr_ppid; + __pid_t pr_pgrp; + __pid_t pr_sid; + struct timeval pr_utime; /* User time. */ + struct timeval pr_stime; /* System time. */ + struct timeval pr_cutime; /* Cumulative user time. */ + struct timeval pr_cstime; /* Cumulative system time. */ + elf_gregset_t pr_reg; /* GP registers. */ + int pr_fpvalid; /* True if math copro being used. */ + }; + + +#define ELF_PRARGSZ (80) /* Number of chars for args. */ + +struct elf_prpsinfo + { + char pr_state; /* Numeric process state. */ + char pr_sname; /* Char for pr_state. */ + char pr_zomb; /* Zombie. */ + char pr_nice; /* Nice val. */ + unsigned long int pr_flag; /* Flags. */ + unsigned int pr_uid; + unsigned int pr_gid; + int pr_pid, pr_ppid, pr_pgrp, pr_sid; + /* Lots missing */ + char pr_fname[16]; /* Filename of executable. */ + char pr_psargs[ELF_PRARGSZ]; /* Initial part of arg list. */ + }; + + +/* The rest of this file provides the types for emulation of the + Solaris <proc_service.h> interfaces that should be implemented by + users of libthread_db. */ + +/* Addresses. */ +typedef void *psaddr_t; + +/* Register sets. Linux has different names. */ +typedef elf_gregset_t prgregset_t; +typedef elf_fpregset_t prfpregset_t; + +/* We don't have any differences between processes and threads, + therefore have only one PID type. */ +typedef __pid_t lwpid_t; + +/* Process status and info. In the end we do provide typedefs for them. */ +typedef struct elf_prstatus prstatus_t; +typedef struct elf_prpsinfo prpsinfo_t; + +__END_DECLS + +#endif /* sys/procfs.h */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h new file mode 100644 index 0000000000..982b4c44c2 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h @@ -0,0 +1,67 @@ +/* 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/>. */ + +/* Don't rely on this, the interface is currently messed up and may need to + be broken to be fixed. */ +#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 +/* Type for general register. */ +typedef unsigned long int greg_t; + +/* Number of general registers. */ +# define NGREG 80 +# define NFPREG 32 + +/* Container for all general registers. */ +typedef struct gregset + { + greg_t g_regs[32]; + greg_t sr_regs[8]; + greg_t cr_regs[24]; + greg_t g_pad[16]; + } gregset_t; + +/* Container for all FPU registers. */ +typedef struct fpregset + { + double fp_dregs[32]; + } fpregset_t; +#endif + +/* Context to describe whole processor state. */ +typedef struct sigcontext mcontext_t; + +/* 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/hppa/sys/user.h b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/sys/user.h new file mode 100644 index 0000000000..c871f1a03d --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/sys/user.h @@ -0,0 +1 @@ +/* This file is not needed, but in practice gdb might try to include it. */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/syscall.c b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/syscall.c new file mode 100644 index 0000000000..da38c1147a --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/syscall.c @@ -0,0 +1,65 @@ +/* Copyright (C) 1997-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#include <stdarg.h> +#include <sysdep.h> +#include <errno.h> + +/* HPPA implements syscall() in 'C'; the assembler version would + typically be in syscall.S. Also note that we have INLINE_SYSCALL, + INTERNAL_SYSCALL, and all the generated pure assembly syscall wrappers. + How often the function is used is unknown. */ + +long int +syscall (long int __sysno, ...) +{ + /* FIXME: Keep this matching INLINE_SYSCALL for hppa */ + va_list args; + long int arg0, arg1, arg2, arg3, arg4, arg5; + long int __sys_res; + + /* Load varargs */ + va_start (args, __sysno); + arg0 = va_arg (args, long int); + arg1 = va_arg (args, long int); + arg2 = va_arg (args, long int); + arg3 = va_arg (args, long int); + arg4 = va_arg (args, long int); + arg5 = va_arg (args, long int); + va_end (args); + + { + LOAD_ARGS_6 (arg0, arg1, arg2, arg3, arg4, arg5) + register unsigned long int __res asm("r28"); + PIC_REG_DEF + LOAD_REGS_6 + asm volatile (SAVE_ASM_PIC + " ble 0x100(%%sr2, %%r0) \n" + " copy %1, %%r20 \n" + LOAD_ASM_PIC + : "=r" (__res) + : "r" (__sysno) PIC_REG_USE ASM_ARGS_6 + : "memory", CALL_CLOB_REGS CLOB_ARGS_6); + __sys_res = __res; + } + if ((unsigned long int) __sys_res >= (unsigned long int) -4095) + { + __set_errno (-__sys_res); + __sys_res = -1; + } + return __sys_res; +} diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/syscalls.list b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/syscalls.list new file mode 100644 index 0000000000..cd37573b89 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/syscalls.list @@ -0,0 +1,16 @@ +# File name Caller Syscall name # args Strong name Weak names + +# proper socket implementations: +bind - bind i:ipi __bind bind +getpeername - getpeername i:ipp __getpeername getpeername +getsockname - getsockname i:ipp __getsockname getsockname +getsockopt - getsockopt i:iiiBN __getsockopt getsockopt +listen - listen i:ii __listen listen +setsockopt - setsockopt i:iiibn __setsockopt setsockopt +shutdown - shutdown i:ii __shutdown shutdown +socket - socket i:iii __socket socket +socketpair - socketpair i:iiif __socketpair socketpair + +prlimit64 EXTRA prlimit64 i:iipp __prlimit64 prlimit64@@GLIBC_2.17 +fanotify_mark EXTRA fanotify_mark i:iiiiis __fanotify_mark fanotify_mark@@GLIBC_2.19 +personality EXTRA personality Ei:i __personality personality diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/sysdep-cancel.h b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/sysdep-cancel.h new file mode 100644 index 0000000000..5ea297267f --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/sysdep-cancel.h @@ -0,0 +1,279 @@ +/* Copyright (C) 2005-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#include <tls.h> +#ifndef __ASSEMBLER__ +# include <nptl/pthreadP.h> +#endif + +#if IS_IN (libc) || IS_IN (libpthread) || IS_IN (librt) + +# ifndef NO_ERROR +# define NO_ERROR -0x1000 +# endif + +/* The syscall cancellation mechanism requires userspace + assistance, the following code does roughly this: + + do arguments (read arg5 and arg6 to registers) + setup frame + + check if there are threads, yes jump to pseudo_cancel + + unthreaded: + syscall + check syscall return (jump to pre_end) + set errno + set return to -1 + (jump to pre_end) + + pseudo_cancel: + cenable + syscall + cdisable + check syscall return (jump to pre_end) + set errno + set return to -1 + + pre_end + restore stack + + It is expected that 'ret' and 'END' macros will + append an 'undo arguments' and 'return' to the + this PSEUDO macro. */ + +# undef PSEUDO +# define PSEUDO(name, syscall_name, args) \ + ENTRY (__##syscall_name##_nocancel) \ + DOARGS_##args ASM_LINE_SEP \ + stwm TREG, 64(%sp) ASM_LINE_SEP \ + .cfi_offset TREG, 0 ASM_LINE_SEP \ + .cfi_adjust_cfa_offset 64 ASM_LINE_SEP \ + stw %sp, -4(%sp) ASM_LINE_SEP \ + .cfi_offset 30, -4 ASM_LINE_SEP \ + stw %r19, -32(%sp) ASM_LINE_SEP \ + .cfi_offset 19, -32 ASM_LINE_SEP \ + /* Save r19 */ ASM_LINE_SEP \ + SAVE_PIC(TREG) ASM_LINE_SEP \ + /* Do syscall, delay loads # */ ASM_LINE_SEP \ + ble 0x100(%sr2,%r0) ASM_LINE_SEP \ + ldi SYS_ify (syscall_name), %r20 /* delay */ ASM_LINE_SEP \ + ldi NO_ERROR,%r1 ASM_LINE_SEP \ + cmpb,>>=,n %r1,%ret0,L(pre_nc_end) ASM_LINE_SEP \ + /* Restore r19 from TREG */ ASM_LINE_SEP \ + LOAD_PIC(TREG) /* delay */ ASM_LINE_SEP \ + SYSCALL_ERROR_HANDLER ASM_LINE_SEP \ + /* Use TREG for temp storage */ ASM_LINE_SEP \ + copy %ret0, TREG /* delay */ ASM_LINE_SEP \ + /* OPTIMIZE: Don't reload r19 */ ASM_LINE_SEP \ + /* do a -1*syscall_ret0 */ ASM_LINE_SEP \ + sub %r0, TREG, TREG ASM_LINE_SEP \ + /* Store into errno location */ ASM_LINE_SEP \ + stw TREG, 0(%sr0,%ret0) ASM_LINE_SEP \ + /* return -1 as error */ ASM_LINE_SEP \ + ldi -1, %ret0 ASM_LINE_SEP \ +L(pre_nc_end): ASM_LINE_SEP \ + /* No need to LOAD_PIC */ ASM_LINE_SEP \ + /* Undo frame */ ASM_LINE_SEP \ + ldwm -64(%sp),TREG ASM_LINE_SEP \ + .cfi_adjust_cfa_offset -64 ASM_LINE_SEP \ + /* Restore rp before exit */ ASM_LINE_SEP \ + ldw -20(%sp), %rp ASM_LINE_SEP \ + .cfi_restore 2 ASM_LINE_SEP \ + ret ASM_LINE_SEP \ + END(__##syscall_name##_nocancel) ASM_LINE_SEP \ + /**********************************************/ASM_LINE_SEP \ + ENTRY (name) \ + DOARGS_##args ASM_LINE_SEP \ + stwm TREG, 64(%sp) ASM_LINE_SEP \ + .cfi_adjust_cfa_offset 64 ASM_LINE_SEP \ + stw %sp, -4(%sp) ASM_LINE_SEP \ + .cfi_offset 30, -4 ASM_LINE_SEP \ + stw %r19, -32(%sp) ASM_LINE_SEP \ + .cfi_offset 19, -32 ASM_LINE_SEP \ + /* Done setting up frame, continue... */ ASM_LINE_SEP \ + SINGLE_THREAD_P ASM_LINE_SEP \ + cmpib,<>,n 0,%ret0,L(pseudo_cancel) ASM_LINE_SEP \ +L(unthreaded): ASM_LINE_SEP \ + /* Save r19 */ ASM_LINE_SEP \ + SAVE_PIC(TREG) ASM_LINE_SEP \ + /* Do syscall, delay loads # */ ASM_LINE_SEP \ + ble 0x100(%sr2,%r0) ASM_LINE_SEP \ + ldi SYS_ify (syscall_name), %r20 /* delay */ ASM_LINE_SEP \ + ldi NO_ERROR,%r1 ASM_LINE_SEP \ + cmpb,>>=,n %r1,%ret0,L(pre_end) ASM_LINE_SEP \ + /* Restore r19 from TREG */ ASM_LINE_SEP \ + LOAD_PIC(TREG) /* delay */ ASM_LINE_SEP \ + SYSCALL_ERROR_HANDLER ASM_LINE_SEP \ + /* Use TREG for temp storage */ ASM_LINE_SEP \ + copy %ret0, TREG /* delay */ ASM_LINE_SEP \ + /* OPTIMIZE: Don't reload r19 */ ASM_LINE_SEP \ + /* do a -1*syscall_ret0 */ ASM_LINE_SEP \ + sub %r0, TREG, TREG ASM_LINE_SEP \ + /* Store into errno location */ ASM_LINE_SEP \ + stw TREG, 0(%sr0,%ret0) ASM_LINE_SEP \ + b L(pre_end) ASM_LINE_SEP \ + /* return -1 as error */ ASM_LINE_SEP \ + ldi -1, %ret0 /* delay */ ASM_LINE_SEP \ +L(pseudo_cancel): ASM_LINE_SEP \ + PUSHARGS_##args /* Save args */ ASM_LINE_SEP \ + /* Save r19 into TREG */ ASM_LINE_SEP \ + CENABLE /* FUNC CALL */ ASM_LINE_SEP \ + SAVE_PIC(TREG) /* delay */ ASM_LINE_SEP \ + /* restore syscall args */ ASM_LINE_SEP \ + POPARGS_##args ASM_LINE_SEP \ + /* save mask from cenable (use stub rp slot) */ ASM_LINE_SEP \ + stw %ret0, -24(%sp) ASM_LINE_SEP \ + /* ... SYSCALL ... */ ASM_LINE_SEP \ + ble 0x100(%sr2,%r0) ASM_LINE_SEP \ + ldi SYS_ify (syscall_name), %r20 /* delay */ ASM_LINE_SEP \ + /* ............... */ ASM_LINE_SEP \ + LOAD_PIC(TREG) ASM_LINE_SEP \ + /* pass mask as arg0 to cdisable */ ASM_LINE_SEP \ + ldw -24(%sp), %r26 ASM_LINE_SEP \ + CDISABLE ASM_LINE_SEP \ + stw %ret0, -24(%sp) /* delay */ ASM_LINE_SEP \ + /* Restore syscall return */ ASM_LINE_SEP \ + ldw -24(%sp), %ret0 ASM_LINE_SEP \ + /* compare error */ ASM_LINE_SEP \ + ldi NO_ERROR,%r1 ASM_LINE_SEP \ + /* branch if no error */ ASM_LINE_SEP \ + cmpb,>>=,n %r1,%ret0,L(pre_end) ASM_LINE_SEP \ + LOAD_PIC(TREG) /* cond. nullify */ ASM_LINE_SEP \ + copy %ret0, TREG /* save syscall return */ ASM_LINE_SEP \ + SYSCALL_ERROR_HANDLER ASM_LINE_SEP \ + /* make syscall res value positive */ ASM_LINE_SEP \ + sub %r0, TREG, TREG /* delay */ ASM_LINE_SEP \ + /* No need to LOAD_PIC */ ASM_LINE_SEP \ + /* store into errno location */ ASM_LINE_SEP \ + stw TREG, 0(%sr0,%ret0) ASM_LINE_SEP \ + /* return -1 */ ASM_LINE_SEP \ + ldi -1, %ret0 ASM_LINE_SEP \ +L(pre_end): ASM_LINE_SEP \ + /* No need to LOAD_PIC */ ASM_LINE_SEP \ + /* Undo frame */ ASM_LINE_SEP \ + ldwm -64(%sp),TREG ASM_LINE_SEP \ + .cfi_adjust_cfa_offset -64 ASM_LINE_SEP \ + /* Restore rp before exit */ ASM_LINE_SEP \ + ldw -20(%sp), %rp ASM_LINE_SEP \ + .cfi_restore 2 ASM_LINE_SEP + +/* Save arguments into our frame */ +# define PUSHARGS_0 /* nothing to do */ +# define PUSHARGS_1 PUSHARGS_0 stw %r26, -36(%sr0,%sp) ASM_LINE_SEP \ + .cfi_offset 26, -36 ASM_LINE_SEP +# define PUSHARGS_2 PUSHARGS_1 stw %r25, -40(%sr0,%sp) ASM_LINE_SEP \ + .cfi_offset 25, -40 ASM_LINE_SEP +# define PUSHARGS_3 PUSHARGS_2 stw %r24, -44(%sr0,%sp) ASM_LINE_SEP \ + .cfi_offset 24, -44 ASM_LINE_SEP +# define PUSHARGS_4 PUSHARGS_3 stw %r23, -48(%sr0,%sp) ASM_LINE_SEP \ + .cfi_offset 23, -48 ASM_LINE_SEP +# define PUSHARGS_5 PUSHARGS_4 stw %r22, -52(%sr0,%sp) ASM_LINE_SEP \ + .cfi_offset 22, -52 ASM_LINE_SEP +# define PUSHARGS_6 PUSHARGS_5 stw %r21, -56(%sr0,%sp) ASM_LINE_SEP \ + .cfi_offset 21, -56 ASM_LINE_SEP + +/* Bring them back from the stack */ +# define POPARGS_0 /* nothing to do */ +# define POPARGS_1 POPARGS_0 ldw -36(%sr0,%sp), %r26 ASM_LINE_SEP \ + .cfi_restore 26 ASM_LINE_SEP +# define POPARGS_2 POPARGS_1 ldw -40(%sr0,%sp), %r25 ASM_LINE_SEP \ + .cfi_restore 25 ASM_LINE_SEP +# define POPARGS_3 POPARGS_2 ldw -44(%sr0,%sp), %r24 ASM_LINE_SEP \ + .cfi_restore 24 ASM_LINE_SEP +# define POPARGS_4 POPARGS_3 ldw -48(%sr0,%sp), %r23 ASM_LINE_SEP \ + .cfi_restore 23 ASM_LINE_SEP +# define POPARGS_5 POPARGS_4 ldw -52(%sr0,%sp), %r22 ASM_LINE_SEP \ + .cfi_restore 22 ASM_LINE_SEP +# define POPARGS_6 POPARGS_5 ldw -56(%sr0,%sp), %r21 ASM_LINE_SEP \ + .cfi_restore 21 ASM_LINE_SEP + +# if IS_IN (libpthread) +# ifdef PIC +# define CENABLE .import __pthread_enable_asynccancel,code ASM_LINE_SEP \ + bl __pthread_enable_asynccancel,%r2 ASM_LINE_SEP +# define CDISABLE .import __pthread_disable_asynccancel,code ASM_LINE_SEP \ + bl __pthread_disable_asynccancel,%r2 ASM_LINE_SEP +# else +# define CENABLE .import __pthread_enable_asynccancel,code ASM_LINE_SEP \ + bl __pthread_enable_asynccancel,%r2 ASM_LINE_SEP +# define CDISABLE .import __pthread_disable_asynccancel,code ASM_LINE_SEP \ + bl __pthread_disable_asynccancel,%r2 ASM_LINE_SEP +# endif +# elif IS_IN (libc) +# ifdef PIC +# define CENABLE .import __libc_enable_asynccancel,code ASM_LINE_SEP \ + bl __libc_enable_asynccancel,%r2 ASM_LINE_SEP +# define CDISABLE .import __libc_disable_asynccancel,code ASM_LINE_SEP \ + bl __libc_disable_asynccancel,%r2 ASM_LINE_SEP +# else +# define CENABLE .import __libc_enable_asynccancel,code ASM_LINE_SEP \ + bl __libc_enable_asynccancel,%r2 ASM_LINE_SEP +# define CDISABLE .import __libc_disable_asynccancel,code ASM_LINE_SEP \ + bl __libc_disable_asynccancel,%r2 ASM_LINE_SEP +# endif +# elif IS_IN (librt) +# ifdef PIC +# define CENABLE .import __librt_enable_asynccancel,code ASM_LINE_SEP \ + bl __librt_enable_asynccancel,%r2 ASM_LINE_SEP +# define CDISABLE .import __librt_disable_asynccancel,code ASM_LINE_SEP \ + bl __librt_disable_asynccancel,%r2 ASM_LINE_SEP +# else +# define CENABLE .import __librt_enable_asynccancel,code ASM_LINE_SEP \ + bl __librt_enable_asynccancel,%r2 ASM_LINE_SEP +# define CDISABLE .import __librt_disable_asynccancel,code ASM_LINE_SEP \ + bl __librt_disable_asynccancel,%r2 ASM_LINE_SEP +# endif +# else +# error Unsupported library +# endif + +# if IS_IN (libpthread) +# define __local_multiple_threads __pthread_multiple_threads +# elif IS_IN (libc) +# define __local_multiple_threads __libc_multiple_threads +# elif IS_IN (librt) +# define __local_multiple_threads __librt_multiple_threads +# else +# error Unsupported library +# endif + +# ifndef __ASSEMBLER__ +# define SINGLE_THREAD_P \ + __builtin_expect (THREAD_GETMEM (THREAD_SELF, \ + header.multiple_threads) == 0, 1) +# else +/* Read the value of header.multiple_threads from the thread pointer */ +# define SINGLE_THREAD_P \ + mfctl %cr27, %ret0 ASM_LINE_SEP \ + ldw MULTIPLE_THREADS_THREAD_OFFSET(%sr0,%ret0),%ret0 ASM_LINE_SEP +# endif +#elif !defined __ASSEMBLER__ + +/* This code should never be used but we define it anyhow. */ +# define SINGLE_THREAD_P (1) +# define NO_CANCELLATION 1 + +#endif +/* IS_IN (libc) || IS_IN (libpthread) || IS_IN (librt) */ + +#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/hppa/sysdep.c b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/sysdep.c new file mode 100644 index 0000000000..1e7c19343e --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/sysdep.c @@ -0,0 +1,29 @@ +/* Copyright (C) 1997-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#include <stdarg.h> +#include <sysdep.h> +#include <errno.h> + +/* This routine is jumped to by all the syscall handlers, to stash + an error number into errno. */ +int +__syscall_error (int err_no) +{ + __set_errno (err_no); + return -1; +} diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/sysdep.h b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/sysdep.h new file mode 100644 index 0000000000..d8dd0431a4 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/sysdep.h @@ -0,0 +1,512 @@ +/* Assembler macros for PA-RISC. + Copyright (C) 1999-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper, <drepper@cygnus.com>, August 1999. + Linux/PA-RISC changes by Philipp Rumpf, <prumpf@tux.org>, March 2000. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _LINUX_HPPA_SYSDEP_H +#define _LINUX_HPPA_SYSDEP_H 1 + +#include <sysdeps/unix/sysdep.h> +#include <sysdeps/unix/sysv/linux/sysdep.h> +#include <sysdeps/hppa/sysdep.h> + +/* Defines RTLD_PRIVATE_ERRNO. */ +#include <dl-sysdep.h> + +/* In order to get __set_errno() definition in INLINE_SYSCALL. */ +#ifndef __ASSEMBLER__ +#include <errno.h> +#endif + +#undef ASM_LINE_SEP +#define ASM_LINE_SEP ! + +#undef SYS_ify +#define SYS_ify(syscall_name) (__NR_##syscall_name) + +/* The vfork, fork, and clone syscalls clobber r19 + * and r21. We list r21 as either clobbered or as an + * input to a 6-argument syscall. We must save and + * restore r19 in both PIC and non-PIC cases. + */ +/* WARNING: TREG must be a callee saves register so + that it doesn't have to be restored after a call + to another function */ +#define TREG 4 +#define SAVE_PIC(SREG) \ + copy %r19, SREG ASM_LINE_SEP \ + .cfi_register 19, SREG +#define LOAD_PIC(LREG) \ + copy LREG , %r19 ASM_LINE_SEP \ + .cfi_restore 19 +/* Inline assembly defines */ +#define TREG_ASM "%r4" /* Cant clobber r3, it holds framemarker */ +#define SAVE_ASM_PIC " copy %%r19, %" TREG_ASM "\n" +#define LOAD_ASM_PIC " copy %" TREG_ASM ", %%r19\n" +#define CLOB_TREG TREG_ASM , +#define PIC_REG_DEF register unsigned long __r19 asm("r19"); +#define PIC_REG_USE , "r" (__r19) + +#ifdef __ASSEMBLER__ + +/* Syntactic details of assembler. */ + +#define ALIGNARG(log2) log2 + +/* For Linux we can use the system call table in the header file + /usr/include/asm/unistd.h + of the kernel. But these symbols do not follow the SYS_* syntax + so we have to redefine the `SYS_ify' macro here. */ +#undef SYS_ify +#define SYS_ify(syscall_name) __NR_##syscall_name + +/* ELF-like local names start with `.L'. */ +#undef L +#define L(name) .L##name + +/* Linux uses a negative return value to indicate syscall errors, + unlike most Unices, which use the condition codes' carry flag. + + Since version 2.1 the return value of a system call might be + negative even if the call succeeded. E.g., the `lseek' system call + might return a large offset. Therefore we must not anymore test + for < 0, but test for a real error by making sure the value in %eax + is a real error number. Linus said he will make sure the no syscall + returns a value in -1 .. -4095 as a valid result so we can safely + test with -4095. */ + +/* We don't want the label for the error handle to be global when we define + it here. */ +/*#ifdef PIC +# define SYSCALL_ERROR_LABEL 0f +#else +# define SYSCALL_ERROR_LABEL syscall_error +#endif*/ + +/* Argument manipulation from the stack for preparing to + make a syscall */ + +#define DOARGS_0 /* nothing */ +#define DOARGS_1 /* nothing */ +#define DOARGS_2 /* nothing */ +#define DOARGS_3 /* nothing */ +#define DOARGS_4 /* nothing */ +#define DOARGS_5 ldw -52(%sp), %r22 ASM_LINE_SEP +#define DOARGS_6 DOARGS_5 ldw -56(%sp), %r21 ASM_LINE_SEP + +#define UNDOARGS_0 /* nothing */ +#define UNDOARGS_1 /* nothing */ +#define UNDOARGS_2 /* nothing */ +#define UNDOARGS_3 /* nothing */ +#define UNDOARGS_4 /* nothing */ +#define UNDOARGS_5 /* nothing */ +#define UNDOARGS_6 /* nothing */ + +/* Define an entry point visible from C. + + There is currently a bug in gdb which prevents us from specifying + incomplete stabs information. Fake some entries here which specify + the current source file. */ +#undef ENTRY +#define ENTRY(name) \ + .text ASM_LINE_SEP \ + .align ALIGNARG(4) ASM_LINE_SEP \ + .export C_SYMBOL_NAME(name) ASM_LINE_SEP \ + .type C_SYMBOL_NAME(name),@function ASM_LINE_SEP \ + cfi_startproc ASM_LINE_SEP \ + C_LABEL(name) ASM_LINE_SEP \ + .PROC ASM_LINE_SEP \ + .CALLINFO FRAME=64,CALLS,SAVE_RP,ENTRY_GR=3 ASM_LINE_SEP \ + .ENTRY ASM_LINE_SEP \ + /* SAVE_RP says we do */ ASM_LINE_SEP \ + stw %rp, -20(%sr0,%sp) ASM_LINE_SEP \ + .cfi_offset 2, -20 ASM_LINE_SEP \ + /*FIXME: Call mcount? (carefull with stack!) */ + +/* Some syscall wrappers do not call other functions, and + hence are classified as leaf, so add NO_CALLS for gdb */ +#define ENTRY_LEAF(name) \ + .text ASM_LINE_SEP \ + .align ALIGNARG(4) ASM_LINE_SEP \ + .export C_SYMBOL_NAME(name) ASM_LINE_SEP \ + .type C_SYMBOL_NAME(name),@function ASM_LINE_SEP \ + cfi_startproc ASM_LINE_SEP \ + C_LABEL(name) ASM_LINE_SEP \ + .PROC ASM_LINE_SEP \ + .CALLINFO FRAME=64,NO_CALLS,SAVE_RP,ENTRY_GR=3 ASM_LINE_SEP \ + .ENTRY ASM_LINE_SEP \ + /* SAVE_RP says we do */ ASM_LINE_SEP \ + stw %rp, -20(%sr0,%sp) ASM_LINE_SEP \ + .cfi_offset 2, -20 ASM_LINE_SEP \ + /*FIXME: Call mcount? (carefull with stack!) */ + +#undef END +#define END(name) \ + .EXIT ASM_LINE_SEP \ + .PROCEND ASM_LINE_SEP \ + cfi_endproc ASM_LINE_SEP \ +.size C_SYMBOL_NAME(name), .-C_SYMBOL_NAME(name) ASM_LINE_SEP + +/* If compiled for profiling, call `mcount' at the start + of each function. No, don't bother. gcc will put the + call in for us. */ +#define CALL_MCOUNT /* Do nothing. */ + +/* syscall wrappers consist of + #include <sysdep.h> + PSEUDO(...) + ret + PSEUDO_END(...) + + which means + ENTRY(name) + DO_CALL(...) + bv,n 0(2) +*/ + +#undef PSEUDO +#define PSEUDO(name, syscall_name, args) \ + ENTRY (name) ASM_LINE_SEP \ + /* If necc. load args from stack */ ASM_LINE_SEP \ + DOARGS_##args ASM_LINE_SEP \ + DO_CALL (syscall_name, args) ASM_LINE_SEP \ + UNDOARGS_##args ASM_LINE_SEP + +#define ret \ + /* Return value set by ERRNO code */ ASM_LINE_SEP \ + bv,n 0(2) ASM_LINE_SEP + +#undef PSEUDO_END +#define PSEUDO_END(name) \ + END (name) + +/* We don't set the errno on the return from the syscall */ +#define PSEUDO_NOERRNO(name, syscall_name, args) \ + ENTRY_LEAF (name) ASM_LINE_SEP \ + DOARGS_##args ASM_LINE_SEP \ + DO_CALL_NOERRNO (syscall_name, args) ASM_LINE_SEP \ + UNDOARGS_##args ASM_LINE_SEP + +#define ret_NOERRNO ret + +#undef PSEUDO_END_NOERRNO +#define PSEUDO_END_NOERRNO(name) \ + END (name) + +/* This has to return the error value */ +#undef PSEUDO_ERRVAL +#define PSEUDO_ERRVAL(name, syscall_name, args) \ + ENTRY_LEAF (name) ASM_LINE_SEP \ + DOARGS_##args ASM_LINE_SEP \ + DO_CALL_ERRVAL (syscall_name, args) ASM_LINE_SEP \ + UNDOARGS_##args ASM_LINE_SEP + +#define ret_ERRVAL ret + +#undef PSEUDO_END_ERRVAL +#define PSEUDO_END_ERRVAL(name) \ + END(name) + +#undef JUMPTARGET +#define JUMPTARGET(name) name +#define SYSCALL_PIC_SETUP /* Nothing. */ + + +/* FIXME: This comment is not true. + * All the syscall assembly macros rely on finding the appropriate + SYSCALL_ERROR_LABEL or rather HANDLER. */ + +/* int * __errno_location(void) so you have to store your value + into the return address! */ +#define DEFAULT_SYSCALL_ERROR_HANDLER \ + .import __errno_location,code ASM_LINE_SEP \ + /* branch to errno handler */ ASM_LINE_SEP \ + bl __errno_location,%rp ASM_LINE_SEP + +/* Here are the myriad of configuration options that the above can + work for... what we've done is provide the framework for future + changes if required to each section */ + +#ifdef PIC +# if RTLD_PRIVATE_ERRNO +# define SYSCALL_ERROR_HANDLER DEFAULT_SYSCALL_ERROR_HANDLER +# else /* !RTLD_PRIVATE_ERRNO */ +# if defined _LIBC_REENTRANT +# define SYSCALL_ERROR_HANDLER DEFAULT_SYSCALL_ERROR_HANDLER +# else /* !_LIBC_REENTRANT */ +# define SYSCALL_ERROR_HANDLER DEFAULT_SYSCALL_ERROR_HANDLER +# endif /* _LIBC_REENTRANT */ +# endif /* RTLD_PRIVATE_ERRNO */ +#else +# ifndef _LIBC_REENTRANT +# define SYSCALL_ERROR_HANDLER DEFAULT_SYSCALL_ERROR_HANDLER +# else +# define SYSCALL_ERROR_HANDLER DEFAULT_SYSCALL_ERROR_HANDLER +# endif +#endif + + +/* Linux takes system call arguments in registers: + syscall number gr20 + arg 1 gr26 + arg 2 gr25 + arg 3 gr24 + arg 4 gr23 + arg 5 gr22 + arg 6 gr21 + + The compiler calls us by the C convention: + syscall number in the DO_CALL macro + arg 1 gr26 + arg 2 gr25 + arg 3 gr24 + arg 4 gr23 + arg 5 -52(sp) + arg 6 -56(sp) + + gr22 and gr21 are caller-saves, so we can just load the arguments + there and generally be happy. */ + +/* the cmpb...no_error code below inside DO_CALL + * is intended to mimic the if (__sys_res...) + * code inside INLINE_SYSCALL + */ +#define NO_ERROR -0x1000 + +#undef DO_CALL +#define DO_CALL(syscall_name, args) \ + /* Create a frame */ ASM_LINE_SEP \ + stwm TREG, 64(%sp) ASM_LINE_SEP \ + .cfi_offset TREG, 0 ASM_LINE_SEP \ + .cfi_adjust_cfa_offset 64 ASM_LINE_SEP \ + stw %sp, -4(%sp) ASM_LINE_SEP \ + .cfi_offset 30, -4 ASM_LINE_SEP \ + stw %r19, -32(%sp) ASM_LINE_SEP \ + .cfi_offset 19, -32 ASM_LINE_SEP \ + /* Save r19 */ ASM_LINE_SEP \ + SAVE_PIC(TREG) ASM_LINE_SEP \ + /* Do syscall, delay loads # */ ASM_LINE_SEP \ + ble 0x100(%sr2,%r0) ASM_LINE_SEP \ + ldi SYS_ify (syscall_name), %r20 ASM_LINE_SEP \ + ldi NO_ERROR,%r1 ASM_LINE_SEP \ + cmpb,>>=,n %r1,%ret0,L(pre_end) ASM_LINE_SEP \ + /* Restore r19 from TREG */ ASM_LINE_SEP \ + LOAD_PIC(TREG) /* delay */ ASM_LINE_SEP \ + SYSCALL_ERROR_HANDLER ASM_LINE_SEP \ + /* Use TREG for temp storage */ ASM_LINE_SEP \ + copy %ret0, TREG /* delay */ ASM_LINE_SEP \ + /* OPTIMIZE: Don't reload r19 */ ASM_LINE_SEP \ + /* do a -1*syscall_ret0 */ ASM_LINE_SEP \ + sub %r0, TREG, TREG ASM_LINE_SEP \ + /* Store into errno location */ ASM_LINE_SEP \ + stw TREG, 0(%sr0,%ret0) ASM_LINE_SEP \ + /* return -1 as error */ ASM_LINE_SEP \ + ldo -1(%r0), %ret0 ASM_LINE_SEP \ +L(pre_end): ASM_LINE_SEP \ + /* Restore our frame, restoring TREG */ ASM_LINE_SEP \ + ldwm -64(%sp), TREG ASM_LINE_SEP \ + .cfi_adjust_cfa_offset -64 ASM_LINE_SEP \ + /* Restore return pointer */ ASM_LINE_SEP \ + ldw -20(%sp),%rp ASM_LINE_SEP \ + .cfi_restore 2 ASM_LINE_SEP + +/* We do nothing with the return, except hand it back to someone else */ +#undef DO_CALL_NOERRNO +#define DO_CALL_NOERRNO(syscall_name, args) \ + /* No need to store r19 */ ASM_LINE_SEP \ + ble 0x100(%sr2,%r0) ASM_LINE_SEP \ + ldi SYS_ify (syscall_name), %r20 ASM_LINE_SEP \ + /* Caller will restore r19 */ ASM_LINE_SEP + +/* Here, we return the ERRVAL in assembly, note we don't call the + error handler function, but we do 'negate' the return _IF_ + it's an error. Not sure if this is the right semantic. */ + +#undef DO_CALL_ERRVAL +#define DO_CALL_ERRVAL(syscall_name, args) \ + /* No need to store r19 */ ASM_LINE_SEP \ + ble 0x100(%sr2,%r0) ASM_LINE_SEP \ + ldi SYS_ify (syscall_name), %r20 ASM_LINE_SEP \ + /* Caller will restore r19 */ ASM_LINE_SEP \ + ldi NO_ERROR,%r1 ASM_LINE_SEP \ + cmpb,>>=,n %r1,%ret0,0f ASM_LINE_SEP \ + sub %r0, %ret0, %ret0 ASM_LINE_SEP \ +0: ASM_LINE_SEP + + +#else + +/* GCC has to be warned that a syscall may clobber all the ABI + registers listed as "caller-saves", see page 8, Table 2 + in section 2.2.6 of the PA-RISC RUN-TIME architecture + document. However! r28 is the result and will conflict with + the clobber list so it is left out. Also the input arguments + registers r20 -> r26 will conflict with the list so they + are treated specially. Although r19 is clobbered by the syscall + we cannot say this because it would violate ABI, thus we say + TREG is clobbered and use that register to save/restore r19 + across the syscall. */ + +#define CALL_CLOB_REGS "%r1", "%r2", CLOB_TREG \ + "%r20", "%r29", "%r31" + +#undef INLINE_SYSCALL +#define INLINE_SYSCALL(name, nr, args...) \ +({ \ + long __sys_res = INTERNAL_SYSCALL (name, , nr, args); \ + if (__glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (__sys_res, ))) \ + { \ + __set_errno (INTERNAL_SYSCALL_ERRNO (__sys_res, )); \ + __sys_res = -1; \ + } \ + __sys_res; \ +}) + +/* INTERNAL_SYSCALL_DECL - Allows us to setup some function static + value to use within the context of the syscall + INTERNAL_SYSCALL_ERROR_P - Returns 0 if it wasn't an error, 1 otherwise + You are allowed to use the syscall result (val) and the DECL error + variable to determine what went wrong. + INTERLAL_SYSCALL_ERRNO - Munges the val/err pair into the error number. + In our case we just flip the sign. */ + +#undef INTERNAL_SYSCALL_DECL +#define INTERNAL_SYSCALL_DECL(err) + +#undef INTERNAL_SYSCALL_ERROR_P +#define INTERNAL_SYSCALL_ERROR_P(val, err) \ + ((val < 0) && (val > -4095)) + +#undef INTERNAL_SYSCALL_ERRNO +#define INTERNAL_SYSCALL_ERRNO(val, err) (-(val)) + +/* Similar to INLINE_SYSCALL but we don't set errno */ +#undef INTERNAL_SYSCALL +#define INTERNAL_SYSCALL(name, err, nr, args...) \ +({ \ + long __sys_res; \ + { \ + LOAD_ARGS_##nr(args) \ + register unsigned long __res asm("r28"); \ + PIC_REG_DEF \ + LOAD_REGS_##nr \ + /* FIXME: HACK save/load r19 around syscall */ \ + asm volatile( \ + SAVE_ASM_PIC \ + " ble 0x100(%%sr2, %%r0)\n" \ + " ldi %1, %%r20\n" \ + LOAD_ASM_PIC \ + : "=r" (__res) \ + : "i" (SYS_ify(name)) PIC_REG_USE ASM_ARGS_##nr \ + : "memory", CALL_CLOB_REGS CLOB_ARGS_##nr \ + ); \ + __sys_res = (long)__res; \ + } \ + __sys_res; \ + }) + + +/* The _NCS variant allows non-constant syscall numbers. */ +#undef INTERNAL_SYSCALL_NCS +#define INTERNAL_SYSCALL_NCS(name, err, nr, args...) \ +({ \ + long __sys_res; \ + { \ + LOAD_ARGS_##nr(args) \ + register unsigned long __res asm("r28"); \ + PIC_REG_DEF \ + LOAD_REGS_##nr \ + /* FIXME: HACK save/load r19 around syscall */ \ + asm volatile( \ + SAVE_ASM_PIC \ + " ble 0x100(%%sr2, %%r0)\n" \ + " copy %1, %%r20\n" \ + LOAD_ASM_PIC \ + : "=r" (__res) \ + : "r" (name) PIC_REG_USE ASM_ARGS_##nr \ + : "memory", CALL_CLOB_REGS CLOB_ARGS_##nr \ + ); \ + __sys_res = (long)__res; \ + } \ + __sys_res; \ + }) + +#define LOAD_ARGS_0() +#define LOAD_REGS_0 +#define LOAD_ARGS_1(a1) \ + register unsigned long __x26 = (unsigned long)(a1); \ + LOAD_ARGS_0() +#define LOAD_REGS_1 \ + register unsigned long __r26 __asm__("r26") = __x26; \ + LOAD_REGS_0 +#define LOAD_ARGS_2(a1,a2) \ + register unsigned long __x25 = (unsigned long)(a2); \ + LOAD_ARGS_1(a1) +#define LOAD_REGS_2 \ + register unsigned long __r25 __asm__("r25") = __x25; \ + LOAD_REGS_1 +#define LOAD_ARGS_3(a1,a2,a3) \ + register unsigned long __x24 = (unsigned long)(a3); \ + LOAD_ARGS_2(a1,a2) +#define LOAD_REGS_3 \ + register unsigned long __r24 __asm__("r24") = __x24; \ + LOAD_REGS_2 +#define LOAD_ARGS_4(a1,a2,a3,a4) \ + register unsigned long __x23 = (unsigned long)(a4); \ + LOAD_ARGS_3(a1,a2,a3) +#define LOAD_REGS_4 \ + register unsigned long __r23 __asm__("r23") = __x23; \ + LOAD_REGS_3 +#define LOAD_ARGS_5(a1,a2,a3,a4,a5) \ + register unsigned long __x22 = (unsigned long)(a5); \ + LOAD_ARGS_4(a1,a2,a3,a4) +#define LOAD_REGS_5 \ + register unsigned long __r22 __asm__("r22") = __x22; \ + LOAD_REGS_4 +#define LOAD_ARGS_6(a1,a2,a3,a4,a5,a6) \ + register unsigned long __x21 = (unsigned long)(a6); \ + LOAD_ARGS_5(a1,a2,a3,a4,a5) +#define LOAD_REGS_6 \ + register unsigned long __r21 __asm__("r21") = __x21; \ + LOAD_REGS_5 + +/* Even with zero args we use r20 for the syscall number */ +#define ASM_ARGS_0 +#define ASM_ARGS_1 ASM_ARGS_0, "r" (__r26) +#define ASM_ARGS_2 ASM_ARGS_1, "r" (__r25) +#define ASM_ARGS_3 ASM_ARGS_2, "r" (__r24) +#define ASM_ARGS_4 ASM_ARGS_3, "r" (__r23) +#define ASM_ARGS_5 ASM_ARGS_4, "r" (__r22) +#define ASM_ARGS_6 ASM_ARGS_5, "r" (__r21) + +/* The registers not listed as inputs but clobbered */ +#define CLOB_ARGS_6 +#define CLOB_ARGS_5 CLOB_ARGS_6, "%r21" +#define CLOB_ARGS_4 CLOB_ARGS_5, "%r22" +#define CLOB_ARGS_3 CLOB_ARGS_4, "%r23" +#define CLOB_ARGS_2 CLOB_ARGS_3, "%r24" +#define CLOB_ARGS_1 CLOB_ARGS_2, "%r25" +#define CLOB_ARGS_0 CLOB_ARGS_1, "%r26" + +#endif /* __ASSEMBLER__ */ + +/* Pointer mangling is not yet supported for HPPA. */ +#define PTR_MANGLE(var) (void) (var) +#define PTR_DEMANGLE(var) (void) (var) + +#endif /* _LINUX_HPPA_SYSDEP_H */ diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/ucontext_i.sym b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/ucontext_i.sym new file mode 100644 index 0000000000..ee33029a07 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/ucontext_i.sym @@ -0,0 +1,59 @@ +#include <stddef.h> +#include <signal.h> +#include <sys/ucontext.h> + +-- + +SIG_BLOCK +SIG_SETMASK + +#define ucontext(member) offsetof (ucontext_t, member) +#define mcontext(member) ucontext (uc_mcontext.member) +#define mreg(reg) mcontext (sc_gr[reg]) + +oUC_FLAGS ucontext (uc_flags) +oUC_LINK ucontext (uc_link) +oSS_SP ucontext (uc_stack.ss_sp) +oSS_FLAGS ucontext (uc_stack.ss_flags) +oSS_SIZE ucontext (uc_stack.ss_size) +oSC_FLAGS mcontext (sc_flags) +oR0 mreg (0) +oR1 mreg (1) +oR2 mreg (2) +oR3 mreg (3) +oR4 mreg (4) +oR5 mreg (5) +oR6 mreg (6) +oR7 mreg (7) +oR8 mreg (8) +oR9 mreg (9) +oR10 mreg (10) +oR11 mreg (11) +oR12 mreg (12) +oR13 mreg (13) +oR14 mreg (14) +oR15 mreg (15) +oR16 mreg (16) +oR17 mreg (17) +oR18 mreg (18) +oR19 mreg (19) +oR20 mreg (20) +oR21 mreg (21) +oR22 mreg (22) +oR23 mreg (23) +oR24 mreg (24) +oR25 mreg (25) +oR26 mreg (26) +oR27 mreg (27) +oR28 mreg (28) +oR29 mreg (29) +oR30 mreg (30) +oR31 mreg (31) +oFPREGS0 mcontext (sc_fr[0]) +oFPREGS31 mcontext (sc_fr[31]) +oIASQ0 mcontext (sc_iasq[0]) +oIASQ1 mcontext (sc_iasq[1]) +oIAOQ0 mcontext (sc_iaoq[0]) +oIAOQ1 mcontext (sc_iaoq[1]) +oSAR mcontext (sc_sar) +oSIGMASK ucontext (uc_sigmask) diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/umount.c b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/umount.c new file mode 100644 index 0000000000..208fbec994 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/umount.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/mips/mips64/umount.c> diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/utimes.c b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/utimes.c new file mode 100644 index 0000000000..63e0c8c9cb --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/utimes.c @@ -0,0 +1,30 @@ +/* Implement utimes for hppa. + 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/>. */ + +/* hppa has the utimensat syscall in all supported kernel versions but + gained the utimes syscall later, so use the linux-generic + implementation of utimes in terms of the utimensat syscall unless + the utimes syscall is known to be available. */ + +#include <kernel-features.h> + +#ifdef __ASSUME_UTIMES +# include <sysdeps/unix/sysv/linux/utimes.c> +#else +# include <sysdeps/unix/sysv/linux/generic/utimes.c> +#endif diff --git a/REORG.TODO/sysdeps/unix/sysv/linux/hppa/xstat.c b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/xstat.c new file mode 100644 index 0000000000..e9869f5508 --- /dev/null +++ b/REORG.TODO/sysdeps/unix/sysv/linux/hppa/xstat.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/i386/xstat.c> |