summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2019-06-04 15:12:15 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2019-09-04 14:31:28 +0200
commit65fb0ba54f11283dab07b495f758ec9e655af631 (patch)
treeb452d316376c2a73c71eda3c469f6708a03af967
parentbabfa426dcf2a54d205e96a1bdfebf29e34b48db (diff)
downloadqtwebengine-chromium-65fb0ba54f11283dab07b495f758ec9e655af631.tar.gz
Support ubsan and asan on GCC
Change-Id: If073a1a427eaa0761796806f64e0767b5370f658 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
-rw-r--r--chromium/build/config/sanitizers/BUILD.gn21
-rw-r--r--chromium/build/config/sanitizers/sanitizers.gni4
2 files changed, 21 insertions, 4 deletions
diff --git a/chromium/build/config/sanitizers/BUILD.gn b/chromium/build/config/sanitizers/BUILD.gn
index 14480b14d6a..19bdcf23c49 100644
--- a/chromium/build/config/sanitizers/BUILD.gn
+++ b/chromium/build/config/sanitizers/BUILD.gn
@@ -272,7 +272,7 @@ config("default_sanitizer_ldflags") {
config("common_sanitizer_flags") {
cflags = []
- if (using_sanitizer) {
+ if (using_sanitizer && is_clang) {
assert(is_clang, "sanitizers only supported with clang")
assert(!is_official_build, "sanitizers not supported in official builds")
@@ -502,10 +502,21 @@ config("ubsan_flags") {
"-fsanitize=vla-bound",
"-fsanitize-blacklist=$ubsan_blacklist_path",
]
+ if (!is_clang) {
+ # These exposes too much illegal C++14 code to compile on anything stricter than clang:
+ cflags += [
+ "-fno-sanitize=null",
+ "-fno-sanitize=returns-nonnull-attribute",
+ ]
+ # Clang specific flag:
+ cflags -= [
+ "-fsanitize-blacklist=$ubsan_blacklist_path",
+ ]
+ }
# Chromecast ubsan builds fail to compile with these
# experimental flags, so only add them to non-chromecast ubsan builds.
- if (!is_chromecast) {
+ if (!is_chromecast && is_clang) {
cflags += [
# Employ the experimental PBQP register allocator to avoid slow
# compilation on files with too many basic blocks.
@@ -562,6 +573,12 @@ config("ubsan_vptr_flags") {
"-fsanitize=vptr",
"-fsanitize-blacklist=$ubsan_vptr_blacklist_path",
]
+ if (!is_clang) {
+ # Clang specific flag:
+ cflags -= [
+ "-fsanitize-blacklist=$ubsan_vptr_blacklist_path",
+ ]
+ }
}
}
diff --git a/chromium/build/config/sanitizers/sanitizers.gni b/chromium/build/config/sanitizers/sanitizers.gni
index 2ac235b3bc6..8bba87d5145 100644
--- a/chromium/build/config/sanitizers/sanitizers.gni
+++ b/chromium/build/config/sanitizers/sanitizers.gni
@@ -179,8 +179,8 @@ using_sanitizer = is_asan || is_hwasan || is_lsan || is_tsan || is_msan ||
is_ubsan || is_ubsan_null || is_ubsan_vptr ||
is_ubsan_security || use_sanitizer_coverage || use_cfi_diag
-assert(!using_sanitizer || is_clang,
- "Sanitizers (is_*san) require setting is_clang = true in 'gn args'")
+#assert(!using_sanitizer || is_clang,
+# "Sanitizers (is_*san) require setting is_clang = true in 'gn args'")
assert(!is_cfi || is_clang,
"is_cfi requires setting is_clang = true in 'gn args'")