diff options
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.patch | 72 |
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 + |