1 /* BEGIN INCLUDE FILE object_link_dcls.incl.pl1 BIM 1981 from linkdcl */
  2 
  3 
  4 /****^  HISTORY COMMENTS:
  5   1) change(86-05-02,Elhard), approve(86-05-02,MCR7391),
  6      audit(86-11-18,Schroth), install(86-11-20,MR12.0-1222):
  7      Modified to add partial_link structure for an object MSF partially snapped
  8      link.
  9   2) change(86-11-13,DGHowe), approve(86-11-13,MCR7391), audit(86-11-13,Zwick),
 10      install(86-11-20,MR12.0-1222):
 11      Added a declaration of FAULT_TAG_1, FAULT_TAG_2 and FAULT_TAG_3.
 12                                                    END HISTORY COMMENTS */
 13 
 14 
 15 /* format: style3 */
 16 /* everything you ever wanted in a linkage section */
 17 
 18 /*
 19  Last Modified (Date and Reason):
 20   15 Nov 1971 by C Garman
 21    6/75 by M.Weaver to add virgin_linkage_header declaration
 22    6/75 by S.Webber to comment existing structures better
 23    9/77 by M. Weaver to add run_depth to link
 24    7/81 by B. Margulies for firstref structure, unsigned fixed bins.
 25    3/83 by M. Weaver to add flags overlaying def_ptr
 26 */
 27 
 28 declare   1 object_link       based aligned,                /* link pair in linkage section */
 29             2 header_relp     fixed bin (17) unal,          /* rel pointer to beginning of linkage, always negative */
 30             2 ringno          fixed bin (3) unsigned unal,  /* MBZ */
 31             2 mbz             bit (6) unal,
 32             2 run_depth       fixed bin (2) unal,           /* run unit depth, filled when link is snapped */
 33             2 tag             bit (6) unal,                 /* fault tag. 46(8) if not snapped, 43(8) if snapped */
 34             2 expression_relp fixed bin (18) unsigned unal, /* pointer (rel to defs) of expression word */
 35             2 mbz2            bit (12) unal,
 36             2 modifier        bit (6) unal;                 /* modifier to be left in snapped link */
 37 
 38 declare   1 partial_link      based aligned,                /* partially snapped link */
 39             2 type            fixed bin (3) unsigned unal,  /* target section of link */
 40             2 component       fixed bin (15) unsigned unal, /* target component index */
 41             2 mbz1            bit (12) unal,
 42             2 tag             bit (6) unal,                 /* fault tag 3 47(8), ITS 43(8) if snapped */
 43 
 44             2 offset          fixed bin (18) unsigned unal, /* word offset of link */
 45             2 mbz2            bit (3) unal,
 46             2 bit_offset      fixed bin (6) unsigned unal,  /* bit offset (in practice, always 0) */
 47             2 mbz3            bit (3) unal,
 48             2 modifier        bit (6) unal;                 /* modifier to be left in snapped link */
 49 
 50 declare   1 linkage_header    based aligned,                /* linkage block header */
 51             2 def_ptr         ptr,                          /* pointer to definition section */
 52             2 symbol_ptr      ptr unal,                     /* pointer to symbol section in object segment */
 53             2 original_linkage_ptr
 54                               ptr unal,                     /* pointer to linkage section in object segment */
 55             2 unused          bit (72),
 56             2 stats,
 57               3 begin_links   fixed bin (18) unsigned unal, /* offset (rel to this section) of first link */
 58               3 block_length  fixed bin (18) unsigned unal, /* number of words in this linkage section */
 59               3 segment_number
 60                               fixed bin (18) unsigned unal, /* text segment number associated with this section */
 61               3 static_length fixed bin (18) unsigned unal; /* number of words of static for this segment */
 62 
 63 declare   1 linkage_header_flags
 64                               aligned based,                /* overlay of def_ptr for flags */
 65             2 pad1            bit (28) unaligned,           /* flags are in first word */
 66             2 static_vlas     bit (1) unaligned,            /* static section "owns" some LA/VLA segments */
 67             2 perprocess_static
 68                               bit (1) unaligned,            /* 1 copy of static section is shared among all tasks/run units */
 69             2 pad2            bit (6) unaligned;
 70 
 71 declare   1 virgin_linkage_header
 72                               aligned based,                /* template for linkage header in object segment */
 73             2 pad             bit (30) unaligned,           /* is filled in by linker */
 74             2 defs_in_link    bit (6) unaligned,            /* =o20 if defs in linkage (nonstandard) */
 75             2 def_offset      fixed bin (18) unsigned unaligned,
 76                                                             /* offset of definition section */
 77             2 first_ref_relp  fixed bin (18) unsigned unaligned,
 78                                                             /* offset of trap-at-first-reference offset array */
 79             2 filled_in_later bit (144),
 80             2 link_begin      fixed bin (18) unsigned unaligned,
 81                                                             /* offset of first link */
 82             2 linkage_section_lng
 83                               fixed bin (18) unsigned unaligned,
 84                                                             /* length of linkage section */
 85             2 segno_pad       fixed bin (18) unsigned unaligned,
 86                                                             /* will be segment number of copied linkage */
 87             2 static_length   fixed bin (18) unsigned unaligned;
 88                                                             /* length of static section */
 89 
 90 declare   1 fr_traps          based aligned,                /* First Reference Trap Procedures */
 91             2 decl_vers       fixed bin,                    /* version of this struc, value=1, ABS reloc */
 92             2 n_traps         fixed bin,                    /* number of traps on this segment, ABS */
 93             2 trap_array      (n_fr_traps refer (fr_traps.n_traps)) aligned,
 94               3 call_relp     fixed bin (18) unsigned unaligned,
 95                                                             /* LINK18, offset of link defining procedure to call */
 96               3 info_relp     fixed bin (18) unsigned unaligned;
 97                                                             /* LINK18, offser of link defining argument list for trap proc */
 98 
 99 declare   FR_TRAPS_VERSION_1  init (1) fixed bin internal static options (constant);
100 declare   FAULT_TAG_1         bit(6) unaligned init ("40"b3) static options (constant);
101 declare   FAULT_TAG_2         bit(6) unaligned init ("46"b3) static options (constant);
102 declare   FAULT_TAG_3         bit(6) unaligned init ("47"b3) static options (constant);
103 
104 /* END INCLUDE FILE object_link_dcls.incl.pl1 */