Alexander Lazic wrote:
The semantics of the uc_stack member of the ucontext_t structure have changed as they apply to inputs to makecontext(). Prior to Solaris 10, the ss_sp member of the uc_stack structure represented the high memory address of the area reserved for the stack. The ss_sp member now represents the base (low memory address), in keeping with other uses of ss_sp.
This change in the meaning of ss_sp is now the default behavior. The -D__MAKECONTEXT_V2_SOURCE compilation flag used in Solaris 9 update releases to access this behavior is obsolete.
Solaris 9_x86 does not use __MAKECONTEXT_V2_SOURCE, see /usr/include/ucontext.h: *** Solaris 9: #if defined(__MAKECONTEXT_V2_SOURCE) && defined(__sparc) #ifdef __PRAGMA_REDEFINE_EXTNAME #pragma redefine_extname makecontext __makecontext_v2 #else #define makecontext __makecontext_v2 #endif #endif *** Solaris 10: #ifdef __sparc #ifdef __PRAGMA_REDEFINE_EXTNAME #pragma redefine_extname makecontext __makecontext_v2 #else #define makecontext __makecontext_v2 #endif In libc.so.1, __makecontext_v2 is the "new" function and makecontext the "old" one (binary compatible to Solaris 8 and earlier). For Solaris x86, there is only one function makecontext in all versions. Thus the behavior might not have been changed. A small test program in Solaris 9_x86 (have no earlier versions) indicated the "new" behavior.