From 2c44b2b58f906755f5480482b186cffb469b98db Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Wed, 21 Aug 2024 18:49:21 +0200 Subject: [PATCH 1/5] Fix Solaris 10 build: missing libproc.h The libproc.h header file was added on Solaris as of 11.4. --- Zend/Zend.m4 | 5 ++++- Zend/zend_call_stack.c | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Zend/Zend.m4 b/Zend/Zend.m4 index b7b44fb140872..7a1b36b292c47 100644 --- a/Zend/Zend.m4 +++ b/Zend/Zend.m4 @@ -133,7 +133,10 @@ dnl AC_DEFUN([ZEND_INIT], [dnl AC_REQUIRE([AC_PROG_CC]) -AC_CHECK_HEADERS([cpuid.h]) +AC_CHECK_HEADERS(m4_normalize([ + cpuid.h + libproc.h +])) dnl Check for library functions. AC_CHECK_FUNCS(m4_normalize([ diff --git a/Zend/zend_call_stack.c b/Zend/zend_call_stack.c index f12323d0d9cd3..35b584ec62582 100644 --- a/Zend/zend_call_stack.c +++ b/Zend/zend_call_stack.c @@ -67,7 +67,9 @@ typedef int boolean_t; #define _STRUCTURED_PROC 1 #include #include -#include +# ifdef HAVE_LIBPROC_H +# include +# endif #include #endif From d11a2b1f09deb3e5090338fc6418e28340bc8011 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Wed, 21 Aug 2024 19:26:25 +0200 Subject: [PATCH 2/5] Also add guard check to the entire function --- Zend/zend_call_stack.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Zend/zend_call_stack.c b/Zend/zend_call_stack.c index 35b584ec62582..8827016ad7fc4 100644 --- a/Zend/zend_call_stack.c +++ b/Zend/zend_call_stack.c @@ -703,6 +703,7 @@ static bool zend_call_stack_get_solaris_pthread(zend_call_stack *stack) static bool zend_call_stack_get_solaris_proc_maps(zend_call_stack *stack) { +#ifdef HAVE_LIBPROC_H char buffer[4096]; uintptr_t addr_on_stack = (uintptr_t) zend_call_stack_position(); bool found = false, r = false; @@ -772,6 +773,9 @@ static bool zend_call_stack_get_solaris_proc_maps(zend_call_stack *stack) Prelease(proc, 0); close(fd); return r; +#else + return false; +#endif } static bool zend_call_stack_get_solaris(zend_call_stack *stack) From 1f8713b81221d066a037bc44a1f07c5f50c94a25 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Wed, 21 Aug 2024 20:05:28 +0200 Subject: [PATCH 3/5] When libproc.h isn't available also sys/procfs.h is redundant --- Zend/zend_call_stack.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Zend/zend_call_stack.c b/Zend/zend_call_stack.c index 8827016ad7fc4..a447ea12a87f2 100644 --- a/Zend/zend_call_stack.c +++ b/Zend/zend_call_stack.c @@ -64,10 +64,10 @@ typedef int boolean_t; #include #endif #ifdef __sun -#define _STRUCTURED_PROC 1 -#include -#include # ifdef HAVE_LIBPROC_H +# define _STRUCTURED_PROC 1 +# include +# include # include # endif #include From c3174d38b3614f67b1510518db39fdfa71af7f7c Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Wed, 21 Aug 2024 21:26:46 +0200 Subject: [PATCH 4/5] Move the out of the guard --- Zend/zend_call_stack.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Zend/zend_call_stack.c b/Zend/zend_call_stack.c index a447ea12a87f2..d5b3dc3419c36 100644 --- a/Zend/zend_call_stack.c +++ b/Zend/zend_call_stack.c @@ -64,9 +64,9 @@ typedef int boolean_t; #include #endif #ifdef __sun +# include # ifdef HAVE_LIBPROC_H # define _STRUCTURED_PROC 1 -# include # include # include # endif From 3d7d84694aa67830e9b8cb2262cca22f56d0b658 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Thu, 22 Aug 2024 00:02:07 +0200 Subject: [PATCH 5/5] Exclude more stuff from Solaris 10 --- Zend/zend_call_stack.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Zend/zend_call_stack.c b/Zend/zend_call_stack.c index d5b3dc3419c36..a2887d164f362 100644 --- a/Zend/zend_call_stack.c +++ b/Zend/zend_call_stack.c @@ -701,9 +701,9 @@ static bool zend_call_stack_get_solaris_pthread(zend_call_stack *stack) return true; } +#ifdef HAVE_LIBPROC_H static bool zend_call_stack_get_solaris_proc_maps(zend_call_stack *stack) { -#ifdef HAVE_LIBPROC_H char buffer[4096]; uintptr_t addr_on_stack = (uintptr_t) zend_call_stack_position(); bool found = false, r = false; @@ -773,16 +773,16 @@ static bool zend_call_stack_get_solaris_proc_maps(zend_call_stack *stack) Prelease(proc, 0); close(fd); return r; -#else - return false; -#endif } +#endif static bool zend_call_stack_get_solaris(zend_call_stack *stack) { +#ifdef HAVE_LIBPROC_H if (_lwp_self() == 1) { return zend_call_stack_get_solaris_proc_maps(stack); } +#endif return zend_call_stack_get_solaris_pthread(stack); } #else