gcc/musl: rework SSP-support
[openwrt/openwrt.git] / toolchain / musl / patches / 200-add_libssp_nonshared.patch
1 From 7ec87fbbc3cac99b4173d082dd6195f47c9a32e7 Mon Sep 17 00:00:00 2001
2 From: Steven Barth <steven@midlink.org>
3 Date: Mon, 22 Jun 2015 11:01:56 +0200
4 Subject: [PATCH] Add libssp_nonshared.a so GCC's is not needed
5
6 Signed-off-by: Steven Barth <steven@midlink.org>
7 ---
8 Makefile | 10 ++++++++--
9 libssp_nonshared/__stack_chk_fail_local.c | 2 ++
10 2 files changed, 10 insertions(+), 2 deletions(-)
11 create mode 100644 libssp_nonshared/__stack_chk_fail_local.c
12
13 diff --git a/Makefile b/Makefile
14 index 2eb7b30..bfcabf7 100644
15 --- a/Makefile
16 +++ b/Makefile
17 @@ -48,7 +48,7 @@ CRT_LIBS = lib/crt1.o lib/Scrt1.o lib/rcrt1.o lib/crti.o lib/crtn.o
18 STATIC_LIBS = lib/libc.a
19 SHARED_LIBS = lib/libc.so
20 TOOL_LIBS = lib/musl-gcc.specs
21 -ALL_LIBS = $(CRT_LIBS) $(STATIC_LIBS) $(SHARED_LIBS) $(EMPTY_LIBS) $(TOOL_LIBS)
22 +ALL_LIBS = $(CRT_LIBS) $(STATIC_LIBS) $(SHARED_LIBS) $(EMPTY_LIBS) $(TOOL_LIBS) lib/libssp_nonshared.a
23 ALL_TOOLS = tools/musl-gcc
24
25 LDSO_PATHNAME = $(syslibdir)/ld-musl-$(ARCH)$(SUBARCH).so.1
26 @@ -103,7 +103,8 @@ NOSSP_SRCS = $(wildcard crt/*.c) \
27 src/env/__libc_start_main.c src/env/__init_tls.c \
28 src/thread/__set_thread_area.c src/env/__stack_chk_fail.c \
29 src/string/memset.c src/string/memcpy.c \
30 - src/ldso/dlstart.c src/ldso/dynlink.c
31 + src/ldso/dlstart.c src/ldso/dynlink.c \
32 + libssp_nonshared/__stack_chk_fail_local.c
33 $(NOSSP_SRCS:%.c=%.o) $(NOSSP_SRCS:%.c=%.lo): CFLAGS += $(CFLAGS_NOSSP)
34
35 $(CRT_LIBS:lib/%=crt/%): CFLAGS += -DCRT
36 @@ -144,6 +145,11 @@ lib/libc.a: $(OBJS)
37 $(AR) rc $@ $(OBJS)
38 $(RANLIB) $@
39
40 +lib/libssp_nonshared.a: libssp_nonshared/__stack_chk_fail_local.o
41 + rm -f $@
42 + $(AR) rc $@ $<
43 + $(RANLIB) $@
44 +
45 $(EMPTY_LIBS):
46 rm -f $@
47 $(AR) rc $@
48 diff --git a/libssp_nonshared/__stack_chk_fail_local.c b/libssp_nonshared/__stack_chk_fail_local.c
49 new file mode 100644
50 index 0000000..2b403a6
51 --- /dev/null
52 +++ b/libssp_nonshared/__stack_chk_fail_local.c
53 @@ -0,0 +1,2 @@
54 +extern void __stack_chk_fail(void);
55 +void __attribute__((visibility ("hidden"))) __stack_chk_fail_local(void) { __stack_chk_fail(); }
56 --
57 2.1.4
58