| # SPDX-License-Identifier: LGPL-2.1-or-later |
| |
| sanitize_address_undefined = custom_target( |
| 'sanitize-address-undefined-fuzzers', |
| output : 'sanitize-address-undefined-fuzzers', |
| command : [meson_build_sh, |
| project_source_root, |
| '@OUTPUT@', |
| 'fuzzers', |
| '-Dfuzz-tests=true -Db_lundef=false -Db_sanitize=address,undefined --optimization=@0@ @1@ -Dc_args=@2@ -Dcpp_args=@2@ -Dskip-deps=@3@'.format( |
| get_option('optimization'), |
| get_option('werror') ? '--werror' : '', |
| '-DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION', |
| get_option('skip-deps') |
| ), |
| ' '.join(cc.cmd_array()), |
| cxx_cmd]) |
| |
| sanitizers = [['address,undefined', sanitize_address_undefined]] |
| |
| if git.found() and fs.exists(project_source_root / '.git') |
| out = run_command(env, '-u', 'GIT_WORK_TREE', |
| git, '--git-dir=@0@/.git'.format(project_source_root), |
| 'ls-files', ':/test/fuzz/*/*', |
| check: true) |
| else |
| out = run_command(sh, '-c', 'cd "@0@"; echo test/fuzz/*/*'.format(project_source_root), check: true) |
| endif |
| |
| fuzz_regression_tests = [] |
| foreach p : out.stdout().split() |
| # Remove the last entry which is ''. |
| # |
| # Also, backslashes get mangled, so skip test. See |
| # https://github.com/mesonbuild/meson/issues/1564. |
| if not p.contains('\\') |
| fuzz_regression_tests += p |
| endif |
| endforeach |