diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-06-04 15:12:15 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-09-04 14:31:28 +0200 |
commit | 65fb0ba54f11283dab07b495f758ec9e655af631 (patch) | |
tree | b452d316376c2a73c71eda3c469f6708a03af967 | |
parent | babfa426dcf2a54d205e96a1bdfebf29e34b48db (diff) | |
download | qtwebengine-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.gn | 21 | ||||
-rw-r--r-- | chromium/build/config/sanitizers/sanitizers.gni | 4 |
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'") |