--******************************************************************************************************************** -- Created: 30-Mar-2010 17:33:11 by OpenVMS SDL EV3-3 -- Source: 21-APR-1993 15:56:50 $1$DGA7274:[LIB_ADA.LIS]EIAFDEF.SDL;1 --******************************************************************************************************************** with SYSTEM; use SYSTEM; with STARLET; use STARLET; with CONDITION_HANDLING; use CONDITION_HANDLING; package EIAFDEF is -- module $EIAFDEF --+ -- EIAF - EXTENDED IMAGE ACTIVATOR FIXUP SECTION -- -- THE IMAGE ACTIVATOR FIXUP SECTION IS AN IMAGE SECTION THAT IS CREATED -- BY THE LINKER AND USED BY THE IMAGE ACTIVATOR TO MODIFY THE IMAGE AS -- IT IS ACTIVATED. THIS IS DONE TO MAINTAIN THE POSITION INDEPENDENCE -- OF EXTERNAL REFERENCES. --- EIAF_K_LENGTH : constant := 84; -- Length of fixed area (should be quadword aligned) EIAF_C_LENGTH : constant := 84; -- Length of fixed area EIAF_S_EIAFDEF : constant := 84; type EIAF_VERSION_TYPE is -- Version of this EIAF record MAJORID : UNSIGNED_LONGWORD; -- Major ID MINORID : UNSIGNED_LONGWORD; -- Minor ID end record; for EIAF_VERSION_TYPE use record MAJORID at 0 range 0 .. 31; MINORID at 4 range 0 .. 31; end record; for EIAF_VERSION_TYPE'SIZE use 64; EIAF_VERSION_TYPE_INIT : constant EIAF_VERSION_TYPE := (MAJORID => 0, MINORID => 0); type EIAF_FLAGS_TYPE is -- Flags record SHR : BOOLEAN; -- This is in a shareable image FILLER_1 : UNSIGNED_31; end record; for EIAF_FLAGS_TYPE use record SHR at 0 range 0 .. 0; FILLER_1 at 0 range 1 .. 31; end record; for EIAF_FLAGS_TYPE'SIZE use 32; EIAF_FLAGS_TYPE_INIT : constant EIAF_FLAGS_TYPE := (SHR => FALSE, FILLER_1 => 0); type EIAF_TYPE is record VERSION : EIAF_VERSION_TYPE; -- Version of this EIAF IAFLINK : UNSIGNED_QUADWORD; ----Component(s) below are defined as comments since they ----overlap other fields ---- ----IAFLINK : INTEGER_32; FIXUPLNK : UNSIGNED_QUADWORD; ----Component(s) below are defined as comments since they ----overlap other fields ---- ----FIXUPLNK : INTEGER_32; SIZE : INTEGER_32; -- Size of fixed part of EIAF FLAGS : EIAF_FLAGS_TYPE; -- Flags QRELFIXOFF : INTEGER_32; -- Offset to quadword relocation fixup data LRELFIXOFF : INTEGER_32; -- Offset to longword relocation fixup data QDOTADROFF : INTEGER_32; -- Offset to quadword .address fixup data LDOTADROFF : INTEGER_32; -- Offset to longword .address fixup data CODEADROFF : INTEGER_32; -- Offset to code address fixup data LPFIXOFF : INTEGER_32; -- Offset to linkage pair fixup data CHGPRTOFF : INTEGER_32; -- Offset to isect change prot. data SHLSTOFF : INTEGER_32; -- Offset to shareable image list SHRIMGCNT : INTEGER_32; -- Number of shareable images in shlst SHLEXTRA : INTEGER_32; -- Number of extra shareable images allowed PERMCTX : INTEGER_32; -- Permanent sharable image context BASE_VA : ADDRESS; -- Base address of the image itself LPPSBFIXOFF : INTEGER_32; -- Offset to "linkage pair with procedure signature" fixups end record; for EIAF_TYPE use record VERSION at 0 range 0 .. 63; IAFLINK at 8 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----IAFLINK at 8 range 0 .. 31; FIXUPLNK at 16 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----FIXUPLNK at 16 range 0 .. 31; SIZE at 24 range 0 .. 31; FLAGS at 28 range 0 .. 31; QRELFIXOFF at 32 range 0 .. 31; LRELFIXOFF at 36 range 0 .. 31; QDOTADROFF at 40 range 0 .. 31; LDOTADROFF at 44 range 0 .. 31; CODEADROFF at 48 range 0 .. 31; LPFIXOFF at 52 range 0 .. 31; CHGPRTOFF at 56 range 0 .. 31; SHLSTOFF at 60 range 0 .. 31; SHRIMGCNT at 64 range 0 .. 31; SHLEXTRA at 68 range 0 .. 31; PERMCTX at 72 range 0 .. 31; BASE_VA at 76 range 0 .. 31; LPPSBFIXOFF at 80 range 0 .. 31; end record; for EIAF_TYPE'SIZE use 672; EIAF_TYPE_INIT : constant EIAF_TYPE := ( VERSION => EIAF_VERSION_TYPE_INIT, IAFLINK => (0, 0), FIXUPLNK => (0, 0), SIZE => 0, FLAGS => EIAF_FLAGS_TYPE_INIT, QRELFIXOFF => 0, LRELFIXOFF => 0, QDOTADROFF => 0, LDOTADROFF => 0, CODEADROFF => 0, LPFIXOFF => 0, CHGPRTOFF => 0, SHLSTOFF => 0, SHRIMGCNT => 0, SHLEXTRA => 0, PERMCTX => 0, BASE_VA => ADDRESS_ZERO, LPPSBFIXOFF => 0); end EIAFDEF;