1fd4e5da5Sopenharmony_ci# Copyright 2018 Google Inc. All rights reserved. 2fd4e5da5Sopenharmony_ci# 3fd4e5da5Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License"); 4fd4e5da5Sopenharmony_ci# you may not use this file except in compliance with the License. 5fd4e5da5Sopenharmony_ci# You may obtain a copy of the License at 6fd4e5da5Sopenharmony_ci# 7fd4e5da5Sopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0 8fd4e5da5Sopenharmony_ci# 9fd4e5da5Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software 10fd4e5da5Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS, 11fd4e5da5Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12fd4e5da5Sopenharmony_ci# See the License for the specific language governing permissions and 13fd4e5da5Sopenharmony_ci# limitations under the License. 14fd4e5da5Sopenharmony_ci 15fd4e5da5Sopenharmony_ciimport("//testing/libfuzzer/fuzzer_test.gni") 16fd4e5da5Sopenharmony_ciimport("//testing/test.gni") 17fd4e5da5Sopenharmony_ci 18fd4e5da5Sopenharmony_ciconfig("fuzzer_config") { 19fd4e5da5Sopenharmony_ci configs = [ "../..:spvtools_internal_config" ] 20fd4e5da5Sopenharmony_ci} 21fd4e5da5Sopenharmony_ci 22fd4e5da5Sopenharmony_cigroup("fuzzers") { 23fd4e5da5Sopenharmony_ci testonly = true 24fd4e5da5Sopenharmony_ci deps = [] 25fd4e5da5Sopenharmony_ci 26fd4e5da5Sopenharmony_ci if (!build_with_chromium || use_fuzzing_engine) { 27fd4e5da5Sopenharmony_ci deps += [ ":fuzzers_bin" ] 28fd4e5da5Sopenharmony_ci } 29fd4e5da5Sopenharmony_ci} 30fd4e5da5Sopenharmony_ci 31fd4e5da5Sopenharmony_ciif (!build_with_chromium || use_fuzzing_engine) { 32fd4e5da5Sopenharmony_ci group("fuzzers_bin") { 33fd4e5da5Sopenharmony_ci testonly = true 34fd4e5da5Sopenharmony_ci 35fd4e5da5Sopenharmony_ci deps = [ 36fd4e5da5Sopenharmony_ci ":spvtools_as_fuzzer", 37fd4e5da5Sopenharmony_ci ":spvtools_binary_parser_fuzzer", 38fd4e5da5Sopenharmony_ci ":spvtools_dis_fuzzer", 39fd4e5da5Sopenharmony_ci ":spvtools_opt_legalization_fuzzer", 40fd4e5da5Sopenharmony_ci ":spvtools_opt_performance_fuzzer", 41fd4e5da5Sopenharmony_ci ":spvtools_opt_size_fuzzer", 42fd4e5da5Sopenharmony_ci ":spvtools_val_fuzzer", 43fd4e5da5Sopenharmony_ci ] 44fd4e5da5Sopenharmony_ci } 45fd4e5da5Sopenharmony_ci} 46fd4e5da5Sopenharmony_ci 47fd4e5da5Sopenharmony_citemplate("spvtools_fuzzer") { 48fd4e5da5Sopenharmony_ci source_set(target_name) { 49fd4e5da5Sopenharmony_ci testonly = true 50fd4e5da5Sopenharmony_ci sources = invoker.sources 51fd4e5da5Sopenharmony_ci sources += [ "random_generator.cpp" ] 52fd4e5da5Sopenharmony_ci deps = [ 53fd4e5da5Sopenharmony_ci "../..:spvtools", 54fd4e5da5Sopenharmony_ci "../..:spvtools_opt", 55fd4e5da5Sopenharmony_ci "../..:spvtools_val", 56fd4e5da5Sopenharmony_ci ] 57fd4e5da5Sopenharmony_ci if (defined(invoker.deps)) { 58fd4e5da5Sopenharmony_ci deps += invoker.deps 59fd4e5da5Sopenharmony_ci } 60fd4e5da5Sopenharmony_ci 61fd4e5da5Sopenharmony_ci configs -= [ "//build/config/compiler:chromium_code" ] 62fd4e5da5Sopenharmony_ci configs += [ 63fd4e5da5Sopenharmony_ci "//build/config/compiler:no_chromium_code", 64fd4e5da5Sopenharmony_ci ":fuzzer_config", 65fd4e5da5Sopenharmony_ci ] 66fd4e5da5Sopenharmony_ci } 67fd4e5da5Sopenharmony_ci} 68fd4e5da5Sopenharmony_ci 69fd4e5da5Sopenharmony_cispvtools_fuzzer("spvtools_as_fuzzer_src") { 70fd4e5da5Sopenharmony_ci sources = [ "spvtools_as_fuzzer.cpp" ] 71fd4e5da5Sopenharmony_ci} 72fd4e5da5Sopenharmony_ci 73fd4e5da5Sopenharmony_cispvtools_fuzzer("spvtools_binary_parser_fuzzer_src") { 74fd4e5da5Sopenharmony_ci sources = [ "spvtools_binary_parser_fuzzer.cpp" ] 75fd4e5da5Sopenharmony_ci} 76fd4e5da5Sopenharmony_ci 77fd4e5da5Sopenharmony_cispvtools_fuzzer("spvtools_dis_fuzzer_src") { 78fd4e5da5Sopenharmony_ci sources = [ "spvtools_dis_fuzzer.cpp" ] 79fd4e5da5Sopenharmony_ci} 80fd4e5da5Sopenharmony_ci 81fd4e5da5Sopenharmony_cispvtools_fuzzer("spvtools_opt_performance_fuzzer_src") { 82fd4e5da5Sopenharmony_ci sources = [ 83fd4e5da5Sopenharmony_ci "spvtools_opt_fuzzer_common.cpp", 84fd4e5da5Sopenharmony_ci "spvtools_opt_performance_fuzzer.cpp", 85fd4e5da5Sopenharmony_ci ] 86fd4e5da5Sopenharmony_ci} 87fd4e5da5Sopenharmony_ci 88fd4e5da5Sopenharmony_cispvtools_fuzzer("spvtools_opt_legalization_fuzzer_src") { 89fd4e5da5Sopenharmony_ci sources = [ 90fd4e5da5Sopenharmony_ci "spvtools_opt_fuzzer_common.cpp", 91fd4e5da5Sopenharmony_ci "spvtools_opt_legalization_fuzzer.cpp", 92fd4e5da5Sopenharmony_ci ] 93fd4e5da5Sopenharmony_ci} 94fd4e5da5Sopenharmony_ci 95fd4e5da5Sopenharmony_cispvtools_fuzzer("spvtools_opt_size_fuzzer_src") { 96fd4e5da5Sopenharmony_ci sources = [ 97fd4e5da5Sopenharmony_ci "spvtools_opt_fuzzer_common.cpp", 98fd4e5da5Sopenharmony_ci "spvtools_opt_size_fuzzer.cpp", 99fd4e5da5Sopenharmony_ci ] 100fd4e5da5Sopenharmony_ci} 101fd4e5da5Sopenharmony_ci 102fd4e5da5Sopenharmony_cispvtools_fuzzer("spvtools_val_fuzzer_src") { 103fd4e5da5Sopenharmony_ci sources = [ "spvtools_val_fuzzer.cpp" ] 104fd4e5da5Sopenharmony_ci} 105fd4e5da5Sopenharmony_ci 106fd4e5da5Sopenharmony_ciif (!build_with_chromium || use_fuzzing_engine) { 107fd4e5da5Sopenharmony_ci fuzzer_test("spvtools_as_fuzzer") { 108fd4e5da5Sopenharmony_ci sources = [] 109fd4e5da5Sopenharmony_ci deps = [ ":spvtools_as_fuzzer_src" ] 110fd4e5da5Sopenharmony_ci 111fd4e5da5Sopenharmony_ci # Intentionally doesn't use the seed corpus, because it consumes 112fd4e5da5Sopenharmony_ci # part of the input as not part of the file. 113fd4e5da5Sopenharmony_ci } 114fd4e5da5Sopenharmony_ci 115fd4e5da5Sopenharmony_ci fuzzer_test("spvtools_binary_parser_fuzzer") { 116fd4e5da5Sopenharmony_ci sources = [] 117fd4e5da5Sopenharmony_ci deps = [ ":spvtools_binary_parser_fuzzer_src" ] 118fd4e5da5Sopenharmony_ci 119fd4e5da5Sopenharmony_ci # Intentionally doesn't use the seed corpus, because it consumes 120fd4e5da5Sopenharmony_ci # part of the input as not part of the file. 121fd4e5da5Sopenharmony_ci } 122fd4e5da5Sopenharmony_ci 123fd4e5da5Sopenharmony_ci fuzzer_test("spvtools_dis_fuzzer") { 124fd4e5da5Sopenharmony_ci sources = [] 125fd4e5da5Sopenharmony_ci deps = [ ":spvtools_dis_fuzzer_src" ] 126fd4e5da5Sopenharmony_ci 127fd4e5da5Sopenharmony_ci # Intentionally doesn't use the seed corpus, because it consumes 128fd4e5da5Sopenharmony_ci # part of the input as not part of the file. 129fd4e5da5Sopenharmony_ci } 130fd4e5da5Sopenharmony_ci 131fd4e5da5Sopenharmony_ci fuzzer_test("spvtools_opt_performance_fuzzer") { 132fd4e5da5Sopenharmony_ci sources = [] 133fd4e5da5Sopenharmony_ci deps = [ ":spvtools_opt_performance_fuzzer_src" ] 134fd4e5da5Sopenharmony_ci seed_corpus = "corpora/spv" 135fd4e5da5Sopenharmony_ci } 136fd4e5da5Sopenharmony_ci 137fd4e5da5Sopenharmony_ci fuzzer_test("spvtools_opt_legalization_fuzzer") { 138fd4e5da5Sopenharmony_ci sources = [] 139fd4e5da5Sopenharmony_ci deps = [ ":spvtools_opt_legalization_fuzzer_src" ] 140fd4e5da5Sopenharmony_ci seed_corpus = "corpora/spv" 141fd4e5da5Sopenharmony_ci } 142fd4e5da5Sopenharmony_ci 143fd4e5da5Sopenharmony_ci fuzzer_test("spvtools_opt_size_fuzzer") { 144fd4e5da5Sopenharmony_ci sources = [] 145fd4e5da5Sopenharmony_ci deps = [ ":spvtools_opt_size_fuzzer_src" ] 146fd4e5da5Sopenharmony_ci seed_corpus = "corpora/spv" 147fd4e5da5Sopenharmony_ci } 148fd4e5da5Sopenharmony_ci 149fd4e5da5Sopenharmony_ci fuzzer_test("spvtools_val_fuzzer") { 150fd4e5da5Sopenharmony_ci sources = [] 151fd4e5da5Sopenharmony_ci deps = [ ":spvtools_val_fuzzer_src" ] 152fd4e5da5Sopenharmony_ci seed_corpus = "corpora/spv" 153fd4e5da5Sopenharmony_ci } 154fd4e5da5Sopenharmony_ci} 155