mirror of
https://github.com/git-for-windows/git.git
synced 2026-06-29 15:15:12 -05:00
meson: support building fuzzers with libFuzzer
To support fuzzing via libFuzzer one has to pass a couple of compiler
options:
- It is mandatory to enable the "fuzzer-no-link" sanitizer for
coverage feedback.
- It is recommended to enable at least one more sanitizer to catch
issues, like the "address" sanitizer.
- The fuzzing executables need to be linked with "-fsanitize=fuzzer"
to wire up libFuzzer itself.
The first two items can already be achieved via the "-Db_sanitize="
option. But the last item cannot easily be achieved, as we can only
configure global link arguments.
Introduce a new "-Dfuzzers_link_args=" build option to plug this gap.
Add documentation so that users know how to set up libFuzzer.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
94f057755b
commit
fa753e3fe8
15
meson.build
15
meson.build
@@ -161,6 +161,21 @@
|
||||
# These machine files can be passed to `meson setup` via the `--native-file`
|
||||
# option.
|
||||
#
|
||||
# Fuzzing
|
||||
# =======
|
||||
#
|
||||
# Meson supports building the fuzzing targets by setting `-Dfuzzers=true`. By
|
||||
# default, the targets will be built without libFuzzer and thus won't be usable
|
||||
# for fuzzing. You have to configure a couple of options to properly wire up
|
||||
# libFuzzer:
|
||||
#
|
||||
# $ meson setup build-fuzzers \
|
||||
# -Db_sanitize=address,fuzzer-no-link \
|
||||
# -Dfuzzers=true \
|
||||
# -Dfuzzers_link_args=-fsanitize=fuzzer
|
||||
# $ meson compile -C build-fuzzers
|
||||
# $ ./build-fuzzers/oss-fuzz/fuzz-config <args>
|
||||
#
|
||||
# Cross compilation
|
||||
# =================
|
||||
#
|
||||
|
||||
@@ -131,3 +131,5 @@ option('test_utf8_locale', type: 'string',
|
||||
description: 'Name of a UTF-8 locale used for testing.')
|
||||
option('fuzzers', type: 'boolean', value: false,
|
||||
description: 'Enable building fuzzers.')
|
||||
option('fuzzers_link_args', type: 'array', value: [],
|
||||
description: 'Linker arguments used to link fuzzers. Use -fsanitize=fuzzer for fuzzing.')
|
||||
|
||||
@@ -16,5 +16,6 @@ foreach fuzz_program : fuzz_programs
|
||||
fuzz_program,
|
||||
],
|
||||
dependencies: [libgit_commonmain],
|
||||
link_args: get_option('fuzzers_link_args'),
|
||||
)
|
||||
endforeach
|
||||
|
||||
Reference in New Issue
Block a user