diff options
author | Steven Barth <steven@midlink.org> | 2015-06-22 10:31:07 +0000 |
---|---|---|
committer | Steven Barth <steven@midlink.org> | 2015-06-22 10:31:07 +0000 |
commit | f13f59d31b606458ace4432053c12f1e8006d82f (patch) | |
tree | 5d92f3ef03e6183fa5cff49627eaf3dabd2f86cd /toolchain/musl | |
parent | e1722c400783c9c622ae6eb31e50dbbaab1b0b44 (diff) | |
download | master-187ad058-f13f59d31b606458ace4432053c12f1e8006d82f.tar.gz master-187ad058-f13f59d31b606458ace4432053c12f1e8006d82f.tar.bz2 master-187ad058-f13f59d31b606458ace4432053c12f1e8006d82f.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>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@46108 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'toolchain/musl')
-rw-r--r-- | toolchain/musl/patches/200-add_libssp_nonshared.patch | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/toolchain/musl/patches/200-add_libssp_nonshared.patch b/toolchain/musl/patches/200-add_libssp_nonshared.patch new file mode 100644 index 0000000000..af0576585e --- /dev/null +++ b/toolchain/musl/patches/200-add_libssp_nonshared.patch @@ -0,0 +1,58 @@ +From 7ec87fbbc3cac99b4173d082dd6195f47c9a32e7 Mon Sep 17 00:00:00 2001 +From: Steven Barth <steven@midlink.org> +Date: Mon, 22 Jun 2015 11:01:56 +0200 +Subject: [PATCH] Add libssp_nonshared.a so GCC's is not needed + +Signed-off-by: Steven Barth <steven@midlink.org> +--- + Makefile | 10 ++++++++-- + libssp_nonshared/__stack_chk_fail_local.c | 2 ++ + 2 files changed, 10 insertions(+), 2 deletions(-) + create mode 100644 libssp_nonshared/__stack_chk_fail_local.c + +diff --git a/Makefile b/Makefile +index 2eb7b30..bfcabf7 100644 +--- a/Makefile ++++ b/Makefile +@@ -48,7 +48,7 @@ CRT_LIBS = lib/crt1.o lib/Scrt1.o lib/rcrt1.o lib/crti.o lib/crtn.o + STATIC_LIBS = lib/libc.a + SHARED_LIBS = lib/libc.so + TOOL_LIBS = lib/musl-gcc.specs +-ALL_LIBS = $(CRT_LIBS) $(STATIC_LIBS) $(SHARED_LIBS) $(EMPTY_LIBS) $(TOOL_LIBS) ++ALL_LIBS = $(CRT_LIBS) $(STATIC_LIBS) $(SHARED_LIBS) $(EMPTY_LIBS) $(TOOL_LIBS) lib/libssp_nonshared.a + ALL_TOOLS = tools/musl-gcc + + LDSO_PATHNAME = $(syslibdir)/ld-musl-$(ARCH)$(SUBARCH).so.1 +@@ -103,7 +103,8 @@ NOSSP_SRCS = $(wildcard crt/*.c) \ + src/env/__libc_start_main.c src/env/__init_tls.c \ + src/thread/__set_thread_area.c src/env/__stack_chk_fail.c \ + src/string/memset.c src/string/memcpy.c \ +- src/ldso/dlstart.c src/ldso/dynlink.c ++ src/ldso/dlstart.c src/ldso/dynlink.c \ ++ libssp_nonshared/__stack_chk_fail_local.c + $(NOSSP_SRCS:%.c=%.o) $(NOSSP_SRCS:%.c=%.lo): CFLAGS += $(CFLAGS_NOSSP) + + $(CRT_LIBS:lib/%=crt/%): CFLAGS += -DCRT +@@ -144,6 +145,11 @@ lib/libc.a: $(OBJS) + $(AR) rc $@ $(OBJS) + $(RANLIB) $@ + ++lib/libssp_nonshared.a: libssp_nonshared/__stack_chk_fail_local.o ++ rm -f $@ ++ $(AR) rc $@ $< ++ $(RANLIB) $@ ++ + $(EMPTY_LIBS): + rm -f $@ + $(AR) rc $@ +diff --git a/libssp_nonshared/__stack_chk_fail_local.c b/libssp_nonshared/__stack_chk_fail_local.c +new file mode 100644 +index 0000000..2b403a6 +--- /dev/null ++++ b/libssp_nonshared/__stack_chk_fail_local.c +@@ -0,0 +1,2 @@ ++extern void __stack_chk_fail(void); ++void __attribute__((visibility ("hidden"))) __stack_chk_fail_local(void) { __stack_chk_fail(); } +-- +2.1.4 + |