diff options
Diffstat (limited to 'toolchain/uclibc/patches/0.9.34-git/0003-linuxthreads-remove-unused-s390-code.patch')
-rw-r--r-- | toolchain/uclibc/patches/0.9.34-git/0003-linuxthreads-remove-unused-s390-code.patch | 1347 |
1 files changed, 1347 insertions, 0 deletions
diff --git a/toolchain/uclibc/patches/0.9.34-git/0003-linuxthreads-remove-unused-s390-code.patch b/toolchain/uclibc/patches/0.9.34-git/0003-linuxthreads-remove-unused-s390-code.patch new file mode 100644 index 000000000..cbefd471a --- /dev/null +++ b/toolchain/uclibc/patches/0.9.34-git/0003-linuxthreads-remove-unused-s390-code.patch @@ -0,0 +1,1347 @@ +From d72e888957d32984c56e19e43a3c3b41263c7bb4 Mon Sep 17 00:00:00 2001 +From: Waldemar Brodkorb <wbx@openadk.org> +Date: Sat, 6 Sep 2014 14:45:42 +0200 +Subject: [PATCH 3/6] linuxthreads: remove unused s390 code + +Cleanup linuxthreads by removing unused s390 code. + +Signed-off-by: Waldemar Brodkorb <wbx@openadk.org> +--- + libc/stdlib/system.c | 3 - + libpthread/linuxthreads/sysdeps/s390/pspinlock.c | 90 ------------ + .../linuxthreads/sysdeps/s390/s390-32/pt-machine.h | 119 ---------------- + .../linuxthreads/sysdeps/s390/s390-64/pt-machine.h | 124 ----------------- + .../linuxthreads/sysdeps/s390/tcb-offsets.sym | 4 - + libpthread/linuxthreads/sysdeps/s390/tls.h | 144 ------------------- + .../sysdeps/unix/sysv/linux/s390/bits/typesizes.h | 71 ---------- + .../unix/sysv/linux/s390/s390-32/pt-initfini.c | 153 --------------------- + .../unix/sysv/linux/s390/s390-32/sysdep-cancel.h | 136 ------------------ + .../sysdeps/unix/sysv/linux/s390/s390-32/vfork.S | 68 --------- + .../unix/sysv/linux/s390/s390-64/pt-initfini.c | 136 ------------------ + .../unix/sysv/linux/s390/s390-64/pt-sigsuspend.c | 1 - + .../unix/sysv/linux/s390/s390-64/sysdep-cancel.h | 115 ---------------- + .../sysdeps/unix/sysv/linux/s390/s390-64/vfork.S | 53 ------- + 14 files changed, 1217 deletions(-) + delete mode 100644 libpthread/linuxthreads/sysdeps/s390/pspinlock.c + delete mode 100644 libpthread/linuxthreads/sysdeps/s390/s390-32/pt-machine.h + delete mode 100644 libpthread/linuxthreads/sysdeps/s390/s390-64/pt-machine.h + delete mode 100644 libpthread/linuxthreads/sysdeps/s390/tcb-offsets.sym + delete mode 100644 libpthread/linuxthreads/sysdeps/s390/tls.h + delete mode 100644 libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/bits/typesizes.h + delete mode 100644 libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c + delete mode 100644 libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h + delete mode 100644 libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/vfork.S + delete mode 100644 libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c + delete mode 100644 libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-sigsuspend.c + delete mode 100644 libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h + delete mode 100644 libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/vfork.S + +diff --git a/libc/stdlib/system.c b/libc/stdlib/system.c +index 8c5d25d..05b6738 100644 +--- a/libc/stdlib/system.c ++++ b/libc/stdlib/system.c +@@ -91,9 +91,6 @@ libc_hidden_proto(waitpid) + #elif defined __sparc__ + # define FORK() \ + INLINE_CLONE_SYSCALL (CLONE_PARENT_SETTID | SIGCHLD, 0, &pid, NULL, NULL) +-#elif defined __s390__ +-# define FORK() \ +- INLINE_SYSCALL (clone, 3, 0, CLONE_PARENT_SETTID | SIGCHLD, &pid) + #else + # define FORK() \ + INLINE_SYSCALL (clone, 3, CLONE_PARENT_SETTID | SIGCHLD, 0, &pid) +diff --git a/libpthread/linuxthreads/sysdeps/s390/pspinlock.c b/libpthread/linuxthreads/sysdeps/s390/pspinlock.c +deleted file mode 100644 +index be75786..0000000 +--- a/libpthread/linuxthreads/sysdeps/s390/pspinlock.c ++++ /dev/null +@@ -1,90 +0,0 @@ +-/* POSIX spinlock implementation. S/390 version. +- Copyright (C) 2000, 2004 Free Software Foundation, Inc. +- Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). +- This file is part of the GNU C Library. +- +- The GNU C Library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Lesser General Public License as +- published by the Free Software Foundation; either version 2.1 of the +- License, or (at your option) any later version. +- +- The GNU C Library is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- Lesser General Public License for more details. +- +- You should have received a copy of the GNU Lesser General Public +- License along with the GNU C Library; see the file COPYING.LIB. If +- not, see <http://www.gnu.org/licenses/>. */ +- +-#include <errno.h> +-#include <pthread.h> +-#include "internals.h" +- +-/* This implementation is similar to the one used in the Linux kernel. +- But the kernel is byte instructions for the memory access. This is +- faster but unusable here. The problem is that only 128 +- threads/processes could use the spinlock at the same time. If (by +- a design error in the program) a thread/process would hold the +- spinlock for a time long enough to accumulate 128 waiting +- processes, the next one will find a positive value in the spinlock +- and assume it is unlocked. We cannot accept that. */ +- +-int +-__pthread_spin_lock (pthread_spinlock_t *lock) +-{ +- __asm__ __volatile__(" basr 1,0\n" +- "0: slr 0,0\n" +- " cs 0,1,%1\n" +- " jl 0b\n" +- : "=m" (*lock) +- : "m" (*lock) : "0", "1", "cc" ); +- return 0; +-} +-weak_alias (__pthread_spin_lock, pthread_spin_lock) +- +-int +-__pthread_spin_trylock (pthread_spinlock_t *lock) +-{ +- int oldval; +- +- __asm__ __volatile__(" slr %1,%1\n" +- " basr 1,0\n" +- "0: cs %1,1,%0" +- : "=m" (*lock), "=&d" (oldval) +- : "m" (*lock) : "1", "cc" ); +- return oldval == 0 ? 0 : EBUSY; +-} +-weak_alias (__pthread_spin_trylock, pthread_spin_trylock) +- +- +-int +-__pthread_spin_unlock (pthread_spinlock_t *lock) +-{ +- __asm__ __volatile__(" xc 0(4,%0),0(%0)\n" +- " bcr 15,0" +- : : "a" (lock) : "memory" ); +- return 0; +-} +-weak_alias (__pthread_spin_unlock, pthread_spin_unlock) +- +- +-int +-__pthread_spin_init (pthread_spinlock_t *lock, int pshared) +-{ +- /* We can ignore the `pshared' parameter. Since we are busy-waiting +- all processes which can access the memory location `lock' points +- to can use the spinlock. */ +- *lock = 0; +- return 0; +-} +-weak_alias (__pthread_spin_init, pthread_spin_init) +- +- +-int +-__pthread_spin_destroy (pthread_spinlock_t *lock) +-{ +- /* Nothing to do. */ +- return 0; +-} +-weak_alias (__pthread_spin_destroy, pthread_spin_destroy) +diff --git a/libpthread/linuxthreads/sysdeps/s390/s390-32/pt-machine.h b/libpthread/linuxthreads/sysdeps/s390/s390-32/pt-machine.h +deleted file mode 100644 +index 51505a9..0000000 +--- a/libpthread/linuxthreads/sysdeps/s390/s390-32/pt-machine.h ++++ /dev/null +@@ -1,119 +0,0 @@ +-/* Machine-dependent pthreads configuration and inline functions. +- S390 version. +- Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. +- Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). +- This file is part of the GNU C Library. +- +- The GNU C Library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Lesser General Public License as +- published by the Free Software Foundation; either version 2.1 of the +- License, or (at your option) any later version. +- +- The GNU C Library is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- Lesser General Public License for more details. +- +- You should have received a copy of the GNU Lesser General Public +- License along with the GNU C Library; see the file COPYING.LIB. If +- not, see <http://www.gnu.org/licenses/>. */ +- +-#ifndef _PT_MACHINE_H +-#define _PT_MACHINE_H 1 +- +-#ifndef PT_EI +-# define PT_EI __extern_always_inline +-#endif +- +-extern long int testandset (int *spinlock); +-extern int __compare_and_swap (long int *p, long int oldval, long int newval); +- +-/* For multiprocessor systems, we want to ensure all memory accesses +- are completed before we reset a lock. On other systems, we still +- need to make sure that the compiler has flushed everything to memory. */ +-#define MEMORY_BARRIER() __asm__ __volatile__ ("bcr 15,0" : : : "memory") +- +-/* Spinlock implementation; required. */ +-PT_EI long int +-testandset (int *spinlock) +-{ +- int ret; +- +- __asm__ __volatile__( +- " la 1,%1\n" +- " lhi 0,1\n" +- " l %0,%1\n" +- "0: cs %0,0,0(1)\n" +- " jl 0b" +- : "=&d" (ret), "+m" (*spinlock) +- : : "0", "1", "cc"); +- +- return ret; +-} +- +- +-/* Get some notion of the current stack. Need not be exactly the top +- of the stack, just something somewhere in the current frame. */ +-#define CURRENT_STACK_FRAME stack_pointer +-register char * stack_pointer __asm__ ("15"); +- +-#ifdef __UCLIBC_HAS_TLS__ +-/* Return the thread descriptor for the current thread. */ +-# define THREAD_SELF ((pthread_descr) __builtin_thread_pointer ()) +- +-/* Initialize the thread-unique value. */ +-#define INIT_THREAD_SELF(descr, nr) __builtin_set_thread_pointer (descr) +-#else +-/* Return the thread descriptor for the current thread. +- S/390 registers uses access register 0 as "thread register". */ +-#define THREAD_SELF ({ \ +- register pthread_descr __self; \ +- __asm__ ("ear %0,%%a0" : "=d" (__self) ); \ +- __self; \ +-}) +- +-/* Initialize the thread-unique value. */ +-#define INIT_THREAD_SELF(descr, nr) ({ \ +- __asm__ ("sar %%a0,%0" : : "d" (descr) ); \ +-}) +-#endif +- +-/* Access to data in the thread descriptor is easy. */ +-#define THREAD_GETMEM(descr, member) \ +- ((void) sizeof (descr), THREAD_SELF->member) +-#define THREAD_GETMEM_NC(descr, member) \ +- ((void) sizeof (descr), THREAD_SELF->member) +-#define THREAD_SETMEM(descr, member, value) \ +- ((void) sizeof (descr), THREAD_SELF->member = (value)) +-#define THREAD_SETMEM_NC(descr, member, value) \ +- ((void) sizeof (descr), THREAD_SELF->member = (value)) +- +-/* We want the OS to assign stack addresses. */ +-#define FLOATING_STACKS 1 +- +-/* Maximum size of the stack if the rlimit is unlimited. */ +-#define ARCH_STACK_MAX_SIZE 8*1024*1024 +- +-/* Compare-and-swap for semaphores. */ +- +-#define HAS_COMPARE_AND_SWAP +- +-PT_EI int +-__compare_and_swap(long int *p, long int oldval, long int newval) +-{ +- int retval; +- +- __asm__ __volatile__( +- " la 1,%1\n" +- " lr 0,%2\n" +- " cs 0,%3,0(1)\n" +- " ipm %0\n" +- " srl %0,28\n" +- "0:" +- : "=&d" (retval), "+m" (*p) +- : "d" (oldval) , "d" (newval) +- : "cc", "0", "1" ); +- return retval == 0; +-} +- +-#endif /* pt-machine.h */ +diff --git a/libpthread/linuxthreads/sysdeps/s390/s390-64/pt-machine.h b/libpthread/linuxthreads/sysdeps/s390/s390-64/pt-machine.h +deleted file mode 100644 +index 4bff85a..0000000 +--- a/libpthread/linuxthreads/sysdeps/s390/s390-64/pt-machine.h ++++ /dev/null +@@ -1,124 +0,0 @@ +-/* Machine-dependent pthreads configuration and inline functions. +- 64 bit S/390 version. +- Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. +- Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). +- This file is part of the GNU C Library. +- +- The GNU C Library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Lesser General Public License as +- published by the Free Software Foundation; either version 2.1 of the +- License, or (at your option) any later version. +- +- The GNU C Library is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- Lesser General Public License for more details. +- +- You should have received a copy of the GNU Lesser General Public +- License along with the GNU C Library; see the file COPYING.LIB. If +- not, see <http://www.gnu.org/licenses/>. */ +- +-#ifndef _PT_MACHINE_H +-#define _PT_MACHINE_H 1 +- +-#ifndef PT_EI +-# define PT_EI __extern_always_inline +-#endif +- +-extern long int testandset (int *spinlock); +-extern int __compare_and_swap (long int *p, long int oldval, long int newval); +- +-/* For multiprocessor systems, we want to ensure all memory accesses +- are completed before we reset a lock. On other systems, we still +- need to make sure that the compiler has flushed everything to memory. */ +-#define MEMORY_BARRIER() __asm__ __volatile__ ("bcr 15,0" : : : "memory") +- +-/* Spinlock implementation; required. */ +-PT_EI long int +-testandset (int *spinlock) +-{ +- int ret; +- +- __asm__ __volatile__( +- " la 1,%1\n" +- " lhi 0,1\n" +- " l %0,%1\n" +- "0: cs %0,0,0(1)\n" +- " jl 0b" +- : "=&d" (ret), "+m" (*spinlock) +- : : "0", "1", "cc"); +- +- return ret; +-} +- +- +-/* Get some notion of the current stack. Need not be exactly the top +- of the stack, just something somewhere in the current frame. */ +-#define CURRENT_STACK_FRAME stack_pointer +-register char * stack_pointer __asm__ ("15"); +- +-#ifdef __UCLIBC_HAS_TLS__ +-/* Return the thread descriptor for the current thread. */ +-# define THREAD_SELF ((pthread_descr) __builtin_thread_pointer ()) +- +-/* Initialize the thread-unique value. */ +-#define INIT_THREAD_SELF(descr, nr) __builtin_set_thread_pointer (descr) +-#else +-/* Return the thread descriptor for the current thread. +- 64 bit S/390 uses access register 0 and 1 as "thread register". */ +-#define THREAD_SELF ({ \ +- register pthread_descr __self; \ +- __asm__ (" ear %0,%%a0\n" \ +- " sllg %0,%0,32\n" \ +- " ear %0,%%a1\n" \ +- : "=d" (__self) ); \ +- __self; \ +-}) +- +-/* Initialize the thread-unique value. */ +-#define INIT_THREAD_SELF(descr, nr) ({ \ +- __asm__ (" sar %%a1,%0\n" \ +- " srlg 0,%0,32\n" \ +- " sar %%a0,0\n" \ +- : : "d" (descr) : "0" ); \ +-}) +-#endif +- +-/* Access to data in the thread descriptor is easy. */ +-#define THREAD_GETMEM(descr, member) \ +- ((void) sizeof (descr), THREAD_SELF->member) +-#define THREAD_GETMEM_NC(descr, member) \ +- ((void) sizeof (descr), THREAD_SELF->member) +-#define THREAD_SETMEM(descr, member, value) \ +- ((void) sizeof (descr), THREAD_SELF->member = (value)) +-#define THREAD_SETMEM_NC(descr, member, value) \ +- ((void) sizeof (descr), THREAD_SELF->member = (value)) +- +-/* We want the OS to assign stack addresses. */ +-#define FLOATING_STACKS 1 +- +-/* Maximum size of the stack if the rlimit is unlimited. */ +-#define ARCH_STACK_MAX_SIZE 8*1024*1024 +- +-/* Compare-and-swap for semaphores. */ +- +-#define HAS_COMPARE_AND_SWAP +- +-PT_EI int +-__compare_and_swap(long int *p, long int oldval, long int newval) +-{ +- int retval; +- +- __asm__ __volatile__( +- " lgr 0,%2\n" +- " csg 0,%3,%1\n" +- " ipm %0\n" +- " srl %0,28\n" +- "0:" +- : "=&d" (retval), "+m" (*p) +- : "d" (oldval) , "d" (newval) +- : "cc", "0"); +- return retval == 0; +-} +- +-#endif /* pt-machine.h */ +diff --git a/libpthread/linuxthreads/sysdeps/s390/tcb-offsets.sym b/libpthread/linuxthreads/sysdeps/s390/tcb-offsets.sym +deleted file mode 100644 +index aee6be2..0000000 +--- a/libpthread/linuxthreads/sysdeps/s390/tcb-offsets.sym ++++ /dev/null +@@ -1,4 +0,0 @@ +-#include <sysdep.h> +-#include <tls.h> +- +-MULTIPLE_THREADS_OFFSET offsetof (tcbhead_t, multiple_threads) +diff --git a/libpthread/linuxthreads/sysdeps/s390/tls.h b/libpthread/linuxthreads/sysdeps/s390/tls.h +deleted file mode 100644 +index d987bdb..0000000 +--- a/libpthread/linuxthreads/sysdeps/s390/tls.h ++++ /dev/null +@@ -1,144 +0,0 @@ +-/* Definitions for thread-local data handling. linuxthreads/s390 version. +- Copyright (C) 2002, 2003, 2005 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 _TLS_H +-#define _TLS_H +- +-#ifndef __ASSEMBLER__ +- +-# include <pt-machine.h> +-# include <stdbool.h> +-# include <stddef.h> +- +-/* Type for the dtv. */ +-typedef union dtv +-{ +- size_t counter; +- struct +- { +- void *val; +- bool is_static; +- } pointer; +-} dtv_t; +- +-typedef struct +-{ +- void *tcb; /* Pointer to the TCB. Not necessary the +- thread descriptor used by libpthread. */ +- dtv_t *dtv; +- void *self; /* Pointer to the thread descriptor. */ +- int multiple_threads; +-} tcbhead_t; +- +-#else /* __ASSEMBLER__ */ +-# include <tcb-offsets.h> +-#endif /* __ASSEMBLER__ */ +- +-/* TLS is always supported if the tools support it. There are no +- kernel dependencies. To avoid bothering with the TLS support code +- at all, use configure --without-tls. +- +- We need USE_TLS to be consistently defined, for ldsodefs.h +- conditionals. */ +- +-#ifdef HAVE_TLS_SUPPORT +- +-/* Signal that TLS support is available. */ +-# define USE_TLS 1 +- +-# ifndef __ASSEMBLER__ +-/* Get system call information. */ +-# include <sysdep.h> +- +- +-/* Get the thread descriptor definition. */ +-# include <linuxthreads/descr.h> +- +-/* This is the size of the initial TCB. */ +-# define TLS_INIT_TCB_SIZE sizeof (tcbhead_t) +- +-/* Alignment requirements for the initial TCB. */ +-# define TLS_INIT_TCB_ALIGN __alignof__ (tcbhead_t) +- +-/* This is the size of the TCB. */ +-# define TLS_TCB_SIZE sizeof (struct _pthread_descr_struct) +- +-/* Alignment requirements for the TCB. */ +-# define TLS_TCB_ALIGN __alignof__ (struct _pthread_descr_struct) +- +-/* The TCB can have any size and the memory following the address the +- thread pointer points to is unspecified. Allocate the TCB there. */ +-# define TLS_TCB_AT_TP 1 +- +- +-/* Install the dtv pointer. The pointer passed is to the element with +- index -1 which contain the length. */ +-# define INSTALL_DTV(descr, dtvp) \ +- ((tcbhead_t *) (descr))->dtv = (dtvp) + 1 +- +-/* Install new dtv for current thread. */ +-# define INSTALL_NEW_DTV(dtv) \ +- (((tcbhead_t *) __builtin_thread_pointer ())->dtv = (dtv)) +- +-/* Return dtv of given thread descriptor. */ +-# define GET_DTV(descr) \ +- (((tcbhead_t *) (descr))->dtv) +- +-/* Code to initially initialize the thread pointer. This might need +- special attention since 'errno' is not yet available and if the +- operation can cause a failure 'errno' must not be touched. +- +- The value of this macro is null if successful, or an error string. */ +-# define TLS_INIT_TP(descr, secondcall) \ +- ({ \ +- void *_descr = (descr); \ +- tcbhead_t *head = _descr; \ +- \ +- head->tcb = _descr; \ +- /* For now the thread descriptor is at the same address. */ \ +- head->self = _descr; \ +- \ +- __builtin_set_thread_pointer (_descr); \ +- NULL; \ +- }) +- +-/* Return the address of the dtv for the current thread. */ +-# define THREAD_DTV() \ +- (((tcbhead_t *) __builtin_thread_pointer ())->dtv) +- +-# endif /* __ASSEMBLER__ */ +- +-#else /* HAVE_TLS_SUPPORT && (FLOATING_STACKS || !IS_IN_libpthread) */ +- +-# ifndef __ASSEMBLER__ +- +-/* Get the thread descriptor definition. */ +-# include <linuxthreads/descr.h> +- +-# define NONTLS_INIT_TP \ +- do { \ +- static const tcbhead_t nontls_init_tp \ +- = { .multiple_threads = 0 }; \ +- INIT_THREAD_SELF (&nontls_init_tp, 0); \ +- } while (0) +- +-# endif /* __ASSEMBLER__ */ +- +-#endif /* HAVE_TLS_SUPPORT && (FLOATING_STACKS || !IS_IN_libpthread) */ +- +-#endif /* tls.h */ +diff --git a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/bits/typesizes.h b/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/bits/typesizes.h +deleted file mode 100644 +index 6b58825..0000000 +--- a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/bits/typesizes.h ++++ /dev/null +@@ -1,71 +0,0 @@ +-/* bits/typesizes.h -- underlying types for *_t. Linux/s390 version. +- Copyright (C) 2003 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- +- The GNU C Library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Lesser General Public +- License as published by the Free Software Foundation; either +- version 2.1 of the License, or (at your option) any later version. +- +- The GNU C Library is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- Lesser General Public License for more details. +- +- You should have received a copy of the GNU Lesser General Public +- License along with the GNU C Library; if not, see +- <http://www.gnu.org/licenses/>. */ +- +-#ifndef _BITS_TYPES_H +-# error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead." +-#endif +- +-#ifndef _BITS_TYPESIZES_H +-#define _BITS_TYPESIZES_H 1 +- +-/* See <bits/types.h> for the meaning of these macros. This file exists so +- that <bits/types.h> need not vary across different GNU platforms. */ +- +-#define __DEV_T_TYPE __UQUAD_TYPE +-#define __UID_T_TYPE __U32_TYPE +-#define __GID_T_TYPE __U32_TYPE +-#define __INO_T_TYPE __ULONGWORD_TYPE +-#define __INO64_T_TYPE __UQUAD_TYPE +-#define __MODE_T_TYPE __U32_TYPE +-#define __NLINK_T_TYPE __UWORD_TYPE +-#define __OFF_T_TYPE __SLONGWORD_TYPE +-#define __OFF64_T_TYPE __SQUAD_TYPE +-#define __PID_T_TYPE __S32_TYPE +-#define __RLIM_T_TYPE __ULONGWORD_TYPE +-#define __RLIM64_T_TYPE __UQUAD_TYPE +-#define __BLKCNT_T_TYPE __SLONGWORD_TYPE +-#define __BLKCNT64_T_TYPE __SQUAD_TYPE +-#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE +-#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE +-#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE +-#define __FSFILCNT64_T_TYPE __UQUAD_TYPE +-#define __ID_T_TYPE __U32_TYPE +-#define __CLOCK_T_TYPE __SLONGWORD_TYPE +-#define __TIME_T_TYPE __SLONGWORD_TYPE +-#define __USECONDS_T_TYPE __U32_TYPE +-#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE +-#define __DADDR_T_TYPE __S32_TYPE +-#define __SWBLK_T_TYPE __SLONGWORD_TYPE +-#define __KEY_T_TYPE __S32_TYPE +-#define __CLOCKID_T_TYPE __S32_TYPE +-#define __TIMER_T_TYPE __S32_TYPE +-#define __BLKSIZE_T_TYPE __SLONGWORD_TYPE +-#define __FSID_T_TYPE struct { int __val[2]; } +-#if defined __GNUC__ && __GNUC__ <= 2 +-/* Compatibility with g++ 2.95.x. */ +-#define __SSIZE_T_TYPE __SWORD_TYPE +-#else +-/* size_t is unsigned long int on s390 -m31. */ +-#define __SSIZE_T_TYPE __SLONGWORD_TYPE +-#endif +- +-/* Number of descriptors that can fit in an `fd_set'. */ +-#define __FD_SETSIZE 1024 +- +- +-#endif /* bits/typesizes.h */ +diff --git a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c b/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c +deleted file mode 100644 +index cde4183..0000000 +--- a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c ++++ /dev/null +@@ -1,153 +0,0 @@ +-/* Special .init and .fini section support for S/390. +- Copyright (C) 2000, 2001 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. +- +- In addition to the permissions in the GNU Lesser General Public +- License, the Free Software Foundation gives you unlimited +- permission to link the compiled version of this file with other +- programs, and to distribute those programs without any restriction +- coming from the use of this file. (The Lesser General Public +- License restrictions do apply in other respects; for example, they +- cover modification of the file, and distribution when not linked +- into another program.) +- +- 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; see the file COPYING.LIB. If not, +- see <http://www.gnu.org/licenses/>. */ +- +-/* This file is compiled into assembly code which is then munged by a sed +- script into two files: crti.s and crtn.s. +- +- * crti.s puts a function prologue at the beginning of the +- .init and .fini sections and defines global symbols for +- those addresses, so they can be called as functions. +- +- * crtn.s puts the corresponding function epilogues +- in the .init and .fini sections. */ +- +-__asm__ ("\ +-\n\ +-#include \"defs.h\"\n\ +-\n\ +-/*@HEADER_ENDS*/\n\ +-\n\ +-/*@TESTS_BEGIN*/\n\ +-\n\ +-/*@TESTS_END*/\n\ +-\n\ +-/*@_init_PROLOG_BEGINS*/\n\ +-\n\ +- .section .init\n\ +-#NO_APP\n\ +- .align 4\n\ +-.globl _init\n\ +- .type _init,@function\n\ +-_init:\n\ +-# leaf function 0\n\ +-# automatics 0\n\ +-# outgoing args 0\n\ +-# need frame pointer 0\n\ +-# call alloca 0\n\ +-# has varargs 0\n\ +-# incoming args (stack) 0\n\ +-# function length 36\n\ +- STM 6,15,24(15)\n\ +- BRAS 13,.LTN1_0\n\ +-.LT1_0:\n\ +-.LC13:\n\ +- .long __pthread_initialize_minimal@PLT-.LT1_0\n\ +-.LC14:\n\ +- .long __gmon_start__@GOT\n\ +-.LC15:\n\ +- .long _GLOBAL_OFFSET_TABLE_-.LT1_0\n\ +-.LTN1_0:\n\ +- LR 1,15\n\ +- AHI 15,-96\n\ +- ST 1,0(15)\n\ +- L 12,.LC15-.LT1_0(13)\n\ +- AR 12,13\n\ +- L 1,.LC13-.LT1_0(13)\n\ +- LA 1,0(1,13)\n\ +- BASR 14,1\n\ +- L 1,.LC14-.LT1_0(13)\n\ +- L 1,0(1,12)\n\ +- LTR 1,1\n\ +- JE .L22\n\ +- BASR 14,1\n\ +-.L22:\n\ +-#APP\n\ +- .align 4,0x07\n\ +- END_INIT\n\ +-\n\ +-/*@_init_PROLOG_ENDS*/\n\ +-\n\ +-/*@_init_EPILOG_BEGINS*/\n\ +- .align 4\n\ +- .section .init\n\ +-#NO_APP\n\ +- .align 4\n\ +- L 4,152(15)\n\ +- LM 6,15,120(15)\n\ +- BR 4\n\ +-#APP\n\ +- END_INIT\n\ +-\n\ +-/*@_init_EPILOG_ENDS*/\n\ +-\n\ +-/*@_fini_PROLOG_BEGINS*/\n\ +- .section .fini\n\ +-#NO_APP\n\ +- .align 4\n\ +-.globl _fini\n\ +- .type _fini,@function\n\ +-_fini:\n\ +-# leaf function 0\n\ +-# automatics 0\n\ +-# outgoing args 0\n\ +-# need frame pointer 0\n\ +-# call alloca 0\n\ +-# has varargs 0\n\ +-# incoming args (stack) 0\n\ +-# function length 30\n\ +- STM 6,15,24(15)\n\ +- BRAS 13,.LTN2_0\n\ +-.LT2_0:\n\ +-.LC17:\n\ +- .long _GLOBAL_OFFSET_TABLE_-.LT2_0\n\ +-.LTN2_0:\n\ +- LR 1,15\n\ +- AHI 15,-96\n\ +- ST 1,0(15)\n\ +- L 12,.LC17-.LT2_0(13)\n\ +- AR 12,13\n\ +-#APP\n\ +- .align 4,0x07\n\ +- END_FINI\n\ +-\n\ +-/*@_fini_PROLOG_ENDS*/\n\ +-\n\ +-/*@_fini_EPILOG_BEGINS*/\n\ +- .align 4\n\ +- .section .fini\n\ +-#NO_APP\n\ +- .align 4\n\ +- L 4,152(15)\n\ +- LM 6,15,120(15)\n\ +- BR 4\n\ +-#APP\n\ +- END_FINI\n\ +-\n\ +-/*@_fini_EPILOG_ENDS*/\n\ +-\n\ +-/*@TRAILER_BEGINS*/\ +-"); +diff --git a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h b/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h +deleted file mode 100644 +index 2431129..0000000 +--- a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h ++++ /dev/null +@@ -1,136 +0,0 @@ +-/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- Contributed by Jakub Jelinek <jakub@redhat.com>, 2003. +- +- The GNU C Library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Lesser General Public +- License as published by the Free Software Foundation; either +- version 2.1 of the License, or (at your option) any later version. +- +- The GNU C Library is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- Lesser General Public License for more details. +- +- You should have received a copy of the GNU Lesser General Public +- License along with the GNU C Library; if not, see +- <http://www.gnu.org/licenses/>. */ +- +-#include <sysdep.h> +-#include <tls.h> +-#ifndef __ASSEMBLER__ +-# include <linuxthreads/internals.h> +-#endif +- +-#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt +- +-# if !defined NOT_IN_libc || defined IS_IN_libpthread +- +-# define PSEUDO_CANCEL(name, syscall_name, args) \ +-L(pseudo_cancel): \ +- STM_##args \ +- stm %r12,%r15,48(%r15); \ +- lr %r14,%r15; \ +- ahi %r15,-96; \ +- st %r14,0(%r15); \ +- basr %r13,0; \ +-0: l %r1,1f-0b(%r13); \ +- bas %r14,0(%r1,%r13); \ +- lr %r0,%r2; \ +- LM_##args \ +- DO_CALL(syscall_name, args); \ +- l %r1,2f-0b(%r13); \ +- lr %r12,%r2; \ +- lr %r2,%r0; \ +- bas %r14,0(%r1,%r13); \ +- lr %r2,%r12; \ +- lm %r12,%r15,48+96(%r15); \ +- j L(pseudo_check); \ +-1: .long CENABLE-0b; \ +-2: .long CDISABLE-0b; +- +-# else /* !libc.so && !libpthread.so */ +- +-# define PSEUDO_CANCEL(name, syscall_name, args) \ +-L(pseudo_cancel): \ +- STM_##args \ +- stm %r11,%r15,44(%r15); \ +- lr %r14,%r15; \ +- ahi %r15,-96; \ +- st %r14,0(%r15); \ +- basr %r13,0; \ +-0: l %r12,3f-0b(%r13); \ +- l %r1,1f-0b(%r13); \ +- la %r12,0(%r12,%r13); \ +- bas %r14,0(%r1,%r13); \ +- lr %r0,%r2; \ +- LM_##args \ +- DO_CALL(syscall_name, args); \ +- l %r1,2f-0b(%r13); \ +- lr %r11,%r2; \ +- lr %r2,%r0; \ +- bas %r14,0(%r1,%r13); \ +- lr %r2,%r11; \ +- lm %r11,%r15,44+96(%r15); \ +- j L(pseudo_check); \ +-1: .long CENABLE@PLT-0b; \ +-2: .long CDISABLE@PLT-0b; \ +-3: .long _GLOBAL_OFFSET_TABLE_-0b; +- +-# endif +- +-# undef PSEUDO +-# define PSEUDO(name, syscall_name, args) \ +- .text; \ +-PSEUDO_CANCEL(name, syscall_name, args) \ +-ENTRY(name) \ +- SINGLE_THREAD_P(%r1) \ +- jne L(pseudo_cancel); \ +- DO_CALL(syscall_name, args); \ +-L(pseudo_check): \ +- lhi %r4,-4095; \ +- clr %r2,%r4; \ +- jnl SYSCALL_ERROR_LABEL; \ +-L(pseudo_end): +- +-# ifdef IS_IN_libpthread +-# define CENABLE __pthread_enable_asynccancel +-# define CDISABLE __pthread_disable_asynccancel +-# elif !defined NOT_IN_libc +-# define CENABLE __libc_enable_asynccancel +-# define CDISABLE __libc_disable_asynccancel +-# else +-# define CENABLE __librt_enable_asynccancel +-# define CDISABLE __librt_disable_asynccancel +-# endif +- +-#define STM_0 /* Nothing */ +-#define STM_1 st %r2,8(%r15); +-#define STM_2 stm %r2,%r3,8(%r15); +-#define STM_3 stm %r2,%r4,8(%r15); +-#define STM_4 stm %r2,%r5,8(%r15); +-#define STM_5 stm %r2,%r5,8(%r15); +- +-#define LM_0 /* Nothing */ +-#define LM_1 l %r2,8+96(%r15); +-#define LM_2 lm %r2,%r3,8+96(%r15); +-#define LM_3 lm %r2,%r4,8+96(%r15); +-#define LM_4 lm %r2,%r5,8+96(%r15); +-#define LM_5 lm %r2,%r5,8+96(%r15); +- +-# ifndef __ASSEMBLER__ +-# define SINGLE_THREAD_P \ +- __builtin_expect (THREAD_GETMEM (THREAD_SELF, \ +- p_header.data.multiple_threads) == 0, 1) +-# else +-# define SINGLE_THREAD_P(reg) \ +- ear reg,%a0; \ +- icm reg,15,MULTIPLE_THREADS_OFFSET(reg); +-# endif +- +-#elif !defined __ASSEMBLER__ +- +-/* This code should never be used but we define it anyhow. */ +-# define SINGLE_THREAD_P (1) +- +-#endif +diff --git a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/vfork.S b/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/vfork.S +deleted file mode 100644 +index 078c730..0000000 +--- a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/vfork.S ++++ /dev/null +@@ -1,68 +0,0 @@ +-/* Copyright (C) 2003 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- Contributed by Martin Schwidefsky <schwidefsky@de.ibm.com> +- +- The GNU C Library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Lesser General Public +- License as published by the Free Software Foundation; either +- version 2.1 of the License, or (at your option) any later version. +- +- The GNU C Library is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- Lesser General Public License for more details. +- +- You should have received a copy of the GNU Lesser General Public +- License along with the GNU C Library; if not, see +- <http://www.gnu.org/licenses/>. */ +- +-#include <sysdep-cancel.h> +-#define _ERRNO_H 1 +-#include <bits/errno.h> +- +-/* Clone the calling process, but without copying the whole address space. +- The calling process is suspended until the new process exits or is +- replaced by a call to `execve'. Return -1 for errors, 0 to the new process, +- and the process ID of the new process to the old process. */ +- +-ENTRY (__vfork) +- basr %r1,0 +-0: +-#ifdef SHARED +- al %r1,4f-0b(%r1) +- l %r1,0(%r1) +- ltr %r1,%r1 +-#else +- icm %r1,15,4f-0b(%r1) +-#endif +- jne 1f +- +- /* Do vfork system call. */ +- svc SYS_ify (vfork) +- +- /* Check for error. */ +- lhi %r4,-4095 +- clr %r2,%r4 +- jnl SYSCALL_ERROR_LABEL +- +- /* Normal return. */ +- br %r14 +-1: +- basr %r1,0 +-2: +- al %r1,3f-2b(%r1) +- br %r1 +-3: +- .long HIDDEN_JUMPTARGET(fork)-2b +-4: +-#ifdef SHARED +- .long __libc_pthread_functions-0b +-#else +- .weak pthread_create +- .long pthread_create +-#endif +-PSEUDO_END(__vfork) +- +-libc_hidden_def (__vfork) +- +-weak_alias (__vfork, vfork) +diff --git a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c b/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c +deleted file mode 100644 +index 136ce54..0000000 +--- a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c ++++ /dev/null +@@ -1,136 +0,0 @@ +-/* Special .init and .fini section support for 64 bit S/390. +- Copyright (C) 2001 Free Software Foundation, Inc. +- Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). +- This file is part of the GNU C Library. +- +- The GNU C Library is free software; you can redistribute it +- and/or modify it under the terms of the GNU Lesser General Public +- License as published by the Free Software Foundation; either +- version 2.1 of the License, or (at your option) any later version. +- +- In addition to the permissions in the GNU Lesser General Public +- License, the Free Software Foundation gives you unlimited +- permission to link the compiled version of this file with other +- programs, and to distribute those programs without any restriction +- coming from the use of this file. (The Lesser General Public +- License restrictions do apply in other respects; for example, they +- cover modification of the file, and distribution when not linked +- into another program.) +- +- 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; see the file COPYING.LIB. If not, +- see <http://www.gnu.org/licenses/>. */ +- +-/* This file is compiled into assembly code which is then munged by a sed +- script into two files: crti.s and crtn.s. +- +- * crti.s puts a function prologue at the beginning of the +- .init and .fini sections and defines global symbols for +- those addresses, so they can be called as functions. +- +- * crtn.s puts the corresponding function epilogues +- in the .init and .fini sections. */ +- +-__asm__ ("\ +-\n\ +-#include \"defs.h\"\n\ +-\n\ +-/*@HEADER_ENDS*/\n\ +-\n\ +-/*@TESTS_BEGIN*/\n\ +-\n\ +-/*@TESTS_END*/\n\ +-\n\ +-/*@_init_PROLOG_BEGINS*/\n\ +-\n\ +- .section .init\n\ +-#NO_APP\n\ +- .align 4\n\ +-.globl _init\n\ +- .type _init,@function\n\ +-_init:\n\ +-# leaf function 0\n\ +-# automatics 0\n\ +-# outgoing args 0\n\ +-# need frame pointer 0\n\ +-# call alloca 0\n\ +-# has varargs 0\n\ +-# incoming args (stack) 0\n\ +-# function length 36\n\ +- STMG 6,15,48(15)\n\ +- LGR 1,15\n\ +- AGHI 15,-160\n\ +- STG 1,0(15)\n\ +- LARL 12,_GLOBAL_OFFSET_TABLE_\n\ +- BRASL 14,__pthread_initialize_minimal@PLT\n\ +- LARL 1,__gmon_start__@GOTENT\n\ +- LG 1,0(1)\n\ +- LTGR 1,1\n\ +- JE .L22\n\ +- BASR 14,1\n\ +-.L22:\n\ +-#APP\n\ +- .align 4,0x07\n\ +- END_INIT\n\ +-\n\ +-/*@_init_PROLOG_ENDS*/\n\ +-\n\ +-/*@_init_EPILOG_BEGINS*/\n\ +- .align 4\n\ +- .section .init\n\ +-#NO_APP\n\ +- .align 4\n\ +- LG 4,272(15)\n\ +- LMG 6,15,208(15)\n\ +- BR 4\n\ +-#APP\n\ +- END_INIT\n\ +-\n\ +-/*@_init_EPILOG_ENDS*/\n\ +-\n\ +-/*@_fini_PROLOG_BEGINS*/\n\ +- .section .fini\n\ +-#NO_APP\n\ +- .align 4\n\ +-.globl _fini\n\ +- .type _fini,@function\n\ +-_fini:\n\ +-# leaf function 0\n\ +-# automatics 0\n\ +-# outgoing args 0\n\ +-# need frame pointer 0\n\ +-# call alloca 0\n\ +-# has varargs 0\n\ +-# incoming args (stack) 0\n\ +-# function length 30\n\ +- STMG 6,15,48(15)\n\ +- LGR 1,15\n\ +- AGHI 15,-160\n\ +- STG 1,0(15)\n\ +- LARL 12,_GLOBAL_OFFSET_TABLE_\n\ +-#APP\n\ +- .align 4,0x07\n\ +- END_FINI\n\ +-\n\ +-/*@_fini_PROLOG_ENDS*/\n\ +-\n\ +-/*@_fini_EPILOG_BEGINS*/\n\ +- .align 4\n\ +- .section .fini\n\ +-#NO_APP\n\ +- .align 4\n\ +- LG 4,272(15)\n\ +- LMG 6,15,208(15)\n\ +- BR 4\n\ +-#APP\n\ +- END_FINI\n\ +-\n\ +-/*@_fini_EPILOG_ENDS*/\n\ +-\n\ +-/*@TRAILER_BEGINS*/\n\ +- "); +diff --git a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-sigsuspend.c b/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-sigsuspend.c +deleted file mode 100644 +index d57283a..0000000 +--- a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-sigsuspend.c ++++ /dev/null +@@ -1 +0,0 @@ +-#include "../../ia64/pt-sigsuspend.c" +diff --git a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h b/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h +deleted file mode 100644 +index cf3124e..0000000 +--- a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h ++++ /dev/null +@@ -1,115 +0,0 @@ +-/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- Contributed by Jakub Jelinek <jakub@redhat.com>, 2003. +- +- The GNU C Library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Lesser General Public +- License as published by the Free Software Foundation; either +- version 2.1 of the License, or (at your option) any later version. +- +- The GNU C Library is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- Lesser General Public License for more details. +- +- You should have received a copy of the GNU Lesser General Public +- License along with the GNU C Library; if not, see +- <http://www.gnu.org/licenses/>. */ +- +-#include <sysdep.h> +-#include <tls.h> +-#ifndef __ASSEMBLER__ +-# include <linuxthreads/internals.h> +-#endif +- +-#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt +- +-# undef PSEUDO +-# define PSEUDO(name, syscall_name, args) \ +- .text; \ +-L(pseudo_cancel): \ +- STM_##args \ +- stmg %r13,%r15,104(%r15); \ +- lgr %r14,%r15; \ +- aghi %r15,-160; \ +- stg %r14,0(%r15); \ +- brasl %r14,CENABLE; \ +- lgr %r0,%r2; \ +- LM_##args \ +- DO_CALL(syscall_name, args); \ +- lgr %r13,%r2; \ +- lgr %r2,%r0; \ +- brasl %r14,CDISABLE; \ +- lgr %r2,%r13; \ +- lmg %r13,%r15,104+160(%r15); \ +- j L(pseudo_check); \ +-ENTRY(name) \ +- SINGLE_THREAD_P \ +- jne L(pseudo_cancel); \ +- DO_CALL(syscall_name, args); \ +-L(pseudo_check): \ +- lghi %r4,-4095; \ +- clgr %r2,%r4; \ +- jgnl SYSCALL_ERROR_LABEL; \ +-L(pseudo_end): +- +-# ifdef IS_IN_libpthread +-# define CENABLE __pthread_enable_asynccancel +-# define CDISABLE __pthread_disable_asynccancel +-# define __local_multiple_threads __pthread_multiple_threads +-# elif !defined NOT_IN_libc +-# define CENABLE __libc_enable_asynccancel +-# define CDISABLE __libc_disable_asynccancel +-# define __local_multiple_threads __libc_multiple_threads +-# else +-# define CENABLE __librt_enable_asynccancel@PLT +-# define CDISABLE __librt_disable_asynccancel@PLT +-# endif +- +-#define STM_0 /* Nothing */ +-#define STM_1 stg %r2,16(%r15); +-#define STM_2 stmg %r2,%r3,16(%r15); +-#define STM_3 stmg %r2,%r4,16(%r15); +-#define STM_4 stmg %r2,%r5,16(%r15); +-#define STM_5 stmg %r2,%r5,16(%r15); +- +-#define LM_0 /* Nothing */ +-#define LM_1 lg %r2,16+160(%r15); +-#define LM_2 lmg %r2,%r3,16+160(%r15); +-#define LM_3 lmg %r2,%r4,16+160(%r15); +-#define LM_4 lmg %r2,%r5,16+160(%r15); +-#define LM_5 lmg %r2,%r5,16+160(%r15); +- +-# if !defined NOT_IN_libc || defined IS_IN_libpthread +-# ifndef __ASSEMBLER__ +-extern int __local_multiple_threads attribute_hidden; +-# define SINGLE_THREAD_P \ +- __builtin_expect (__local_multiple_threads == 0, 1) +-# else +-# define SINGLE_THREAD_P \ +- larl %r1,__local_multiple_threads; \ +- icm %r0,15,0(%r1); +-# endif +- +-# else +- +-# ifndef __ASSEMBLER__ +-# define SINGLE_THREAD_P \ +- __builtin_expect (THREAD_GETMEM (THREAD_SELF, \ +- p_header.data.multiple_threads) == 0, 1) +-# else +-# define SINGLE_THREAD_P \ +- ear %r1,%a0; \ +- sllg %r1,%r1,32; \ +- ear %r1,%a1; \ +- icm %r1,15,MULTIPLE_THREADS_OFFSET(%r1); +-# endif +- +-# endif +- +-#elif !defined __ASSEMBLER__ +- +-/* This code should never be used but we define it anyhow. */ +-# define SINGLE_THREAD_P (1) +- +-#endif +diff --git a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/vfork.S b/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/vfork.S +deleted file mode 100644 +index 109d4f6..0000000 +--- a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/vfork.S ++++ /dev/null +@@ -1,53 +0,0 @@ +-/* Copyright (C) 2003 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- Contributed by Martin Schwidefsky <schwidefsky@de.ibm.com> +- +- The GNU C Library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Lesser General Public +- License as published by the Free Software Foundation; either +- version 2.1 of the License, or (at your option) any later version. +- +- The GNU C Library is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- Lesser General Public License for more details. +- +- You should have received a copy of the GNU Lesser General Public +- License along with the GNU C Library; if not, see +- <http://www.gnu.org/licenses/>. */ +- +-#include <sysdep-cancel.h> +-#define _ERRNO_H 1 +-#include <bits/errno.h> +- +-/* Clone the calling process, but without copying the whole address space. +- The calling process is suspended until the new process exits or is +- replaced by a call to `execve'. Return -1 for errors, 0 to the new process, +- and the process ID of the new process to the old process. */ +- +-ENTRY (__vfork) +-#ifdef SHARED +- larl %r1,__libc_pthread_functions +- lg %r1,0(%r1) +-#else +- .weak pthread_create +- larl %r1,pthread_create +-#endif +- ltgr %r1,%r1 +- jgne HIDDEN_JUMPTARGET(fork) +- +- /* Do vfork system call. */ +- svc SYS_ify (vfork) +- +- /* Check for error. */ +- lghi %r4,-4095 +- clgr %r2,%r4 +- jgnl SYSCALL_ERROR_LABEL +- +- /* Normal return. */ +- br %r14 +-PSEUDO_END(__vfork) +- +-libc_hidden_def (__vfork) +- +-weak_alias (__vfork, vfork) +-- +1.8.5.2 (Apple Git-48) + |