summaryrefslogtreecommitdiffstats
path: root/toolchain/gcc
diff options
context:
space:
mode:
authorSteven Barth <cyrus@openwrt.org>2015-06-22 10:31:07 +0000
committerSteven Barth <cyrus@openwrt.org>2015-06-22 10:31:07 +0000
commit1877bc9d8f2be143fbe530347a945850d0ecd234 (patch)
treefe99374fe0af943707c608a4112f662b9d8d7aa3 /toolchain/gcc
parente0a3d9d1152a05c7c8ba6cd713e394c862ce9252 (diff)
downloadmaster-31e0f0ae-1877bc9d8f2be143fbe530347a945850d0ecd234.tar.gz
master-31e0f0ae-1877bc9d8f2be143fbe530347a945850d0ecd234.tar.bz2
master-31e0f0ae-1877bc9d8f2be143fbe530347a945850d0ecd234.zip
gcc/musl: rework SSP-support
Make musl provide libssp_nonshared.a and make GCC link it unconditionally if musl is used. This should be a no-op if SSP is disabled and seems to be the only reliable way of dealing with SSP over all packages due to the mess that is linkerflags handling in packages. Signed-off-by: Steven Barth <steven@midlink.org> SVN-Revision: 46108
Diffstat (limited to 'toolchain/gcc')
-rw-r--r--toolchain/gcc/Config.in3
-rw-r--r--toolchain/gcc/patches/4.8-linaro/030-always-link-ssp-noshared.patch11
-rw-r--r--toolchain/gcc/patches/4.8-linaro/230-musl_libssp.patch13
3 files changed, 15 insertions, 12 deletions
diff --git a/toolchain/gcc/Config.in b/toolchain/gcc/Config.in
index 5cb4d23e16..025ea2453d 100644
--- a/toolchain/gcc/Config.in
+++ b/toolchain/gcc/Config.in
@@ -42,7 +42,8 @@ config EXTRA_GCC_CONFIG_OPTIONS
config SSP_SUPPORT
bool
prompt "Enable Stack-Smashing Protection support" if TOOLCHAINOPTS
- default y
+ depends on !USE_MUSL
+ default y if !USE_MUSL
help
Enable Stack-Smashing Protection support
diff --git a/toolchain/gcc/patches/4.8-linaro/030-always-link-ssp-noshared.patch b/toolchain/gcc/patches/4.8-linaro/030-always-link-ssp-noshared.patch
deleted file mode 100644
index 1208e73029..0000000000
--- a/toolchain/gcc/patches/4.8-linaro/030-always-link-ssp-noshared.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- gcc-4.7.4.org/gcc/gcc.c
-+++ gcc-4.7.4/gcc/gcc.c
-@@ -603,7 +603,7 @@
-
- #ifndef LINK_SSP_SPEC
- #ifdef TARGET_LIBC_PROVIDES_SSP
--#define LINK_SSP_SPEC "%{fstack-protector:}"
-+#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all:-lssp_nonshared}"
- #else
- #define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all:-lssp_nonshared -lssp}"
- #endif
diff --git a/toolchain/gcc/patches/4.8-linaro/230-musl_libssp.patch b/toolchain/gcc/patches/4.8-linaro/230-musl_libssp.patch
new file mode 100644
index 0000000000..22176934af
--- /dev/null
+++ b/toolchain/gcc/patches/4.8-linaro/230-musl_libssp.patch
@@ -0,0 +1,13 @@
+--- gcc-4.8.1/gcc/gcc.c.orig 2013-09-24 06:27:32.133894539 +0000
++++ gcc-4.8.1/gcc/gcc.c 2013-09-24 06:29:35.790562854 +0000
+@@ -656,7 +656,9 @@
+ #endif
+
+ #ifndef LINK_SSP_SPEC
+-#ifdef TARGET_LIBC_PROVIDES_SSP
++#if DEFAULT_LIBC == LIBC_MUSL
++#define LINK_SSP_SPEC "-lssp_nonshared"
++#elif defined(TARGET_LIBC_PROVIDES_SSP)
+ #define LINK_SSP_SPEC "%{fstack-protector:}"
+ #else
+ #define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all:-lssp_nonshared -lssp}"