aboutsummaryrefslogtreecommitdiffstats
path: root/main/libc0.9.32/0001-Compatible-stack-protector-for-non-Thread-Local-stor.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/libc0.9.32/0001-Compatible-stack-protector-for-non-Thread-Local-stor.patch')
-rw-r--r--main/libc0.9.32/0001-Compatible-stack-protector-for-non-Thread-Local-stor.patch72
1 files changed, 72 insertions, 0 deletions
diff --git a/main/libc0.9.32/0001-Compatible-stack-protector-for-non-Thread-Local-stor.patch b/main/libc0.9.32/0001-Compatible-stack-protector-for-non-Thread-Local-stor.patch
new file mode 100644
index 0000000000..b60dd446e7
--- /dev/null
+++ b/main/libc0.9.32/0001-Compatible-stack-protector-for-non-Thread-Local-stor.patch
@@ -0,0 +1,72 @@
+From 3fb4bfcafbcaff3522e7bab48ff03460fec99023 Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Fri, 23 Dec 2011 14:06:09 +0100
+Subject: [PATCH] Compatible stack protector for non Thread Local storage
+
+Before we had thread local storage the __stack_chk_guard was a global
+variable that was referenced to by the older binaries.
+
+We since then have changed ABI so this patch can probably go away.
+---
+ ldso/ldso/ldso.c | 7 +------
+ libc/misc/internals/__uClibc_main.c | 8 +-------
+ 2 files changed, 2 insertions(+), 13 deletions(-)
+
+diff --git a/ldso/ldso/ldso.c b/ldso/ldso/ldso.c
+index 7ee9257..3585cb7 100644
+--- a/ldso/ldso/ldso.c
++++ b/ldso/ldso/ldso.c
+@@ -103,11 +103,7 @@ extern void _start(void);
+ #ifdef __UCLIBC_HAS_SSP__
+ # include <dl-osinfo.h>
+ static uintptr_t stack_chk_guard;
+-# ifndef THREAD_SET_STACK_GUARD
+-/* Only exported for architectures that don't store the stack guard canary
+- * in local thread area. */
+ uintptr_t __stack_chk_guard attribute_relro;
+-# endif
+ # ifdef __UCLIBC_HAS_SSP_COMPAT__
+ uintptr_t __guard attribute_relro;
+ # endif
+@@ -951,9 +947,8 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, DL_LOADADDR_TYPE load_addr,
+ stack_chk_guard = _dl_setup_stack_chk_guard ();
+ # ifdef THREAD_SET_STACK_GUARD
+ THREAD_SET_STACK_GUARD (stack_chk_guard);
+-# else
+- __stack_chk_guard = stack_chk_guard;
+ # endif
++ __stack_chk_guard = stack_chk_guard;
+ # ifdef __UCLIBC_HAS_SSP_COMPAT__
+ __guard = stack_chk_guard;
+ # endif
+diff --git a/libc/misc/internals/__uClibc_main.c b/libc/misc/internals/__uClibc_main.c
+index 315365a..78cd058 100644
+--- a/libc/misc/internals/__uClibc_main.c
++++ b/libc/misc/internals/__uClibc_main.c
+@@ -46,12 +46,7 @@ void *__libc_stack_end = NULL;
+ # ifdef __UCLIBC_HAS_SSP__
+ # include <dl-osinfo.h>
+ static uintptr_t stack_chk_guard;
+-# ifndef THREAD_SET_STACK_GUARD
+-/* Only exported for architectures that don't store the stack guard canary
+- * in thread local area. */
+-/* for gcc-4.1 non-TLS */
+ uintptr_t __stack_chk_guard attribute_relro;
+-# endif
+ /* for gcc-3.x + Etoh ssp */
+ # ifdef __UCLIBC_HAS_SSP_COMPAT__
+ uintptr_t __guard attribute_relro;
+@@ -247,9 +242,8 @@ void __uClibc_init(void)
+ stack_chk_guard = _dl_setup_stack_chk_guard();
+ # ifdef THREAD_SET_STACK_GUARD
+ THREAD_SET_STACK_GUARD (stack_chk_guard);
+-# else
+- __stack_chk_guard = stack_chk_guard;
+ # endif
++ __stack_chk_guard = stack_chk_guard;
+ # ifdef __UCLIBC_HAS_SSP_COMPAT__
+ __guard = stack_chk_guard;
+ # endif
+--
+1.7.8
+