summaryrefslogtreecommitdiff
path: root/libpthread/nptl
diff options
context:
space:
mode:
authorTimo Teras <timo.teras@iki.fi>2010-04-16 16:56:00 +0300
committerAustin Foxley <austinf@cetoncorp.com>2010-04-16 10:14:06 -0700
commita501a33e9761f32b3d38ab9f113892abe7cef3f1 (patch)
treeb40d9f2c93c4ed7ff094bddda0b38dfeb7fdf26d /libpthread/nptl
parent0eadd98d30c51d26fde4062e6b8c48f3c9b5148d (diff)
nptl: mark forwarded functions protected
The libc stubs should never override the libpthread provided functions inside libpthread, otherwise the struct pthread_functions that is used by the forwarder stubs goes bad. Signed-off-by: Timo Teras <timo.teras@iki.fi> Signed-off-by: Austin Foxley <austinf@cetoncorp.com>
Diffstat (limited to 'libpthread/nptl')
-rw-r--r--libpthread/nptl/cleanup_defer_compat.c2
-rw-r--r--libpthread/nptl/pt-cleanup.c1
-rw-r--r--libpthread/nptl/pthread_attr_destroy.c1
-rw-r--r--libpthread/nptl/pthread_attr_getdetachstate.c1
-rw-r--r--libpthread/nptl/pthread_attr_getinheritsched.c1
-rw-r--r--libpthread/nptl/pthread_attr_getschedparam.c1
-rw-r--r--libpthread/nptl/pthread_attr_getschedpolicy.c1
-rw-r--r--libpthread/nptl/pthread_attr_getscope.c1
-rw-r--r--libpthread/nptl/pthread_attr_init.c1
-rw-r--r--libpthread/nptl/pthread_attr_setdetachstate.c1
-rw-r--r--libpthread/nptl/pthread_attr_setinheritsched.c1
-rw-r--r--libpthread/nptl/pthread_attr_setschedparam.c1
-rw-r--r--libpthread/nptl/pthread_attr_setschedpolicy.c1
-rw-r--r--libpthread/nptl/pthread_attr_setscope.c1
-rw-r--r--libpthread/nptl/pthread_cond_destroy.c1
-rw-r--r--libpthread/nptl/pthread_cond_init.c1
-rw-r--r--libpthread/nptl/pthread_condattr_destroy.c1
-rw-r--r--libpthread/nptl/pthread_condattr_init.c1
-rw-r--r--libpthread/nptl/pthread_equal.c1
-rw-r--r--libpthread/nptl/pthread_exit.c1
-rw-r--r--libpthread/nptl/pthread_getschedparam.c1
-rw-r--r--libpthread/nptl/pthread_getspecific.c1
-rw-r--r--libpthread/nptl/pthread_key_create.c1
-rw-r--r--libpthread/nptl/pthread_mutex_destroy.c1
-rw-r--r--libpthread/nptl/pthread_mutex_init.c1
-rw-r--r--libpthread/nptl/pthread_mutex_lock.c1
-rw-r--r--libpthread/nptl/pthread_mutex_unlock.c1
-rw-r--r--libpthread/nptl/pthread_self.c1
-rw-r--r--libpthread/nptl/pthread_setcancelstate.c1
-rw-r--r--libpthread/nptl/pthread_setcanceltype.c1
-rw-r--r--libpthread/nptl/pthread_setschedparam.c1
-rw-r--r--libpthread/nptl/pthread_setspecific.c1
-rw-r--r--libpthread/nptl/sysdeps/pthread/pthread_cond_broadcast.c1
-rw-r--r--libpthread/nptl/sysdeps/pthread/pthread_cond_signal.c1
-rw-r--r--libpthread/nptl/sysdeps/pthread/pthread_cond_timedwait.c1
-rw-r--r--libpthread/nptl/sysdeps/pthread/pthread_cond_wait.c1
-rw-r--r--libpthread/nptl/sysdeps/pthread/pthread_rwlock_rdlock.c1
-rw-r--r--libpthread/nptl/sysdeps/pthread/pthread_rwlock_unlock.c1
-rw-r--r--libpthread/nptl/sysdeps/pthread/pthread_rwlock_wrlock.c1
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/alpha/pthread_once.c1
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/arm/pthread_once.c1
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S1
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S1
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S1
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S1
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S1
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S1
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S1
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/i386/pthread_once.S1
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/mips/pthread_once.c1
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c1
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S1
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S1
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S1
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S1
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_once.S1
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S1
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S1
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S1
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pthread_once.c1
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S1
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S1
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S1
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S1
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_once.S1
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S1
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S1
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S1
-rw-r--r--libpthread/nptl/unwind.c1
69 files changed, 70 insertions, 0 deletions
diff --git a/libpthread/nptl/cleanup_defer_compat.c b/libpthread/nptl/cleanup_defer_compat.c
index 8fd9b5415..95fa4a061 100644
--- a/libpthread/nptl/cleanup_defer_compat.c
+++ b/libpthread/nptl/cleanup_defer_compat.c
@@ -21,6 +21,7 @@
void
+attribute_protected
_pthread_cleanup_push_defer (
struct _pthread_cleanup_buffer *buffer,
void (*routine) (void *),
@@ -60,6 +61,7 @@ strong_alias (_pthread_cleanup_push_defer, __pthread_cleanup_push_defer)
void
+attribute_protected
_pthread_cleanup_pop_restore (
struct _pthread_cleanup_buffer *buffer,
int execute)
diff --git a/libpthread/nptl/pt-cleanup.c b/libpthread/nptl/pt-cleanup.c
index f72ea26e9..97673b6c5 100644
--- a/libpthread/nptl/pt-cleanup.c
+++ b/libpthread/nptl/pt-cleanup.c
@@ -23,6 +23,7 @@
#include <jmpbuf-unwind.h>
void
+attribute_protected
__pthread_cleanup_upto (__jmp_buf target, char *targetframe)
{
struct pthread *self = THREAD_SELF;
diff --git a/libpthread/nptl/pthread_attr_destroy.c b/libpthread/nptl/pthread_attr_destroy.c
index b8e6a374b..52bffaf84 100644
--- a/libpthread/nptl/pthread_attr_destroy.c
+++ b/libpthread/nptl/pthread_attr_destroy.c
@@ -24,6 +24,7 @@
#include "pthreadP.h"
int
+attribute_protected
__pthread_attr_destroy (
pthread_attr_t *attr)
{
diff --git a/libpthread/nptl/pthread_attr_getdetachstate.c b/libpthread/nptl/pthread_attr_getdetachstate.c
index 5f549ba2b..a55d5167f 100644
--- a/libpthread/nptl/pthread_attr_getdetachstate.c
+++ b/libpthread/nptl/pthread_attr_getdetachstate.c
@@ -22,6 +22,7 @@
int
+attribute_protected
__pthread_attr_getdetachstate (
const pthread_attr_t *attr,
int *detachstate)
diff --git a/libpthread/nptl/pthread_attr_getinheritsched.c b/libpthread/nptl/pthread_attr_getinheritsched.c
index 3ff304094..f94f6b078 100644
--- a/libpthread/nptl/pthread_attr_getinheritsched.c
+++ b/libpthread/nptl/pthread_attr_getinheritsched.c
@@ -22,6 +22,7 @@
int
+attribute_protected
__pthread_attr_getinheritsched (
const pthread_attr_t *attr,
int *inherit)
diff --git a/libpthread/nptl/pthread_attr_getschedparam.c b/libpthread/nptl/pthread_attr_getschedparam.c
index 82b237198..2f515b13c 100644
--- a/libpthread/nptl/pthread_attr_getschedparam.c
+++ b/libpthread/nptl/pthread_attr_getschedparam.c
@@ -23,6 +23,7 @@
int
+attribute_protected
__pthread_attr_getschedparam (
const pthread_attr_t *attr,
struct sched_param *param)
diff --git a/libpthread/nptl/pthread_attr_getschedpolicy.c b/libpthread/nptl/pthread_attr_getschedpolicy.c
index 7b8f1deb6..924a4628f 100644
--- a/libpthread/nptl/pthread_attr_getschedpolicy.c
+++ b/libpthread/nptl/pthread_attr_getschedpolicy.c
@@ -22,6 +22,7 @@
int
+attribute_protected
__pthread_attr_getschedpolicy (
const pthread_attr_t *attr,
int *policy)
diff --git a/libpthread/nptl/pthread_attr_getscope.c b/libpthread/nptl/pthread_attr_getscope.c
index 9b05ffaea..aaaf6b9fa 100644
--- a/libpthread/nptl/pthread_attr_getscope.c
+++ b/libpthread/nptl/pthread_attr_getscope.c
@@ -22,6 +22,7 @@
int
+attribute_protected
__pthread_attr_getscope (
const pthread_attr_t *attr,
int *scope)
diff --git a/libpthread/nptl/pthread_attr_init.c b/libpthread/nptl/pthread_attr_init.c
index 65ce4e5e3..6de309d85 100644
--- a/libpthread/nptl/pthread_attr_init.c
+++ b/libpthread/nptl/pthread_attr_init.c
@@ -29,6 +29,7 @@ int __attr_list_lock = LLL_LOCK_INITIALIZER;
int
+attribute_protected
__pthread_attr_init_2_1 (
pthread_attr_t *attr)
{
diff --git a/libpthread/nptl/pthread_attr_setdetachstate.c b/libpthread/nptl/pthread_attr_setdetachstate.c
index b6d9bb52e..a038cbd5b 100644
--- a/libpthread/nptl/pthread_attr_setdetachstate.c
+++ b/libpthread/nptl/pthread_attr_setdetachstate.c
@@ -23,6 +23,7 @@
int
+attribute_protected
__pthread_attr_setdetachstate (pthread_attr_t *attr, int detachstate)
{
struct pthread_attr *iattr;
diff --git a/libpthread/nptl/pthread_attr_setinheritsched.c b/libpthread/nptl/pthread_attr_setinheritsched.c
index 9d0234aaa..3fc92e5a7 100644
--- a/libpthread/nptl/pthread_attr_setinheritsched.c
+++ b/libpthread/nptl/pthread_attr_setinheritsched.c
@@ -23,6 +23,7 @@
int
+attribute_protected
__pthread_attr_setinheritsched (
pthread_attr_t *attr,
int inherit)
diff --git a/libpthread/nptl/pthread_attr_setschedparam.c b/libpthread/nptl/pthread_attr_setschedparam.c
index 741e641a6..13f7313b8 100644
--- a/libpthread/nptl/pthread_attr_setschedparam.c
+++ b/libpthread/nptl/pthread_attr_setschedparam.c
@@ -24,6 +24,7 @@
int
+attribute_protected
__pthread_attr_setschedparam (
pthread_attr_t *attr,
const struct sched_param *param)
diff --git a/libpthread/nptl/pthread_attr_setschedpolicy.c b/libpthread/nptl/pthread_attr_setschedpolicy.c
index 1d87b53c0..bcc69ba36 100644
--- a/libpthread/nptl/pthread_attr_setschedpolicy.c
+++ b/libpthread/nptl/pthread_attr_setschedpolicy.c
@@ -23,6 +23,7 @@
int
+attribute_protected
__pthread_attr_setschedpolicy (
pthread_attr_t *attr,
int policy)
diff --git a/libpthread/nptl/pthread_attr_setscope.c b/libpthread/nptl/pthread_attr_setscope.c
index cc4e46708..b9b752f81 100644
--- a/libpthread/nptl/pthread_attr_setscope.c
+++ b/libpthread/nptl/pthread_attr_setscope.c
@@ -23,6 +23,7 @@
int
+attribute_protected
__pthread_attr_setscope (
pthread_attr_t *attr,
int scope)
diff --git a/libpthread/nptl/pthread_cond_destroy.c b/libpthread/nptl/pthread_cond_destroy.c
index b67b53506..cb49ce1db 100644
--- a/libpthread/nptl/pthread_cond_destroy.c
+++ b/libpthread/nptl/pthread_cond_destroy.c
@@ -22,6 +22,7 @@
int
+attribute_protected
__pthread_cond_destroy (
pthread_cond_t *cond)
{
diff --git a/libpthread/nptl/pthread_cond_init.c b/libpthread/nptl/pthread_cond_init.c
index dec644465..f7187a39b 100644
--- a/libpthread/nptl/pthread_cond_init.c
+++ b/libpthread/nptl/pthread_cond_init.c
@@ -22,6 +22,7 @@
int
+attribute_protected
__pthread_cond_init (
pthread_cond_t *cond,
const pthread_condattr_t *cond_attr)
diff --git a/libpthread/nptl/pthread_condattr_destroy.c b/libpthread/nptl/pthread_condattr_destroy.c
index bdb644152..dcaaa0fd5 100644
--- a/libpthread/nptl/pthread_condattr_destroy.c
+++ b/libpthread/nptl/pthread_condattr_destroy.c
@@ -21,6 +21,7 @@
int
+attribute_protected
__pthread_condattr_destroy (pthread_condattr_t *attr)
{
/* Nothing to be done. */
diff --git a/libpthread/nptl/pthread_condattr_init.c b/libpthread/nptl/pthread_condattr_init.c
index d22ca1e1d..7cd82a823 100644
--- a/libpthread/nptl/pthread_condattr_init.c
+++ b/libpthread/nptl/pthread_condattr_init.c
@@ -22,6 +22,7 @@
int
+attribute_protected
__pthread_condattr_init (pthread_condattr_t *attr)
{
memset (attr, '\0', sizeof (*attr));
diff --git a/libpthread/nptl/pthread_equal.c b/libpthread/nptl/pthread_equal.c
index 8587e0f52..c454a4822 100644
--- a/libpthread/nptl/pthread_equal.c
+++ b/libpthread/nptl/pthread_equal.c
@@ -21,6 +21,7 @@
int
+attribute_protected
__pthread_equal (pthread_t thread1, pthread_t thread2)
{
return thread1 == thread2;
diff --git a/libpthread/nptl/pthread_exit.c b/libpthread/nptl/pthread_exit.c
index a8c92fd29..88d3859b7 100644
--- a/libpthread/nptl/pthread_exit.c
+++ b/libpthread/nptl/pthread_exit.c
@@ -22,6 +22,7 @@
void
+attribute_protected
__pthread_exit (void* value)
{
THREAD_SETMEM (THREAD_SELF, result, value);
diff --git a/libpthread/nptl/pthread_getschedparam.c b/libpthread/nptl/pthread_getschedparam.c
index bb5f0a97e..53dc4113d 100644
--- a/libpthread/nptl/pthread_getschedparam.c
+++ b/libpthread/nptl/pthread_getschedparam.c
@@ -24,6 +24,7 @@
int
+attribute_protected
__pthread_getschedparam (
pthread_t threadid,
int *policy,
diff --git a/libpthread/nptl/pthread_getspecific.c b/libpthread/nptl/pthread_getspecific.c
index 62c48fe8e..639a4fdeb 100644
--- a/libpthread/nptl/pthread_getspecific.c
+++ b/libpthread/nptl/pthread_getspecific.c
@@ -22,6 +22,7 @@
void *
+attribute_protected
__pthread_getspecific (pthread_key_t key)
{
struct pthread_key_data *data;
diff --git a/libpthread/nptl/pthread_key_create.c b/libpthread/nptl/pthread_key_create.c
index 3744c08ad..d3c1d2662 100644
--- a/libpthread/nptl/pthread_key_create.c
+++ b/libpthread/nptl/pthread_key_create.c
@@ -23,6 +23,7 @@
int
+attribute_protected
__pthread_key_create (
pthread_key_t *key,
void (*destr) (void *))
diff --git a/libpthread/nptl/pthread_mutex_destroy.c b/libpthread/nptl/pthread_mutex_destroy.c
index f487d617a..756e8bbe8 100644
--- a/libpthread/nptl/pthread_mutex_destroy.c
+++ b/libpthread/nptl/pthread_mutex_destroy.c
@@ -22,6 +22,7 @@
int
+attribute_protected
__pthread_mutex_destroy (
pthread_mutex_t *mutex)
{
diff --git a/libpthread/nptl/pthread_mutex_init.c b/libpthread/nptl/pthread_mutex_init.c
index dd6e6d6fe..e942c1b72 100644
--- a/libpthread/nptl/pthread_mutex_init.c
+++ b/libpthread/nptl/pthread_mutex_init.c
@@ -37,6 +37,7 @@ static int tpi_supported;
int
+attribute_protected
__pthread_mutex_init (
pthread_mutex_t *mutex,
const pthread_mutexattr_t *mutexattr)
diff --git a/libpthread/nptl/pthread_mutex_lock.c b/libpthread/nptl/pthread_mutex_lock.c
index 47e4d4158..6abf3236e 100644
--- a/libpthread/nptl/pthread_mutex_lock.c
+++ b/libpthread/nptl/pthread_mutex_lock.c
@@ -42,6 +42,7 @@ static int __pthread_mutex_lock_full (pthread_mutex_t *mutex)
int
+attribute_protected
__pthread_mutex_lock (
pthread_mutex_t *mutex)
{
diff --git a/libpthread/nptl/pthread_mutex_unlock.c b/libpthread/nptl/pthread_mutex_unlock.c
index f164cde3a..3abada235 100644
--- a/libpthread/nptl/pthread_mutex_unlock.c
+++ b/libpthread/nptl/pthread_mutex_unlock.c
@@ -284,6 +284,7 @@ __pthread_mutex_unlock_full (pthread_mutex_t *mutex, int decr)
int
+attribute_protected
__pthread_mutex_unlock (
pthread_mutex_t *mutex)
{
diff --git a/libpthread/nptl/pthread_self.c b/libpthread/nptl/pthread_self.c
index f0e3b3f98..1ad528367 100644
--- a/libpthread/nptl/pthread_self.c
+++ b/libpthread/nptl/pthread_self.c
@@ -22,6 +22,7 @@
pthread_t
+attribute_protected
__pthread_self (void)
{
return (pthread_t) THREAD_SELF;
diff --git a/libpthread/nptl/pthread_setcancelstate.c b/libpthread/nptl/pthread_setcancelstate.c
index e53b52d67..ed6973584 100644
--- a/libpthread/nptl/pthread_setcancelstate.c
+++ b/libpthread/nptl/pthread_setcancelstate.c
@@ -23,6 +23,7 @@
int
+attribute_protected
__pthread_setcancelstate (
int state,
int *oldstate)
diff --git a/libpthread/nptl/pthread_setcanceltype.c b/libpthread/nptl/pthread_setcanceltype.c
index 47c104b02..8ac0df300 100644
--- a/libpthread/nptl/pthread_setcanceltype.c
+++ b/libpthread/nptl/pthread_setcanceltype.c
@@ -23,6 +23,7 @@
int
+attribute_protected
__pthread_setcanceltype (
int type,
int *oldtype)
diff --git a/libpthread/nptl/pthread_setschedparam.c b/libpthread/nptl/pthread_setschedparam.c
index 9b33b3e3f..c97de7d8b 100644
--- a/libpthread/nptl/pthread_setschedparam.c
+++ b/libpthread/nptl/pthread_setschedparam.c
@@ -25,6 +25,7 @@
int
+attribute_protected
__pthread_setschedparam (
pthread_t threadid,
int policy,
diff --git a/libpthread/nptl/pthread_setspecific.c b/libpthread/nptl/pthread_setspecific.c
index 8e24be723..13b24dcfa 100644
--- a/libpthread/nptl/pthread_setspecific.c
+++ b/libpthread/nptl/pthread_setspecific.c
@@ -23,6 +23,7 @@
int
+attribute_protected
__pthread_setspecific (
pthread_key_t key,
const void *value)
diff --git a/libpthread/nptl/sysdeps/pthread/pthread_cond_broadcast.c b/libpthread/nptl/sysdeps/pthread/pthread_cond_broadcast.c
index 5e7465774..df915523b 100644
--- a/libpthread/nptl/sysdeps/pthread/pthread_cond_broadcast.c
+++ b/libpthread/nptl/sysdeps/pthread/pthread_cond_broadcast.c
@@ -28,6 +28,7 @@
int
+attribute_protected
__pthread_cond_broadcast (
pthread_cond_t *cond)
{
diff --git a/libpthread/nptl/sysdeps/pthread/pthread_cond_signal.c b/libpthread/nptl/sysdeps/pthread/pthread_cond_signal.c
index d66f3edbb..b207aa8e7 100644
--- a/libpthread/nptl/sysdeps/pthread/pthread_cond_signal.c
+++ b/libpthread/nptl/sysdeps/pthread/pthread_cond_signal.c
@@ -28,6 +28,7 @@
int
+attribute_protected
__pthread_cond_signal (
pthread_cond_t *cond)
{
diff --git a/libpthread/nptl/sysdeps/pthread/pthread_cond_timedwait.c b/libpthread/nptl/sysdeps/pthread/pthread_cond_timedwait.c
index 4aaf5df75..7f3675381 100644
--- a/libpthread/nptl/sysdeps/pthread/pthread_cond_timedwait.c
+++ b/libpthread/nptl/sysdeps/pthread/pthread_cond_timedwait.c
@@ -39,6 +39,7 @@ struct _condvar_cleanup_buffer
};
int
+attribute_protected
__pthread_cond_timedwait (
pthread_cond_t *cond,
pthread_mutex_t *mutex,
diff --git a/libpthread/nptl/sysdeps/pthread/pthread_cond_wait.c b/libpthread/nptl/sysdeps/pthread/pthread_cond_wait.c
index 2fac02d83..05157ba13 100644
--- a/libpthread/nptl/sysdeps/pthread/pthread_cond_wait.c
+++ b/libpthread/nptl/sysdeps/pthread/pthread_cond_wait.c
@@ -89,6 +89,7 @@ __condvar_cleanup (void *arg)
int
+attribute_protected
__pthread_cond_wait (
pthread_cond_t *cond,
pthread_mutex_t *mutex)
diff --git a/libpthread/nptl/sysdeps/pthread/pthread_rwlock_rdlock.c b/libpthread/nptl/sysdeps/pthread/pthread_rwlock_rdlock.c
index dc00f2a08..98840f935 100644
--- a/libpthread/nptl/sysdeps/pthread/pthread_rwlock_rdlock.c
+++ b/libpthread/nptl/sysdeps/pthread/pthread_rwlock_rdlock.c
@@ -26,6 +26,7 @@
/* Acquire read lock for RWLOCK. */
int
+attribute_protected
__pthread_rwlock_rdlock (
pthread_rwlock_t *rwlock)
{
diff --git a/libpthread/nptl/sysdeps/pthread/pthread_rwlock_unlock.c b/libpthread/nptl/sysdeps/pthread/pthread_rwlock_unlock.c
index a7ef71a11..855fc1984 100644
--- a/libpthread/nptl/sysdeps/pthread/pthread_rwlock_unlock.c
+++ b/libpthread/nptl/sysdeps/pthread/pthread_rwlock_unlock.c
@@ -25,6 +25,7 @@
/* Unlock RWLOCK. */
int
+attribute_protected
__pthread_rwlock_unlock (pthread_rwlock_t *rwlock)
{
lll_lock (rwlock->__data.__lock, rwlock->__data.__shared);
diff --git a/libpthread/nptl/sysdeps/pthread/pthread_rwlock_wrlock.c b/libpthread/nptl/sysdeps/pthread/pthread_rwlock_wrlock.c
index 81e6daa56..9a441afea 100644
--- a/libpthread/nptl/sysdeps/pthread/pthread_rwlock_wrlock.c
+++ b/libpthread/nptl/sysdeps/pthread/pthread_rwlock_wrlock.c
@@ -26,6 +26,7 @@
/* Acquire write lock for RWLOCK. */
int
+attribute_protected
__pthread_rwlock_wrlock (
pthread_rwlock_t *rwlock)
{
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/pthread_once.c b/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/pthread_once.c
index 0e7e9790d..8adf8b44e 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/pthread_once.c
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/pthread_once.c
@@ -32,6 +32,7 @@ clear_once_control (void *arg)
}
int
+attribute_protected
__pthread_once (pthread_once_t *once_control, void (*init_routine) (void))
{
for (;;)
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/arm/pthread_once.c b/libpthread/nptl/sysdeps/unix/sysv/linux/arm/pthread_once.c
index d81ecd4e5..e977a7d0c 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/arm/pthread_once.c
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/arm/pthread_once.c
@@ -31,6 +31,7 @@ clear_once_control (void *arg)
}
int
+attribute_protected
__pthread_once (pthread_once_t *once_control, void (*init_routine) (void))
{
for (;;)
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S b/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S
index 0413cc13b..ca9ceca00 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S
@@ -30,6 +30,7 @@
/* int pthread_cond_broadcast (pthread_cond_t *cond) */
.globl __pthread_cond_broadcast
.type __pthread_cond_broadcast, @function
+ .protected __pthread_cond_broadcast
.align 16
__pthread_cond_broadcast:
cfi_startproc
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S b/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
index 2f3c9bc35..118bc073b 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
@@ -31,6 +31,7 @@
/* int pthread_cond_signal (pthread_cond_t *cond) */
.globl __pthread_cond_signal
.type __pthread_cond_signal, @function
+ .protected __pthread_cond_signal
.align 16
__pthread_cond_signal:
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S b/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
index c56dd7716..8a0c3fbf6 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
@@ -31,6 +31,7 @@
const struct timespec *abstime) */
.globl __pthread_cond_timedwait
.type __pthread_cond_timedwait, @function
+ .protected __pthread_cond_timedwait
.align 16
__pthread_cond_timedwait:
.LSTARTCODE:
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S b/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
index 6261805f1..006fc510c 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
@@ -31,6 +31,7 @@
/* int pthread_cond_wait (pthread_cond_t *cond, pthread_mutex_t *mutex) */
.globl __pthread_cond_wait
.type __pthread_cond_wait, @function
+ .protected __pthread_cond_wait
.align 16
__pthread_cond_wait:
.LSTARTCODE:
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S b/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S
index 6205a60ef..79501bd56 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S
@@ -29,6 +29,7 @@
.globl __pthread_rwlock_rdlock
.type __pthread_rwlock_rdlock,@function
+ .protected __pthread_rwlock_rdlock
.align 16
__pthread_rwlock_rdlock:
cfi_startproc
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S b/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S
index 426ffdcd7..cfab60c67 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S
@@ -28,6 +28,7 @@
.globl __pthread_rwlock_unlock
.type __pthread_rwlock_unlock,@function
+ .protected __pthread_rwlock_unlock
.align 16
__pthread_rwlock_unlock:
cfi_startproc
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S b/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S
index 0414ba060..5c96d900b 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S
@@ -29,6 +29,7 @@
.globl __pthread_rwlock_wrlock
.type __pthread_rwlock_wrlock,@function
+ .protected __pthread_rwlock_wrlock
.align 16
__pthread_rwlock_wrlock:
cfi_startproc
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/i386/pthread_once.S b/libpthread/nptl/sysdeps/unix/sysv/linux/i386/pthread_once.S
index 409df15f8..7a2cbf464 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/i386/pthread_once.S
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/i386/pthread_once.S
@@ -31,6 +31,7 @@
.globl __pthread_once
.type __pthread_once,@function
+ .protected __pthread_once
.align 16
cfi_startproc
__pthread_once:
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/mips/pthread_once.c b/libpthread/nptl/sysdeps/unix/sysv/linux/mips/pthread_once.c
index ddfd32bdb..cc4658b32 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/mips/pthread_once.c
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/mips/pthread_once.c
@@ -35,6 +35,7 @@ clear_once_control (void *arg)
int
+attribute_protected
__pthread_once (once_control, init_routine)
pthread_once_t *once_control;
void (*init_routine) (void);
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c b/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c
index 969078094..bc5f3f0f1 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c
@@ -35,6 +35,7 @@ clear_once_control (void *arg)
int
+attribute_protected
__pthread_once (pthread_once_t *once_control, void (*init_routine) (void))
{
for (;;)
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S
index 1242fc2cc..233183177 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S
@@ -30,6 +30,7 @@
/* int pthread_cond_broadcast (pthread_cond_t *cond) */
.globl __pthread_cond_broadcast
.type __pthread_cond_broadcast, @function
+ .protected __pthread_cond_broadcast
.align 5
__pthread_cond_broadcast:
mov.l r10, @-r15
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S
index 1c3bacbe6..ca87336d9 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S
@@ -29,6 +29,7 @@
/* int pthread_cond_signal (pthread_cond_t *cond) */
.globl __pthread_cond_signal
.type __pthread_cond_signal, @function
+ .protected __pthread_cond_signal
.align 5
__pthread_cond_signal:
mov.l r8, @-r15
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S
index 3e117564f..cacb037d8 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S
@@ -30,6 +30,7 @@
const struct timespec *abstime) */
.globl __pthread_cond_timedwait
.type __pthread_cond_timedwait, @function
+ .protected __pthread_cond_timedwait
.align 5
__pthread_cond_timedwait:
.LSTARTCODE:
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S
index 5a897f6fe..b0a4e9888 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S
@@ -28,6 +28,7 @@
/* int pthread_cond_wait (pthread_cond_t *cond, pthread_mutex_t *mutex) */
.globl __pthread_cond_wait
.type __pthread_cond_wait, @function
+ .protected __pthread_cond_wait
.align 5
__pthread_cond_wait:
.LSTARTCODE:
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_once.S b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_once.S
index a1477b3ac..46234459a 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_once.S
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_once.S
@@ -29,6 +29,7 @@
.text
.globl __pthread_once
.type __pthread_once,@function
+ .protected __pthread_once
.align 5
cfi_startproc
__pthread_once:
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S
index 52fe5de10..21e05e192 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S
@@ -29,6 +29,7 @@
.globl __pthread_rwlock_rdlock
.type __pthread_rwlock_rdlock,@function
+ .protected __pthread_rwlock_rdlock
.align 5
__pthread_rwlock_rdlock:
mov.l r12, @-r15
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S
index bc6c6c233..1f6c1d812 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S
@@ -28,6 +28,7 @@
.globl __pthread_rwlock_unlock
.type __pthread_rwlock_unlock,@function
+ .protected __pthread_rwlock_unlock
.align 5
__pthread_rwlock_unlock:
mov.l r12, @-r15
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S
index 3d37fb486..e7bfe0d09 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S
@@ -29,6 +29,7 @@
.globl __pthread_rwlock_wrlock
.type __pthread_rwlock_wrlock,@function
+ .protected __pthread_rwlock_wrlock
.align 5
__pthread_rwlock_wrlock:
mov.l r12, @-r15
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pthread_once.c b/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pthread_once.c
index 22e2dd3c0..24b74aca6 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pthread_once.c
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pthread_once.c
@@ -35,6 +35,7 @@ clear_once_control (void *arg)
int
+attribute_protected
__pthread_once (once_control, init_routine)
pthread_once_t *once_control;
void (*init_routine) (void);
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S
index 0f8037ba2..1a116cf8f 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S
@@ -31,6 +31,7 @@
/* int pthread_cond_broadcast (pthread_cond_t *cond) */
.globl __pthread_cond_broadcast
.type __pthread_cond_broadcast, @function
+ .protected __pthread_cond_broadcast
.align 16
__pthread_cond_broadcast:
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S
index 568c98470..9852e79fc 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S
@@ -30,6 +30,7 @@
/* int pthread_cond_signal (pthread_cond_t *cond) */
.globl __pthread_cond_signal
.type __pthread_cond_signal, @function
+ .protected __pthread_cond_signal
.align 16
__pthread_cond_signal:
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
index bc5c0b39b..3a965ad0b 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
@@ -36,6 +36,7 @@
const struct timespec *abstime) */
.globl __pthread_cond_timedwait
.type __pthread_cond_timedwait, @function
+ .protected __pthread_cond_timedwait
.align 16
__pthread_cond_timedwait:
.LSTARTCODE:
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
index a44e7a756..cc67ed9de 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
@@ -31,6 +31,7 @@
/* int pthread_cond_wait (pthread_cond_t *cond, pthread_mutex_t *mutex) */
.globl __pthread_cond_wait
.type __pthread_cond_wait, @function
+ .protected __pthread_cond_wait
.align 16
__pthread_cond_wait:
.LSTARTCODE:
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_once.S b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_once.S
index a808b9d7e..9013d8fa0 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_once.S
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_once.S
@@ -30,6 +30,7 @@
.globl __pthread_once
.type __pthread_once,@function
+ .protected __pthread_once
.align 16
__pthread_once:
.LSTARTCODE:
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S
index f36e7a765..82badb1ee 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S
@@ -29,6 +29,7 @@
.globl __pthread_rwlock_rdlock
.type __pthread_rwlock_rdlock,@function
+ .protected __pthread_rwlock_rdlock
.align 16
__pthread_rwlock_rdlock:
cfi_startproc
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S
index cfcc7a18c..e34c42ea2 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S
@@ -27,6 +27,7 @@
.globl __pthread_rwlock_unlock
.type __pthread_rwlock_unlock,@function
+ .protected __pthread_rwlock_unlock
.align 16
__pthread_rwlock_unlock:
cfi_startproc
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S
index ccfc11b46..c626d9e1a 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S
@@ -29,6 +29,7 @@
.globl __pthread_rwlock_wrlock
.type __pthread_rwlock_wrlock,@function
+ .protected __pthread_rwlock_wrlock
.align 16
__pthread_rwlock_wrlock:
cfi_startproc
diff --git a/libpthread/nptl/unwind.c b/libpthread/nptl/unwind.c
index 9a35695cb..c7e01e764 100644
--- a/libpthread/nptl/unwind.c
+++ b/libpthread/nptl/unwind.c
@@ -115,6 +115,7 @@ unwind_cleanup (_Unwind_Reason_Code reason, struct _Unwind_Exception *exc)
void
+attribute_protected
__cleanup_fct_attribute __attribute ((noreturn))
__pthread_unwind (__pthread_unwind_buf_t *buf)
{