--******************************************************************************************************************** -- Created: 9-Mar-2021 22:28:21 by OpenVMS SDL EV3-3 -- Source: 27-MAR-1998 15:38:59 $1$DGA8085:[LIB_ADA.LIS]EIHDDEF.SDL;1 --******************************************************************************************************************** with SYSTEM; use SYSTEM; with STARLET; use STARLET; with CONDITION_HANDLING; use CONDITION_HANDLING; package EIHDDEF is -- module $EIHDDEF --+ -- EXTENDED IMAGE HEADER RECORD DEFINITIONS - FIRST RECORD OF THE EXTENDED IMAGE HEADER --- EIHD_K_MAJORID : constant := 3; -- Major id constant EIHD_K_MINORID : constant := 0; -- Minor id constant EIHD_K_MINORID_64 : constant := 1; -- Alt Minor id constant EIHD_K_EXE : constant := 1; -- Executable image EIHD_K_LIM : constant := 2; -- Linkable image EIHD_C_MINCODE : constant := 0; -- Low bound of ALIAS values EIHD_C_NATIVE : constant := 0; -- Alpha native mode image EIHD_C_CLI : constant := 1; -- Image is a CLI, run LOGINOUT EIHD_C_MAXCODE : constant := 1; -- High bound of ALIAS values EIHD_M_LNKDEBUG : constant := 16#00000001#; EIHD_M_LNKNOTFR : constant := 16#00000002#; EIHD_M_NOP0BUFS : constant := 16#00000004#; EIHD_M_PICIMG : constant := 16#00000008#; EIHD_M_P0IMAGE : constant := 16#00000010#; EIHD_M_DBGDMT : constant := 16#00000020#; EIHD_M_INISHR : constant := 16#00000040#; EIHD_M_XLATED : constant := 16#00000080#; EIHD_M_BIND_CODE_SEC : constant := 16#00000100#; EIHD_M_BIND_DATA_SEC : constant := 16#00000200#; EIHD_M_MKTHREADS : constant := 16#00000400#; EIHD_M_UPCALLS : constant := 16#00000800#; EIHD_M_OMV_READY : constant := 16#00001000#; EIHD_M_EXT_BIND_SECT : constant := 16#00002000#; EIHD_K_LENGTH : constant := 104; -- Length of fixed area EIHD_C_LENGTH : constant := 104; -- Length of fixed area EIHD_K_LENGTH_97 : constant := 112; -- Length of fixed area EIHD_K_ALIAS_MINCODE : constant := -1; -- Low bound of ALIAS values -- Following are reserved but not used by the Alpha linker EIHD_K_VAX : constant := -1; -- Native mode image EIHD_K_RSX : constant := 0; -- RSX image produced by TKB EIHD_K_BPA : constant := 1; -- BASIC plus analog EIHD_K_ALIAS : constant := 2; -- Last 126 bytes contains ASCIC of image to activate EIHD_K_VAX_CLI : constant := 3; -- Image is a CLI, run LOGINOUT EIHD_K_PMAX : constant := 4; -- PMAX system image -- Alpha linker writes this value into last word of 1st header block for system images only EIHD_K_ALPHA : constant := 5; EIHD_K_ALIAS_MAXCODE : constant := 5; -- High bound of ALIAS values EIHD_S_EIHDDEF : constant := 512; -- Old size name - synonym type EIHD_VERSION_TYPE is -- Version of this EIHD record MAJORID : UNSIGNED_LONGWORD; -- Major id MINORID : UNSIGNED_LONGWORD; -- Minor id end record; for EIHD_VERSION_TYPE use record MAJORID at 0 range 0 .. 31; MINORID at 4 range 0 .. 31; end record; for EIHD_VERSION_TYPE'SIZE use 64; EIHD_VERSION_TYPE_INIT : constant EIHD_VERSION_TYPE := (MAJORID => 0, MINORID => 0); type EIHD_LNKFLAGS_TYPE is -- Linker produced image flags record LNKDEBUG : BOOLEAN; -- Full debugging requested LNKNOTFR : BOOLEAN; -- First transfer address missing NOP0BUFS : BOOLEAN; -- RMS use of P0 for image i/o disabled PICIMG : BOOLEAN; -- Image is position independent P0IMAGE : BOOLEAN; -- Image is in P0 space only DBGDMT : BOOLEAN; -- Image header has dmt fields INISHR : BOOLEAN; -- Transfer array contains valid IHA$L_INISHR XLATED : BOOLEAN; -- Translated image BIND_CODE_SEC : BOOLEAN; -- EXE image sections can be put into S0 if set BIND_DATA_SEC : BOOLEAN; -- DATA image sections can be put into S0 if set MKTHREADS : BOOLEAN; -- Multiple kernel threads enabled UPCALLS : BOOLEAN; -- Upcalls enabled OMV_READY : BOOLEAN; -- image may be correctly processed by OMV EXT_BIND_SECT : BOOLEAN; -- isects may be moved, if extended fixups applied. -- this applies to both code and data sections. FILLER_1 : UNSIGNED_18; end record; for EIHD_LNKFLAGS_TYPE use record LNKDEBUG at 0 range 0 .. 0; LNKNOTFR at 0 range 1 .. 1; NOP0BUFS at 0 range 2 .. 2; PICIMG at 0 range 3 .. 3; P0IMAGE at 0 range 4 .. 4; DBGDMT at 0 range 5 .. 5; INISHR at 0 range 6 .. 6; XLATED at 0 range 7 .. 7; BIND_CODE_SEC at 1 range 0 .. 0; BIND_DATA_SEC at 1 range 1 .. 1; MKTHREADS at 1 range 2 .. 2; UPCALLS at 1 range 3 .. 3; OMV_READY at 1 range 4 .. 4; EXT_BIND_SECT at 1 range 5 .. 5; FILLER_1 at 1 range 6 .. 23; end record; for EIHD_LNKFLAGS_TYPE'SIZE use 32; EIHD_LNKFLAGS_TYPE_INIT : constant EIHD_LNKFLAGS_TYPE := (LNKDEBUG => FALSE, LNKNOTFR => FALSE, NOP0BUFS => FALSE, PICIMG => FALSE, P0IMAGE => FALSE, DBGDMT => FALSE, INISHR => FALSE, XLATED => FALSE, BIND_CODE_SEC => FALSE, BIND_DATA_SEC => FALSE, MKTHREADS => FALSE, UPCALLS => FALSE, OMV_READY => FALSE, EXT_BIND_SECT => FALSE, FILLER_1 => 0); type EIHD_CONTROL_TYPE is -- Linker control fields record MATCHCTL : UNSIGNED_BYTE; -- Linker match control FILLER_1 : UNSIGNED_BYTE; -- Spares FILLER_2 : UNSIGNED_BYTE; -- Spares FILLER_3 : UNSIGNED_BYTE; -- Spares SYMVECT_SIZE : UNSIGNED_LONGWORD; -- Size of the symbol vector in bytes VIRT_MEM_BLOCK_SIZE : UNSIGNED_LONGWORD; -- Virtual memory size used for link (value given to /BPAGE, power of 2 end record; for EIHD_CONTROL_TYPE use record MATCHCTL at 0 range 0 .. 7; FILLER_1 at 1 range 0 .. 7; FILLER_2 at 2 range 0 .. 7; FILLER_3 at 3 range 0 .. 7; SYMVECT_SIZE at 4 range 0 .. 31; VIRT_MEM_BLOCK_SIZE at 8 range 0 .. 31; end record; for EIHD_CONTROL_TYPE'SIZE use 96; EIHD_CONTROL_TYPE_INIT : constant EIHD_CONTROL_TYPE := (MATCHCTL => 0, FILLER_1 => 0, FILLER_2 => 0, FILLER_3 => 0, SYMVECT_SIZE => 0, VIRT_MEM_BLOCK_SIZE => 0); type EIHD_TYPE is record VERSION : EIHD_VERSION_TYPE; -- Version of this EIHD SIZE : UNSIGNED_LONGWORD; -- Size in bytes of image header ISDOFF : UNSIGNED_LONGWORD; -- Byte offset to ISD list ACTIVOFF : UNSIGNED_LONGWORD; -- Byte offset to activation data SYMDBGOFF : UNSIGNED_LONGWORD; -- Byte offset to symbol table and debug data IMGIDOFF : UNSIGNED_LONGWORD; -- Byte offset to image ident data PATCHOFF : UNSIGNED_LONGWORD; -- Byte offset to patch data IAFVA : UNSIGNED_QUADWORD; ----Component(s) below are defined as comments since they ----overlap other fields ---- ----IAFVA : ADDRESS; SYMVVA : UNSIGNED_QUADWORD; ----Component(s) below are defined as comments since they ----overlap other fields ---- ----SYMVVA : ADDRESS; VERSION_ARRAY_OFF : UNSIGNED_LONGWORD; -- Byte offset to version number array IMGTYPE : UNSIGNED_LONGWORD; -- Image type -- -- IMAGE TYPE CODES -- SUBTYP : UNSIGNED_LONGWORD; -- Code to use secondary image name -- ***************************************** -- -- Define legal range of SUBTYPE constants. MINCODE must be equal to the -- lowest value and MAXCODE must be equal to the highest value. -- IMGIOCNT : UNSIGNED_LONGWORD; -- size in bytes of image i/o section requested -- 0 if default IOCHANCNT : UNSIGNED_LONGWORD; -- # channels requested PRIVREQS : UNSIGNED_QUADWORD; -- requested privelege mask HDRBLKCNT : UNSIGNED_LONGWORD; -- # header diskblocks LNKFLAGS : EIHD_LNKFLAGS_TYPE; -- Linker produced image flags IDENT : UNSIGNED_LONGWORD; -- GBL SEC ident value for linkable image SYSVER : UNSIGNED_LONGWORD; -- SYS$K_VERSION or 0 if not linked with exec CONTROL : EIHD_CONTROL_TYPE; -- Linker control fields -- from 9 to 16) EXT_FIXUP_OFF : UNSIGNED_LONGWORD; -- Byte offset to extended fixup data NOOPT_PSECT_OFF : UNSIGNED_LONGWORD; -- Byte offset to no_optimize psect table SKIP : STRING(1 .. 398); -- ALIAS is last word in 512 byte block of system image ALIAS : UNSIGNED_WORD; -- CODE identifies image type to MOM -- ***************************************** -- -- Define legal range of ALIAS constants. ALIAS_MINCODE must be equal to the -- lowest value and ALIAS_MAXCODE must be equal to the highest value. -- end record; for EIHD_TYPE use record VERSION at 0 range 0 .. 63; SIZE at 8 range 0 .. 31; ISDOFF at 12 range 0 .. 31; ACTIVOFF at 16 range 0 .. 31; SYMDBGOFF at 20 range 0 .. 31; IMGIDOFF at 24 range 0 .. 31; PATCHOFF at 28 range 0 .. 31; IAFVA at 32 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----IAFVA at 32 range 0 .. 31; SYMVVA at 40 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----SYMVVA at 40 range 0 .. 31; VERSION_ARRAY_OFF at 48 range 0 .. 31; IMGTYPE at 52 range 0 .. 31; SUBTYP at 56 range 0 .. 31; IMGIOCNT at 60 range 0 .. 31; IOCHANCNT at 64 range 0 .. 31; PRIVREQS at 68 range 0 .. 63; HDRBLKCNT at 76 range 0 .. 31; LNKFLAGS at 80 range 0 .. 31; IDENT at 84 range 0 .. 31; SYSVER at 88 range 0 .. 31; CONTROL at 92 range 0 .. 95; EXT_FIXUP_OFF at 104 range 0 .. 31; NOOPT_PSECT_OFF at 108 range 0 .. 31; SKIP at 112 range 0 .. 3183; ALIAS at 510 range 0 .. 15; end record; for EIHD_TYPE'SIZE use 4096; EIHD_TYPE_INIT : constant EIHD_TYPE := ( VERSION => EIHD_VERSION_TYPE_INIT, SIZE => 0, ISDOFF => 0, ACTIVOFF => 0, SYMDBGOFF => 0, IMGIDOFF => 0, PATCHOFF => 0, IAFVA => (0, 0), SYMVVA => (0, 0), VERSION_ARRAY_OFF => 0, IMGTYPE => 0, SUBTYP => 0, IMGIOCNT => 0, IOCHANCNT => 0, PRIVREQS => (0, 0), HDRBLKCNT => 0, LNKFLAGS => EIHD_LNKFLAGS_TYPE_INIT, IDENT => 0, SYSVER => 0, CONTROL => EIHD_CONTROL_TYPE_INIT, EXT_FIXUP_OFF => 0, NOOPT_PSECT_OFF => 0, SKIP => (others => ASCII.NUL), ALIAS => 0); end EIHDDEF;