summaryrefslogtreecommitdiff
path: root/toolchain/uclibc/patches/0.9.34-git
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@openadk.org>2015-03-04 12:56:53 -0600
committerWaldemar Brodkorb <wbx@openadk.org>2015-03-04 12:57:06 -0600
commit12fb25f4f50a76c3d80f1138289e42781082e387 (patch)
tree8cdc60742c7ab315a7008c07c96e66bbc64a575c /toolchain/uclibc/patches/0.9.34-git
parentb3df07cfdadb5c6c1e3d8a998d7417ff53f1a3f2 (diff)
remove git patches for now
Diffstat (limited to 'toolchain/uclibc/patches/0.9.34-git')
-rw-r--r--toolchain/uclibc/patches/0.9.34-git/0001-fix-linuxthreads-for-coldfire-nommu.patch106
-rw-r--r--toolchain/uclibc/patches/0.9.34-git/0001-test-disable-posix_fallocate64-for-small-embedded-sy.patch27
-rw-r--r--toolchain/uclibc/patches/0.9.34-git/0003-linuxthreads-remove-unused-s390-code.patch1347
-rw-r--r--toolchain/uclibc/patches/0.9.34-git/0004-disable-tests-if-HAVE_SHARED-is-not-set.patch51
-rw-r--r--toolchain/uclibc/patches/0.9.34-git/0005-disable-tests-for-arc-as-long-as-binutils-is-buggy.patch28
-rw-r--r--toolchain/uclibc/patches/0.9.34-git/0006-arm-add-RESET_PID-in-the-clone-impl.patch170
-rw-r--r--toolchain/uclibc/patches/0.9.34-git/0007-enable-cancellation-stuff-for-libc_a.patch11
7 files changed, 0 insertions, 1740 deletions
diff --git a/toolchain/uclibc/patches/0.9.34-git/0001-fix-linuxthreads-for-coldfire-nommu.patch b/toolchain/uclibc/patches/0.9.34-git/0001-fix-linuxthreads-for-coldfire-nommu.patch
deleted file mode 100644
index 4f8320c34..000000000
--- a/toolchain/uclibc/patches/0.9.34-git/0001-fix-linuxthreads-for-coldfire-nommu.patch
+++ /dev/null
@@ -1,106 +0,0 @@
-From 45064565100b67ff2f960e93d580449b720a66c9 Mon Sep 17 00:00:00 2001
-From: Waldemar Brodkorb <wbx@openadk.org>
-Date: Sat, 6 Sep 2014 01:52:10 +0200
-Subject: [PATCH] fix linuxthreads for coldfire nommu
-
-Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
----
- libpthread/linuxthreads/sysdeps/m68k/pspinlock.c | 20 +++++++++++++++-----
- libpthread/linuxthreads/sysdeps/m68k/pt-machine.h | 11 +++++++++--
- libpthread/linuxthreads/sysdeps/pthread/herrno-loc.c | 2 ++
- 3 files changed, 26 insertions(+), 7 deletions(-)
-
-diff --git a/libpthread/linuxthreads/sysdeps/m68k/pspinlock.c b/libpthread/linuxthreads/sysdeps/m68k/pspinlock.c
-index c26a278..af77c2a 100644
---- a/libpthread/linuxthreads/sysdeps/m68k/pspinlock.c
-+++ b/libpthread/linuxthreads/sysdeps/m68k/pspinlock.c
-@@ -27,10 +27,15 @@ __pthread_spin_lock (pthread_spinlock_t *lock)
- unsigned int val;
-
- do
-- __asm__ __volatile__ ("tas %1; sne %0"
-- : "=dm" (val), "=m" (*lock)
-- : "m" (*lock)
-- : "cc");
-+ __asm__ __volatile__ (
-+#if !defined(__mcoldfire__) && !defined(__mcf5200__) && !defined(__m68000)
-+ "tas %1; sne %0"
-+#else
-+ "bset #7,%1; sne %0"
-+#endif
-+ : "=dm" (val), "=m" (*lock)
-+ : "m" (*lock)
-+ : "cc");
- while (val);
-
- return 0;
-@@ -43,7 +48,12 @@ __pthread_spin_trylock (pthread_spinlock_t *lock)
- {
- unsigned int val;
-
-- __asm__ __volatile__ ("tas %1; sne %0"
-+ __asm__ __volatile__ (
-+#if !defined(__mcoldfire__) && !defined(__mcf5200__) && !defined(__m68000)
-+ "tas %1; sne %0"
-+#else
-+ "bset #7,%1; sne %0"
-+#endif
- : "=dm" (val), "=m" (*lock)
- : "m" (*lock)
- : "cc");
-diff --git a/libpthread/linuxthreads/sysdeps/m68k/pt-machine.h b/libpthread/linuxthreads/sysdeps/m68k/pt-machine.h
-index e2d7bdc..1eb9fd5 100644
---- a/libpthread/linuxthreads/sysdeps/m68k/pt-machine.h
-+++ b/libpthread/linuxthreads/sysdeps/m68k/pt-machine.h
-@@ -28,12 +28,18 @@
- #endif
-
- /* Spinlock implementation; required. */
-+PT_EI long int testandset (int *spinlock);
- PT_EI long int
- testandset (int *spinlock)
- {
- char ret;
-
-- __asm__ __volatile__("tas %1; sne %0"
-+ __asm__ __volatile__(
-+#if !defined(__mcoldfire__) && !defined(__mcf5200__) && !defined(__m68000)
-+ "tas %1; sne %0"
-+#else
-+ "bset #7,%1; sne %0"
-+#endif
- : "=dm"(ret), "=m"(*spinlock)
- : "m"(*spinlock)
- : "cc");
-@@ -50,6 +56,7 @@ register char * stack_pointer __asm__ ("%sp");
-
- /* Compare-and-swap for semaphores. */
-
-+#if !defined(__mcoldfire__) && !defined(__mcf5200__) && !defined(__mc68000)
- #define HAS_COMPARE_AND_SWAP
- PT_EI int
- __compare_and_swap (long int *p, long int oldval, long int newval)
-@@ -63,5 +70,5 @@ __compare_and_swap (long int *p, long int oldval, long int newval)
-
- return ret;
- }
--
-+#endif
- #endif /* pt-machine.h */
-diff --git a/libpthread/linuxthreads/sysdeps/pthread/herrno-loc.c b/libpthread/linuxthreads/sysdeps/pthread/herrno-loc.c
-index 706faef..634c752 100644
---- a/libpthread/linuxthreads/sysdeps/pthread/herrno-loc.c
-+++ b/libpthread/linuxthreads/sysdeps/pthread/herrno-loc.c
-@@ -16,7 +16,9 @@
- <http://www.gnu.org/licenses/>. */
-
- #include <netdb.h>
-+#ifdef __UCLIBC_HAS_TLS__
- #include <tls.h>
-+#endif
- #include <linuxthreads/internals.h>
- #include <sysdep-cancel.h>
-
---
-2.0.1
-
diff --git a/toolchain/uclibc/patches/0.9.34-git/0001-test-disable-posix_fallocate64-for-small-embedded-sy.patch b/toolchain/uclibc/patches/0.9.34-git/0001-test-disable-posix_fallocate64-for-small-embedded-sy.patch
deleted file mode 100644
index 7b635f799..000000000
--- a/toolchain/uclibc/patches/0.9.34-git/0001-test-disable-posix_fallocate64-for-small-embedded-sy.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 943ef39519a3a4aa514f1fe9431565bf691f01f2 Mon Sep 17 00:00:00 2001
-From: Waldemar Brodkorb <wbx@openadk.org>
-Date: Mon, 1 Sep 2014 21:02:19 +0200
-Subject: [PATCH 1/6] test: disable posix_fallocate64 for small embedded
- systems
-
-Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
----
- test/unistd/Makefile.in | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/test/unistd/Makefile.in b/test/unistd/Makefile.in
-index ed33d9a..c884a39 100644
---- a/test/unistd/Makefile.in
-+++ b/test/unistd/Makefile.in
-@@ -25,6 +25,8 @@ else
- # reordering is not supported, behaves as if POSIXLY_CORRECT would be set
- OPTS_tstgetopt := -a -b -cfoobar --required foobar --optional=bazbug --none --colou --color --colour random
- endif
-+# for embedded systems 4 GB disk space is not available
-+TESTS_DISABLED += tst-posix_fallocate64
-
- # getconf.c lives in utils/
- # Testsuite cannot currently be built with O= anyway, so hardcode path here
---
-1.8.5.2 (Apple Git-48)
-
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
deleted file mode 100644
index b5712393d..000000000
--- a/toolchain/uclibc/patches/0.9.34-git/0003-linuxthreads-remove-unused-s390-code.patch
+++ /dev/null
@@ -1,1347 +0,0 @@
-From 0072d1730591edbbcee79f93d54b66ffbd57a02b 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)
-
diff --git a/toolchain/uclibc/patches/0.9.34-git/0004-disable-tests-if-HAVE_SHARED-is-not-set.patch b/toolchain/uclibc/patches/0.9.34-git/0004-disable-tests-if-HAVE_SHARED-is-not-set.patch
deleted file mode 100644
index 2f008929f..000000000
--- a/toolchain/uclibc/patches/0.9.34-git/0004-disable-tests-if-HAVE_SHARED-is-not-set.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 743a46b7b12f07065465d9e49729043cf6f00394 Mon Sep 17 00:00:00 2001
-From: Waldemar Brodkorb <wbx@openadk.org>
-Date: Sun, 7 Sep 2014 16:38:14 +0200
-Subject: [PATCH 4/6] disable tests if HAVE_SHARED is not set
-
-Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
----
- test/nptl/Makefile.in | 12 ++++++------
- 1 file changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/test/nptl/Makefile.in b/test/nptl/Makefile.in
-index dd53f91..d20d2c1 100644
---- a/test/nptl/Makefile.in
-+++ b/test/nptl/Makefile.in
-@@ -38,11 +38,10 @@ TESTS := tst-align tst-align2 tst-atfork1 tst-attr1 tst-attr2 tst-attr3 \
- tst-cancelx12 tst-cancelx13 tst-cancelx14 tst-cancelx15 tst-cancelx16 \
- tst-cancelx18 tst-cancelx20 tst-cancelx21 tst-cleanupx0 tst-cleanupx1 \
- tst-cleanupx2 tst-cleanupx3 tst-cleanupx4 tst-cond22 tst-cond23 \
-- tst-dlsym1 tst-getpid1 tst-getpid2 tst-getpid3 tst-join6 tst-tsd6 \
-+ tst-getpid1 tst-getpid2 tst-getpid3 tst-join6 tst-tsd6 \
- tst-oddstacklimit tst-oncex3 tst-oncex4 tst-rwlock2a \
-- tst-basic7 tst-fini1 tst-signal7 \
-- tst-unload tst-vfork1x tst-vfork2x tst-sem10 tst-sem11 tst-sem12 \
-- tst-typesizes tst-initializers1-c89 tst-initializers1-c99 \
-+ tst-basic7 tst-signal7 tst-vfork1x tst-vfork2x tst-sem10 tst-sem11 \
-+ tst-sem12 tst-typesizes tst-initializers1-c89 tst-initializers1-c99 \
- tst-initializers1-gnu89 tst-initializers1-gnu99
-
- #
-@@ -68,7 +67,8 @@ GLIBC_TESTS_DISABLED := tst-eintr1_glibc tst-eintr2_glibc \
-
-
- ifeq ($(HAVE_SHARED),)
--TESTS_DISABLED += tst-tls3 tst-tls4 tst-tls5
-+TESTS_DISABLED += tst-tls3 tst-tls4 tst-tls5 tst-dlsym1 tst-fini1 \
-+ tst-unload
- else
- GLIBC_TESTS_DISABLED += tst-tls3_glibc tst-tls4_glibc tst-tls5_glibc
- endif
-@@ -109,7 +109,7 @@ LDFLAGS_tst-rwlock14 = -lrt
- LDFLAGS_tst-fini1 = -Wl,-rpath=./ tst-fini1mod.so
- LDFLAGS_tst-fini1mod.so = -Wl,-soname=tst-fini1mod.so
- LDFLAGS_tst-unload = -ldl
--LDFLAGS_tst-cancel5 := -lpthread -lpthread_nonshared
-+LDFLAGS_tst-cancel5 := -lpthread
- LDFLAGS_tst-cancel23 := -lc -lpthread
- LDFLAGS_tst-vfork1x := -lc -lpthread
- LDFLAGS_tst-vfork2x := -lc -lpthread
---
-1.8.5.2 (Apple Git-48)
-
diff --git a/toolchain/uclibc/patches/0.9.34-git/0005-disable-tests-for-arc-as-long-as-binutils-is-buggy.patch b/toolchain/uclibc/patches/0.9.34-git/0005-disable-tests-for-arc-as-long-as-binutils-is-buggy.patch
deleted file mode 100644
index b7af276fc..000000000
--- a/toolchain/uclibc/patches/0.9.34-git/0005-disable-tests-for-arc-as-long-as-binutils-is-buggy.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From b46e40edc326638336adc91ccc2aad74c94c764b Mon Sep 17 00:00:00 2001
-From: Waldemar Brodkorb <wbx@openadk.org>
-Date: Tue, 9 Sep 2014 18:40:22 +0200
-Subject: [PATCH 5/6] disable tests for arc as long as binutils is buggy
-
-Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
----
- test/tls/Makefile.in | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/test/tls/Makefile.in b/test/tls/Makefile.in
-index 7ab4e2a..0a98337 100644
---- a/test/tls/Makefile.in
-+++ b/test/tls/Makefile.in
-@@ -12,6 +12,10 @@ ifeq ($(HAVE_SHARED),)
- TESTS_DISABLED := $(TESTS)
- endif
-
-+ifeq ($(TARGET_ARCH),arc)
-+TESTS_DISABLED += tst-tls12 tst-tls-at-ctor
-+endif
-+
- # All these tests need tls.h, which is not installed with glibc
- GLIBC_TESTS_DISABLED := $(addsuffix _glibc,$(filter-out $(TESTS_DISABLED),$(TESTS)))
-
---
-1.8.5.2 (Apple Git-48)
-
diff --git a/toolchain/uclibc/patches/0.9.34-git/0006-arm-add-RESET_PID-in-the-clone-impl.patch b/toolchain/uclibc/patches/0.9.34-git/0006-arm-add-RESET_PID-in-the-clone-impl.patch
deleted file mode 100644
index 1c746dd08..000000000
--- a/toolchain/uclibc/patches/0.9.34-git/0006-arm-add-RESET_PID-in-the-clone-impl.patch
+++ /dev/null
@@ -1,170 +0,0 @@
-From 60f9eaa155d0f7ff935da37ecdf253c5c744a3ce Mon Sep 17 00:00:00 2001
-From: Wang Yufen <wangyufen@huawei.com>
-Date: Fri, 5 Sep 2014 15:19:21 +0800
-Subject: [PATCH 6/6] arm: add RESET_PID in the clone impl
-
-Called getpid() When creating a new process with clone(), getpid() returns
-the father_process's value. It should be child_process's value.
-The reason is missing a RESET_PID in the arm clone impl.
-
-Signed-off-by: Wang Yufen <wangyufen@huawei.com>
-Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
----
- libc/sysdeps/linux/arm/clone.S | 61 +++++++++++++++++++++++++++++++----------
- libc/sysdeps/linux/arm/sysdep.h | 36 ++++++++++++++++++++++++
- 2 files changed, 83 insertions(+), 14 deletions(-)
-
-diff --git a/libc/sysdeps/linux/arm/clone.S b/libc/sysdeps/linux/arm/clone.S
-index 03cd10e..29045ef 100644
---- a/libc/sysdeps/linux/arm/clone.S
-+++ b/libc/sysdeps/linux/arm/clone.S
-@@ -19,12 +19,17 @@
- /* clone() is even more special than fork() as it mucks with stacks
- and invokes a function in the right context after its all over. */
-
-+#include <sysdep.h>
- #define _ERRNO_H
- #include <features.h>
- #include <bits/errno.h>
- #include <sys/syscall.h>
- #include <bits/arm_asm.h>
- #include <bits/arm_bx.h>
-+#include <sysdep-cancel.h>
-+
-+#define CLONE_VM 0x00000100
-+#define CLONE_THREAD 0x00010000
-
- #if defined(__NR_clone)
- /* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg); */
-@@ -87,6 +92,8 @@ __error:
- .pool
- #else
- __clone:
-+.fnstart
-+.cantunwind
- @ sanity check args
- cmp r0, #0
- IT(te, ne)
-@@ -95,32 +102,58 @@ __clone:
- beq __error
-
- @ insert the args onto the new stack
-- sub r1, r1, #8
-- str r3, [r1, #4]
-- @ save the function pointer as the 0th element
-- str r0, [r1]
-+ str r3, [r1, #-4]!
-+ str r0, [r1, #-4]!
-
- @ do the system call
- @ get flags
- mov r0, r2
-+#ifdef RESET_PID
-+ mov ip, r2
-+#endif
- @ new sp is already in r1
-- @ load remaining arguments off the stack
-- stmfd sp!, {r4}
-- ldr r2, [sp, #4]
-- ldr r3, [sp, #8]
-- ldr r4, [sp, #12]
-- DO_CALL (clone)
-- movs a1, a1
-- IT(t, ne)
-- ldmnefd sp!, {r4}
-+ push {r4, r7}
-+ cfi_adjust_cfa_offset (8)
-+ cfi_rel_offset (r4, 0)
-+ cfi_rel_offset (r7, 4)
-+ ldr r2, [sp, #8]
-+ ldr r3, [sp, #12]
-+ ldr r4, [sp, #16]
-+ ldr r7, =SYS_ify(clone)
-+ swi 0x0
-+ cfi_endproc
-+ cmp r0, #0
-+ beq 1f
-+ pop {r4, r7}
- blt __error
-- IT(t, ne)
- #if defined(__USE_BX__)
- bxne lr
- #else
- movne pc, lr
- #endif
-
-+ cfi_startproc
-+.fnend
-+PSEUDO_END (__clone)
-+
-+1:
-+ .fnstart
-+ .cantunwind
-+#ifdef RESET_PID
-+ tst ip, #CLONE_THREAD
-+ bne 3f
-+ GET_TLS (lr)
-+ mov r1, r0
-+ tst ip, #CLONE_VM
-+ ldr r7, =SYS_ify(getpid)
-+ ite ne
-+ movne r0, #-1
-+ swieq 0x0
-+ NEGOFF_ADJ_BASE (r1, TID_OFFSET)
-+ str r0, NEGOFF_OFF1 (r1, TID_OFFSET)
-+ str r0, NEGOFF_OFF2 (r1, PID_OFFSET, TID_OFFSET)
-+3:
-+#endif
- @ pick the function arg and call address off the stack and execute
- ldr r0, [sp, #4]
- mov lr, pc
-diff --git a/libc/sysdeps/linux/arm/sysdep.h b/libc/sysdeps/linux/arm/sysdep.h
-index 64f4040..2d0a9cc 100644
---- a/libc/sysdeps/linux/arm/sysdep.h
-+++ b/libc/sysdeps/linux/arm/sysdep.h
-@@ -213,6 +213,42 @@ __local_syscall_error: \
- sees the right arguments.
-
- */
-+#if __ARM_ARCH > 6 || defined (__ARM_ARCH_6K__) || defined (__ARM_ARCH_6ZK__)
-+# define ARCH_HAS_HARD_TP
-+#endif
-+
-+# ifdef __thumb2__
-+# define NEGOFF_ADJ_BASE(R, OFF) add R, R, $OFF
-+# define NEGOFF_ADJ_BASE2(D, S, OFF) add D, S, $OFF
-+# define NEGOFF_OFF1(R, OFF) [R]
-+# define NEGOFF_OFF2(R, OFFA, OFFB) [R, $((OFFA) - (OFFB))]
-+# else
-+# define NEGOFF_ADJ_BASE(R, OFF)
-+# define NEGOFF_ADJ_BASE2(D, S, OFF) mov D, S
-+# define NEGOFF_OFF1(R, OFF) [R, $OFF]
-+# define NEGOFF_OFF2(R, OFFA, OFFB) [R, $OFFA]
-+# endif
-+
-+# ifdef ARCH_HAS_HARD_TP
-+/* If the cpu has cp15 available, use it. */
-+# define GET_TLS(TMP) mrc p15, 0, r0, c13, c0, 3
-+# else
-+/* At this generic level we have no tricks to pull. Call the ABI routine. */
-+# define GET_TLS(TMP) \
-+ push { r1, r2, r3, lr }; \
-+ cfi_remember_state; \
-+ cfi_adjust_cfa_offset (16); \
-+ cfi_rel_offset (r1, 0); \
-+ cfi_rel_offset (r2, 4); \
-+ cfi_rel_offset (r3, 8); \
-+ cfi_rel_offset (lr, 12); \
-+ bl __aeabi_read_tp; \
-+ pop { r1, r2, r3, lr }; \
-+ cfi_restore_state
-+# endif /* ARCH_HAS_HARD_TP */
-+
-+
-+
-
- #undef DO_CALL
- #if defined(__ARM_EABI__)
---
-1.8.5.2 (Apple Git-48)
-
diff --git a/toolchain/uclibc/patches/0.9.34-git/0007-enable-cancellation-stuff-for-libc_a.patch b/toolchain/uclibc/patches/0.9.34-git/0007-enable-cancellation-stuff-for-libc_a.patch
deleted file mode 100644
index 92b532b63..000000000
--- a/toolchain/uclibc/patches/0.9.34-git/0007-enable-cancellation-stuff-for-libc_a.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/libpthread/linuxthreads/Makefile.in.orig 2014-09-27 23:26:40.000000000 +0200
-+++ b/libpthread/linuxthreads/Makefile.in 2014-09-27 23:27:12.000000000 +0200
-@@ -65,7 +65,7 @@ CFLAGS-OMIT-libc_pthread_init.c := $(CFL
- libpthread_libc_CSRC := \
- forward.c libc-cancellation.c libc_pthread_init.c # alloca_cutoff.c
- libpthread_libc_OBJ := $(patsubst %.c, $(libpthread_OUT)/%.o,$(libpthread_libc_CSRC))
--libc-static-y += $(libpthread_OUT)/libc_pthread_init.o
-+libc-static-y += $(libpthread_OUT)/libc_pthread_init.o $(libpthread_OUT)/libc-cancellation.o
- libc-shared-y += $(libpthread_libc_OBJ:.o=.oS)
-
- libpthread-static-y += $(patsubst %,$(libpthread_OUT)/%.o,$(libpthread_static_SRC))