aboutsummaryrefslogtreecommitdiffstats
path: root/toolchain
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2011-01-28 01:10:41 +0000
committerFelix Fietkau <nbd@openwrt.org>2011-01-28 01:10:41 +0000
commitc6e7c24a27bb474f9341c02aa583c5195eb4af08 (patch)
tree317c32185f1d932631a1a4f3303cf5c970d60070 /toolchain
parent887cbd0e5977f9ec3553d56a022b24f9c7a1d441 (diff)
downloadupstream-c6e7c24a27bb474f9341c02aa583c5195eb4af08.tar.gz
upstream-c6e7c24a27bb474f9341c02aa583c5195eb4af08.tar.bz2
upstream-c6e7c24a27bb474f9341c02aa583c5195eb4af08.zip
uClibc 0.9.32: fix infinite recursion on application exit triggered by linking libc before libpthread
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@25186 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'toolchain')
-rw-r--r--toolchain/uClibc/patches-0.9.32/180-pthread_cleanup_fix.patch45
1 files changed, 45 insertions, 0 deletions
diff --git a/toolchain/uClibc/patches-0.9.32/180-pthread_cleanup_fix.patch b/toolchain/uClibc/patches-0.9.32/180-pthread_cleanup_fix.patch
new file mode 100644
index 0000000000..ae36018792
--- /dev/null
+++ b/toolchain/uClibc/patches-0.9.32/180-pthread_cleanup_fix.patch
@@ -0,0 +1,45 @@
+--- a/libpthread/nptl/cleanup_defer_compat.c
++++ b/libpthread/nptl/cleanup_defer_compat.c
+@@ -22,7 +22,7 @@
+
+ void
+ attribute_protected
+-_pthread_cleanup_push_defer (
++__pthread_cleanup_push_defer (
+ struct _pthread_cleanup_buffer *buffer,
+ void (*routine) (void *),
+ void *arg)
+@@ -57,12 +57,12 @@ _pthread_cleanup_push_defer (
+
+ THREAD_SETMEM (self, cleanup, buffer);
+ }
+-strong_alias (_pthread_cleanup_push_defer, __pthread_cleanup_push_defer)
++strong_alias (__pthread_cleanup_push_defer, _pthread_cleanup_push_defer)
+
+
+ void
+ attribute_protected
+-_pthread_cleanup_pop_restore (
++__pthread_cleanup_pop_restore (
+ struct _pthread_cleanup_buffer *buffer,
+ int execute)
+ {
+@@ -97,4 +97,4 @@ _pthread_cleanup_pop_restore (
+ if (execute)
+ buffer->__routine (buffer->__arg);
+ }
+-strong_alias (_pthread_cleanup_pop_restore, __pthread_cleanup_pop_restore)
++strong_alias (__pthread_cleanup_pop_restore, _pthread_cleanup_pop_restore)
+--- a/libpthread/nptl/init.c
++++ b/libpthread/nptl/init.c
+@@ -112,8 +112,8 @@ static const struct pthread_functions pt
+ .ptr___pthread_key_create = __pthread_key_create_internal,
+ .ptr___pthread_getspecific = __pthread_getspecific_internal,
+ .ptr___pthread_setspecific = __pthread_setspecific_internal,
+- .ptr__pthread_cleanup_push_defer = _pthread_cleanup_push_defer,
+- .ptr__pthread_cleanup_pop_restore = _pthread_cleanup_pop_restore,
++ .ptr__pthread_cleanup_push_defer = __pthread_cleanup_push_defer,
++ .ptr__pthread_cleanup_pop_restore = __pthread_cleanup_pop_restore,
+ .ptr_nthreads = &__nptl_nthreads,
+ .ptr___pthread_unwind = &__pthread_unwind,
+ .ptr__nptl_deallocate_tsd = __nptl_deallocate_tsd,