toolchain/musl: update to 1.2.2
[openwrt/staging/chunkeey.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 --- a/Makefile
9 +++ b/Makefile
10 @@ -67,7 +67,7 @@ CRT_LIBS = $(addprefix lib/,$(notdir $(C
11 STATIC_LIBS = lib/libc.a
12 SHARED_LIBS = lib/libc.so
13 TOOL_LIBS = lib/musl-gcc.specs
14 -ALL_LIBS = $(CRT_LIBS) $(STATIC_LIBS) $(SHARED_LIBS) $(EMPTY_LIBS) $(TOOL_LIBS)
15 +ALL_LIBS = $(CRT_LIBS) $(STATIC_LIBS) $(SHARED_LIBS) $(EMPTY_LIBS) $(TOOL_LIBS) lib/libssp_nonshared.a
16 ALL_TOOLS = obj/musl-gcc
17
18 WRAPCC_GCC = gcc
19 @@ -88,7 +88,7 @@ else
20
21 all: $(ALL_LIBS) $(ALL_TOOLS)
22
23 -OBJ_DIRS = $(sort $(patsubst %/,%,$(dir $(ALL_LIBS) $(ALL_TOOLS) $(ALL_OBJS) $(GENH) $(GENH_INT))) obj/include)
24 +OBJ_DIRS = $(sort $(patsubst %/,%,$(dir $(ALL_LIBS) $(ALL_TOOLS) $(ALL_OBJS) $(GENH) $(GENH_INT))) obj/include obj/libssp_nonshared)
25
26 $(ALL_LIBS) $(ALL_TOOLS) $(ALL_OBJS) $(ALL_OBJS:%.o=%.lo) $(GENH) $(GENH_INT): | $(OBJ_DIRS)
27
28 @@ -115,6 +115,8 @@ obj/crt/rcrt1.o: $(srcdir)/ldso/dlstart.
29
30 obj/crt/Scrt1.o obj/crt/rcrt1.o: CFLAGS_ALL += -fPIC
31
32 +obj/libssp_nonshared/__stack_chk_fail_local.o: CFLAGS_ALL += $(CFLAGS_NOSSP)
33 +
34 OPTIMIZE_SRCS = $(wildcard $(OPTIMIZE_GLOBS:%=$(srcdir)/src/%))
35 $(OPTIMIZE_SRCS:$(srcdir)/%.c=obj/%.o) $(OPTIMIZE_SRCS:$(srcdir)/%.c=obj/%.lo): CFLAGS += -O3
36
37 @@ -167,6 +169,11 @@ lib/libc.a: $(AOBJS)
38 $(AR) rc $@ $(AOBJS)
39 $(RANLIB) $@
40
41 +lib/libssp_nonshared.a: obj/libssp_nonshared/__stack_chk_fail_local.o
42 + rm -f $@
43 + $(AR) rc $@ $<
44 + $(RANLIB) $@
45 +
46 $(EMPTY_LIBS):
47 rm -f $@
48 $(AR) rc $@
49 --- /dev/null
50 +++ b/libssp_nonshared/__stack_chk_fail_local.c
51 @@ -0,0 +1,2 @@
52 +#include "atomic.h"
53 +void __attribute__((visibility ("hidden"))) __stack_chk_fail_local(void) { a_crash(); }