Index: chrome/tools/build/win/syzygy/BUILD.gn |
diff --git a/chrome/tools/build/win/syzygy/BUILD.gn b/chrome/tools/build/win/syzygy/BUILD.gn |
index c73f94944a65b72f6a4b5d4eb021110f841c0cec..822a645f3e48861f54f23cc2bb265db4978cd0d7 100644 |
--- a/chrome/tools/build/win/syzygy/BUILD.gn |
+++ b/chrome/tools/build/win/syzygy/BUILD.gn |
@@ -6,13 +6,6 @@ import("//build/config/chrome_build.gni") |
import("//build/config/compiler/compiler.gni") |
import("//build/config/sanitizers/sanitizers.gni") |
-declare_args() { |
- # Generate Syzygy optimized binaries. Syzygy optimize mode is a profile |
- # guided optimization that reorders code for better locality. |
- syzygy_optimize = |
- is_win && is_official_build && !is_clang && symbol_level == 2 |
-} |
- |
assert(!syzygy_optimize || !is_syzyasan, |
"Don't do both syzygy_optimize and is_syzyasan") |
@@ -29,6 +22,9 @@ if (syzygy_optimize) { |
# |
# deps (required) |
# Normal meaning. |
+ # |
+ # data_deps |
+ # Normal meaning. |
template("syzygy_optimize") { |
action(target_name) { |
if (defined(invoker.visibility)) { |
@@ -59,9 +55,12 @@ if (syzygy_optimize) { |
rebase_path(syzygy_dest_dir, root_build_dir), |
] |
- if (defined(invoker.deps)) { |
- deps = invoker.deps |
- } |
+ forward_variables_from(invoker, |
+ [ |
+ "deps", |
+ "data_deps", |
+ "public_deps", |
+ ]) |
} |
} |
@@ -70,6 +69,11 @@ if (syzygy_optimize) { |
deps = [ |
"//chrome:main_dll", |
] |
+ if (is_multi_dll_chrome) { |
+ data_deps = [ |
+ ":chrome_child_dll_syzygy", |
+ ] |
+ } |
} |
if (is_multi_dll_chrome) { |
# Also instrument chrome_child.dll. |
@@ -83,13 +87,23 @@ if (syzygy_optimize) { |
} else if (is_syzyasan) { |
# Instruments a binary with SyzyAsan. |
# |
- # dll_name (required) |
- # Name of the DLL to be instrumented, with no extension or path. This |
- # ${dll_name}.dll is assumed to be in the output directory and must be |
+ # binary_name (required) |
+ # Name of the binary to be instrumented, with no extension or path. This |
+ # binary_name is assumed to be in the output directory and must be |
# generated by a dependency of this target. |
# |
+ # dest_dir (required) |
+ # The destination directory where the instrumented image should be |
+ # written. |
+ # |
# deps (required) |
# Normal meaning. |
+ # |
+ # public_deps |
+ # Normal meaning. |
+ # |
+ # data_deps |
+ # Normal meaning. |
template("syzygy_asan") { |
action(target_name) { |
if (defined(invoker.visibility)) { |
@@ -99,22 +113,23 @@ if (syzygy_optimize) { |
filter = "syzyasan-instrumentation-filter.txt" |
- dll_name = invoker.dll_name |
- input_dll = "$root_out_dir/$dll_name.dll" |
- input_pdb = "$root_out_dir/$dll_name.dll.pdb" |
+ binary_name = invoker.binary_name |
+ dest_dir = invoker.dest_dir |
+ input_image = "$root_out_dir/$binary_name" |
+ input_pdb = "$root_out_dir/$binary_name.pdb" |
inputs = [ |
filter, |
- input_dll, |
+ input_image, |
#input_pdb, |
] |
- output_filter = "$syzygy_dest_dir/win-syzyasan-filter-$dll_name.txt.json" |
+ output_filter = "$dest_dir/win-syzyasan-filter-$binary_name.txt.json" |
outputs = [ |
- "$syzygy_dest_dir/$dll_name.dll", |
- "$syzygy_dest_dir/$dll_name.dll.pdb", |
+ "$dest_dir/$input_image", |
+ "$dest_dir/$input_image.pdb", |
output_filter, |
] |
@@ -122,7 +137,7 @@ if (syzygy_optimize) { |
"--mode", |
"asan", |
"--input_executable", |
- rebase_path(input_dll, root_build_dir), |
+ rebase_path(input_image, root_build_dir), |
"--input_symbol", |
rebase_path(input_pdb, root_build_dir), |
"--filter", |
@@ -130,7 +145,7 @@ if (syzygy_optimize) { |
"--output-filter-file", |
rebase_path(output_filter, root_build_dir), |
"--destination_dir", |
- rebase_path(syzygy_dest_dir, root_build_dir), |
+ rebase_path(dest_dir, root_build_dir), |
] |
deps = [ |
@@ -139,14 +154,17 @@ if (syzygy_optimize) { |
if (defined(invoker.deps)) { |
deps += invoker.deps |
} |
- if (defined(invoker.public_deps)) { |
- public_deps = invoker.public_deps |
- } |
+ forward_variables_from(invoker, |
+ [ |
+ "data_deps", |
+ "public_deps", |
+ ]) |
} |
} |
syzygy_asan("chrome_dll_syzygy") { |
- dll_name = "chrome" |
+ binary_name = "chrome.dll" |
+ dest_dir = syzygy_dest_dir |
deps = [ |
"//chrome:main_dll", |
] |
@@ -160,7 +178,7 @@ if (syzygy_optimize) { |
# uninstrumented. Otherwise, chrome_child is also instrumented to the |
# normal place. |
syzygy_asan("chrome_child_dll_syzygy") { |
- dll_name = "chrome_child" |
+ binary_name = "chrome_child.dll" |
deps = [ |
"//chrome:chrome_child", |
] |
@@ -171,6 +189,10 @@ if (syzygy_optimize) { |
} else { |
dest_dir = syzygy_dest_dir |
} |
+ |
+ data_deps = [ |
+ ":chrome_child_dll_syzygy", |
+ ] |
} |
if (is_official_build) { |
@@ -182,7 +204,7 @@ if (syzygy_optimize) { |
"$root_out_dir/chrome_child.dll.pdb", |
] |
outputs = [ |
- "$syzygy_dest_dir/{{source_file_part}}", |
+ "$dest_dir/{{source_file_part}}", |
] |
deps = [ |
"//chrome:chrome_child", |