aboutsummaryrefslogtreecommitdiffstats
path: root/main/libc0.9.32/compat-stack-guard.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/libc0.9.32/compat-stack-guard.patch')
-rw-r--r--main/libc0.9.32/compat-stack-guard.patch51
1 files changed, 51 insertions, 0 deletions
diff --git a/main/libc0.9.32/compat-stack-guard.patch b/main/libc0.9.32/compat-stack-guard.patch
new file mode 100644
index 0000000000..71d78bac5a
--- /dev/null
+++ b/main/libc0.9.32/compat-stack-guard.patch
@@ -0,0 +1,51 @@
+diff --git a/ldso/ldso/ldso.c b/ldso/ldso/ldso.c
+index 125cf96..bb47952 100644
+--- a/ldso/ldso/ldso.c
++++ b/ldso/ldso/ldso.c
+@@ -101,10 +101,10 @@ extern void _start(void);
+ #ifdef __UCLIBC_HAS_SSP__
+ # include <dl-osinfo.h>
+ uintptr_t stack_chk_guard;
++uintptr_t __stack_chk_guard attribute_relro;
+ # 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;
+ # ifdef __UCLIBC_HAS_SSP_COMPAT__
+ strong_alias(__stack_chk_guard,__guard)
+ # endif
+@@ -935,13 +935,12 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, DL_LOADADDR_TYPE load_addr,
+ #ifdef __UCLIBC_HAS_SSP__
+ /* Set up the stack checker's canary. */
+ stack_chk_guard = _dl_setup_stack_chk_guard ();
++ __stack_chk_guard = stack_chk_guard;
+ # ifdef THREAD_SET_STACK_GUARD
+ THREAD_SET_STACK_GUARD (stack_chk_guard);
+ # ifdef __UCLIBC_HAS_SSP_COMPAT__
+ __guard = stack_chk_guard;
+ # endif
+-# else
+- __stack_chk_guard = stack_chk_guard;
+ # endif
+ #endif
+
+diff --git a/libc/misc/internals/__uClibc_main.c b/libc/misc/internals/__uClibc_main.c
+index f7e45c6..b527068 100644
+--- a/libc/misc/internals/__uClibc_main.c
++++ b/libc/misc/internals/__uClibc_main.c
+@@ -43,13 +43,13 @@ void *__libc_stack_end = NULL;
+
+ # ifdef __UCLIBC_HAS_SSP__
+ # include <dl-osinfo.h>
++/* for gcc-4.1 non-TLS */
++uintptr_t __stack_chk_guard attribute_relro;
+ # ifndef THREAD_SET_STACK_GUARD
+ /* Only exported for architectures that don't store the stack guard canary
+ * in thread local area. */
+ # include <stdint.h>
+ uintptr_t stack_chk_guard;
+-/* for gcc-4.1 non-TLS */
+-uintptr_t __stack_chk_guard attribute_relro;
+ /* for gcc-3.x + Etoh ssp */
+ # ifdef __UCLIBC_HAS_SSP_COMPAT__
+ # ifdef __HAVE_SHARED__