OLD | NEW |
| (Empty) |
1 # Copyright 2016 The Chromium Authors. All rights reserved. | |
2 # Use of this source code is governed by a BSD-style license that can be | |
3 # found in the LICENSE file. | |
4 | |
5 assert(is_win) | |
6 | |
7 # Where the output binaries will be placed. | |
8 syzygy_dest_dir = "$root_out_dir/syzygy" | |
9 | |
10 # Generates a Syzygy optimize target. | |
11 # | |
12 # binary_name (required) | |
13 # Name of the binary to be instrumented, with no extension or path. This | |
14 # binary_name is assumed to be in the output directory and must be | |
15 # generated by a dependency of this target. | |
16 # | |
17 # deps (required) | |
18 # Normal meaning. | |
19 # | |
20 # data_deps | |
21 # Normal meaning. | |
22 template("syzygy_optimize") { | |
23 action(target_name) { | |
24 if (defined(invoker.visibility)) { | |
25 visibility = invoker.visibility | |
26 } | |
27 script = "//build/win/syzygy/reorder.py" | |
28 | |
29 binary_name = invoker.binary_name | |
30 input_dll = "$root_out_dir/$binary_name" | |
31 input_pdb = "$root_out_dir/$binary_name.pdb" | |
32 | |
33 inputs = [ | |
34 input_dll, | |
35 #input_pdb, | |
36 ] | |
37 | |
38 outputs = [ | |
39 "$syzygy_dest_dir/$binary_name", | |
40 "$syzygy_dest_dir/$binary_name.pdb", | |
41 ] | |
42 | |
43 args = [ | |
44 "--input_executable", | |
45 rebase_path(input_dll, root_build_dir), | |
46 "--input_symbol", | |
47 rebase_path(input_pdb, root_build_dir), | |
48 "--destination_dir", | |
49 rebase_path(syzygy_dest_dir, root_build_dir), | |
50 ] | |
51 | |
52 forward_variables_from(invoker, | |
53 [ | |
54 "deps", | |
55 "data_deps", | |
56 "public_deps", | |
57 ]) | |
58 } | |
59 } | |
60 | |
61 # Instruments a binary with SyzyAsan. | |
62 # | |
63 # binary_name (required) | |
64 # Name of the binary to be instrumented, with no extension or path. This | |
65 # binary_name is assumed to be in the output directory and must be | |
66 # generated by a dependency of this target. | |
67 # | |
68 # dest_dir (required) | |
69 # The destination directory where the instrumented image should be | |
70 # written. | |
71 # | |
72 # deps (required) | |
73 # Normal meaning. | |
74 # | |
75 # public_deps | |
76 # Normal meaning. | |
77 # | |
78 # data_deps | |
79 # Normal meaning. | |
80 template("syzygy_asan") { | |
81 action(target_name) { | |
82 if (defined(invoker.visibility)) { | |
83 visibility = invoker.visibility | |
84 } | |
85 script = "//build/win/syzygy/instrument.py" | |
86 | |
87 filter = "//build/win/syzygy/syzyasan-instrumentation-filter.txt" | |
88 | |
89 binary_name = invoker.binary_name | |
90 dest_dir = invoker.dest_dir | |
91 input_image = "$root_out_dir/$binary_name" | |
92 input_pdb = "$root_out_dir/$binary_name.pdb" | |
93 | |
94 inputs = [ | |
95 filter, | |
96 input_image, | |
97 | |
98 #input_pdb, | |
99 ] | |
100 | |
101 output_filter = "$dest_dir/win-syzyasan-filter-$binary_name.txt.json" | |
102 | |
103 outputs = [ | |
104 "$dest_dir/$binary_name", | |
105 "$dest_dir/$binary_name.pdb", | |
106 output_filter, | |
107 ] | |
108 | |
109 args = [ | |
110 "--mode", | |
111 "asan", | |
112 "--input_executable", | |
113 rebase_path(input_image, root_build_dir), | |
114 "--input_symbol", | |
115 rebase_path(input_pdb, root_build_dir), | |
116 "--filter", | |
117 rebase_path(filter, root_build_dir), | |
118 "--output-filter-file", | |
119 rebase_path(output_filter, root_build_dir), | |
120 "--destination_dir", | |
121 rebase_path(dest_dir, root_build_dir), | |
122 ] | |
123 | |
124 deps = [ | |
125 "//build/win/syzygy:copy_syzyasan_binaries", | |
126 ] | |
127 if (defined(invoker.deps)) { | |
128 deps += invoker.deps | |
129 } | |
130 forward_variables_from(invoker, | |
131 [ | |
132 "data_deps", | |
133 "public_deps", | |
134 "testonly", | |
135 ]) | |
136 } | |
137 } | |
OLD | NEW |