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-07-10 12:47:30 +0200 |
commit | 98b2687c3be88cf1ca1d0451e8d42af3ebcfdea1 (patch) | |
tree | b271db1a6d58431ad96d81483af2df7e850ff16e | |
parent | be2f3bb839aab9ad8ba7b545b8a2bc91ce6702d4 (diff) | |
download | qtwebengine-chromium-98b2687c3be88cf1ca1d0451e8d42af3ebcfdea1.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 542fdecbb5d..c25a8faab8f 100644 --- a/chromium/build/config/sanitizers/BUILD.gn +++ b/chromium/build/config/sanitizers/BUILD.gn @@ -270,7 +270,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") @@ -497,10 +497,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. @@ -557,6 +568,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 8cff727191c..7a7687e373d 100644 --- a/chromium/build/config/sanitizers/sanitizers.gni +++ b/chromium/build/config/sanitizers/sanitizers.gni @@ -174,8 +174,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'") |