[Buildroot] [PATCH 1/1] package/uclibc: Patch to fix check_as macro in Rules.mak

Patzlaff, Marcel m.patzlaff at pilz.de
Fri Apr 24 12:47:04 UTC 2020


This introduces a patch for uClibc to fix a feature check macro which
does not work when building with binutils 2.31.x or higher. Without
this fix, all binaries of uClibc will always request an executable
stack and thus all other binaries that link to it!

See also https://bugs.busybox.net/show_bug.cgi?id=12801

Signed-off-by: Marcel Patzlaff <m.patzlaff at pilz.de>
---
 ...heck_as-for-recent-binutils-versions.patch | 42 +++++++++++++++++++
 1 file changed, 42 insertions(+)
 create mode 100644 package/uclibc/0003-Rules.mak-Fix-check_as-for-recent-binutils-versions.patch

diff --git a/package/uclibc/0003-Rules.mak-Fix-check_as-for-recent-binutils-versions.patch b/package/uclibc/0003-Rules.mak-Fix-check_as-for-recent-binutils-versions.patch
new file mode 100644
index 0000000000..1e8ca1e682
--- /dev/null
+++ b/package/uclibc/0003-Rules.mak-Fix-check_as-for-recent-binutils-versions.patch
@@ -0,0 +1,42 @@
+From 9c0a3c5c80cd9dbd1aa7b04dd7ad2d8ea98b244e Mon Sep 17 00:00:00 2001
+From: Marcel Patzlaff <m.patzlaff at pilz.de>
+Date: Fri, 24 Apr 2020 14:09:23 +0200
+Subject: [PATCH 1/1] 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 at pilz.de>
+---
+ Rules.mak | 10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/Rules.mak b/Rules.mak
+index 6a9f5cbca..a10518c03 100644
+--- a/Rules.mak
++++ b/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; \
+-- 
+2.20.1
+
-- 
2.20.1




More information about the buildroot mailing list