summaryrefslogtreecommitdiffstats
path: root/toolchain/musl/patches/200-add_libssp_nonshared.patch
blob: af0576585e76de1152f832e435edde56ed23c6fe (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
52
53
54
55
56
57
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