--******************************************************************************************************************** -- Created: 9-Mar-2021 22:28:26 by OpenVMS SDL EV3-3 -- Source: 22-APR-1993 11:17:44 $1$DGA8085:[LIB_ADA.LIS]IAFDEF.SDL;1 --******************************************************************************************************************** with SYSTEM; use SYSTEM; with STARLET; use STARLET; with CONDITION_HANDLING; use CONDITION_HANDLING; package IAFDEF is -- module $IAFDEF --+ -- IAF - 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. --- IAF_K_LENGTH : constant := 64; -- Length of fixed area IAF_C_LENGTH : constant := 64; -- Length of fixed area IAF_S_IAFDEF : constant := 64; type IAF_FLAGS_TYPE is -- Flags record SHR : BOOLEAN; -- This is in a shareable image FILLER_1 : UNSIGNED_15; end record; for IAF_FLAGS_TYPE use record SHR at 0 range 0 .. 0; FILLER_1 at 0 range 1 .. 15; end record; for IAF_FLAGS_TYPE'SIZE use 16; IAF_FLAGS_TYPE_INIT : constant IAF_FLAGS_TYPE := (SHR => FALSE, FILLER_1 => 0); type IAF_TYPE is record IAFLINK : ADDRESS; -- Link for image activator use FIXUPLNK : ADDRESS; -- Link for shareable image fixups SIZE : UNSIGNED_WORD; -- Size of fixed part of IAF FLAGS : IAF_FLAGS_TYPE; -- Flags G_FIXOFF : UNSIGNED_LONGWORD; -- Offset to g^ address data DOTADROFF : UNSIGNED_LONGWORD; -- Offset to .address fixup data CHGPRTOFF : UNSIGNED_LONGWORD; -- Offset to isect change prot. data SHLSTOFF : UNSIGNED_LONGWORD; -- Offset to shareable image list SHRIMGCNT : UNSIGNED_LONGWORD; -- Number of shareable images in shlst SHLEXTRA : UNSIGNED_LONGWORD; -- Number of extra shareable images allowed PERMCTX : ADDRESS; -- Permanent sharable image context FILLER_1 : UNSIGNED_LONGWORD; -- Spare FILLER_2 : UNSIGNED_LONGWORD; -- Spare FILLER_3 : UNSIGNED_LONGWORD; -- Spare FILLER_4 : UNSIGNED_LONGWORD; -- Spare FILLER_5 : UNSIGNED_LONGWORD; -- Spare FILLER_6 : UNSIGNED_LONGWORD; -- Spare end record; for IAF_TYPE use record IAFLINK at 0 range 0 .. 31; FIXUPLNK at 4 range 0 .. 31; SIZE at 8 range 0 .. 15; FLAGS at 10 range 0 .. 15; G_FIXOFF at 12 range 0 .. 31; DOTADROFF at 16 range 0 .. 31; CHGPRTOFF at 20 range 0 .. 31; SHLSTOFF at 24 range 0 .. 31; SHRIMGCNT at 28 range 0 .. 31; SHLEXTRA at 32 range 0 .. 31; PERMCTX at 36 range 0 .. 31; FILLER_1 at 40 range 0 .. 31; FILLER_2 at 44 range 0 .. 31; FILLER_3 at 48 range 0 .. 31; FILLER_4 at 52 range 0 .. 31; FILLER_5 at 56 range 0 .. 31; FILLER_6 at 60 range 0 .. 31; end record; for IAF_TYPE'SIZE use 512; IAF_TYPE_INIT : constant IAF_TYPE := (IAFLINK => ADDRESS_ZERO, FIXUPLNK => ADDRESS_ZERO, SIZE => 0, FLAGS => IAF_FLAGS_TYPE_INIT, G_FIXOFF => 0, DOTADROFF => 0, CHGPRTOFF => 0, SHLSTOFF => 0, SHRIMGCNT => 0, SHLEXTRA => 0, PERMCTX => ADDRESS_ZERO, FILLER_1 => 0, FILLER_2 => 0, FILLER_3 => 0, FILLER_4 => 0, FILLER_5 => 0, FILLER_6 => 0); end IAFDEF;