| Index: build/config/sanitizers/BUILD.gn
|
| diff --git a/build/config/sanitizers/BUILD.gn b/build/config/sanitizers/BUILD.gn
|
| index 1330a1f8aa3f2d66191b8d3e638eabedfa2197a8..d6732dcf001980f42b1c86aa7d7d1862520d0080 100644
|
| --- a/build/config/sanitizers/BUILD.gn
|
| +++ b/build/config/sanitizers/BUILD.gn
|
| @@ -66,34 +66,46 @@ group("deps_no_options") {
|
| public_deps += [ "//buildtools/third_party/libc++:libcxx_proxy" ]
|
| data += [ "$root_out_dir/libc++.so" ]
|
| }
|
| - if (is_mac) {
|
| +
|
| + if (is_mac || is_win) {
|
| data_deps = [
|
| ":copy_asan_runtime",
|
| ]
|
| + }
|
|
|
| + if (is_mac) {
|
| public_deps += [ ":asan_runtime_bundle_data" ]
|
| }
|
| }
|
| }
|
|
|
| -if (is_mac && using_sanitizer) {
|
| +if (using_sanitizer) {
|
| copy("copy_asan_runtime") {
|
| - sources = [
|
| - "$clang_base_path/lib/clang/$clang_version/lib/darwin/libclang_rt.asan_osx_dynamic.dylib",
|
| - ]
|
| + if (is_mac) {
|
| + sources = [
|
| + "$clang_base_path/lib/clang/$clang_version/lib/darwin/libclang_rt.asan_osx_dynamic.dylib",
|
| + ]
|
| + } else if (is_win) {
|
| + sources = [
|
| + "$clang_base_path/lib/clang/$clang_version/lib/windows/clang_rt.asan_dynamic-i386.dll",
|
| + "$clang_base_path/lib/clang/$clang_version/lib/windows/clang_rt.asan_dynamic-x86_64.dll",
|
| + ]
|
| + }
|
| outputs = [
|
| "$root_out_dir/{{source_file_part}}",
|
| ]
|
| }
|
|
|
| - bundle_data("asan_runtime_bundle_data") {
|
| - sources = get_target_outputs(":copy_asan_runtime")
|
| - outputs = [
|
| - "{{bundle_executable_dir}}/{{source_file_part}}",
|
| - ]
|
| - public_deps = [
|
| - ":copy_asan_runtime",
|
| - ]
|
| + if (is_mac) {
|
| + bundle_data("asan_runtime_bundle_data") {
|
| + sources = get_target_outputs(":copy_asan_runtime")
|
| + outputs = [
|
| + "{{bundle_executable_dir}}/{{source_file_part}}",
|
| + ]
|
| + public_deps = [
|
| + ":copy_asan_runtime",
|
| + ]
|
| + }
|
| }
|
| }
|
|
|
| @@ -134,6 +146,16 @@ static_library("options_sources") {
|
| }
|
| }
|
|
|
| +config("executable_config") {
|
| + if (is_win && is_asan) {
|
| + if (current_cpu == "x64") {
|
| + libs = [ "clang_rt.asan_dynamic-x86_64.lib" ]
|
| + } else {
|
| + libs = [ "clang_rt.asan_dynamic-i386.lib" ]
|
| + }
|
| + }
|
| +}
|
| +
|
| # Applies linker flags necessary when either :deps or :default_sanitizer_flags
|
| # are used.
|
| config("default_sanitizer_ldflags") {
|
| @@ -238,7 +260,7 @@ config("asan_flags") {
|
| }
|
|
|
| if (is_win) {
|
| - if (target_cpu == "x64") {
|
| + if (current_cpu == "x64") {
|
| # Windows 64-bit.
|
| if (is_component_build) {
|
| libs = [
|
| @@ -246,21 +268,17 @@ config("asan_flags") {
|
| "clang_rt.asan_dynamic_runtime_thunk-x86_64.lib",
|
| ]
|
| } else {
|
| - # TODO(etienneb): DLLs in the non-component build should link against
|
| - # clang_rt.asan_dll_thunk-x86_64.lib instead.
|
| - libs = [ "clang_rt.asan-x86_64.lib" ]
|
| + libs = [ "clang_rt.asan_dynamic_runtime_thunk-x86_64.lib" ]
|
| }
|
| } else {
|
| - assert(target_cpu == "x86", "WinASan unsupported architecture")
|
| + assert(current_cpu == "x86", "WinASan unsupported architecture")
|
| if (is_component_build) {
|
| libs = [
|
| "clang_rt.asan_dynamic-i386.lib",
|
| "clang_rt.asan_dynamic_runtime_thunk-i386.lib",
|
| ]
|
| } else {
|
| - # TODO(etienneb): DLLs in the non-component build should link against
|
| - # clang_rt.asan_dll_thunk-i386.lib instead.
|
| - libs = [ "clang_rt.asan-i386.lib" ]
|
| + libs = [ "clang_rt.asan_dynamic_runtime_thunk-i386.lib" ]
|
| }
|
| }
|
| }
|
|
|