summaryrefslogtreecommitdiffstats
path: root/debian/patches/musl-ssp.diff
blob: 3355710e8dcd66dc306fefc8b5fde010af5645b8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
See https://git.alpinelinux.org/aports/commit/?id=d307f133de1f8a9993ab0d6fd51176b9373df4c3
and https://www.openwall.com/lists/musl/2014/11/05/3

--- a/src/gcc/gcc.cc
+++ b/src/gcc/gcc.cc
@@ -1062,8 +1062,15 @@ proper position among the other output f
 
 #ifndef LINK_SSP_SPEC
 #ifdef TARGET_LIBC_PROVIDES_SSP
+#if DEFAULT_LIBC == LIBC_MUSL
+/* When linking without -fstack-protector-something but including objects that
+   were built with -fstack-protector-something, calls to __stack_chk_fail_local
+   can be emitted. Thus -lssp_nonshared must be linked unconditionally.  */
+#define LINK_SSP_SPEC "-lssp_nonshared"
+#else
 #define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \
 		       "|fstack-protector-strong|fstack-protector-explicit:}"
+#endif
 #else
 #define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \
 		       "|fstack-protector-strong|fstack-protector-explicit" \