COMPILATION LISTING OF SEGMENT rebuild_object_ Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 07/16/86 0853.7 mst Wed Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 7 8 /****^ HISTORY COMMENTS: 9* 1) change(85-09-24,Elhard), approve(85-09-24,MCR7198), 10* audit(86-06-30,Weaver), install(86-07-16,MR12.0-1094): 11* Improved documentation and readability, changed errnameto use the 12* caller-supplied name instead of "binder_", changed to call 13* regenerate_all_links_ after normal resolution to pick up any *system links 14* not already regenerated, and to remove obsolete nonstandard object 15* support. 16* END HISTORY COMMENTS */ 17 18 19 /* format: style3,^indnoniterdo */ 20 21 /* ****************************************************** 22* * * 23* * * 24* * Copyright (c) 1972 by Massachusetts Institute of * 25* * Technology and Honeywell Information Systems, Inc. * 26* * * 27* * * 28* ****************************************************** */ 29 30 /**********************************************************************/ 31 /* */ 32 /* Name: rebuild_object_ */ 33 /* Input: compent_ptr */ 34 /* Function: given a pointer to the component table entry for */ 35 /* a given input object segment (compent_ptr), */ 36 /* relocate the text section for that component, */ 37 /* resolving all referenced links in the process, */ 38 /* regenerate any unreferenced *system links. */ 39 /* Then relocate the linkage section. Finally, we */ 40 /* relocate any external references within the */ 41 /* symbol section by generating a repatch table */ 42 /* entry for it and then attempting to resolve the */ 43 /* link. */ 44 /* Output: none. */ 45 /* */ 46 /**********************************************************************/ 47 48 /* Designed and initially coded by Michael J. Spier, September 30, 1970 */ 49 /* modified 75.06.20 by M. Weaver for separate static */ 50 /* modified 77.10.21 by M. Weaver to regenerate links when there is no text */ 51 /* modified Dec 1978 by David Spector to make repatch table automatically extensible */ 52 /* Modified 01/15/81 W. Olin Sibert to remove red shifts */ 53 /* Modified September 82 JMAthane to relocate links referenced by symbol tables */ 54 55 rebuild_object_: 56 procedure (compent_ptr); 57 58 declare compent_ptr pointer; 59 60 61 62 /* DECLARATION OF EXTERNAL ENTRIES */ 63 64 declare regenerate_all_links_ 65 external entry (pointer); 66 declare decode_link_ external entry (pointer) returns (bit (1) aligned); 67 declare get_relinfo_ external entry (pointer); 68 declare get_relinfo_$init external entry (pointer); 69 declare ext_link_ external entry (pointer); 70 declare generate_def_ external entry (pointer, pointer); 71 declare int_link_ external entry (pointer) returns (bit (1) aligned); 72 declare com_err_ external entry options (variable); 73 declare temp_mgr_$allocate ext entry (fixed bin); 74 declare temp_mgr_$reserve external entry (pointer); 75 76 /* DECLARATION OF INTERNAL STATIC VARIABLES */ 77 78 declare (textbase, defbase, intbase) 79 pointer internal static initial (null); 80 declare TRUE bit (1) static options (constant) init ("1"b); 81 declare FALSE bit (1) static options (constant) init ("0"b); 82 declare PR4 bit (3) static options (constant) init ("4"b3); 83 declare LDA_INSTR bit (9) static options (constant) init ("235"b3); 84 declare INDIRECT_TM bit (2) static options (constant) init ("01"b); 85 declare INDIRECT_TD bit (4) static options (constant) init (""b); 86 87 declare SPECIAL_CASE (4) bit (18) aligned static options (constant) init ("551"b3, 88 /* stba */ 89 "552"b3, /* stbq */ 90 "751"b3, /* stca */ 91 "752"b3); /* stcq */ 92 declare errname char (16) aligned internal static; 93 94 /* DECLARATION OF AUTOMATIC STORAGE VARIABLES */ 95 96 declare (i, textoffset, intoffset, int_reloc_offset, symboffset, textend, val, lng, intlimit, relocate) 97 fixed bin (18); 98 declare (wordp, argp, extp, sp, p, intp) 99 pointer; 100 declare (textptr, defptr) pointer; 101 declare opcode bit (18) aligned; 102 103 declare 1 ext aligned like external_ref; /* DECLARATION OF BUILTIN FUNCTIONS */ 104 105 declare (addr, addrel, bin, bit, fixed, hbound, null, size) 106 builtin; 107 108 /* DECLARATION OF BASED STRUCTURES */ 109 110 declare 1 word aligned based (wordp), 111 2 lhe18 bit (18) unaligned, 112 2 rhe18 bit (18) unaligned; 113 declare 1 instr aligned based, 114 2 lp bit (3) unaligned, 115 2 lp_offset bit (15) unaligned, 116 2 op_code bit (9) unaligned, 117 2 op_code_extension 118 bit (1) unaligned, 119 2 inhibit bit (1) unaligned, 120 2 use_pr bit (1) unaligned, 121 2 tm bit (2) unaligned, 122 2 td bit (4) unaligned; 123 declare 1 word_instr aligned based (wordp) like instr; 124 declare internal_static (lng) fixed bin based (p); 125 126 127 /* */ 128 ctp = bx_$ctp; 129 ext.compent_ptr, ctep = compent_ptr; /* copy argument into stack for efficiency */ 130 131 val = 0; /* reset conversion variable */ 132 extp = addr (ext); /* get address of external ref structure */ 133 134 135 136 call get_relinfo_$init (comp.crltp); /* initialize relocation bit scanner */ 137 138 argp = addr (ext.offset); 139 textoffset = comp.crelt; /* get relocation value for text section */ 140 intoffset = comp.creli; /* copy relocation value for internal static */ 141 symboffset = comp.crels; /* copy relocation value for symbol section */ 142 textptr = addrel (textbase, textoffset); /* compute pointer to text section */ 143 textend = comp.clngt; /* and get length of section */ 144 int_reloc_offset = intoffset; 145 if comp.separate_static = 0 146 then intlimit = comp.clngi + 8; /* offset of links within linkage sectioon */ 147 else do; 148 intlimit = 8; /* sep static doesn't have relocation bits */ 149 if bx_$bound_sep_stat = 0 150 then int_reloc_offset = int_reloc_offset + 8;/* in this case, refs to static are shifted to link */ 151 end; 152 defptr = comp.cdefp; /* copy pointer to definition section */ 153 154 ext.section = "text"; /* indicate referencing section */ 155 156 if comp.clngt = 0 157 then /* no text to relocate; regenerate links anyway */ 158 goto copy_unresolved_links; 159 160 ext.dont_relocate = "0"b; 161 162 relocate_text: 163 call get_relinfo_ (argp); /* get next non-absolute relocation code */ 164 if ext.relinfo = "overflow" 165 then goto copy_unresolved_links; 166 if ext.offset >= textend 167 then goto copy_unresolved_links; /* end of text section */ 168 169 /* First process text-to-text references */ 170 171 ext.ref_ptr, wordp = addrel (textptr, ext.offset);/* compute pointer to specified word */ 172 if ext.side = "lhe" 173 then relocate = fixed (word.lhe18, 18); 174 else relocate = fixed (word.rhe18, 18); 175 176 if ext.relinfo = "text " 177 then /* relocate by text relocation counter */ 178 do; 179 relocate = relocate + textoffset; 180 goto restore_text; 181 end; 182 183 /* Now process references to the linkage section */ 184 185 else if ext.relinfo = "lnk18 " 186 then do; 187 ext.loffset = relocate; 188 if decode_link_ (extp) = "1"b 189 then goto error_skip; 190 call ext_link_ (extp); 191 goto relocate_text; 192 end; 193 194 else if ext.relinfo = "int18 " 195 then do; 196 relocate = relocate + int_reloc_offset; 197 goto restore_text; 198 end; 199 200 else if ext.relinfo = "symb " 201 then do; 202 relocate = relocate + symboffset; 203 goto restore_text; 204 end; 205 206 else if ext.relinfo = "int15 " 207 then do; 208 if ext.side ^= "lhe" 209 then do; 210 wrong_halfword: 211 call com_err_ (0, errname, "relocation ^a illegal for right half of word ^o in text of ^a", 212 ext.relinfo, ext.offset, comp.filename); 213 goto error_skip; 214 end; 215 relocate = fixed (word_instr.lp_offset, 15); 216 relocate = relocate + int_reloc_offset; 217 word_instr.lp_offset = bit (bin (relocate, 15), 15); 218 goto relocate_text; 219 end; 220 221 else if ext.relinfo = "lnk15 " 222 then do; 223 if ext.side ^= "lhe" 224 then goto wrong_halfword; 225 if word_instr.use_pr ^= "1"b 226 then do; 227 illegal_link15: 228 call com_err_ (0, errname, "illegal instruction format word ^o in text of ^a", ext.offset, 229 comp.filename); 230 goto error_skip; 231 end; 232 opcode = word_instr.op_code; 233 do i = 1 to 4; 234 if opcode = SPECIAL_CASE (i) 235 then goto illegal_link15; 236 end; 237 if word_instr.tm = "10"b 238 then goto illegal_link15; /* indirect and tally */ 239 if word_instr.tm ^= "11"b 240 then /* indirect then index is OK */ 241 if word_instr.td ^= "0000"b 242 then goto illegal_link15; 243 ext.loffset = fixed (word_instr.lp_offset, 15); 244 ext.dont_prelink = "0"b; 245 if decode_link_ (extp) = "1"b 246 then goto error_skip; 247 if ext.trap ^= "0"b 248 then if bin (ext.type, 18) ^= 6 249 then ext.dont_prelink = "1"b; /* trap is just offset of init struc for type 6 */ 250 /* if link target is found, trapping isn't necessary */ 251 252 if int_link_ (extp) = "1"b 253 then goto relocate_text; 254 call ext_link_ (extp); 255 goto relocate_text; 256 end; 257 258 else if ext.relinfo = "negtext " 259 then do; 260 relocate = -1; 261 if ext.side = "lhe" 262 then addr (relocate) -> word.rhe18 = word.lhe18; 263 else addr (relocate) -> word.rhe18 = word.rhe18; 264 relocate = relocate + textoffset; 265 goto restore_text; 266 end; 267 268 else if ext.relinfo = "def " 269 then do; 270 p = comp.insymentp; 271 do i = 1 to p -> insym.n_insyms - 1; /* try to find def being referenced */ 272 if p -> entry (i).def_offset = relocate 273 then do; /* have matching def */ 274 call generate_def_ (ctep, addr (p -> insym.entry (i))); 275 /* this def has to be regenerated */ 276 if ext.side = "lhe" 277 then word.lhe18 = comp.current_def; 278 else word.rhe18 = comp.current_def; 279 goto relocate_text; 280 end; 281 end; 282 call com_err_ (0, errname, "def|^o referenced by text|^o of ^a^/^-is not the beginning of a definition", 283 relocate, ext.offset, comp.filename); 284 goto error_skip; 285 end; 286 287 else if ext.relinfo = "selfrel " 288 then goto relocate_text; /* treat self-relative as absolute */ 289 290 call com_err_ (0, errname, "relocation ^a illegal for word ^o in text of ^a", ext.relinfo, ext.offset, 291 comp.filename); 292 293 error_skip: 294 bx_$fatal_error = 1; 295 goto relocate_text; 296 297 restore_text: 298 if ext.side = "lhe" 299 then word.lhe18 = addr (relocate) -> word.rhe18; 300 else word.rhe18 = addr (relocate) -> word.rhe18; 301 goto relocate_text; 302 303 copy_unresolved_links: 304 call regenerate_all_links_ (ctep); /* regenerate all links not already covered */ 305 306 lng = comp.clngi; /* get length of internal static section */ 307 if lng = 0 308 then goto relocate_symbol; /* no internal static for this component */ 309 intp = addrel (bx_$tintp, intoffset); /* pointer to new IS location */ 310 intp -> internal_static = comp.cstatp -> internal_static; 311 if intlimit = 8 312 then goto relocate_symbol; /* there's nothing in linkage to relocate */ 313 314 call get_relinfo_$init (comp.crllp); /* initiate search of rel_link */ 315 relocate_linkage: 316 call get_relinfo_ (argp); 317 if ext.relinfo = "overflow" 318 then goto relocate_symbol; 319 if ext.offset < 8 320 then goto relocate_linkage; 321 if ext.offset >= intlimit 322 then goto relocate_symbol; 323 wordp = addrel (intp, ext.offset - 8); /* pointer to relocatable word */ 324 if ext.side = "lhe" 325 then relocate = fixed (word.lhe18, 18); 326 else relocate = fixed (word.rhe18, 18); 327 328 if ext.relinfo = "text " 329 then do; 330 relocate = relocate + textoffset; 331 goto restore_linkage; 332 end; 333 334 else do; 335 call com_err_ (0, errname, "relocation ^a illegal for word ^o in linkage of ^a", ext.relinfo, ext.offset, 336 comp.filename); 337 bx_$fatal_error = 1; 338 goto relocate_linkage; 339 end; 340 341 restore_linkage: 342 if ext.side = "lhe" 343 then word.lhe18 = addr (relocate) -> word.rhe18; 344 else word.rhe18 = addr (relocate) -> word.rhe18; 345 goto relocate_linkage; 346 347 348 relocate_symbol: 349 sp = comp.csymp; 350 ext.section = "symb"; 351 call get_relinfo_$init (comp.crlsp); 352 lng = comp.clngns; 353 ext.offset = 0; 354 do while (ext.offset <= lng); /* relocate symbol tree */ 355 call get_relinfo_ (argp); /* get next relocation code */ 356 if ext.relinfo = "overflow" 357 then goto done; 358 if ext.offset > lng 359 then goto done; /* get_relinfo_ doesn't know about removal of symbtree */ 360 val = 0; 361 if ext.relinfo ^= "lnk18 " 362 then goto skip_this; /* check only for external refs */ 363 wordp = addrel (sp, ext.offset); 364 if ext.side = "lhe" 365 then addr (val) -> word.rhe18 = word.lhe18; 366 else addr (val) -> word.rhe18 = word.rhe18; 367 rptp = bx_$last_rptp; 368 i, rpt.npt = rpt.npt + 1; /* increment size of repatch table */ 369 if i = hbound (rpt.entry, 1) 370 then do; /* Allocate new chunk of repatch table */ 371 call temp_mgr_$allocate (size (rpt)); 372 p = bx_$freep; 373 bx_$last_rptp = p; 374 rpt.thread = p; 375 call temp_mgr_$reserve (addrel (p, size (rpt))); 376 p -> rpt.thread = null; 377 p -> rpt.npt = 0; 378 end; 379 rptep = addr (rpt.entry (i)); /* pointer to new repatch table entry */ 380 rpte.pbase = "s"; /* patching relative to symbol section */ 381 rpte.code = "t"; /* patch with 0 relocation value */ 382 rpte.poffset = bit (bin ((ext.offset + comp.crels), 18), 18); 383 rpte.halfword = ext.side; /* get halfword to patch */ 384 385 ext.loffset = val; /* store offset of referenced link */ 386 val = 0; 387 ext.ref_ptr = addr (val); 388 if decode_link_ (extp) = "1"b 389 then goto skip_this; 390 391 /* A symbol table reference to an external must always have a link 392* associated with it. But if the external reference is to another 393* component, the link is converted to a type 1 link to the other component's 394* text or linkage section. This avoids having to retain segdefs and 395* add segment names that aren't otherwise needed. */ 396 397 /* create a "lda 4|nn,*" instruction */ 398 399 addr (val) -> word.lhe18 = addr (val) -> word.rhe18; 400 addr (val) -> instr.lp = PR4; 401 addr (val) -> instr.op_code = LDA_INSTR; 402 addr (val) -> instr.op_code_extension = FALSE; 403 addr (val) -> instr.inhibit = FALSE; 404 addr (val) -> instr.use_pr = TRUE; 405 addr (val) -> instr.tm = INDIRECT_TM; 406 addr (val) -> instr.td = INDIRECT_TD; 407 408 ext.dont_prelink = "0"b; 409 ext.side = "lhe"; 410 ext.relinfo = "link15"; 411 ext.section = "text"; 412 ext.offset = 0; 413 ext.dont_relocate = "0"b; 414 if int_link_ (extp) = "1"b 415 then do; 416 if (addr (val) -> instr.tm = "00"b) & (addr (val) -> instr.td = "0000"b) 417 & (^addr (val) -> instr.use_pr) 418 then do; /* relocated to "lda nn" */ 419 ext.segname = "*text"; 420 ext.code15 = "0"b; 421 end; 422 else if (addr (val) -> instr.tm = "00"b) & (addr (val) -> instr.td = "0000"b) 423 & (addr (val) -> instr.use_pr) & (addr (val) -> instr.lp = PR4) 424 then do; /* relocated to "lda 4|nn" */ 425 ext.segname = "*link"; 426 ext.code15 = "000000000000000001"b; 427 end; 428 else goto external_link; 429 ext.slng = 6; 430 ext.elng = 0; 431 ext.type = "000000000000000001"b; 432 addr (val) -> instr.lp = "000"b; 433 ext.expr = addr (val) -> word.lhe18; 434 ext.link_tm, ext.link_td = "0"b; 435 end; 436 external_link: 437 ext.section = "symb"; 438 addr (val) -> instr.lp = "000"b; 439 call ext_link_ (extp); /* and regenerate the very same link */ 440 if ext.side = "lhe" /* and store in repatch table */ 441 then rpte.pexpr = addr (val) -> word.lhe18; 442 else rpte.pexpr = addr (val) -> word.rhe18; 443 444 skip_this: 445 end; 446 447 done: 448 return; 449 450 init: 451 entry; 452 453 textbase = bx_$temp_bsegp; /* pointer to base of new text section */ 454 defbase = bx_$tdefp; /* pointer to base of new definition section */ 455 intbase = bx_$tintp; /* pointer to base of new internal static section */ 456 if bx_$debug = 1 457 then errname = "rebuild_object_"; 458 else errname = bx_$caller; 459 460 return; 461 462 1 1 1 2 /* the following is include file extref.incl.pl1 */ 1 3 1 4 1 5 /****^ HISTORY COMMENTS: 1 6* 1) change(85-09-24,Elhard), approve(85-09-24,MCR7198), 1 7* audit(86-06-30,Weaver), install(86-07-16,MR12.0-1094): 1 8* changed to be a complete structure rather than a starting with a level 2 1 9* variable. 1 10* END HISTORY COMMENTS */ 1 11 1 12 declare 1 external_ref aligned based, 1 13 2 compent_ptr pointer, /* pointer to referencing component's entry */ 1 14 2 ref_ptr pointer, /* pointer to referencing textword */ 1 15 2 offset fixed bin(18), /* offset of referencing instruction in text */ 1 16 2 side char(3) aligned, /* 'rhe' or 'lhe' for referencing halfword */ 1 17 2 relinfo char(8) aligned, /* symbolic relocation information */ 1 18 2 section char(4) aligned, /* referencing section of object */ 1 19 2 loffset fixed bin, /* link's offset in linkage section */ 1 20 2 segname char(33) aligned, /* segname part of external name */ 1 21 2 slng fixed bin, /* length of preceeding ACC string (incl count) */ 1 22 2 entryname char(257) aligned, /* entry part of external name */ 1 23 2 elng fixed bin, /* length of preceeding ACC string (incl count) */ 1 24 2 type bit(18) unaligned, /* type of link */ 1 25 2 trap bit(18) unaligned, /* trap before link if non-zero */ 1 26 2 expr bit(18) unaligned, /* the expression value */ 1 27 2 code15 bit(18) unaligned, /* if type of link is 1 or 5, this is the segbase code */ 1 28 2 dont_prelink bit(1) unaligned, /* if = "1" then dont snap internal link */ 1 29 2 link_tm bit(2) unaligned, /* the original link's TM modifier */ 1 30 2 link_td bit(4) unaligned, /* the original link's TD modifier */ 1 31 2 dont_relocate bit (1) unaligned, /* "1"b -> no referencing instruction */ 1 32 2 padding(2) fixed bin; /* to isolate from other variables */ 463 464 2 1 /**** START OF: bindext.incl.pl1 * * * * * */ 2 2 2 3 2 4 /****^ HISTORY COMMENTS: 2 5* 1) change(86-06-14,Elhard), approve(86-06-14,MCR7198), 2 6* audit(86-06-30,Weaver): 2 7* Added declarations for bx_$caller and bx_$temp_bsegp. 2 8* END HISTORY COMMENTS */ 2 9 2 10 /* DECLARATION OF BINDER'S MAIN DATABASE */ 2 11 2 12 /* include file bindext.incl.pl1 */ 2 13 2 14 /* Modified Sept 1978 by David Spector for using "get_temp_segment_" in temp_mgr_ */ 2 15 /* Modified Dec 1978 by David Spector for making repatch table automatically extensible */ 2 16 /* Modified 01/15/81 W. Olin Sibert for new options */ 2 17 2 18 declare bx_$vers_name char (168) aligned external; /* ASCII version name, in ACC form */ 2 19 declare bx_$vers_number fixed bin external; /* integer part of version number */ 2 20 declare bx_$size fixed bin external; /* size of main data base, for resetting */ 2 21 declare bx_$snt_limit fixed bin external; /* preset limit for segname table */ 2 22 declare bx_$oddname_limit fixed bin external; /* preset limit for oddname table */ 2 23 declare bx_$stringmap_limit fixed bin external; /* preset limit for stringmap table */ 2 24 declare bx_$addname_limit fixed bin external; /* preset limit for addname table */ 2 25 declare bx_$area_begin fixed bin (18) external; /* beginning of main data base */ 2 26 declare bx_$ctp pointer external; /* pointer to component table */ 2 27 declare bx_$freep pointer external; /* pointer to beginning of free area */ 2 28 declare bx_$isp pointer external; /* pointer to first insym table */ 2 29 declare bx_$inpp pointer external; /* pointer to binder's input structure */ 2 30 declare bx_$bsegp pointer external; /* pointer to base of new object segment */ 2 31 declare bx_$temp pointer external; /* pointer to threaded list of temp segments */ 2 32 declare bx_$optp pointer external; /* pointer to options table */ 2 33 declare bx_$odnp pointer external; /* pointer to oddname table */ 2 34 declare bx_$first_rptp pointer external; /* pointer to first chunk of repatch table */ 2 35 declare bx_$last_rptp pointer external; /* pointer to current chunk of threaded repatch table */ 2 36 declare bx_$adnp pointer external; /* pointer to addname table */ 2 37 declare bx_$bindmap_def pointer external; /* pointer to new object's "bind_map" definition */ 2 38 declare bx_$bdefp pointer external; /* pointer to new object's definition section */ 2 39 declare bx_$bstatp pointer external; /* pointer to new object's static section */ 2 40 declare bx_$blnkp pointer external; /* pointer to new object's linkage section */ 2 41 declare bx_$bsymp pointer external; /* pointer to new object's symbol section */ 2 42 declare bx_$sntp pointer external; /* pointer to segname table */ 2 43 declare bx_$tdefp pointer external; /* pointer to temporary new definition section */ 2 44 declare bx_$tintp pointer external; /* pointer to temporary new internal static */ 2 45 declare bx_$tlinkp pointer external; /* pointer to temporary new linkage section */ 2 46 declare bx_$strmp pointer external; /* pointer to stringmap table */ 2 47 declare bx_$n_firstrefs fixed bin external; /* count of components with firstref traps */ 2 48 declare bx_$bound_segname char (32) aligned external; /* name of new bound object */ 2 49 declare bx_$fatal_error fixed bin external; /* 1 -> fatal error was detected */ 2 50 declare bx_$bseg_acinfop pointer external; /* new object's acinfop for "tssi_" */ 2 51 declare bx_$bseg_bitcount fixed bin (24) external; /* new object's bitcount */ 2 52 declare bx_$o_lng fixed bin (19) external; /* length of new bound object */ 2 53 declare bx_$t_lng fixed bin (18) external; /* length of new text section */ 2 54 declare bx_$d_lng fixed bin (18) external; /* length of new definition section */ 2 55 declare bx_$i_lng fixed bin external; /* length of new static section */ 2 56 declare bx_$l_lng fixed bin external; /* length of new linkage section */ 2 57 declare bx_$s_lng fixed bin (18) external; /* length of new symbol section */ 2 58 declare bx_$addname fixed bin external; /* 1 -> addname option specified */ 2 59 declare bx_$debug fixed bin external; /* 1 -> debug option was specified */ 2 60 declare bx_$brief fixed bin external; /* 1 -> brief option was specified */ 2 61 declare bx_$force_order fixed bin external; /* 1 -> -force_order specified on command line */ 2 62 declare bx_$has_sep_stat fixed bin external; /* 1 -> a comp has nonzero sep static */ 2 63 declare bx_$has_comb_stat fixed bin external; /* 1 -> a comp has nonzero combined static */ 2 64 declare bx_$bound_sep_stat fixed bin external; /* 1 -> bound segment has separate static */ 2 65 declare bx_$perprocess_static fixed bin external; /* 1 -> bound segment has perprocess static switch on */ 2 66 declare bx_$standard fixed bin external; /* 1 -> bound seg is in standard format */ 2 67 declare bx_$bproc fixed bin external; /* 1 -> at least one component is a procedure */ 2 68 declare bx_$textlng fixed bin (18) external; /* length of new pure text portion */ 2 69 declare bx_$curdeflng fixed bin (18) external; /* current length of new definition section */ 2 70 declare bx_$tintlng fixed bin external; /* current length of new internal static */ 2 71 declare bx_$maxlinklng fixed bin external; /* maximum size linkage section may attain */ 2 72 declare bx_$maxdeflng fixed bin (18) external; /* maximum size definition section may attain */ 2 73 declare bx_$tlinklng fixed bin external; /* current size of linkage section */ 2 74 declare bx_$ncomp fixed bin external; /* number of component objects to be bound */ 2 75 declare bx_$v_lng fixed bin external; /* length of version name string */ 2 76 declare bx_$n_lng fixed bin external; /* length of bound segment name string */ 2 77 declare bx_$nsymdefs fixed bin external; /* count of non-null symbol definitions */ 2 78 declare bx_$nsegdefs fixed bin external; /* count of non-null segment name definitions */ 2 79 declare bx_$temp_bsegp ptr external; /* pointer to the temporary bound seg in the process dir */ 2 80 declare bx_$caller char (32) aligned external; /* name of the caller of bind_ for error messages */ 2 81 2 82 /**** END OF: bindext.incl.pl1 * * * * * */ 465 466 3 1 /* Include file comptbl.incl.pl1 */ 3 2 3 3 3 4 /****^ HISTORY COMMENTS: 3 5* 1) change(85-09-24,Elhard), approve(85-09-24,MCR7198), 3 6* audit(86-06-30,Weaver), install(86-07-16,MR12.0-1094): 3 7* added link_regeneration_table pointer (clrtp) to component structure. 3 8* END HISTORY COMMENTS */ 3 9 3 10 declare (ctp, ctep) pointer; 3 11 3 12 declare comp_tbl(1000) pointer based(ctp); 3 13 3 14 3 15 3 16 declare 1 comp aligned based(ctep), /* declaration of a component entry */ 3 17 2 filename char(32) aligned, /* object segment's file name */ 3 18 2 compiler char(8) aligned, /* name of compiler which produced this object */ 3 19 2 format char(8) aligned, /* format of object code (PL/1, ALM etc.) */ 3 20 3 21 2 ctxtp pointer, /* pointer to base of text section */ 3 22 2 cdefp pointer, /* pointer to definitions */ 3 23 2 cstatp pointer, /* pointer to static section */ 3 24 2 clnkp pointer, /* pointer to head of linkage section */ 3 25 2 csymp pointer, /* pointer to symbol table */ 3 26 2 cfrtp pointer, /* pointer to first ref trap array */ 3 27 2 crltp pointer, /* pointer to rel-text */ 3 28 2 crllp pointer, /* pointer to rel-link */ 3 29 2 crlsp pointer, /* pointer to rel-symb */ 3 30 2 insymentp pointer, /* pointer to this component's insym table entry */ 3 31 2 clrtp pointer, /* pointer to link_regeneration_table */ 3 32 2 unused_1 pointer, /* reserve */ 3 33 2 unused_2 pointer, /* reserve */ 3 34 2 unused_3 fixed bin, /* reserve */ 3 35 2 cindex fixed bin, /* this entry's index in table */ 3 36 2 standard_object fixed bin, /* 1 -> this object has standard format */ 3 37 2 defthread fixed bin, /* beginning of comp's definition block */ 3 38 2 fn_lng fixed bin, /* length of filename string */ 3 39 2 ignore fixed bin, /* 1->ignore erroneous entry */ 3 40 2 io_table fixed bin, /* 1 -> symbol table needed for io */ 3 41 2 table_deleted fixed bin, /* 1 -> symbol table is being deleted */ 3 42 2 separate_static fixed bin, /* 1 -> component has nonzero separate static */ 3 43 (2 defblockp, /* rel pointer to component's definition block */ 3 44 2 current_def) bit(18) unaligned, /* rel pointer to component's current def */ 3 45 2 cbitcount fixed bin(24), /* bitcount of component segment */ 3 46 2 clngt fixed bin(18), /* length of pure text section */ 3 47 2 cpadt fixed bin, /* number of added padwords for text */ 3 48 2 clngd fixed bin(18), /* length of definition section */ 3 49 2 clngi fixed bin, /* length of internal static */ 3 50 2 cpadi fixed bin, /* number of added padwords for internal static */ 3 51 2 clngs fixed bin(18), /* length of original symbol table */ 3 52 2 clngns fixed bin(18), /* length of new symb section stripped of relbits */ 3 53 2 clngss fixed bin(18), /* length of symbol section minus relbits and table */ 3 54 2 cpads fixed bin, /* padding length if section length is odd */ 3 55 2 n_sym_blks fixed bin, /* number of symbol blocks */ 3 56 3 57 2 crelt fixed bin, /* relocation value for text */ 3 58 2 creli fixed bin, /* relocation value for internal static */ 3 59 2 crels fixed bin, /* relocation value for symbol section */ 3 60 2 last_item fixed bin; /*** MUST ALWAYS BE LAST IN STRUCTURE ***/ 3 61 3 62 3 63 467 468 4 1 /* Include file insym.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), install(86-07-16,MR12.0-1094): 4 7* Changed to eliminate the use of "p" as a pointer to base the structures 4 8* on. 4 9* END HISTORY COMMENTS */ 4 10 4 11 4 12 declare 1 insym aligned based, /* declaration of the INSYM structure */ 4 13 4 14 2 thread pointer, /* pointer to the next insym structure */ 4 15 2 n_insyms fixed bin, /* number of insym entries */ 4 16 (2 retained, /* def(s) have been retained for this component */ 4 17 2 global_nolink) bit(1) unaligned, /* don't prelink any reference to/from this object */ 4 18 2 entry(1000) like is; 4 19 4 20 declare 1 is aligned based, 4 21 (2 next_ext_ptr bit(18), /* thread to next def */ 4 22 2 trap_ptr bit(18), /* trap pointer */ 4 23 2 value bit(18), /* symbol's offset value */ 4 24 2 class bit(18)) unaligned, /* corresponding section of the object */ 4 25 2 def_offset fixed bin(18), /* offset of def in original def section */ 4 26 2 symbol char(257) aligned, /* the symbol in ACC string form */ 4 27 2 lng fixed bin, /* length in chars of ACC string (incl. ACC count) */ 4 28 2 nargs fixed bin, /* # of args expected by entry */ 4 29 2 descr_ptr pointer, /* ptr to descriptor ptr array */ 4 30 (2 null_entry, /* 1->type 3 (seg|expr) entry, no insym symbol */ 4 31 2 snapped, /* 0->not referenced, 1->link snapped */ 4 32 2 has_descr, /* 1->entry has valid descriptors */ 4 33 2 entrypoint, /* 0->segdef, 1->entrypoint; meaningful only for standard */ 4 34 2 retain_flag, /* 1->turn on retain flag; was on in original */ 4 35 2 delete, /* 1->don't regenerate this def in any case */ 4 36 2 ignore, /* 1->regenerate but ignore */ 4 37 2 regenerated, /* this definition already regenerated */ 4 38 2 retain, /* 0->don't regenerate, 1->retain definition */ 4 39 2 no_link, /* don't prelink to this symbol */ 4 40 2 duplicate) bit(1) unaligned, /* this symbol name duplicated in another block */ 4 41 2 defrel bit (18); /* offset in defs of regenerated definition */ 4 42 4 43 4 44 469 470 5 1 /* Include file bndtbl.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 and eliminated the use of "p" as a pointer 5 8* to base structures on.. 5 9* END HISTORY COMMENTS */ 5 10 5 11 /* DIVERSE BINDER TABLES */ 5 12 5 13 /* Modified Oct 1978 by David Spector for hash coding snt and strm */ 5 14 /* Modified Dec 1978 by David Spector for making repatch table 5 15* automatically extensible */ 5 16 5 17 declare (sntp, adnp, odnp, rptp, rptep, strmp, lrtp) pointer; 5 18 5 19 /* The SEGNAME table - segnames and synonyms of all components */ 5 20 5 21 declare 1 snt aligned based(sntp), 5 22 2 hash_table (0:210) unaligned ptr, /* prime length */ 5 23 2 max_size fixed bin, /* size limit of allocated segname table */ 5 24 2 n_names fixed bin, /* number of segname-table entries used */ 5 25 2 entry(1000) like seg; 5 26 5 27 /* declaration of a SEGNAME entry */ 5 28 5 29 declare 1 seg aligned based, /* redeclaration of a single segname */ 5 30 2 name char(33) aligned, /* segname in ACC string format */ 5 31 2 lng fixed bin, /* length of segname, incl ACC count */ 5 32 2 addname fixed bin, /* 1-> add name to bound segment */ 5 33 2 defrel bit(18), /* offset in defs of new definition */ 5 34 2 comp pointer, /* pointer to associated component table */ 5 35 2 hash_thread ptr; /* thread to next "seg" in bucket */ 5 36 5 37 5 38 /* the ADDNAME table - list of names specified by "Addname" statement */ 5 39 5 40 declare 1 an aligned based(adnp), 5 41 2 max_size fixed bin, /* size limit of addname table */ 5 42 2 n_an fixed bin, /* number of names to add */ 5 43 2 syn(1000) char(32) aligned; /* contains the names to be added */ 5 44 5 45 5 46 /* The ODDNAME table - scratchpad memory to suppress redundant error messages */ 5 47 5 48 declare 1 od aligned based(odnp), 5 49 2 max_size fixed bin, /* max size of table */ 5 50 2 n_odds fixed bin, /* current size of table */ 5 51 2 entry(1000), 5 52 3 name char(289) aligned; 5 53 5 54 5 55 /* The REPATCH table - of halfwords to be relocated at a later time */ 5 56 5 57 declare 1 rpt aligned based(rptp), 5 58 2 thread unaligned ptr, /* To next rpt (null at end) */ 5 59 2 npt fixed bin, 5 60 2 entry(1000) like rpte aligned; 5 61 5 62 5 63 declare 1 rpte aligned based(rptep), /* declaration of single repatch table entry */ 5 64 2 poffset bit(18) unaligned, /* offset into text of word to be patched */ 5 65 2 pexpr bit(18) unaligned, /* value to add to patched halfword */ 5 66 2 halfword char(3) aligned, /* designates wordhalf to be patched */ 5 67 2 pbase char(1) unaligned, /* section designator of word to be patched */ 5 68 2 code char(1) unaligned; /* code of section base to be used as patch value */ 5 69 5 70 5 71 /* The STRINGMAP table - to avoid redundant strings in definition section */ 5 72 5 73 declare 1 strm aligned based(strmp), 5 74 2 hash_table (0:862) fixed bin(17), /* prime length */ 5 75 2 max_size fixed bin, 5 76 2 nstr fixed bin, 5 77 2 entry(2048) unaligned, 5 78 3 map bit(18), /* rel pointer to string in def section */ 5 79 3 hash_thread fixed bin(17); /* index of next strm.entry in hash bucket */ 5 80 5 81 /* The LINK_REGENERATION table - to flag links which have and */ 5 82 /* have not been regenerated to insure generation of all links */ 5 83 5 84 declare 1 lrt aligned based (lrtp), 5 85 2 count fixed bin, 5 86 2 start_offset fixed bin (18) unsigned, 5 87 2 regenerated (0 refer (lrt.count)) 5 88 bit (18) unaligned; 5 89 5 90 declare UNRESOLVED bit (18) static options (constant) init ("000000"b3); 5 91 declare INTERNALLY_RESOLVED bit (18) static options (constant) init ("777777"b3); 471 472 473 end rebuild_object_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/16/86 0846.5 rebuild_object_.pl1 >spec>install>1094>rebuild_object_.pl1 463 1 07/16/86 0845.6 extref.incl.pl1 >spec>install>1094>extref.incl.pl1 465 2 07/16/86 0841.5 bindext.incl.pl1 >spec>install>1094>bindext.incl.pl1 467 3 07/16/86 0845.6 comptbl.incl.pl1 >spec>install>1094>comptbl.incl.pl1 469 4 07/16/86 0845.8 insym.incl.pl1 >spec>install>1094>insym.incl.pl1 471 5 07/16/86 0845.5 bndtbl.incl.pl1 >spec>install>1094>bndtbl.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. FALSE constant bit(1) initial unaligned dcl 81 ref 402 403 INDIRECT_TD constant bit(4) initial unaligned dcl 85 ref 406 INDIRECT_TM constant bit(2) initial unaligned dcl 84 ref 405 LDA_INSTR constant bit(9) initial unaligned dcl 83 ref 401 PR4 constant bit(3) initial unaligned dcl 82 ref 400 422 SPECIAL_CASE 000000 constant bit(18) initial array dcl 87 ref 234 TRUE constant bit(1) initial unaligned dcl 80 ref 404 addr builtin function dcl 105 ref 132 138 261 263 274 274 297 300 341 344 364 366 379 387 399 399 400 401 402 403 404 405 406 416 416 416 422 422 422 422 432 433 438 440 442 addrel builtin function dcl 105 ref 142 171 309 323 363 375 375 argp 000114 automatic pointer dcl 98 set ref 138* 162* 315* 355* bin builtin function dcl 105 ref 217 247 382 bit builtin function dcl 105 ref 217 382 bx_$bound_sep_stat 000064 external static fixed bin(17,0) dcl 2-64 ref 149 bx_$caller 000070 external static char(32) dcl 2-80 ref 458 bx_$ctp 000046 external static pointer dcl 2-26 ref 128 bx_$debug 000062 external static fixed bin(17,0) dcl 2-59 ref 456 bx_$fatal_error 000060 external static fixed bin(17,0) dcl 2-49 set ref 293* 337* bx_$freep 000050 external static pointer dcl 2-27 ref 372 bx_$last_rptp 000052 external static pointer dcl 2-35 set ref 367 373* bx_$tdefp 000054 external static pointer dcl 2-43 ref 454 bx_$temp_bsegp 000066 external static pointer dcl 2-79 ref 453 bx_$tintp 000056 external static pointer dcl 2-44 ref 309 455 cdefp 16 based pointer level 2 dcl 3-16 ref 152 clngi 64 based fixed bin(17,0) level 2 dcl 3-16 ref 145 306 clngns 67 based fixed bin(18,0) level 2 dcl 3-16 ref 352 clngt 61 based fixed bin(18,0) level 2 dcl 3-16 ref 143 156 code 2(09) based char(1) level 2 packed unaligned dcl 5-63 set ref 381* code15 127(18) 000134 automatic bit(18) level 2 packed unaligned dcl 103 set ref 420* 426* com_err_ 000040 constant entry external dcl 72 ref 210 227 282 290 335 comp based structure level 1 dcl 3-16 compent_ptr parameter pointer dcl 58 in procedure "rebuild_object_" ref 55 129 compent_ptr 000134 automatic pointer level 2 in structure "ext" dcl 103 in procedure "rebuild_object_" set ref 129* creli 74 based fixed bin(17,0) level 2 dcl 3-16 ref 140 crels 75 based fixed bin(17,0) level 2 dcl 3-16 ref 141 382 crelt 73 based fixed bin(17,0) level 2 dcl 3-16 ref 139 crllp 32 based pointer level 2 dcl 3-16 set ref 314* crlsp 34 based pointer level 2 dcl 3-16 set ref 351* crltp 30 based pointer level 2 dcl 3-16 set ref 136* cstatp 20 based pointer level 2 dcl 3-16 ref 310 csymp 24 based pointer level 2 dcl 3-16 ref 348 ctep 000272 automatic pointer dcl 3-10 set ref 129* 136 139 140 141 143 145 145 152 156 210 227 270 274* 276 278 282 290 303* 306 310 314 335 348 351 352 382 ctp 000270 automatic pointer dcl 3-10 set ref 128* current_def 57(18) based bit(18) level 2 packed unaligned dcl 3-16 ref 276 278 decode_link_ 000024 constant entry external dcl 66 ref 188 245 388 def_offset 6 based fixed bin(18,0) array level 3 dcl 4-12 set ref 272 defbase 000012 internal static pointer initial dcl 78 set ref 454* defptr 000130 automatic pointer dcl 100 set ref 152* dont_prelink 130 000134 automatic bit(1) level 2 packed unaligned dcl 103 set ref 244* 247* 408* dont_relocate 130(07) 000134 automatic bit(1) level 2 packed unaligned dcl 103 set ref 160* 413* elng 125 000134 automatic fixed bin(17,0) level 2 dcl 103 set ref 430* entry 2 based structure array level 2 in structure "rpt" dcl 5-57 in procedure "rebuild_object_" set ref 369 379 entry 4 based structure array level 2 in structure "insym" dcl 4-12 in procedure "rebuild_object_" set ref 274 274 errname 000016 internal static char(16) dcl 92 set ref 210* 227* 282* 290* 335* 456* 458* expr 127 000134 automatic bit(18) level 2 packed unaligned dcl 103 set ref 433* ext 000134 automatic structure level 1 dcl 103 set ref 132 ext_link_ 000032 constant entry external dcl 69 ref 190 254 439 external_ref based structure level 1 dcl 1-12 extp 000116 automatic pointer dcl 98 set ref 132* 188* 190* 245* 252* 254* 388* 414* 439* filename based char(32) level 2 dcl 3-16 set ref 210* 227* 282* 290* 335* fixed builtin function dcl 105 ref 172 174 215 243 324 326 generate_def_ 000034 constant entry external dcl 70 ref 274 get_relinfo_ 000026 constant entry external dcl 67 ref 162 315 355 get_relinfo_$init 000030 constant entry external dcl 68 ref 136 314 351 halfword 1 based char(3) level 2 dcl 5-63 set ref 383* hbound builtin function dcl 105 ref 369 i 000100 automatic fixed bin(18,0) dcl 96 set ref 233* 234* 271* 272 274 274* 368* 369 379 inhibit 0(28) based bit(1) level 2 packed unaligned dcl 113 set ref 403* instr based structure level 1 dcl 113 insym based structure level 1 dcl 4-12 insymentp 36 based pointer level 2 dcl 3-16 ref 270 int_link_ 000036 constant entry external dcl 71 ref 252 414 int_reloc_offset 000103 automatic fixed bin(18,0) dcl 96 set ref 144* 149* 149 196 216 intbase 000014 internal static pointer initial dcl 78 set ref 455* internal_static based fixed bin(17,0) array dcl 124 set ref 310* 310 intlimit 000110 automatic fixed bin(18,0) dcl 96 set ref 145* 148* 311 321 intoffset 000102 automatic fixed bin(18,0) dcl 96 set ref 140* 144 309 intp 000124 automatic pointer dcl 98 set ref 309* 310 323 is based structure level 1 dcl 4-20 lhe18 based bit(18) level 2 packed unaligned dcl 110 set ref 172 261 276* 297* 324 341* 364 399* 433 440 link_td 130(03) 000134 automatic bit(4) level 2 packed unaligned dcl 103 set ref 434* link_tm 130(01) 000134 automatic bit(2) level 2 packed unaligned dcl 103 set ref 434* lng 000107 automatic fixed bin(18,0) dcl 96 set ref 306* 307 310 352* 354 358 loffset 11 000134 automatic fixed bin(17,0) level 2 dcl 103 set ref 187* 243* 385* lp based bit(3) level 2 packed unaligned dcl 113 set ref 400* 422 432* 438* lp_offset 0(03) based bit(15) level 2 packed unaligned dcl 123 set ref 215 217* 243 n_insyms 2 based fixed bin(17,0) level 2 dcl 4-12 ref 271 npt 1 based fixed bin(17,0) level 2 dcl 5-57 set ref 368 368* 377* null builtin function dcl 105 ref 376 offset 4 000134 automatic fixed bin(18,0) level 2 dcl 103 set ref 138 166 171 210* 227* 282* 290* 319 321 323 335* 353* 354 358 363 382 412* op_code 0(18) based bit(9) level 2 in structure "instr" packed unaligned dcl 113 in procedure "rebuild_object_" set ref 401* op_code 0(18) based bit(9) level 2 in structure "word_instr" packed unaligned dcl 123 in procedure "rebuild_object_" ref 232 op_code_extension 0(27) based bit(1) level 2 packed unaligned dcl 113 set ref 402* opcode 000132 automatic bit(18) dcl 101 set ref 232* 234 p 000122 automatic pointer dcl 98 set ref 270* 271 272 274 274 372* 373 374 375 375 376 377 pbase 2 based char(1) level 2 packed unaligned dcl 5-63 set ref 380* pexpr 0(18) based bit(18) level 2 packed unaligned dcl 5-63 set ref 440* 442* poffset based bit(18) level 2 packed unaligned dcl 5-63 set ref 382* ref_ptr 2 000134 automatic pointer level 2 dcl 103 set ref 171* 387* regenerate_all_links_ 000022 constant entry external dcl 64 ref 303 relinfo 6 000134 automatic char(8) level 2 dcl 103 set ref 164 176 185 194 200 206 210* 221 258 268 287 290* 317 328 335* 356 361 410* relocate 000111 automatic fixed bin(18,0) dcl 96 set ref 172* 174* 179* 179 187 196* 196 202* 202 215* 216* 216 217 260* 261 263 264* 264 272 282* 297 300 324* 326* 330* 330 341 344 rhe18 0(18) based bit(18) level 2 packed unaligned dcl 110 set ref 174 261* 263* 263 278* 297 300* 300 326 341 344* 344 364* 366* 366 399 442 rpt based structure level 1 dcl 5-57 set ref 371 371 375 375 rpte based structure level 1 dcl 5-63 rptep 000276 automatic pointer dcl 5-17 set ref 379* 380 381 382 383 440 442 rptp 000274 automatic pointer dcl 5-17 set ref 367* 368 368 369 371 371 374 375 375 379 section 10 000134 automatic char(4) level 2 dcl 103 set ref 154* 350* 411* 436* seg based structure level 1 dcl 5-29 segname 12 000134 automatic char(33) level 2 dcl 103 set ref 419* 425* separate_static 56 based fixed bin(17,0) level 2 dcl 3-16 ref 145 side 5 000134 automatic char(3) level 2 dcl 103 set ref 172 208 223 261 276 297 324 341 364 383 409* 440 size builtin function dcl 105 ref 371 371 375 375 slng 23 000134 automatic fixed bin(17,0) level 2 dcl 103 set ref 429* sp 000120 automatic pointer dcl 98 set ref 348* 363 symboffset 000104 automatic fixed bin(18,0) dcl 96 set ref 141* 202 td 0(32) based bit(4) level 2 in structure "instr" packed unaligned dcl 113 in procedure "rebuild_object_" set ref 406* 416 422 td 0(32) based bit(4) level 2 in structure "word_instr" packed unaligned dcl 123 in procedure "rebuild_object_" ref 239 temp_mgr_$allocate 000042 constant entry external dcl 73 ref 371 temp_mgr_$reserve 000044 constant entry external dcl 74 ref 375 textbase 000010 internal static pointer initial dcl 78 set ref 142 453* textend 000105 automatic fixed bin(18,0) dcl 96 set ref 143* 166 textoffset 000101 automatic fixed bin(18,0) dcl 96 set ref 139* 142 179 264 330 textptr 000126 automatic pointer dcl 100 set ref 142* 171 thread based pointer level 2 packed unaligned dcl 5-57 set ref 374* 376* tm 0(30) based bit(2) level 2 in structure "instr" packed unaligned dcl 113 in procedure "rebuild_object_" set ref 405* 416 422 tm 0(30) based bit(2) level 2 in structure "word_instr" packed unaligned dcl 123 in procedure "rebuild_object_" ref 237 239 trap 126(18) 000134 automatic bit(18) level 2 packed unaligned dcl 103 set ref 247 type 126 000134 automatic bit(18) level 2 packed unaligned dcl 103 set ref 247 431* use_pr 0(29) based bit(1) level 2 in structure "word_instr" packed unaligned dcl 123 in procedure "rebuild_object_" ref 225 use_pr 0(29) based bit(1) level 2 in structure "instr" packed unaligned dcl 113 in procedure "rebuild_object_" set ref 404* 416 422 val 000106 automatic fixed bin(18,0) dcl 96 set ref 131* 360* 364 366 385 386* 387 399 399 400 401 402 403 404 405 406 416 416 416 422 422 422 422 432 433 438 440 442 word based structure level 1 dcl 110 word_instr based structure level 1 dcl 123 wordp 000112 automatic pointer dcl 98 set ref 171* 172 174 215 217 225 232 237 239 239 243 261 263 276 278 297 300 323* 324 326 341 344 363* 364 366 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. INTERNALLY_RESOLVED internal static bit(18) initial unaligned dcl 5-91 UNRESOLVED internal static bit(18) initial unaligned dcl 5-90 adnp automatic pointer dcl 5-17 an based structure level 1 dcl 5-40 bx_$addname external static fixed bin(17,0) dcl 2-58 bx_$addname_limit external static fixed bin(17,0) dcl 2-24 bx_$adnp external static pointer dcl 2-36 bx_$area_begin external static fixed bin(18,0) dcl 2-25 bx_$bdefp external static pointer dcl 2-38 bx_$bindmap_def external static pointer dcl 2-37 bx_$blnkp external static pointer dcl 2-40 bx_$bound_segname external static char(32) dcl 2-48 bx_$bproc external static fixed bin(17,0) dcl 2-67 bx_$brief external static fixed bin(17,0) dcl 2-60 bx_$bseg_acinfop external static pointer dcl 2-50 bx_$bseg_bitcount external static fixed bin(24,0) dcl 2-51 bx_$bsegp external static pointer dcl 2-30 bx_$bstatp external static pointer dcl 2-39 bx_$bsymp external static pointer dcl 2-41 bx_$curdeflng external static fixed bin(18,0) dcl 2-69 bx_$d_lng external static fixed bin(18,0) dcl 2-54 bx_$first_rptp external static pointer dcl 2-34 bx_$force_order external static fixed bin(17,0) dcl 2-61 bx_$has_comb_stat external static fixed bin(17,0) dcl 2-63 bx_$has_sep_stat external static fixed bin(17,0) dcl 2-62 bx_$i_lng external static fixed bin(17,0) dcl 2-55 bx_$inpp external static pointer dcl 2-29 bx_$isp external static pointer dcl 2-28 bx_$l_lng external static fixed bin(17,0) dcl 2-56 bx_$maxdeflng external static fixed bin(18,0) dcl 2-72 bx_$maxlinklng external static fixed bin(17,0) dcl 2-71 bx_$n_firstrefs external static fixed bin(17,0) dcl 2-47 bx_$n_lng external static fixed bin(17,0) dcl 2-76 bx_$ncomp external static fixed bin(17,0) dcl 2-74 bx_$nsegdefs external static fixed bin(17,0) dcl 2-78 bx_$nsymdefs external static fixed bin(17,0) dcl 2-77 bx_$o_lng external static fixed bin(19,0) dcl 2-52 bx_$oddname_limit external static fixed bin(17,0) dcl 2-22 bx_$odnp external static pointer dcl 2-33 bx_$optp external static pointer dcl 2-32 bx_$perprocess_static external static fixed bin(17,0) dcl 2-65 bx_$s_lng external static fixed bin(18,0) dcl 2-57 bx_$size external static fixed bin(17,0) dcl 2-20 bx_$snt_limit external static fixed bin(17,0) dcl 2-21 bx_$sntp external static pointer dcl 2-42 bx_$standard external static fixed bin(17,0) dcl 2-66 bx_$stringmap_limit external static fixed bin(17,0) dcl 2-23 bx_$strmp external static pointer dcl 2-46 bx_$t_lng external static fixed bin(18,0) dcl 2-53 bx_$temp external static pointer dcl 2-31 bx_$textlng external static fixed bin(18,0) dcl 2-68 bx_$tintlng external static fixed bin(17,0) dcl 2-70 bx_$tlinklng external static fixed bin(17,0) dcl 2-73 bx_$tlinkp external static pointer dcl 2-45 bx_$v_lng external static fixed bin(17,0) dcl 2-75 bx_$vers_name external static char(168) dcl 2-18 bx_$vers_number external static fixed bin(17,0) dcl 2-19 comp_tbl based pointer array dcl 3-12 lrt based structure level 1 dcl 5-84 lrtp automatic pointer dcl 5-17 od based structure level 1 dcl 5-48 odnp automatic pointer dcl 5-17 snt based structure level 1 dcl 5-21 sntp automatic pointer dcl 5-17 strm based structure level 1 dcl 5-73 strmp automatic pointer dcl 5-17 NAMES DECLARED BY EXPLICIT CONTEXT. copy_unresolved_links 001067 constant label dcl 303 ref 156 164 166 done 001640 constant label dcl 447 ref 356 358 error_skip 001051 constant label dcl 293 ref 188 213 230 245 284 external_link 001611 constant label dcl 436 ref 422 illegal_link15 000476 constant label dcl 227 ref 234 237 239 init 001642 constant entry external dcl 450 rebuild_object_ 000175 constant entry external dcl 55 relocate_linkage 001127 constant label dcl 315 ref 319 338 345 relocate_symbol 001251 constant label dcl 348 set ref 307 311 317 321 relocate_text 000271 constant label dcl 162 ref 191 218 252 255 279 287 295 301 restore_linkage 001237 constant label dcl 341 ref 331 restore_text 001055 constant label dcl 297 ref 180 197 203 265 skip_this 001637 constant label dcl 444 ref 361 388 wrong_halfword 000403 constant label dcl 210 ref 223 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2134 2226 1711 2144 Length 2546 1711 72 303 222 12 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME rebuild_object_ 276 external procedure is an external procedure. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 textbase rebuild_object_ 000012 defbase rebuild_object_ 000014 intbase rebuild_object_ 000016 errname rebuild_object_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME rebuild_object_ 000100 i rebuild_object_ 000101 textoffset rebuild_object_ 000102 intoffset rebuild_object_ 000103 int_reloc_offset rebuild_object_ 000104 symboffset rebuild_object_ 000105 textend rebuild_object_ 000106 val rebuild_object_ 000107 lng rebuild_object_ 000110 intlimit rebuild_object_ 000111 relocate rebuild_object_ 000112 wordp rebuild_object_ 000114 argp rebuild_object_ 000116 extp rebuild_object_ 000120 sp rebuild_object_ 000122 p rebuild_object_ 000124 intp rebuild_object_ 000126 textptr rebuild_object_ 000130 defptr rebuild_object_ 000132 opcode rebuild_object_ 000134 ext rebuild_object_ 000270 ctp rebuild_object_ 000272 ctep rebuild_object_ 000274 rptp rebuild_object_ 000276 rptep rebuild_object_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ decode_link_ ext_link_ generate_def_ get_relinfo_ get_relinfo_$init int_link_ regenerate_all_links_ temp_mgr_$allocate temp_mgr_$reserve THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. bx_$bound_sep_stat bx_$caller bx_$ctp bx_$debug bx_$fatal_error bx_$freep bx_$last_rptp bx_$tdefp bx_$temp_bsegp bx_$tintp LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 55 000172 128 000202 129 000205 131 000212 132 000213 136 000215 138 000223 139 000225 140 000230 141 000232 142 000234 143 000241 144 000243 145 000245 148 000253 149 000255 152 000261 154 000263 156 000265 160 000267 162 000271 164 000300 166 000303 171 000306 172 000313 174 000322 176 000325 179 000330 180 000332 185 000333 187 000335 188 000337 190 000354 191 000363 194 000364 196 000366 197 000370 200 000371 202 000373 203 000375 206 000376 208 000400 210 000403 213 000444 215 000445 216 000451 217 000453 218 000463 221 000464 223 000466 225 000471 227 000476 230 000533 232 000534 233 000540 234 000545 236 000550 237 000552 239 000557 243 000564 244 000570 245 000572 247 000607 252 000620 254 000635 255 000644 258 000645 260 000647 261 000651 263 000660 264 000662 265 000664 268 000665 270 000667 271 000672 272 000703 274 000711 276 000725 278 000736 279 000742 281 000743 282 000745 284 001005 287 001006 290 001010 293 001051 295 001054 297 001055 300 001064 301 001066 303 001067 306 001076 307 001101 309 001102 310 001110 311 001116 314 001121 315 001127 317 001136 319 001141 321 001144 323 001146 324 001152 326 001161 328 001164 330 001167 331 001171 335 001172 337 001233 338 001236 341 001237 344 001246 345 001250 348 001251 350 001254 351 001256 352 001266 353 001271 354 001272 355 001275 356 001304 358 001307 360 001312 361 001313 363 001316 364 001322 366 001331 367 001333 368 001337 369 001344 371 001346 372 001356 373 001362 374 001364 375 001365 376 001376 377 001400 379 001402 380 001407 381 001411 382 001413 383 001423 385 001425 386 001427 387 001430 388 001432 399 001447 400 001452 401 001456 402 001460 403 001462 404 001464 405 001466 406 001472 408 001474 409 001476 410 001500 411 001502 412 001504 413 001505 414 001507 416 001524 419 001547 420 001552 421 001554 422 001555 425 001567 426 001572 429 001574 430 001576 431 001577 432 001601 433 001603 434 001605 436 001611 438 001613 439 001615 440 001624 442 001634 444 001637 447 001640 450 001641 453 001647 454 001653 455 001656 456 001661 458 001670 460 001677 ----------------------------------------------------------- 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