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

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

Issue 1326053003: port cfi to gn (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Disable CFI when targeting nacl Created 5 years, 3 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
OLDNEW
1 # Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2013 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/android/config.gni") 5 import("//build/config/android/config.gni")
6 import("//build/config/chrome_build.gni") 6 import("//build/config/chrome_build.gni")
7 if (current_cpu == "arm") { 7 if (current_cpu == "arm") {
8 import("//build/config/arm.gni") 8 import("//build/config/arm.gni")
9 } 9 }
10 if (current_cpu == "mipsel" || current_cpu == "mips64el") { 10 if (current_cpu == "mipsel" || current_cpu == "mips64el") {
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 } 90 }
91 91
92 # compiler --------------------------------------------------------------------- 92 # compiler ---------------------------------------------------------------------
93 # 93 #
94 # Base compiler configuration. 94 # Base compiler configuration.
95 # 95 #
96 # See also "runtime_library" below for related stuff and a discussion about 96 # See also "runtime_library" below for related stuff and a discussion about
97 # where stuff should go. Put warning related stuff in the "warnings" config. 97 # where stuff should go. Put warning related stuff in the "warnings" config.
98 98
99 config("compiler") { 99 config("compiler") {
100 arflags = []
100 cflags = [] 101 cflags = []
101 cflags_c = [] 102 cflags_c = []
102 cflags_cc = [] 103 cflags_cc = []
103 cflags_objc = [] 104 cflags_objc = []
104 cflags_objcc = [] 105 cflags_objcc = []
105 ldflags = [] 106 ldflags = []
106 defines = [] 107 defines = []
107 108
108 # In general, Windows is totally different, but all the other builds share 109 # In general, Windows is totally different, but all the other builds share
109 # some common GCC configuration. This section sets up Windows and the common 110 # some common GCC configuration. This section sets up Windows and the common
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 cflags += [ "-fstack-protector" ] 193 cflags += [ "-fstack-protector" ]
193 } 194 }
194 } 195 }
195 196
196 # Linker warnings. 197 # Linker warnings.
197 if (!(is_chromeos && current_cpu == "arm") && !is_mac && !is_ios) { 198 if (!(is_chromeos && current_cpu == "arm") && !is_mac && !is_ios) {
198 # TODO(jochen): Enable this on chromeos on arm. http://crbug.com/356580 199 # TODO(jochen): Enable this on chromeos on arm. http://crbug.com/356580
199 ldflags += [ "-Wl,--fatal-warnings" ] 200 ldflags += [ "-Wl,--fatal-warnings" ]
200 } 201 }
201 202
202 # Common options for AddressSanitizer, LeakSanitizer, ThreadSanitizer and 203 # Common options for AddressSanitizer, LeakSanitizer, ThreadSanitizer,
203 # MemorySanitizer 204 # MemorySanitizer and non-official CFI builds.
204 if (using_sanitizer) { 205 if (using_sanitizer || (is_cfi && !is_official_build)) {
205 cflags += [ 206 cflags += [
206 "-fno-omit-frame-pointer", 207 "-fno-omit-frame-pointer",
207 "-gline-tables-only", 208 "-gline-tables-only",
208 ] 209 ]
209 } 210 }
210 if (is_asan) { 211 if (is_asan) {
211 asan_blacklist_path = 212 asan_blacklist_path =
212 rebase_path("//tools/memory/asan/blacklist.txt", root_build_dir) 213 rebase_path("//tools/memory/asan/blacklist.txt", root_build_dir)
213 cflags += [ 214 cflags += [
214 "-fsanitize=address", 215 "-fsanitize=address",
(...skipping 17 matching lines...) Expand all
232 } 233 }
233 if (is_msan) { 234 if (is_msan) {
234 msan_blacklist_path = 235 msan_blacklist_path =
235 rebase_path("//tools/msan/blacklist.txt", root_build_dir) 236 rebase_path("//tools/msan/blacklist.txt", root_build_dir)
236 cflags += [ 237 cflags += [
237 "-fsanitize=memory", 238 "-fsanitize=memory",
238 "-fsanitize-memory-track-origins=$msan_track_origins", 239 "-fsanitize-memory-track-origins=$msan_track_origins",
239 "-fsanitize-blacklist=$msan_blacklist_path", 240 "-fsanitize-blacklist=$msan_blacklist_path",
240 ] 241 ]
241 } 242 }
243 if (is_cfi && !is_nacl) {
244 cfi_blacklist_path =
245 rebase_path("//tools/cfi/blacklist.txt", root_build_dir)
246 cflags += [
247 "-flto",
248 "-fsanitize=cfi-vcall",
249 "-fsanitize=cfi-derived-cast",
250 "-fsanitize=cfi-unrelated-cast",
251 "-fsanitize-blacklist=$cfi_blacklist_path",
252 ]
253 ldflags += [ "-flto" ]
254
255 gold_plugin_path = rebase_path(
256 "//third_party/llvm-build/Release+Asserts/lib/LLVMgold.so",
257 root_build_dir)
258 arflags += [
brettw 2015/09/03 04:41:20 My initial reaction is "I don't want this" but if
pcc1 2015/09/04 21:56:59 Archive files contain a symbol table for each obje
259 "--plugin",
260 gold_plugin_path,
261 ]
262
263 # Apply a lower LTO optimization level in non-official builds.
264 if (!is_official_build) {
265 if (is_linux) {
266 ldflags += [ "-Wl,-plugin-opt,O1" ]
267 } else if (is_mac) {
268 ldflags += [ "-Wl,-mllvm,-O1" ]
269 }
270 }
271
272 # Work-around for http://openradar.appspot.com/20356002
273 if (is_mac) {
274 ldflags += [ "-Wl,-all_load" ]
275 }
276
277 # Without this flag, LTO produces a .text section that is larger
278 # than the maximum call displacement, preventing the linker from
279 # relocating calls (http://llvm.org/PR22999).
280 if (current_cpu == "arm") {
281 ldflags += [ "-Wl,-plugin-opt,-function-sections" ]
282 }
283
284 if (use_cfi_diag) {
285 cflags += [
286 "-fno-sanitize-trap=cfi",
287 "-fsanitize-recover=cfi",
288 ]
289 } else {
290 defines += [ "CFI_ENFORCEMENT" ]
291 }
292 }
242 293
243 if (use_custom_libcxx) { 294 if (use_custom_libcxx) {
244 cflags_cc += [ "-nostdinc++" ] 295 cflags_cc += [ "-nostdinc++" ]
245 include_dirs = [ 296 include_dirs = [
246 "//buildtools/third_party/libc++/trunk/include", 297 "//buildtools/third_party/libc++/trunk/include",
247 "//buildtools/third_party/libc++abi/trunk/include", 298 "//buildtools/third_party/libc++abi/trunk/include",
248 ] 299 ]
249 } 300 }
250 } 301 }
251 302
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
459 "-fPIC", 510 "-fPIC",
460 "-pipe", # Use pipes for communicating between sub-processes. Faster. 511 "-pipe", # Use pipes for communicating between sub-processes. Faster.
461 ] 512 ]
462 513
463 ldflags += [ 514 ldflags += [
464 "-fPIC", 515 "-fPIC",
465 "-Wl,-z,noexecstack", 516 "-Wl,-z,noexecstack",
466 "-Wl,-z,now", 517 "-Wl,-z,now",
467 "-Wl,-z,relro", 518 "-Wl,-z,relro",
468 ] 519 ]
469 if (!using_sanitizer) { 520 if (!using_sanitizer && !use_cfi_diag) {
470 ldflags += [ "-Wl,-z,defs" ] 521 ldflags += [ "-Wl,-z,defs" ]
471 } 522 }
472 } 523 }
473 524
474 # Linux-specific compiler flags setup. 525 # Linux-specific compiler flags setup.
475 # ------------------------------------ 526 # ------------------------------------
476 if (is_linux) { 527 if (is_linux) {
477 cflags += [ "-pthread" ] 528 cflags += [ "-pthread" ]
478 ldflags += [ "-pthread" ] 529 ldflags += [ "-pthread" ]
479 } 530 }
(...skipping 612 matching lines...) Expand 10 before | Expand all | Expand 10 after
1092 # rtti ------------------------------------------------------------------------ 1143 # rtti ------------------------------------------------------------------------
1093 # 1144 #
1094 # Allows turning Run-Time Type Identification on or off. 1145 # Allows turning Run-Time Type Identification on or off.
1095 1146
1096 config("rtti") { 1147 config("rtti") {
1097 if (is_win) { 1148 if (is_win) {
1098 cflags_cc = [ "/GR" ] 1149 cflags_cc = [ "/GR" ]
1099 } 1150 }
1100 } 1151 }
1101 config("no_rtti") { 1152 config("no_rtti") {
1102 if (is_win) { 1153 # CFI diagnostics require RTTI.
1103 cflags_cc = [ "/GR-" ] 1154 if (!use_cfi_diag) {
1104 } else { 1155 if (is_win) {
1105 cflags_cc = [ "-fno-rtti" ] 1156 cflags_cc = [ "/GR-" ]
1106 cflags_objcc = cflags_cc 1157 } else {
1158 cflags_cc = [ "-fno-rtti" ]
1159 cflags_objcc = cflags_cc
1160 }
1107 } 1161 }
1108 } 1162 }
1109 1163
1110 # Warnings --------------------------------------------------------------------- 1164 # Warnings ---------------------------------------------------------------------
1111 1165
1112 # This will generate warnings when using Clang if code generates exit-time 1166 # This will generate warnings when using Clang if code generates exit-time
1113 # destructors, which will slow down closing the program. 1167 # destructors, which will slow down closing the program.
1114 # TODO(thakis): Make this a blacklist instead, http://crbug.com/101600 1168 # TODO(thakis): Make this a blacklist instead, http://crbug.com/101600
1115 config("wexit_time_destructors") { 1169 config("wexit_time_destructors") {
1116 # TODO: Enable on Windows too, http://crbug.com/404525 1170 # TODO: Enable on Windows too, http://crbug.com/404525
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
1342 cflags += [ "-gsplit-dwarf" ] 1396 cflags += [ "-gsplit-dwarf" ]
1343 } 1397 }
1344 } 1398 }
1345 } 1399 }
1346 1400
1347 config("no_symbols") { 1401 config("no_symbols") {
1348 if (!is_win) { 1402 if (!is_win) {
1349 cflags = [ "-g0" ] 1403 cflags = [ "-g0" ]
1350 } 1404 }
1351 } 1405 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698