about summary refs log tree commit diff
path: root/csu/libc-start.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2007-01-17 08:37:26 +0000
committerUlrich Drepper <drepper@redhat.com>2007-01-17 08:37:26 +0000
commitea1533e08df4c63e680438ac1dc243cdc37d205a (patch)
treed7954d886b979b8bea1d7e1f6db05b440a693097 /csu/libc-start.c
parentd78bce1c01fe67d02d833e026e5acbb88d1d9836 (diff)
downloadglibc-ea1533e08df4c63e680438ac1dc243cdc37d205a.tar.gz
glibc-ea1533e08df4c63e680438ac1dc243cdc37d205a.tar.xz
glibc-ea1533e08df4c63e680438ac1dc243cdc37d205a.zip
* sysdeps/unix/sysv/linux/libc_pthread_init.c: Don't just copy the
	function table, mangle the pointers.
	* sysdeps/pthread/pthread-functions.h: Define PTHFCT_CALL.
	* forward.c: Use PTHFCT_CALL and __libc_pthread_functions_init.
	* sysdeps/pthread/bits/libc-lock.h: When using __libc_pthread_functions
	demangle pointers before use.
	* sysdeps/unix/sysv/linux/s390/jmp-unwind.c: Use PTHFCT_CALL to
	demangle pointer.
	* sysdeps/unix/sysv/linux/jmp-unwind.c: Likewise.
	* sysdeps/pthread/setxid.h: Likewise.
Diffstat (limited to 'csu/libc-start.c')
-rw-r--r--csu/libc-start.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/csu/libc-start.c b/csu/libc-start.c
index 634844759d..0ed993651e 100644
--- a/csu/libc-start.c
+++ b/csu/libc-start.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998-2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 1998-2006, 2007 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
@@ -225,7 +225,7 @@ LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL),
     {
       /* Remove the thread-local data.  */
 # ifdef SHARED
-      __libc_pthread_functions.ptr__nptl_deallocate_tsd ();
+      PTHFCT_CALL (ptr__nptl_deallocate_tsd, ());
 # else
       extern void __nptl_deallocate_tsd (void) __attribute ((weak));
       __nptl_deallocate_tsd ();
@@ -235,7 +235,8 @@ LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL),
 	 terminate the entire process.  */
       result = 0;
 # ifdef SHARED
-      unsigned int *const ptr = __libc_pthread_functions.ptr_nthreads;
+      unsigned int *ptr = __libc_pthread_functions.ptr_nthreads;
+      PTR_DEMANGLE (ptr);
 # else
       extern unsigned int __nptl_nthreads __attribute ((weak));
       unsigned int *const ptr = &__nptl_nthreads;