mirror of
https://github.com/systemd/systemd.git
synced 2024-11-27 04:03:36 +08:00
fuzz: pass -Dc_args=/-Dcpp_args= to fuzzer targets
Prompted by #29972, because right now it's practically impossible to pass -fno-sanitize=function to the fuzzer targets without some extensive sed'ing. This splits both c_args and cpp_args to separate arguments for tools/meson-build.sh, because the other way would be to use `eval`, so the space-separated but quoted strings passed to these options are not split where they shouldn't, and I'd rather avoid using `eval` if possible. Also, this switches the positional arguments we pass to `meson setup`, as they were in incorrect order (docs say it should be buildir followed by sourcedir); meson is apparently clever enough to figure this out and switch the arguments around if necessary, so it didn't complain.
This commit is contained in:
parent
be0916f77c
commit
17ee59c9c9
@ -52,10 +52,11 @@ sanitize_address_undefined = custom_target(
|
||||
project_source_root,
|
||||
'@OUTPUT@',
|
||||
'fuzzers',
|
||||
'-Dfuzz-tests=true -Db_lundef=false -Db_sanitize=address,undefined --optimization=@0@ @1@ -Dc_args=@2@ -Dcpp_args=@2@ --auto-features=@3@'.format(
|
||||
' '.join(get_option('c_args') + '-DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION'),
|
||||
' '.join(get_option('cpp_args') + '-DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION'),
|
||||
'-Dfuzz-tests=true -Db_lundef=false -Db_sanitize=address,undefined --optimization=@0@ @1@ --auto-features=@2@'.format(
|
||||
get_option('optimization'),
|
||||
get_option('werror') ? '--werror' : '',
|
||||
'-DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION',
|
||||
sanitize_auto_features
|
||||
),
|
||||
' '.join(cc.cmd_array()),
|
||||
|
@ -2,21 +2,20 @@
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
set -eux
|
||||
|
||||
src="$1"
|
||||
dst="$2"
|
||||
target="$3"
|
||||
options="$4"
|
||||
CC="$5"
|
||||
CXX="$6"
|
||||
sourcedir="${1:?}"
|
||||
builddir="${2:?}"
|
||||
target="${3:?}"
|
||||
c_args="${4:?}"
|
||||
cpp_args="${5:?}"
|
||||
options="${6:?}"
|
||||
CC="${7:?}"
|
||||
CXX="${8:?}"
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
[ -f "$dst/build.ninja" ] || CC="$CC" CXX="$CXX" meson setup "$src" "$dst" $options
|
||||
|
||||
# Locate ninja binary, on CentOS 7 it is called ninja-build, so
|
||||
# use that name if available.
|
||||
ninja="ninja"
|
||||
if command -v ninja-build >/dev/null ; then
|
||||
ninja="ninja-build"
|
||||
if [ ! -f "$builddir/build.ninja" ]; then
|
||||
# shellcheck disable=SC2086
|
||||
CC="$CC" CXX="$CXX" meson setup -Dc_args="$c_args" -Dcpp_args="$cpp_args" "$builddir" "$sourcedir" $options
|
||||
fi
|
||||
|
||||
"$ninja" -C "$dst" "$target"
|
||||
# Locate ninja binary, on CentOS 7 it is called ninja-build, so use that name if available.
|
||||
command -v ninja-build >/dev/null && ninja="ninja-build" || ninja="ninja"
|
||||
"$ninja" -C "$builddir" "$target"
|
||||
|
Loading…
Reference in New Issue
Block a user