/**/ /***************************************************************************/ /** **/ /** © Copyright 2010, Hewlett-Packard Development Company, L.P. **/ /** **/ /** Confidential computer software. Valid license from HP and/or **/ /** its subsidiaries required for possession, use, or copying. **/ /** **/ /** Consistent with FAR 12.211 and 12.212, Commercial Computer Software, **/ /** Computer Software Documentation, and Technical Data for Commercial **/ /** Items are licensed to the U.S. Government under vendor's standard **/ /** commercial license. **/ /** **/ /** Neither HP nor any of its subsidiaries shall be liable for technical **/ /** or editorial errors or omissions contained herein. The information **/ /** in this document is provided "as is" without warranty of any kind and **/ /** is subject to change without notice. The warranties for HP products **/ /** are set forth in the express limited warranty statements accompanying **/ /** such products. Nothing herein should be construed as constituting an **/ /** additional warranty. **/ /** **/ /***************************************************************************/ /********************************************************************************************************************************/ /* Created: 30-Mar-2010 17:27:19 by OpenVMS SDL EV3-3 */ /* Source: 11-OCT-2005 10:35:12 $1$DGA7274:[LIB_H.SRC]LDRIMGDEF.SDL;1 */ /********************************************************************************************************************************/ /*** MODULE $LDRIMGDEF ***/ #ifndef __LDRIMGDEF_LOADED #define __LDRIMGDEF_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 LDRIMG$C_ISD_LENGTH 20 #define LDRIMG$K_ISD_LENGTH 20 #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 _isd_overlay { #pragma __nomember_alignment void *ldrimg$l_isd_base; /* Overlay image section base */ int ldrimg$l_isd_len; /* overlay image section length */ int ldrimg$l_isd_vbn; /* overlay image section VBN */ int ldrimg$l_isd_offset; /* overlay image section offset */ int ldrimg$l_isd_end; /* overlay image section end */ char ldrimg$b_fill_0_ [4]; } ISD_OVERLAY; #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _ldrisd { #pragma __nomember_alignment void *ldrisd$p_base; /* process virtual image section base (relocated) */ int ldrisd$i_len; /* image section length */ int ldrisd$i_vbn; /* image section VBN */ int ldrisd$i_link_base; /* image section offset (linker base) */ int ldrisd$i_link_end; /* image section end (unrelocated, rounded to 'bigpage') */ } LDRISD; #define LDRIMG$M_NOT_XQP 0x1 #define LDRIMG$M_DELAY_INIT 0x2 #define LDRIMG$M_NO_PFN_DB 0x4 #define LDRIMG$M_NOOVERLAY 0x8 #define LDRIMG$M_CAN_UNL 0x10 #define LDRIMG$M_UNL_PEN 0x20 #define LDRIMG$M_SYNC 0x40 #define LDRIMG$M_VALID 0x80 #define LDRIMG$M_GSTVA_VALID 0x100 #define LDRIMG$M_PAGED_RELOC 0x200 #define LDRIMG$M_NONPAGED_RELOC 0x400 #define LDRIMG$M_PAGED_FIXUPS 0x800 #define LDRIMG$M_NONPAGED_FIXUPS 0x1000 #define LDRIMG$M_SECOND_PASS_FIXUP 0x2000 #define LDRIMG$M_NO_SLICE 0x4000 #define LDRIMG$M_DYN_LOAD 0x8000 #define LDRIMG$M_NPAGED_LOAD 0x10000 #define LDRIMG$M_MSG_LOADED 0x20000 #define LDRIMG$M_INITIALIZED 0x40000 #define LDRIMG$M_INIT_GONE 0x80000 #define LDRIMG$C_LENGTH 364 #define LDRIMG$K_LENGTH 364 #define LDRIMG$S_LDRIMGDEF 364 /* Old size name - synonym */ #ifdef __cplusplus /* Define structure prototypes */ struct _wcb; struct _ldrisd; struct _imcb; #endif /* #ifdef __cplusplus */ #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 _ldrimg { #pragma __nomember_alignment struct _ldrimg *ldrimg$l_flink; /* forward link */ struct _ldrimg *ldrimg$l_blink; /* backward link */ unsigned short int ldrimg$w_size; /* structure size */ unsigned char ldrimg$b_type; /* DYN$C_LOADCODE */ unsigned char ldrimg$b_subtype; /* DYN$C_LDRIMG */ unsigned char ldrimg$b_imgnamlen; /* count for image name */ char ldrimg$t_imgnam [39]; /* image name string */ void *ldrimg$l_base; /* base virtual address */ int ldrimg$l_page_count; /* image size in pages */ __union { unsigned int ldrimg$l_flags; /* status flags */ __struct { unsigned ldrimg$v_not_xqp : 1; /* not opened by XQP */ unsigned ldrimg$v_delay_init : 1; /* needs delayed initialization */ unsigned ldrimg$v_no_pfn_db : 1; /* no PFN data base when loaded */ unsigned ldrimg$v_nooverlay : 1; /* not overlaid by bugcheck */ unsigned ldrimg$v_can_unl : 1; /* unloadable exec image */ unsigned ldrimg$v_unl_pen : 1; /* exec image unload is pending */ unsigned ldrimg$v_sync : 1; /* synchronize access to this block */ unsigned ldrimg$v_valid : 1; /* contents of this block are valid */ unsigned ldrimg$v_gstva_valid : 1; /* GSTVA contains a valid address */ unsigned ldrimg$v_paged_reloc : 1; /* paged relocations done */ unsigned ldrimg$v_nonpaged_reloc : 1; /* nonpaged relocations done */ unsigned ldrimg$v_paged_fixups : 1; /* paged fix-ups done */ unsigned ldrimg$v_nonpaged_fixups : 1; /* Non-paged fix-ups done */ unsigned ldrimg$v_second_pass_fixup : 1; /* 2nd pass fixup required */ unsigned ldrimg$v_no_slice : 1; /* execlet not sliced */ unsigned ldrimg$v_dyn_load : 1; /* loaded by dynamic loader */ unsigned ldrimg$v_npaged_load : 1; /* paged code loaded nonpaged */ unsigned ldrimg$v_msg_loaded : 1; /* message section found/loaded */ unsigned ldrimg$v_initialized : 1; /* initialization complete */ unsigned ldrimg$v_init_gone : 1; /* when set, init sections have */ /* been deallocated - I64 only */ unsigned ldrimg$v_fill_1_ : 4; } ldrimg$r_flags_bits; } ldrimg$r_flags_overlay; unsigned __int64 ldrimg$q_linktime; /* link time */ int ldrimg$l_version; /* image version */ void *ldrimg$l_nonpag_r_base; /* nonpaged read-only base */ int ldrimg$l_nonpag_r_len; /* nonpaged read-only length */ int ldrimg$l_nonpag_r_vbn; /* nonpaged read-only vbn */ int ldrimg$l_nonpag_r_offset; /* nonpaged read-only image offset */ int ldrimg$l_nonpag_r_end; /* nonpaged read-only end offset */ void *ldrimg$l_nonpag_w_base; /* nonpaged writable base */ int ldrimg$l_nonpag_w_len; /* nonpaged writable length */ int ldrimg$l_nonpag_w_vbn; /* nonpaged writable vbn */ int ldrimg$l_nonpag_w_offset; /* nonpaged writable image offset */ int ldrimg$l_nonpag_w_end; /* nonpaged writable end offset */ void *ldrimg$l_pag_r_base; /* paged read-only base */ int ldrimg$l_pag_r_len; /* paged read-only length */ int ldrimg$l_pag_r_vbn; /* paged read-only vbn */ int ldrimg$l_pag_r_offset; /* paged read-only image offset */ int ldrimg$l_pag_r_end; /* paged read-only end offset */ void *ldrimg$l_pag_w_base; /* paged writable base */ int ldrimg$l_pag_w_len; /* paged writable length */ int ldrimg$l_pag_w_vbn; /* paged writable vbn */ int ldrimg$l_pag_w_offset; /* paged writable image offset */ int ldrimg$l_pag_w_end; /* paged writable end offset */ void *ldrimg$l_fixup_base; /* base VA of fixup section */ int ldrimg$l_fixup_len; /* size of fixup section */ int ldrimg$l_fixup_vbn; /* fixup section vbn */ int ldrimg$l_fixup_offset; /* fixup section image offset */ int ldrimg$l_fixup_end; /* fixup end offset */ void *ldrimg$l_init_base; /* base VA of initialization code */ int ldrimg$l_init_len; /* size of initialization code */ int ldrimg$l_init_vbn; /* initialization section vbn */ int ldrimg$l_init_offset; /* init code image offset */ int ldrimg$l_init_end; /* init code end offset */ short int ldrimg$w_pag_r_stx; /* section table index (read-only) */ short int ldrimg$w_pag_w_stx; /* section table index (writable) */ struct _wcb *ldrimg$l_wcb; /* WCB pointer */ int (*ldrimg$l_init_rtn)(); /* delayed initialization routine */ int ldrimg$l_pid; /* pid of proc attempting load */ int ldrimg$l_chan; /* chan number */ void *ldrimg$l_basimgvec; /* VA of list of base image vectors */ int ldrimg$l_num_basvec; /* number of base image contributions */ int ldrimg$l_seq; /* sequence no. */ void *ldrimg$l_unlvec; /* VA of unload routine vector */ int ldrimg$l_refcnt; /* number of references pending */ void *ldrimg$l_symvva; /* Address of symbol vector */ void *ldrimg$l_symvva_end; /* End Address of symbol vector */ void *ldrimg$l_gst; /* Address of entire global symbol table. */ int ldrimg$l_gstpages; /* GST page count */ void *ldrimg$l_gstva; /* Address of loader's global symbol table. */ void *ldrimg$l_spfva; /* Address of 2nd pass fixup symbol table. */ void *ldrimg$l_ssvec; /* Address of system service vectors */ void *ldrimg$l_symvec0; /* Address of first symbol vector */ void *ldrimg$l_symvec1; /* Address of second symbol vector */ void *ldrimg$l_fst; /* Address of FST for boot time IO */ void *ldrimg$l_vec_segment; /* Address of segment(isect) with VEC attribute */ unsigned int ldrimg$l_segcount; /* count of segments */ struct _ldrisd *ldrimg$l_segments; /* pointer to ISD array */ struct _ldrisd *ldrimg$l_dyn_seg; /* pointer to the dynamic segment ISD */ unsigned int ldrimg$l_imgnamlen; /* count for image name */ char *ldrimg$ps_imgnam; /* image name string */ struct _imcb *ldrimg$p_imcb; /* pointer to IMCB (for process iamges) */ unsigned int ldrimg$l_ldrimg_size; /* length of the LDRIMG structure. */ unsigned int ldrimg$l_ldrisd_size; /* length of each LDRISD structure. */ unsigned int ldrimg$l_xlated; /* translated image type. */ void *ldrimg$l_public_image_flink; /* queue element for "public' execlets */ void *ldrimg$l_public_image_blink; unsigned int ldrimg$l_public_image_index; /* */ int ldrimg$l_reserved_1; /* reserved space for debug/patch/align */ __int64 ldrimg$q_reserved_2 [4]; /* reserve some space for debug/patch */ char ldrimg$b_fill_2_ [4]; } LDRIMG; #if !defined(__VAXC) #define ldrimg$l_flags ldrimg$r_flags_overlay.ldrimg$l_flags #define ldrimg$r_flags_bits ldrimg$r_flags_overlay.ldrimg$r_flags_bits #define ldrimg$v_not_xqp ldrimg$r_flags_bits.ldrimg$v_not_xqp #define ldrimg$v_delay_init ldrimg$r_flags_bits.ldrimg$v_delay_init #define ldrimg$v_no_pfn_db ldrimg$r_flags_bits.ldrimg$v_no_pfn_db #define ldrimg$v_nooverlay ldrimg$r_flags_bits.ldrimg$v_nooverlay #define ldrimg$v_can_unl ldrimg$r_flags_bits.ldrimg$v_can_unl #define ldrimg$v_unl_pen ldrimg$r_flags_bits.ldrimg$v_unl_pen #define ldrimg$v_sync ldrimg$r_flags_bits.ldrimg$v_sync #define ldrimg$v_valid ldrimg$r_flags_bits.ldrimg$v_valid #define ldrimg$v_gstva_valid ldrimg$r_flags_bits.ldrimg$v_gstva_valid #define ldrimg$v_paged_reloc ldrimg$r_flags_bits.ldrimg$v_paged_reloc #define ldrimg$v_nonpaged_reloc ldrimg$r_flags_bits.ldrimg$v_nonpaged_reloc #define ldrimg$v_paged_fixups ldrimg$r_flags_bits.ldrimg$v_paged_fixups #define ldrimg$v_nonpaged_fixups ldrimg$r_flags_bits.ldrimg$v_nonpaged_fixups #define ldrimg$v_second_pass_fixup ldrimg$r_flags_bits.ldrimg$v_second_pass_fixup #define ldrimg$v_no_slice ldrimg$r_flags_bits.ldrimg$v_no_slice #define ldrimg$v_dyn_load ldrimg$r_flags_bits.ldrimg$v_dyn_load #define ldrimg$v_npaged_load ldrimg$r_flags_bits.ldrimg$v_npaged_load #define ldrimg$v_msg_loaded ldrimg$r_flags_bits.ldrimg$v_msg_loaded #define ldrimg$v_initialized ldrimg$r_flags_bits.ldrimg$v_initialized #define ldrimg$v_init_gone ldrimg$r_flags_bits.ldrimg$v_init_gone #endif /* #if !defined(__VAXC) */ #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 /* __LDRIMGDEF_LOADED */