blob: 71d78bac5a95f152d6df4047d97fabe4866d4aeb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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__
|