| OLD | NEW |
| 1 # Copyright 2015 The Chromium Authors. All rights reserved. | 1 # Copyright 2015 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 # Defines fuzzer_test. | 5 # Defines fuzzer_test. |
| 6 # | 6 # |
| 7 import("//build/config/features.gni") | 7 import("//build/config/features.gni") |
| 8 import("//build/config/sanitizers/sanitizers.gni") | 8 import("//build/config/sanitizers/sanitizers.gni") |
| 9 import("//testing/test.gni") | 9 import("//testing/test.gni") |
| 10 | 10 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 29 template("fuzzer_test") { | 29 template("fuzzer_test") { |
| 30 if (!disable_libfuzzer && (use_libfuzzer || use_drfuzz || is_linux)) { | 30 if (!disable_libfuzzer && (use_libfuzzer || use_drfuzz || is_linux)) { |
| 31 assert(defined(invoker.sources), "Need sources in $target_name.") | 31 assert(defined(invoker.sources), "Need sources in $target_name.") |
| 32 | 32 |
| 33 test_deps = [ "//testing/libfuzzer:libfuzzer_main" ] | 33 test_deps = [ "//testing/libfuzzer:libfuzzer_main" ] |
| 34 | 34 |
| 35 if (defined(invoker.deps)) { | 35 if (defined(invoker.deps)) { |
| 36 test_deps += invoker.deps | 36 test_deps += invoker.deps |
| 37 } | 37 } |
| 38 | 38 |
| 39 if (defined(invoker.libfuzzer_options) && !defined(invoker.dict)) { | |
| 40 # Copy libfuzzer_options to output if dict is not provided. | |
| 41 copy(target_name + "_libfuzzer_options_copy") { | |
| 42 sources = [ | |
| 43 invoker.libfuzzer_options, | |
| 44 ] | |
| 45 outputs = [ | |
| 46 "$root_build_dir/" + target_name + ".options", | |
| 47 ] | |
| 48 } | |
| 49 | |
| 50 test_deps += [ ":" + target_name + "_libfuzzer_options_copy" ] | |
| 51 } | |
| 52 | |
| 53 if (defined(invoker.seed_corpus)) { | 39 if (defined(invoker.seed_corpus)) { |
| 54 depfile = "$root_build_dir/$target_name" + ".seed_corpus.d" | 40 depfile = "$root_build_dir/$target_name" + ".seed_corpus.d" |
| 55 out = "$root_build_dir/$target_name" + "_seed_corpus.zip" | 41 out = "$root_build_dir/$target_name" + "_seed_corpus.zip" |
| 56 | 42 |
| 57 action(target_name + "_seed_corpus") { | 43 action(target_name + "_seed_corpus") { |
| 58 script = "//testing/libfuzzer/archive_corpus.py" | 44 script = "//testing/libfuzzer/archive_corpus.py" |
| 59 args = [ | 45 args = [ |
| 60 "--depfile", | 46 "--depfile", |
| 61 rebase_path(depfile), | 47 rebase_path(depfile), |
| 62 "--corpus", | 48 "--corpus", |
| 63 rebase_path(invoker.seed_corpus), | 49 rebase_path(invoker.seed_corpus), |
| 64 "--output", | 50 "--output", |
| 65 rebase_path(out), | 51 rebase_path(out), |
| 66 "--fuzzer", | 52 "--fuzzer", |
| 67 rebase_path("$root_build_dir/$target_name"), | 53 rebase_path("$root_build_dir/$target_name"), |
| 68 ] | 54 ] |
| 69 | 55 |
| 70 depfile = depfile | 56 depfile = depfile |
| 71 outputs = [ | 57 outputs = [ |
| 72 out, | 58 out, |
| 73 ] | 59 ] |
| 74 deps = [ | 60 deps = [ |
| 75 "//testing/libfuzzer:seed_corpus", | 61 "//testing/libfuzzer:seed_corpus", |
| 76 ] | 62 ] |
| 77 } | 63 } |
| 78 | 64 |
| 79 test_deps += [ ":" + target_name + "_seed_corpus" ] | 65 test_deps += [ ":" + target_name + "_seed_corpus" ] |
| 80 } | 66 } |
| 81 | 67 |
| 82 if (defined(invoker.dict)) { | 68 if (defined(invoker.dict) || defined(invoker.libfuzzer_options)) { |
| 83 # Copy dictionary to output. | 69 if (defined(invoker.dict)) { |
| 84 copy(target_name + "_dict_copy") { | 70 # Copy dictionary to output. |
| 85 sources = [ | 71 copy(target_name + "_dict_copy") { |
| 86 invoker.dict, | 72 sources = [ |
| 87 ] | 73 invoker.dict, |
| 88 outputs = [ | 74 ] |
| 89 "$root_build_dir/" + target_name + ".dict", | 75 outputs = [ |
| 90 ] | 76 "$root_build_dir/" + target_name + ".dict", |
| 77 ] |
| 78 } |
| 79 test_deps += [ ":" + target_name + "_dict_copy" ] |
| 91 } | 80 } |
| 92 | 81 |
| 93 test_deps += [ ":" + target_name + "_dict_copy" ] | 82 # Generate .options file. |
| 94 | |
| 95 # Generate new .options file or update an existing one. | |
| 96 config_name = target_name + ".options" | 83 config_name = target_name + ".options" |
| 97 action(config_name) { | 84 action(config_name) { |
| 98 script = "//testing/libfuzzer/gen_fuzzer_config.py" | 85 script = "//testing/libfuzzer/gen_fuzzer_config.py" |
| 99 args = [ | 86 args = [ |
| 100 "--config", | 87 "--config", |
| 101 rebase_path("$root_build_dir/" + config_name), | 88 rebase_path("$root_build_dir/" + config_name), |
| 102 "--dict", | |
| 103 rebase_path("$root_build_dir/" + invoker.target_name + ".dict"), | |
| 104 ] | 89 ] |
| 105 | 90 |
| 106 if (defined(invoker.libfuzzer_options)) { | 91 if (defined(invoker.dict)) { |
| 107 args += [ | 92 args += [ |
| 108 "--libfuzzer_options", | 93 "--dict", |
| 109 rebase_path(invoker.libfuzzer_options), | 94 rebase_path("$root_build_dir/" + invoker.target_name + ".dict"), |
| 110 ] | 95 ] |
| 111 } | 96 } |
| 97 |
| 98 if (defined(invoker.libfuzzer_options)) { |
| 99 args += [ "--libfuzzer_options" ] |
| 100 args += invoker.libfuzzer_options |
| 101 } |
| 102 |
| 112 outputs = [ | 103 outputs = [ |
| 113 "$root_build_dir/$config_name", | 104 "$root_build_dir/$config_name", |
| 114 ] | 105 ] |
| 115 } | 106 } |
| 116 test_deps += [ ":" + config_name ] | 107 test_deps += [ ":" + config_name ] |
| 117 } | 108 } |
| 118 | 109 |
| 119 test(target_name) { | 110 test(target_name) { |
| 120 forward_variables_from(invoker, | 111 forward_variables_from(invoker, |
| 121 [ | 112 [ |
| (...skipping 24 matching lines...) Expand all Loading... |
| 146 assert(invoker.libfuzzer_options == [] || invoker.libfuzzer_options != []) | 137 assert(invoker.libfuzzer_options == [] || invoker.libfuzzer_options != []) |
| 147 } | 138 } |
| 148 if (defined(invoker.seed_corpus)) { | 139 if (defined(invoker.seed_corpus)) { |
| 149 assert(invoker.seed_corpus == [] || invoker.seed_corpus != []) | 140 assert(invoker.seed_corpus == [] || invoker.seed_corpus != []) |
| 150 } | 141 } |
| 151 | 142 |
| 152 group(target_name) { | 143 group(target_name) { |
| 153 } | 144 } |
| 154 } | 145 } |
| 155 } | 146 } |
| OLD | NEW |