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

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

Issue 1361323003: Separate out GN sanitizer flags. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: merge Created 5 years, 2 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/BUILDCONFIG.gn ('k') | build/config/sanitizers/BUILD.gn » ('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 (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 import("//build/config/compiler/compiler.gni") 7 import("//build/config/compiler/compiler.gni")
8 import("//build/toolchain/ccache.gni") 8 import("//build/toolchain/ccache.gni")
9 9
10 if (current_cpu == "arm") { 10 if (current_cpu == "arm") {
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 } else { 137 } else {
138 cflags += [ "-fstack-protector" ] 138 cflags += [ "-fstack-protector" ]
139 } 139 }
140 } 140 }
141 141
142 # Linker warnings. 142 # Linker warnings.
143 if (!(is_chromeos && current_cpu == "arm") && !is_mac && !is_ios) { 143 if (!(is_chromeos && current_cpu == "arm") && !is_mac && !is_ios) {
144 # TODO(jochen): Enable this on chromeos on arm. http://crbug.com/356580 144 # TODO(jochen): Enable this on chromeos on arm. http://crbug.com/356580
145 ldflags += [ "-Wl,--fatal-warnings" ] 145 ldflags += [ "-Wl,--fatal-warnings" ]
146 } 146 }
147
148 # Common options for AddressSanitizer, LeakSanitizer, ThreadSanitizer,
149 # MemorySanitizer and non-official CFI builds.
150 if (using_sanitizer || (is_cfi && !is_official_build)) {
151 cflags += [
152 "-fno-omit-frame-pointer",
153 "-gline-tables-only",
154 ]
155 }
156 if (is_asan) {
157 asan_blacklist_path =
158 rebase_path("//tools/memory/asan/blacklist.txt", root_build_dir)
159 cflags += [
160 "-fsanitize=address",
161 "-fsanitize-blacklist=$asan_blacklist_path",
162 ]
163 if (is_mac) {
164 cflags += [ "-mllvm -asan-globals=0" ] # http://crbug.com/352073
165 # TODO(GYP): deal with mac_bundles.
166 }
167 }
168 if (is_lsan) {
169 cflags += [ "-fsanitize=leak" ]
170 }
171 if (is_tsan) {
172 tsan_blacklist_path =
173 rebase_path("//tools/memory/tsan_v2/ignores.txt", root_build_dir)
174 cflags += [
175 "-fsanitize=thread",
176 "-fsanitize-blacklist=$tsan_blacklist_path",
177 ]
178 }
179 if (is_msan) {
180 msan_blacklist_path =
181 rebase_path("//tools/msan/blacklist.txt", root_build_dir)
182 cflags += [
183 "-fsanitize=memory",
184 "-fsanitize-memory-track-origins=$msan_track_origins",
185 "-fsanitize-blacklist=$msan_blacklist_path",
186 ]
187 }
188 if (is_cfi && !is_nacl) {
189 cfi_blacklist_path =
190 rebase_path("//tools/cfi/blacklist.txt", root_build_dir)
191 cflags += [
192 "-flto",
193 "-fsanitize=cfi-vcall",
194 "-fsanitize=cfi-derived-cast",
195 "-fsanitize=cfi-unrelated-cast",
196 "-fsanitize-blacklist=$cfi_blacklist_path",
197 ]
198 ldflags += [
199 "-flto",
200 "-fsanitize=cfi-vcall",
201 "-fsanitize=cfi-derived-cast",
202 "-fsanitize=cfi-unrelated-cast",
203 ]
204
205 # Apply a lower LTO optimization level in non-official builds.
206 if (!is_official_build) {
207 if (is_linux) {
208 ldflags += [ "-Wl,-plugin-opt,O1" ]
209 } else if (is_mac) {
210 ldflags += [ "-Wl,-mllvm,-O1" ]
211 }
212 }
213
214 # Work-around for http://openradar.appspot.com/20356002
215 if (is_mac) {
216 ldflags += [ "-Wl,-all_load" ]
217 }
218
219 # Without this flag, LTO produces a .text section that is larger
220 # than the maximum call displacement, preventing the linker from
221 # relocating calls (http://llvm.org/PR22999).
222 if (current_cpu == "arm") {
223 ldflags += [ "-Wl,-plugin-opt,-function-sections" ]
224 }
225
226 if (use_cfi_diag) {
227 cflags += [
228 "-fno-sanitize-trap=cfi",
229 "-fsanitize-recover=cfi",
230 ]
231 ldflags += [
232 "-fno-sanitize-trap=cfi",
233 "-fsanitize-recover=cfi",
234 ]
235 } else {
236 defines += [ "CFI_ENFORCEMENT" ]
237 }
238 }
239
240 if (use_custom_libcxx) {
241 cflags_cc += [ "-nostdinc++" ]
242 include_dirs = [
243 "//buildtools/third_party/libc++/trunk/include",
244 "//buildtools/third_party/libc++abi/trunk/include",
245 ]
246 }
247 } 147 }
248 148
249 if (is_clang && is_debug) { 149 if (is_clang && is_debug) {
250 # Allow comparing the address of references and 'this' against 0 150 # Allow comparing the address of references and 'this' against 0
251 # in debug builds. Technically, these can never be null in 151 # in debug builds. Technically, these can never be null in
252 # well-defined C/C++ and Clang can optimize such checks away in 152 # well-defined C/C++ and Clang can optimize such checks away in
253 # release builds, but they may be used in asserts in debug builds. 153 # release builds, but they may be used in asserts in debug builds.
254 cflags_cc += [ 154 cflags_cc += [
255 "-Wno-undefined-bool-conversion", 155 "-Wno-undefined-bool-conversion",
256 "-Wno-tautological-undefined-compare", 156 "-Wno-tautological-undefined-compare",
(...skipping 964 matching lines...) Expand 10 before | Expand all | Expand 10 after
1221 if (symbol_level == 0) { 1121 if (symbol_level == 0) {
1222 configs = [ ":no_symbols" ] 1122 configs = [ ":no_symbols" ]
1223 } else if (symbol_level == 1) { 1123 } else if (symbol_level == 1) {
1224 configs = [ ":minimal_symbols" ] 1124 configs = [ ":minimal_symbols" ]
1225 } else if (symbol_level == 2) { 1125 } else if (symbol_level == 2) {
1226 configs = [ ":symbols" ] 1126 configs = [ ":symbols" ]
1227 } else { 1127 } else {
1228 assert(false) 1128 assert(false)
1229 } 1129 }
1230 } 1130 }
OLDNEW
« no previous file with comments | « build/config/BUILDCONFIG.gn ('k') | build/config/sanitizers/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698