aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/unix
diff options
context:
space:
mode:
authorCarlos O'Donell <carlos@systemhalted.org>2014-09-07 16:18:06 -0400
committerCarlos O'Donell <carlos@systemhalted.org>2014-09-07 22:08:36 -0400
commitd83f0734e1522a5e5ea2494565f4dcd25a86d6a0 (patch)
tree9bda9b95797d592780251903ec6a5a5917a63f6e /sysdeps/unix
parent21c83793a223666b8cfe438d81615941896b355c (diff)
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')
-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.S3
-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.h230
-rw-r--r--sysdeps/unix/sysv/linux/hppa/nptl/bits/semaphore.h31
-rw-r--r--sysdeps/unix/sysv/linux/hppa/nptl/clone.S3
-rw-r--r--sysdeps/unix/sysv/linux/hppa/nptl/libc-lowlevellock.c20
-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