summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Oliver Stöneberg <firewave@users.noreply.github.com>2018-01-12 01:18:12 +0100
committer R. Belmont <rb6502@users.noreply.github.com>2018-01-11 19:18:12 -0500
commit35e5a752439c927bd762518370d039f510975225 (patch)
tree2c1c747209882cf77a438a13002c7420a8335a4e
parentb8632487b804e106c32b127d455206a5d53fbb80 (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--makefile6
-rw-r--r--scripts/genie.lua41
2 files changed, 42 insertions, 5 deletions
diff --git a/makefile b/makefile
index 3e9b682b959..bfe449b759a 100644
--- a/makefile
+++ b/makefile
@@ -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