build: add a sanitizer debug option
authorMike Frysinger <vapier@gentoo.org>
Sat, 13 Feb 2016 03:12:47 +0000 (22:12 -0500)
committerMike Frysinger <vapier@gentoo.org>
Sat, 13 Feb 2016 03:12:47 +0000 (22:12 -0500)
Building & running with ASAN is super helpful, so add a dedicated config
knob for it.  This way people don't have to guess at the right compiler
settings in order to get a good build.  We can just tell people to enable
this one option.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Config.in
Makefile.flags

index 07b4bf36b18426d7e7841c618a2b1d1f236e6494..0a0b5d7cbc9b05013cbbbdc6b0c54335091b444f 100644 (file)
--- a/Config.in
+++ b/Config.in
@@ -688,6 +688,16 @@ config DEBUG_PESSIMIZE
          in a much bigger executable that more closely matches the source
          code.
 
+config DEBUG_SANITIZE
+       bool "Enable runtime sanitizers (ASAN/LSAN/USAN/etc...)"
+       default n
+       help
+         Say Y here if you want to enable runtime sanitizers. These help
+         catch bad memory accesses (e.g. buffer overflows), but will make
+         the executable larger and slow down runtime a bit.
+
+         If you aren't developing/testing busybox, say N here.
+
 config UNIT_TEST
        bool "Build unit tests"
        default n
index 9f77674baa1966fce1e5aee5d2ae8868bad55ae1..65021de25ffb3d7c2600d2be7fd3f57e4a8622b8 100644 (file)
@@ -75,6 +75,11 @@ else
 CFLAGS += $(call cc-option,-Os,$(call cc-option,-O2,))
 endif
 endif
+ifeq ($(CONFIG_DEBUG_SANITIZE),y)
+CFLAGS += $(call cc-option,-fsanitize=address,)
+CFLAGS += $(call cc-option,-fsanitize=leak,)
+CFLAGS += $(call cc-option,-fsanitize=undefined,)
+endif
 
 # If arch/$(ARCH)/Makefile did not override it (with, say, -fPIC)...
 ARCH_FPIC ?= -fpic