mirror of
https://github.com/php/php-src.git
synced 2024-11-23 18:04:36 +08:00
Disable -fsanitize=function on Clang 17
Closes GH-12642
This commit is contained in:
parent
db8c91ae9f
commit
f7f9401cc8
17
configure.ac
17
configure.ac
@ -1534,6 +1534,23 @@ if test "$PHP_UNDEFINED_SANITIZER" = "yes"; then
|
||||
AX_CHECK_COMPILE_FLAG([-fsanitize=undefined], [
|
||||
CFLAGS="$CFLAGS -fsanitize=undefined"
|
||||
CXXFLAGS="$CXXFLAGS -fsanitize=undefined"
|
||||
|
||||
dnl Clang 17 adds stricter function pointer compatibility checks where pointer args cannot be
|
||||
dnl cast to void*. In that case, set -fno-sanitize=function.
|
||||
OLD_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -fno-sanitize-recover=undefined"
|
||||
AC_RUN_IFELSE([AC_LANG_SOURCE([[
|
||||
void foo(char *string) {}
|
||||
int main(void) {
|
||||
void (*f)(void *) = (void (*)(void *))foo;
|
||||
f("foo");
|
||||
}
|
||||
]])],,[ubsan_needs_no_function=yes],)
|
||||
CFLAGS="$OLD_CFLAGS"
|
||||
if test "$ubsan_needs_no_function" = yes; then
|
||||
CFLAGS="$CFLAGS -fno-sanitize=function"
|
||||
CXXFLAGS="$CFLAGS -fno-sanitize=function"
|
||||
fi
|
||||
], [AC_MSG_ERROR([UndefinedBehaviorSanitizer is not available])])
|
||||
fi
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user