Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(518)

Side by Side Diff: build/config/sanitizers/BUILD.gn

Issue 1809273002: Enable whole-program virtual function optimization in LTO mode. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « build/config/compiler/BUILD.gn ('k') | build/config/sanitizers/sanitizers.gni » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import("//build/config/chrome_build.gni") 5 import("//build/config/chrome_build.gni")
6 import("//build/config/chromecast_build.gni") 6 import("//build/config/chromecast_build.gni")
7 import("//build/config/sanitizers/sanitizers.gni") 7 import("//build/config/sanitizers/sanitizers.gni")
8 8
9 # Contains the dependencies needed for sanitizers to link into executables and 9 # Contains the dependencies needed for sanitizers to link into executables and
10 # shared_libraries. Unconditionally depend upon this target as it is empty if 10 # shared_libraries. Unconditionally depend upon this target as it is empty if
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 } 87 }
88 if (is_msan) { 88 if (is_msan) {
89 ldflags += [ "-fsanitize=memory" ] 89 ldflags += [ "-fsanitize=memory" ]
90 } 90 }
91 if (is_ubsan || is_ubsan_security) { 91 if (is_ubsan || is_ubsan_security) {
92 ldflags += [ "-fsanitize=undefined" ] 92 ldflags += [ "-fsanitize=undefined" ]
93 } 93 }
94 if (is_ubsan_vptr) { 94 if (is_ubsan_vptr) {
95 ldflags += [ "-fsanitize=vptr" ] 95 ldflags += [ "-fsanitize=vptr" ]
96 } 96 }
97 if (is_lto && !is_nacl) {
98 ldflags += [ "-flto" ]
99 97
100 # Apply a lower LTO optimization level as the default is too slow. 98 if (is_cfi && !is_nacl) {
101 if (is_linux) { 99 ldflags += [
102 ldflags += [ "-Wl,-plugin-opt,O1" ] 100 "-fsanitize=cfi-vcall",
103 } else if (is_mac) { 101 "-fsanitize=cfi-derived-cast",
104 ldflags += [ "-Wl,-mllvm,-O1" ] 102 "-fsanitize=cfi-unrelated-cast",
105 } 103 ]
106
107 # Work-around for http://openradar.appspot.com/20356002
108 if (is_mac) {
109 ldflags += [ "-Wl,-all_load" ]
110 }
111
112 # Without this flag, LTO produces a .text section that is larger
113 # than the maximum call displacement, preventing the linker from
114 # relocating calls (http://llvm.org/PR22999).
115 if (current_cpu == "arm") {
116 ldflags += [ "-Wl,-plugin-opt,-function-sections" ]
117 }
118
119 if (is_cfi) {
120 ldflags += [
121 "-fsanitize=cfi-vcall",
122 "-fsanitize=cfi-derived-cast",
123 "-fsanitize=cfi-unrelated-cast",
124 ]
125 }
126
127 if (use_cfi_diag) { 104 if (use_cfi_diag) {
128 ldflags += [ 105 ldflags += [
129 "-fno-sanitize-trap=cfi", 106 "-fno-sanitize-trap=cfi",
130 "-fsanitize-recover=cfi", 107 "-fsanitize-recover=cfi",
131 ] 108 ]
132 } 109 }
133 } 110 }
134 } 111 }
135 } 112 }
136 113
(...skipping 12 matching lines...) Expand all
149 126
150 # Sanitizers need line table info for stack traces. They don't need type info 127 # Sanitizers need line table info for stack traces. They don't need type info
151 # or variable info, so we can leave that out to speed up the build. 128 # or variable info, so we can leave that out to speed up the build.
152 if (using_sanitizer) { 129 if (using_sanitizer) {
153 assert(is_clang, "sanitizers only supported with clang") 130 assert(is_clang, "sanitizers only supported with clang")
154 cflags += [ "-gline-tables-only" ] 131 cflags += [ "-gline-tables-only" ]
155 } 132 }
156 133
157 # Common options for AddressSanitizer, LeakSanitizer, ThreadSanitizer, 134 # Common options for AddressSanitizer, LeakSanitizer, ThreadSanitizer,
158 # MemorySanitizer and non-official CFI builds. 135 # MemorySanitizer and non-official CFI builds.
159 if (using_sanitizer || (is_lto && !is_official_build)) { 136 if (using_sanitizer || (is_cfi && !is_official_build)) {
160 if (is_posix) { 137 if (is_posix) {
161 cflags += [ "-fno-omit-frame-pointer" ] 138 cflags += [ "-fno-omit-frame-pointer" ]
162 } else { 139 } else {
163 cflags += [ "/Oy-" ] 140 cflags += [ "/Oy-" ]
164 } 141 }
165 } 142 }
166 if (is_asan) { 143 if (is_asan) {
167 cflags += [ "-fsanitize=address" ] 144 cflags += [ "-fsanitize=address" ]
168 if (is_win) { 145 if (is_win) {
169 cflags += [ "-fsanitize-blacklist=" + 146 cflags += [ "-fsanitize-blacklist=" +
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 ] 252 ]
276 } 253 }
277 if (is_ubsan_security) { 254 if (is_ubsan_security) {
278 ubsan_blacklist_path = 255 ubsan_blacklist_path =
279 rebase_path("//tools/ubsan/blacklist.txt", root_build_dir) 256 rebase_path("//tools/ubsan/blacklist.txt", root_build_dir)
280 cflags += [ 257 cflags += [
281 "-fsanitize=signed-integer-overflow", 258 "-fsanitize=signed-integer-overflow",
282 "-fsanitize-blacklist=$ubsan_blacklist_path", 259 "-fsanitize-blacklist=$ubsan_blacklist_path",
283 ] 260 ]
284 } 261 }
285 if (is_lto && !is_nacl) { 262 if (is_cfi && !is_nacl) {
286 cflags += [ "-flto" ] 263 cfi_blacklist_path =
287 264 rebase_path("//tools/cfi/blacklist.txt", root_build_dir)
288 if (is_cfi) { 265 cflags += [
289 cfi_blacklist_path = 266 "-fsanitize=cfi-vcall",
290 rebase_path("//tools/cfi/blacklist.txt", root_build_dir) 267 "-fsanitize=cfi-derived-cast",
291 cflags += [ 268 "-fsanitize=cfi-unrelated-cast",
292 "-fsanitize=cfi-vcall", 269 "-fsanitize-blacklist=$cfi_blacklist_path",
293 "-fsanitize=cfi-derived-cast", 270 ]
294 "-fsanitize=cfi-unrelated-cast",
295 "-fsanitize-blacklist=$cfi_blacklist_path",
296 ]
297 }
298 271
299 if (use_cfi_diag) { 272 if (use_cfi_diag) {
300 cflags += [ 273 cflags += [
301 "-fno-sanitize-trap=cfi", 274 "-fno-sanitize-trap=cfi",
302 "-fsanitize-recover=cfi", 275 "-fsanitize-recover=cfi",
303 "-fno-inline-functions", 276 "-fno-inline-functions",
304 "-fno-inline", 277 "-fno-inline",
305 "-fno-omit-frame-pointer", 278 "-fno-omit-frame-pointer",
306 "-O1", 279 "-O1",
307 ] 280 ]
(...skipping 18 matching lines...) Expand all
326 299
327 if (use_sanitizer_coverage) { 300 if (use_sanitizer_coverage) {
328 # FIXME: make this configurable. 301 # FIXME: make this configurable.
329 cflags += [ 302 cflags += [
330 "-fsanitize-coverage=edge,indirect-calls,8bit-counters", 303 "-fsanitize-coverage=edge,indirect-calls,8bit-counters",
331 "-mllvm", 304 "-mllvm",
332 "-sanitizer-coverage-prune-blocks=1", 305 "-sanitizer-coverage-prune-blocks=1",
333 ] 306 ]
334 } 307 }
335 } 308 }
OLDNEW
« no previous file with comments | « build/config/compiler/BUILD.gn ('k') | build/config/sanitizers/sanitizers.gni » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698