about summary refs log tree commit diff
path: root/sysdeps/unix/sysv/linux
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/sysv/linux
parent21c83793a223666b8cfe438d81615941896b355c (diff)
downloadglibc-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.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