diff options
author | Ulrich Drepper <drepper@redhat.com> | 2003-01-27 21:03:22 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2003-01-27 21:03:22 +0000 |
commit | 62f29da7cbc527e8f8dda4f5101e6ac504c98505 (patch) | |
tree | d1f7d7ed70c131129214bc71441b1d8bbfc7268f /linuxthreads/sysdeps | |
parent | e4e9446ba3c762d9bddd2718f889af545bf4e95c (diff) | |
download | glibc-62f29da7cbc527e8f8dda4f5101e6ac504c98505.tar glibc-62f29da7cbc527e8f8dda4f5101e6ac504c98505.tar.gz glibc-62f29da7cbc527e8f8dda4f5101e6ac504c98505.tar.bz2 glibc-62f29da7cbc527e8f8dda4f5101e6ac504c98505.zip |
Update.
2003-01-26 Andreas Schwab <schwab@suse.de>
* sysdeps/wordsize-32/divdi3.c: Export the functions only as
compatibility symbols. Remove INTDEF for __divdi3.
* sysdeps/wordsize-32/lldiv.c: Don't use __divdi3_internal.
* sysdeps/powerpc/powerpc32/divdi3.c: Remove.
* sysdeps/powerpc/powerpc32/Makefile (CPPFLAGS-divdi3.c): Don't
define.
* sysdeps/powerpc/powerpc32/Dist: Remove divdi3.c.
2003-01-24 Jakub Jelinek <jakub@redhat.com>
* elf/tls-macros.h: Add SPARC 32-bit definitions.
* sysdeps/sparc/sparc32/elf/configure.in: Add TLS check.
* sysdeps/sparc/sparc32/dl-machine.h: Add dl_machine_h guards
for the first half of the header. Include tls.h.
(elf_machine_type_class): Return ELF_RTYPE_CLASS_PLT for TLS
relocs too.
(elf_machine_rela): Handle TLS relocs.
* sysdeps/sparc/dl-tls.h: New file.
* sysdeps/unix/sysv/linux/sparc/sparc32/socket.S: Add cancellation
support.
* sysdeps/sparc/sparc32/sparcv9/hp-timing.h: Use %g6 instead of %g7.
* sysdeps/sparc/sparc32/memchr.S: Likewise.
* sysdeps/sparc/sparc32/memcpy.S: Likewise.
* sysdeps/sparc/sparc32/strcat.S: Likewise.
* sysdeps/sparc/sparc32/strchr.S: Likewise.
* sysdeps/sparc/sparc32/strcmp.S: Likewise.
* sysdeps/sparc/sparc32/strcpy.S: Likewise.
* sysdeps/sparc/sparc64/sparcv9b/memcpy.S: Likewise.
* sysdeps/sparc/sparc64/hp-timing.h: Likewise.
* sysdeps/sparc/sparc64/memcpy.S: Likewise.
* sysdeps/sparc/sparc64/stpcpy.S: Likewise.
* sysdeps/sparc/sparc64/stpncpy.S: Likewise.
* sysdeps/sparc/sparc64/strcat.S: Likewise.
* sysdeps/sparc/sparc64/strchr.S: Likewise.
* sysdeps/sparc/sparc64/strcmp.S: Likewise.
* sysdeps/sparc/sparc64/strcpy.S: Likewise.
* sysdeps/sparc/sparc64/strncmp.S: Likewise.
* sysdeps/sparc/sparc64/strncpy.S: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h: Likewise.
2003-01-24 Andreas Schwab <schwab@suse.de>
* elf/dl-close.c (_dl_close): Don't relocate DT_FINI_ARRAY
elements, and process them backwards.
* elf/Makefile ($(objpfx)tst-array4): New target.
($(objpfx)tst-array4.out): Likewise.
(tests) [$(have-initfini-array) = yes]: Add tst-array4.
* elf/tst-array4.c: New file.
* elf/tst-array4.exp: Likewise.
2003-01-24 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/unix/sysv/linux/powerpc/powerpc64/fe_nomask.c: New file.
2003-01-27 Guido Guenther <agx@sigxcpu.org>
* sysdeps/unix/sysv/linux/mips/sysdep.h (SYSCALL_ERROR_LABEL): Define.
* sysdeps/unix/sysv/linux/mips/pread.c: Add support for
cancellation handling and handle both __NR_pread64 and __NR_pread.
* sysdeps/unix/sysv/linux/mips/pread64.c: Likewise.
* sysdeps/unix/sysv/linux/mips/pwrite.c: Add support for
cancellation handling and handle both __NR_pwrite64 and __NR_pwrite.
* sysdeps/unix/sysv/linux/mips/pwrite64.c: Likewise.
* sysdeps/unix/mips/sysdep.S: Don't set errno in the _LIBC_REENTRANT
case, use register names consistently.
2003-01-27 Wolfram Gloger <wg@malloc.de>
* malloc/hooks.c (mem2chunk_check): Check alignment of mem
pointer, not of the computed chunk. Bug report from Carlos
O'Donell <carlos@baldric.uwo.ca>.
Diffstat (limited to 'linuxthreads/sysdeps')
7 files changed, 66 insertions, 19 deletions
diff --git a/linuxthreads/sysdeps/sparc/sparc32/pt-machine.h b/linuxthreads/sysdeps/sparc/sparc32/pt-machine.h index 2e912332f5..cbfc872df2 100644 --- a/linuxthreads/sysdeps/sparc/sparc32/pt-machine.h +++ b/linuxthreads/sysdeps/sparc/sparc32/pt-machine.h @@ -1,6 +1,6 @@ /* Machine-dependent pthreads configuration and inline functions. sparc version. - Copyright (C) 1996,1997,1998,2000,2001,2002 Free Software Foundation, Inc. + Copyright (C) 1996-1998, 2000-2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Richard Henderson <rth@tamu.edu>. @@ -53,10 +53,10 @@ testandset (int *spinlock) register char *stack_pointer __asm__("%sp"); -/* Registers %g6 and %g7 are reserved by the ABI for "system use". It - happens that Solaris uses %g6 for the thread pointer -- we do the same. */ +/* Registers %g6 and %g7 are reserved by the ABI for "system use". + %g7 is specified in the TLS ABI as thread pointer -- we do the same. */ struct _pthread_descr_struct; -register struct _pthread_descr_struct *__thread_self __asm__("%g6"); +register struct _pthread_descr_struct *__thread_self __asm__("%g7"); /* Return the thread descriptor for the current thread. */ #define THREAD_SELF __thread_self diff --git a/linuxthreads/sysdeps/sparc/sparc64/pt-machine.h b/linuxthreads/sysdeps/sparc/sparc64/pt-machine.h index f32b1feac8..3087020e1b 100644 --- a/linuxthreads/sysdeps/sparc/sparc64/pt-machine.h +++ b/linuxthreads/sysdeps/sparc/sparc64/pt-machine.h @@ -1,6 +1,6 @@ /* Machine-dependent pthreads configuration and inline functions. Sparc v9 version. - Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc. + Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Richard Henderson <rth@tamu.edu>. @@ -59,10 +59,10 @@ testandset (int *spinlock) register char *stack_pointer __asm__ ("%sp"); -/* Registers %g6 and %g7 are reserved by the ABI for "system use". It - happens that Solaris uses %g6 for the thread pointer -- we do the same. */ +/* Registers %g6 and %g7 are reserved by the ABI for "system use". The + TLS ABI specifies %g7 as the thread pointer. */ struct _pthread_descr_struct; -register struct _pthread_descr_struct *__thread_self __asm__ ("%g6"); +register struct _pthread_descr_struct *__thread_self __asm__ ("%g7"); /* Return the thread descriptor for the current thread. */ #define THREAD_SELF __thread_self diff --git a/linuxthreads/sysdeps/sparc/tls.h b/linuxthreads/sysdeps/sparc/tls.h index 4571922f57..9a9719c48e 100644 --- a/linuxthreads/sysdeps/sparc/tls.h +++ b/linuxthreads/sysdeps/sparc/tls.h @@ -1,5 +1,5 @@ /* Definitions for thread-local data handling. linuxthreads/sparc version. - Copyright (C) 2002 Free Software Foundation, Inc. + Copyright (C) 2002, 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 @@ -45,9 +45,56 @@ typedef struct # include <tcb-offsets.h> #endif /* __ASSEMBLER__ */ -#undef USE_TLS +#ifdef HAVE_TLS_SUPPORT -#if USE_TLS +/* 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 *) __thread_self)->dtv = (DTV)) + +/* Return dtv of given thread descriptor. */ +# define GET_DTV(descr) \ + (((tcbhead_t *) (descr))->dtv) + +/* Code to initially initialize the thread pointer. */ +# define TLS_INIT_TP(descr, secondcall) \ + (__thread_self = (__typeof (__thread_self)) (descr), NULL) + +/* Return the address of the dtv for the current thread. */ +# define THREAD_DTV() \ + (((tcbhead_t *) __thread_self)->dtv) + +# endif #else diff --git a/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h b/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h index 66aaeabdde..545e1d367f 100644 --- a/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h +++ b/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Jakub Jelinek <jakub@redhat.com>, 2002. @@ -29,7 +29,7 @@ # define PSEUDO(name, syscall_name, args) \ .text; \ ENTRY(name) \ - ld [%g6 + MULTIPLE_THREADS_OFFSET], %g1; \ + ld [%g7 + MULTIPLE_THREADS_OFFSET], %g1; \ cmp %g1, 0; \ bne 1f; \ mov SYS_ify(syscall_name), %g1; \ @@ -86,7 +86,7 @@ SYSCALL_ERROR_HANDLER_ENTRY(__syscall_error_handler2) \ __builtin_expect (THREAD_GETMEM (THREAD_SELF, \ p_header.data.multiple_threads) == 0, 1) # else -# define SINGLE_THREAD_P ld [%g6 + MULTIPLE_THREADS_OFFSET], %g1 +# define SINGLE_THREAD_P ld [%g7 + MULTIPLE_THREADS_OFFSET], %g1 # endif #elif !defined __ASSEMBLER__ diff --git a/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S b/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S index 9378bd8522..456fe74362 100644 --- a/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S +++ b/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S @@ -21,7 +21,7 @@ .text ENTRY(__vfork) - ld [%g6 + MULTIPLE_THREADS_OFFSET], %o0 + ld [%g7 + MULTIPLE_THREADS_OFFSET], %o0 cmp %o0, 0 #ifdef SHARED bne HIDDEN_JUMPTARGET(__fork) diff --git a/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h b/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h index 7d4f9b5ea8..dff728a81a 100644 --- a/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h +++ b/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Jakub Jelinek <jakub@redhat.com>, 2002. @@ -29,7 +29,7 @@ # define PSEUDO(name, syscall_name, args) \ .text; \ ENTRY(name) \ - ld [%g6 + MULTIPLE_THREADS_OFFSET], %g1; \ + ld [%g7 + MULTIPLE_THREADS_OFFSET], %g1; \ brz,pn %g1, 1f; \ mov SYS_ify(syscall_name), %g1; \ ta 0x6d; \ @@ -85,7 +85,7 @@ SYSCALL_ERROR_HANDLER_ENTRY(__syscall_error_handler2) \ __builtin_expect (THREAD_GETMEM (THREAD_SELF, \ p_header.data.multiple_threads) == 0, 1) # else -# define SINGLE_THREAD_P ld [%g6 + MULTIPLE_THREADS_OFFSET], %g1 +# define SINGLE_THREAD_P ld [%g7 + MULTIPLE_THREADS_OFFSET], %g1 # endif #elif !defined __ASSEMBLER__ diff --git a/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S b/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S index bcfcedfc2d..98ad45795a 100644 --- a/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S +++ b/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S @@ -21,7 +21,7 @@ .text ENTRY(__vfork) - ld [%g6 + MULTIPLE_THREADS_OFFSET], %o0 + ld [%g7 + MULTIPLE_THREADS_OFFSET], %o0 #ifdef SHARED cmp %o0, 0 bne HIDDEN_JUMPTARGET (__fork) |