From e67befc448bee498c34541a9e035d4f1edda35ef Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Wed, 21 Aug 2024 21:02:29 +0200 Subject: [PATCH 1/3] Autotools: Fix stack direction check On Solaris 10 and GCC 4.9 this check failed with error in config.log: error: missing binary operator before token "(" The __has_builtin must be checked in its own `#if`. --- Zend/Zend.m4 | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/Zend/Zend.m4 b/Zend/Zend.m4 index b7b44fb140872..d7f092b12c870 100644 --- a/Zend/Zend.m4 +++ b/Zend/Zend.m4 @@ -226,8 +226,13 @@ AC_DEFUN([ZEND_CHECK_STACK_DIRECTION], 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); +#if defined(__has_builtin) +# if __has_builtin(__builtin_frame_address) + uintptr_t addr = (uintptr_t)__builtin_frame_address(0); +# else + int local; + uintptr_t addr = (uintptr_t)&local; +# endif #else int local; uintptr_t addr = (uintptr_t)&local; @@ -237,8 +242,13 @@ 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); +#if defined(__has_builtin) +# if __has_builtin(__builtin_frame_address) + uintptr_t addr = (uintptr_t)__builtin_frame_address(0); +# else + int local; + uintptr_t addr = (uintptr_t)&local; +# endif #else int local; uintptr_t addr = (uintptr_t)&local; From 4841e8653d1efe9111a52dd793ce95a98329aa52 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Wed, 21 Aug 2024 22:13:22 +0200 Subject: [PATCH 2/3] [skip ci] Fix CS a bit --- Zend/Zend.m4 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Zend/Zend.m4 b/Zend/Zend.m4 index d7f092b12c870..7f63dde0ad2fd 100644 --- a/Zend/Zend.m4 +++ b/Zend/Zend.m4 @@ -226,7 +226,7 @@ AC_DEFUN([ZEND_CHECK_STACK_DIRECTION], int (*volatile f)(uintptr_t); int stack_grows_downwards(uintptr_t arg) { -#if defined(__has_builtin) +#ifdef __has_builtin # if __has_builtin(__builtin_frame_address) uintptr_t addr = (uintptr_t)__builtin_frame_address(0); # else @@ -242,7 +242,7 @@ int stack_grows_downwards(uintptr_t arg) { } int main(void) { -#if defined(__has_builtin) +#ifdef __has_builtin # if __has_builtin(__builtin_frame_address) uintptr_t addr = (uintptr_t)__builtin_frame_address(0); # else From f7f25761718ac45a39af4dabb7a19bc5b0e9d4b8 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Wed, 21 Aug 2024 22:32:43 +0200 Subject: [PATCH 3/3] Simplify test program with a single definition --- Zend/Zend.m4 | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/Zend/Zend.m4 b/Zend/Zend.m4 index 7f63dde0ad2fd..df75b4c9e9942 100644 --- a/Zend/Zend.m4 +++ b/Zend/Zend.m4 @@ -223,16 +223,17 @@ AC_DEFUN([ZEND_CHECK_STACK_DIRECTION], [AC_RUN_IFELSE([AC_LANG_SOURCE([dnl #include -int (*volatile f)(uintptr_t); - -int stack_grows_downwards(uintptr_t arg) { #ifdef __has_builtin # if __has_builtin(__builtin_frame_address) - uintptr_t addr = (uintptr_t)__builtin_frame_address(0); -# else - int local; - uintptr_t addr = (uintptr_t)&local; +# define builtin_frame_address __builtin_frame_address(0) # endif +#endif + +int (*volatile f)(uintptr_t); + +int stack_grows_downwards(uintptr_t arg) { +#ifdef builtin_frame_address + uintptr_t addr = (uintptr_t)builtin_frame_address; #else int local; uintptr_t addr = (uintptr_t)&local; @@ -242,13 +243,8 @@ int stack_grows_downwards(uintptr_t arg) { } int main(void) { -#ifdef __has_builtin -# if __has_builtin(__builtin_frame_address) - uintptr_t addr = (uintptr_t)__builtin_frame_address(0); -# else - int local; - uintptr_t addr = (uintptr_t)&local; -# endif +#ifdef builtin_frame_address + uintptr_t addr = (uintptr_t)builtin_frame_address; #else int local; uintptr_t addr = (uintptr_t)&local;