diff --git a/ChangeLog b/ChangeLog index f36934f9f2..51010a5dd2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2003-03-02 Roland McGrath + * sysdeps/generic/libc-start.c (__libc_start_main): Don't assign const + variable. + * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_fixup_plt): Don't use weak_extern for dl_rtld_map. Instead check only if [SHARED]. (elf_machine_rela): Clean up. diff --git a/NEWS b/NEWS index 890bcdc98b..418949200c 100644 --- a/NEWS +++ b/NEWS @@ -1,10 +1,15 @@ -GNU C Library NEWS -- history of user-visible changes. 2003-1-12 +GNU C Library NEWS -- history of user-visible changes. 2003-3-2 Copyright (C) 1992-2002, 2003 Free Software Foundation, Inc. See the end for copying conditions. Please send GNU C library bug reports using the `glibcbug' script to . Please send questions and suggestions to . +Version 2.3.3 + +* ELF thread-local storage support (TLS) now works on PowerPC and PowerPC64; + implemented by Paul Mackerras, Steven Munroe, and Roland McGrath. + Version 2.3.2 * Thread-safe interfaces for many functions that access locale data diff --git a/sysdeps/generic/libc-start.c b/sysdeps/generic/libc-start.c index a6dbebe123..b79c803d55 100644 --- a/sysdeps/generic/libc-start.c +++ b/sysdeps/generic/libc-start.c @@ -158,12 +158,11 @@ BP_SYM (__libc_start_main) (int (*main) (int, char **, char **), /* One less thread. Decrement the counter. If it is zero we terminate the entire process. */ result = 0; - int *const ptr; # ifdef SHARED - ptr = __libc_pthread_functions.ptr_nthreads; + int *const ptr = __libc_pthread_functions.ptr_nthreads; # else extern int __nptl_nthreads __attribute ((weak)); - ptr = &__nptl_nthreads; + int *const ptr = &__nptl_nthreads; # endif if (! atomic_decrement_and_test (ptr)) diff --git a/sysdeps/powerpc/powerpc64/dl-machine.h b/sysdeps/powerpc/powerpc64/dl-machine.h index 87982638ee..93cbc8b168 100644 --- a/sysdeps/powerpc/powerpc64/dl-machine.h +++ b/sysdeps/powerpc/powerpc64/dl-machine.h @@ -610,14 +610,14 @@ elf_machine_rela (struct link_map *map, # endif return; - case R_PPC_DTPREL64: + case R_PPC64_DTPREL64: /* During relocation all TLS symbols are defined and used. Therefore the offset is already correct. */ # ifndef RTLD_BOOTSTRAP *reloc_addr = TLS_DTPREL_VALUE (sym, reloc); # endif break; - case R_PPC_TPREL64: + case R_PPC64_TPREL64: # ifndef RTLD_BOOTSTRAP if (sym_map) {