diff options
author | 2018-01-12 01:18:12 +0100 | |
---|---|---|
committer | 2018-01-11 19:18:12 -0500 | |
commit | 35e5a752439c927bd762518370d039f510975225 (patch) | |
tree | 2c1c747209882cf77a438a13002c7420a8335a4e | |
parent | b8632487b804e106c32b127d455206a5d53fbb80 (diff) |
restored SANITIZE make option (#3043)
* restored basic support for SANITIZE make option
* disabled some unwanted UBSAN checks / enabled nullability checks / enabled ASAN use-after-scope checks (nw)
-rw-r--r-- | makefile | 6 | ||||
-rw-r--r-- | scripts/genie.lua | 41 |
2 files changed, 42 insertions, 5 deletions
@@ -40,7 +40,7 @@ # DEBUG = 1 # PROFILER = 1 -# SANITIZE = 1 +# SANITIZE = # PTR64 = 1 # BIGENDIAN = 1 @@ -781,6 +781,10 @@ endif ifdef WEBASSEMBLY PARAMS += --WEBASSEMBLY='$(WEBASSEMBLY)' endif + +ifdef SANITIZE +PARAMS += --SANITIZE='$(SANITIZE)' +endif #------------------------------------------------- # All scripts #------------------------------------------------- diff --git a/scripts/genie.lua b/scripts/genie.lua index 0c1a6abb179..a9f6f11be05 100644 --- a/scripts/genie.lua +++ b/scripts/genie.lua @@ -387,6 +387,11 @@ newoption { } newoption { + trigger = "SANITIZE", + description = "Specifies the santizer(s) to use." +} + +newoption { trigger = "PROJECT", description = "Select projects to be built. Will look into project folder for files.", } @@ -950,14 +955,42 @@ end buildoptions_cpp { "-Woverloaded-virtual", } - ---ifdef SANITIZE ---CCOMFLAGS += -fsanitize=$(SANITIZE) + +if _OPTIONS["SANITIZE"] then + buildoptions { + "-fsanitize=".. _OPTIONS["SANITIZE"] + } + linkoptions { + "-fsanitize=".. _OPTIONS["SANITIZE"] + } + if string.find(_OPTIONS["SANITIZE"], "address") then + buildoptions { + "-fsanitize-address-use-after-scope" + } + linkoptions { + "-fsanitize-address-use-after-scope" + } + end + if string.find(_OPTIONS["SANITIZE"], "undefined") then + -- 'function' produces errors without delegates by design + -- 'alignment' produces a lot of errors which we are not interested in + -- 'nullability' errors are not actually undefined behavior but unintentional + buildoptions { + "-fno-sanitize=function", + "-fno-sanitize=alignment", + "-fsanitize=nullability" + } + linkoptions { + "-fno-sanitize=function", + "-fno-sanitize=alignment", + "-fsanitize=nullability" + } + end +end --ifneq (,$(findstring thread,$(SANITIZE))) --CCOMFLAGS += -fPIE --endif ---endif |