@@ -68,6 +68,7 @@ typedef int boolean_t;
68
68
#include <sys/lwp.h>
69
69
#include <sys/procfs.h>
70
70
#include <libproc.h>
71
+ #include <thread.h>
71
72
#endif
72
73
73
74
#ifdef ZEND_CHECK_STACK_LIMIT
@@ -664,43 +665,17 @@ static bool zend_call_stack_get_netbsd(zend_call_stack *stack)
664
665
#endif /* defined(__NetBSD__) */
665
666
666
667
#if defined(__sun )
667
- # if defined(HAVE_PTHREAD_ATTR_GET_NP ) && defined(HAVE_PTHREAD_ATTR_GETSTACK )
668
668
static bool zend_call_stack_get_solaris_pthread (zend_call_stack * stack )
669
669
{
670
- pthread_attr_t attr ;
671
- int error ;
672
- void * addr ;
673
- size_t max_size , guard_size ;
674
-
675
- error = pthread_attr_get_np (pthread_self (), & attr );
676
- if (error ) {
677
- return false;
678
- }
679
-
680
- error = pthread_attr_getstack (& attr , & addr , & max_size );
681
- if (error ) {
682
- return false;
683
- }
684
-
685
- error = pthread_attr_getguardsize (& attr , & guard_size );
686
- if (error ) {
670
+ stack_t s ;
671
+ if (thr_stksegment (& s ) < 0 ) {
687
672
return false;
688
673
}
689
674
690
- addr = (char * )addr + guard_size ;
691
- max_size -= guard_size ;
692
-
693
- stack -> base = (char * )addr + max_size ;
694
- stack -> max_size = max_size ;
695
-
675
+ stack -> max_size = s .ss_size ;
676
+ stack -> base = s .ss_sp ;
696
677
return true;
697
678
}
698
- # else /* defined(HAVE_PTHREAD_ATTR_GET_NP) && defined(HAVE_PTHREAD_ATTR_GETSTACK) */
699
- static bool zend_call_stack_get_solaris_pthread (zend_call_stack * stack )
700
- {
701
- return false;
702
- }
703
- # endif /* defined(HAVE_PTHREAD_ATTR_GET_NP) && defined(HAVE_PTHREAD_ATTR_GETSTACK) */
704
679
705
680
static bool zend_call_stack_get_solaris_proc_maps (zend_call_stack * stack )
706
681
{
@@ -723,7 +698,7 @@ static bool zend_call_stack_get_solaris_proc_maps(zend_call_stack *stack)
723
698
}
724
699
725
700
size = (1 << 20 );
726
- snprintf (path , sizeof (path ), "/proc/%d/map" , pid );
701
+ snprintf (path , sizeof (path ), "/proc/%d/map" , ( int ) pid );
727
702
728
703
if ((fd = open (path , O_RDONLY )) == -1 ) {
729
704
Prelease (proc , 0 );
0 commit comments