b.liu | e958203 | 2025-04-17 19:18:16 +0800 | [diff] [blame] | 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(); } |