54 lines
1.8 KiB
Diff
54 lines
1.8 KiB
Diff
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
|
|
@@ -66,7 +66,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
|
|
@@ -86,7 +86,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)
|
|
|
|
@@ -113,6 +113,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
|
|
|
|
@@ -165,6 +167,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(); }
|