From e755e8c55d07f6fd4f66dcd2fecdd06fe96c45bb Mon Sep 17 00:00:00 2001 From: John Turner Date: Wed, 3 Dec 2025 19:58:42 +0000 Subject: [PATCH] configure fuzzers separately --- fuzz/atom/parser/meson.build | 38 +++++++++++++++++++----- fuzz/atom/vercmp/meson.build | 38 +++++++++++++++++++----- fuzz/meson.build | 57 ------------------------------------ 3 files changed, 62 insertions(+), 71 deletions(-) diff --git a/fuzz/atom/parser/meson.build b/fuzz/atom/parser/meson.build index 88452f5..025c6fb 100644 --- a/fuzz/atom/parser/meson.build +++ b/fuzz/atom/parser/meson.build @@ -1,7 +1,31 @@ -fuzzers += { - 'atom_parser': { - 'gencorpus': meson.current_source_dir() / 'gencorpus.rs', - 'fuzzer': meson.current_source_dir() / 'fuzz.rs', - 'deps': [mon], - }, -} +gencorpus = executable( + 'gencorpus', + 'gencorpus.rs', + dependencies: [mon], + link_with: [gentoo_utils], +) + +corpus = custom_target( + 'corpus', + output: 'corpus', + command: [gencorpus, 'corpus'], +) + +fuzz_rs = static_library( + 'fuzzer', + 'fuzz.rs', + rust_abi: 'c', + rust_args: [ + '-Cpasses=sancov-module', + '-Cllvm-args=-sanitizer-coverage-level=3', + '-Cllvm-args=-sanitizer-coverage-inline-8bit-counters', + ], + dependencies: [mon], + link_with: [gentoo_utils], +) + +fuzz = executable( + 'fuzzer', + link_args: ['-fsanitize=fuzzer'], + link_with: [fuzz_rs], +) diff --git a/fuzz/atom/vercmp/meson.build b/fuzz/atom/vercmp/meson.build index 5634061..025c6fb 100644 --- a/fuzz/atom/vercmp/meson.build +++ b/fuzz/atom/vercmp/meson.build @@ -1,7 +1,31 @@ -fuzzers += { - 'atom_vercmp': { - 'gencorpus': meson.current_source_dir() / 'gencorpus.rs', - 'fuzzer': meson.current_source_dir() / 'fuzz.rs', - 'deps': [mon], - }, -} +gencorpus = executable( + 'gencorpus', + 'gencorpus.rs', + dependencies: [mon], + link_with: [gentoo_utils], +) + +corpus = custom_target( + 'corpus', + output: 'corpus', + command: [gencorpus, 'corpus'], +) + +fuzz_rs = static_library( + 'fuzzer', + 'fuzz.rs', + rust_abi: 'c', + rust_args: [ + '-Cpasses=sancov-module', + '-Cllvm-args=-sanitizer-coverage-level=3', + '-Cllvm-args=-sanitizer-coverage-inline-8bit-counters', + ], + dependencies: [mon], + link_with: [gentoo_utils], +) + +fuzz = executable( + 'fuzzer', + link_args: ['-fsanitize=fuzzer'], + link_with: [fuzz_rs], +) diff --git a/fuzz/meson.build b/fuzz/meson.build index eb485db..c613cd0 100644 --- a/fuzz/meson.build +++ b/fuzz/meson.build @@ -1,60 +1,3 @@ cbindgen = find_program('cbindgen') -fuzzers = {} - subdir('atom') - -foreach fuzzer, meta : fuzzers - gencorpus_rs = meta['gencorpus'] - fuzz_rs = meta['fuzzer'] - deps = meta['deps'] - - gencorpus = executable( - fuzzer + '_' + 'gencorpus', - gencorpus_rs, - dependencies: [mon], - link_with: [gentoo_utils], - ) - - corpus_directory = fuzzer + '_' + 'corpus' - - corpus = custom_target( - f'@fuzzer@_corpus', - output: f'@fuzzer@_corpus', - command: [gencorpus, corpus_directory], - ) - - fuzz_h = custom_target( - f'@fuzzer@_fuzz.h', - input: fuzz_rs, - output: f'@fuzzer@_fuzz.h', - command: [cbindgen, '@INPUT@', '-o', '@OUTPUT'], - ) - - fuzz_rs = static_library( - f'@fuzzer@.rs', - fuzz_rs, - rust_abi: 'c', - rust_args: [ - '-Cpasses=sancov-module', - '-Cllvm-args=-sanitizer-coverage-level=3', - '-Cllvm-args=-sanitizer-coverage-inline-8bit-counters', - ], - dependencies: deps, - link_with: [gentoo_utils], - ) - - fuzz = executable( - f'@fuzzer@_fuzzer', - link_args: ['-fsanitize=fuzzer'], - link_with: [fuzz_rs], - ) - - test( - fuzzer + '_' + 'fuzz', - fuzz, - args: [corpus_directory], - depends: [corpus], - timeout: 0, - ) -endforeach