[FFmpeg-cvslog] configure: correctly set sanitizer toolchain compilers
Marvin Scholz
git at videolan.org
Wed Sep 18 16:35:39 EEST 2024
ffmpeg | branch: master | Marvin Scholz <epirat07 at gmail.com> | Thu Sep 12 23:41:33 2024 +0200| [7091da7129431ad7ede403799477086ed9a094a9] | committer: Marvin Scholz
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).
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=7091da7129431ad7ede403799477086ed9a094a9
---
configure | 70 +++++++++++++++++++++++++++++++++++++--------------------------
1 file changed, 41 insertions(+), 29 deletions(-)
diff --git a/configure b/configure
index 2c4b5273b2..f5e675f76f 100755
--- a/configure
+++ b/configure
@@ -4553,37 +4553,49 @@ enabled ossfuzz && ! echo $CFLAGS | grep -q -- "-fsanitize=" && ! echo $CFLAGS
add_ldflags -fsanitize=address,undefined -fsanitize-coverage=trace-pc-guard,trace-cmp
}
+add_sanitizer_flags(){
+ case "$1" in
+ asan)
+ add_cflags -fsanitize=address
+ add_ldflags -fsanitize=address
+ ;;
+ lsan)
+ add_cflags -fsanitize=leak
+ add_ldflags -fsanitize=leak
+ ;;
+ msan)
+ add_cflags -fsanitize=memory -fsanitize-memory-track-origins
+ add_ldflags -fsanitize=memory
+ ;;
+ tsan)
+ add_cflags -fsanitize=thread
+ add_ldflags -fsanitize=thread
+ ;;
+ usan)
+ add_cflags -fsanitize=undefined
+ add_ldflags -fsanitize=undefined
+ ;;
+ ?*)
+ die "Unknown sanitizer $1"
+ ;;
+ esac
+}
+
case "$toolchain" in
- *-asan)
- cc_default="${toolchain%-asan}"
- add_cflags -fsanitize=address
- add_ldflags -fsanitize=address
- ;;
- *-lsan)
- cc_default="${toolchain%-lsan}"
- add_cflags -fsanitize=leak
- add_ldflags -fsanitize=leak
- ;;
- *-msan)
- cc_default="${toolchain%-msan}"
- add_cflags -fsanitize=memory -fsanitize-memory-track-origins
- add_ldflags -fsanitize=memory
- ;;
- *-tsan)
- cc_default="${toolchain%-tsan}"
- add_cflags -fsanitize=thread
- add_ldflags -fsanitize=thread
- case "$toolchain" in
- gcc-tsan)
- add_cflags -fPIC
- add_ldflags -fPIC
- ;;
- esac
+ clang-*)
+ add_sanitizer_flags "${toolchain#clang-}"
+ cc_default="clang"
+ cxx_default="clang++"
;;
- *-usan)
- cc_default="${toolchain%-usan}"
- add_cflags -fsanitize=undefined
- add_ldflags -fsanitize=undefined
+ 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-*)
target_exec_default="valgrind"
More information about the ffmpeg-cvslog
mailing list