Message ID | 20220614155415.4023833-1-alxndr@bu.edu (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | build: fix check for -fsanitize-coverage-allowlist | expand |
On 6/14/22 17:54, Alexander Bulekov wrote: > The existing check has two problems: > 1. Meson uses a private directory for the get_supported_arguments check. > ./instrumentation-filter does not exist in that private directory (it is > copied into the root of the build-directory). > > 2. fsanitize-coverage-allowlist is unused when coverage instrumentation > is not configured. No instrumentation are passed for the > get_supported_arguments check > > Thus the check always fails. To work around this, change the check to an > "if cc.compiles" check and provide /dev/null, instead of the real > filter. > > Meson log: > Working directory: build/meson-private/tmpl6wld2d9 > Command line: clang-13 -m64 -mcx16 > build/meson-private/tmpl6wld2d9/output.obj -c -O3 -D_FILE_OFFSET_BITS=64 > -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option > -Werror=unused-command-line-argument > -Werror=ignored-optimization-argument > -fsanitize-coverage-allowlist=instrumentation-filter > > Error: > error: argument unused during compilation: > '-fsanitize-coverage-allowlist=instrumentation-filter' > > Signed-off-by: Alexander Bulekov <alxndr@bu.edu> > --- > meson.build | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > diff --git a/meson.build b/meson.build > index 0c2e11ff07..85134267b5 100644 > --- a/meson.build > +++ b/meson.build > @@ -209,9 +209,13 @@ if get_option('fuzzing') > configure_file(output: 'instrumentation-filter', > input: 'scripts/oss-fuzz/instrumentation-filter-template', > copy: true) > - add_global_arguments( > - cc.get_supported_arguments('-fsanitize-coverage-allowlist=instrumentation-filter'), > - native: false, language: ['c', 'cpp', 'objc']) > + > + if cc.compiles('int main () { return 0; }', > + name: '-fsanitize-coverage-allowlist=/dev/null', > + args: ['-fsanitize-coverage-allowlist=/dev/null'] ) > + add_global_arguments('-fsanitize-coverage-allowlist=instrumentation-filter', > + native: false, language: ['c', 'cpp', 'objc']) > + endif > > if get_option('fuzzing_engine') == '' > # Add CFLAGS to tell clang to add fuzzer-related instrumentation to all the Queued, thanks. Paolo
diff --git a/meson.build b/meson.build index 0c2e11ff07..85134267b5 100644 --- a/meson.build +++ b/meson.build @@ -209,9 +209,13 @@ if get_option('fuzzing') configure_file(output: 'instrumentation-filter', input: 'scripts/oss-fuzz/instrumentation-filter-template', copy: true) - add_global_arguments( - cc.get_supported_arguments('-fsanitize-coverage-allowlist=instrumentation-filter'), - native: false, language: ['c', 'cpp', 'objc']) + + if cc.compiles('int main () { return 0; }', + name: '-fsanitize-coverage-allowlist=/dev/null', + args: ['-fsanitize-coverage-allowlist=/dev/null'] ) + add_global_arguments('-fsanitize-coverage-allowlist=instrumentation-filter', + native: false, language: ['c', 'cpp', 'objc']) + endif if get_option('fuzzing_engine') == '' # Add CFLAGS to tell clang to add fuzzer-related instrumentation to all the
The existing check has two problems: 1. Meson uses a private directory for the get_supported_arguments check. ./instrumentation-filter does not exist in that private directory (it is copied into the root of the build-directory). 2. fsanitize-coverage-allowlist is unused when coverage instrumentation is not configured. No instrumentation are passed for the get_supported_arguments check Thus the check always fails. To work around this, change the check to an "if cc.compiles" check and provide /dev/null, instead of the real filter. Meson log: Working directory: build/meson-private/tmpl6wld2d9 Command line: clang-13 -m64 -mcx16 build/meson-private/tmpl6wld2d9/output.obj -c -O3 -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument -fsanitize-coverage-allowlist=instrumentation-filter Error: error: argument unused during compilation: '-fsanitize-coverage-allowlist=instrumentation-filter' Signed-off-by: Alexander Bulekov <alxndr@bu.edu> --- meson.build | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)