mirror of
https://github.com/php/php-src.git
synced 2024-09-21 09:57:23 +00:00
Disable -fsanitize=function on Clang 17
Closes GH-12642
This commit is contained in:
parent
7440a1bd1f
commit
ca22505c8c
17
configure.ac
17
configure.ac
@ -1581,6 +1581,23 @@ if test "$PHP_UNDEFINED_SANITIZER" = "yes"; then
|
||||
CFLAGS="$CFLAGS -fno-sanitize=object-size"
|
||||
CXXFLAGS="$CFLAGS -fno-sanitize=object-size"
|
||||
])
|
||||
|
||||
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