about summary refs log tree commit diff
path: root/nptl/sysdeps/pthread/pthread-functions.h
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 /nptl/sysdeps/pthread/pthread-functions.h
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 'nptl/sysdeps/pthread/pthread-functions.h')
-rw-r--r--nptl/sysdeps/pthread/pthread-functions.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/nptl/sysdeps/pthread/pthread-functions.h b/nptl/sysdeps/pthread/pthread-functions.h
index 74d24005c3..f8c1e92371 100644
--- a/nptl/sysdeps/pthread/pthread-functions.h
+++ b/nptl/sysdeps/pthread/pthread-functions.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
 
@@ -23,6 +23,7 @@
 #include <pthread.h>
 #include <setjmp.h>
 #include <internaltypes.h>
+#include <sysdep.h>
 
 struct xid_command;
 
@@ -100,5 +101,12 @@ struct pthread_functions
 
 /* Variable in libc.so.  */
 extern struct pthread_functions __libc_pthread_functions attribute_hidden;
+extern int __libc_pthread_functions_init attribute_hidden;
+
+#define PTHFCT_CALL(fct, params) \
+  ({ __typeof (__libc_pthread_functions.fct) __p;			      \
+     __p = __libc_pthread_functions.fct;				      \
+     PTR_DEMANGLE (__p);						      \
+     __p params; })
 
 #endif	/* pthread-functions.h */