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-07-10 12:47:30 +0200
commit98b2687c3be88cf1ca1d0451e8d42af3ebcfdea1 (patch)
treeb271db1a6d58431ad96d81483af2df7e850ff16e
parentbe2f3bb839aab9ad8ba7b545b8a2bc91ce6702d4 (diff)
downloadqtwebengine-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.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 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'")