Skip to content

Commit 6b809c8

Browse files
authored
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.
1 parent 5853cdb commit 6b809c8

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

Zend/Zend.m4

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -223,11 +223,17 @@ AC_DEFUN([ZEND_CHECK_STACK_DIRECTION],
223223
[AC_RUN_IFELSE([AC_LANG_SOURCE([dnl
224224
#include <stdint.h>
225225
226+
#ifdef __has_builtin
227+
# if __has_builtin(__builtin_frame_address)
228+
# define builtin_frame_address __builtin_frame_address(0)
229+
# endif
230+
#endif
231+
226232
int (*volatile f)(uintptr_t);
227233
228234
int stack_grows_downwards(uintptr_t arg) {
229-
#if defined(__has_builtin) && __has_builtin(__builtin_frame_address)
230-
uintptr_t addr = (uintptr_t)__builtin_frame_address(0);
235+
#ifdef builtin_frame_address
236+
uintptr_t addr = (uintptr_t)builtin_frame_address;
231237
#else
232238
int local;
233239
uintptr_t addr = (uintptr_t)&local;
@@ -237,8 +243,8 @@ int stack_grows_downwards(uintptr_t arg) {
237243
}
238244
239245
int main(void) {
240-
#if defined(__has_builtin) && __has_builtin(__builtin_frame_address)
241-
uintptr_t addr = (uintptr_t)__builtin_frame_address(0);
246+
#ifdef builtin_frame_address
247+
uintptr_t addr = (uintptr_t)builtin_frame_address;
242248
#else
243249
int local;
244250
uintptr_t addr = (uintptr_t)&local;

0 commit comments

Comments
 (0)