about summary refs log tree commit diff
path: root/Makefile
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2015-04-13 20:13:10 -0400
committerRich Felker <dalias@aerifal.cx>2015-04-13 20:19:58 -0400
commit1ef849c6ec6a4e30badc844371cdf1b9eedfba57 (patch)
treeee862bff7b135ea2a46d7bf068643f232bddc64b /Makefile
parent19a1fe670acb3ab9ead0fe31859ca7d4fe40dd54 (diff)
downloadmusl-1ef849c6ec6a4e30badc844371cdf1b9eedfba57.tar.gz
musl-1ef849c6ec6a4e30badc844371cdf1b9eedfba57.tar.xz
musl-1ef849c6ec6a4e30badc844371cdf1b9eedfba57.zip
allow libc itself to be built with stack protector enabled
this was already essentially possible as a result of the previous
commits changing the dynamic linker/thread pointer bootstrap process.
this commit mainly adds build system infrastructure:

configure no longer attempts to disable stack protector. instead it
simply determines how so the makefile can disable stack protector for
a few translation units used during early startup.

stack protector is also disabled for memcpy and memset since compilers
(incorrectly) generate calls to them on some archs to implement
struct initialization and assignment, and such calls may creep into
early initialization.

no explicit attempt to enable stack protector is made by configure at
this time; any stack protector option supported by the compiler can be
passed to configure in CFLAGS, and if the compiler uses stack
protector by default, this default is respected.
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile7
1 files changed, 7 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index 02b44f8e..d943988d 100644
--- a/Makefile
+++ b/Makefile
@@ -97,6 +97,13 @@ $(OPTIMIZE_SRCS:%.c=%.o) $(OPTIMIZE_SRCS:%.c=%.lo): CFLAGS += -O3
 MEMOPS_SRCS = src/string/memcpy.c src/string/memmove.c src/string/memcmp.c src/string/memset.c
 $(MEMOPS_SRCS:%.c=%.o) $(MEMOPS_SRCS:%.c=%.lo): CFLAGS += $(CFLAGS_MEMOPS)
 
+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
+$(NOSSP_SRCS:%.c=%.o) $(NOSSP_SRCS:%.c=%.lo): CFLAGS += $(CFLAGS_NOSSP)
+
 # This incantation ensures that changes to any subarch asm files will
 # force the corresponding object file to be rebuilt, even if the implicit
 # rule below goes indirectly through a .sub file.