#ifndef __SETJMP_LOADED #define __SETJMP_LOADED 1 #ifndef __SETJMP_PROCESSED #define __SETJMP_PROCESSED /* ************************************************************************* */ /* * * */ /* * HPE CONFIDENTIAL. This software is confidential proprietary software * */ /* * licensed by Hewlett Packard Enterprise Development, LP, and is not * */ /* * authorized to be used, duplicated or disclosed to anyone without the * */ /* * prior written permission of HPE. * */ /* * Copyright 2017 Hewlett Packard Enterprise Development, LP * */ /* * * */ /* * VMS SOFTWARE, INC. CONFIDENTIAL. This software is confidential * */ /* * proprietary software licensed by VMS Software, Inc., and is not * */ /* * authorized to be used, duplicated or disclosed to anyone without * */ /* * the prior written permission of VMS Software, Inc. * */ /* * Copyright 2017-2023 VMS Software, Inc. * */ /* * * */ /* ************************************************************************* */ #pragma __nostandard #include #ifdef __cplusplus extern "C" { #define __decc$unknown_params ... #else #define __decc$unknown_params #endif #if __INITIAL_POINTER_SIZE || defined(__clang__) # pragma __required_pointer_size __save # if __CRTL_VER >= 70301000 # pragma __required_pointer_size 64 # else # pragma __required_pointer_size 32 # endif #endif #ifdef __NAMESPACE_STD namespace std { #endif /* ** Define data structures */ #pragma __member_alignment __save #pragma __member_alignment #if defined(__FAST_SETJMP) || defined(__UNIX_SETJMP) || defined(__FAST_POSIX_SETJMP) # if defined(__ALPHA) /* Verified for x86, John Reagan */ typedef __int64 jmp_buf [25]; # elif defined(__ia64) /* Verified for x86, John Reagan */ typedef __int64 jmp_buf [450]; /* same as invo block for now */ # elif defined(__x86_64) /* Verified for x86, John Reagan */ typedef __int64 jmp_buf [450]; /* same as invo block for now */ # else typedef __int64 jmp_buf [450]; /* Use maximum if unknown */ # endif #else # if defined(__ALPHA) /* Verified for x86, John Reagan */ typedef __int64 jmp_buf [68]; /* 68 quadwords - standard invo cntxt block */ # elif defined(__ia64) /* Verified for x86, John Reagan */ typedef __int64 jmp_buf [450]; /* 450 quadwords - standard invo cntxt block */ # elif defined(__x86_64) /* Verified for x86, John Reagan */ typedef __int64 jmp_buf [450]; /* ??? quadwords - standard invo cntxt block */ # else typedef __int64 jmp_buf [450]; /* Use maximum if unknown */ # endif #endif #pragma __member_alignment __restore #define __JMP_BUF_TYPE __int64 * #ifdef __NAMESPACE_STD } /* namespace std */ #endif /* ** This section is for functions and declarations which are pointer-size ** dependent. */ #if defined(__FAST_SETJMP) || defined(__UNIX_SETJMP) || defined(__FAST_POSIX_SETJMP) void decc$fast_longjmp(__int64 *__env, int __retval); # if defined(__FAST_POSIX_SETJMP) # define longjmp(env, retval) decc$fast_longjmp(env, retval ? retval : 1 ) # else # define longjmp(env, retval) decc$fast_longjmp(env, retval) # endif # if defined(__ALPHA) /* Verified for x86, John Reagan */ int decc$setjmp (__int64 *__env); # define setjmp(env) decc$setjmp(env) # else int decc$fast_setjmp (__int64 *__env); # define setjmp(env) decc$fast_setjmp(env) # endif #else void c$$establish(__void_ptr32, unsigned short); # if defined(__ALPHA) /* Verified for x86, John Reagan */ # pragma __required_pointer_size __save # pragma __required_pointer_size __long int LIB$GET_CURRENT_INVO_CONTEXT(__int64 *__invo_context); # pragma __required_pointer_size __restore # define setjmp(env) (c$$establish(0, 32 ),LIB$GET_CURRENT_INVO_CONTEXT(env)) # else int decc$setjmp1 (__int64 *__env); # define setjmp(env) (c$$establish(0,32),decc$setjmp1(env)) # endif #endif #ifdef __NAMESPACE_STD namespace std { #endif void (longjmp) (jmp_buf __env, int __val); #ifdef __NAMESPACE_STD } /* namespace std */ #endif #if __CRTL_VER >= 70000000 # if _POSIX_C_SOURCE >= 1 || !defined _ANSI_C_SOURCE # if (defined(__ALPHA)) /* Verified for x86, John Reagan */ typedef __int64 __sigjmp_buf[70]; # elif (defined(__ia64)) /* Verified for x86, John Reagan */ typedef __int64 __sigjmp_buf[452]; # elif (defined(__x86_64)) /* Verified for x86, John Reagan */ typedef __int64 __sigjmp_buf[452]; # else typedef __int64 __sigjmp_buf[452]; /* Use maximum if unknown */ # endif # if !defined _DECC_V4_SOURCE typedef __sigjmp_buf sigjmp_buf; # endif void siglongjmp (__sigjmp_buf __env, int __val); int sigsetjmp (__sigjmp_buf __env, int __savemask); void c$$establish(__void_ptr32, unsigned short); # define sigsetjmp( p1, p2 ) ( c$$establish(0,32), (sigsetjmp)(p1,p2) ) # endif #endif /* ** Restore the users pointer context */ #if __INITIAL_POINTER_SIZE || defined(__clang__) # pragma __required_pointer_size __restore #endif #ifdef __cplusplus } #endif #pragma __standard #endif /* __SETJMP_PROCESSED */ #if defined(__NAMESPACE_STD) && !defined(__NAMESPACE_STD_ONLY) # ifndef __USING_SETJMP_NAMES # define __USING_SETJMP_NAMES using std::jmp_buf; # if !defined(__FAST_SETJMP) && !defined(__UNIX_SETJMP) && !defined(__FAST_POSIX_SETJMP) using std::longjmp; # endif # endif #endif #endif /* __SETJMP_LOADED */