meson: Move -fsanitize=undefined into normal configuraton

With 8e466dd09246 and 23ef50ae2d0c, we disable function pointer
sanitization in CI because the qemu code base does not support it.
We must disable this for normal usage of --enable-ubsan as well,
so move it there.

Append options rather than prepend, since all of this requires
proper ordering of options.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Message-ID: <20240813095216.306555-3-richard.henderson@linaro.org>
Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
Richard Henderson 2024-08-13 19:52:16 +10:00 committed by Thomas Huth
parent cb771ac1f5
commit db770a206c
2 changed files with 13 additions and 8 deletions

View File

@ -436,9 +436,8 @@ clang-system:
job: amd64-fedora-container job: amd64-fedora-container
variables: variables:
IMAGE: fedora IMAGE: fedora
CONFIGURE_ARGS: --cc=clang --cxx=clang++ CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-ubsan
--extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined --extra-cflags=-fno-sanitize-recover=undefined
--extra-cflags=-fno-sanitize=function
TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu s390x-softmmu TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu s390x-softmmu
MAKE_CHECK_ARGS: check-qtest check-tcg MAKE_CHECK_ARGS: check-qtest check-tcg
@ -449,10 +448,9 @@ clang-user:
timeout: 70m timeout: 70m
variables: variables:
IMAGE: debian-all-test-cross IMAGE: debian-all-test-cross
CONFIGURE_ARGS: --cc=clang --cxx=clang++ --disable-system CONFIGURE_ARGS: --cc=clang --cxx=clang++ --disable-system --enable-ubsan
--target-list-exclude=alpha-linux-user,microblazeel-linux-user,aarch64_be-linux-user,i386-linux-user,m68k-linux-user,mipsn32el-linux-user,xtensaeb-linux-user --target-list-exclude=alpha-linux-user,microblazeel-linux-user,aarch64_be-linux-user,i386-linux-user,m68k-linux-user,mipsn32el-linux-user,xtensaeb-linux-user
--extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined --extra-cflags=-fno-sanitize-recover=undefined
--extra-cflags=-fno-sanitize=function
MAKE_CHECK_ARGS: check-unit check-tcg MAKE_CHECK_ARGS: check-unit check-tcg
# Set LD_JOBS=1 because this requires LTO and ld consumes a large amount of memory. # Set LD_JOBS=1 because this requires LTO and ld consumes a large amount of memory.

View File

@ -493,8 +493,15 @@ if get_option('ubsan')
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84285 # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84285
if cc.links('int main(int argc, char **argv) { return argc + 1; }', if cc.links('int main(int argc, char **argv) { return argc + 1; }',
args: [qemu_ldflags, '-fsanitize=undefined']) args: [qemu_ldflags, '-fsanitize=undefined'])
qemu_cflags = ['-fsanitize=undefined'] + qemu_cflags qemu_cflags += ['-fsanitize=undefined']
qemu_ldflags = ['-fsanitize=undefined'] + qemu_ldflags qemu_ldflags += ['-fsanitize=undefined']
# Suppress undefined behaviour from function call to mismatched type.
# In addition, tcg prologue does not emit function type prefix
# required by function call sanitizer.
if cc.has_argument('-fno-sanitize=function')
qemu_cflags += ['-fno-sanitize=function']
endif
else else
error('Your compiler does not support -fsanitize=undefined') error('Your compiler does not support -fsanitize=undefined')
endif endif