| 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> | 
 |  | 
 | --- a/Makefile | 
 | +++ b/Makefile | 
 | @@ -67,7 +67,7 @@ CRT_LIBS = $(addprefix lib/,$(notdir $(C | 
 |  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 = obj/musl-gcc | 
 |   | 
 |  WRAPCC_GCC = gcc | 
 | @@ -88,7 +88,7 @@ else | 
 |   | 
 |  all: $(ALL_LIBS) $(ALL_TOOLS) | 
 |   | 
 | -OBJ_DIRS = $(sort $(patsubst %/,%,$(dir $(ALL_LIBS) $(ALL_TOOLS) $(ALL_OBJS) $(GENH) $(GENH_INT))) obj/include) | 
 | +OBJ_DIRS = $(sort $(patsubst %/,%,$(dir $(ALL_LIBS) $(ALL_TOOLS) $(ALL_OBJS) $(GENH) $(GENH_INT))) obj/include obj/libssp_nonshared) | 
 |   | 
 |  $(ALL_LIBS) $(ALL_TOOLS) $(ALL_OBJS) $(ALL_OBJS:%.o=%.lo) $(GENH) $(GENH_INT): | $(OBJ_DIRS) | 
 |   | 
 | @@ -115,6 +115,8 @@ obj/crt/rcrt1.o: $(srcdir)/ldso/dlstart. | 
 |   | 
 |  obj/crt/Scrt1.o obj/crt/rcrt1.o: CFLAGS_ALL += -fPIC | 
 |   | 
 | +obj/libssp_nonshared/__stack_chk_fail_local.o: CFLAGS_ALL += $(CFLAGS_NOSSP) | 
 | + | 
 |  OPTIMIZE_SRCS = $(wildcard $(OPTIMIZE_GLOBS:%=$(srcdir)/src/%)) | 
 |  $(OPTIMIZE_SRCS:$(srcdir)/%.c=obj/%.o) $(OPTIMIZE_SRCS:$(srcdir)/%.c=obj/%.lo): CFLAGS += -O3 | 
 |   | 
 | @@ -167,6 +169,11 @@ lib/libc.a: $(AOBJS) | 
 |  	$(AR) rc $@ $(AOBJS) | 
 |  	$(RANLIB) $@ | 
 |   | 
 | +lib/libssp_nonshared.a: obj/libssp_nonshared/__stack_chk_fail_local.o | 
 | +	rm -f $@ | 
 | +	$(AR) rc $@ $< | 
 | +	$(RANLIB) $@ | 
 | + | 
 |  $(EMPTY_LIBS): | 
 |  	rm -f $@ | 
 |  	$(AR) rc $@ | 
 | --- /dev/null | 
 | +++ b/libssp_nonshared/__stack_chk_fail_local.c | 
 | @@ -0,0 +1,2 @@ | 
 | +#include "atomic.h" | 
 | +void __attribute__((visibility ("hidden"))) __stack_chk_fail_local(void) { a_crash(); } |