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
+@@ -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 = 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)
+ 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 +166,11 @@ lib/libc.a: $(AOBJS)
+ $(AR) rc $@ $(AOBJS)
$(RANLIB) $@
-+lib/libssp_nonshared.a: libssp_nonshared/__stack_chk_fail_local.o
++lib/libssp_nonshared.a: obj/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 @@
+#include "atomic.h"
+void __attribute__((visibility ("hidden"))) __stack_chk_fail_local(void) { a_crash(); }
---
-2.1.4
-