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

Unified Diff: build/config/sanitizers/BUILD.gn

Issue 2363953004: Ensure the sanitizer runtime library is copied to app bundle if enabled. (Closed)
Patch Set: Address reviewers comments. Created 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « build/config/ios/rules.gni ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/config/sanitizers/BUILD.gn
diff --git a/build/config/sanitizers/BUILD.gn b/build/config/sanitizers/BUILD.gn
index 73bafa9891c858cab0a14a595a32cf9ebf99784a..5040189ee7eeaee5d3800d16cf2b1ed74f047cc2 100644
--- a/build/config/sanitizers/BUILD.gn
+++ b/build/config/sanitizers/BUILD.gn
@@ -9,6 +9,10 @@ import("//build/config/clang/clang.gni")
import("//build/config/sanitizers/sanitizers.gni")
import("//build/toolchain/toolchain.gni")
+if (is_ios) {
+ import("//build/config/ios/ios_sdk.gni")
+}
+
# Contains the dependencies needed for sanitizers to link into executables and
# shared_libraries. Unconditionally depend upon this target as it is empty if
# |is_asan|, |is_lsan|, |is_tsan|, |is_msan| and |use_custom_libcxx| are false.
@@ -67,35 +71,65 @@ group("deps_no_options") {
public_deps += [ "//buildtools/third_party/libc++:libcxx_proxy" ]
data += [ "$root_out_dir/libc++.so" ]
}
- if (is_mac || is_win) {
+
+ # ASAN is supported on iOS but the runtime library depends on the compiler
+ # used (Chromium version of clang versus Xcode version of clang). Only copy
+ # the ASAN runtime on iOS if building with Chromium clang.
+ if (is_win || is_mac || (is_ios && !use_xcode_clang)) {
data_deps = [
":copy_asan_runtime",
]
}
- if (is_mac) {
+ if (is_mac || (is_ios && !use_xcode_clang)) {
public_deps += [ ":asan_runtime_bundle_data" ]
}
}
}
-if ((is_mac || is_win) && using_sanitizer) {
- copy("copy_asan_runtime") {
- if (is_mac) {
- clang_rt_dso_path = "darwin/libclang_rt.asan_osx_dynamic.dylib"
- } else if (is_win && target_cpu == "x86") {
- clang_rt_dso_path = "windows/clang_rt.asan_dynamic-i386.dll"
- } else if (is_win && target_cpu == "x64") {
- clang_rt_dso_path = "windows/clang_rt.asan_dynamic-x86_64.dll"
+if ((is_mac || is_win || (is_ios && !use_xcode_clang)) && using_sanitizer) {
+ if (is_mac) {
+ _clang_rt_dso_path = "darwin/libclang_rt.asan_osx_dynamic.dylib"
+ } else if (is_ios) {
+ _clang_rt_dso_path = "darwin/libclang_rt.asan_iossim_dynamic.dylib"
+ } else if (is_win && target_cpu == "x86") {
+ _clang_rt_dso_path = "windows/clang_rt.asan_dynamic-i386.dll"
+ } else if (is_win && target_cpu == "x64") {
+ _clang_rt_dso_path = "windows/clang_rt.asan_dynamic-x86_64.dll"
+ }
+
+ _clang_rt_dso_full_path =
+ "$clang_base_path/lib/clang/$clang_version/lib/$_clang_rt_dso_path"
+
+ if (!is_ios) {
+ copy("copy_asan_runtime") {
+ sources = [
+ _clang_rt_dso_full_path,
+ ]
+ outputs = [
+ "$root_out_dir/{{source_file_part}}",
+ ]
+ }
+ } else {
+ # On iOS, the runtime library need to be code signed (adhoc signature)
+ # starting with Xcode 8, so use an action instead of a copy on iOS.
+ action("copy_asan_runtime") {
+ script = "//build/config/ios/codesign.py"
+ sources = [
+ _clang_rt_dso_full_path,
+ ]
+ outputs = [
+ "$root_out_dir/" + get_path_info(sources[0], "file"),
+ ]
+ args = [
+ "code-sign-file",
+ "--identity=" + ios_code_signing_identity,
+ "--output=" + rebase_path(outputs[0], root_build_dir),
+ rebase_path(sources[0], root_build_dir),
+ ]
}
- sources = [
- "$clang_base_path/lib/clang/$clang_version/lib/$clang_rt_dso_path",
- ]
- outputs = [
- "$root_out_dir/{{source_file_part}}",
- ]
}
- if (is_mac) {
+ if (is_mac || is_ios) {
bundle_data("asan_runtime_bundle_data") {
sources = get_target_outputs(":copy_asan_runtime")
outputs = [
@@ -109,7 +143,7 @@ if ((is_mac || is_win) && using_sanitizer) {
}
config("sanitizer_options_link_helper") {
- if (is_mac) {
+ if (is_mac || is_ios) {
ldflags = [ "-Wl,-U,_sanitizer_options_link_helper" ]
} else if (!is_win) {
ldflags = [ "-Wl,-u_sanitizer_options_link_helper" ]
« no previous file with comments | « build/config/ios/rules.gni ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698