/********************************************************************************************************************************/ /* Created: 9-Nov-2023 12:07:13 by OpenVMS SDL V3.7 */ /* Source: 09-NOV-2023 12:07:10 $1$DGA8345:[STARLET_H.SRC]STARDEFFL.SDI;1 */ /********************************************************************************************************************************/ /*** MODULE $FDSCDEF ***/ #ifndef __FDSCDEF_LOADED #define __FDSCDEF_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 /* */ /* Function descriptor offset definitions for the IA64 VMS calling */ /* standard. This definition includes the offsets and fields for */ /* local, official, translated/native, and bound function descriptors. */ /* */ /* Function descriptor kind quadwords in FD */ /* */ /* Local FD w/o translated image support 2 */ /* Local FD with translated image support 4 */ /* Official FD w/o translated image support 2 or 3 (see note) */ /* Official FD with translated image support 3 */ /* Bound FD 6 */ /* */ /* Note: the official FD w/o translated image support could be 2 */ /* quadwords if the linker knows it's not a universal symbol and */ /* that no module exports its address. Until there's a way for */ /* compilers to notify the linker of this, all such FDs are 3 */ /* quadwords in length. */ /* */ #define FDSC$K_BOUND_SIZE 48 /* Size of bound procedure descriptor */ #ifdef __NEW_STARLET typedef struct _fdscdef { __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 *fdsc$q_entry; /* Simple FD: Entry code address */ #else unsigned __int64 fdsc$q_entry; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __short /* And set ptr size default to 32-bit pointers */ #endif void *fdsc$l_entry; #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 *fdsc$q_ots_entry; /* Bound FD: Entry code address of OTS$JUMP_TO_BPV */ #else unsigned __int64 fdsc$q_ots_entry; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __short /* And set ptr size default to 32-bit pointers */ #endif void *fdsc$l_ots_entry; } fdsc$r_entry_overlay; __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 *fdsc$q_gp; /* Simple FD: Global pointer */ #else unsigned __int64 fdsc$q_gp; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __short /* And set ptr size default to 32-bit pointers */ #endif void *fdsc$l_gp; #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 *fdsc$q_ots_pseudo_gp; /* Bound FD: Global pointer for OTS$JUMP_TO_BPV (ie. address of this FD) */ #else unsigned __int64 fdsc$q_ots_pseudo_gp; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __short /* And set ptr size default to 32-bit pointers */ #endif void *fdsc$l_ots_pseudo_gp; } fdsc$r_gp_overlay; __union { unsigned __int64 fdsc$q_signature; /* Signature information field */ __struct { unsigned int fdsc$l_signature_l; unsigned int fdsc$l_signature_h; } fdsc$r_signature_struct; } fdsc$r_signature_overlay; __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 *fdsc$q_target_entry; /* PD address of translated routine or entry code address of bound procedure */ #else unsigned __int64 fdsc$q_target_entry; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __short /* And set ptr size default to 32-bit pointers */ #endif void *fdsc$l_target_entry; } fdsc$r_target_entry_overlay; __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 *fdsc$q_target_gp; /* Global pointer for bound procedure */ #else unsigned __int64 fdsc$q_target_gp; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __short /* And set ptr size default to 32-bit pointers */ #endif void *fdsc$l_target_gp; } fdsc$r_target_gp_overlay; __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 *fdsc$q_target_envir; /* Environment value for bound procedure (uplevel-addressing pointer) */ #else unsigned __int64 fdsc$q_target_envir; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __short /* And set ptr size default to 32-bit pointers */ #endif void *fdsc$l_target_envir; } fdsc$r_target_envir_overlay; } FDSCDEF; #if !defined(__VAXC) #define fdsc$q_entry fdsc$r_entry_overlay.fdsc$q_entry #define fdsc$l_entry fdsc$r_entry_overlay.fdsc$l_entry #define fdsc$q_ots_entry fdsc$r_entry_overlay.fdsc$q_ots_entry #define fdsc$l_ots_entry fdsc$r_entry_overlay.fdsc$l_ots_entry #define fdsc$q_gp fdsc$r_gp_overlay.fdsc$q_gp #define fdsc$l_gp fdsc$r_gp_overlay.fdsc$l_gp #define fdsc$q_ots_pseudo_gp fdsc$r_gp_overlay.fdsc$q_ots_pseudo_gp #define fdsc$l_ots_pseudo_gp fdsc$r_gp_overlay.fdsc$l_ots_pseudo_gp #define fdsc$q_signature fdsc$r_signature_overlay.fdsc$q_signature #define fdsc$l_signature_l fdsc$r_signature_overlay.fdsc$r_signature_struct.fdsc$l_signature_l #define fdsc$l_signature_h fdsc$r_signature_overlay.fdsc$r_signature_struct.fdsc$l_signature_h #define fdsc$q_target_entry fdsc$r_target_entry_overlay.fdsc$q_target_entry #define fdsc$l_target_entry fdsc$r_target_entry_overlay.fdsc$l_target_entry #define fdsc$q_target_gp fdsc$r_target_gp_overlay.fdsc$q_target_gp #define fdsc$l_target_gp fdsc$r_target_gp_overlay.fdsc$l_target_gp #define fdsc$q_target_envir fdsc$r_target_envir_overlay.fdsc$q_target_envir #define fdsc$l_target_envir fdsc$r_target_envir_overlay.fdsc$l_target_envir #endif /* #if !defined(__VAXC) */ #else /* __OLD_STARLET */ typedef struct _fdscdef { __union { unsigned __int64 fdsc$q_entry; /* Simple FD: Entry code address */ int fdsc$l_entry; unsigned __int64 fdsc$q_ots_entry; /* Bound FD: Entry code address of OTS$JUMP_TO_BPV */ int fdsc$l_ots_entry; } fdsc$r_entry_overlay; __union { unsigned __int64 fdsc$q_gp; /* Simple FD: Global pointer */ int fdsc$l_gp; unsigned __int64 fdsc$q_ots_pseudo_gp; /* Bound FD: Global pointer for OTS$JUMP_TO_BPV (ie. address of this FD) */ int fdsc$l_ots_pseudo_gp; } fdsc$r_gp_overlay; __union { unsigned int fdsc$q_signature [2]; /* Signature information field */ __struct { unsigned int fdsc$l_signature_l; unsigned int fdsc$l_signature_h; } fdsc$r_signature_struct; } fdsc$r_signature_overlay; __union { unsigned __int64 fdsc$q_target_entry; /* PD address of translated routine or entry code address of bound procedure */ int fdsc$l_target_entry; } fdsc$r_target_entry_overlay; __union { unsigned __int64 fdsc$q_target_gp; /* Global pointer for bound procedure */ int fdsc$l_target_gp; } fdsc$r_target_gp_overlay; __union { unsigned __int64 fdsc$q_target_envir; /* Environment value for bound procedure (uplevel-addressing pointer) */ int fdsc$l_target_envir; } fdsc$r_target_envir_overlay; } fdscdef; #if !defined(__VAXC) #define fdsc$q_entry fdsc$r_entry_overlay.fdsc$q_entry #define fdsc$l_entry fdsc$r_entry_overlay.fdsc$l_entry #define fdsc$q_ots_entry fdsc$r_entry_overlay.fdsc$q_ots_entry #define fdsc$l_ots_entry fdsc$r_entry_overlay.fdsc$l_ots_entry #define fdsc$q_gp fdsc$r_gp_overlay.fdsc$q_gp #define fdsc$l_gp fdsc$r_gp_overlay.fdsc$l_gp #define fdsc$q_ots_pseudo_gp fdsc$r_gp_overlay.fdsc$q_ots_pseudo_gp #define fdsc$l_ots_pseudo_gp fdsc$r_gp_overlay.fdsc$l_ots_pseudo_gp #define fdsc$q_signature fdsc$r_signature_overlay.fdsc$q_signature #define fdsc$l_signature_l fdsc$r_signature_overlay.fdsc$r_signature_struct.fdsc$l_signature_l #define fdsc$l_signature_h fdsc$r_signature_overlay.fdsc$r_signature_struct.fdsc$l_signature_h #define fdsc$q_target_entry fdsc$r_target_entry_overlay.fdsc$q_target_entry #define fdsc$l_target_entry fdsc$r_target_entry_overlay.fdsc$l_target_entry #define fdsc$q_target_gp fdsc$r_target_gp_overlay.fdsc$q_target_gp #define fdsc$l_target_gp fdsc$r_target_gp_overlay.fdsc$l_target_gp #define fdsc$q_target_envir fdsc$r_target_envir_overlay.fdsc$q_target_envir #define fdsc$l_target_envir fdsc$r_target_envir_overlay.fdsc$l_target_envir #endif /* #if !defined(__VAXC) */ #endif /* #ifdef __NEW_STARLET */ #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 /* __FDSCDEF_LOADED */