COMPILATION LISTING OF SEGMENT decode_link_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Multics Op. - System M Compiled on: 11/20/86 1219.3 mst Thu Options: optimize list 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 7 /****^ HISTORY COMMENTS: 8* 1) change(85-09-24,Elhard), approve(85-09-24,MCR7198), 9* audit(86-06-30,Weaver), install(86-07-16,MR12.0-1094): 10* Improved documentation and readability and changed errname to use a caller 11* supplied value instead of "binder_". 12* END HISTORY COMMENTS */ 13 14 /* format: style3,^indnoniterdo */ 15 16 /* ****************************************************** 17* * * 18* * * 19* * Copyright (c) 1972 by Massachusetts Institute of * 20* * Technology and Honeywell Information Systems, Inc. * 21* * * 22* * * 23* ****************************************************** */ 24 25 26 /********************************************************************/ 27 /* */ 28 /* Name: decode_link_ */ 29 /* Input: structure_ptr */ 30 /* Function: given the offset of a link in the linkage section */ 31 /* (from loffset in ext), extract the following */ 32 /* information from the link: */ 33 /* Tm modifier - from tag field of link */ 34 /* stored in ext.link_tm */ 35 /* Td modifier - from tag field of link */ 36 /* store in ext.link_td */ 37 /* expression value - from expression word in */ 38 /* definition section */ 39 /* store in ext.expr */ 40 /* link type - from type-pair in defn scn */ 41 /* store in ext.type */ 42 /* trap pointer - from type-pair in defn scn */ 43 /* store in ext.trap */ 44 /* segname - from segname ACC string in */ 45 /* defn scn or decoded from */ 46 /* type and segpointer: */ 47 /* tp 1, sp 0 = *text */ 48 /* tp 1, sp 1 = *link */ 49 /* tp 1, sp 2 = *symbol */ 50 /* tp 1, sp 4 = *static */ 51 /* tp 5, sp 5 = *system */ 52 /* tp 5 = component filename */ 53 /* other = segname ACC str */ 54 /* store in ext.segname */ 55 /* entryname - from entryname ACC string */ 56 /* for type 4, 5, 6 links only */ 57 /* store in ext.entryname */ 58 /* The flag ext.dont_prelink is also set for *system */ 59 /* links since they must remain external */ 60 /* Output: code */ 61 /* */ 62 /********************************************************************/ 63 64 /* Designed and coded by Michael J. Spier February 13,1971 */ 65 /* modified 6/20/75 by M. Weaver for separate static */ 66 /* modified 10/22/76 by M. Weaver for *system */ 67 68 69 decode_link_: 70 procedure (structure_ptr, code); 71 72 declare structure_ptr pointer, 73 code bit (1) aligned; 74 75 76 77 /* DECLARATION OF EXTERNAL ENTRIES */ 78 79 declare com_err_ external entry options (variable); 80 81 /* DECLARATION OF INTERNAL STATIC VARIABLES */ 82 83 declare errname char (16) aligned internal static; 84 85 /* DECLARATION OF AUTOMATIC STORAGE VARIABLES */ 86 87 declare (i, type) fixed bin (18); 88 declare (extp, defptr) pointer; 89 declare (linkp, expp, typep, ACCp) 90 pointer; 91 92 /* DECLARATION OF BUILTIN FUNCTIONS */ 93 94 declare (addr, addrel, bit, index, substr, unspec) 95 builtin; 96 97 /* DECLARATION OF BASED STRUCTURES */ 98 99 declare 1 ext aligned based (extp) like external_ref; 100 101 102 declare 1 link aligned like object_link based (linkp); 103 declare 1 exp aligned like exp_word based (expp); 104 declare 1 loffset_overlay aligned based (addr (ext.loffset)), 105 2 dum bit (35) unaligned, 106 2 odd bit (1) unaligned; 107 declare 1 type_pr aligned like type_pair based (typep); 108 declare 1 segname_ACC aligned based (addr (ext.segname)) like acc_string; 109 declare 1 entryname_ACC aligned based (addr (ext.entryname)) like acc_string; 110 declare 1 ACC aligned like acc_string based (ACCp); 111 declare segname_overlay bit (297) aligned based (addr (ext.segname)); 112 declare entryname_overlay bit (2313) aligned based (addr (ext.entryname)); 113 114 115 /* */ 116 1 1 /* BEGIN INCLUDE FILE object_link_dcls.incl.pl1 BIM 1981 from linkdcl */ 1 2 1 3 1 4 /****^ HISTORY COMMENTS: 1 5* 1) change(86-05-02,Elhard), approve(86-05-02,MCR7391), 1 6* audit(86-11-18,Schroth), install(86-11-20,MR12.0-1222): 1 7* Modified to add partial_link structure for an object MSF partially snapped 1 8* link. 1 9* 2) change(86-11-13,DGHowe), approve(86-11-13,MCR7391), audit(86-11-13,Zwick), 1 10* install(86-11-20,MR12.0-1222): 1 11* Added a declaration of FAULT_TAG_1, FAULT_TAG_2 and FAULT_TAG_3. 1 12* END HISTORY COMMENTS */ 1 13 1 14 1 15 /* format: style3 */ 1 16 /* everything you ever wanted in a linkage section */ 1 17 1 18 /* 1 19* Last Modified (Date and Reason): 1 20* 15 Nov 1971 by C Garman 1 21* 6/75 by M.Weaver to add virgin_linkage_header declaration 1 22* 6/75 by S.Webber to comment existing structures better 1 23* 9/77 by M. Weaver to add run_depth to link 1 24* 7/81 by B. Margulies for firstref structure, unsigned fixed bins. 1 25* 3/83 by M. Weaver to add flags overlaying def_ptr 1 26**/ 1 27 1 28 declare 1 object_link based aligned, /* link pair in linkage section */ 1 29 2 header_relp fixed bin (17) unal, /* rel pointer to beginning of linkage, always negative */ 1 30 2 ringno fixed bin (3) unsigned unal, /* MBZ */ 1 31 2 mbz bit (6) unal, 1 32 2 run_depth fixed bin (2) unal, /* run unit depth, filled when link is snapped */ 1 33 2 tag bit (6) unal, /* fault tag. 46(8) if not snapped, 43(8) if snapped */ 1 34 2 expression_relp fixed bin (18) unsigned unal, /* pointer (rel to defs) of expression word */ 1 35 2 mbz2 bit (12) unal, 1 36 2 modifier bit (6) unal; /* modifier to be left in snapped link */ 1 37 1 38 declare 1 partial_link based aligned, /* partially snapped link */ 1 39 2 type fixed bin (3) unsigned unal, /* target section of link */ 1 40 2 component fixed bin (15) unsigned unal, /* target component index */ 1 41 2 mbz1 bit (12) unal, 1 42 2 tag bit (6) unal, /* fault tag 3 47(8), ITS 43(8) if snapped */ 1 43 1 44 2 offset fixed bin (18) unsigned unal, /* word offset of link */ 1 45 2 mbz2 bit (3) unal, 1 46 2 bit_offset fixed bin (6) unsigned unal, /* bit offset (in practice, always 0) */ 1 47 2 mbz3 bit (3) unal, 1 48 2 modifier bit (6) unal; /* modifier to be left in snapped link */ 1 49 1 50 declare 1 linkage_header based aligned, /* linkage block header */ 1 51 2 def_ptr ptr, /* pointer to definition section */ 1 52 2 symbol_ptr ptr unal, /* pointer to symbol section in object segment */ 1 53 2 original_linkage_ptr 1 54 ptr unal, /* pointer to linkage section in object segment */ 1 55 2 unused bit (72), 1 56 2 stats, 1 57 3 begin_links fixed bin (18) unsigned unal, /* offset (rel to this section) of first link */ 1 58 3 block_length fixed bin (18) unsigned unal, /* number of words in this linkage section */ 1 59 3 segment_number 1 60 fixed bin (18) unsigned unal, /* text segment number associated with this section */ 1 61 3 static_length fixed bin (18) unsigned unal; /* number of words of static for this segment */ 1 62 1 63 declare 1 linkage_header_flags 1 64 aligned based, /* overlay of def_ptr for flags */ 1 65 2 pad1 bit (28) unaligned, /* flags are in first word */ 1 66 2 static_vlas bit (1) unaligned, /* static section "owns" some LA/VLA segments */ 1 67 2 perprocess_static 1 68 bit (1) unaligned, /* 1 copy of static section is shared among all tasks/run units */ 1 69 2 pad2 bit (6) unaligned; 1 70 1 71 declare 1 virgin_linkage_header 1 72 aligned based, /* template for linkage header in object segment */ 1 73 2 pad bit (30) unaligned, /* is filled in by linker */ 1 74 2 defs_in_link bit (6) unaligned, /* =o20 if defs in linkage (nonstandard) */ 1 75 2 def_offset fixed bin (18) unsigned unaligned, 1 76 /* offset of definition section */ 1 77 2 first_ref_relp fixed bin (18) unsigned unaligned, 1 78 /* offset of trap-at-first-reference offset array */ 1 79 2 filled_in_later bit (144), 1 80 2 link_begin fixed bin (18) unsigned unaligned, 1 81 /* offset of first link */ 1 82 2 linkage_section_lng 1 83 fixed bin (18) unsigned unaligned, 1 84 /* length of linkage section */ 1 85 2 segno_pad fixed bin (18) unsigned unaligned, 1 86 /* will be segment number of copied linkage */ 1 87 2 static_length fixed bin (18) unsigned unaligned; 1 88 /* length of static section */ 1 89 1 90 declare 1 fr_traps based aligned, /* First Reference Trap Procedures */ 1 91 2 decl_vers fixed bin, /* version of this struc, value=1, ABS reloc */ 1 92 2 n_traps fixed bin, /* number of traps on this segment, ABS */ 1 93 2 trap_array (n_fr_traps refer (fr_traps.n_traps)) aligned, 1 94 3 call_relp fixed bin (18) unsigned unaligned, 1 95 /* LINK18, offset of link defining procedure to call */ 1 96 3 info_relp fixed bin (18) unsigned unaligned; 1 97 /* LINK18, offser of link defining argument list for trap proc */ 1 98 1 99 declare FR_TRAPS_VERSION_1 init (1) fixed bin internal static options (constant); 1 100 declare FAULT_TAG_1 bit(6) unaligned init ("40"b3) static options (constant); 1 101 declare FAULT_TAG_2 bit(6) unaligned init ("46"b3) static options (constant); 1 102 declare FAULT_TAG_3 bit(6) unaligned init ("47"b3) static options (constant); 1 103 1 104 /* END INCLUDE FILE object_link_dcls.incl.pl1 */ 117 118 119 /* */ 120 2 1 /* Begin include file definition_dcls.incl.pl1 BIM 1981 */ 2 2 2 3 2 4 /****^ HISTORY COMMENTS: 2 5* 1) change(86-05-02,Elhard), approve(86-05-02,MCR7391), 2 6* audit(86-07-18,DGHowe), install(86-11-20,MR12.0-1222): 2 7* Modified to add indirect bit to definition flags, add msf_map_relp to the 2 8* definition header, declare the msf_map, and add structures and constants 2 9* for deferred initialization. 2 10* 2) change(86-06-24,DGHowe), approve(86-06-24,MCR7420), 2 11* audit(86-08-05,Schroth), install(86-11-20,MR12.0-1222): 2 12* added the structures for pointer initialization. pointer_init_template. 2 13* changed list_template_entry 2 14* END HISTORY COMMENTS */ 2 15 2 16 2 17 /* Modified: */ 2 18 /* 13 Dec 1982 by Lee A. Newcomb to put definition_header.hash_table_relp */ 2 19 /* after unused half-word instead of before it. */ 2 20 /* 1 March 1983 by M. Weaver to add list template init type */ 2 21 2 22 /* format: style3,idind25 */ 2 23 /* everything for the definition section */ 2 24 2 25 declare ( 2 26 CLASS_TEXT init (0), /* text section definition */ 2 27 CLASS_LINKAGE init (1), /* linkage section definition */ 2 28 CLASS_SYMBOL init (2), /* symbol section definition */ 2 29 CLASS_SEGNAME init (3), /* segment name definition */ 2 30 CLASS_STATIC init (4), /* static section definition */ 2 31 CLASS_SYSTEM init (5), /* valid only in self links, not def class */ 2 32 CLASS_HEAP init (6) /* valid only in self links, not def class */ 2 33 ) fixed bin (3) unsigned internal static options (constant); 2 34 2 35 declare CLASS_NAMES (0:6) character (12) internal static options (constant) 2 36 init ("text", "linkage", "symbol", "segname", "static", "system", "heap"); 2 37 2 38 declare SYMBOLIC_SECTION_NAMES (0:6) character (8) 2 39 init ("*text", "*link", "*symbol", *, "*static", "*system", "*heap") internal static 2 40 options (constant); 2 41 2 42 declare 1 definition_flags unaligned based, 2 43 2 new bit (1), /* should be "1"b */ 2 44 2 ignore bit (1), /* cannot snap link to this */ 2 45 2 entry bit (1), /* can tra here */ 2 46 2 retain bit (1), /* binder respects this */ 2 47 2 argcount bit (1), /* OBSOLETE */ 2 48 2 descriptors bit (1), /* OBSOLETE */ 2 49 2 indirect bit (1), /* target is a pointer to actual target */ 2 50 2 unused bit (8); /* Must be zero */ 2 51 2 52 2 53 2 54 2 55 /* Header of the definition section */ 2 56 2 57 declare def_header_ptr pointer; 2 58 declare 1 definition_header aligned based (def_header_ptr), 2 59 2 def_list_relp fixed bin (18) unsigned unaligned, 2 60 /* first definition, reloc def18 */ 2 61 2 msf_map_relp fixed bin (18) unsigned unaligned, 2 62 /* msf_map if any, or 0 if none. reloc def18 unless none */ 2 63 2 hash_table_relp fixed bin (18) unsigned unaligned, 2 64 /* def hash table, if any, or 0 if none. reloc def18 unless none */ 2 65 2 flags unaligned like definition_flags; 2 66 /* both new and ignore must be "1"b here */ 2 67 2 68 /* A non class=3 definition. See segname_definition below for class=3 */ 2 69 2 70 2 71 declare def_ptr pointer; 2 72 declare 1 definition aligned based (def_ptr), 2 73 2 forward_relp unal fixed bin (18) unsigned, 2 74 /* offset of next def */ 2 75 2 backward_relp unal fixed bin (18) unsigned, 2 76 /* offset of previous def */ 2 77 2 thing_relp unal fixed bin (18) unsigned, 2 78 /* offset in section specified by class of thing this defines */ 2 79 2 flags unaligned like definition_flags, 2 80 2 class unal fixed bin (3) unsigned, 2 81 /* Type of definition */ 2 82 2 name_relp unal fixed bin (18) unsigned, 2 83 /* offset of ACC for symbol */ 2 84 2 segname_relp unal fixed bin (18) unsigned; 2 85 /* offset of segname def to which this belongs */ 2 86 2 87 /* Class=3, segname definition */ 2 88 2 89 declare segname_ptr pointer; 2 90 declare 1 segname_definition aligned based (segname_ptr), 2 91 2 forward_relp unal fixed bin (18) unsigned, 2 92 /* offset of next def */ 2 93 2 backward_relp unal fixed bin (18) unsigned, 2 94 /* offset of previous def */ 2 95 2 next_segname_relp unal fixed bin (18) unsigned, 2 96 /* offset of next segname def */ 2 97 2 flags unaligned like definition_flags, 2 98 2 class unal fixed bin (3) unsigned, 2 99 /* 3 for segname */ 2 100 2 name_relp unal fixed bin (18) unsigned, 2 101 /* offset of ACC for symbol */ 2 102 2 first_relp unal fixed bin (18) unsigned; 2 103 /* see following : */ 2 104 2 105 /* Definition blocks are chained off of segname definitions. 2 106* segname_definition.first_relp is one of three things: 2 107* (1) the def section offset of the first ordinary (class^=3) definition 2 108* belonging to this segname block. In the case where there are more than 2 109* one segname's on a block, all their first_relp will point 2 110* to the same place. 2 111* 2 112* (2) if there are no ordinary definitions associated with this segname, 2 113* then it is the def section offset of the next segname. 2 114* 2 115* (3) if there are no ordinary definitions in the block, and it 2 116* is the last block, then it points to a word containing 0. 2 117* 2 118* Thus the end of a list of synonym segnames can be detected by forward_relp 2 119* pointing to a class=3 definition whose first_relp is not the same as 2 120* the current definitions first_relp. 2 121**/ 2 122 2 123 /* All the definitions are linked through the forward and 2 124* backward thread variables. The end of the chain can is indicated 2 125* by forward pointing to a zero word. */ 2 126 2 127 2 128 declare exp_ptr pointer; 2 129 declare 1 exp_word based (exp_ptr) aligned, /* expression word in link definition */ 2 130 2 type_relp fixed bin (18) unsigned unal, 2 131 /* pointer (rel to defs) of type pair structure */ 2 132 2 expression fixed bin (17) unal; /* constant expression to be added in when snapping link */ 2 133 2 134 declare ( 2 135 LINK_SELF_BASE init (1), /* *section|0+expression,modifier */ 2 136 /* which section determined by segname_relp */ 2 137 LINK_OBSOLETE_2 init (2), /* not used */ 2 138 LINK_REFNAME_BASE init (3), /* refname|0+expression,modifier */ 2 139 LINK_REFNAME_OFFSETNAME init (4), /* refname|offsetname+expression,modifier */ 2 140 LINK_SELF_OFFSETNAME init (5), /* *section|offsetname+expression,modifier */ 2 141 LINK_CREATE_IF_NOT_FOUND init (6), /* OBSOLETE: like LINK_REFNAME_OFFSETNAME except that it will create instead of taking linkage_error */ 2 142 SECTION_TEXT init (0), /* *text */ 2 143 SECTION_LINK init (1), /* *link */ 2 144 SECTION_SYMBOL init (2), /* *symbol */ 2 145 SECTION_UNUSED init (3), /* reserved */ 2 146 SECTION_STATIC init (4), /* *static */ 2 147 SECTION_SYSTEM init (5), /* *system */ 2 148 SECTION_HEAP init (6) /* *heap */ 2 149 ) fixed bin (18) unsigned unaligned internal static options (constant); 2 150 2 151 /* use CLASS_NAMES for section names */ 2 152 2 153 declare LINK_TYPE_NAMES (1:6) 2 154 init ("absolute in section", "unused", "absolute off of refname", 2 155 "symbolic off of refname", "symbolic in section", "symbolic off of refname; create") 2 156 character (32) varying internal static options (constant); 2 157 2 158 2 159 declare type_ptr pointer; 2 160 declare 1 type_pair based (type_ptr) aligned,/* type pair in link definition */ 2 161 2 type fixed bin (18) unsigned unal, 2 162 /* see above */ 2 163 2 trap_relp fixed bin (18) unsigned unal, 2 164 /* pointer (rel to defs) to the trap word */ 2 165 /* unless LINK_SELF_OFFSETNAME off of *system or create link */ 2 166 2 segname_relp fixed bin (18) unsigned unal, 2 167 /* pointer (rel to defs) to ACC reference name for segment referenced, 2 168* /*or section code for SELF links */ 2 169 2 offsetname_relp fixed bin (18) unsigned unal; 2 170 /* for OFFSETNAME links, ACC string of name of location. */ 2 171 /* for others, must be ZERO */ 2 172 2 173 2 174 /* Link Trap Pair */ 2 175 2 176 declare link_trap_ptr pointer; 2 177 declare 1 link_trap_pair aligned based (link_trap_ptr), 2 178 2 call_relp fixed bin (18) unsigned unaligned, 2 179 /* LINK18, link to thing to call */ 2 180 2 info_relp fixed bin (18) unsigned unaligned; 2 181 /* LINK18, link to argument list */ 2 182 2 183 2 184 /* initialization info for *system or *heap link */ 2 185 2 186 2 187 /* NOTE -------------------------------------------------- 2 188* the following structures defining initialization information are also 2 189* defined in fortran_storage.incl.pl1 system_link_init_info.incl.pl1 2 190* and should be kept equivalent 2 191* ------------------------------------------------------- 2 192**/ 2 193 2 194 declare ( 2 195 INIT_NO_INIT init (0), 2 196 INIT_COPY_INFO init (3), 2 197 INIT_DEFINE_AREA init (4), 2 198 INIT_LIST_TEMPLATE init (5), 2 199 INIT_DEFERRED init (6) 2 200 ) fixed bin internal static options (constant); 2 201 2 202 /* for type = 0 or 4 */ 2 203 2 204 declare link_init_ptr pointer; 2 205 declare 1 link_init aligned based (link_init_ptr), 2 206 2 n_words fixed bin (35), /* number to invent */ 2 207 2 type fixed bin; /* see types above */ 2 208 2 209 /* for type=3, there is data to copy */ 2 210 2 211 declare 1 link_init_copy_info aligned based (link_init_ptr), 2 212 2 header aligned like link_init, 2 213 2 initial_data (link_init_n_words refer (link_init_copy_info.header.n_words)) bit (36) aligned; 2 214 2 215 declare link_init_n_words fixed bin; 2 216 2 217 /* for type = 5, there is a list template to copy */ 2 218 2 219 declare 1 link_init_list_template 2 220 aligned based (link_init_ptr), 2 221 2 header aligned like link_init, 2 222 2 pad bit (18) unaligned, 2 223 2 n_words_in_list fixed bin (18) unsigned unaligned, 2 224 2 template (link_init_n_words_in_list refer (link_init_list_template.n_words_in_list)); 2 225 2 226 declare link_init_n_words_in_list 2 227 fixed bin; 2 228 2 229 /* A list template consists of a series of entries with the following 2 230* description, concatenated together. n_bits and datum are bit items, 2 231* to permit a wide range of inputs. 2 232* 2 233* 1. A 'repeat' of '0' signifies skipping of 'n_bits' bits. 2 234* 2. A 'n_bits' of '0' signifies the last item of the list. 2 235* 2 236* COMMON, VLA's, and LA's are presumed to start at the base pointer 2 237* of their particular storage section. */ 2 238 2 239 declare 1 list_template_entry aligned based, 2 240 2 n_bits fixed bin (35) aligned, /* size of datum */ 2 241 2 mbz bit (3) unaligned, /* future expansion */ 2 242 2 init_type fixed bin (3) unsigned unaligned, /* 0 normal init, 1 ptr init, 2 packed ptr init */ 2 243 2 repeat fixed bin (30) unsigned unaligned, 2 244 /* number of times to repeat datum */ 2 245 2 datum bit (link_init_n_bits_in_datum refer (list_template_entry.n_bits)); 2 246 2 247 2 248 /* the pointer_init_template represents the initialization information 2 249* for ITS and packed pointers. Both pointer types require the entire 2 250* 72 bit structure. 2 251**/ 2 252 2 253 dcl 1 pointer_init_template based, 2 254 2 ptr_type fixed bin (18) unsigned unaligned, /* 0 text section, 1 linkage section, 2 static section */ 2 255 2 section_offset fixed bin (18) unsigned unaligned, /* offset to item in specified section */ 2 256 2 word_offset fixed bin (18) unsigned unaligned, /* offset from section item to target in words */ 2 257 2 mbz bit (12) unaligned, 2 258 2 bit_offset fixed bin (6) unsigned unaligned; /* offset from section item|word offset to target in bits */ 2 259 2 260 2 261 declare link_init_n_bits_in_datum 2 262 fixed bin (35); 2 263 2 264 /* for type = 6, the init_info resides in another MSF component */ 2 265 /* target_relp is a linkage section offset to a partial link to */ 2 266 /* the base of the linkage section of the component containing */ 2 267 /* the actual init_info. link_relp is the offset of the actual */ 2 268 /* link within that linkage section. */ 2 269 2 270 declare 1 link_init_deferred aligned based (link_init_ptr), 2 271 2 header aligned like link_init, 2 272 2 target_relp fixed bin (18) unsigned unaligned, 2 273 2 link_relp fixed bin (18) unsigned unaligned; 2 274 2 275 /* Definition section hash table */ 2 276 2 277 declare def_ht_ptr pointer; 2 278 declare 1 definition_ht aligned based (def_ht_ptr), 2 279 2 n_entries fixed bin, 2 280 2 table (def_ht_n_entries refer (definition_ht.n_entries)) aligned, 2 281 3 def_relp fixed bin (18) unsigned unaligned, 2 282 3 unused bit (18) unaligned; 2 283 2 284 declare def_ht_n_entries fixed bin; 2 285 2 286 2 287 /* Component name ht */ 2 288 declare comp_ht_ptr pointer; 2 289 declare 1 component_ht aligned based (comp_ht_ptr), 2 290 2 n_entries fixed bin, 2 291 2 table (comp_ht_n_entries refer (component_ht.n_entries)) aligned, 2 292 3 def_relp fixed bin (18) unsigned unaligned, 2 293 /* hashed segname */ 2 294 3 block_hdr_relp fixed bin (18) unsigned unaligned; 2 295 /* first segname def of block containing def_relp */ 2 296 2 297 declare comp_ht_n_entries fixed bin; 2 298 2 299 /* Duplicate name table */ 2 300 2 301 declare dup_table_ptr pointer; 2 302 declare 1 duplicate_table aligned based (dup_table_ptr), 2 303 2 mbz bit (18) unaligned, /* to tell it from a definition */ 2 304 2 n_names fixed bin (18) unsigned unaligned, 2 305 /* n in table */ 2 306 2 table (dup_table_n_names refer (duplicate_table.n_names)) aligned, 2 307 3 def_relp fixed bin (18) unsigned unaligned, 2 308 3 block_hdr_relp fixed bin (18) unsigned unaligned; 2 309 2 310 declare dup_table_n_names fixed bin; 2 311 2 312 /* The msf_map is found in the definition section of an */ 2 313 /* object MSF component. It is used by the linker to */ 2 314 /* determine whether a segment is a component of an object */ 2 315 /* MSF or a standard single-segment object. */ 2 316 2 317 dcl msf_map_ptr ptr; 2 318 dcl 01 msf_map aligned based (msf_map_ptr), 2 319 02 version char (8), 2 320 02 component_count fixed bin (15) unsigned, 2 321 02 my_component fixed bin (15) unsigned; 2 322 2 323 dcl msf_map_version_1 char (8) static options (constant) 2 324 init ("msfmp1.0"); 2 325 2 326 declare acc_string_ptr pointer; 2 327 declare 1 acc_string aligned based (acc_string_ptr), 2 328 2 count fixed bin (9) unsigned unaligned, 2 329 2 string character (max (3, acc_string_length) refer (acc_string.count)) unaligned, 2 330 2 mbz bit (0) aligned; /* this causes the statement */ 2 331 /* unspec (acc_string) = ""b to zero out */ 2 332 /* the last word, if the string is not of length 0mod4 */ 2 333 2 334 declare acc_string_length fixed bin (21); 2 335 2 336 2 337 /* end include file definitions_dcls.incl.pl1 */ 121 122 123 /* */ 124 3 1 3 2 /* the following is include file extref.incl.pl1 */ 3 3 3 4 3 5 /****^ HISTORY COMMENTS: 3 6* 1) change(85-09-24,Elhard), approve(85-09-24,MCR7198), 3 7* audit(86-06-30,Weaver), install(86-07-16,MR12.0-1094): 3 8* changed to be a complete structure rather than a starting with a level 2 3 9* variable. 3 10* END HISTORY COMMENTS */ 3 11 3 12 declare 1 external_ref aligned based, 3 13 2 compent_ptr pointer, /* pointer to referencing component's entry */ 3 14 2 ref_ptr pointer, /* pointer to referencing textword */ 3 15 2 offset fixed bin(18), /* offset of referencing instruction in text */ 3 16 2 side char(3) aligned, /* 'rhe' or 'lhe' for referencing halfword */ 3 17 2 relinfo char(8) aligned, /* symbolic relocation information */ 3 18 2 section char(4) aligned, /* referencing section of object */ 3 19 2 loffset fixed bin, /* link's offset in linkage section */ 3 20 2 segname char(33) aligned, /* segname part of external name */ 3 21 2 slng fixed bin, /* length of preceeding ACC string (incl count) */ 3 22 2 entryname char(257) aligned, /* entry part of external name */ 3 23 2 elng fixed bin, /* length of preceeding ACC string (incl count) */ 3 24 2 type bit(18) unaligned, /* type of link */ 3 25 2 trap bit(18) unaligned, /* trap before link if non-zero */ 3 26 2 expr bit(18) unaligned, /* the expression value */ 3 27 2 code15 bit(18) unaligned, /* if type of link is 1 or 5, this is the segbase code */ 3 28 2 dont_prelink bit(1) unaligned, /* if = "1" then dont snap internal link */ 3 29 2 link_tm bit(2) unaligned, /* the original link's TM modifier */ 3 30 2 link_td bit(4) unaligned, /* the original link's TD modifier */ 3 31 2 dont_relocate bit (1) unaligned, /* "1"b -> no referencing instruction */ 3 32 2 padding(2) fixed bin; /* to isolate from other variables */ 125 126 127 /* */ 128 4 1 /**** START OF: bindext.incl.pl1 * * * * * */ 4 2 4 3 4 4 /****^ HISTORY COMMENTS: 4 5* 1) change(86-06-14,Elhard), approve(86-06-14,MCR7198), 4 6* audit(86-06-30,Weaver): 4 7* Added declarations for bx_$caller and bx_$temp_bsegp. 4 8* END HISTORY COMMENTS */ 4 9 4 10 /* DECLARATION OF BINDER'S MAIN DATABASE */ 4 11 4 12 /* include file bindext.incl.pl1 */ 4 13 4 14 /* Modified Sept 1978 by David Spector for using "get_temp_segment_" in temp_mgr_ */ 4 15 /* Modified Dec 1978 by David Spector for making repatch table automatically extensible */ 4 16 /* Modified 01/15/81 W. Olin Sibert for new options */ 4 17 4 18 declare bx_$vers_name char (168) aligned external; /* ASCII version name, in ACC form */ 4 19 declare bx_$vers_number fixed bin external; /* integer part of version number */ 4 20 declare bx_$size fixed bin external; /* size of main data base, for resetting */ 4 21 declare bx_$snt_limit fixed bin external; /* preset limit for segname table */ 4 22 declare bx_$oddname_limit fixed bin external; /* preset limit for oddname table */ 4 23 declare bx_$stringmap_limit fixed bin external; /* preset limit for stringmap table */ 4 24 declare bx_$addname_limit fixed bin external; /* preset limit for addname table */ 4 25 declare bx_$area_begin fixed bin (18) external; /* beginningcremental_volume_dumper: Processed bull04: 0 0 0 0 5$ TY<vinc incremental_volume_dumper: Processed bull05: 0 0 0 0 8$ TY5<vinc incremental_volume_dumper: Processed pub_01: 0 0 0 0 0$ TYT<vinc incremental_volume_dumper: Processed pub_02: 0 0 0 0 0$ TY<vinc incremental_volume_dumper: Processed pub_03: 0 0 1 1 0$ TY샙<vinc incremental_volume_dumper: Processed pub_04: 0 0 1 1 0$ TY <vinc incremental_volume_dumper: Processed pub_05: 0 0 2 1 0$ TY<vinc incremental_volume_dumper: Processed pub_06: 0 0 0 0 0$ TY <vinc incremental_volume_dumper: Processed pub_07: 0 0 0 0 0$ TYR<vinc incremental_volume_dumper: Processed pub_08: 0 0 0 0 0$ TY?;vinc incremental_volume_dumper: Processed abb01: 0 0 0 0 0$ TY-;vinc incremental_volume_dumper: Processed abb02: 0 0 0 0 0$ TYr;vinc incremental_volume_dumper: Processed abb03: 0 0 0 0 0$ TY ;vinc incremental_volume_dumper: Processed abb04: 0 0 0 0 0$ TYs;vinc incremental_volume_dumper: Processed abb05: 0 0 0 0 0$ TY;vinc incremental_volume_dumper: Processed abb06: 0 0 0 0 0$ TZJ;vinc incremental_volume_dumper: Processed abb07: 0 0 0 0 0$ TZ;vinc incremental_volume_dumper: Processed abb08: 0 0 0 0 0$ TZS8vinc incremental_volume_dumper: Dump finished at 0430.4$ TZl6vinc incremental_volume_dumper: Dumper going to sleep$ T 4vinc wakeup_volume_dump: Dumper waking up at 0710.4$ T@K.7vinc wakeup_volume_dump: Processed rpv: 76 12 260 26 5$ Ts";vinc wakeup_volume_dump: Processed root_01: 83 14 568 36 7$ Tc<vinc wakeup_volume_dump: Processed root_02: 147 23 236 30 5$ T;vinc wakeup_volume_dump: Processed root_03: 51 18 807 34 4$ T=vinc wakeup_volume_dump: Processed root_04: 122 16 170 26 10$ !T5vinc wakeup_volume_dump: Processed tr01: 0 0 40 3 16$ "T$8vinc wakeup_volume_dump: Processed bull01: 0 0 119 2 12$ #T'85vinc wakeup_volume_dump: Processed bull02: 0 0 0 0 9$ $T*)6vinc wakeup_volume_dump: Processed bull03: 0 0 0 0 12$ %T-c6vinc wakeup_volume_dump: Processed bull04: 0 0 0 1 10$ &T0o6vinc wakeup_volume_dump: Processed bull05: 0 0 0 1 14$ 'T2W5vinc wakeup_volume_dump: Processed pub_01: 0 0 0 0 0$ (T45vinc wakeup_volume_dump: Processed pub_02: 0 0 0 0 0$ )T65vinc wakeup_volume_dump: Processed pub_03: 0 0 2 2 0$ *T8w?5vinc wakeup_volume_dump: Processed pub_04: 0 0 1 1 0$ +T:5vinc wakeup_volume_dump: Processed pub_05: 0 0 0 0 0$ ,T>a-6vinc wakeup_volume_dump: Processed pub_06: 0 0 19 1 0$ -T@5vinc wakeup_volume_dump: Processed pub_07: 0 0 0 0 0$ .TBZ5vinc wakeup_volume_dump: Processed pub_08: 0 0 0 0 0$ /TJZ6vinc wakeup_volume_dump: Processed abb01: 0 0 31 2 19$ 0TN5vinc wakeup_volume_dump: Processed abb02: 0 0 2 2 18$ 1TS5vinc wakeup_volume_dump: Processed abb03: 0 0 4 2 29$ 2TW5vinc wakeup_volume_dump: Processed abb04: 0 0 7 2 14$ 3Tk\7vinc wakeup_volume_dump: Processed abb05: 0 0 133 4 19$ 4To?5vinc wakeup_volume_dump: Processed abb06: 0 0 1 2 16$ 5Ts5vinc wakeup_volume_dump: Processed abb07: 0 0 4 4 13$ 6Tx?d6vinc wakeup_volume_dump: Processed abb08: 0 0 14 3 18$ 7TxY1vinc wakeup_volume_dump: Dump finished at 0712.0$ 8Ty/vinc wakeup_volume_dump: Dumper going to sleep$ 9Tz)+@vinc end_volume_dump: Finisurrent length of new definition section */ 4 70 declare bx_$tintlng fixed bin external; /* current length of new internal static */ 4 71 declare bx_$maxlinklng fixed bin external; /* maximum size linkage section may attain */ 4 72 declare bx_$maxdeflng fixed bin (18) external; /* maximum size definition section may attain */ 4 73 declare bx_$tlinklng fixed bin external; /* current size of linkage section */ 4 74 declare bx_$ncomp fixed bin external; /* number of component objects to be bound */ 4 75 declare bx_$v_lng fixed bin external; /* length of version name string */ 4 76 declare bx_$n_lng fixed bin external; /* length of bound segment name string */ 4 77 declare bx_$nsymdefs fixed bin external; /* count of non-null symbol definitions */ 4 78 declare bx_$nsegdefs fixed bin external; /* count of non-null segment name definitions */ 4 79 declare bx_$temp_bsegp ptr external; /* pointer to the temporary bound seg in the process dir */ 4 80 declare bx_$caller char (32) aligned external; /* name of the caller of bind_ for error messages */ 4 81 4 82 /**** END OF: bindext.incl.pl1 * * * * * */ 129 130 131 /* */ 132 5 1 /* Include file comptbl.incl.pl1 */ 5 2 5 3 5 4 /****^ HISTORY COMMENTS: 5 5* 1) change(85-09-24,Elhard), approve(85-09-24,MCR7198), 5 6* audit(86-06-30,Weaver), install(86-07-16,MR12.0-1094): 5 7* added link_regeneration_table pointer (clrtp) to component structure. 5 8* END HISTORY COMMENTS */ 5 9 5 10 declare (ctp, ctep) pointer; 5 11 5 12 declare comp_tbl(1000) pointer based(ctp); 5 13 5 14 5 15 5 16 declare 1 comp aligned based(ctep), /* declaration of a component entry */ 5 17 2 filename char(32) aligned, /* object segment's file name */ 5 18 2 compiler char(8) aligned, /* name of compiler which produced this object */ 5 19 2 format char(8) aligned, /* format of object code (PL/1, ALM etc.) */ 5 20 5 21 2 ctxtp pointer, /* pointer to base of text section */ 5 22 2 cdefp pointer, /* pointer to definitions */ 5 23 2 cstatp pointer, /* pointer to static section */ 5 24 2 clnkp pointer, /* pointer to head of linkage section */ 5 25 2 csymp pointer, /* pointer to symbol table */ 5 26 2 cfrtp pointer, /* pointer to first ref trap array */ 5 27 2 crltp pointer, /* pointer to rel-text */ 5 28 2 crllp pointer, /* pointer to rel-link */ 5 29 2 crlsp pointer, /* pointer to rel-symb */ 5 30 2 insymentp pointer, /* pointer to this component's insym table entry */ 5 31 2 clrtp pointer, /* pointer to link_regeneration_table */ 5 32 2 unused_1 pointer, /* reserve */ 5 33 2 unused_2 pointer, /* reserve */ 5 34 2 unused_3 fixed bin, /* reserve */ 5 35 2 cindex fixed bin, /* this entry's index in table */ 5 36 2 standard_object fixed bin, /* 1 -> this object has standard format */ 5 37 2 defthread fixed bin, /* beginning of comp's definition block */ 5 38 2 fn_lng fixed bin, /* length of filename string */ 5 39 2 ignore fixed bin, /* 1->ignore erroneous entry */ 5 40 2 io_table fixed bin, /* 1 -> symbol table needed for io */ 5 41 2 table_deleted fixed bin, /* 1 -> symbol table is being deleted */ 5 42 2 separate_static fixed bin, /* 1 -> component has nonzero separate static */ 5 43 (2 defblockp, /* rel pointer to component's definition block */ 5 44 2 current_def) bit(18) unaligned, /* rel pointer to component's current def */ 5 45 2 cbitcount fixed bin(24), /* bitcount of component segment */ 5 46 2 clngt fixed bin(18), /* length of pure text section */ 5 47 2 cpadt fixed bin, /* number of added padwords for text */ 5 48 2 clngd fixed bin(18), /* length of definition section */ 5 49 2 clngi fixed bin, /* length of internal static */ 5 50 2 cpadi fixed bin, /* number of added padwords for internal static */ 5 51 2 clngs fixed bin(18), /* length of original symbol table */ 5 52 2 clngns fixed bin(18), /* length of new symb section stripped of relbits */ 5 53 2 clngss fixed bin(18), /* length of symbol section minus relbits and table */ 5 54 2 cpads fixed bin, /* padding length if section length is odd */ 5 55 2 n_sym_blks fixed bin, /* number of symbol blocks */ 5 56 5 57 2 crelt fixed bin, /* relocation value for text */ 5 58 2 creli fixed bin, /* relocation value for internal static */ 5 59 2 crels fixed bin, /* relocation value for symbol section */ 5 60 2 last_item fixed bin; /*** MUST ALWAYS BE LAST IN STRUCTURE ***/ 5 61 5 62 5 63 133 134 135 /* */ 136 137 138 extp = structure_ptr; /* copy pointer to external ref structure */ 139 ctep = ext.compent_ptr; /* copy argument into stack for efficiency */ 140 defptr = comp.cdefp; /* copy pointer to component object's def section */ 141 code = "0"b; /* reset return value */ 142 143 144 145 if loffset_overlay.odd 146 then /* compiler error,should refer to an even location */ 147 do; 148 call com_err_ (0, errname, "^a|^o of ^a referencing odd location in linkage section.", ext.section, 149 ext.offset, comp.filename); 150 goto error_skip; 151 end; 152 linkp = addrel (comp.clnkp, ext.loffset); /* pointer to link fault */ 153 if link.tag ^= "100110"b 154 then do; 155 call com_err_ (0, errname, "link|^o referenced by ^a|^o of ^a not linkfault (46)8.", ext.loffset, 156 ext.section, ext.offset, comp.filename); 157 goto error_skip; 158 end; 159 ext.link_tm = substr (link.modifier, 1, 2); /* get link's TM modifier */ 160 ext.link_td = substr (link.modifier, 3, 4); /* get link's TD modifier */ 161 segname_overlay, entryname_overlay = "0"b; /* clear ACC strings */ 162 ext.slng, ext.elng = 0; /* and their respective lengths */ 163 expp = addrel (defptr, link.expression_relp); /* get pointer to expression word */ 164 ext.expr = unspec (exp.expression); /* get expression value */ 165 typep = addrel (defptr, exp.type_relp); /* get pointer to type-pair */ 166 ext.type = bit (type_pr.type); /* get type */ 167 ext.trap = bit (type_pr.trap_relp); /* and trap pointer */ 168 type = type_pr.type; 169 if type ^= 3 170 then if type ^= 4 171 then if type ^= 1 172 then if type ^= 5 173 then if type ^= 6 174 then do; 175 call com_err_ (0, errname, 176 "External link type ^o in link|^o of ^a; not handled by current version.", type, 177 ext.loffset, comp.filename); 178 goto error_skip; 179 end; 180 ext.code15 = bit (type_pr.segname_relp); /* copy types 1 & 5 segbase code */ 181 i = type_pr.segname_relp; /* convert segpointer to fix for type-1 link */ 182 if type = 1 183 then /* *|expr,m link */ 184 do; 185 segname_ACC.count = 5; /* preset char count */ 186 if i = 0 187 then segname_ACC.string = "*text"; 188 else if i = 1 189 then segname_ACC.string = "*link"; 190 else if i = 2 191 then do; 192 segname_ACC.count = 7; 193 segname_ACC.string = "*symbol"; 194 end; 195 else if i = 4 196 then do; 197 segname_ACC.count = 7; 198 segname_ACC.string = "*static"; 199 end; 200 else do; 201 call com_err_ (0, errname, "type-1 link at link|^o of ^a has illegal seg-ptr value ^o", ext.loffset, 202 comp.filename, i); 203 goto error_skip; 204 end; 205 ext.slng = segname_ACC.count + 1; 206 goto extract_symbol; 207 end; 208 if type = 5 209 then /* *|symbol+exp,m link */ 210 do; 211 if i = 5 212 then do; /* *system, not ordinary type 5 */ 213 segname_ACC.count = 7; 214 segname_ACC.string = "*system"; 215 end; 216 else do; /* make segname = filename */ 217 segname_ACC.count = index (comp.filename, " ") - 1; 218 segname_ACC.string = substr (comp.filename, 1, segname_ACC.count); 219 end; 220 ext.slng = segname_ACC.count + 1; /* length of entire ACC string (incl. count) */ 221 goto extract_symbol; 222 end; /* get pointer to segment name */ 223 ACCp = addrel (defptr, type_pr.segname_relp); 224 segname_ACC.count = ACC.count; /* get ACC string length */ 225 if segname_ACC.count > 32 226 then /* string too long */ 227 do; 228 call com_err_ (0, errname, "external segname ^a longer than 32 chars; segname truncated.", ACC.string); 229 segname_ACC.count = 32; 230 end; 231 ext.slng = segname_ACC.count + 1; /* store length in structure */ 232 /* and copy string into structure */ 233 segname_ACC.string = substr (ACC.string, 1, segname_ACC.count); 234 extract_symbol: 235 if type = 4 | type = 5 | type = 6 236 then /* there is an entryname */ 237 do; 238 ACCp = addrel (defptr, type_pr.offsetname_relp); 239 entryname_ACC.count = ACC.count; 240 if entryname_ACC.count > 256 241 then do; 242 call com_err_ (0, errname, "external entryname ^a longer than 256 chars; entryname truncated.", 243 ACC.string); 244 entryname_ACC.count = 256; 245 end; 246 ext.elng = entryname_ACC.count + 1; 247 entryname_ACC.string = substr (ACC.string, 1, entryname_ACC.count); 248 end; /* *system must be external */ 249 if ((type = 5) & (i = 5)) 250 then ext.dont_prelink = "1"b; 251 252 return; 253 254 error_skip: 255 code = "1"b; /* error occurred, return code */ 256 return; 257 258 init: 259 entry; /* set error message caller name */ 260 if bx_$debug = 1 261 then errname = "decode_link_"; 262 else errname = bx_$caller; 263 264 return; 265 266 end decode_link_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/20/86 1142.2 decode_link_.pl1 >special_ldd>install>MR12.0-1222>decode_link_.pl1 117 1 11/20/86 1035.4 object_link_dcls.incl.pl1 >special_ldd>install>MR12.0-1222>object_link_dcls.incl.pl1 121 2 11/20/86 1035.3 definition_dcls.incl.pl1 >special_ldd>install>MR12.0-1222>definition_dcls.incl.pl1 125 3 07/16/86 1222.1 extref.incl.pl1 >ldd>include>extref.incl.pl1 129 4 07/16/86 1222.1 bindext.incl.pl1 >ldd>include>bindext.incl.pl1 133 5 07/16/86 1222.1 comptbl.incl.pl1 >ldd>include>comptbl.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. ACC based structure level 1 dcl 110 ACCp 000114 automatic pointer dcl 89 set ref 223* 224 228 233 238* 239 242 247 acc_string based structure level 1 dcl 2-327 addr builtin function dcl 94 ref 145 161 161 185 186 188 192 193 197 198 205 213 214 217 218 218 220 224 225 229 231 233 233 239 240 244 246 247 247 addrel builtin function dcl 94 ref 152 163 165 223 238 bit builtin function dcl 94 ref 166 167 180 bx_$caller 000020 external static char(32) dcl 4-80 ref 262 bx_$debug 000016 external static fixed bin(17,0) dcl 4-59 ref 260 cdefp 16 based pointer level 2 dcl 5-16 ref 140 clnkp 22 based pointer level 2 dcl 5-16 ref 152 code parameter bit(1) dcl 72 set ref 69 141* 254* code15 127(18) based bit(18) level 2 packed unaligned dcl 99 set ref 180* com_err_ 000014 constant entry external dcl 79 ref 148 155 175 201 228 242 comp based structure level 1 dcl 5-16 compent_ptr based pointer level 2 dcl 99 ref 139 count based fixed bin(9,0) level 2 in structure "ACC" packed unsigned unaligned dcl 110 in procedure "decode_link_" ref 224 239 count based fixed bin(9,0) level 2 in structure "segname_ACC" packed unsigned unaligned dcl 108 in procedure "decode_link_" set ref 185* 192* 197* 205 213* 217* 218 220 224* 225 229* 231 233 count based fixed bin(9,0) level 2 in structure "acc_string" packed unsigned unaligned dcl 2-327 in procedure "decode_link_" ref 186 188 193 198 214 218 228 228 233 233 242 242 247 247 count based fixed bin(9,0) level 2 in structure "entryname_ACC" packed unsigned unaligned dcl 109 in procedure "decode_link_" set ref 239* 240 244* 246 247 ctep 000116 automatic pointer dcl 5-10 set ref 139* 140 148 152 155 175 201 217 218 definition_flags based structure level 1 packed unaligned dcl 2-42 defptr 000104 automatic pointer dcl 88 set ref 140* 163 165 223 238 dont_prelink 130 based bit(1) level 2 packed unaligned dcl 99 set ref 249* elng 125 based fixed bin(17,0) level 2 dcl 99 set ref 162* 246* entryname 24 based char(257) level 2 dcl 99 set ref 161 239 240 244 246 247 247 entryname_ACC based structure level 1 dcl 109 entryname_overlay based bit(2313) dcl 112 set ref 161* errname 000010 internal static char(16) dcl 83 set ref 148* 155* 175* 201* 228* 242* 260* 262* exp based structure level 1 dcl 103 exp_word based structure level 1 dcl 2-129 expp 000110 automatic pointer dcl 89 set ref 163* 164 165 expr 127 based bit(18) level 2 packed unaligned dcl 99 set ref 164* expression 0(18) based fixed bin(17,0) level 2 packed unaligned dcl 103 ref 164 expression_relp 1 based fixed bin(18,0) level 2 packed unsigned unaligned dcl 102 ref 163 ext based structure level 1 dcl 99 external_ref based structure level 1 dcl 3-12 extp 000102 automatic pointer dcl 88 set ref 138* 139 145 148 148 152 155 155 155 159 160 161 161 162 162 164 166 167 175 180 185 186 188 192 193 197 198 201 205 205 213 214 217 218 218 220 220 224 225 229 231 231 233 233 239 240 244 246 246 247 247 249 filename based char(32) level 2 dcl 5-16 set ref 148* 155* 175* 201* 217 218 i 000100 automatic fixed bin(18,0) dcl 87 set ref 181* 186 188 190 195 201* 211 249 index builtin function dcl 94 ref 217 link based structure level 1 dcl 102 link_init based structure level 1 dcl 2-205 link_td 130(03) based bit(4) level 2 packed unaligned dcl 99 set ref 160* link_tm 130(01) based bit(2) level 2 packed unaligned dcl 99 set ref 159* linkp 000106 automatic pointer dcl 89 set ref 152* 153 159 160 163 loffset 11 based fixed bin(17,0) level 2 dcl 99 set ref 145 152 155* 175* 201* loffset_overlay based structure level 1 dcl 104 modifier 1(30) based bit(6) level 2 packed unaligned dcl 102 ref 159 160 object_link based structure level 1 dcl 1-28 odd 0(35) based bit(1) level 2 packed unaligned dcl 104 ref 145 offset 4 based fixed bin(18,0) level 2 dcl 99 set ref 148* 155* offsetname_relp 1(18) based fixed bin(18,0) level 2 packed unsigned unaligned dcl 107 ref 238 section 10 based char(4) level 2 dcl 99 set ref 148* 155* segname 12 based char(33) level 2 dcl 99 set ref 161 185 186 188 192 193 197 198 205 213 214 217 218 218 220 224 225 229 231 233 233 segname_ACC based structure level 1 dcl 108 segname_overlay based bit(297) dcl 111 set ref 161* segname_relp 1 based fixed bin(18,0) level 2 packed unsigned unaligned dcl 107 ref 180 cremental_volume_dumper: Processed abb03: 0 0 0 0 0$ T;vinc incremental_volume_dumper: Processed abb04: 0 0 0 0 0$ TXY;vinc incremental_volume_dumper: Processed abb05: 0 0 0 0 0$ T#;vinc incremental_volume_dumper: Processed abb06: 0 0 0 0 0$ T ;vinc incremental_volume_dumper: Processed abb07: 0 0 0 0 0$ To/;vinc incremental_volume_dumper: Processed abb08: 0 0 0 0 0$ T8vinc incremental_volume_dumper: Dump finished at 2230.1$ T*}6vinc incremental_volume_dumper: Dumper going to sleep$ T6;vinc incremental_volume_dumper: Dumper waking up at 0128.3$ TMQ=vinc incremental_volume_dumper: Processed rpv: 61 8 250 24 2$ TrOAvinc incremental_volume_dumper: Processed root_01: 55 6 552 30 1$ TtAvinc incremental_volume_dumper: Processed root_02: 39 9 104 24 1$ T3Avinc incremental_volume_dumper: Processed root_03: 20 8 580 28 1$ TAvinc incremental_volume_dumper: Processed root_04: 33 7 106 24 1$ T+;vinc incremental_volume_dumper: Processed tr01: 0 0 1 1 16$ ToN>vinc incremental_volume_dumper: Processed bull01: 0 0 119 2 6$ T?4<vinc incremental_volume_dumper: Processed bull02: 0 0 0 0 3$ Tz<vinc incremental_volume_dumper: Processed bull03: 0 0 0 0 5$ TL<vinc incremental_volume_dumper: Processed bull04: 0 0 0 0 4$ Tȶ<vinc incremental_volume_dumper: Processed bull05: 0 0 0 0 7$ T'<vinc incremental_volume_dumper: Processed pub_01: 0 0 0 0 0$ T=&<vinc incremental_volume_dumper: Processed pub_02: 0 0 0 0 0$ T<vinc incremental_volume_dumper: Processed pub_03: 0 0 1 1 0$ T<vinc incremental_volume_dumper: Processed pub_04: 0 0 1 1 0$ Tb8<vinc incremental_volume_dumper: Processed pub_05: 0 0 0 0 0$ Tӌ'<vinc incremental_volume_dumper: Processed pub_06: 0 0 0 0 0$ T4<vinc incremental_volume_dumper: Processed pub_07: 0 0 0 0 0$ T?^<vinc incremental_volume_dumper: Processed pub_08: 0 0 0 0 0$ T؏;vinc incremental_volume_dumper: Processed abb01: 0 0 0 0 0$ T;vinc incremental_volume_dumper: Processed abb02: 0 0 0 0 0$ T[;vinc incremental_volume_dumper: Processed abb03: 0 0 0 0 0$ Tݐs;vinc incremental_volume_dumper: Processed abb04: 0 0 0 0 0$ T#;vinc incremental_volume_dumper: Processed abb05: 0 0 0 0 0$ TP-;vinc incremental_volume_dumper: Processed abb06: 0 0 0 0 0$ T㵞;vinc incremental_volume_dumper: Processed abb07: 0 0 0 0 0$ T;vinc incremental_volume_dumper: Processed abb08: 0 0 0 0 0$ TA8vinc incremental_volume_dumper: Dump finished at 0129.1$ T6vinc incremental_volume_dumper: Dumper going to sleep$ TY%;vinc incremental_volume_dumper: Dumper waking up at 0428.3$ TYZC>vinc incremental_volume_dumper: Processed rpv: 88 12 454 43 2$ TYZAvinc incremental_volume_dumper: Processed root_01: 59 9 928 57 2$ TYrCvinc incremental_volume_dumper: Processed root_02: 58 12 1007 50 5$ TYCvinc incremental_volume_dumper: Processed root_03: 25 10 1252 58 6$ TYπAvinc incremental_volume_dumper: Processed root_04: 57 9 356 48 2$ TYLM;vinc incremental_volume_dumper: Processed tr01: 0 0 1 1 15$ TY`>vinc incremental_volume_dumper: Processed bull01: 0 0 119 2 6$ TYQ<vinc incremental_volume_dumper: Processed bull02: 0 0 0 0 4$ TYo<vinc incremental_volume_dumper: Processed bull03: 0 0 0 0 3$ TYÒ<vinc in internal static fixed bin(3,0) initial unsigned dcl 2-25 FAULT_TAG_1 internal static bit(6) initial unaligned dcl 1-100 FAULT_TAG_2 internal static bit(6) initial unaligned dcl 1-101 FAULT_TAG_3 internal static bit(6) initial unaligned dcl 1-102 FR_TRAPS_VERSION_1 internal static fixed bin(17,0) initial dcl 1-99 INIT_COPY_INFO internal static fixed bin(17,0) initial dcl 2-194 INIT_DEFERRED internal static fixed bin(17,0) initial dcl 2-194 INIT_DEFINE_AREA internal static fixed bin(17,0) initial dcl 2-194 INIT_LIST_TEMPLATE internal static fixed bin(17,0) initial dcl 2-194 INIT_NO_INIT internal static fixed bin(17,0) initial dcl 2-194 LINK_CREATE_IF_NOT_FOUND internal static fixed bin(18,0) initial unsigned unaligned dcl 2-134 LINK_OBSOLETE_2 internal static fixed bin(18,0) initial unsigned unaligned dcl 2-134 LINK_REFNAME_BASE internal static fixed bin(18,0) initial unsigned unaligned dcl 2-134 LINK_REFNAME_OFFSETNAME internal static fixed bin(18,0) initial unsigned unaligned dcl 2-134 LINK_SELF_BASE internal static fixed bin(18,0) initial unsigned unaligned dcl 2-134 LINK_SELF_OFFSETNAME internal static fixed bin(18,0) initial unsigned unaligned dcl 2-134 LINK_TYPE_NAMES internal static varying char(32) initial array dcl 2-153 SECTION_HEAP internal static fixed bin(18,0) initial unsigned unaligned dcl 2-134 SECTION_LINK internal static fixed bin(18,0) initial unsigned unaligned dcl 2-134 SECTION_STATIC internal static fixed bin(18,0) initial unsigned unaligned dcl 2-134 SECTION_SYMBOL internal static fixed bin(18,0) initial unsigned unaligned dcl 2-134 SECTION_SYSTEM internal static fixed bin(18,0) initial unsigned unaligned dcl 2-134 SECTION_TEXT internal static fixed bin(18,0) initial unsigned unaligned dcl 2-134 SECTION_UNUSED internal static fixed bin(18,0) initial unsigned unaligned dcl 2-134 SYMBOLIC_SECTION_NAMES internal static char(8) initial array unaligned dcl 2-38 acc_string_length automatic fixed bin(21,0) dcl 2-334 acc_string_ptr automatic pointer dcl 2-326 bx_$addname external static fixed bin(17,0) dcl 4-58 bx_$addname_limit external static fixed bin(17,0) dcl 4-24 bx_$adnp external static pointer dcl 4-36 bx_$area_begin external static fixed bin(18,0) dcl 4-25 bx_$bdefp external static pointer dcl 4-38 bx_$bindmap_def external static pointer dcl 4-37 bx_$blnkp external static pointer dcl 4-40 bx_$bound_segname external static char(32) dcl 4-48 bx_$bound_sep_stat external static fixed bin(17,0) dcl 4-64 bx_$bproc external static fixed bin(17,0) dcl 4-67 bx_$brief external static fixed bin(17,0) dcl 4-60 bx_$bseg_acinfop external static pointer dcl 4-50 bx_$bseg_bitcount external static fixed bin(24,0) dcl 4-51 bx_$bsegp external static pointer dcl 4-30 bx_$bstatp external static pointer dcl 4-39 bx_$bsymp external static pointer dcl 4-41 bx_$ctp external static pointer dcl 4-26 bx_$curdeflng external static fixed bin(18,0) dcl 4-69 bx_$d_lng external static fixed bin(18,0) dcl 4-54 bx_$fatal_error external static fixed bin(17,0) dcl 4-49 bx_$first_rptp external static pointer dcl 4-34 bx_$force_order external static fixed bin(17,0) dcl 4-61 bx_$freep external static pointer dcl 4-27 bx_$has_comb_stat external static fixed bin(17,0) dcl 4-63 bx_$has_sep_stat external static fixed bin(17,0) dcl 4-62 bx_$i_lng external static fixed bin(17,0) dcl 4-55 bx_$inpp external static pointer dcl 4-29 bx_$isp external static pointer dcl 4-28 bx_$l_lng external static fixed bin(17,0) dcl 4-56 bx_$last_rptp external static pointer dcl 4-35 bx_$maxdeflng external static fixed bin(18,0) dcl 4-72 bx_$maxlinklng external static fixed bin(17,0) dcl 4-71 bx_$n_firstrefs external static fixed bin(17,0) dcl 4-47 bx_$n_lng external static fixed bin(17,0) dcl 4-76 bx_$ncomp external static fixed bin(17,0) dcl 4-74 bx_$nsegdefs external static fixed bin(17,0) dcl 4-78 bx_$nsymdefs external static fixed bin(17,0) dcl 4-77 bx_$o_lng external static fixed bin(19,0) dcl 4-52 bx_$oddname_limit external static fixed bin(17,0) dcl 4-22 bx_$odnp external static pointer dcl 4-33 bx_$optp external static pointer dcl 4-32 bx_$perprocess_static external static fixed bin(17,0) dcl 4-65 bx_$s_lng external static fixed bin(18,0) dcl 4-57 bx_$size external static fixed bin(17,0) dcl 4-20 bx_$snt_limit external static fixed bin(17,0) dcl 4-21 bx_$sntp external static pointer dcl 4-42 bx_$standard external static fixed bin(17,0) dcl 4-66 bx_$stringmap_limit external static fixed bin(17,0) dcl 4-23 bx_$strmp external static pointer dcl 4-46 bx_$t_lng external static fixed bin(18,0) dcl 4-53 bx_$tdefp external static pointer dcl 4-43 bx_$temp external static pointer dcl 4-31 bx_$temp_bsegp external static pointer dcl 4-79 bx_$textlng external static fixed bin(18,0) dcl 4-68 bx_$tintlng external static fixed bin(17,0) dcl 4-70 bx_$tintp external static pointer dcl 4-44 bx_$tlinklng external static fixed bin(17,0) dcl 4-73 bx_$tlinkp external static pointer dcl 4-45 bx_$v_lng external static fixed bin(17,0) dcl 4-75 bx_$vers_name external static char(168) dcl 4-18 bx_$vers_number external static fixed bin(17,0) dcl 4-19 comp_ht_n_entries automatic fixed bin(17,0) dcl 2-297 comp_ht_ptr automatic pointer dcl 2-288 comp_tbl based pointer array dcl 5-12 component_ht based structure level 1 dcl 2-289 ctp automatic pointer dcl 5-10 def_header_ptr automatic pointer dcl 2-57 def_ht_n_entries automatic fixed bin(17,0) dcl 2-284 def_ht_ptr automatic pointer dcl 2-277 def_ptr automatic pointer dcl 2-71 definition based structure level 1 dcl 2-72 definition_header based structure level 1 dcl 2-58 definition_ht based structure level 1 dcl 2-278 dup_table_n_names automatic fixed bin(17,0) dcl 2-310 dup_table_ptr automatic pointer dcl 2-301 duplicate_table based structure level 1 dcl 2-302 exp_ptr automatic pointer dcl 2-128 fr_traps based structure level 1 dcl 1-90 link_init_copy_info based structure level 1 dcl 2-211 link_init_deferred based structure level 1 dcl 2-270 link_init_list_template based structure level 1 dcl 2-219 link_init_n_bits_in_datum automatic fixed bin(35,0) dcl 2-261 link_init_n_words automatic fixed bin(17,0) dcl 2-215 link_init_n_words_in_list automatic fixed bin(17,0) dcl 2-226 link_init_ptr automatic pointer dcl 2-204 link_trap_pair based structure level 1 dcl 2-177 link_trap_ptr automatic pointer dcl 2-176 linkage_header based structure level 1 dcl 1-50 linkage_header_flags based structure level 1 dcl 1-63 list_template_entry based structure level 1 dcl 2-239 msf_map based structure level 1 dcl 2-318 msf_map_ptr automatic pointer dcl 2-317 msf_map_version_1 internal static char(8) initial unaligned dcl 2-323 partial_link based structure level 1 dcl 1-38 pointer_init_template based structure level 1 packed unaligned dcl 2-253 segname_definition based structure level 1 dcl 2-90 segname_ptr automatic pointer dcl 2-89 type_ptr automatic pointer dcl 2-159 virgin_linkage_header based structure level 1 dcl 1-71 NAMES DECLARED BY EXPLICIT CONTEXT. decode_link_ 000176 constant entry external dcl 69 error_skip 001065 constant label dcl 254 ref 150 157 178 203 extract_symbol 000747 constant label dcl 234 ref 206 221 init 001072 constant entry external dcl 258 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1172 1214 1117 1202 Length 1504 1117 22 254 53 4 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME decode_link_ 156 external procedure is an external procedure. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 errname decode_link_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME decode_link_ 000100 i decode_link_ 000101 type decode_link_ 000102 extp decode_link_ 000104 defptr decode_link_ 000106 linkp decode_link_ 000110 expp decode_link_ 000112 typep decode_link_ 000114 ACCp decode_link_ 000116 ctep decode_link_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as call_ext_out_desc return_mac ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. bx_$caller bx_$debug CONSTANTS 000000 aa 524000000101 000001 aa 526000000000 000002 aa 524000000074 000003 aa 524000000071 000004 aa 524000000107 000005 aa 404000000021 000006 aa 524000000066 000007 aa 524000000040 000010 aa 404000000022 000011 aa 524000000004 000012 aa 524000000070 000013 aa 524000000020 000014 aa 404000000005 000015 aa 514000000001 000016 aa 464000000000 000020 aa 052 163 171 163 *sys 000021 aa 164 145 155 000 tem 000022 aa 052 163 164 141 *sta 000023 aa 164 151 143 000 tic 000024 aa 052 163 171 155 *sym 000025 aa 142 157 154 000 bol 000026 aa 052 154 151 156 *lin 000027 aa 153 000 000 000 k 000030 aa 052 164 145 170 *tex 000031 aa 164 000 000 000 t 000032 aa 144 145 143 157 deco 000033 aa 144 145 137 154 de_l 000034 aa 151 156 153 137 ink_ 000035 aa 154 151 156 153 link 000036 aa 174 136 157 040 |^o 000037 aa 162 145 146 145 refe 000040 aa 162 145 156 143 renc 000041 aa 145 144 040 142 ed b 000042 aa 171 040 136 141 y ^a 000043 aa 174 136 157 040 |^o 000044 aa 157 146 040 136 of ^ 000045 aa 141 040 156 157 a no 000046 aa 164 040 154 151 t li 000047 aa 156 153 146 141 nkfa 000050 aa 165 154 164 040 ult 000051 aa 050 064 066 051 (46) 000052 aa 070 056 000 000 8. 000053 aa 136 141 174 136 ^a|^ 000054 aa 157 040 157 146 o of 000055 aa 040 136 141 040 ^a 000056 aa 162 145 146 145 refe 000057 aa 162 145 156 143 renc 000060 aa 151 156 147 040 ing 000061 aa 157 144 144 040 odd 000062 aa 154 157 143 141 loca 000063 aa 164 151 157 156 tion 000064 aa 040 151 156 040 in 000065 aa 154 151 156 153 link 000066 aa 141 147 145 040 age 000067 aa 163 145 143 164 sect 000070 aa 151 157 156 056 ion. 000071 aa 145 170 164 145 exte 000072 aa 162 156 141 154 rnal 000073 aa 040 163 145 147 seg 000074 aa 156 141 155 145 name 000075 aa 040 136 141 040 ^a 000076 aa 154 157 156 147 long 000077 aa 145 162 040 164 er t 000100 aa 150 141 156 040 han 000101 aa 063 062 040 143 32 c 000102 aa 150 141 162 163 hars 000103 aa 073 040 163 145 ; se 000104 aa 147 156 141 155 gnam 000105 aa 145 040 164 162 e tr 000106 aa 165 156 143 141 unca 000107 aa 164 145 144 056 ted. 000110 aa 164 171 160 145 type 000111 aa 055 061 040 154 -1 l 000112 aa 151 156 153 040 ink 000113 aa 141 164 040 154 at l 000114 aa 151 156 153 174 ink| 000115 aa 136 157 040 157 ^o o 000116 aa 146 040 136 141 f ^a 000117 aa 040 150 141 163 has 000120 aa 040 151 154 154 ill 000121 aa 145 147 141 154 egal 000122 aa 040 163 145 147 seg 000123 aa 055 160 164 162 -ptr 000124 aa 040 166 141 154 val 000125 aa 165 145 040 136 ue ^ 000126 aa 157 000 000 000 o 000127 aa 145 170 164 145 exte 000130 aa 162 156 141 154 rnal 000131 aa 040 145 156 164 ent 000132 aa 162 171 156 141 ryna 000133 aa 155 145 040 136 me ^ 000134 aa 141 040 154 157 a lo 000135 aa 156 147 145 162 nger 000136 aa 040 164 150 141 tha 000137 aa 156 040 062 065 n 25 000140 aa 066 040 143 150 6 ch 000141 aa 141 162 163 073 ars; 000142 aa 040 145 156 164 ent 000143 aa 162 171 156 141 ryna 000144 aa 155 145 040 164 me t 000145 aa 162 165 156 143 runc 000146 aa 141 164 145 144 ated 000147 aa 056 000 000 000 . 000150 aa 105 170 164 145 Exte 000151 aa 162 156 141 154 rnal 000152 aa 040 154 151 156 lin 000153 aa 153 040 164 171 k ty 000154 aa 160 145 040 136 pe ^ 000155 aa 157 040 151 156 o in 000156 aa 040 154 151 156 lin 000157 aa 153 174 136 157 k|^o 000160 aa 040 157 146 040 of 000161 aa 136 141 073 040 ^a; 000162 aa 156 157 164 040 not 000163 aa 150 141 156 144 hand 000164 aa 154 145 144 040 led 000165 aa 142 171 040 143 by c 000166 aa 165 162 162 145 urre 000167 aa 156 164 040 166 nt v 000170 aa 145 162 163 151 ersi 000171 aa 157 156 056 000 on. BEGIN PROCEDURE decode_link_ ENTRY TO decode_link_ STATEMENT 1 ON LINE 69 decode_link_: procedure (structure_ptr, code); 000172 at 000002000016 000173 ta 000015000000 000174 ta 000172000000 000175 da 000042300000 000176 aa 000240 6270 00 eax7 160 000177 aa 7 00034 3521 20 epp2 pr7|28,* 000200 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000201 aa 000004000000 000202 aa 000000000000 STATEMENT 1 ON LINE 138 extp = structure_ptr; 000203 aa 6 00032 3735 20 epp7 pr6|26,* 000204 aa 7 00002 3715 20 epp5 pr7|2,* structure_ptr 000205 aa 5 00000 3715 20 epp5 pr5|0,* structure_ptr 000206 aa 6 00102 6515 00 spri5 pr6|66 extp STATEMENT 1 ON LINE 139 ctep = ext.compent_ptr; 000207 aa 5 00000 3535 20 epp3 pr5|0,* ext.compent_ptr 000210 aa 6 00116 2535 00 spri3 pr6|78 ctep STATEMENT 1 ON LINE 140 defptr = comp.cdefp; 000211 aa 3 00016 3515 20 epp1 pr3|14,* comp.cdefp 000212 aa 6 00104 2515 00 spri1 pr6|68 defptr STATEMENT 1 ON LINE 141 code = "0"b; 000213 aa 7 00004 4501 20 stz pr7|4,* code STATEMENT 1 ON LINE 145 if loffset_overlay.odd then /* compiler error,should refer to an even location */ do; 000214 aa 5 00011 2351 00 lda pr5|9 loffset_overlay.odd 000215 aa 000001 3150 07 cana 1,dl 000216 aa 000042 6000 04 tze 34,ic 000260 STATEMENT 1 ON LINE 148 call com_err_ (0, errname, "^a|^o of ^a referencing odd location in linkage section.", ext.section, ext.offset, comp.filename); 000217 aa 6 00120 4501 00 stz pr6|80 000220 aa 000 100 100 404 mlr (ic),(pr),fill(000) 000221 aa 777633 00 0070 desc9a -101,56 000053 = 136141174136 000222 aa 6 00122 00 0070 desc9a pr6|82,56 000223 aa 6 00120 3521 00 epp2 pr6|80 000224 aa 6 00142 2521 00 spri2 pr6|98 000225 ia 4 00010 3521 00 epp2 pr4|8 errname 000226 aa 6 00144 2521 00 spri2 pr6|100 000227 aa 6 00122 3521 00 epp2 pr6|82 000230 aa 6 00146 2521 00 spri2 pr6|102 000231 aa 5 00010 3521 00 epp2 pr5|8 ext.section 000232 aa 6 00150 2521 00 spri2 pr6|104 000233 aa 5 00004 3521 00 epp2 pr5|4 ext.offset 000234 aa 6 00152 2521 00 spri2 pr6|106 000235 aa 3 00000 3521 00 epp2 pr3|0 comp.filename 000236 aa 6 00154 2521 00 spri2 pr6|108 000237 aa 777555 3520 04 epp2 -147,ic 000014 = 404000000005 000240 aa 6 00156 2521 00 spri2 pr6|110 000241 aa 777552 3520 04 epp2 -150,ic 000013 = 524000000020 000242 aa 6 00160 2521 00 spri2 pr6|112 000243 aa 777547 3520 04 epp2 -153,ic 000012 = 524000000070 000244 aa 6 00162 2521 00 spri2 pr6|114 000245 aa 777544 3520 04 epp2 -156,ic 000011 = 524000000004 000246 aa 6 00164 2521 00 spri2 pr6|116 000247 aa 777541 3520 04 epp2 -159,ic 000010 = 404000000022 000250 aa 6 00166 2521 00 spri2 pr6|118 000251 aa 777536 3520 04 epp2 -162,ic 000007 = 524000000040 000252 aa 6 00170 2521 00 spri2 pr6|120 000253 aa 6 00140 6211 00 eax1 pr6|96 000254 aa 030000 4310 07 fld 12288,dl 000255 la 4 00014 3521 20 epp2 pr4|12,* com_err_ 000256 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 150 goto error_skip; 000257 aa 000606 7100 04 tra 390,ic 001065 STATEMENT 1 ON LINE 151 end; STATEMENT 1 ON LINE 152 linkp = addrel (comp.clnkp, ext.loffset); 000260 aa 5 00011 2361 00 ldq pr5|9 ext.loffset 000261 aa 3 00022 3521 66 epp2 pr3|18,*ql comp.clnkp 000262 aa 000000 0520 03 adwp2 0,du 000263 aa 6 00106 2521 00 spri2 pr6|70 linkp STATEMENT 1 ON LINE 153 if link.tag ^= "100110"b then do; 000264 aa 2 00000 2351 00 lda pr2|0 link.tag 000265 aa 000036 7350 00 als 30 000266 aa 460000 1150 03 cmpa 155648,du 000267 aa 000046 6000 04 tze 38,ic 000335 STATEMENT 1 ON LINE 155 call com_err_ (0, errname, "link|^o referenced by ^a|^o of ^a not linkfault (46)8.", ext.loffset, ext.section, ext.offset, comp.filename); 000270 aa 6 00120 4501 00 stz pr6|80 000271 aa 000 100 100 404 mlr (ic),(pr),fill(000) 000272 aa 777544 00 0070 desc9a -156,56 000035 = 154151156153 000273 aa 6 00122 00 0070 desc9a pr6|82,56 000274 aa 6 00120 3521 00 epp2 pr6|80 000275 aa 6 00174 2521 00 spri2 pr6|124 000276 ia 4 00010 3521 00 epp2 pr4|8 errname 000277 aa 6 00176 2521 00 spri2 pr6|126 000300 aa 6 00122 3521 00 epp2 pr6|82 000301 aa 6 00200 2521 00 spri2 pr6|128 000302 aa 5 00011 3521 00 epp2 pr5|9 ext.loffset 000303 aa 6 00202 2521 00 spri2 pr6|130 000304 aa 5 00010 3521 00 epp2 pr5|8 ext.section 000305 aa 6 00204 2521 00 spri2 pr6|132 000306 aa 5 00004 3521 00 epp2 pr5|4 ext.offset 000307 aa 6 00206 2521 00 spri2 pr6|134 000310 aa 3 00000 3521 00 epp2 pr3|0 comp.filename 000311 aa 6 00210 2521 00 spri2 pr6|136 000312 aa 777502 3520 04 epp2 -190,ic 000014 = 404000000005 000313 aa 6 00212 2521 00 spri2 pr6|138 000314 aa 777477 3520 04 epp2 -193,ic 000013 = 524000000020 000315 aa 6 00214 2521 00 spri2 pr6|140 000316 aa 777470 3520 04 epp2 -200,ic 000006 = 524000000066 000317 aa 6 00216 2521 00 spri2 pr6|142 000320 aa 777465 3520 04 epp2 -203,ic 000005 = 404000000021 000321 aa 6 00220 2521 00 spri2 pr6|144 000322 aa 777467 3520 04 epp2 -201,ic 000011 = 524000000004 000323 aa 6 00222 2521 00 spri2 pr6|146 000324 aa 777464 3520 04 epp2 -204,ic 000010 = 404000000022 000325 aa 6 00224 2521 00 spri2 pr6|148 000326 aa 777461 3520 04 epp2 -207,ic 000007 = 524000000040 000327 aa 6 00226 2521 00 spri2 pr6|150 000330 aa 6 00172 6211 00 eax1 pr6|122 000331 aa 034000 4310 07 fld 14336,dl 000332 la 4 00014 3521 20 epp2 pr4|12,* com_err_ 000333 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 157 goto error_skip; 000334 aa 000531 7100 04 tra 345,ic 001065 STATEMENT 1 ON LINE 158 end; STATEMENT 1 ON LINE 159 ext.link_tm = substr (link.modifier, 1, 2); 000335 aa 2 00001 2351 00 lda pr2|1 link.modifier 000336 aa 000035 7350 00 als 29 000337 aa 5 00130 6751 00 era pr5|88 ext.link_tm 000340 aa 300000 3750 03 ana 98304,du 000341 aa 5 00130 6551 00 ersa pr5|88 ext.link_tm STATEMENT 1 ON LINE 160 ext.link_td = substr (link.modifier, 3, 4); 000342 aa 2 00001 2351 00 lda pr2|1 link.modifier 000343 aa 000035 7350 00 als 29 000344 aa 5 00130 6751 00 era pr5|88 ext.link_td 000345 aa 074000 3750 03 ana 30720,du 000346 aa 5 00130 6551 00 ersa pr5|88 ext.link_td STATEMENT 1 ON LINE 161 segname_overlay, entryname_overlay = "0"b; 000347 aa 000 100 100 400 mlr (),(pr),fill(000) 000350 aa 000000 00 0000 desc9a 0,0 000351 aa 5 00012 00 0041 desc9a pr5|10,33 segname_overlay 000352 aa 000 100 100 400 mlr (),(pr),fill(000) 000353 aa 000000 00 0000 desc9a 0,0 000354 aa 5 00024 00 0401 desc9a pr5|20,257 entryname_overlay STATEMENT 1 ON LINE 162 ext.slng, ext.elng = 0; 000355 aa 5 00023 4501 00 stz pr5|19 ext.slng 000356 aa 5 00125 4501 00 stz pr5|85 ext.elng STATEMENT 1 ON LINE 163 expp = addrel (defptr, link.expression_relp); 000357 aa 2 00001 2351 00 lda pr2|1 link.expression_relp 000360 aa 000066 7730 00 lrl 54 000361 aa 1 00000 3521 06 epp2 pr1|0,ql 000362 aa 000000 0520 03 adwp2 0,du 000363 aa 6 00110 2521 00 spri2 pr6|72 expp STATEMENT 1 ON LINE 164 ext.expr = unspec (exp.expression); 000364 aa 2 00000 2351 00 lda pr2|0 000365 aa 000022 7350 00 als 18 000366 aa 5 00127 5511 60 stba pr5|87,60 ext.expr STATEMENT 1 ON LINE 165 typep = addrel (defptr, exp.type_relp); 000367 aa 2 00000 2351 00 lda pr2|0 exp.type_relp 000370 aa 000066 7730 00 lrl 54 000371 aa 1 00000 3521 06 epp2 pr1|0,ql 000372 aa 000000 0520 03 adwp2 0,du 000373 aa 6 00112 2521 00 spri2 pr6|74 typep STATEMENT 1 ON LINE 166 ext.type = bit (type_pr.type); 000374 aa 2 00000 2351 00 lda pr2|0 type_pr.type 000375 aa 000066 7730 00 lrl 54 000376 aa 6 00120 7561 00 stq pr6|80 type_pr.type 000377 aa 000066 7370 00 lls 54 000400 aa 5 00126 5511 60 stba pr5|86,60 ext.type STATEMENT 1 ON LINE 167 ext.trap = bit (type_pr.trap_relp); 000401 aa 2 00000 2361 00 ldq pr2|0 type_pr.trap_relp 000402 aa 0 00374 3771 00 anaq pr0|252 = 000000000000 000000777777 000403 aa 000066 7370 00 lls 54 000404 aa 000022 7730 00 lrl 18 000405 aa 5 00126 5511 14 stba pr5|86,14 ext.trap STATEMENT 1 ON LINE 168 type = type_pr.type; 000406 aa 6 00120 2361 00 ldq pr6|80 type_pr.type 000407 aa 6 00101 7561 00 stq pr6|65 type STATEMENT 1 ON LINE 169 if type ^= 3 then if type ^= 4 then if type ^= 1 then if type ^= 5 then if type ^= 6 then do; 000410 aa 5 00012 3515 00 epp1 pr5|10 ext.segname 000411 aa 6 00230 2515 00 spri1 pr6|152 000412 aa 000003 1160 07 cmpq 3,dl 000413 aa 000052 6000 04 tze 42,ic 000465 000414 aa 000004 1160 07 cmpq 4,dl 000415 aa 000050 6000 04 tze 40,ic 000465 000416 aa 000001 1160 07 cmpq 1,dl 000417 aa 000046 6000 04 tze 38,ic 000465 000420 aa 000005 1160 07 cmpq 5,dl 000421 aa 000044 6000 04 tze 36,ic 000465 000422 aa 000006 1160 07 cmpq 6,dl 000423 aa 000042 6000 04 tze 34,ic 000465 STATEMENT 1 ON LINE 175 call com_err_ (0, errname, "External link type ^o in link|^o of ^a; not handled by current version.", type, ext.loffset, comp.filename); 000424 aa 6 00120 4501 00 stz pr6|80 000425 aa 000 100 100 404 mlr (ic),(pr),fill(000) 000426 aa 777523 00 0110 desc9a -173,72 000150 = 105170164145 000427 aa 6 00140 00 0110 desc9a pr6|96,72 000430 aa 6 00120 3521 00 epp2 pr6|80 000431 aa 6 00174 2521 00 spri2 pr6|124 000432 ia 4 00010 3521 00 epp2 pr4|8 errname 000433 aa 6 00176 2521 00 spri2 pr6|126 000434 aa 6 00140 3521 00 epp2 pr6|96 000435 aa 6 00200 2521 00 spri2 pr6|128 000436 aa 6 00101 3521 00 epp2 pr6|65 type 000437 aa 6 00202 2521 00 spri2 pr6|130 000440 aa 5 00011 3521 00 epp2 pr5|9 ext.loffset 000441 aa 6 00204 2521 00 spri2 pr6|132 000442 aa 3 00000 3521 00 epp2 pr3|0 comp.filename 000443 aa 6 00206 2521 00 spri2 pr6|134 000444 aa 777350 3520 04 epp2 -280,ic 000014 = 404000000005 000445 aa 6 00210 2521 00 spri2 pr6|136 000446 aa 777345 3520 04 epp2 -283,ic 000013 = 524000000020 000447 aa 6 00212 2521 00 spri2 pr6|138 000450 aa 777334 3520 04 epp2 -292,ic 000004 = 524000000107 000451 aa 6 00214 2521 00 spri2 pr6|140 000452 aa 777336 3520 04 epp2 -290,ic 000010 = 404000000022 000453 aa 6 00216 2521 00 spri2 pr6|142 000454 aa 777331 3520 04 epp2 -295,ic 000005 = 404000000021 000455 aa 6 00220 2521 00 spri2 pr6|144 000456 aa 777331 3520 04 epp2 -295,ic 000007 = 524000000040 000457 aa 6 00222 2521 00 spri2 pr6|146 000460 aa 6 00172 6211 00 eax1 pr6|122 000461 aa 030000 4310 07 fld 12288,dl 000462 la 4 00014 3521 20 epp2 pr4|12,* com_err_ 000463 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 178 goto error_skip; 000464 aa 000401 7100 04 tra 257,ic 001065 STATEMENT 1 ON LINE 179 end; STATEMENT 1 ON LINE 180 ext.code15 = bit (type_pr.segname_relp); 000465 aa 2 00001 2351 00 lda pr2|1 type_pr.segname_relp 000466 aa 000066 7730 00 lrl 54 000467 aa 6 00120 7561 00 stq pr6|80 type_pr.segname_relp 000470 aa 000066 7370 00 lls 54 000471 aa 000022 7730 00 lrl 18 000472 aa 5 00127 5511 14 stba pr5|87,14 ext.code15 STATEMENT 1 ON LINE 181 i = type_pr.segname_relp; 000473 aa 6 00120 2361 00 ldq pr6|80 type_pr.segname_relp 000474 aa 6 00100 7561 00 stq pr6|64 i STATEMENT 1 ON LINE 182 if type = 1 then /* *|expr,m link */ do; 000475 aa 6 00101 2361 00 ldq pr6|65 type 000476 aa 000001 1160 07 cmpq 1,dl 000477 aa 000115 6010 04 tnz 77,ic 000614 STATEMENT 1 ON LINE 185 segname_ACC.count = 5; 000500 aa 005000 2350 03 lda 2560,du 000501 aa 1 00000 5511 40 stba pr1|0,40 segname_ACC.count STATEMENT 1 ON LINE 186 if i = 0 then segname_ACC.string = "*text"; 000502 aa 6 00100 2361 00 ldq pr6|64 i 000503 aa 000007 6010 04 tnz 7,ic 000512 000504 aa 1 00000 2351 00 lda pr1|0 acc_string.count 000505 aa 000077 7730 00 lrl 63 000506 aa 040 140 100 404 mlr (ic),(pr,rl),fill(040) 000507 aa 777322 00 0005 desc9a -302,5 000030 = 052164145170 000510 aa 1 00000 20 0006 desc9a pr1|0(1),ql segname_ACC.string 000511 aa 000076 7100 04 tra 62,ic 000607 STATEMENT 1 ON LINE 188 else if i = 1 then segname_ACC.string = "*link"; 000512 aa 000001 1160 07 cmpq 1,dl 000513 aa 000007 6010 04 tnz 7,ic 000522 000514 aa 1 00000 2351 00 lda pr1|0 acc_string.count 000515 aa 000077 7730 00 lrl 63 000516 aa 040 140 100 404 mlr (ic),(pr,rl),fill(040) 000517 aa 777310 00 0005 desc9a -312,5 000026 = 052154151156 000520 aa 1 00000 20 0006 desc9a pr1|0(1),ql segname_ACC.string 000521 aa 000066 7100 04 tra 54,ic 000607 STATEMENT 1 ON LINE 190 else if i = 2 then do; 000522 aa 000002 1160 07 cmpq 2,dl 000523 aa 000011 6010 04 tnz 9,ic 000534 STATEMENT 1 ON LINE 192 segname_ACC.count = 7; 000524 aa 007000 2350 03 lda 3584,du 000525 aa 1 00000 5511 40 stba pr1|0,40 segname_ACC.count STATEMENT 1 ON LINE 193 segname_ACC.string = "*symbol"; 000526 aa 1 00000 2351 00 lda pr1|0 acc_string.count 000527 aa 000077 7730 00 lrl 63 000530 aa 040 140 100 404 mlr (ic),(pr,rl),fill(040) 000531 aa 777274 00 0007 desc9a -324,7 000024 = 052163171155 000532 aa 1 00000 20 0006 desc9a pr1|0(1),ql segname_ACC.string STATEMENT 1 ON LINE 194 end; 000533 aa 000054 7100 04 tra 44,ic 000607 STATEMENT 1 ON LINE 195 else if i = 4 then do; 000534 aa 000004 1160 07 cmpq 4,dl 000535 aa 000011 6010 04 tnz 9,ic 000546 STATEMENT 1 ON LINE 197 segname_ACC.count = 7; 000536 aa 007000 2350 03 lda 3584,du 000537 aa 1 00000 5511 40 stba pr1|0,40 segname_ACC.count STATEMENT 1 ON LINE 198 segname_ACC.string = "*static"; 000540 aa 1 00000 2351 00 lda pr1|0 acc_string.count 000541 aa 000077 7730 00 lrl 63 000542 aa 040 140 100 404 mlr (ic),(pr,rl),fill(040) 000543 aa 777260 00 0007 desc9a -336,7 000022 = 052163164141 000544 aa 1 00000 20 0006 desc9a pr1|0(1),ql segname_ACC.string STATEMENT 1 ON LINE 199 end; 000545 aa 000042 7100 04 tra 34,ic 000607 STATEMENT 1 ON LINE 200 else do; STATEMENT 1 ON LINE 201 call com_err_ (0, errname, "type-1 link at link|^o of ^a has illegal seg-ptr value ^o", ext.loffset, comp.filename, i); 000546 aa 6 00121 4501 00 stz pr6|81 000547 aa 000 100 100 404 mlr (ic),(pr),fill(000) 000550 aa 777341 00 0074 desc9a -287,60 000110 = 164171160145 000551 aa 6 00140 00 0074 desc9a pr6|96,60 000552 aa 6 00121 3521 00 epp2 pr6|81 000553 aa 6 00174 2521 00 spri2 pr6|124 000554 ia 4 00010 3521 00 epp2 pr4|8 errname 000555 aa 6 00176 2521 00 spri2 pr6|126 000556 aa 6 00140 3521 00 epp2 pr6|96 000557 aa 6 00200 2521 00 spri2 pr6|128 000560 aa 5 00011 3521 00 epp2 pr5|9 ext.loffset 000561 aa 6 00202 2521 00 spri2 pr6|130 000562 aa 3 00000 3521 00 epp2 pr3|0 comp.filename 000563 aa 6 00204 2521 00 spri2 pr6|132 000564 aa 6 00100 3521 00 epp2 pr6|64 i 000565 aa 6 00206 2521 00 spri2 pr6|134 000566 aa 777226 3520 04 epp2 -362,ic 000014 = 404000000005 000567 aa 6 00210 2521 00 spri2 pr6|136 000570 aa 777223 3520 04 epp2 -365,ic 000013 = 524000000020 000571 aa 6 00212 2521 00 spri2 pr6|138 000572 aa 777211 3520 04 epp2 -375,ic 000003 = 524000000071 000573 aa 6 00214 2521 00 spri2 pr6|140 000574 aa 777211 3520 04 epp2 -375,ic 000005 = 404000000021 000575 aa 6 00216 2521 00 spri2 pr6|142 000576 aa 777211 3520 04 epp2 -375,ic 000007 = 524000000040 000577 aa 6 00220 2521 00 spri2 pr6|144 000600 aa 777210 3520 04 epp2 -376,ic 000010 = 404000000022 000601 aa 6 00222 2521 00 spri2 pr6|146 000602 aa 6 00172 6211 00 eax1 pr6|122 000603 aa 030000 4310 07 fld 12288,dl 000604 la 4 00014 3521 20 epp2 pr4|12,* com_err_ 000605 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 203 goto error_skip; 000606 aa 000257 7100 04 tra 175,ic 001065 STATEMENT 1 ON LINE 204 end; STATEMENT 1 ON LINE 205 ext.slng = segname_ACC.count + 1; 000607 aa 1 00000 2351 00 lda pr1|0 segname_ACC.count 000610 aa 000077 7730 00 lrl 63 000611 aa 000001 0760 07 adq 1,dl 000612 aa 5 00023 7561 00 stq pr5|19 ext.slng STATEMENT 1 ON LINE 206 goto extract_symbol; 000613 aa 000134 7100 04 tra 92,ic 000747 STATEMENT 1 ON LINE 207 end; STATEMENT 1 ON LINE 208 if type = 5 then /* *|symbol+exp,m link */ do; 000614 aa 000005 1160 07 cmpq 5,dl 000615 aa 000042 6010 04 tnz 34,ic 000657 STATEMENT 1 ON LINE 211 if i = 5 then do; 000616 aa 6 00100 2361 00 ldq pr6|64 i 000617 aa 000005 1160 07 cmpq 5,dl 000620 aa 000011 6010 04 tnz 9,ic 000631 STATEMENT 1 ON LINE 213 segname_ACC.count = 7; 000621 aa 007000 2350 03 lda 3584,du 000622 aa 1 00000 5511 40 stba pr1|0,40 segname_ACC.count STATEMENT 1 ON LINE 214 segname_ACC.string = "*system"; 000623 aa 1 00000 2351 00 lda pr1|0 acc_string.count 000624 aa 000077 7730 00 lrl 63 000625 aa 040 140 100 404 mlr (ic),(pr,rl),fill(040) 000626 aa 777173 00 0007 desc9a -389,7 000020 = 052163171163 000627 aa 1 00000 20 0006 desc9a pr1|0(1),ql segname_ACC.string STATEMENT 1 ON LINE 215 end; 000630 aa 000022 7100 04 tra 18,ic 000652 STATEMENT 1 ON LINE 216 else do; STATEMENT 1 ON LINE 217 segname_ACC.count = index (comp.filename, " ") - 1; 000631 aa 000 003 124 500 scm (pr),(du),mask(000) 000632 aa 3 00000 00 0040 desc9a pr3|0,32 comp.filename 000633 aa 040000 00 0001 desc9a 16384,1 000634 aa 6 00056 0001 00 arg pr6|46 000635 aa 6 00056 2361 00 ldq pr6|46 000636 aa 000002 6070 04 ttf 2,ic 000640 000637 aa 000001 3360 07 lcq 1,dl 000640 aa 000077 7370 00 lls 63 000641 aa 1 00000 5511 40 stba pr1|0,40 segname_ACC.count STATEMENT 1 ON LINE 218 segname_ACC.string = substr (comp.filename, 1, segname_ACC.count); 000642 aa 1 00000 2351 00 lda pr1|0 acc_string.count 000643 aa 000077 7730 00 lrl 63 000644 aa 1 00000 2351 00 lda pr1|0 segname_ACC.count 000645 aa 000000 6270 06 eax7 0,ql 000646 aa 000077 7730 00 lrl 63 000647 aa 040 140 100 540 mlr (pr,rl),(pr,rl),fill(040) 000650 aa 3 00000 00 0006 desc9a pr3|0,ql comp.filename 000651 aa 1 00000 20 0017 desc9a pr1|0(1),x7 segname_ACC.string STATEMENT 1 ON LINE 219 end; STATEMENT 1 ON LINE 220 ext.slng = segname_ACC.count + 1; 000652 aa 1 00000 2351 00 lda pr1|0 segname_ACC.count 000653 aa 000077 7730 00 lrl 63 000654 aa 000001 0760 07 adq 1,dl 000655 aa 5 00023 7561 00 stq pr5|19 ext.slng STATEMENT 1 ON LINE 221 goto extract_symbol; 000656 aa 000071 7100 04 tra 57,ic 000747 STATEMENT 1 ON LINE 222 end; STATEMENT 1 ON LINE 223 ACCp = addrel (defptr, type_pr.segname_relp); 000657 aa 6 00120 2361 00 ldq pr6|80 type_pr.segname_relp 000660 aa 6 00104 3521 66 epp2 pr6|68,*ql defptr 000661 aa 000000 0520 03 adwp2 0,du 000662 aa 6 00114 2521 00 spri2 pr6|76 ACCp STATEMENT 1 ON LINE 224 segname_ACC.count = ACC.count; 000663 aa 2 00000 2351 00 lda pr2|0 ACC.count 000664 aa 1 00000 5511 40 stba pr1|0,40 segname_ACC.count STATEMENT 1 ON LINE 225 if segname_ACC.count > 32 then /* string too long */ do; 000665 aa 1 00000 2351 00 lda pr1|0 segname_ACC.count 000666 aa 000077 7730 00 lrl 63 000667 aa 000040 1160 07 cmpq 32,dl 000670 aa 000043 6044 04 tmoz 35,ic 000733 STATEMENT 1 ON LINE 228 call com_err_ (0, errname, "external segname ^a longer than 32 chars; segname truncated.", ACC.string); 000671 aa 2 00000 2351 00 lda pr2|0 acc_string.count 000672 aa 000077 7730 00 lrl 63 000673 aa 6 00232 7561 00 stq pr6|154 000674 aa 526000 2760 03 orq 175104,du 000675 aa 6 00120 7561 00 stq pr6|80 000676 aa 6 00121 4501 00 stz pr6|81 000677 aa 000 100 100 404 mlr (ic),(pr),fill(000) 000700 aa 777172 00 0074 desc9a -390,60 000071 = 145170164145 000701 aa 6 00140 00 0074 desc9a pr6|96,60 000702 aa 6 00121 3521 00 epp2 pr6|81 000703 aa 6 00174 2521 00 spri2 pr6|124 000704 ia 4 00010 3521 00 epp2 pr4|8 errname 000705 aa 6 00176 2521 00 spri2 pr6|126 000706 aa 6 00140 3521 00 epp2 pr6|96 000707 aa 6 00200 2521 00 spri2 pr6|128 000710 aa 000001 7270 07 lxl7 1,dl 000711 aa 6 00114 3521 20 epp2 pr6|76,* ACC.string 000712 aa 2 00000 5005 17 a9bd pr2|0,7 000713 aa 6 00202 2521 00 spri2 pr6|130 000714 aa 777100 3520 04 epp2 -448,ic 000014 = 404000000005 000715 aa 6 00204 2521 00 spri2 pr6|132 000716 aa 777075 3520 04 epp2 -451,ic 000013 = 524000000020 000717 aa 6 00206 2521 00 spri2 pr6|134 000720 aa 777062 3520 04 epp2 -462,ic 000002 = 524000000074 000721 aa 6 00210 2521 00 spri2 pr6|136 000722 aa 6 00120 3521 00 epp2 pr6|80 000723 aa 6 00212 2521 00 spri2 pr6|138 000724 aa 6 00172 6211 00 eax1 pr6|122 000725 aa 020000 4310 07 fld 8192,dl 000726 la 4 00014 3521 20 epp2 pr4|12,* com_err_ 000727 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 229 segname_ACC.count = 32; 000730 aa 040000 2350 03 lda 16384,du 000731 aa 6 00102 3735 20 epp7 pr6|66,* extp 000732 aa 7 00012 5511 40 stba pr7|10,40 segname_ACC.count STATEMENT 1 ON LINE 230 end; STATEMENT 1 ON LINE 231 ext.slng = segname_ACC.count + 1; 000733 aa 6 00102 3735 20 epp7 pr6|66,* extp 000734 aa 7 00012 2351 00 lda pr7|10 segname_ACC.count 000735 aa 000077 7730 00 lrl 63 000736 aa 000000 6270 06 eax7 0,ql 000737 aa 000001 0760 07 adq 1,dl 000740 aa 7 00023 7561 00 stq pr7|19 ext.slng STATEMENT 1 ON LINE 233 segname_ACC.string = substr (ACC.string, 1, segname_ACC.count); 000741 aa 7 00012 2351 00 lda pr7|10 acc_string.count 000742 aa 000077 7730 00 lrl 63 000743 aa 6 00114 3715 20 epp5 pr6|76,* ACCp 000744 aa 040 140 100 540 mlr (pr,rl),(pr,rl),fill(040) 000745 aa 5 00000 20 0017 desc9a pr5|0(1),x7 ACC.string 000746 aa 7 00012 20 0006 desc9a pr7|10(1),ql segname_ACC.string STATEMENT 1 ON LINE 234 extract_symbol: if type = 4 | type = 5 | type = 6 then /* there is an entryname */ do; 000747 aa 6 00101 2361 00 ldq pr6|65 type 000750 aa 000005 1160 07 cmpq 5,dl 000751 aa 0 00512 7001 00 tsx0 pr0|330 r_e_as 000752 aa 6 00121 7551 00 sta pr6|81 000753 aa 000005 6010 04 tnz 5,ic 000760 000754 aa 000004 1160 07 cmpq 4,dl 000755 aa 000003 6000 04 tze 3,ic 000760 000756 aa 000006 1160 07 cmpq 6,dl 000757 aa 000075 6010 04 tnz 61,ic 001054 STATEMENT 1 ON LINE 238 ACCp = addrel (defptr, type_pr.offsetname_relp); 000760 aa 6 00112 3735 20 epp7 pr6|74,* typep 000761 aa 7 00001 2361 00 ldq pr7|1 type_pr.offsetname_relp 000762 aa 0 00374 3771 00 anaq pr0|252 = 000000000000 000000777777 000763 aa 6 00104 3521 66 epp2 pr6|68,*ql defptr 000764 aa 000000 0520 03 adwp2 0,du 000765 aa 6 00114 2521 00 spri2 pr6|76 ACCp STATEMENT 1 ON LINE 239 entryname_ACC.count = ACC.count; 000766 aa 2 00000 2351 00 lda pr2|0 ACC.count 000767 aa 6 00102 3715 20 epp5 pr6|66,* extp 000770 aa 5 00024 5511 40 stba pr5|20,40 entryname_ACC.count STATEMENT 1 ON LINE 240 if entryname_ACC.count > 256 then do; 000771 aa 5 00024 2351 00 lda pr5|20 entryname_ACC.count 000772 aa 000077 7730 00 lrl 63 000773 aa 000400 1160 07 cmpq 256,dl 000774 aa 000044 6044 04 tmoz 36,ic 001040 STATEMENT 1 ON LINE 242 call com_err_ (0, errname, "external entryname ^a longer than 256 chars; entryname truncated.", ACC.string); 000775 aa 2 00000 2351 00 lda pr2|0 acc_string.count 000776 aa 000077 7730 00 lrl 63 000777 aa 6 00232 7561 00 stq pr6|154 001000 aa 526000 2760 03 orq 175104,du 001001 aa 6 00120 7561 00 stq pr6|80 001002 aa 6 00233 4501 00 stz pr6|155 001003 aa 000 100 100 404 mlr (ic),(pr),fill(000) 001004 aa 777124 00 0104 desc9a -428,68 000127 = 145170164145 001005 aa 6 00140 00 0104 desc9a pr6|96,68 001006 aa 6 00233 3521 00 epp2 pr6|155 001007 aa 6 00174 2521 00 spri2 pr6|124 001010 aa 6 00044 3701 20 epp4 pr6|36,* 001011 ia 4 00010 3521 00 epp2 pr4|8 errname 001012 aa 6 00176 2521 00 spri2 pr6|126 001013 aa 6 00140 3521 00 epp2 pr6|96 001014 aa 6 00200 2521 00 spri2 pr6|128 001015 aa 000001 7270 07 lxl7 1,dl 001016 aa 6 00114 3521 20 epp2 pr6|76,* ACC.string 001017 aa 2 00000 5005 17 a9bd pr2|0,7 001020 aa 6 00202 2521 00 spri2 pr6|130 001021 aa 776773 3520 04 epp2 -517,ic 000014 = 404000000005 001022 aa 6 00204 2521 00 spri2 pr6|132 001023 aa 776770 3520 04 epp2 -520,ic 000013 = 524000000020 001024 aa 6 00206 2521 00 spri2 pr6|134 001025 aa 776753 3520 04 epp2 -533,ic 000000 = 524000000101 001026 aa 6 00210 2521 00 spri2 pr6|136 001027 aa 6 00120 3521 00 epp2 pr6|80 001030 aa 6 00212 2521 00 spri2 pr6|138 001031 aa 6 00172 6211 00 eax1 pr6|122 001032 aa 020000 4310 07 fld 8192,dl 001033 la 4 00014 3521 20 epp2 pr4|12,* com_err_ 001034 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 244 entryname_ACC.count = 256; 001035 aa 400000 2350 03 lda 131072,du 001036 aa 6 00102 3735 20 epp7 pr6|66,* extp 001037 aa 7 00024 5511 40 stba pr7|20,40 entryname_ACC.count STATEMENT 1 ON LINE 245 end; STATEMENT 1 ON LINE 246 ext.elng = entryname_ACC.count + 1; 001040 aa 6 00102 3735 20 epp7 pr6|66,* extp 001041 aa 7 00024 2351 00 lda pr7|20 entryname_ACC.count 001042 aa 000077 7730 00 lrl 63 001043 aa 000000 6270 06 eax7 0,ql 001044 aa 000001 0760 07 adq 1,dl 001045 aa 7 00125 7561 00 stq pr7|85 ext.elng STATEMENT 1 ON LINE 247 entryname_ACC.string = substr (ACC.string, 1, entryname_ACC.count); 001046 aa 7 00024 2351 00 lda pr7|20 acc_string.count 001047 aa 000077 7730 00 lrl 63 001050 aa 6 00114 3715 20 epp5 pr6|76,* ACCp 001051 aa 040 140 100 540 mlr (pr,rl),(pr,rl),fill(040) 001052 aa 5 00000 20 0017 desc9a pr5|0(1),x7 ACC.string 001053 aa 7 00024 20 0006 desc9a pr7|20(1),ql entryname_ACC.string STATEMENT 1 ON LINE 248 end; STATEMENT 1 ON LINE 249 if ((type = 5) & (i = 5)) then ext.dont_prelink = "1"b; 001054 aa 6 00121 2351 00 lda pr6|81 001055 aa 000007 6000 04 tze 7,ic 001064 001056 aa 6 00100 2361 00 ldq pr6|64 i 001057 aa 000005 1160 07 cmpq 5,dl 001060 aa 000004 6010 04 tnz 4,ic 001064 001061 aa 400000 2350 03 lda 131072,du 001062 aa 6 00102 3735 20 epp7 pr6|66,* extp 001063 aa 7 00130 2551 00 orsa pr7|88 ext.dont_prelink STATEMENT 1 ON LINE 252 return; 001064 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 254 error_skip: code = "1"b; 001065 aa 400000 2350 03 lda 131072,du 001066 aa 6 00032 3735 20 epp7 pr6|26,* 001067 aa 7 00004 7551 20 sta pr7|4,* code STATEMENT 1 ON LINE 256 return; 001070 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO init STATEMENT 1 ON LINE 258 init: entry; 001071 da 000047200000 001072 aa 000240 6270 00 eax7 160 001073 aa 7 00034 3521 20 epp2 pr7|28,* 001074 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001075 aa 000000000000 001076 aa 000000000000 STATEMENT 1 ON LINE 260 if bx_$debug = 1 then errname = "decode_link_"; 001077 aa 6 00044 3701 20 epp4 pr6|36,* 001100 la 4 00016 2361 20 ldq pr4|14,* bx_$debug 001101 aa 000001 1160 07 cmpq 1,dl 001102 aa 000005 6010 04 tnz 5,ic 001107 001103 aa 040 100 100 404 mlr (ic),(pr),fill(040) 001104 aa 776727 00 0014 desc9a -553,12 000032 = 144145143157 001105 ia 4 00010 00 0020 desc9a pr4|8,16 errname 001106 aa 000010 7100 04 tra 8,ic 001116 STATEMENT 1 ON LINE 262 else errname = bx_$caller; 001107 la 4 00020 3735 20 epp7 pr4|16,* bx_$caller 001110 aa 7 00000 2351 00 lda pr7|0 bx_$caller 001111 aa 7 00001 2361 00 ldq pr7|1 bx_$caller 001112 ia 4 00010 7571 00 staq pr4|8 errname 001113 aa 7 00002 2351 00 lda pr7|2 bx_$caller 001114 aa 7 00003 2361 00 ldq pr7|3 bx_$caller 001115 ia 4 00012 7571 00 staq pr4|10 errname STATEMENT 1 ON LINE 264 return; 001116 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 266 end decode_link_; END PROCEDURE decode_link_ ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group BULL including BULL HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell BULL Inc., Groupe BULL and BULL HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, BULL or BULL HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by BULL HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved