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 */