Autotools: Fix stack direction check (#15528)

On Solaris 10 and GCC 4.9 check failed with error in config.log:
error: missing binary operator before token "("

The __has_builtin must be checked in its own `#ifdef/defined` line
above the `#if __has_builtin(....` usage.
This commit is contained in:
Peter Kokot 2024-08-21 22:50:11 +02:00 committed by GitHub
parent 5853cdb73d
commit 6b809c8890
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -223,11 +223,17 @@ AC_DEFUN([ZEND_CHECK_STACK_DIRECTION],
[AC_RUN_IFELSE([AC_LANG_SOURCE([dnl
#include <stdint.h>
#ifdef __has_builtin
# if __has_builtin(__builtin_frame_address)
# define builtin_frame_address __builtin_frame_address(0)
# endif
#endif
int (*volatile f)(uintptr_t);
int stack_grows_downwards(uintptr_t arg) {
#if defined(__has_builtin) && __has_builtin(__builtin_frame_address)
uintptr_t addr = (uintptr_t)__builtin_frame_address(0);
#ifdef builtin_frame_address
uintptr_t addr = (uintptr_t)builtin_frame_address;
#else
int local;
uintptr_t addr = (uintptr_t)&local;
@ -237,8 +243,8 @@ int stack_grows_downwards(uintptr_t arg) {
}
int main(void) {
#if defined(__has_builtin) && __has_builtin(__builtin_frame_address)
uintptr_t addr = (uintptr_t)__builtin_frame_address(0);
#ifdef builtin_frame_address
uintptr_t addr = (uintptr_t)builtin_frame_address;
#else
int local;
uintptr_t addr = (uintptr_t)&local;