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"
|
CFLAGS="$CFLAGS -fno-sanitize=object-size"
|
||||||
CXXFLAGS="$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])])
|
], [AC_MSG_ERROR([UndefinedBehaviorSanitizer is not available])])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user