configure: correctly set sanitizer toolchain compilers

Previously only the C compiler was set, which would lead to
confusing situations where even though clang-asan was selected,
it would still use g++ for C++ code, failing because configure
does not support mixing compilers in this way (which is a separate
issue not addressed by this commit).
release/7.1
Marvin Scholz 5 months ago
parent 910bf33879
commit 7091da7129
  1. 46
      configure

46
configure vendored

@ -4553,38 +4553,50 @@ enabled ossfuzz && ! echo $CFLAGS | grep -q -- "-fsanitize=" && ! echo $CFLAGS
add_ldflags -fsanitize=address,undefined -fsanitize-coverage=trace-pc-guard,trace-cmp add_ldflags -fsanitize=address,undefined -fsanitize-coverage=trace-pc-guard,trace-cmp
} }
case "$toolchain" in add_sanitizer_flags(){
*-asan) case "$1" in
cc_default="${toolchain%-asan}" asan)
add_cflags -fsanitize=address add_cflags -fsanitize=address
add_ldflags -fsanitize=address add_ldflags -fsanitize=address
;; ;;
*-lsan) lsan)
cc_default="${toolchain%-lsan}"
add_cflags -fsanitize=leak add_cflags -fsanitize=leak
add_ldflags -fsanitize=leak add_ldflags -fsanitize=leak
;; ;;
*-msan) msan)
cc_default="${toolchain%-msan}"
add_cflags -fsanitize=memory -fsanitize-memory-track-origins add_cflags -fsanitize=memory -fsanitize-memory-track-origins
add_ldflags -fsanitize=memory add_ldflags -fsanitize=memory
;; ;;
*-tsan) tsan)
cc_default="${toolchain%-tsan}"
add_cflags -fsanitize=thread add_cflags -fsanitize=thread
add_ldflags -fsanitize=thread add_ldflags -fsanitize=thread
case "$toolchain" in
gcc-tsan)
add_cflags -fPIC
add_ldflags -fPIC
;;
esac
;; ;;
*-usan) usan)
cc_default="${toolchain%-usan}"
add_cflags -fsanitize=undefined add_cflags -fsanitize=undefined
add_ldflags -fsanitize=undefined add_ldflags -fsanitize=undefined
;; ;;
?*)
die "Unknown sanitizer $1"
;;
esac
}
case "$toolchain" in
clang-*)
add_sanitizer_flags "${toolchain#clang-}"
cc_default="clang"
cxx_default="clang++"
;;
gcc-*)
add_sanitizer_flags "${toolchain#gcc-}"
cc_default="gcc"
cxx_default="g++"
# In case of tsan with gcc, PIC has to be enabled
if [ "${toolchain#gcc-}" = "tsan" ]; then
add_cflags -fPIC
add_ldflags -fPIC
fi
;;
valgrind-*) valgrind-*)
target_exec_default="valgrind" target_exec_default="valgrind"
case "$toolchain" in case "$toolchain" in

Loading…
Cancel
Save