diff options
author | Guy Martin <gmsoft@gentoo.org> | 2003-11-18 22:32:35 +0000 |
---|---|---|
committer | Guy Martin <gmsoft@gentoo.org> | 2003-11-18 22:32:35 +0000 |
commit | 71764a79c7225e192b29612dec437b905ec48c5d (patch) | |
tree | 05fa369d4111e27cc1f8f8fb87ed2f36d5b1cd53 /sys-libs | |
parent | Many changes for hppa only. (diff) | |
download | gentoo-2-71764a79c7225e192b29612dec437b905ec48c5d.tar.gz gentoo-2-71764a79c7225e192b29612dec437b905ec48c5d.tar.bz2 gentoo-2-71764a79c7225e192b29612dec437b905ec48c5d.zip |
Many changes for hppa only.
Diffstat (limited to 'sys-libs')
27 files changed, 631 insertions, 1652 deletions
diff --git a/sys-libs/glibc/ChangeLog b/sys-libs/glibc/ChangeLog index 42f80117f01c..c5e4e2d2535e 100644 --- a/sys-libs/glibc/ChangeLog +++ b/sys-libs/glibc/ChangeLog @@ -1,9 +1,12 @@ # ChangeLog for sys-libs/glibc # Copyright 2002-2003 Gentoo Technologies, Inc.; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/ChangeLog,v 1.104 2003/11/18 19:04:15 azarah Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/ChangeLog,v 1.105 2003/11/18 22:32:28 gmsoft Exp $ *glibc-2.3.2-r9 (18 Nov 2003) + 18 Nov 2003; Guy Martin <gmsoft@gentoo.org> glibc-2.3.2-r9.ebuild : + Removed hppa stuff. New patching method should come shortly. + 18 Nov 2003; Martin Schlemmer <azarah@gentoo.org> glibc-2.3.2-r9.ebuild: - Update CVS branch to 20031115. - With latest versions of glibc, a lot of apps failed on a PaX enabled @@ -65,6 +68,9 @@ *glibc-2.3.2-r8 (26 Oct 2003) + 18 Nov 2003; Guy Martin <gmsoft@gentoo.org> glibc-2.3.2-r8.ebuild : + Marked -hppa and removed hppa stuff from it. + 26 Oct 2003; Martin Schlemmer <azarah@gentoo.org> glibc-2.3.2-r8.ebuild: Update snapshot. @@ -88,6 +94,10 @@ *glibc-2.3.2-r7 (14 Oct 2003) + 18 Nov 2003; Guy Martin <gmsoft@gentoo.org> glibc-2.3.2-r7.ebuild : + Readded for hppa only. Added hppa patches and depend to correct + hppa-headers. + 14 Oct 2003; Martin Schlemmer <azarah@gentoo.org> glibc-2.3.2-r7.ebuild: Update CVS snapshot. NPTL is now in official CVS. diff --git a/sys-libs/glibc/Manifest b/sys-libs/glibc/Manifest index f1803eeae07b..55f98c79f757 100644 --- a/sys-libs/glibc/Manifest +++ b/sys-libs/glibc/Manifest @@ -1,11 +1,11 @@ -MD5 4830a9acb500713822417be540796497 ChangeLog 22751 +MD5 e37a3d6790b8003dc9d127402bf26455 ChangeLog 22751 MD5 8ed2bf1fdf0fa74a7a40ac1bbf9b1786 glibc-2.2.5-r9.ebuild 10003 MD5 4dd6a7760b1e06c798d72a1f22d49729 glibc-2.3.1-r5.ebuild 10876 MD5 2d20c306db480448c6f63e56b5982b79 glibc-2.3.2-r2.ebuild 17907 MD5 886f5f85437a7bdc2b093a8be503eab7 glibc-2.3.2-r3.ebuild 17301 -MD5 99dfde4f35edad93266183598c6d0848 glibc-2.3.2-r8.ebuild 17049 -MD5 64cfc82cd395fe839bcfa51e6fcf0df2 glibc-2.3.2-r9.ebuild 17879 -MD5 6af6490e1fecb50dd343fcdd7d7bbfca glibc-2.3.2-r7.ebuild 17534 +MD5 68d1760ff9a4410a4fd159b3de9cb4a5 glibc-2.3.2-r8.ebuild 17047 +MD5 18ff9c47b0e5ea4e6773d5f9ed415a1e glibc-2.3.2-r9.ebuild 17879 +MD5 65977bc9b5b39132c8ab41f7b826a094 glibc-2.3.2-r7.ebuild 17534 MD5 439cce38dd07f6669b9bb50f0c211b41 files/digest-glibc-2.3.1-r5 141 MD5 3c4500d97857f0613d408e7eaa930ec1 files/digest-glibc-2.3.2-r2 234 MD5 de2c0b99eb3ade6241c28111b734f95c files/digest-glibc-2.3.2-r7 312 diff --git a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-00-pthreads.patch b/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-00-pthreads.patch deleted file mode 100644 index 1d38acbc647a..000000000000 --- a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-00-pthreads.patch +++ /dev/null @@ -1,221 +0,0 @@ -diff -urN glibc-2.3.1.orig/linuxthreads/descr.h glibc-2.3.1/linuxthreads/descr.h ---- glibc-2.3.1.orig/linuxthreads/descr.h 2003-01-15 12:58:11.000000000 -0500 -+++ glibc-2.3.1/linuxthreads/descr.h 2003-01-15 18:24:36.000000000 -0500 -@@ -70,7 +70,7 @@ - /* Atomic counter made possible by compare_and_swap */ - struct pthread_atomic { - long p_count; -- int p_spinlock; -+ __atomic_lock_t p_spinlock; - }; - - -diff -urN glibc-2.3.1.orig/linuxthreads/pt-machine.c glibc-2.3.1/linuxthreads/pt-machine.c ---- glibc-2.3.1.orig/linuxthreads/pt-machine.c 2002-08-26 18:39:45.000000000 -0400 -+++ glibc-2.3.1/linuxthreads/pt-machine.c 2003-01-15 18:24:36.000000000 -0500 -@@ -19,7 +19,9 @@ - - #define PT_EI - --extern long int testandset (int *spinlock); -+#include <pthread.h> -+ -+extern long int testandset (__atomic_lock_t *spinlock); - extern int __compare_and_swap (long int *p, long int oldval, long int newval); - - #include <pt-machine.h> -diff -u -p -r1.131 pthread.c ---- libc/linuxthreads/pthread.c 23 Sep 2003 04:33:01 -0000 1.131 -+++ libc/linuxthreads/pthread.c 6 Oct 2003 14:48:18 -0000 -@@ -300,9 +300,9 @@ __pthread_initialize_minimal(void) - pthread_descr self; - - /* First of all init __pthread_handles[0] and [1] if needed. */ --# if __LT_SPINLOCK_INIT != 0 -- __pthread_handles[0].h_lock = __LOCK_INITIALIZER; -- __pthread_handles[1].h_lock = __LOCK_INITIALIZER; -+# ifdef __LT_INITIALIZER_NOT_ZERO -+ __pthread_handles[0].h_lock = __LOCK_ALT_INITIALIZER; -+ __pthread_handles[1].h_lock = __LOCK_ALT_INITIALIZER; - # endif - # ifndef SHARED - /* Unlike in the dynamically linked case the dynamic linker has not -@@ -370,7 +370,7 @@ cannot allocate TLS data structures for - # endif - /* self->p_start_args need not be initialized, it's all zero. */ - self->p_userstack = 1; --# if __LT_SPINLOCK_INIT != 0 -+# ifdef __LT_INITIALIZER_NOT_ZERO - self->p_resume_count = (struct pthread_atomic) __ATOMIC_INITIALIZER; - # endif - self->p_alloca_cutoff = __MAX_ALLOCA_CUTOFF; -@@ -384,9 +384,9 @@ cannot allocate TLS data structures for - #else /* USE_TLS */ - - /* First of all init __pthread_handles[0] and [1]. */ --# if __LT_SPINLOCK_INIT != 0 -- __pthread_handles[0].h_lock = __LOCK_INITIALIZER; -- __pthread_handles[1].h_lock = __LOCK_INITIALIZER; -+# ifdef __LT_INITIALIZER_NOT_ZERO -+ __pthread_handles[0].h_lock = __LOCK_ALT_INITIALIZER; -+ __pthread_handles[1].h_lock = __LOCK_ALT_INITIALIZER; - # endif - __pthread_handles[0].h_descr = &__pthread_initial_thread; - __pthread_handles[1].h_descr = &__pthread_manager_thread; -diff -urN glibc-2.3.1.orig/linuxthreads/spinlock.c glibc-2.3.1/linuxthreads/spinlock.c ---- glibc-2.3.1.orig/linuxthreads/spinlock.c 2002-08-29 06:32:19.000000000 -0400 -+++ glibc-2.3.1/linuxthreads/spinlock.c 2003-01-15 18:24:36.000000000 -0500 -@@ -24,9 +24,9 @@ - #include "spinlock.h" - #include "restart.h" - --static void __pthread_acquire(int * spinlock); -+static void __pthread_acquire(__atomic_lock_t * spinlock); - --static inline void __pthread_release(int * spinlock) -+static inline void __pthread_release(__atomic_lock_t * spinlock) - { - WRITE_MEMORY_BARRIER(); - *spinlock = __LT_SPINLOCK_INIT; -@@ -269,11 +269,11 @@ - struct wait_node { - struct wait_node *next; /* Next node in null terminated linked list */ - pthread_descr thr; /* The thread waiting with this node */ -- int abandoned; /* Atomic flag */ -+ __atomic_lock_t abandoned; /* Atomic flag */ - }; - - static long wait_node_free_list; --static int wait_node_free_list_spinlock; -+__pthread_lock_define_initialized(static, wait_node_free_list_spinlock); - - /* Allocate a new node from the head of the free list using an atomic - operation, or else using malloc if that list is empty. A fundamental -@@ -376,7 +376,7 @@ - if (self == NULL) - self = thread_self(); - -- wait_node.abandoned = 0; -+ wait_node.abandoned = __LT_SPINLOCK_INIT; - wait_node.next = (struct wait_node *) lock->__status; - wait_node.thr = self; - lock->__status = (long) &wait_node; -@@ -402,7 +402,7 @@ - wait_node.thr = self; - newstatus = (long) &wait_node; - } -- wait_node.abandoned = 0; -+ wait_node.abandoned = __LT_SPINLOCK_INIT; - wait_node.next = (struct wait_node *) oldstatus; - /* Make sure the store in wait_node.next completes before performing - the compare-and-swap */ -@@ -451,7 +451,7 @@ - if (self == NULL) - self = thread_self(); - -- p_wait_node->abandoned = 0; -+ p_wait_node->abandoned = __LT_SPINLOCK_INIT; - p_wait_node->next = (struct wait_node *) lock->__status; - p_wait_node->thr = self; - lock->__status = (long) p_wait_node; -@@ -474,7 +474,7 @@ - p_wait_node->thr = self; - newstatus = (long) p_wait_node; - } -- p_wait_node->abandoned = 0; -+ p_wait_node->abandoned = __LT_SPINLOCK_INIT; - p_wait_node->next = (struct wait_node *) oldstatus; - /* Make sure the store in wait_node.next completes before performing - the compare-and-swap */ -@@ -574,7 +574,7 @@ - while (p_node != (struct wait_node *) 1) { - int prio; - -- if (p_node->abandoned) { -+ if (lock_held(&p_node->abandoned)) { - /* Remove abandoned node. */ - #if defined TEST_FOR_COMPARE_AND_SWAP - if (!__pthread_has_cas) -@@ -662,7 +662,7 @@ - #if !defined HAS_COMPARE_AND_SWAP || defined TEST_FOR_COMPARE_AND_SWAP - - int __pthread_compare_and_swap(long * ptr, long oldval, long newval, -- int * spinlock) -+ __atomic_lock_t * spinlock) - { - int res; - -@@ -699,7 +699,7 @@ - - When nanosleep() returns, we try again, doing MAX_SPIN_COUNT - sched_yield(), then sleeping again if needed. */ - --static void __pthread_acquire(int * spinlock) -+static void __pthread_acquire(__atomic_lock_t * spinlock) - { - int cnt = 0; - struct timespec tm; -diff -urN glibc-2.3.1.orig/linuxthreads/spinlock.h glibc-2.3.1/linuxthreads/spinlock.h ---- glibc-2.3.1.orig/linuxthreads/spinlock.h 2001-05-24 19:36:35.000000000 -0400 -+++ glibc-2.3.1/linuxthreads/spinlock.h 2003-01-15 18:24:36.000000000 -0500 -@@ -33,14 +33,28 @@ - #endif - #endif - -+/* Define lock_held for all arches that don't need a modified copy. */ -+#ifndef __LT_INITIALIZER_NOT_ZERO -+# define lock_held(p) *(p) -+#endif -+ -+/* Initliazers for possibly complex structures */ -+#ifdef __LT_INITIALIZER_NOT_ZERO -+# define __pthread_lock_define_initialized(CLASS,NAME) \ -+ CLASS __atomic_lock_t NAME = __LT_SPINLOCK_ALT_INIT -+#else -+# define __pthread_lock_define_initialized(CLASS,NAME) \ -+ CLASS __atomic_lock_t NAME -+#endif -+ - #if defined(TEST_FOR_COMPARE_AND_SWAP) - - extern int __pthread_has_cas; - extern int __pthread_compare_and_swap(long * ptr, long oldval, long newval, -- int * spinlock); -+ __atomic_lock_t * spinlock); - - static inline int compare_and_swap(long * ptr, long oldval, long newval, -- int * spinlock) -+ __atomic_lock_t * spinlock) - { - if (__builtin_expect (__pthread_has_cas, 1)) - return __compare_and_swap(ptr, oldval, newval); -@@ -58,7 +72,7 @@ - - static inline int - compare_and_swap_with_release_semantics (long * ptr, long oldval, -- long newval, int * spinlock) -+ long newval, __atomic_lock_t * spinlock) - { - return __compare_and_swap_with_release_semantics (ptr, oldval, - newval); -@@ -67,7 +81,7 @@ - #endif - - static inline int compare_and_swap(long * ptr, long oldval, long newval, -- int * spinlock) -+ __atomic_lock_t * spinlock) - { - return __compare_and_swap(ptr, oldval, newval); - } -@@ -75,10 +89,10 @@ - #else - - extern int __pthread_compare_and_swap(long * ptr, long oldval, long newval, -- int * spinlock); -+ __atomic_lock_t * spinlock); - - static inline int compare_and_swap(long * ptr, long oldval, long newval, -- int * spinlock) -+ __atomic_lock_t * spinlock) - { - return __pthread_compare_and_swap(ptr, oldval, newval, spinlock); - } diff --git a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-01-sysdeps-pthreads.patch b/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-01-sysdeps-pthreads.patch deleted file mode 100644 index b86ca0d5eea2..000000000000 --- a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-01-sysdeps-pthreads.patch +++ /dev/null @@ -1,40 +0,0 @@ -diff -urN glibc-2.3.1.orig/linuxthreads/sysdeps/pthread/bits/libc-lock.h glibc-2.3.1/linuxthreads/sysdeps/pthread/bits/libc-lock.h ---- glibc-2.3.1.orig/linuxthreads/sysdeps/pthread/bits/libc-lock.h 2003-01-15 12:58:35.000000000 -0500 -+++ glibc-2.3.1/linuxthreads/sysdeps/pthread/bits/libc-lock.h 2003-01-15 18:24:36.000000000 -0500 -@@ -71,12 +71,12 @@ - initialized locks must be set to one due to the lack of normal - atomic operations.) */ - --#if __LT_SPINLOCK_INIT == 0 -+#ifdef __LT_INITIALIZER_NOT_ZERO - # define __libc_lock_define_initialized(CLASS,NAME) \ -- CLASS __libc_lock_t NAME; -+ CLASS __libc_lock_t NAME = PTHREAD_MUTEX_INITIALIZER; - #else - # define __libc_lock_define_initialized(CLASS,NAME) \ -- CLASS __libc_lock_t NAME = PTHREAD_MUTEX_INITIALIZER; -+ CLASS __libc_lock_t NAME; - #endif - - #define __libc_rwlock_define_initialized(CLASS,NAME) \ -diff -urN glibc-2.3.1.orig/linuxthreads/sysdeps/pthread/bits/pthreadtypes.h glibc-2.3.1/linuxthreads/sysdeps/pthread/bits/pthreadtypes.h ---- glibc-2.3.1.orig/linuxthreads/sysdeps/pthread/bits/pthreadtypes.h 2003-01-15 12:58:35.000000000 -0500 -+++ glibc-2.3.1/linuxthreads/sysdeps/pthread/bits/pthreadtypes.h 2003-01-15 18:24:36.000000000 -0500 -@@ -22,12 +22,14 @@ - #define __need_schedparam - #include <bits/sched.h> - -+typedef int __atomic_lock_t; -+ - /* Fast locks (not abstract because mutexes and conditions aren't abstract). */ - struct _pthread_fastlock - { -- long int __status; /* "Free" or "taken" or head of waiting list */ -- int __spinlock; /* Used by compare_and_swap emulation. Also, -- adaptive SMP lock stores spin count here. */ -+ long int __status; /* "Free" or "taken" or head of waiting list */ -+ __atomic_lock_t __spinlock; /* Used by compare_and_swap emulation. Also, -+ adaptive SMP lock stores spin count here. */ - }; - - #ifndef _PTHREAD_DESCR_DEFINED diff --git a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-02-pthreads.patch b/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-02-pthreads.patch deleted file mode 100644 index 0a73330b8999..000000000000 --- a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-02-pthreads.patch +++ /dev/null @@ -1,90 +0,0 @@ -diff -urN libc.orig/linuxthreads/sysdeps/hppa/pspinlock.c libc/linuxthreads/sysdeps/hppa/pspinlock.c ---- libc.orig/linuxthreads/sysdeps/hppa/pspinlock.c 2002-08-26 18:39:51.000000000 -0400 -+++ libc/linuxthreads/sysdeps/hppa/pspinlock.c 2003-10-16 00:32:20.000000000 -0400 -@@ -24,13 +24,10 @@ - int - __pthread_spin_lock (pthread_spinlock_t *lock) - { -- unsigned int val; -+ volatile unsigned int *addr = __ldcw_align (lock); - -- do -- asm volatile ("ldcw %1,%0" -- : "=r" (val), "=m" (*lock) -- : "m" (*lock)); -- while (!val); -+ while (__ldcw (addr) == 0) -+ while (*addr == 0) ; - - return 0; - } -@@ -40,13 +37,9 @@ - int - __pthread_spin_trylock (pthread_spinlock_t *lock) - { -- unsigned int val; -+ volatile unsigned int *a = __ldcw_align (lock); - -- asm volatile ("ldcw %1,%0" -- : "=r" (val), "=m" (*lock) -- : "m" (*lock)); -- -- return val ? 0 : EBUSY; -+ return __ldcw (a) ? 0 : EBUSY; - } - weak_alias (__pthread_spin_trylock, pthread_spin_trylock) - -@@ -54,7 +47,9 @@ - int - __pthread_spin_unlock (pthread_spinlock_t *lock) - { -- *lock = 1; -+ volatile unsigned int *a = __ldcw_align (lock); -+ -+ *a = 1; - return 0; - } - weak_alias (__pthread_spin_unlock, pthread_spin_unlock) -@@ -66,7 +61,9 @@ - /* 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 = 1; -+ volatile unsigned int *a = __ldcw_align (lock); -+ -+ *a = 1; - return 0; - } - weak_alias (__pthread_spin_init, pthread_spin_init) -diff -urN libc.orig/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/initspin.h libc/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/initspin.h ---- libc.orig/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/initspin.h 2002-08-26 18:39:55.000000000 -0400 -+++ libc/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/initspin.h 2003-10-16 00:37:21.000000000 -0400 -@@ -19,9 +19,23 @@ - - /* Initial value of a spinlock. PA-RISC only implements atomic load - and clear so this must be non-zero. */ --#define __LT_SPINLOCK_INIT 1 -+#define __LT_SPINLOCK_INIT ((__atomic_lock_t) { { 1, 1, 1, 1 } }) -+ -+/* Initialize global spinlocks without cast, generally macro wrapped */ -+#define __LT_SPINLOCK_ALT_INIT { { 1, 1, 1, 1 } } -+ -+/* Macros for lock initializers, not using the above definition. -+ The above definition is not used in the case that static initializers -+ use this value. */ -+#define __LOCK_INITIALIZER { __LT_SPINLOCK_ALT_INIT, 0 } -+ -+/* Used to initialize _pthread_fastlock's in non-static case */ -+#define __LOCK_ALT_INITIALIZER ((struct _pthread_fastlock){ __LT_SPINLOCK_INIT, 0 }) -+ -+/* Used in pthread_atomic initialization */ -+#define __ATOMIC_INITIALIZER { 0, __LT_SPINLOCK_ALT_INIT } -+ -+/* Tell the rest of the code that the initializer is non-zero without -+ explaining it's internal structure */ -+#define __LT_INITIALIZER_NOT_ZERO - --/* Macros for lock initializers, using the above definition. */ --#define __LOCK_INITIALIZER { 0, __LT_SPINLOCK_INIT } --#define __ALT_LOCK_INITIALIZER { 0, __LT_SPINLOCK_INIT } --#define __ATOMIC_INITIALIZER { 0, __LT_SPINLOCK_INIT } diff --git a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-03-dl-machine.patch b/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-03-dl-machine.patch deleted file mode 100644 index 9758a06a0af9..000000000000 --- a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-03-dl-machine.patch +++ /dev/null @@ -1,365 +0,0 @@ -diff -u -p -r1.19 dl-machine.h ---- libc/sysdeps/hppa/dl-machine.h 31 Jul 2003 06:33:51 -0000 1.19 -+++ libc/sysdeps/hppa/dl-machine.h 27 Aug 2003 03:53:54 -0000 -@@ -1,5 +1,5 @@ - /* Machine-dependent ELF dynamic relocation inline functions. PA-RISC version. -- Copyright (C) 1995-1997,1999,2000,2001,2002, 2003 -+ Copyright (C) 1995-1997,1999-2003 - Free Software Foundation, Inc. - Contributed by David Huggins-Daines <dhd@debian.org> - This file is part of the GNU C Library. -@@ -29,8 +29,15 @@ - #include <link.h> - #include <assert.h> - -+# define VALID_ELF_OSABI(osabi) ((osabi == ELFOSABI_SYSV) || (osabi == ELFOSABI_LINUX)) -+# define VALID_ELF_ABIVERSION(ver) (ver == 0) -+# define VALID_ELF_HEADER(hdr,exp,size) \ -+ memcmp (hdr,exp,size-2) == 0 \ -+ && VALID_ELF_OSABI (hdr[EI_OSABI]) \ -+ && VALID_ELF_ABIVERSION (hdr[EI_ABIVERSION]) -+ - /* These must match the definition of the stub in bfd/elf32-hppa.c. */ --#define SIZEOF_PLT_STUB (4*4) -+#define SIZEOF_PLT_STUB (7*4) - #define GOT_FROM_PLT_STUB (4*4) - - /* A PLABEL is a function descriptor. Properly they consist of just -@@ -67,45 +74,41 @@ elf_machine_matches_host (const Elf32_Eh - return ehdr->e_machine == EM_PARISC; - } - -- - /* Return the link-time address of _DYNAMIC. */ - static inline Elf32_Addr -+elf_machine_dynamic (void) __attribute__ ((const)); -+ -+static inline Elf32_Addr - elf_machine_dynamic (void) - { - Elf32_Addr dynamic; - --#if 0 -- /* Use this method if GOT address not yet set up. */ -- asm ( --" b,l 1f,%0\n" -+ asm ("b,l 1f,%0\n" - " depi 0,31,2,%0\n" - "1: addil L'_GLOBAL_OFFSET_TABLE_ - ($PIC_pcrel$0 - 8),%0\n" - " ldw R'_GLOBAL_OFFSET_TABLE_ - ($PIC_pcrel$0 - 12)(%%r1),%0\n" -- : "=r" (dynamic) : : "r1"); --#else -- /* This works because we already have our GOT address available. */ -- dynamic = (Elf32_Addr) &_DYNAMIC; --#endif -+ : "=r" (dynamic) : : "r1"); - - return dynamic; - } - - /* Return the run-time load address of the shared object. */ - static inline Elf32_Addr -+elf_machine_load_address (void) __attribute__ ((const)); -+ -+static inline Elf32_Addr - elf_machine_load_address (void) - { -- Elf32_Addr dynamic, dynamic_linkaddress; -+ Elf32_Addr dynamic; - - asm ( - " b,l 1f,%0\n" - " depi 0,31,2,%0\n" - "1: addil L'_DYNAMIC - ($PIC_pcrel$0 - 8),%0\n" --" ldo R'_DYNAMIC - ($PIC_pcrel$0 - 12)(%%r1),%1\n" --" addil L'_GLOBAL_OFFSET_TABLE_ - ($PIC_pcrel$0 - 16),%0\n" --" ldw R'_GLOBAL_OFFSET_TABLE_ - ($PIC_pcrel$0 - 20)(%%r1),%0\n" -- : "=r" (dynamic_linkaddress), "=r" (dynamic) : : "r1"); -+" ldo R'_DYNAMIC - ($PIC_pcrel$0 - 12)(%%r1),%0\n" -+ : "=r" (dynamic) : : "r1"); - -- return dynamic - dynamic_linkaddress; -+ return dynamic - elf_machine_dynamic (); - } - - /* Fixup a PLT entry to bounce directly to the function at VALUE. */ -@@ -168,41 +171,39 @@ elf_machine_runtime_setup (struct link_m - fptr = (struct hppa_fptr *) (reloc->r_offset + l_addr); - if (r_sym != 0) - { -- /* Relocate the pointer to the stub. */ -- fptr->func += l_addr; -- /* Instead of the LTP value, we put the reloc offset -- here. The trampoline code will load the proper -- LTP and pass the reloc offset to the fixup -- function. */ -- fptr->gp = iplt - jmprel; - if (!got) - { - static union { - unsigned char c[8]; - Elf32_Addr i[2]; - } sig = {{0x00,0xc0,0xff,0xee, 0xde,0xad,0xbe,0xef}}; -+ const Elf32_Rela *last_rel; -+ -+ last_rel = (const Elf32_Rela *) end_jmprel - 1; -+ -+ /* The stub is immediately after the last .plt -+ entry. Rely on .plt relocs being ordered. */ -+ if (last_rel->r_offset == 0) -+ return 0; - - /* Find our .got section. It's right after the - stub. */ -- got = (Elf32_Addr *) (fptr->func + GOT_FROM_PLT_STUB); -+ got = (Elf32_Addr *) (last_rel->r_offset + l_addr -+ + 8 + SIZEOF_PLT_STUB); - -- /* Sanity check to see if the address we are -- going to check below is within a reasonable -- approximation of the bounds of the PLT (or, -- at least, is at an address that won't fault -- on read). Then check for the magic signature -- above. */ -- if (fptr->func < (Elf32_Addr) fptr + sizeof(*fptr)) -- return 0; -- if (fptr->func > -- ((Elf32_Addr) fptr -- + SIZEOF_PLT_STUB -- + ((l->l_info[DT_PLTRELSZ]->d_un.d_val / sizeof (Elf32_Rela)) -- * 8))) -- return 0; -+ /* Check the magic signature. */ - if (got[-2] != sig.i[0] || got[-1] != sig.i[1]) - return 0; /* No lazy linking for you! */ - } -+ -+ /* Relocate the pointer to the stub. */ -+ fptr->func = (Elf32_Addr) got - GOT_FROM_PLT_STUB; -+ -+ /* Instead of the LTP value, we put the reloc offset -+ here. The trampoline code will load the proper -+ LTP and pass the reloc offset to the fixup -+ function. */ -+ fptr->gp = iplt - jmprel; - } - else - { -@@ -272,22 +273,24 @@ asm ( \ - " stw %r25,-40(%sp)\n" /* argc */ \ - " stw %r24,-44(%sp)\n" /* argv */ \ - \ -- /* We need the LTP, and we need it now. */ \ -- /* $PIC_pcrel$0 points 8 bytes past the current instruction, \ -- just like a branch reloc. This sequence gets us the runtime \ -- address of _DYNAMIC. */ \ -+ /* We need the LTP, and we need it now. \ -+ $PIC_pcrel$0 points 8 bytes past the current instruction, \ -+ just like a branch reloc. This sequence gets us the \ -+ runtime address of _DYNAMIC. */ \ - " bl 0f,%r19\n" \ - " depi 0,31,2,%r19\n" /* clear priviledge bits */ \ - "0: addil L'_DYNAMIC - ($PIC_pcrel$0 - 8),%r19\n" \ - " ldo R'_DYNAMIC - ($PIC_pcrel$0 - 12)(%r1),%r26\n" \ - \ -- /* Also get the link time address from the first entry of the GOT. */ \ -+ /* The link time address is stored in the first entry of the \ -+ GOT. */ \ - " addil L'_GLOBAL_OFFSET_TABLE_ - ($PIC_pcrel$0 - 16),%r19\n" \ - " ldw R'_GLOBAL_OFFSET_TABLE_ - ($PIC_pcrel$0 - 20)(%r1),%r20\n" \ - \ - " sub %r26,%r20,%r20\n" /* Calculate load offset */ \ - \ -- /* Rummage through the dynamic entries, looking for DT_PLTGOT. */ \ -+ /* Rummage through the dynamic entries, looking for \ -+ DT_PLTGOT. */ \ - " ldw,ma 8(%r26),%r19\n" \ - "1: cmpib,=,n 3,%r19,2f\n" /* tag == DT_PLTGOT? */ \ - " cmpib,<>,n 0,%r19,1b\n" \ -@@ -307,8 +310,8 @@ asm ( \ - | 32 bytes of magic | \ - |---------------------------------| \ - | 32 bytes argument/sp save area | \ -- |---------------------------------| ((current->mm->env_end) + 63 & ~63) \ -- | N bytes of slack | \ -+ |---------------------------------| ((current->mm->env_end) \ -+ | N bytes of slack | + 63 & ~63) \ - |---------------------------------| \ - | envvar and arg strings | \ - |---------------------------------| \ -@@ -376,7 +379,7 @@ asm ( \ - " bl _dl_init_internal,%r2\n" \ - " ldo 4(%r23),%r23\n" /* delay slot */ \ - \ -- /* Reload argc, argv to the registers start.S expects them in (feh) */ \ -+ /* Reload argc, argv to the registers start.S expects. */ \ - " ldw -40(%sp),%r25\n" \ - " ldw -44(%sp),%r24\n" \ - \ -@@ -388,8 +391,8 @@ asm ( \ - " .word 0xdeadbeef\n" \ - " .previous\n" \ - \ -- /* %r3 contains a function pointer, we need to mask out the lower \ -- * bits and load the gp and jump address. */ \ -+ /* %r3 contains a function pointer, we need to mask out the \ -+ lower bits and load the gp and jump address. */ \ - " depi 0,31,2,%r3\n" \ - " ldw 0(%r3),%r2\n" \ - " addil LT'__dl_fini_plabel,%r19\n" \ -@@ -407,43 +410,41 @@ asm ( \ - Enter with r19 = reloc offset, r20 = got-8, r21 = fixup ltp. */ - #define TRAMPOLINE_TEMPLATE(tramp_name, fixup_name) \ - extern void tramp_name (void); \ -- asm ( "\ -- /* Trampoline for " #tramp_name " */ \n\ -- .globl " #tramp_name " \n\ -- .type " #tramp_name ",@function \n\ --" #tramp_name ": \n\ -- /* Save return pointer */ \n\ -- stw %r2,-20(%sp) \n\ -- /* Save argument registers in the call stack frame. */ \n\ -- stw %r26,-36(%sp) \n\ -- stw %r25,-40(%sp) \n\ -- stw %r24,-44(%sp) \n\ -- stw %r23,-48(%sp) \n\ -- /* Build a call frame. */ \n\ -- stwm %sp,64(%sp) \n\ -- \n\ -- /* Set up args to fixup func. */ \n\ -- ldw 8+4(%r20),%r26 /* got[1] == struct link_map * */ \n\ -- copy %r19,%r25 /* reloc offset */ \n\ -- \n\ -- /* Call the real address resolver. */ \n\ -- bl " #fixup_name ",%r2 \n\ -- copy %r21,%r19 /* delay slot, set fixup func ltp */ \n\ -- \n\ -- ldwm -64(%sp),%sp \n\ -- /* Arguments. */ \n\ -- ldw -36(%sp),%r26 \n\ -- ldw -40(%sp),%r25 \n\ -- ldw -44(%sp),%r24 \n\ -- ldw -48(%sp),%r23 \n\ -- /* Return pointer. */ \n\ -- ldw -20(%sp),%r2 \n\ -- /* Call the real function. */ \n\ -- ldw 0(%r28),%r22 \n\ -- bv %r0(%r22) \n\ -- ldw 4(%r28),%r19 \n\ --"); -- -+ asm (".globl " #tramp_name "\n" \ -+ " .type " #tramp_name ",@function\n" \ -+ #tramp_name ":\n" \ -+ /* Save return pointer */ \ -+ " stw %r2,-20(%sp)\n" \ -+ /* Save argument registers in the call stack frame. */ \ -+ " stw %r26,-36(%sp)\n" \ -+ " stw %r25,-40(%sp)\n" \ -+ " stw %r24,-44(%sp)\n" \ -+ " stw %r23,-48(%sp)\n" \ -+ /* Build a call frame, and save structure pointer. */ \ -+ " stwm %r28,64(%sp)\n" \ -+ \ -+ /* Set up args to fixup func. */ \ -+ " ldw 8+4(%r20),%r26\n" /* got[1] == struct link_map * */ \ -+ " copy %r19,%r25\n" /* reloc offset */ \ -+ \ -+ /* Call the real address resolver. */ \ -+ " bl " #fixup_name ",%r2\n" \ -+ " copy %r21,%r19\n" /* delay slot, set fixup func ltp */ \ -+ \ -+ " ldw 0(%r28),%r22\n" /* load up the returned func ptr */ \ -+ " ldw 4(%r28),%r19\n" \ -+ " ldwm -64(%sp),%r28\n" \ -+ /* Arguments. */ \ -+ " ldw -36(%sp),%r26\n" \ -+ " ldw -40(%sp),%r25\n" \ -+ " ldw -44(%sp),%r24\n" \ -+ " ldw -48(%sp),%r23\n" \ -+ /* Call the real function. */ \ -+ " bv %r0(%r22)\n" \ -+ /* Return pointer. */ \ -+ " ldw -20(%sp),%r2\n" \ -+ ); -+ - #ifndef PROF - #define ELF_MACHINE_RUNTIME_TRAMPOLINE \ - TRAMPOLINE_TEMPLATE (_dl_runtime_resolve, fixup); \ -@@ -470,16 +471,32 @@ asm ( \ - /* We only use RELA. */ - #define ELF_MACHINE_NO_REL 1 - -+/* Tell dynamic-link that PA needs the extra link_map structure */ -+#define ELF_MACHINE_REL_RELATIVE_NEEDSLINKMAP 1 -+#define ELF_MACHINE_RELA_RELATIVE_NEEDSLINKMAP 1 -+ - /* Return the address of the entry point. */ - #define ELF_MACHINE_START_ADDRESS(map, start) \ - DL_FUNCTION_ADDRESS (map, start) - -+/* We define an initialization functions. This is called very early in -+ * _dl_sysdep_start. */ -+#define DL_PLATFORM_INIT dl_platform_init () -+ -+static inline void __attribute__ ((unused)) -+dl_platform_init (void) -+{ -+ if (GL(dl_platform) != NULL && *GL(dl_platform) == '\0') -+ /* Avoid an empty string which would disturb us. */ -+ GL(dl_platform) = NULL; -+} -+ - #endif /* !dl_machine_h */ - - /* These are only actually used where RESOLVE_MAP is defined, anyway. */ - #ifdef RESOLVE_MAP - --static inline void -+auto void __attribute__((always_inline)) - elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc, - const Elf32_Sym *sym, const struct r_found_version *version, - void *const reloc_addr_arg) -@@ -569,15 +586,15 @@ elf_machine_rela (struct link_map *map, - probably haven't relocated the necessary values by this - point so we have to find them ourselves. */ - -- asm ("bl 0f,%0 \n\ -- depi 0,31,2,%0 \n\ --0: addil L'__boot_ldso_fptr - ($PIC_pcrel$0 - 8),%0 \n\ -- ldo R'__boot_ldso_fptr - ($PIC_pcrel$0 - 12)(%%r1),%1 \n\ -- addil L'__fptr_root - ($PIC_pcrel$0 - 16),%0 \n\ -- ldo R'__fptr_root - ($PIC_pcrel$0 - 20)(%%r1),%2 \n\ -- addil L'__fptr_count - ($PIC_pcrel$0 - 24),%0 \n\ -- ldo R'__fptr_count - ($PIC_pcrel$0 - 28)(%%r1),%3" -- : -+ asm ("bl 0f,%0\n\t" -+ "depi 0,31,2,%0\n\t" -+ "0:\taddil L'__boot_ldso_fptr - ($PIC_pcrel$0 - 8),%0\n\t" -+ "ldo R'__boot_ldso_fptr - ($PIC_pcrel$0 - 12)(%%r1),%1\n\t" -+ "addil L'__fptr_root - ($PIC_pcrel$0 - 16),%0\n\t" -+ "ldo R'__fptr_root - ($PIC_pcrel$0 - 20)(%%r1),%2\n\t" -+ "addil L'__fptr_count - ($PIC_pcrel$0 - 24),%0\n\t" -+ "ldo R'__fptr_count - ($PIC_pcrel$0 - 28)(%%r1),%3" -+ : - "=r" (dot), - "=r" (p_boot_ldso_fptr), - "=r" (p_fptr_root), -@@ -636,7 +653,7 @@ elf_machine_rela (struct link_map *map, - - /* hppa doesn't have an R_PARISC_RELATIVE reloc, but uses relocs with - ELF32_R_SYM (info) == 0 for a similar purpose. */ --static inline void -+auto void __attribute__((always_inline)) - elf_machine_rela_relative (struct link_map *map, Elf32_Addr l_addr, - const Elf32_Rela *reloc, - void *const reloc_addr_arg) -@@ -682,7 +699,7 @@ elf_machine_rela_relative (struct link_m - *reloc_addr = value; - } - --static inline void -+auto void __attribute__((always_inline)) - elf_machine_lazy_rel (struct link_map *map, - Elf32_Addr l_addr, const Elf32_Rela *reloc) - { diff --git a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-05-entry.patch b/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-05-entry.patch deleted file mode 100644 index e2f62cbca4ff..000000000000 --- a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-05-entry.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- glibc-2.3.1/sysdeps/hppa/elf/entry.h 2003-01-25 02:37:00.000000000 -0700 -+++ glibc-2.3.1/sysdeps/hppa/elf/entry.h 2003-03-27 03:55:34.000000000 -0700 -@@ -0,0 +1,10 @@ -+#ifndef __ASSEMBLY__ -+extern void _start (void); -+#endif -+ -+/* The function's entry point is stored in the first word of the -+ function descriptor (plabel) of _start(). */ -+#define ENTRY_POINT ({long int *tmp = (long int *)((long)_start & ~2); tmp[0];}) -+ -+/* We have to provide a special declaration. */ -+#define ENTRY_POINT_DECL(class) class void _start (void); diff --git a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-06-oldsemaphore.patch b/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-06-oldsemaphore.patch deleted file mode 100644 index e1d99bf49aef..000000000000 --- a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-06-oldsemaphore.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- libc/linuxthreads/oldsemaphore.c 25 May 2001 07:38:39 -0000 1.11 -+++ libc/linuxthreads/oldsemaphore.c 21 Apr 2003 23:53:24 -0000 -@@ -31,7 +31,7 @@ - - typedef struct { - long int sem_status; -- int sem_spinlock; -+ __atomic_lock_t sem_spinlock; - } old_sem_t; - - extern int __old_sem_init (old_sem_t *__sem, int __pshared, unsigned int __value); diff --git a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-07-framestatefor.patch b/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-07-framestatefor.patch deleted file mode 100644 index af4a688bff4f..000000000000 --- a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-07-framestatefor.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- libc/sysdeps/generic/framestate.c 8 Jan 2003 06:46:06 -0000 1.3 -+++ libc/sysdeps/generic/framestate.c 24 Apr 2003 21:20:04 -0000 -@@ -41,7 +41,11 @@ __frame_state_for (void *pc, struct fram - if (handle == NULL - || (frame_state_for - = (framesf) __libc_dlsym (handle, "__frame_state_for")) == NULL) -+#ifndef __USING_SJLJ_EXCEPTIONS__ - frame_state_for = fallback_frame_state_for; -+#else -+ frame_state_for = abort; -+#endif - } - - return frame_state_for (pc, frame_state); diff --git a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-08-dlfptr.patch b/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-08-dlfptr.patch deleted file mode 100644 index b630cbe0d2f6..000000000000 --- a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-08-dlfptr.patch +++ /dev/null @@ -1,48 +0,0 @@ -diff -urN glibc-2.3.1.orig/sysdeps/hppa/dl-fptr.c glibc-2.3.1/sysdeps/hppa/dl-fptr.c ---- glibc-2.3.1.orig/sysdeps/hppa/dl-fptr.c 2002-01-31 20:31:51.000000000 -0500 -+++ glibc-2.3.1/sysdeps/hppa/dl-fptr.c 2003-01-15 18:24:36.000000000 -0500 -@@ -30,7 +30,7 @@ - # include <pt-machine.h> - - /* Remember, we use 0 to mean that a lock is taken on PA-RISC. */ --static int __hppa_fptr_lock = 1; -+static __atomic_lock_t __hppa_fptr_lock = __LT_SPINLOCK_ALT_INIT; - #endif - - /* Because ld.so is now versioned, these functions can be in their own -@@ -127,7 +127,7 @@ - #ifdef _LIBC_REENTRANT - /* Release the lock. Again, remember, zero means the lock is taken! */ - if (mem == NULL) -- __hppa_fptr_lock = 1; -+ __hppa_fptr_lock = __LT_SPINLOCK_INIT; - #endif - - /* Set bit 30 to indicate to $$dyncall that this is a PLABEL. */ -@@ -180,7 +180,7 @@ - - #ifdef _LIBC_REENTRANT - /* Release the lock. */ -- __hppa_fptr_lock = 1; -+ __hppa_fptr_lock = __LT_SPINLOCK_INIT; - #endif - } - -@@ -190,6 +190,8 @@ - Elf32_Addr addr = (Elf32_Addr) address; - struct hppa_fptr *f; - -+ address = (void *)((unsigned long)address &~ 3); /* Clear the bottom two bits. See make_fptr. */ -+ - #ifdef _LIBC_REENTRANT - /* Make sure we are alone. */ - while (testandset (&__hppa_fptr_lock)); -@@ -204,7 +206,7 @@ - - #ifdef _LIBC_REENTRANT - /* Release the lock. */ -- __hppa_fptr_lock = 1; -+ __hppa_fptr_lock = __LT_SPINLOCK_INIT; - #endif - - return addr; diff --git a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-09-pthreadtypes.patch b/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-09-pthreadtypes.patch deleted file mode 100644 index d4b8e3b03467..000000000000 --- a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-09-pthreadtypes.patch +++ /dev/null @@ -1,164 +0,0 @@ -diff -urN libc.orig/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/pthreadtypes.h libc/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/pthreadtypes.h ---- libc.orig/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/pthreadtypes.h 1969-12-31 19:00:00.000000000 -0500 -+++ libc/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/pthreadtypes.h 2003-10-16 00:40:11.000000000 -0400 -@@ -0,0 +1,160 @@ -+/* Linuxthreads - a simple clone()-based implementation of Posix */ -+/* threads for Linux. */ -+/* Copyright (C) 1996 Xavier Leroy (Xavier.Leroy@inria.fr) */ -+/* */ -+/* This program is free software; you can redistribute it and/or */ -+/* modify it under the terms of the GNU Library General Public License */ -+/* as published by the Free Software Foundation; either version 2 */ -+/* of the License, or (at your option) any later version. */ -+/* */ -+/* This program 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 Library General Public License for more details. */ -+ -+#if !defined _BITS_TYPES_H && !defined _PTHREAD_H -+# error "Never include <bits/pthreadtypes.h> directly; use <sys/types.h> instead." -+#endif -+ -+#ifndef _BITS_PTHREADTYPES_H -+#define _BITS_PTHREADTYPES_H 1 -+ -+#define __need_schedparam -+#include <bits/sched.h> -+ -+/* We need 128-bit alignment for the ldcw semaphore. At most, we are -+ assured of 64-bit alignment for stack locals and malloc'd data. Thus, -+ we use a struct with four ints for the atomic lock type. The locking -+ code will figure out which of the four to use for the ldcw semaphore. */ -+typedef volatile struct { -+ int lock[4]; -+} __attribute__ ((aligned(16))) __atomic_lock_t; -+ -+/* Fast locks (not abstract because mutexes and conditions aren't abstract). */ -+struct _pthread_fastlock -+{ -+ __atomic_lock_t __spinlock; /* Used by compare_and_swap emulation. Also, -+ adaptive SMP lock stores spin count here. */ -+ long int __status; /* "Free" or "taken" or head of waiting list */ -+}; -+ -+#ifndef _PTHREAD_DESCR_DEFINED -+/* Thread descriptors */ -+typedef struct _pthread_descr_struct *_pthread_descr; -+# define _PTHREAD_DESCR_DEFINED -+#endif -+ -+ -+/* Attributes for threads. */ -+typedef struct __pthread_attr_s -+{ -+ int __detachstate; -+ int __schedpolicy; -+ struct __sched_param __schedparam; -+ int __inheritsched; -+ int __scope; -+ size_t __guardsize; -+ int __stackaddr_set; -+ void *__stackaddr; -+ size_t __stacksize; -+} pthread_attr_t; -+ -+ -+/* Conditions (not abstract because of PTHREAD_COND_INITIALIZER */ -+ -+#ifdef __GLIBC_HAVE_LONG_LONG -+__extension__ typedef long long __pthread_cond_align_t; -+#else -+typedef long __pthread_cond_align_t; -+#endif -+ -+typedef struct -+{ -+ struct _pthread_fastlock __c_lock; /* Protect against concurrent access */ -+ _pthread_descr __c_waiting; /* Threads waiting on this condition */ -+ char __padding[48 - sizeof (struct _pthread_fastlock) -+ - sizeof (_pthread_descr) - sizeof (__pthread_cond_align_t)]; -+ __pthread_cond_align_t __align; -+} pthread_cond_t; -+ -+ -+/* Attribute for conditionally variables. */ -+typedef struct -+{ -+ int __dummy; -+} pthread_condattr_t; -+ -+/* Keys for thread-specific data */ -+typedef unsigned int pthread_key_t; -+ -+ -+/* Mutexes (not abstract because of PTHREAD_MUTEX_INITIALIZER). */ -+/* (The layout is unnatural to maintain binary compatibility -+ with earlier releases of LinuxThreads.) */ -+typedef struct -+{ -+ int __m_reserved; /* Reserved for future use */ -+ int __m_count; /* Depth of recursive locking */ -+ _pthread_descr __m_owner; /* Owner thread (if recursive or errcheck) */ -+ int __m_kind; /* Mutex kind: fast, recursive or errcheck */ -+ struct _pthread_fastlock __m_lock; /* Underlying fast lock */ -+} pthread_mutex_t; -+ -+ -+/* Attribute for mutex. */ -+typedef struct -+{ -+ int __mutexkind; -+} pthread_mutexattr_t; -+ -+ -+/* Once-only execution */ -+typedef int pthread_once_t; -+ -+ -+#ifdef __USE_UNIX98 -+/* Read-write locks. */ -+typedef struct _pthread_rwlock_t -+{ -+ struct _pthread_fastlock __rw_lock; /* Lock to guarantee mutual exclusion */ -+ int __rw_readers; /* Number of readers */ -+ _pthread_descr __rw_writer; /* Identity of writer, or NULL if none */ -+ _pthread_descr __rw_read_waiting; /* Threads waiting for reading */ -+ _pthread_descr __rw_write_waiting; /* Threads waiting for writing */ -+ int __rw_kind; /* Reader/Writer preference selection */ -+ int __rw_pshared; /* Shared between processes or not */ -+} pthread_rwlock_t; -+ -+ -+/* Attribute for read-write locks. */ -+typedef struct -+{ -+ int __lockkind; -+ int __pshared; -+} pthread_rwlockattr_t; -+#endif -+ -+#ifdef __USE_XOPEN2K -+/* POSIX spinlock data type. */ -+typedef __atomic_lock_t pthread_spinlock_t; -+ -+/* POSIX barrier. */ -+typedef struct { -+ struct _pthread_fastlock __ba_lock; /* Lock to guarantee mutual exclusion */ -+ int __ba_required; /* Threads needed for completion */ -+ int __ba_present; /* Threads waiting */ -+ _pthread_descr __ba_waiting; /* Queue of waiting threads */ -+} pthread_barrier_t; -+ -+/* barrier attribute */ -+typedef struct { -+ int __pshared; -+} pthread_barrierattr_t; -+ -+#endif -+ -+ -+/* Thread identifiers */ -+typedef unsigned long int pthread_t; -+ -+#endif /* bits/pthreadtypes.h */ diff --git a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-10-ptmachine.patch b/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-10-ptmachine.patch deleted file mode 100644 index 7577772d90db..000000000000 --- a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-10-ptmachine.patch +++ /dev/null @@ -1,116 +0,0 @@ -diff -u -p -r1.6 pt-machine.h ---- libc/linuxthreads/sysdeps/hppa/pt-machine.h 31 Jul 2003 19:15:42 -0000 1.6 -+++ libc/linuxthreads/sysdeps/hppa/pt-machine.h 5 Aug 2003 19:58:59 -0000 -@@ -22,41 +22,97 @@ - #ifndef _PT_MACHINE_H - #define _PT_MACHINE_H 1 - -+#include <sys/types.h> - #include <bits/initspin.h> - - #ifndef PT_EI - # define PT_EI extern inline __attribute__ ((always_inline)) - #endif - --extern long int testandset (int *spinlock); --extern int __compare_and_swap (long int *p, long int oldval, long int newval); -+extern inline long int testandset (__atomic_lock_t *spinlock); -+extern inline int __compare_and_swap (long int *p, long int oldval, long int newval); -+extern inline int lock_held (__atomic_lock_t *spinlock); -+extern inline int __load_and_clear (__atomic_lock_t *spinlock); - - /* 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__ ("%r30"); - -+/* Get/Set thread-specific pointer. We have to call into the kernel to -+ * modify it, but we can read it in user mode. */ -+ -+#define THREAD_SELF __get_cr27() -+ -+static inline struct _pthread_descr_struct * __get_cr27(void) -+{ -+ long cr27; -+ asm("mfctl %%cr27, %0" : "=r" (cr27) : ); -+ return (struct _pthread_descr_struct *) cr27; -+} -+ -+#define INIT_THREAD_SELF(descr, nr) __set_cr27(descr) -+ -+static inline void __set_cr27(struct _pthread_descr_struct * cr27) -+{ -+ asm( -+ "ble 0xe0(%%sr2, %%r0)\n\t" -+ "copy %0, %%r26" -+ : : "r" (cr27) : "r26" ); -+} -+ -+/* We want the OS to assign stack addresses. */ -+#define FLOATING_STACKS 1 -+#define ARCH_STACK_MAX_SIZE 8*1024*1024 - - /* The hppa only has one atomic read and modify memory operation, - load and clear, so hppa spinlocks must use zero to signify that -- someone is holding the lock. */ -+ someone is holding the lock. The address used for the ldcw -+ semaphore must be 16-byte aligned. */ -+#define __ldcw(a) ({ \ -+ unsigned int __ret; \ -+ __asm__ __volatile__("ldcw 0(%2),%0" \ -+ : "=r" (__ret), "=m" (*(a)) : "r" (a)); \ -+ __ret; \ -+}) -+ -+/* Because malloc only guarantees 8-byte alignment for malloc'd data, -+ and GCC only guarantees 8-byte alignment for stack locals, we can't -+ be assured of 16-byte alignment for atomic lock data even if we -+ specify "__attribute ((aligned(16)))" in the type declaration. So, -+ we use a struct containing an array of four ints for the atomic lock -+ type and dynamically select the 16-byte aligned int from the array -+ for the semaphore. */ -+#define __PA_LDCW_ALIGNMENT 16 -+#define __ldcw_align(a) ({ \ -+ volatile unsigned int __ret = (unsigned int) a; \ -+ if ((__ret & ~(__PA_LDCW_ALIGNMENT - 1)) < (unsigned int) a) \ -+ __ret = (__ret & ~(__PA_LDCW_ALIGNMENT - 1)) + __PA_LDCW_ALIGNMENT; \ -+ (unsigned int *) __ret; \ -+}) - --#define xstr(s) str(s) --#define str(s) #s - /* Spinlock implementation; required. */ --PT_EI long int --testandset (int *spinlock) -+PT_EI int -+__load_and_clear (__atomic_lock_t *spinlock) - { -- int ret; -+ volatile unsigned int *a = __ldcw_align (spinlock); - -- __asm__ __volatile__( -- "ldcw 0(%2),%0" -- : "=r"(ret), "=m"(*spinlock) -- : "r"(spinlock)); -+ return __ldcw (a); -+} - -- return ret == 0; -+/* Emulate testandset */ -+PT_EI long int -+testandset (__atomic_lock_t *spinlock) -+{ -+ return (__load_and_clear(spinlock) == 0); - } --#undef str --#undef xstr - -+PT_EI int -+lock_held (__atomic_lock_t *spinlock) -+{ -+ volatile unsigned int *a = __ldcw_align (spinlock); -+ -+ return *a == 0; -+} -+ - #endif /* pt-machine.h */ diff --git a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-11-kernelstat.patch b/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-11-kernelstat.patch deleted file mode 100644 index f18e24811ac0..000000000000 --- a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-11-kernelstat.patch +++ /dev/null @@ -1,51 +0,0 @@ -diff -u -p -r1.2 kernel_stat.h ---- libc/sysdeps/unix/sysv/linux/hppa/kernel_stat.h 31 Dec 2002 13:24:33 -0000 1.2 -+++ libc/sysdeps/unix/sysv/linux/hppa/kernel_stat.h 26 Jul 2003 18:41:17 -0000 -@@ -1,30 +1,30 @@ --/* definition of "struct stat" from the kernel */ -+/* Definition of 'struct stat' taken from kernel, please keep up to date */ - struct kernel_stat { -- unsigned long st_dev; /* dev_t is 32 bits on parisc */ -- unsigned long st_ino; /* 32 bits */ -+ unsigned int st_dev; /* dev_t is 32 bits on parisc */ -+ unsigned int st_ino; /* 32 bits */ - unsigned short st_mode; /* 16 bits */ - unsigned short st_nlink; /* 16 bits */ - unsigned short st_reserved1; /* old st_uid */ - unsigned short st_reserved2; /* old st_gid */ -- unsigned long st_rdev; -- unsigned long st_size; -+ unsigned int st_rdev; -+ unsigned int st_size; - struct timespec st_atim; -- struct timespec st_mtim; -- struct timespec st_ctim; -- long st_blksize; -- long st_blocks; -- unsigned long __unused1; /* ACL stuff */ -- unsigned long __unused2; /* network */ -- unsigned long __unused3; /* network */ -- unsigned long __unused4; /* cnodes */ -+ struct timespec st_mtim; -+ struct timespec st_ctim; -+ int st_blksize; -+ int st_blocks; -+ unsigned int __unused1; /* ACL stuff */ -+ unsigned int __unused2; /* network */ -+ unsigned int __unused3; /* network */ -+ unsigned int __unused4; /* cnodes */ - unsigned short __unused5; /* netsite */ - short st_fstype; -- unsigned long st_realdev; -+ unsigned int st_realdev; - unsigned short st_basemode; - unsigned short st_spareshort; -- unsigned long st_uid; -- unsigned long st_gid; -- unsigned long st_spare4[3]; -+ unsigned int st_uid; -+ unsigned int st_gid; -+ unsigned int st_spare4[3]; - }; - - #define _HAVE_STAT_NSEC diff --git a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-12-unwind-dw2.patch b/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-12-unwind-dw2.patch deleted file mode 100644 index e73642b12f4d..000000000000 --- a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-12-unwind-dw2.patch +++ /dev/null @@ -1,16 +0,0 @@ -diff -u -p -r1.7 unwind-dw2.c ---- libc/sysdeps/generic/unwind-dw2.c 22 Jul 2003 23:55:55 -0000 1.7 -+++ libc/sysdeps/generic/unwind-dw2.c 5 Aug 2003 20:04:02 -0000 -@@ -39,7 +39,6 @@ - #endif - - --#ifndef __USING_SJLJ_EXCEPTIONS__ - - #ifndef STACK_GROWS_DOWNWARD - #define STACK_GROWS_DOWNWARD 0 -@@ -1287,4 +1286,3 @@ uw_identify_context (struct _Unwind_Cont - #include "unwind.inc" - - #endif /* _LIBC */ --#endif /* !USING_SJLJ_EXCEPTIONS */ diff --git a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-13-dynamiclink.patch b/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-13-dynamiclink.patch deleted file mode 100644 index afce19c3d61b..000000000000 --- a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-13-dynamiclink.patch +++ /dev/null @@ -1,25 +0,0 @@ -diff -u -p -r1.48 dynamic-link.h ---- libc/elf/dynamic-link.h 31 Jul 2003 06:33:50 -0000 1.48 -+++ libc/elf/dynamic-link.h 11 Aug 2003 15:49:37 -0000 -@@ -39,12 +39,21 @@ auto void __attribute__((always_inline)) - elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc, - const ElfW(Sym) *sym, const struct r_found_version *version, - void *const reloc_addr); -+# if ELF_MACHINE_REL_RELATIVE_NEEDSLINKMAP -+auto void __attribute__((always_inline)) -+elf_machine_rel_relative (struct link_map *map, ElfW(Addr) l_addr, const ElfW(Rel) *reloc, -+ void *const reloc_addr); -+auto void __attribute__((always_inline)) -+elf_machine_rela_relative (struct link_map *map, ElfW(Addr) l_addr, const ElfW(Rela) *reloc, -+ void *const reloc_addr); -+# else - auto void __attribute__((always_inline)) - elf_machine_rel_relative (ElfW(Addr) l_addr, const ElfW(Rel) *reloc, - void *const reloc_addr); - auto void __attribute__((always_inline)) - elf_machine_rela_relative (ElfW(Addr) l_addr, const ElfW(Rela) *reloc, - void *const reloc_addr); -+# endif - # if ELF_MACHINE_NO_RELA || defined ELF_MACHINE_PLT_REL - auto void __attribute__((always_inline)) - elf_machine_lazy_rel (struct link_map *map, diff --git a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-14-fpu.patch b/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-14-fpu.patch deleted file mode 100644 index b450fbfedc92..000000000000 --- a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-14-fpu.patch +++ /dev/null @@ -1,291 +0,0 @@ -diff -u -p -r1.3 fclrexcpt.c ---- libc/sysdeps/hppa/fpu/fclrexcpt.c 6 Jul 2001 04:55:52 -0000 1.3 -+++ libc/sysdeps/hppa/fpu/fclrexcpt.c 14 Oct 2003 01:25:55 -0000 -@@ -29,7 +29,7 @@ feclearexcept (int excepts) - __asm__ ("fstd %%fr0,0(%1)" : "=m" (*sw) : "r" (sw)); - - /* Clear all the relevant bits. */ -- sw[0] &= ~(excepts & FE_ALL_EXCEPT) << 27; -+ sw[0] &= ~((excepts & FE_ALL_EXCEPT) << 27); - __asm__ ("fldd 0(%0),%%fr0" : : "r" (sw)); - - /* Success. */ -diff -u -p -r1.2 fegetenv.c ---- libc/sysdeps/hppa/fpu/fegetenv.c 6 Jul 2001 04:55:52 -0000 1.2 -+++ libc/sysdeps/hppa/fpu/fegetenv.c 14 Oct 2003 01:25:55 -0000 -@@ -23,11 +23,12 @@ - int - fegetenv (fenv_t *envp) - { -- __asm__ ( -- "fstd %%fr0,0(%2)\n" -- "fstd,ma %%fr1,8(%2)\n" -- "fstd,ma %%fr2,8(%2)\n" -- "fstd %%fr3,0(%2)\n" -- : "=m" (*envp), "=r" (envp) : "1" (envp)); -+ fenv_t *temp = envp; -+ __asm__ ( "fstd,ma %%fr0,8(%1)\n" -+ "fstd,ma %%fr1,8(%1)\n" -+ "fstd,ma %%fr2,8(%1)\n" -+ "fstd %%fr3,0(%1)\n" -+ : "=m" (*temp), "+r" (temp) -+ ); - return 0; - } -diff -u -p -r1.2 feholdexcpt.c ---- libc/sysdeps/hppa/fpu/feholdexcpt.c 6 Jul 2001 04:55:52 -0000 1.2 -+++ libc/sysdeps/hppa/fpu/feholdexcpt.c 14 Oct 2003 01:25:55 -0000 -@@ -25,36 +25,29 @@ int - feholdexcept (fenv_t *envp) - { - fenv_t clear; -+ fenv_t * _regs = envp; - - /* Store the environment. */ -- { -- fenv_t * _regs = envp; -- __asm__ ( -- "fstd %%fr0,0(%2)\n" -- "fstd,ma %%fr1,8(%2)\n" -- "fstd,ma %%fr2,8(%2)\n" -- "fstd %%fr3,0(%2)\n" -- : "=m" (*_regs), "=r" (_regs) : "1" (_regs)); -- memcpy (&clear, envp, sizeof (clear)); -- } -+ __asm__ ( "fstd,ma %%fr0,8(%1)\n" -+ "fstd,ma %%fr1,8(%1)\n" -+ "fstd,ma %%fr2,8(%1)\n" -+ "fstd %%fr3,0(%1)\n" -+ : "=m" (*_regs), "+r" (_regs) -+ ); -+ -+ memcpy (&clear, envp, sizeof (clear)); - -- /* Now clear all exceptions. */ -- clear.__status_word &= ~(FE_ALL_EXCEPT << 27); -+ /* Now clear all exceptions (Enable bits and flags) */ -+ clear.__status_word &= ~((FE_ALL_EXCEPT << 27) | FE_ALL_EXCEPT); - memset (clear.__exception, 0, sizeof (clear.__exception)); - -- /* And set all exceptions to non-stop. */ -- clear.__status_word &= ~FE_ALL_EXCEPT; -- - /* Load the new environment. */ -- { -- fenv_t * _regs = &clear + 1; -- __asm__ ( -- "fldd,mb -8(%2),%%fr3\n" -- "fldd,mb -8(%2),%%fr2\n" -- "fldd,mb -8(%2),%%fr1\n" -- "fldd -8(%2),%%fr0\n" -- : "=m" (*_regs), "=r" (_regs) : "1" (_regs)); -- } -+ __asm__ ( "fldd,ma -8(%1),%%fr3\n" -+ "fldd,ma -8(%1),%%fr2\n" -+ "fldd,ma -8(%1),%%fr1\n" -+ "fldd 0(%1),%%fr0\n" -+ : "=m" (*_regs), "+r" (_regs) -+ ); - - return 0; - } -diff -u -p -r1.3 fesetenv.c ---- libc/sysdeps/hppa/fpu/fesetenv.c 10 Sep 2002 01:26:37 -0000 1.3 -+++ libc/sysdeps/hppa/fpu/fesetenv.c 14 Oct 2003 01:25:55 -0000 -@@ -26,24 +26,23 @@ int - fesetenv (const fenv_t *envp) - { - fenv_t temp; -+ fenv_t * _regs = &temp; - - /* Install the environment specified by ENVP. But there are a few - values which we do not want to come from the saved environment. - Therefore, we get the current environment and replace the values - we want to use from the environment specified by the parameter. */ -- { -- fenv_t * _regs = &temp; -- __asm__ ( -- "fstd %%fr0,0(%2)\n" -- "fstd,ma %%fr1,8(%2)\n" -- "fstd,ma %%fr2,8(%2)\n" -- "fstd %%fr3,0(%2)\n" -- : "=m" (*_regs), "=r" (_regs) : "1" (_regs)); -- } - -- temp.__status_word &= ~(FE_ALL_EXCEPT -- | (FE_ALL_EXCEPT << 27) -- | FE_DOWNWARD); -+ __asm__ ( "fstd,ma %%fr0,8(%1)\n" -+ "fstd,ma %%fr1,8(%1)\n" -+ "fstd,ma %%fr2,8(%1)\n" -+ "fstd %%fr3,0(%1)\n" -+ : "=m" (*_regs), "+r" (_regs) -+ ); -+ -+ temp.__status_word &= ~((FE_ALL_EXCEPT << 27) -+ | FE_DOWNWARD -+ | FE_ALL_EXCEPT); - if (envp == FE_DFL_ENV) - ; - else if (envp == FE_NOMASK_ENV) -@@ -55,16 +54,13 @@ fesetenv (const fenv_t *envp) - | (FE_ALL_EXCEPT << 27))); - - /* Load the new environment. */ -- { -- fenv_t * _regs = &temp + 1; -- __asm__ ( -- "fldd,mb -8(%2),%%fr3\n" -- "fldd,mb -8(%2),%%fr2\n" -- "fldd,mb -8(%2),%%fr1\n" -- "fldd -8(%2),%%fr0\n" -- : "=m" (*_regs), "=r" (_regs) : "1" (_regs)); -- } -- -+ __asm__ ( "fldd,ma -8(%1),%%fr3\n" -+ "fldd,ma -8(%1),%%fr2\n" -+ "fldd,ma -8(%1),%%fr1\n" -+ "fldd 0(%2),%%fr0\n" -+ : "=m" (*_regs), "+r" (_regs) -+ ); -+ - /* Success. */ - return 0; - } -diff -u -p -r1.2 feupdateenv.c ---- libc/sysdeps/hppa/fpu/feupdateenv.c 6 Jul 2001 04:55:52 -0000 1.2 -+++ libc/sysdeps/hppa/fpu/feupdateenv.c 14 Oct 2003 01:25:55 -0000 -@@ -27,13 +27,11 @@ feupdateenv (const fenv_t *envp) - - /* Get the current exception status. */ - __asm__ ("fstd %%fr0,0(%1)" : "=m" (*sw) : "r" (sw)); -- sw[0] &= (FE_ALL_EXCEPT << 27); -- -+ sw[0] &= FE_ALL_EXCEPT; -+ envp->__status_word = envp->__status_word | sw[0]; -+ - /* Install new environment. */ - fesetenv (envp); -- -- /* Raise the saved exception. */ -- feraiseexcept (sw[0] >> 27); - - /* Success. */ - return 0; -diff -u -p -r1.4 fraiseexcpt.c ---- libc/sysdeps/hppa/fpu/fraiseexcpt.c 10 Sep 2002 01:26:37 -0000 1.4 -+++ libc/sysdeps/hppa/fpu/fraiseexcpt.c 19 Oct 2003 21:24:11 -0000 -@@ -22,6 +22,9 @@ - #include <float.h> - #include <math.h> - -+/* Please see section 10, -+ page 10-5 "Delayed Trapping" in the PA-RISC 2.0 Architecture manual */ -+ - int - feraiseexcept (int excepts) - { -@@ -33,56 +36,64 @@ feraiseexcept (int excepts) - - /* We do these bits in assembly to be certain GCC doesn't optimize - away something important, and so we can force delayed traps to -- occur. */ -- -- /* FIXME: These all need verification! */ -+ occur. */ - -- /* First: invalid exception. */ -+ /* We use "fldd 0(%%sr0,%%sp),%0" to flush the delayed exception */ -+ -+ /* First: Invalid exception. */ - if (excepts & FE_INVALID) - { - /* One example of a invalid operation is 0 * Infinity. */ - double d = HUGE_VAL; -- __asm__ __volatile__ ("fmpy,dbl %1,%%fr0,%0\n\t" -- /* FIXME: is this a proper trap barrier? */ -- "fcpy,dbl %%fr0,%%fr0" : "=f" (d) : "0" (d)); -+ __asm__ __volatile__ ( -+ " fcpy,dbl %%fr0,%%fr22\n" -+ " fmpy,dbl %0,%%fr22,%0\n" -+ " fldd 0(%%sr0,%%sp),%0" -+ : "+f" (d) : : "%fr22" ); - } - -- /* Next: division by zero. */ -+ /* Second: Division by zero. */ - if (excepts & FE_DIVBYZERO) - { - double d = 1.0; -- __asm__ __volatile__ ("fdiv,dbl %1,%%fr0,%0\n\t" -- "fcpy,dbl %%fr0,%%fr0" : "=f" (d) : "0" (d)); -+ __asm__ __volatile__ ( -+ " fcpy,dbl %%fr0,%%fr22\n" -+ " fdiv,dbl %0,%%fr22,%0\n" -+ " fldd 0(%%sr0,%%sp),%0" -+ : "+f" (d) : : "%fr22" ); - } - -- /* Next: overflow. */ -- /* FIXME: Compare with IA-64 - do we have the same problem? */ -+ /* Third: Overflow. */ - if (excepts & FE_OVERFLOW) - { - double d = DBL_MAX; -- -- __asm__ __volatile__ ("fmpy,dbl %1,%1,%0\n\t" -- "fcpy,dbl %%fr0,%%fr0" : "=f" (d) : "0" (d)); -+ __asm__ __volatile__ ( -+ " fadd,dbl %0,%0,%0\n" -+ " fldd 0(%%sr0,%%sp),%0" -+ : "+f" (d) ); - } - -- /* Next: underflow. */ -+ /* Fourth: Underflow. */ - if (excepts & FE_UNDERFLOW) - { - double d = DBL_MIN; -- double e = 69.69; -- -- __asm__ __volatile__ ("fdiv,dbl %1,%2,%0\n\t" -- "fcpy,dbl %%fr0,%%fr0" : "=f" (d) : "0" (d), "f" (e)); -+ double e = 3.0; -+ __asm__ __volatile__ ( -+ " fdiv,dbl %0,%1,%0\n" -+ " fldd 0(%%sr0,%%sp),%0" -+ : "+f" (d) : "f" (e) ); - } - -- /* Last: inexact. */ -+ /* Fifth: Inexact */ - if (excepts & FE_INEXACT) - { -- double d = 1.0; -- double e = M_PI; -- -- __asm__ __volatile__ ("fdiv,dbl %1,%2,%0\n\t" -- "fcpy,dbl %%fr0,%%fr0" : "=f" (d) : "0" (d), "f" (e)); -+ double d = M_PI; -+ double e = 69.69; -+ __asm__ __volatile__ ( -+ " fdiv,dbl %0,%1,%%fr22\n" -+ " fcnvfxt,dbl,sgl %%fr22,%%fr22L\n" -+ " fldd 0(%%sr0,%%sp),%%fr22" -+ : : "f" (d), "f" (e) : "%fr22" ); - } - - /* Success. */ -diff -u -p -r1.2 fsetexcptflg.c ---- libc/sysdeps/hppa/fpu/fsetexcptflg.c 6 Jul 2001 04:55:52 -0000 1.2 -+++ libc/sysdeps/hppa/fpu/fsetexcptflg.c 14 Oct 2003 01:25:55 -0000 -@@ -29,8 +29,7 @@ fesetexceptflag (const fexcept_t *flagp, - /* Get the current status word. */ - __asm__ ("fstd %%fr0,0(%1)" : "=m" (*sw) : "r" (sw)); - -- /* Install the new exception flags bits. */ -- sw[0] &= ~(excepts & (FE_ALL_EXCEPT >> 27)); -+ /* Install new enable trap bits */ - sw[0] |= (*flagp & excepts & FE_ALL_EXCEPT) << 27; - - /* Store the new status word. */ diff --git a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-15-clone.patch b/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-15-clone.patch deleted file mode 100644 index 9453f501cc2e..000000000000 --- a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-15-clone.patch +++ /dev/null @@ -1,59 +0,0 @@ -diff -u -p -r1.3 clone.S ---- libc/sysdeps/unix/sysv/linux/hppa/clone.S 6 Jul 2001 04:56:15 -0000 1.3 -+++ libc/sysdeps/unix/sysv/linux/hppa/clone.S 1 Sep 2003 15:27:53 -0000 -@@ -28,6 +28,8 @@ - - /* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg) */ - -+#warning CAO: __clone needs verification -+ - .text - ENTRY(__clone) - /* FIXME: I have no idea how profiling works on hppa. */ -@@ -42,6 +44,11 @@ ENTRY(__clone) - stwm %arg0,64(%arg1) - stw %arg3,-60(%arg1) - -+ /* Save the PIC register. */ -+#ifdef PIC -+ stw %r19,-32(%sr0, %sp) /* parent */ -+#endif -+ - /* Do the system call */ - copy %arg2,%arg0 - ble 0x100(%sr2,%r0) -@@ -53,19 +60,31 @@ ENTRY(__clone) - - comib,=,n 0,%ret0,thread_start - -- /* Successful return from the parent */ -+ /* Successful return from the parent -+ No need to restore the PIC register, -+ since we return immediately. */ -+ - bv %r0(%rp) - nop - - /* Something bad happened -- no child created */ - .Lerror: -+ -+ /* Restore the PIC register on error */ -+#ifdef PIC -+ ldw -32(%sr0, %sp), %r19 /* parent */ -+#endif -+ - b __syscall_error - sub %r0,%ret0,%arg0 - - thread_start: -+ - /* Load up the arguments. */ -- ldw -60(%sp),%arg0 -- ldw -64(%sp),%r22 -+ ldw -60(%sr0, %sp),%arg0 -+ ldw -64(%sr0, %sp),%r22 -+ -+ /* $$dyncall fixes childs PIC register */ - - /* Call the user's function */ - bl $$dyncall,%r31 diff --git a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-16-prototypes.patch b/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-16-prototypes.patch deleted file mode 100644 index 9aa975050f11..000000000000 --- a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-16-prototypes.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff -u -p -r1.6 umount.c ---- libc/sysdeps/unix/sysv/linux/hppa/umount.c 6 Jul 2001 04:56:15 -0000 1.6 -+++ libc/sysdeps/unix/sysv/linux/hppa/umount.c 31 Aug 2003 00:04:39 -0000 -@@ -21,6 +21,7 @@ - does down here. */ - - extern long int __umount2 (const char *name, int flags); -+extern long int __umount (const char * name); - - long int - __umount (const char *name) diff --git a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-17-casts.patch b/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-17-casts.patch deleted file mode 100644 index ee12fbb89695..000000000000 --- a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-17-casts.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -u -p -r1.2 mmap.c ---- libc/sysdeps/unix/sysv/linux/hppa/mmap.c 6 Jul 2001 04:56:15 -0000 1.2 -+++ libc/sysdeps/unix/sysv/linux/hppa/mmap.c 31 Aug 2003 00:07:47 -0000 -@@ -37,7 +37,7 @@ __mmap (__ptr_t addr, size_t len, int pr - - __ptr_t ret; - -- ret = INLINE_SYSCALL(mmap, 6, addr, len, prot, flags, fd, offset); -+ ret = (__ptr_t)INLINE_SYSCALL(mmap, 6, addr, len, prot, flags, fd, offset); - - /* check if it's really a negative number */ - if(((unsigned long)ret & 0xfffff000) == 0xfffff000) diff --git a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-18-sgu.patch b/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-18-sgu.patch deleted file mode 100644 index 4d0fc7eb115a..000000000000 --- a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-18-sgu.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff -u -p -r1.33 attr.c ---- libc/linuxthreads/attr.c 23 Sep 2003 06:12:59 -0000 1.33 -+++ libc/linuxthreads/attr.c 18 Oct 2003 21:40:50 -0000 -@@ -455,12 +455,19 @@ int pthread_getattr_np (pthread_t thread - { - /* Found the entry. Now we have the info we need. */ - attr->__stacksize = rl.rlim_cur; -+#ifdef _STACK_GROWS_DOWN - attr->__stackaddr = (void *) to; -- -+#else -+ attr->__stackaddr = (void *) from; -+#endif - /* The limit might be too high. This is a bogus - situation but try to avoid making it worse. */ - if ((size_t) attr->__stacksize > (size_t) attr->__stackaddr) -+#ifdef _STACK_GROWS_DOWN - attr->__stacksize = (size_t) attr->__stackaddr; -+#else -+ attr->__stacksize = (size_t)(to - from); -+#endif - - /* We succeed and no need to look further. */ - ret = 0; diff --git a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-19-cancel.patch b/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-19-cancel.patch deleted file mode 100644 index 7c41d1691adc..000000000000 --- a/sys-libs/glibc/files/2.3.2/glibc-2.3.2-hppa-19-cancel.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -u -p -r1.1 sysdep-cancel.h ---- libc/linuxthreads/sysdeps/unix/sysv/linux/hppa/sysdep-cancel.h 11 Oct 2003 01:28:08 -0000 1.1 -+++ libc/linuxthreads/sysdeps/unix/sysv/linux/hppa/sysdep-cancel.h 19 Oct 2003 21:53:51 -0000 -@@ -101,7 +101,7 @@ - # define POPARGS_3 POPARGS_2 ldw -44(%sr0,%sp), %r24 ASM_LINE_SEP - # define POPARGS_4 POPARGS_3 ldw -48(%sr0,%sp), %r23 ASM_LINE_SEP - # define POPARGS_5 POPARGS_4 ldw -52(%sr0,%sp), %r22 ASM_LINE_SEP --# define POPARGS_6 POPARGS_5 ldw -54(%sr0,%sp), %r21 ASM_LINE_SEP -+# define POPARGS_6 POPARGS_5 ldw -56(%sr0,%sp), %r21 ASM_LINE_SEP - - # ifdef IS_IN_libpthread - # ifdef PIC diff --git a/sys-libs/glibc/files/digest-glibc-2.3.2-r2 b/sys-libs/glibc/files/digest-glibc-2.3.2-r2 index 8cd071e13fa8..2700a96316fa 100644 --- a/sys-libs/glibc/files/digest-glibc-2.3.2-r2 +++ b/sys-libs/glibc/files/digest-glibc-2.3.2-r2 @@ -1,4 +1,3 @@ MD5 ede969aad568f48083e413384f20753c glibc-2.3.2.tar.bz2 13377170 MD5 894b8969cfbdf787c73e139782167607 glibc-linuxthreads-2.3.2.tar.bz2 216310 -MD5 b87f2ce534e2b933c861e651dd58d5ec nptl-0.39.tar.bz2 179601 MD5 75f1469e9a1db4a5f5cd0e9fa6d5dfcc glibc-2.3.2-branch-update-20030517-1.patch.bz2 647903 diff --git a/sys-libs/glibc/files/digest-glibc-2.3.2-r3 b/sys-libs/glibc/files/digest-glibc-2.3.2-r3 index 7fb46fc2407d..a40672865820 100644 --- a/sys-libs/glibc/files/digest-glibc-2.3.2-r3 +++ b/sys-libs/glibc/files/digest-glibc-2.3.2-r3 @@ -1,3 +1,2 @@ MD5 ede969aad568f48083e413384f20753c glibc-2.3.2.tar.bz2 13377170 MD5 894b8969cfbdf787c73e139782167607 glibc-linuxthreads-2.3.2.tar.bz2 216310 -MD5 befedad981599e1a673e19c3e63d6dce nptl-0.28.tar.bz2 145910 diff --git a/sys-libs/glibc/files/digest-glibc-2.3.2-r7 b/sys-libs/glibc/files/digest-glibc-2.3.2-r7 new file mode 100644 index 000000000000..fa4b408ebdca --- /dev/null +++ b/sys-libs/glibc/files/digest-glibc-2.3.2-r7 @@ -0,0 +1,4 @@ +MD5 ede969aad568f48083e413384f20753c glibc-2.3.2.tar.bz2 13377170 +MD5 894b8969cfbdf787c73e139782167607 glibc-linuxthreads-2.3.2.tar.bz2 216310 +MD5 d8503c1c26fd15827e0812cf12fb7e28 glibc-2.3.2-branch-update-20031010.patch.bz2 1508883 +MD5 c7c27c0821245d98a0568a475c08f4e9 glibc-2.3.2-hppa-patches-p1.tar.bz2 18793 diff --git a/sys-libs/glibc/glibc-2.3.2-r7.ebuild b/sys-libs/glibc/glibc-2.3.2-r7.ebuild new file mode 100644 index 000000000000..75d294a7b4fb --- /dev/null +++ b/sys-libs/glibc/glibc-2.3.2-r7.ebuild @@ -0,0 +1,608 @@ +# Copyright 1999-2003 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/glibc-2.3.2-r7.ebuild,v 1.4 2003/11/18 22:32:28 gmsoft Exp $ + +IUSE="nls pic build nptl" + +inherit eutils flag-o-matic gcc + +filter-flags "-fomit-frame-pointer -malign-double" + +# Recently there has been a lot of stability problem in Gentoo-land. Many +# things can be the cause to this, but I believe that it is due to gcc3 +# still having issues with optimizations, or with it not filtering bad +# combinations (protecting the user maybe from himeself) yet. +# +# This can clearly be seen in large builds like glibc, where too aggressive +# CFLAGS cause the tests to fail miserbly. +# +# Quote from Nick Jones <carpaski@gentoo.org>, who in my opinion +# knows what he is talking about: +# +# People really shouldn't force code-specific options on... It's a +# bad idea. The -march options aren't just to look pretty. They enable +# options that are sensible (and include sse,mmx,3dnow when apropriate). +# +# The next command strips CFLAGS and CXXFLAGS from nearly all flags. If +# you do not like it, comment it, but do not bugreport if you run into +# problems. +# +# <azarah@gentoo.org> (13 Oct 2002) +strip-flags + +# Lock glibc at -O2 -- linuxthreads needs it and we want to be conservative here +export CFLAGS="${CFLAGS//-O?} -O2" +export CXXFLAGS="${CFLAGS}" + +BRANCH_UPDATE="20031010" + +# Minimum kernel version for --enable-kernel +export MIN_KV="2.4.1" +# Minimum kernel version for enabling TLS and NPTL ... +# NOTE: do not change this if you do not know what +# you are doing ! +export MIN_NPTL_KV="2.6.0" + +MY_PV="${PV/_}" +S="${WORKDIR}/${P%_*}" +DESCRIPTION="GNU libc6 (also called glibc2) C library" +SRC_URI="http://ftp.gnu.org/gnu/glibc/glibc-${MY_PV}.tar.bz2 + ftp://sources.redhat.com/pub/glibc/snapshots/glibc-${MY_PV}.tar.bz2 + http://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-${MY_PV}.tar.bz2 + ftp://sources.redhat.com/pub/glibc/snapshots/glibc-linuxthreads-${MY_PV}.tar.bz2 + mirror://gentoo/${P}-branch-update-${BRANCH_UPDATE}.patch.bz2 + hppa? ( mirror://gentoo/${P}-hppa-patches-p1.tar.bz2 )" +HOMEPAGE="http://www.gnu.org/software/libc/libc.html" + +KEYWORDS="-* ~hppa" +# Is 99% compadible, just some .a's bork +SLOT="2.2" +LICENSE="LGPL-2" + +# We need new cleanup attribute support from gcc for NPTL among things ... +DEPEND=">=sys-devel/gcc-3.2.3-r1 + nptl? ( >=sys-devel/gcc-3.3.1-r1 ) + >=sys-devel/binutils-2.14.90.0.6-r1 + hppa? ( >=sys-kernel/hppa-headers-2.4.21_p13 ) : ( virtual/os-headers ) + nls? ( sys-devel/gettext )" + +RDEPEND="virtual/os-headers + sys-apps/baselayout + nls? ( sys-devel/gettext )" + +PROVIDE="virtual/glibc" + + +# Try to get a kernel source tree with version equal or greater +# than $1. We basically just try a few default locations. The +# version need to be that which KV_to_int() returns ... +get_KHV() { + local headers= + + [ -z "$1" ] && return 1 + + # - First check if linux-headers are installed (or symlink + # to current kernel ...) + # - Ok, do we have access to the current kernel's headers ? + # - Last option ... maybe its a weird bootstrap with /lib + # binded to the chroot ... + + # We do not really support more than 2 arguments ... + if [ -n "$2" ] + then + headers="$2" + else + # We try to find the current kernel's headers first, + # as we would rather build against linux 2.5 headers ... + headers="/lib/modules/`uname -r`/build/include \ + ${ROOT}/lib/modules/`uname -r`/build/include \ + /usr/src/linux/include \ + ${ROOT}/usr/src/linux/include \ + ${ROOT}/usr/include" + fi + + for x in ${headers} + do + local header="${x}/linux/version.h" + + if [ -f ${header} ] + then + + local version="`grep 'LINUX_VERSION_CODE' ${header} | \ + sed -e 's:^.*LINUX_VERSION_CODE[[:space:]]*::'`" + + if [ "${version}" -ge "$1" ] + then + echo "${x}" + + return 0 + fi + fi + done + + return 1 +} + +use_nptl() { + # Enable NPTL support if: + # - We have 'nptl' in USE + # - We have linux-2.5 or later kernel (should prob check for 2.4.20 ...) + if [ -n "`use nptl`" -a "`get_KV`" -ge "`KV_to_int ${MIN_NPTL_KV}`" ] + then + # Enable NPTL support if: + # - We have 'x86' in USE and: + # - a CHOST of "i486-pc-linux-gnu" + # - a CHOST of "i586-pc-linux-gnu" + # - a CHOST of "i686-pc-linux-gnu" + # - Or we have 'alpha' in USE + # - Or we have 'amd64' in USE + # - Or we have 'mips' in USE + # - Or we have 'ppc' in USE + case ${ARCH} in + "x86") + if [ "${CHOST/-*}" = "i486" -o \ + "${CHOST/-*}" = "i586" -o \ + "${CHOST/-*}" = "i686" ] + then + return 0 + fi + ;; + "alpha"|"amd64"|"mips"|"ppc") + return 0 + ;; + *) + return 1 + ;; + esac + fi + + return 1 +} + +pkg_setup() { + # We need gcc 3.2 or later ... + if [ "`gcc-major-version`" -ne "3" -o "`gcc-minor-version`" -lt "2" ] + then + echo + eerror "As of glibc-2.3, gcc-3.2 or later is needed" + eerror "for the build to succeed." + die "GCC too old" + fi + + echo + + if use_nptl + then + # The use_nptl should have already taken care of kernel version, + # arch and CHOST, so now just check if we can find suitable kernel + # source tree or headers .... + einfon "Checking for sufficient version kernel headers ... " + if ! get_KHV "`KV_to_int ${MIN_NPTL_KV}`" &> /dev/null + then + echo "no" + echo + eerror "Could not find a kernel source tree or headers with" + eerror "version ${MIN_NPTL_KV} or later! Please correct this" + eerror "and try again." + die "Insufficient kernel headers present!" + else + echo "yes" + fi + fi + + if [ "$(KV_to_int $(uname -r))" -gt "`KV_to_int '2.5.68'`" ] + then + local KERNEL_HEADERS="$(get_KHV "`KV_to_int ${MIN_NPTL_KV}`")" + + einfon "Checking kernel headers for broken sysctl.h ... " + if ! gcc -I"${KERNEL_HEADERS}" \ + -c ${FILESDIR}/test-sysctl_h.c -o ${T}/test1.o &> /dev/null + then + echo "yes" + echo + eerror "Your version of:" + echo + eerror " ${KERNEL_HEADERS}/linux/sysctl.h" + echo + eerror "is broken (from a user space perspective). Please apply" + eerror "the following patch:" + echo + eerror "*******************************************************" + cat ${FILESDIR}/fix-sysctl_h.patch + eerror "*******************************************************" + die "Broken linux/sysctl.h header included in kernel sources!" + else + echo "no" + fi + fi + + if use_nptl + then + einfon "Checking gcc for __thread support ... " + if ! gcc -c ${FILESDIR}/test-__thread.c -o ${T}/test2.o &> /dev/null + then + echo "no" + echo + eerror "Could not find a gcc that supports the __thread directive!" + eerror "please update to gcc-3.2.2-r1 or later, and try again." + die "No __thread support in gcc!" + else + echo "yes" + fi + + echo + + elif use nptl &> /dev/null + then + # Just tell the user not to expect too much ... + ewarn "You have \"nptl\" in your USE, but your kernel version or" + ewarn "architecture does not support it!" + fi +} + +src_unpack() { + + unpack glibc-${MY_PV}.tar.bz2 + + # Extract pre-made man pages. Otherwise we need perl, which is a no-no. + mkdir -p ${S}/man; cd ${S}/man + use_nptl || tar xjf ${FILESDIR}/glibc-manpages-${MY_PV}.tar.bz2 + + cd ${S} + # Extract our threads package ... + if (! use_nptl) && [ -z "${BRANCH_UPDATE}" ] + then + # The branch update have this already included ... + unpack glibc-linuxthreads-${MY_PV}.tar.bz2 + fi + + if [ -n "${BRANCH_UPDATE}" ] + then + epatch ${DISTDIR}/${P}-branch-update-${BRANCH_UPDATE}.patch.bz2 + fi + + if use_nptl + then + epatch ${FILESDIR}/2.3.2/${P}-redhat-nptl-fixes.patch + else + epatch ${FILESDIR}/2.3.2/${P}-redhat-linuxthreads-fixes.patch + fi + + # This next patch fixes a test that will timeout due to ReiserFS' slow handling of sparse files +# cd ${S}/io; epatch ${FILESDIR}/glibc-2.2.2-test-lfs-timeout.patch + + # This add back glibc 2.2 compadibility. See bug #8766 and #9586 for more info, + # and also: + # + # http://lists.debian.org/debian-glibc/2002/debian-glibc-200210/msg00093.html + # + # We should think about remoing it in the future after things have settled. + # + # Thanks to Jan Gutter <jangutter@tuks.co.za> for reporting it. + # + # <azarah@gentoo.org> (26 Oct 2002). + cd ${S}; epatch ${FILESDIR}/2.3.1/${PN}-2.3.1-ctype-compat-v3.patch + + # One more compat issue which breaks sun-jdk-1.3.1. See bug #8766 for more + # info, and also: + # + # http://sources.redhat.com/ml/libc-alpha/2002-04/msg00143.html + # + # Thanks to Jan Gutter <jangutter@tuks.co.za> for reporting it. + # + # <azarah@gentoo.org> (30 Oct 2002). + cd ${S}; epatch ${FILESDIR}/2.3.1/${PN}-2.3.1-libc_wait-compat.patch + + # One more compat issue ... libc_stack_end is missing from ld.so. + # Got this one from diffing redhat glibc tarball .. would help if + # they used patches and not modified tarball ... + # + # <azarah@gentoo.org> (7 Nov 2002). +# cd ${S}; epatch ${FILESDIR}/2.3.1/${PN}-2.3.1-stack_end-compat.patch + + # The mathinline.h header omits the middle term of a ?: expression. This + # is a gcc extension, but since the ISO standard forbids it, it's a + # GLIBC bug (bug #27142). See also: + # + # http://bugs.gentoo.org/show_bug.cgi?id=27142 + # + cd ${S}; epatch ${FILESDIR}/${PV}/${P}-fix-omitted-operand-in-mathinline_h.patch + + # A few patches only for the MIPS platform. Descriptions of what they + # do can be found in the patch headers. + # <tuxus@gentoo.org> thx <dragon@gentoo.org> (11 Jan 2003) + # <kumba@gentoo.org> remove tst-rndseek-mips & ulps-mips patches + if [ "${ARCH}" = "mips" ] + then + cd ${S} + epatch ${FILESDIR}/2.3.1/${PN}-2.3.1-fpu-cw-mips.patch + epatch ${FILESDIR}/2.3.1/${PN}-2.3.1-libgcc-compat-mips.patch + epatch ${FILESDIR}/2.3.1/${PN}-2.3.1-librt-mips.patch + epatch ${FILESDIR}/2.3.2/${P}-mips-add-n32-n64-sysdep-cancel.patch + epatch ${FILESDIR}/2.3.2/${P}-mips-configure-for-n64-symver.patch + epatch ${FILESDIR}/2.3.2/${P}-mips-pread-linux2.5.patch + fi + + if [ "${ARCH}" = "alpha" ] + then + # Fix compatability with compaq compilers by ifdef'ing out some + # 2.3.2 additions. + # <taviso@gentoo.org> (14 Jun 2003). + cd ${S}; epatch ${FILESDIR}/2.3.2/${P}-decc-compaq.patch + fi + + if [ "${ARCH}" = "amd64" ] + then + cd ${S}; epatch ${FILESDIR}/2.3.2/${P}-amd64-nomultilib.patch + fi + + if [ "${ARCH}" = "ia64" ] + then + # The basically problem is glibc doesn't store information about + # what the kernel interface is so that it can't efficiently set up + # parameters for system calls. This patch from H.J. Lu fixes it: + # + # http://sources.redhat.com/ml/libc-alpha/2003-09/msg00165.html + # + cd ${S}; epatch ${FILESDIR}/2.3.2/${P}-ia64-LOAD_ARGS-fixup.patch + fi + if [ "${ARCH}" = "hppa" ] + then + cd ${WORKDIR} + unpack ${P}-hppa-patches-p1.tar.bz2 + cd ${S} + EPATCH_EXCLUDE="010_hppa_misc.patch 030_hppa_sysdep1.patch 040_hppa_sysdep2.patch 050_hppa_sysdep3.patch" + #EPATCH_SUFFIX="patch" epatch ${WORKDIR}/${P}-hppa-patches/ + #Small workaround for bug 33636 + for i in $EPATCH_EXCLUDE + do + rm ${WORKDIR}/${P}-hppa-patches/$i + done + for i in ${WORKDIR}/${P}-hppa-patches/* + do + einfo Applying `basename $i`... + patch -p1 < $i + done + + + fi + + # Quick fix for borkage with sys-libs/pwdb, xfree, etc. + cp -f ${FILESDIR}/2.3.2/sysmacros.h \ + ${S}/sysdeps/unix/sysv/linux/sys/sysmacros.h + + # Fix permissions on some of the scripts + chmod u+x ${S}/scripts/*.sh +} + +setup_flags() { + # -freorder-blocks for all but ia64 s390 s390x + use ppc || append-flags "-freorder-blocks" + + # Sparc/Sparc64 support + if [ -n "`use sparc`" ] + then + + # Both sparc and sparc64 can use -fcall-used-g6. -g7 is bad, though. + replace-flags "-fcall-used-g7" "" + append-flags "-fcall-used-g6" + + # Sparc64 Only support... + if [ "${PROFILE_ARCH}" = "sparc64" ] + then + + # Get rid of -mcpu options, the CHOST will fix this up + replace-flags "-mcpu=ultrasparc" "" + replace-flags "-mcpu=v9" "" + + # Get rid of flags known to fail + replace-flags "-mvis" "" + + # Setup the CHOST properly to insure "sparcv9" + # This passes -mcpu=ultrasparc -Wa,-Av9a to the compiler + export CHOST="${CHOST/sparc/sparcv9}" + fi + fi +} + +src_compile() { + local myconf= + local myconf_nptl= + + setup_flags + + # These should not be set, else the + # zoneinfo do not always get installed ... + unset LANGUAGE LANG LC_ALL + + use nls || myconf="${myconf} --disable-nls" + + if use_nptl + then + local kernelheaders="$(get_KHV "`KV_to_int ${MIN_NPTL_KV}`")" + + # NTPL and Thread Local Storage support. + myconf="${myconf} --with-tls --with-__thread \ + --enable-add-ons=nptl \ + --enable-kernel=${MIN_NPTL_KV} \ + --with-headers=${kernelheaders}" + else + myconf="${myconf} --without-tls --without-__thread \ + --enable-add-ons=linuxthreads" + + # If we build for the build system we use the kernel headers from the target + # We also now set it without "build" as well, else it might use the + # current kernel's headers, which might just fail (the linux-headers + # package is usually well tested...) +# ( use build || use sparc ) \ +# && myconf="${myconf} --with-headers=${ROOT}usr/include" + myconf="${myconf} --with-headers=${ROOT}usr/include" + + # If kernel version and headers in ${ROOT}/usr/include are ok, + # then enable --enable-kernel=${MIN_KV} ... + if [ "`get_KV`" -ge "`KV_to_int ${MIN_KV}`" -a \ + -n "$(get_KHV "`KV_to_int ${MIN_KV}`" "${ROOT}/usr/include")" ] + then + myconf="${myconf} --enable-kernel=${MIN_KV}" + else + myconf="${myconf} --enable-kernel=2.2.5" + fi + fi + + einfo "Configuring GLIBC..." + rm -rf ${S}/buildhere + mkdir -p ${S}/buildhere + cd ${S}/buildhere + ../configure --build=${CHOST} \ + --host=${CHOST} \ + --with-gd=no \ + --without-cvs \ + --disable-profile \ + --prefix=/usr \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --libexecdir=/usr/lib/misc \ + ${myconf} || die + + einfo "Building GLIBC..." + cd ${S}/buildhere + make PARALLELMFLAGS="${MAKEOPTS}" || die +# einfo "Doing GLIBC checks..." +# make check +} + +src_install() { + local buildtarget="buildhere" + + setup_flags + + # These should not be set, else the + # zoneinfo do not always get installed ... + unset LANGUAGE LANG LC_ALL + + einfo "Installing GLIBC..." + make PARALLELMFLAGS="${MAKEOPTS}" \ + install_root=${D} \ + install -C ${buildtarget} || die + + # If librt.so is a symlink, change it into linker script (Redhat) + if [ -L "${D}/usr/lib/librt.so" -a "${LIBRT_LINKERSCRIPT}" = "yes" ] + then + local LIBRTSO="`cd ${D}/lib; echo librt.so.*`" + local LIBPTHREADSO="`cd ${D}/lib; echo libpthread.so.*`" + + rm -f ${D}/usr/lib/librt.so + cat > ${D}/usr/lib/librt.so <<EOF +/* GNU ld script + librt.so.1 needs libpthread.so.0 to come before libc.so.6* + in search scope. */ +EOF + grep "OUTPUT_FORMAT" ${D}/usr/lib/libc.so >> ${D}/usr/lib/librt.so + echo "GROUP ( /lib/${LIBPTHREADSO} /lib/${LIBRTSO} )" \ + >> ${D}/usr/lib/librt.so + + for x in ${D}/usr/lib/librt.so.[1-9] + do + [ -L "${x}" ] && rm -f ${x} + done + fi + + if [ -z "`use build`" ] + then + einfo "Installing Info pages..." + make PARALLELMFLAGS="${MAKEOPTS}" \ + install_root=${D} \ + info -C ${buildtarget} || die + + einfo "Installing Locale data..." + make PARALLELMFLAGS="${MAKEOPTS}" \ + install_root=${D} \ + localedata/install-locales -C ${buildtarget} || die + + # Compatibility hack: this locale has vanished from glibc, + # but some other programs are still using it. + keepdir /usr/lib/locale/ru_RU/LC_MESSAGES + + einfo "Installing man pages and docs..." + # Install linuxthreads man pages + use_nptl || { + dodir /usr/share/man/man3 + doman ${S}/man/*.3thr + } + + # Install nscd config file + insinto /etc + doins ${FILESDIR}/nscd.conf + + dodoc BUGS ChangeLog* CONFORMANCE COPYING* FAQ INTERFACE \ + NEWS NOTES PROJECTS README* + else + rm -rf ${D}/usr/share ${D}/usr/lib/gconv + + einfo "Installing Timezone data..." + make PARALLELMFLAGS="${MAKEOPTS}" \ + install_root=${D} \ + timezone/install-others -C ${buildtarget} || die + fi + + if [ "`use pic`" ] + then + find ${S}/${buildtarget}/ -name "soinit.os" -exec cp {} ${D}/lib/soinit.o \; + find ${S}/${buildtarget}/ -name "sofini.os" -exec cp {} ${D}/lib/sofini.o \; + find ${S}/${buildtarget}/ -name "*_pic.a" -exec cp {} ${D}/lib \; + find ${S}/${buildtarget}/ -name "*.map" -exec cp {} ${D}/lib \; + for i in ${D}/lib/*.map + do + mv ${i} ${i%.map}_pic.map + done + fi + + # Is this next line actually needed or does the makefile get it right? + # It previously has 0755 perms which was killing things. + fperms 4755 /usr/lib/misc/pt_chown + + # Currently libraries in /usr/lib/gconv do not get loaded if not + # in search path ... +# insinto /etc/env.d +# doins ${FILESDIR}/03glibc + + rm -f ${D}/etc/ld.so.cache + + # Prevent overwriting of the /etc/localtime symlink. We'll handle the + # creation of the "factory" symlink in pkg_postinst(). + rm -f ${D}/etc/localtime + + # Some things want this, notably ash. + dosym /usr/lib/libbsd-compat.a /usr/lib/libbsd.a +} + +pkg_postinst() { + # Correct me if I am wrong here, but my /etc/localtime is a file + # created by zic .... + # I am thinking that it should only be recreated if no /etc/localtime + # exists, or if it is an invalid symlink. + # + # For invalid symlink: + # -f && -e will fail + # -L will succeed + # + if [ ! -e ${ROOT}/etc/localtime ] + then + echo "Please remember to set your timezone using the zic command." + rm -f ${ROOT}/etc/localtime + ln -s ../usr/share/zoneinfo/Factory ${ROOT}/etc/localtime + fi + + if [ -x ${ROOT}/usr/sbin/iconvconfig ] + then + # Generate fastloading iconv module configuration file. + ${ROOT}/usr/sbin/iconvconfig --prefix=${ROOT} + fi + + # Reload init ... + if [ "${ROOT}" = "/" ] + then + /sbin/init U &> /dev/null + fi +} + diff --git a/sys-libs/glibc/glibc-2.3.2-r8.ebuild b/sys-libs/glibc/glibc-2.3.2-r8.ebuild index 47fa5de9afd5..614c0eb143ca 100644 --- a/sys-libs/glibc/glibc-2.3.2-r8.ebuild +++ b/sys-libs/glibc/glibc-2.3.2-r8.ebuild @@ -1,6 +1,6 @@ # Copyright 1999-2003 Gentoo Technologies, Inc. # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/glibc-2.3.2-r8.ebuild,v 1.6 2003/11/02 04:51:15 agriffis Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/glibc-2.3.2-r8.ebuild,v 1.7 2003/11/18 22:32:28 gmsoft Exp $ IUSE="nls pic build nptl" @@ -53,7 +53,7 @@ SRC_URI="http://ftp.gnu.org/gnu/glibc/glibc-${MY_PV}.tar.bz2 mirror://gentoo/${P}-branch-update-${BRANCH_UPDATE}.patch.bz2" HOMEPAGE="http://www.gnu.org/software/libc/libc.html" -KEYWORDS="-* ~x86 ~sparc ~amd64 ~hppa ~alpha" +KEYWORDS="-* ~x86 ~sparc ~amd64 -hppa ~alpha" # Is 99% compadible, just some .a's bork SLOT="2.2" LICENSE="LGPL-2" @@ -353,35 +353,6 @@ src_unpack() { cd ${S}; epatch ${FILESDIR}/2.3.2/${P}-ia64-LOAD_ARGS-fixup.patch fi - if [ "${ARCH}" = "hppa" ] - then - # Guy Martin <gmsoft@gentoo.org> (27 Oct 2003) - # Doing like this can seems a bit ugly but it allow me to - # change which patch will be applied in further reakease of - # the glibc ebuild. If somone know a better way to do this - # feel fre to let me know - cd ${S} - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-00-pthreads.patch - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-01-sysdeps-pthreads.patch - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-02-pthreads.patch - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-03-dl-machine.patch - epatch ${FILESDIR}/2.3.1/glibc23-07-hppa-atomicity.dpatch - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-05-entry.patch - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-06-oldsemaphore.patch - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-07-framestatefor.patch - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-08-dlfptr.patch - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-09-pthreadtypes.patch - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-10-ptmachine.patch - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-11-kernelstat.patch - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-12-unwind-dw2.patch - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-13-dynamiclink.patch - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-14-fpu.patch - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-15-clone.patch - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-16-prototypes.patch - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-17-casts.patch - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-18-sgu.patch - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-19-cancel.patch - fi # Fix permissions on some of the scripts chmod u+x ${S}/scripts/*.sh diff --git a/sys-libs/glibc/glibc-2.3.2-r9.ebuild b/sys-libs/glibc/glibc-2.3.2-r9.ebuild index fe9012048fad..c04ec020cb89 100644 --- a/sys-libs/glibc/glibc-2.3.2-r9.ebuild +++ b/sys-libs/glibc/glibc-2.3.2-r9.ebuild @@ -1,6 +1,6 @@ # Copyright 1999-2003 Gentoo Technologies, Inc. # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/glibc-2.3.2-r9.ebuild,v 1.1 2003/11/18 19:04:16 azarah Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/glibc-2.3.2-r9.ebuild,v 1.2 2003/11/18 22:32:28 gmsoft Exp $ IUSE="nls pic build nptl" @@ -53,7 +53,7 @@ SRC_URI="http://ftp.gnu.org/gnu/glibc/glibc-${MY_PV}.tar.bz2 mirror://gentoo/${P}-branch-update-${BRANCH_UPDATE}.patch.bz2" HOMEPAGE="http://www.gnu.org/software/libc/libc.html" -KEYWORDS="~x86 ~sparc ~amd64 ~hppa ~alpha" +KEYWORDS="~x86 ~sparc ~amd64 -hppa ~alpha" SLOT="2.2" LICENSE="LGPL-2" @@ -373,35 +373,6 @@ src_unpack() { cd ${S}; epatch ${FILESDIR}/2.3.2/${P}-ia64-LOAD_ARGS-fixup.patch fi - if [ "${ARCH}" = "hppa" ] - then - # Guy Martin <gmsoft@gentoo.org> (27 Oct 2003) - # Doing like this can seems a bit ugly but it allow me to - # change which patch will be applied in further reakease of - # the glibc ebuild. If somone know a better way to do this - # feel fre to let me know - cd ${S} - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-00-pthreads.patch - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-01-sysdeps-pthreads.patch - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-02-pthreads.patch - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-03-dl-machine.patch - epatch ${FILESDIR}/2.3.1/glibc23-07-hppa-atomicity.dpatch - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-05-entry.patch - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-06-oldsemaphore.patch - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-07-framestatefor.patch - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-08-dlfptr.patch - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-09-pthreadtypes.patch - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-10-ptmachine.patch - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-11-kernelstat.patch - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-12-unwind-dw2.patch - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-13-dynamiclink.patch - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-14-fpu.patch - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-15-clone.patch - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-16-prototypes.patch - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-17-casts.patch - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-18-sgu.patch - epatch ${FILESDIR}/2.3.2/glibc-2.3.2-hppa-19-cancel.patch - fi # Fix permissions on some of the scripts chmod u+x ${S}/scripts/*.sh |