diff options
author | Carlos O'Donell <carlos@systemhalted.org> | 2014-09-07 16:18:06 -0400 |
---|---|---|
committer | Carlos O'Donell <carlos@systemhalted.org> | 2014-09-07 22:08:36 -0400 |
commit | d83f0734e1522a5e5ea2494565f4dcd25a86d6a0 (patch) | |
tree | 9bda9b95797d592780251903ec6a5a5917a63f6e /sysdeps/unix/sysv/linux | |
parent | 21c83793a223666b8cfe438d81615941896b355c (diff) | |
download | glibc-d83f0734e1522a5e5ea2494565f4dcd25a86d6a0.tar.gz glibc-d83f0734e1522a5e5ea2494565f4dcd25a86d6a0.tar.xz glibc-d83f0734e1522a5e5ea2494565f4dcd25a86d6a0.zip |
HPPA: Transition to new non-addon NPTL.
Merge roland/nptl-hppa to master, update and test for hppa-linux-gnu. This commit squashes and commits the work done by Roland McGrath on roland/nptl-hppa to migrate hppa to the new non-addon NPTL. Some additional tweaks were required for tcb-offsets.sym to work correctly along with clone.S (unique to hppa).
Diffstat (limited to 'sysdeps/unix/sysv/linux')
-rw-r--r-- | sysdeps/unix/sysv/linux/hppa/arch-fork.h (renamed from sysdeps/unix/sysv/linux/hppa/nptl/fork.c) | 5 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/hppa/clone.S | 3 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/hppa/lowlevellock.h (renamed from sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/hppa/nptl/bits/pthreadtypes.h | 230 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/hppa/nptl/bits/semaphore.h | 31 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/hppa/nptl/clone.S | 3 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/hppa/nptl/libc-lowlevellock.c | 20 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/hppa/pt-vfork.S (renamed from sysdeps/unix/sysv/linux/hppa/nptl/pt-vfork.S) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/hppa/pthread.h (renamed from sysdeps/unix/sysv/linux/hppa/nptl/pthread.h) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/hppa/pthreadP.h (renamed from sysdeps/unix/sysv/linux/hppa/nptl/pthreadP.h) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/hppa/pthread_cond_broadcast.c (renamed from sysdeps/unix/sysv/linux/hppa/nptl/pthread_cond_broadcast.c) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/hppa/pthread_cond_destroy.c (renamed from sysdeps/unix/sysv/linux/hppa/nptl/pthread_cond_destroy.c) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/hppa/pthread_cond_init.c (renamed from sysdeps/unix/sysv/linux/hppa/nptl/pthread_cond_init.c) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/hppa/pthread_cond_signal.c (renamed from sysdeps/unix/sysv/linux/hppa/nptl/pthread_cond_signal.c) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/hppa/pthread_cond_timedwait.c (renamed from sysdeps/unix/sysv/linux/hppa/nptl/pthread_cond_timedwait.c) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/hppa/pthread_cond_wait.c (renamed from sysdeps/unix/sysv/linux/hppa/nptl/pthread_cond_wait.c) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/hppa/sysdep-cancel.h (renamed from sysdeps/unix/sysv/linux/hppa/nptl/sysdep-cancel.h) | 0 |
17 files changed, 3 insertions, 289 deletions
diff --git a/sysdeps/unix/sysv/linux/hppa/nptl/fork.c b/sysdeps/unix/sysv/linux/hppa/arch-fork.h index 3c21f5aef9..f4241fa49d 100644 --- a/sysdeps/unix/sysv/linux/hppa/nptl/fork.c +++ b/sysdeps/unix/sysv/linux/hppa/arch-fork.h @@ -1,4 +1,5 @@ -/* Copyright (C) 2005-2014 Free Software Foundation, Inc. +/* ARCH_FORK definition for Linux fork implementation. HPPA version. + Copyright (C) 2005-2014 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 @@ -29,5 +30,3 @@ INLINE_SYSCALL (clone, 5, \ CLONE_CHILD_SETTID | CLONE_CHILD_CLEARTID | SIGCHLD, \ NULL, NULL, NULL, &THREAD_SELF->tid) - -#include <nptl/sysdeps/unix/sysv/linux/fork.c> diff --git a/sysdeps/unix/sysv/linux/hppa/clone.S b/sysdeps/unix/sysv/linux/hppa/clone.S index 1a3c6c800d..ac8c468d65 100644 --- a/sysdeps/unix/sysv/linux/hppa/clone.S +++ b/sysdeps/unix/sysv/linux/hppa/clone.S @@ -24,6 +24,7 @@ #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), @@ -131,7 +132,6 @@ ENTRY(__clone) ldwm -64(%sp), %r4 .LthreadStart: -#ifdef RESET_PID # define CLONE_VM_BIT 23 /* 0x00000100 */ # define CLONE_THREAD_BIT 15 /* 0x00010000 */ /* Load original clone flags. @@ -150,7 +150,6 @@ ENTRY(__clone) stw %ret0, PID_THREAD_OFFSET(%r26) stw %ret0, TID_THREAD_OFFSET(%r26) 1: -#endif /* Load up the arguments. */ ldw -60(%sp), %arg0 ldw -64(%sp), %r22 diff --git a/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h b/sysdeps/unix/sysv/linux/hppa/lowlevellock.h index fb61d0c6d0..fb61d0c6d0 100644 --- a/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h +++ b/sysdeps/unix/sysv/linux/hppa/lowlevellock.h diff --git a/sysdeps/unix/sysv/linux/hppa/nptl/bits/pthreadtypes.h b/sysdeps/unix/sysv/linux/hppa/nptl/bits/pthreadtypes.h deleted file mode 100644 index d6fdc2c44d..0000000000 --- a/sysdeps/unix/sysv/linux/hppa/nptl/bits/pthreadtypes.h +++ /dev/null @@ -1,230 +0,0 @@ -/* Copyright (C) 2005-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef _BITS_PTHREADTYPES_H -#define _BITS_PTHREADTYPES_H 1 - -/* Linuxthread type sizes (bytes): - sizeof(pthread_attr_t) = 0x24 (36) - sizeof(pthread_barrier_t) = 0x30 (48) - sizeof(pthread_barrierattr_t) = 0x4 (4) - sizeof(pthread_cond_t) = 0x30 (48) - sizeof(pthread_condattr_t) = 0x4 (4) - sizeof(pthread_mutex_t) = 0x30 (48) - sizeof(pthread_mutexattr_t) = 0x4 (4) - sizeof(pthread_rwlock_t) = 0x40 (64) - sizeof(pthread_rwlockattr_t) = 0x8 (8) - sizeof(pthread_spinlock_t) = 0x10 (16) */ - -#define __SIZEOF_PTHREAD_ATTR_T 36 -#define __SIZEOF_PTHREAD_BARRIER_T 48 -#define __SIZEOF_PTHREAD_BARRIERATTR_T 4 -#define __SIZEOF_PTHREAD_COND_T 48 -#define __SIZEOF_PTHREAD_CONDATTR_T 4 -#define __SIZEOF_PTHREAD_MUTEX_T 48 -#define __SIZEOF_PTHREAD_MUTEXATTR_T 4 -#define __SIZEOF_PTHREAD_RWLOCK_T 64 -#define __SIZEOF_PTHREAD_RWLOCKATTR_T 8 - -/* Thread identifiers. The structure of the attribute type is not - exposed on purpose. */ -typedef unsigned long int pthread_t; - -union pthread_attr_t -{ - char __size[__SIZEOF_PTHREAD_ATTR_T]; - long int __align; -}; -#ifndef __have_pthread_attr_t -typedef union pthread_attr_t pthread_attr_t; -# define __have_pthread_attr_t 1 -#endif - - -typedef struct __pthread_internal_slist -{ - struct __pthread_internal_slist *__next; -} __pthread_slist_t; - - -/* Data structures for mutex handling. The structure of the attribute - type is not exposed on purpose. */ -typedef union -{ - struct __pthread_mutex_s - { - int __lock __attribute__ ((aligned(16))); - unsigned int __count; - int __owner; - /* KIND must stay at this position in the structure to maintain - binary compatibility. */ - int __kind; - /* The old 4-word 16-byte aligned lock. This is initalized - to all ones by the Linuxthreads PTHREAD_MUTEX_INITIALIZER. - Unused in NPTL. */ - int __compat_padding[4]; - /* In the old structure there are 4 words left due to alignment. - In NPTL two words are used. */ - unsigned int __nusers; - __extension__ union - { - int __spins; - __pthread_slist_t __list; - }; - /* Two more words are left before the NPTL - pthread_mutex_t is larger than Linuxthreads. */ - int __reserved1; - int __reserved2; - } __data; - char __size[__SIZEOF_PTHREAD_MUTEX_T]; - long int __align; -} pthread_mutex_t; - -/* Mutex __spins initializer used by PTHREAD_MUTEX_INITIALIZER. */ -#define __PTHREAD_SPINS 0 - -typedef union -{ - char __size[__SIZEOF_PTHREAD_MUTEXATTR_T]; - long int __align; -} pthread_mutexattr_t; - - -/* Data structure for conditional variable handling. The structure of - the attribute type is not exposed on purpose. However, this structure - is exposed via PTHREAD_COND_INITIALIZER, and because of this, the - Linuxthreads version sets the first four ints to one. In the NPTL - version we must check, in every function using pthread_cond_t, - for the static Linuxthreads initializer and clear the appropriate - words. */ -typedef union -{ - struct - { - /* In the old Linuxthreads pthread_cond_t, this is the - start of the 4-word lock structure, the next four words - are set all to 1 by the Linuxthreads - PTHREAD_COND_INITIALIZER. */ - int __lock __attribute__ ((aligned(16))); - /* Tracks the initialization of this structure: - 0 initialized with NPTL PTHREAD_COND_INITIALIZER. - 1 initialized with Linuxthreads PTHREAD_COND_INITIALIZER. - 2 initialization in progress. */ - int __initializer; - unsigned int __futex; - void *__mutex; - /* In the old Linuxthreads this would have been the start - of the pthread_fastlock status word. */ - __extension__ unsigned long long int __total_seq; - __extension__ unsigned long long int __wakeup_seq; - __extension__ unsigned long long int __woken_seq; - unsigned int __nwaiters; - unsigned int __broadcast_seq; - /* The NPTL pthread_cond_t is exactly the same size as - the Linuxthreads version, there are no words to spare. */ - } __data; - char __size[__SIZEOF_PTHREAD_COND_T]; - __extension__ long long int __align; -} pthread_cond_t; - -typedef union -{ - char __size[__SIZEOF_PTHREAD_CONDATTR_T]; - long int __align; -} pthread_condattr_t; - - -/* Keys for thread-specific data */ -typedef unsigned int pthread_key_t; - - -/* Once-only execution */ -typedef int pthread_once_t; - - -#if defined __USE_UNIX98 || defined __USE_XOPEN2K -/* Data structure for read-write lock variable handling. The - structure of the attribute type is not exposed on purpose. */ -typedef union -{ - struct - { - /* In the old Linuxthreads pthread_rwlock_t, this is the - start of the 4-word 16-byte aligned lock structure. The - next four words are all set to 1 by the Linuxthreads - PTHREAD_RWLOCK_INITIALIZER. We ignore them in NPTL. */ - int __compat_padding[4] __attribute__ ((aligned(16))); - int __lock; - unsigned int __nr_readers; - unsigned int __readers_wakeup; - unsigned int __writer_wakeup; - unsigned int __nr_readers_queued; - unsigned int __nr_writers_queued; - int __writer; - /* An unused word, reserved for future use. It was added - to maintain the location of the flags from the Linuxthreads - layout of this structure. */ - int __reserved1; - /* FLAGS must stay at this position in the structure to maintain - binary compatibility. */ - unsigned char __pad2; - unsigned char __pad1; - unsigned char __shared; - unsigned char __flags; - /* The NPTL pthread_rwlock_t is 4 words smaller than the - Linuxthreads version. One word is in the middle of the - structure, the other three are at the end. */ - int __reserved2; - int __reserved3; - int __reserved4; - } __data; - char __size[__SIZEOF_PTHREAD_RWLOCK_T]; - long int __align; -} pthread_rwlock_t; - -#define __PTHREAD_RWLOCK_ELISION_EXTRA 0 - -typedef union -{ - char __size[__SIZEOF_PTHREAD_RWLOCKATTR_T]; - long int __align; -} pthread_rwlockattr_t; -#endif - - -#ifdef __USE_XOPEN2K -/* POSIX spinlock data type. */ -typedef volatile int pthread_spinlock_t; - - -/* POSIX barriers data type. The structure of the type is - deliberately not exposed. */ -typedef union -{ - char __size[__SIZEOF_PTHREAD_BARRIER_T]; - long int __align; -} pthread_barrier_t; - -typedef union -{ - char __size[__SIZEOF_PTHREAD_BARRIERATTR_T]; - int __align; -} pthread_barrierattr_t; -#endif - - -#endif /* bits/pthreadtypes.h */ diff --git a/sysdeps/unix/sysv/linux/hppa/nptl/bits/semaphore.h b/sysdeps/unix/sysv/linux/hppa/nptl/bits/semaphore.h deleted file mode 100644 index 9d68d44e31..0000000000 --- a/sysdeps/unix/sysv/linux/hppa/nptl/bits/semaphore.h +++ /dev/null @@ -1,31 +0,0 @@ -/* Copyright (C) 2002-2014 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 _SEMAPHORE_H -# error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead." -#endif - -#define __SIZEOF_SEM_T 16 - -/* Value returned if `sem_open' failed. */ -#define SEM_FAILED ((sem_t *) 0) - -typedef union -{ - char __size[__SIZEOF_SEM_T]; - long int __align; -} sem_t; diff --git a/sysdeps/unix/sysv/linux/hppa/nptl/clone.S b/sysdeps/unix/sysv/linux/hppa/nptl/clone.S deleted file mode 100644 index 23750b3f88..0000000000 --- a/sysdeps/unix/sysv/linux/hppa/nptl/clone.S +++ /dev/null @@ -1,3 +0,0 @@ -#define RESET_PID -#include <tcb-offsets.h> -#include "../clone.S" diff --git a/sysdeps/unix/sysv/linux/hppa/nptl/libc-lowlevellock.c b/sysdeps/unix/sysv/linux/hppa/nptl/libc-lowlevellock.c deleted file mode 100644 index 8f50fed615..0000000000 --- a/sysdeps/unix/sysv/linux/hppa/nptl/libc-lowlevellock.c +++ /dev/null @@ -1,20 +0,0 @@ -/* low level locking for pthread library. Generic futex-using version. - Copyright (C) 2003-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#include "lowlevellock.c" diff --git a/sysdeps/unix/sysv/linux/hppa/nptl/pt-vfork.S b/sysdeps/unix/sysv/linux/hppa/pt-vfork.S index 4bf14ef949..4bf14ef949 100644 --- a/sysdeps/unix/sysv/linux/hppa/nptl/pt-vfork.S +++ b/sysdeps/unix/sysv/linux/hppa/pt-vfork.S diff --git a/sysdeps/unix/sysv/linux/hppa/nptl/pthread.h b/sysdeps/unix/sysv/linux/hppa/pthread.h index 8fbc1a41e6..8fbc1a41e6 100644 --- a/sysdeps/unix/sysv/linux/hppa/nptl/pthread.h +++ b/sysdeps/unix/sysv/linux/hppa/pthread.h diff --git a/sysdeps/unix/sysv/linux/hppa/nptl/pthreadP.h b/sysdeps/unix/sysv/linux/hppa/pthreadP.h index 744b5b090b..744b5b090b 100644 --- a/sysdeps/unix/sysv/linux/hppa/nptl/pthreadP.h +++ b/sysdeps/unix/sysv/linux/hppa/pthreadP.h diff --git a/sysdeps/unix/sysv/linux/hppa/nptl/pthread_cond_broadcast.c b/sysdeps/unix/sysv/linux/hppa/pthread_cond_broadcast.c index 23526c658c..23526c658c 100644 --- a/sysdeps/unix/sysv/linux/hppa/nptl/pthread_cond_broadcast.c +++ b/sysdeps/unix/sysv/linux/hppa/pthread_cond_broadcast.c diff --git a/sysdeps/unix/sysv/linux/hppa/nptl/pthread_cond_destroy.c b/sysdeps/unix/sysv/linux/hppa/pthread_cond_destroy.c index b90355c34d..b90355c34d 100644 --- a/sysdeps/unix/sysv/linux/hppa/nptl/pthread_cond_destroy.c +++ b/sysdeps/unix/sysv/linux/hppa/pthread_cond_destroy.c diff --git a/sysdeps/unix/sysv/linux/hppa/nptl/pthread_cond_init.c b/sysdeps/unix/sysv/linux/hppa/pthread_cond_init.c index 38a282a38a..38a282a38a 100644 --- a/sysdeps/unix/sysv/linux/hppa/nptl/pthread_cond_init.c +++ b/sysdeps/unix/sysv/linux/hppa/pthread_cond_init.c diff --git a/sysdeps/unix/sysv/linux/hppa/nptl/pthread_cond_signal.c b/sysdeps/unix/sysv/linux/hppa/pthread_cond_signal.c index 2f6e8e1b89..2f6e8e1b89 100644 --- a/sysdeps/unix/sysv/linux/hppa/nptl/pthread_cond_signal.c +++ b/sysdeps/unix/sysv/linux/hppa/pthread_cond_signal.c diff --git a/sysdeps/unix/sysv/linux/hppa/nptl/pthread_cond_timedwait.c b/sysdeps/unix/sysv/linux/hppa/pthread_cond_timedwait.c index e53136bfe3..e53136bfe3 100644 --- a/sysdeps/unix/sysv/linux/hppa/nptl/pthread_cond_timedwait.c +++ b/sysdeps/unix/sysv/linux/hppa/pthread_cond_timedwait.c diff --git a/sysdeps/unix/sysv/linux/hppa/nptl/pthread_cond_wait.c b/sysdeps/unix/sysv/linux/hppa/pthread_cond_wait.c index c53bc98325..c53bc98325 100644 --- a/sysdeps/unix/sysv/linux/hppa/nptl/pthread_cond_wait.c +++ b/sysdeps/unix/sysv/linux/hppa/pthread_cond_wait.c diff --git a/sysdeps/unix/sysv/linux/hppa/nptl/sysdep-cancel.h b/sysdeps/unix/sysv/linux/hppa/sysdep-cancel.h index 6f1c9d745b..6f1c9d745b 100644 --- a/sysdeps/unix/sysv/linux/hppa/nptl/sysdep-cancel.h +++ b/sysdeps/unix/sysv/linux/hppa/sysdep-cancel.h |