single.sh is called when you do 'make test_$COMMAND'.  For example, you
can now run tests under a Clang ASAN build like this:

make CC=clang CFLAGS=-fsanitize=address test_sed

Without this patch, the binary will fail with runtime errors.

(ASAN and afl-fuzz sort of go together, since you can find inputs that
access uninitialized memory but don't necessarily crash the process.
And ASAN is useful without afl-fuzz by just running tests with it.)

Andy
From 6503f2da5894796d781797ee9f04422fcd944469 Mon Sep 17 00:00:00 2001
From: Andy Chu <[email protected]>
Date: Sat, 12 Mar 2016 00:43:04 -0800
Subject: [PATCH] Pass the parent make variables when invoking make in
 scripts/single.sh.

single.sh is called when you do 'make test_$COMMAND'.  For example, you
can now run tests under a Clang ASAN build like this:

make CC=clang CFLAGS=-fsanitize=address test_sed
---
 Makefile          | 2 ++
 scripts/single.sh | 4 +++-
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/Makefile b/Makefile
index 40e95b1..5142b16 100644
--- a/Makefile
+++ b/Makefile
@@ -7,6 +7,8 @@
 
 HOSTCC?=cc
 
+# If the list of exported variables changes, also change the make invocation
+# in scripts/single.sh.
 export CROSS_COMPILE CFLAGS OPTIMIZE LDOPTIMIZE CC HOSTCC V
 
 all: toybox
diff --git a/scripts/single.sh b/scripts/single.sh
index 522a713..1feb82a 100755
--- a/scripts/single.sh
+++ b/scripts/single.sh
@@ -38,6 +38,8 @@ do
   echo "# CONFIG_TOYBOX is not set" >> "$KCONFIG_CONFIG" &&
   grep "CONFIG_TOYBOX_" .config >> "$KCONFIG_CONFIG" &&
 
-  make &&
+  # This list of variables matches the 'export' line in the Makefile.
+  make CROSS_COMPILE=$CROSS_COMPILE CFLAGS=$CFLAGS OPTIMIZE=$OPTIMIZE \
+    LDOPTIMIZE=$LDOPTIMIZE CC=$CC HOSTCC=$HOSTCC V=$V &&
   mv -f toybox $PREFIX$i || exit 1
 done
-- 
1.9.1

_______________________________________________
Toybox mailing list
[email protected]
http://lists.landley.net/listinfo.cgi/toybox-landley.net

Reply via email to