[klibc] [klibc:master] Kbuild: Add a per-architecture option to disable exectable stacks

klibc-bot for Ben Hutchings ben at decadent.org.uk
Sat Jul 25 09:36:07 PDT 2020


Commit-ID:  c562319cdba0102c3a8a8298ba94e645418193d5
Gitweb:     http://git.kernel.org/?p=libs/klibc/klibc.git;a=commit;h=c562319cdba0102c3a8a8298ba94e645418193d5
Author:     Ben Hutchings <ben at decadent.org.uk>
AuthorDate: Wed, 29 Apr 2020 22:28:10 +0100
Committer:  Ben Hutchings <ben at decadent.org.uk>
CommitDate: Sat, 25 Jul 2020 17:33:29 +0100

[klibc] Kbuild: Add a per-architecture option to disable exectable stacks

We still want to avoid executable stacks, but now we will only do so
for architectures where we know we can avoid stack trampolines for
signal return.

Disable executable stacks only if KLIBCEXECSTACK is set to 'n' by the
architecture's MCONFIG.

Signed-off-by: Ben Hutchings <ben at decadent.org.uk>

---
 scripts/Kbuild.klibc | 5 ++++-
 usr/klibc/Kbuild     | 1 +
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/scripts/Kbuild.klibc b/scripts/Kbuild.klibc
index b7e99b56..a9a2a40e 100644
--- a/scripts/Kbuild.klibc
+++ b/scripts/Kbuild.klibc
@@ -118,13 +118,16 @@ KLIBCCPPFLAGS    += -I$(KLIBCKERNELSRC)/include		\
                      $(if $(KBUILD_SRC),-I$(srctree)/include)  \
 		     $(KLIBCARCHINCFLAGS)
 
+# compiler/assembler option for whether we want an executable stack
+KLIBCSTACKFLAGS  := -Wa,$(if $(filter n,$(KLIBCEXECSTACK)),no)execstack
+
 # klibc definitions
 KLIBCDEFS        += -D__KLIBC__=$(KLIBCMAJOR)          \
 		    -D__KLIBC_MINOR__=$(KLIBCMINOR)    \
 		    -D_BITSIZE=$(KLIBCBITSIZE)
 KLIBCCPPFLAGS    += $(KLIBCDEFS)
 KLIBCCFLAGS      += $(KLIBCCPPFLAGS) $(KLIBCREQFLAGS) $(KLIBCARCHREQFLAGS)  \
-                    $(KLIBCOPTFLAGS) $(KLIBCWARNFLAGS)
+                    $(KLIBCOPTFLAGS) $(KLIBCSTACKFLGS) $(KLIBCWARNFLAGS)
 KLIBCAFLAGS      += -D__ASSEMBLY__ $(KLIBCCFLAGS)
 KLIBCSTRIPFLAGS  += --strip-all -R .comment -R .note
 
diff --git a/usr/klibc/Kbuild b/usr/klibc/Kbuild
index bec9cdb4..c6338851 100644
--- a/usr/klibc/Kbuild
+++ b/usr/klibc/Kbuild
@@ -185,6 +185,7 @@ quiet_cmd_interp = BUILD   $@
       cmd_interp = $(KLIBCCC) $(klibccflags) -D__ASSEMBLY__     \
                              -DLIBDIR=\"$(SHLIBDIR)\"         \
 			     -DSOHASH=\"$(SOLIBHASH)\" \
+                             $(KLIBCSTACKFLAGS) \
 			     -c -o $@ $<
 
 $(INTERP_O): $(obj)/interp.S $(SOLIB).hash


More information about the klibc mailing list