/********************************************************************************************************************************/ /* Created: 9-Nov-2023 12:07:11 by OpenVMS SDL V3.7 */ /* Source: 09-NOV-2023 12:07:09 $1$DGA8345:[STARLET_H.SRC]LIBICB.SDI;1 */ /********************************************************************************************************************************/ /*** MODULE LIBICB IDENT V3.0 ***/ #ifndef __LIBICB_LOADED #define __LIBICB_LOADED 1 #pragma __nostandard /* This file uses non-ANSI-Standard features */ #pragma __member_alignment __save #pragma __nomember_alignment #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __save /* Save the previously-defined required ptr size */ #pragma __required_pointer_size __short /* And set ptr size default to 32-bit pointers */ #endif #ifdef __cplusplus extern "C" { #define __unknown_params ... #define __optional_params ... #else #define __unknown_params #define __optional_params ... #endif #ifndef __struct #if !defined(__VAXC) #define __struct struct #else #define __struct variant_struct #endif #endif #ifndef __union #if !defined(__VAXC) #define __union union #else #define __union variant_union #endif #endif #define LIB$K_PROC_VALUE_NULL 0 #define LIB$K_INVO_HANDLE_NULL 0 #define LIBICB$K_INVO_HANDLE_SIZE 8 #define LIBICB$K_INVO_CONTEXT_VERSION 3 /* The header quadword contains: */ #define LIBICB$M_FFLAGS_BITS 0xFFFFFF #define LIBICB$M_FRAME_FLAGS 0xFFFFFF #define LIBICB$M_EXCEPTION_FRAME 0x1 #define LIBICB$M_AST_FRAME 0x2 #define LIBICB$M_BOTTOM_OF_STACK 0x4 #define LIBICB$M_HANDLER_PRESENT 0x8 #define LIBICB$M_IN_PROLOGUE 0x10 #define LIBICB$M_IN_EPILOGUE 0x20 #define UC_MCONTEXT_IREG_RAX 16 #define REG_RAX 0 #define UC_MCONTEXT_IREG_RDX 24 #define REG_RDX 1 #define UC_MCONTEXT_IREG_RCX 32 #define REG_RCX 2 #define UC_MCONTEXT_IREG_RBX 40 #define REG_RBX 3 #define UC_MCONTEXT_IREG_RSI 48 #define REG_RSI 4 #define UC_MCONTEXT_IREG_RDI 56 #define REG_RDI 5 #define UC_MCONTEXT_IREG_RBP 64 #define REG_RBP 6 #define UC_MCONTEXT_IREG_RSP 72 #define REG_RSP 7 #define UC_MCONTEXT_IREG_R8 80 #define REG_R8 8 #define UC_MCONTEXT_IREG_R9 88 #define REG_R9 9 #define UC_MCONTEXT_IREG_R10 96 #define REG_R10 10 #define UC_MCONTEXT_IREG_R11 104 #define REG_R11 11 #define UC_MCONTEXT_IREG_R12 112 #define REG_R12 12 #define UC_MCONTEXT_IREG_R13 120 #define REG_R13 13 #define UC_MCONTEXT_IREG_R14 128 #define REG_R14 14 #define UC_MCONTEXT_IREG_R15 136 #define REG_R15 15 #define UC_MCONTEXT_IREG_RIP 144 #define REG_RIP 16 #define LIBICB$K_PSEUDO_REGS_SIZE 256 #define UC_PSEUDO_REGS 152 #define UC_MCONTEXT_RFLAGS 408 #define UC_MCONTEXT_FS 416 #define UC_MCONTEXT_GS 418 #define UC_MCONTEXT_MXCSR 424 #define UC_MCONTEXT_FCW 428 #define UC_MCONTEXT_FSW 430 #define LIBICB$K_FXSAVE_SIZE 512 #define UC_MCONTEXT_FXSAVE 432 #define LIBICB$K_CONTEXT_BLK_SIZE 504 #define LIBICB$K_CURSOR_BLK_SIZE 1024 #define LIBICB$K_SDA_COPY_LENGTH 1608 /******** Start of User Override ************************* */ #define LIBICB$M_UO_FLAG_CACHE_UNWIND 0x1 #define LIBICB$M_UO_FLAG_EMULATION_MODE 0x2 #define LIBICB$K_UO_LENGTH 88 /* */ #define LIBICB$M_USING_CLIENT_MEMREAD 0x1 #define LIBICB$M_MY_MODE 0x6 #define LIBICB$K_REGION_BLK_SIZE 1096 #define LIBICB$K_REGIONLABEL_BLK_SIZE 32 #define LIBICB$K_DESCRIPTOR_BLK_SIZE 1280 /* Action codes: */ #define LIBICB$K_ACTION_KP_FIND_UNWIND 1 /* override call to exe$kp_find_unwind_context */ /* prototype: */ /* uint64 sp = action_routine (enum action_code code, uint64 sp, uint64 ident); */ #define LIBICB$K_ACTION_USE_DEFAULT -1 /* action routine return value to "use default" */ /* Alert codes: (matches _UNW_ReturnCode enum in unwind.h) */ #define LIBICB$K_AC_STEP_KRNL_SAV_STATE -2 /* _UNW_STEP_KERNEL_SAVE_STATE = -2 */ #define LIBICB$K_AC_STEP_BOTTOM -1 /* _UNW_STEP_BOTTOM */ #define LIBICB$K_AC_OK 0 /* _UNW_OK = 0 */ #define LIBICB$K_AC_STEP_ERROR 1 /* _UNW_STEP_ERROR */ #define LIBICB$K_AC_STEP_INVALID_IP 2 /* _UNW_STEP_INVALID_IP */ #define LIBICB$K_AC_STEP_INVALID_SP 3 /* _UNW_STEP_INVALID_SP */ #define LIBICB$K_AC_STEP_INVALID_GR 4 /* _UNW_STEP_INVALID_GR */ #define LIBICB$K_AC_STEP_INVALID_PFS 5 /* _UNW_STEP_INVALID_PFS */ #define LIBICB$K_AC_STEP_INVALID_RSC 6 /* _UNW_STEP_INVALID_RSC */ #define LIBICB$K_AC_STEP_INVALID_BSP 7 /* _UNW_STEP_INVALID_BSP */ #define LIBICB$K_AC_STEP_INV_BSPSTORE 8 /* _UNW_STEP_INVALID_BSPSTORE */ #define LIBICB$K_AC_STEP_INVALID_CFM 9 /* _UNW_STEP_INVALID_CFM */ #define LIBICB$K_AC_STEP_INVALID_BR 10 /* _UNW_STEP_INVALID_BR */ #define LIBICB$K_AC_STEP_BAD_BSP_ALIGN 11 /* _UNW_STEP_BAD_BSP_ALIGNMENT */ #define LIBICB$K_AC_STEP_INVALID_RNAT 12 /* _UNW_STEP_INVALID_RNAT */ #define LIBICB$K_AC_STEP_NODSC4_NONLEAF 13 /* _UNW_STEP_NO_DESCRIPTOR_FOR_NON_LEAF */ #define LIBICB$K_AC_STEP_CORRUPT_DESC 14 /* _UNW_STEP_CORRUPT_DESCRIPTOR */ #define LIBICB$K_AC_STEP_RSE_NOT_FLUSHD 15 /* _UNW_STEP_RSE_NOT_FLUSHED */ #define LIBICB$K_AC_STEP_SIGNAL_CONTEXT 16 /* _UNW_STEP_SIGNAL_CONTEXT */ #define LIBICB$K_AC_STEP_BAD_STATE 17 /* _UNW_STEP_NOT_ALLOWED_IN_STATE */ #define LIBICB$K_AC_INIT_RANGE_ERROR 18 /* _UNW_INITIALIZATION_RANGE_ERROR */ #define LIBICB$K_AC_QUERY_RANGE_ERROR 19 /* _UNW_QUERY_RANGE_ERROR */ #define LIBICB$K_AC_QUERY_INVALID_ERROR 20 /* _UNW_QUERY_INVALID_ERROR */ #define LIBICB$K_AC_SET_BAD_STATE 21 /* _UNW_SET_NOT_ALLOWED_IN_STATE */ #define LIBICB$K_AC_CURR_CTXT_FAILED 22 /* _UNW_CURRENT_CONTEXT_FAILED */ #define LIBICB$K_AC_CURR_CTXT_BAD_STATE 23 /* _UNW_CURRENT_CONTEXT_NOT_ALLOWED_IN_STATE */ #define LIBICB$K_AC_MEMORY_ALLOC_ERROR 24 /* _UNW_MEMORY_ALLOCATION_ERROR */ #define LIBICB$K_AC_CLEAR_BAD_STATE 25 /* _UNW_CLEAR_NOT_ALLOWED_IN_STATE */ #define LIBICB$K_AC_QUERY_BAD_STATE 26 /* _UNW_QUERY_NOT_ALLOWED_IN_STATE */ #define LIBICB$K_AC_INTERNAL_ERROR 27 /* _UNW_INTERNAL_ERROR */ #define LIBICB$K_AC_STEP_I_ABI_MISMATCH 28 /* _UNW_STEP_INTERRUPTION_ABI_MISMATCH */ #define LIBICB$K_AC_UNALIGNED_ICB 29 /* _UNW_UNALIGNED_ICB */ #define LIBICB$K_AC_READ_MEM_FAILURE 30 /* _UNW_READ_MEMORY_FAILURE */ #define LIBICB$K_AC_WRITE_MEM_FAILURE 31 /* _UNW_WRITE_MEMORY_FAILURE */ #define LIBICB$K_AC_WRITE_REG_FAILURE 32 /* _UNW_WRITE_REGISTER_FAILURE */ #define LIBICB$K_AC_UO_INCON_CALLBACK 33 /* _UNW_USER_OVERRIDE_INCONSISTENT_CALLBACK_PARAM */ #define LIBICB$K_AC_PUT_REG_INVALID 34 /* _UNW_PUT_REGISTER_INVALID */ #define LIBICB$K_INVO_CONTEXT_BLK_SIZE 1744 #ifdef __NEW_STARLET #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _invo_context_blk { /* */ /* The length of the structure in bytes (a longword field), */ /* The frame flags (a 3 byte field of bits), and */ /* The version number (a 1 byte field) */ #pragma __nomember_alignment __union { __int64 libicb$ih_header; /* Header (length, flags, version) */ __struct { unsigned int libicb$l_context_length; __union { unsigned libicb$v_fflags_bits : 24; /* deprecated, will go away ... */ unsigned libicb$v_frame_flags : 24; __struct { unsigned libicb$v_exception_frame : 1; unsigned libicb$v_ast_frame : 1; unsigned libicb$v_bottom_of_stack : 1; unsigned libicb$v_handler_present : 1; unsigned libicb$v_in_prologue : 1; unsigned libicb$v_in_epilogue : 1; unsigned libicb$v_fill_0_ : 2; } libicb$r_fflags_desc; } libicb$r_frameflags; unsigned char libicb$b_block_version; } libicb$r_hdr_desc; } libicb$r_hdr; __int64 libicb$ih_spare_01; __union { __struct { __int64 libicb$ih_uc_flags; #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *libicb$ph_uc_link; #else unsigned __int64 libicb$ph_uc_link; #endif __union { __struct { /* Dwarf numbering, ordering */ __union { __int64 libicb$ih_rax; /* r0 */ __int64 libicb$ih_ai; /* synonym for RAX (Argument Information register) */ } libicb$r_raxovr; __int64 libicb$ih_rdx; /* r1 */ __int64 libicb$ih_rcx; /* r2 */ __int64 libicb$ih_rbx; /* r3 */ __int64 libicb$ih_rsi; /* r4 */ __int64 libicb$ih_rdi; /* r5 */ __union { __int64 libicb$ih_rbp; /* r6 */ __int64 libicb$ih_bp; /* synonym for RBP (Frame Pointer register) */ } libicb$r_rbpovr; __union { __int64 libicb$ih_rsp; /* r7 */ __int64 libicb$ih_sp; /* synonym for RSP (Stack Pointer register) */ } libicb$r_rspovr; __int64 libicb$ih_r8; __int64 libicb$ih_r9; __int64 libicb$ih_r10; __int64 libicb$ih_r11; __int64 libicb$ih_r12; __int64 libicb$ih_r13; __int64 libicb$ih_r14; __int64 libicb$ih_r15; __union { __int64 libicb$ih_rip; /* r16, ra, pc */ __int64 libicb$ih_ip; /* synonym for RIP (Instruction Pointer) */ } libicb$r_ripovr; __int64 libicb$ih_pseudo_regs [32]; __int64 libicb$ih_rflags; __union { __int64 libicb$ih_fsgs; __struct { short int libicb$w_fs; short int libicb$w_gs; } libicb$r_fs_gs_registers; } libicb$r_segment_registers; __union { __int64 libicb$ih_mxcsr_fcw_fsw; __struct { int libicb$l_mxcsr; short int libicb$w_fcw; short int libicb$w_fsw; } libicb$r_sse_fp_csr; } libicb$r_sse_fp_cs_registers; } libicb$r_ireg; __int64 libicb$ih_ireg [16]; __int64 libicb$ih_gregs [52]; /* deprecated - will go away ... */ } libicb$r_iregset; __union { #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *libicb$ph_xsave; #else unsigned __int64 libicb$ph_xsave; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *libicb$ph_fpreg; /* deprecated - will go away ... */ #else unsigned __int64 libicb$ph_fpreg; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *libicb$ph_fpregs; /* deprecated - will go away ... */ #else unsigned __int64 libicb$ph_fpregs; #endif } libicb$r_fp_save_area_addr; __int64 libicb$ih_xsave_state; unsigned int libicb$l_xsave_length; unsigned int libicb$l_spare_02; __int64 libicb$ih_reserved1 [6]; } libicb$r_ucontext; __int64 libicb$ih_ucontext [63]; } libicb$r_unwind_context; __int64 libicb$ih_ucursor [128]; __int64 libicb$ih_psp; /* SP at entry to routine (Previous SP) */ __int64 libicb$ih_psp_valid; /* PreviousSP valid */ __union { __int64 libicb$ih_return_ip; /* Return IP for SDA. */ __int64 libicb$ih_return_pc; /* deprecated - will go away ... */ } libicb$r_return_addr; #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *libicb$ph_chfctx_addr; /* Pointer to condition handler facility context block */ #else unsigned __int64 libicb$ph_chfctx_addr; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *libicb$ph_other; /* Pointer to other interesting structure (if any) */ #else unsigned __int64 libicb$ph_other; #endif __int64 libicb$ih_ossd; /* Copy of OSSD from Unwind Information Block */ __int64 libicb$ih_handler_pv; /* Condition Handler Procedure Value */ #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *libicb$ph_lsda; /* Virtual Address of LSD area of UIB */ #else unsigned __int64 libicb$ph_lsda; #endif /* */ /* The following locations can be used to alter the default behavior */ /* Typically this would be used for cross-process unwinding, and */ /* specifying an alternative memory allocation scheme. */ __union { int libicb$r_uo_base; /* base of User Override area */ __int64 libicb$q_uo_flags; /* operational flags */ __struct { unsigned libicb$v_uo_flag_cache_unwind : 1; /* cache unwind information between calls */ /* for effiecient stack walk. */ unsigned libicb$v_uo_flag_emulation_mode : 1; /* Internal use only */ unsigned libicb$v_fill_1_ : 6; } libicb$r_uo_flag_bits; } libicb$r_op_flags; __int64 libicb$ih_uo_ident; /* user context variable, passed by value */ /* to the following callback routines. */ #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *libicb$ph_uo_read_mem; /* Pointer to user "read memory" routine */ #else unsigned __int64 libicb$ph_uo_read_mem; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *libicb$ph_uo_getueinfo; /* Pointer to user "get Unwind Entry Information" routine */ #else unsigned __int64 libicb$ph_uo_getueinfo; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *libicb$ph_uo_getcontext; /* Pointer to user "get Initial Context" routine */ #else unsigned __int64 libicb$ph_uo_getcontext; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *libicb$ph_uo_write_mem; /* Pointer to user "put memory" routine */ #else unsigned __int64 libicb$ph_uo_write_mem; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *libicb$ph_uo_write_reg; /* Pointer to user "put register" routine */ #else unsigned __int64 libicb$ph_uo_write_reg; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *libicb$ph_uo_malloc; /* Pointer to user "malloc" routine */ #else unsigned __int64 libicb$ph_uo_malloc; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *libicb$ph_uo_free; /* Pointer to user "free" routine */ #else unsigned __int64 libicb$ph_uo_free; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *libicb$ph_uo_action_routine; /* Pointer to user "action" routine - actions */ #else unsigned __int64 libicb$ph_uo_action_routine; #endif /* are defined by "action codes" (see below). */ __int64 libicb$ih_spare_10; /******** End of User Override area *************************** */ /* the following locations are used internally, and should not be */ /* modified by the user */ #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *libicb$ph_most_recent_context; /* Most recent user context used */ #else unsigned __int64 libicb$ph_most_recent_context; #endif __union { int libicb$l_internal_flags; /* internal operational flags */ __struct { unsigned libicb$v_using_client_memread : 1; unsigned libicb$v_my_mode : 2; unsigned libicb$v_fill_2_ : 5; } libicb$r_int_flag_bits; } libicb$r_int_flags; int libicb$l_interface_state; /* enum InterfaceUsageState */ int libicb$l_ip_source; /* enum IP_SOURCE */ /* The alert code can be examined to a more detailed failure status */ int libicb$l_alert_code; /* enum _UNW_ReturnCode */ __int64 libicb$ih_spare_11; /* The following is an "internal" area that's reserved for use by */ /* the operating system. It's size may vary over time. */ __int64 libicb$ih_system_defined [2]; /* */ /* Action codes are passed as the first parameter to the UO_ACTION_ROUTINE to indicate */ /* an action to be performed. The remaining parameters to the action routine are action */ /* dependent, and usually include the ident value as the last parameter. */ /* */ /* Action routine prototype: */ /* */ /* uint64 return_value = action_routine (enum action_code code, ..., uint64 ident); */ /* */ /* A return_value of ACTION_USE_DEFAULT indicates that the action was not performed */ /* and the calling standard routines should fall back to "default" processing. */ /* Other return values are action dependent. */ /* */ } INVO_CONTEXT_BLK; #if !defined(__VAXC) #define libicb$ih_header libicb$r_hdr.libicb$ih_header #define libicb$l_context_length libicb$r_hdr.libicb$r_hdr_desc.libicb$l_context_length #define libicb$r_frameflags libicb$r_hdr.libicb$r_hdr_desc.libicb$r_frameflags #define libicb$v_fflags_bits libicb$r_frameflags.libicb$v_fflags_bits #define libicb$v_frame_flags libicb$r_frameflags.libicb$v_frame_flags #define libicb$v_exception_frame libicb$r_frameflags.libicb$r_fflags_desc.libicb$v_exception_frame #define libicb$v_ast_frame libicb$r_frameflags.libicb$r_fflags_desc.libicb$v_ast_frame #define libicb$v_bottom_of_stack libicb$r_frameflags.libicb$r_fflags_desc.libicb$v_bottom_of_stack #define libicb$v_handler_present libicb$r_frameflags.libicb$r_fflags_desc.libicb$v_handler_present #define libicb$v_in_prologue libicb$r_frameflags.libicb$r_fflags_desc.libicb$v_in_prologue #define libicb$v_in_epilogue libicb$r_frameflags.libicb$r_fflags_desc.libicb$v_in_epilogue #define libicb$b_block_version libicb$r_hdr.libicb$r_hdr_desc.libicb$b_block_version #define libicb$ih_uc_flags libicb$r_unwind_context.libicb$r_ucontext.libicb$ih_uc_flags #define libicb$ph_uc_link libicb$r_unwind_context.libicb$r_ucontext.libicb$ph_uc_link #define libicb$ih_rax libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$r_raxovr.libicb$ih_rax #define libicb$ih_ai libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$r_raxovr.libicb$ih_ai #define libicb$ih_rdx libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$ih_rdx #define libicb$ih_rcx libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$ih_rcx #define libicb$ih_rbx libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$ih_rbx #define libicb$ih_rsi libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$ih_rsi #define libicb$ih_rdi libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$ih_rdi #define libicb$ih_rbp libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$r_rbpovr.libicb$ih_rbp #define libicb$ih_bp libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$r_rbpovr.libicb$ih_bp #define libicb$ih_rsp libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$r_rspovr.libicb$ih_rsp #define libicb$ih_sp libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$r_rspovr.libicb$ih_sp #define libicb$ih_r8 libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$ih_r8 #define libicb$ih_r9 libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$ih_r9 #define libicb$ih_r10 libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$ih_r10 #define libicb$ih_r11 libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$ih_r11 #define libicb$ih_r12 libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$ih_r12 #define libicb$ih_r13 libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$ih_r13 #define libicb$ih_r14 libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$ih_r14 #define libicb$ih_r15 libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$ih_r15 #define libicb$ih_rip libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$r_ripovr.libicb$ih_rip #define libicb$ih_ip libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$r_ripovr.libicb$ih_ip #define libicb$ih_pseudo_regs libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$ih_pseudo_regs #define libicb$ih_rflags libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$ih_rflags #define libicb$ih_fsgs libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$r_segment_registers.libicb$i\ h_fsgs #define libicb$w_fs libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$r_segment_registers.libicb$r_fs\ _gs_registers.libicb$w_fs #define libicb$w_gs libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$r_segment_registers.libicb$r_fs\ _gs_registers.libicb$w_gs #define libicb$ih_mxcsr_fcw_fsw libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$r_sse_fp_cs_registe\ rs.libicb$ih_mxcsr_fcw_fsw #define libicb$l_mxcsr libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$r_sse_fp_cs_registers.libicb\ $r_sse_fp_csr.libicb$l_mxcsr #define libicb$w_fcw libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$r_sse_fp_cs_registers.libicb$r\ _sse_fp_csr.libicb$w_fcw #define libicb$w_fsw libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$r_sse_fp_cs_registers.libicb$r\ _sse_fp_csr.libicb$w_fsw #define libicb$ih_ireg libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$ih_ireg #define libicb$ih_gregs libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$ih_gregs #define libicb$ph_xsave libicb$r_unwind_context.libicb$r_ucontext.libicb$r_fp_save_area_addr.libicb$ph_xsave #define libicb$ph_fpreg libicb$r_unwind_context.libicb$r_ucontext.libicb$r_fp_save_area_addr.libicb$ph_fpreg #define libicb$ph_fpregs libicb$r_unwind_context.libicb$r_ucontext.libicb$r_fp_save_area_addr.libicb$ph_fpregs #define libicb$ih_xsave_state libicb$r_unwind_context.libicb$r_ucontext.libicb$ih_xsave_state #define libicb$l_xsave_length libicb$r_unwind_context.libicb$r_ucontext.libicb$l_xsave_length #define libicb$ih_reserved1 libicb$r_unwind_context.libicb$r_ucontext.libicb$ih_reserved1 #define libicb$ih_ucontext libicb$r_unwind_context.libicb$ih_ucontext #define libicb$ih_return_ip libicb$r_return_addr.libicb$ih_return_ip #define libicb$ih_return_pc libicb$r_return_addr.libicb$ih_return_pc #define libicb$r_uo_base libicb$r_op_flags.libicb$r_uo_base #define libicb$q_uo_flags libicb$r_op_flags.libicb$q_uo_flags #define libicb$v_uo_flag_cache_unwind libicb$r_op_flags.libicb$r_uo_flag_bits.libicb$v_uo_flag_cache_unwind #define libicb$v_uo_flag_emulation_mode libicb$r_op_flags.libicb$r_uo_flag_bits.libicb$v_uo_flag_emulation_mode #define libicb$l_internal_flags libicb$r_int_flags.libicb$l_internal_flags #define libicb$v_using_client_memread libicb$r_int_flags.libicb$r_int_flag_bits.libicb$v_using_client_memread #define libicb$v_my_mode libicb$r_int_flags.libicb$r_int_flag_bits.libicb$v_my_mode #endif /* #if !defined(__VAXC) */ #else /* __OLD_STARLET */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif struct invo_context_blk { /* */ /* The length of the structure in bytes (a longword field), */ /* The frame flags (a 3 byte field of bits), and */ /* The version number (a 1 byte field) */ #pragma __nomember_alignment __union { __int64 libicb$ih_header; /* Header (length, flags, version) */ __struct { unsigned int libicb$l_context_length; __union { unsigned libicb$v_fflags_bits : 24; /* deprecated, will go away ... */ unsigned libicb$v_frame_flags : 24; __struct { unsigned libicb$v_exception_frame : 1; unsigned libicb$v_ast_frame : 1; unsigned libicb$v_bottom_of_stack : 1; unsigned libicb$v_handler_present : 1; unsigned libicb$v_in_prologue : 1; unsigned libicb$v_in_epilogue : 1; unsigned libicb$v_fill_0_ : 2; } libicb$r_fflags_desc; } libicb$r_frameflags; unsigned char libicb$b_block_version; } libicb$r_hdr_desc; } libicb$r_hdr; __int64 libicb$ih_spare_01; __union { __struct { __int64 libicb$ih_uc_flags; unsigned __int64 libicb$ph_uc_link; __union { __struct { /* Dwarf numbering, ordering */ __union { __int64 libicb$ih_rax; /* r0 */ __int64 libicb$ih_ai; /* synonym for RAX (Argument Information register) */ } libicb$r_raxovr; __int64 libicb$ih_rdx; /* r1 */ __int64 libicb$ih_rcx; /* r2 */ __int64 libicb$ih_rbx; /* r3 */ __int64 libicb$ih_rsi; /* r4 */ __int64 libicb$ih_rdi; /* r5 */ __union { __int64 libicb$ih_rbp; /* r6 */ __int64 libicb$ih_bp; /* synonym for RBP (Frame Pointer register) */ } libicb$r_rbpovr; __union { __int64 libicb$ih_rsp; /* r7 */ __int64 libicb$ih_sp; /* synonym for RSP (Stack Pointer register) */ } libicb$r_rspovr; __int64 libicb$ih_r8; __int64 libicb$ih_r9; __int64 libicb$ih_r10; __int64 libicb$ih_r11; __int64 libicb$ih_r12; __int64 libicb$ih_r13; __int64 libicb$ih_r14; __int64 libicb$ih_r15; __union { __int64 libicb$ih_rip; /* r16, ra, pc */ __int64 libicb$ih_ip; /* synonym for RIP (Instruction Pointer) */ } libicb$r_ripovr; __int64 libicb$ih_pseudo_regs [32]; __int64 libicb$ih_rflags; __union { __int64 libicb$ih_fsgs; __struct { short int libicb$w_fs; short int libicb$w_gs; } libicb$r_fs_gs_registers; } libicb$r_segment_registers; __union { __int64 libicb$ih_mxcsr_fcw_fsw; __struct { int libicb$l_mxcsr; short int libicb$w_fcw; short int libicb$w_fsw; } libicb$r_sse_fp_csr; } libicb$r_sse_fp_cs_registers; } libicb$r_ireg; __int64 libicb$ih_ireg [16]; __int64 libicb$ih_gregs [52]; /* deprecated - will go away ... */ } libicb$r_iregset; __union { unsigned __int64 libicb$ph_xsave; unsigned __int64 libicb$ph_fpreg; /* deprecated - will go away ... */ unsigned __int64 libicb$ph_fpregs; /* deprecated - will go away ... */ } libicb$r_fp_save_area_addr; __int64 libicb$ih_xsave_state; unsigned int libicb$l_xsave_length; unsigned int libicb$l_spare_02; __int64 libicb$ih_reserved1 [6]; } libicb$r_ucontext; __int64 libicb$ih_ucontext [63]; } libicb$r_unwind_context; __int64 libicb$ih_ucursor [128]; __int64 libicb$ih_psp; /* SP at entry to routine (Previous SP) */ __int64 libicb$ih_psp_valid; /* PreviousSP valid */ __union { __int64 libicb$ih_return_ip; /* Return IP for SDA. */ __int64 libicb$ih_return_pc; /* deprecated - will go away ... */ } libicb$r_return_addr; unsigned __int64 libicb$ph_chfctx_addr; /* Pointer to condition handler facility context block */ unsigned __int64 libicb$ph_other; /* Pointer to other interesting structure (if any) */ __int64 libicb$ih_ossd; /* Copy of OSSD from Unwind Information Block */ __int64 libicb$ih_handler_pv; /* Condition Handler Procedure Value */ unsigned __int64 libicb$ph_lsda; /* Virtual Address of LSD area of UIB */ /* */ /* The following locations can be used to alter the default behavior */ /* Typically this would be used for cross-process unwinding, and */ /* specifying an alternative memory allocation scheme. */ __union { int libicb$r_uo_base; /* base of User Override area */ int libicb$q_uo_flags [2]; /* operational flags */ __struct { unsigned libicb$v_uo_flag_cache_unwind : 1; /* cache unwind information between calls */ /* for effiecient stack walk. */ unsigned libicb$v_uo_flag_emulation_mode : 1; /* Internal use only */ unsigned libicb$v_fill_1_ : 6; } libicb$r_uo_flag_bits; } libicb$r_op_flags; __int64 libicb$ih_uo_ident; /* user context variable, passed by value */ /* to the following callback routines. */ unsigned __int64 libicb$ph_uo_read_mem; /* Pointer to user "read memory" routine */ unsigned __int64 libicb$ph_uo_getueinfo; /* Pointer to user "get Unwind Entry Information" routine */ unsigned __int64 libicb$ph_uo_getcontext; /* Pointer to user "get Initial Context" routine */ unsigned __int64 libicb$ph_uo_write_mem; /* Pointer to user "put memory" routine */ unsigned __int64 libicb$ph_uo_write_reg; /* Pointer to user "put register" routine */ unsigned __int64 libicb$ph_uo_malloc; /* Pointer to user "malloc" routine */ unsigned __int64 libicb$ph_uo_free; /* Pointer to user "free" routine */ unsigned __int64 libicb$ph_uo_action_routine; /* Pointer to user "action" routine - actions */ /* are defined by "action codes" (see below). */ __int64 libicb$ih_spare_10; /******** End of User Override area *************************** */ /* the following locations are used internally, and should not be */ /* modified by the user */ unsigned __int64 libicb$ph_most_recent_context; /* Most recent user context used */ __union { int libicb$l_internal_flags; /* internal operational flags */ __struct { unsigned libicb$v_using_client_memread : 1; unsigned libicb$v_my_mode : 2; unsigned libicb$v_fill_2_ : 5; } libicb$r_int_flag_bits; } libicb$r_int_flags; int libicb$l_interface_state; /* enum InterfaceUsageState */ int libicb$l_ip_source; /* enum IP_SOURCE */ /* The alert code can be examined to a more detailed failure status */ int libicb$l_alert_code; /* enum _UNW_ReturnCode */ __int64 libicb$ih_spare_11; #if defined(__VAXC) char libicb$t_align_2[]; #else /* Warning: empty char[] member for libicb$t_align_2 at end of structure not created */ #endif /* #if defined(__VAXC) */ /* The following is an "internal" area that's reserved for use by */ /* the operating system. It's size may vary over time. */ __int64 libicb$ih_system_defined [2]; /* */ /* Action codes are passed as the first parameter to the UO_ACTION_ROUTINE to indicate */ /* an action to be performed. The remaining parameters to the action routine are action */ /* dependent, and usually include the ident value as the last parameter. */ /* */ /* Action routine prototype: */ /* */ /* uint64 return_value = action_routine (enum action_code code, ..., uint64 ident); */ /* */ /* A return_value of ACTION_USE_DEFAULT indicates that the action was not performed */ /* and the calling standard routines should fall back to "default" processing. */ /* Other return values are action dependent. */ /* */ } ; #if !defined(__VAXC) #define libicb$ih_header libicb$r_hdr.libicb$ih_header #define libicb$l_context_length libicb$r_hdr.libicb$r_hdr_desc.libicb$l_context_length #define libicb$v_fflags_bits libicb$r_hdr.libicb$r_hdr_desc.libicb$r_frameflags.libicb$v_fflags_bits #define libicb$v_frame_flags libicb$r_hdr.libicb$r_hdr_desc.libicb$r_frameflags.libicb$v_frame_flags #define libicb$v_exception_frame libicb$r_hdr.libicb$r_hdr_desc.libicb$r_frameflags.libicb$r_fflags_desc.libicb$v_exception_frame #define libicb$v_ast_frame libicb$r_hdr.libicb$r_hdr_desc.libicb$r_frameflags.libicb$r_fflags_desc.libicb$v_ast_frame #define libicb$v_bottom_of_stack libicb$r_hdr.libicb$r_hdr_desc.libicb$r_frameflags.libicb$r_fflags_desc.libicb$v_bottom_of_stack #define libicb$v_handler_present libicb$r_hdr.libicb$r_hdr_desc.libicb$r_frameflags.libicb$r_fflags_desc.libicb$v_handler_present #define libicb$v_in_prologue libicb$r_hdr.libicb$r_hdr_desc.libicb$r_frameflags.libicb$r_fflags_desc.libicb$v_in_prologue #define libicb$v_in_epilogue libicb$r_hdr.libicb$r_hdr_desc.libicb$r_frameflags.libicb$r_fflags_desc.libicb$v_in_epilogue #define libicb$b_block_version libicb$r_hdr.libicb$r_hdr_desc.libicb$b_block_version #define libicb$ih_uc_flags libicb$r_unwind_context.libicb$r_ucontext.libicb$ih_uc_flags #define libicb$ph_uc_link libicb$r_unwind_context.libicb$r_ucontext.libicb$ph_uc_link #define libicb$ih_rax libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$r_raxovr.libicb$ih_rax #define libicb$ih_ai libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$r_raxovr.libicb$ih_ai #define libicb$ih_rdx libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$ih_rdx #define libicb$ih_rcx libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$ih_rcx #define libicb$ih_rbx libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$ih_rbx #define libicb$ih_rsi libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$ih_rsi #define libicb$ih_rdi libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$ih_rdi #define libicb$ih_rbp libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$r_rbpovr.libicb$ih_rbp #define libicb$ih_bp libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$r_rbpovr.libicb$ih_bp #define libicb$ih_rsp libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$r_rspovr.libicb$ih_rsp #define libicb$ih_sp libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$r_rspovr.libicb$ih_sp #define libicb$ih_r8 libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$ih_r8 #define libicb$ih_r9 libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$ih_r9 #define libicb$ih_r10 libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$ih_r10 #define libicb$ih_r11 libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$ih_r11 #define libicb$ih_r12 libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$ih_r12 #define libicb$ih_r13 libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$ih_r13 #define libicb$ih_r14 libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$ih_r14 #define libicb$ih_r15 libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$ih_r15 #define libicb$ih_rip libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$r_ripovr.libicb$ih_rip #define libicb$ih_ip libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$r_ripovr.libicb$ih_ip #define libicb$ih_pseudo_regs libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$ih_pseudo_regs #define libicb$ih_rflags libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$ih_rflags #define libicb$ih_fsgs libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$r_segment_registers.libicb$i\ h_fsgs #define libicb$w_fs libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$r_segment_registers.libicb$r_fs\ _gs_registers.libicb$w_fs #define libicb$w_gs libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$r_segment_registers.libicb$r_fs\ _gs_registers.libicb$w_gs #define libicb$ih_mxcsr_fcw_fsw libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$r_sse_fp_cs_registe\ rs.libicb$ih_mxcsr_fcw_fsw #define libicb$l_mxcsr libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$r_sse_fp_cs_registers.libicb\ $r_sse_fp_csr.libicb$l_mxcsr #define libicb$w_fcw libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$r_sse_fp_cs_registers.libicb$r\ _sse_fp_csr.libicb$w_fcw #define libicb$w_fsw libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$r_ireg.libicb$r_sse_fp_cs_registers.libicb$r\ _sse_fp_csr.libicb$w_fsw #define libicb$ih_ireg libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$ih_ireg #define libicb$ih_gregs libicb$r_unwind_context.libicb$r_ucontext.libicb$r_iregset.libicb$ih_gregs #define libicb$ph_xsave libicb$r_unwind_context.libicb$r_ucontext.libicb$r_fp_save_area_addr.libicb$ph_xsave #define libicb$ph_fpreg libicb$r_unwind_context.libicb$r_ucontext.libicb$r_fp_save_area_addr.libicb$ph_fpreg #define libicb$ph_fpregs libicb$r_unwind_context.libicb$r_ucontext.libicb$r_fp_save_area_addr.libicb$ph_fpregs #define libicb$ih_xsave_state libicb$r_unwind_context.libicb$r_ucontext.libicb$ih_xsave_state #define libicb$l_xsave_length libicb$r_unwind_context.libicb$r_ucontext.libicb$l_xsave_length #define libicb$ih_reserved1 libicb$r_unwind_context.libicb$r_ucontext.libicb$ih_reserved1 #define libicb$ih_ucontext libicb$r_unwind_context.libicb$ih_ucontext #define libicb$ih_return_ip libicb$r_return_addr.libicb$ih_return_ip #define libicb$ih_return_pc libicb$r_return_addr.libicb$ih_return_pc #define libicb$r_uo_base libicb$r_op_flags.libicb$r_uo_base #define libicb$q_uo_flags libicb$r_op_flags.libicb$q_uo_flags #define libicb$v_uo_flag_cache_unwind libicb$r_op_flags.libicb$r_uo_flag_bits.libicb$v_uo_flag_cache_unwind #define libicb$v_uo_flag_emulation_mode libicb$r_op_flags.libicb$r_uo_flag_bits.libicb$v_uo_flag_emulation_mode #define libicb$l_internal_flags libicb$r_int_flags.libicb$l_internal_flags #define libicb$v_using_client_memread libicb$r_int_flags.libicb$r_int_flag_bits.libicb$v_using_client_memread #define libicb$v_my_mode libicb$r_int_flags.libicb$r_int_flag_bits.libicb$v_my_mode #endif /* #if !defined(__VAXC) */ #endif /* #ifdef __NEW_STARLET */ /* Write Register callback routine - WhichReg enum. */ /* */ /* The Write Register callback routine is only used when a live */ /* register in another (remote) process needs to be written as */ /* a result of a call to LIB$X86_PUT_INVO_REGISTERS. */ /* It is permissible to implement a subset of these registers, */ /* or not implement it at all if you are sure that these registers */ /* have been saved to memory before PUT_INVO is called */ /* */ /* For the General Registers: */ /* whichReg = LIBICB$K_WhichReg_GR0 + register number */ /* value_1 = 64-bit register value */ /* */ #define LIBICB$K_WHICHREG_GR0 0 /* */ /* For the Floating Registers: */ /* whichReg = LIBICB$K_WhichReg_FR0 + floating register number */ /* value_1 = 64-bit lower floating fill value */ /* value_2 = 64-bit upper floating fill value */ /* */ #define LIBICB$K_WHICHREG_FR0 16 #define LIBICB$K_WHICHREG_FPSR 24 #pragma __member_alignment __restore #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __restore /* Restore the previously-defined required ptr size */ #endif #ifdef __cplusplus } #endif #pragma __standard #endif /* __LIBICB_LOADED */