Browse Source

Rules.mak: Fix check_as for recent binutils versions

As described in https://bugs.busybox.net/show_bug.cgi?id=12801 the
check for '-Wa,--noexecstack' is not working since binutils 2.31.x.

This fix adapts the approach already taken with check_ld and uses a
temporary file. Further, check_gcc is also adapted to avoid future
problems.

Signed-off-by: Marcel Patzlaff <m.patzlaff@pilz.de>
Marcel Patzlaff 4 years ago
parent
commit
25751e796e
1 changed files with 6 additions and 4 deletions
  1. 6 4
      Rules.mak

+ 6 - 4
Rules.mak

@@ -189,11 +189,13 @@ endif
 
 # A nifty macro to make testing gcc features easier
 check_gcc=$(shell \
-	if $(CC) $(1) -S -o /dev/null -xc /dev/null > /dev/null 2>&1; \
-	then echo "$(1)"; else echo "$(2)"; fi)
+	tf="/tmp/cgccucl$$$$.o"; \
+	if $(CC) $(1) -S -o $$tf -xc /dev/null > /dev/null 2>&1; \
+	then echo "$(1)"; else echo "$(2)"; fi; rm -f $$tf )
 check_as=$(shell \
-	if $(CC) -Wa,$(1) -Wa,-Z -c -o /dev/null -xassembler /dev/null > /dev/null 2>&1; \
-	then echo "-Wa,$(1)"; fi)
+	tf="/tmp/casucl$$$$.o"; \
+	if $(CC) -Wa,$(1) -Wa,-Z -c -o $$tf -xassembler /dev/null > /dev/null 2>&1; \
+	then echo "-Wa,$(1)"; fi; rm -f $$tf )
 check_ld=$(shell \
 	tf="/tmp/clducl$$$$.c"; echo "int _start(){return 0;}int main(){return 0;}" >$$tf; \
 	if $(CC) $(LDFLAG-fuse-ld) $(CFLAG_-Wl--no-warn-mismatch) -Wl,$(1) $(CFLAG_-nostdlib) -o /dev/null $$tf > /dev/null 2>&1; \