COMPILATION LISTING OF SEGMENT relocate_symbol_ Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 07/16/86 0854.4 mst Wed Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 12 /****^ HISTORY COMMENTS: 13* 1) change(85-09-24,Elhard), approve(85-09-24,MCR7198), 14* audit(86-06-30,Weaver), install(86-07-16,MR12.0-1094): 15* Improved documentation and readability, changed errname to use the 16* caller-supplied name instead of "binder_" 17* END HISTORY COMMENTS */ 18 19 20 /* format: style3,^indnoniterdo */ 21 22 relocate_symbol_: 23 procedure; 24 25 /* modified 6/75 by M. Weaver for separate static */ 26 /* modified 11/76 by M. Weaver to clean up symbol tree thread */ 27 /* Modified 01/15/81 W. Olin Sibert to remove red shifts */ 28 29 /**********************************************************************/ 30 /* */ 31 /* Name: relocate_symbol_ */ 32 /* Input: none */ 33 /* Function: copies the symbol sections of the input object */ 34 /* segments into the new bound object segment and */ 35 /* relocates the references. */ 36 /* Output: none */ 37 /* */ 38 /**********************************************************************/ 39 40 /* source map and user_id are actually filled in by make_bindmap_ */ 41 /* since they, like the bindmap, are variable and are put at the */ 42 /* end of the symbol section */ 43 44 45 /* DECLARATION OF EXTERNAL ENTRIES */ 46 47 declare com_err_ external entry options (variable); 48 declare bx_$symbol_table external fixed bin; 49 declare clock_ external entry () returns (fixed bin (71)); 50 declare get_relinfo_$init external entry (ptr); 51 declare get_relinfo_ external entry (ptr); 52 53 54 /* DECLARATION OF BUILTIN FUNCTIONS */ 55 56 declare (addr, addrel, bin, bit, substr, string) 57 builtin; 58 59 /* DECLARATION OF AUTOMATIC STORAGE VARIABLES */ 60 61 declare i fixed bin; 62 declare (previous_length, lng, relocate) 63 fixed bin; 64 declare (textoffset, intoffset, symboffset) 65 fixed bin (18); 66 declare (p, sblkp, previous_block, wordp, pl1_sbp) 67 pointer; 68 declare errname char (16) aligned; 69 70 declare 1 ext aligned, 71 2 offset fixed bin, 72 2 side char (3) aligned, 73 2 relinfo char (8) aligned; 74 75 /* DECLARATION OF BASED STRUCTURES */ 76 77 declare 1 word aligned based (wordp), 78 2 lhe18 bit (18) unaligned, 79 2 rhe18 bit (18) unaligned; 80 declare 1 pl1_sb aligned like pl1_symbol_block based (pl1_sbp); 81 82 declare vers_string char (10000) aligned based; 83 declare symbolsection (lng) fixed bin based; 84 85 /* */ 86 87 if bx_$debug = 1 88 then errname = "relocate_symbol_"; 89 else errname = bx_$caller; 90 91 ctp = bx_$ctp; /* copy pointer to component table */ 92 93 /* Make a symbol section header for the new bound object */ 94 /* IMPORTANT: length of this header is preset in 'relocate_symbol_$init' 95* and must not be exceeded unless its preset length is accordingly modified */ 96 97 sblkp = bx_$bsymp; /* copy pointer to symbol section */ 98 sb.decl_vers = 1; 99 sb.identifier = "bind_map"; 100 sb.gen_version_number = bx_$vers_number; 101 p = addr (bx_$symbol_table); /* ptr to binder's own symbol table */ 102 sb.gen_creation_time = p -> sb.obj_creation_time; /* get creation date of executing binder */ 103 sb.obj_creation_time = clock_ (); 104 sb.generator = "binder"; 105 sb.gen_name_offset = bit (bin (20, 18), 18); 106 lng = bx_$v_lng; 107 sb.gen_name_length = bit (bin (lng, 18), 18); 108 substr (addrel (sblkp, 20) -> vers_string, 1, lng) = substr (bx_$vers_name, 2, lng); 109 p = ctp -> comp_tbl (1) -> comp.csymp; /* get ptr to first component's symbol section */ 110 sb.tbound = p -> sb.tbound; /* use tbound of first component */ 111 sb.stat_bound = p -> sb.stat_bound; /* same with stat_bound */ 112 sb.symb_base = "0"b; /* this is first block in symbol section */ 113 114 /* the rest of the header items are filled in by make_bindmap_ */ 115 116 /* Now move all symbol tables over and relocate them */ 117 118 previous_length = bx_$s_lng; 119 previous_block = sblkp; 120 121 i = 0; 122 copy_tables: 123 i = i + 1; 124 if i > bx_$ncomp 125 then goto return; /* all components processed */ 126 ctep = comp_tbl (i); /* pointer to component entry */ 127 if comp.ignore = 1 128 then goto copy_tables; 129 sblkp = addrel (bx_$bsymp, bx_$s_lng); /* pointer to location of new section */ 130 lng = comp.clngns; /* length of section to be copied */ 131 sblkp -> symbolsection = comp.csymp -> symbolsection; 132 /* copy symbol section */ 133 sblkp -> sb.symb_base = bit (-bin (bx_$s_lng, 18), 18); 134 textoffset = comp.crelt; 135 intoffset = comp.creli; 136 if bx_$bound_sep_stat = 0 137 then if comp.separate_static = 1 138 then intoffset = intoffset + 8; /* must account for linkage header */ 139 symboffset = comp.crels; /* copy relocation counter values */ 140 141 call get_relinfo_$init (comp.crlsp); /* initiate relocation bit lookup */ 142 ext.offset = 0; 143 relocate_table: 144 call get_relinfo_ (addr (ext)); 145 if relinfo = "overflow" 146 then goto thread_blocks; 147 if ext.offset > lng 148 then goto thread_blocks; 149 wordp = addrel (sblkp, ext.offset); /* pointer to relocatable word */ 150 if side = "lhe" 151 then relocate = bin (word.lhe18, 18); 152 else relocate = bin (word.rhe18, 18); 153 154 if relinfo = "text " 155 then do; 156 relocate = relocate + textoffset; 157 goto restore_halfword; 158 end; 159 160 else if relinfo = "lnk18 " 161 then do; 162 relocate = 0; /* zero out to be repatched */ 163 goto restore_halfword; 164 end; 165 166 else if relinfo = "symb " 167 then do; 168 relocate = relocate + symboffset; 169 goto restore_halfword; 170 end; 171 172 else if relinfo = "int18 " 173 then do; 174 relocate = relocate + intoffset; 175 goto restore_halfword; 176 end; 177 178 else if relinfo = "negsymb " 179 then do; 180 relocate = -1; 181 if side = "lhe" 182 then addr (relocate) -> word.rhe18 = word.lhe18; 183 else addr (relocate) -> word.rhe18 = word.rhe18; 184 relocate = relocate + symboffset; 185 goto restore_halfword; 186 end; 187 188 else if relinfo = "def " 189 then do; 190 call com_err_ (0, errname, "relocation ^a for word ^o in symbol of ^a not currently handled by binder", 191 relinfo, ext.offset, comp.filename); 192 goto relocate_table; 193 end; 194 195 else if relinfo = "selfrel " 196 then goto relocate_table; 197 198 call com_err_ (0, errname, "relocation ^a illegal for word ^o in symbol of ^a", relinfo, ext.offset, 199 comp.filename); 200 bx_$fatal_error = 1; 201 goto relocate_table; 202 203 restore_halfword: 204 if side = "lhe" 205 then word.lhe18 = addr (relocate) -> word.rhe18; 206 else word.rhe18 = addr (relocate) -> word.rhe18; 207 goto relocate_table; 208 209 thread_blocks: 210 previous_block -> sb.next_block = bit (bin (bx_$s_lng, 18), 18); 211 previous_length = comp.clngns + comp.cpads; 212 bx_$s_lng = bx_$s_lng + previous_length; 213 previous_block = sblkp; 214 if comp.table_deleted = 1 /* symbol section has been truncated */ 215 then if sblkp -> sb.area_ptr 216 then do; 217 218 pl1_sbp = addrel (sblkp, sblkp -> sb.area_ptr); 219 if pl1_sb.identifier = "pl1info" 220 then do; /* don't leave dangling thread */ 221 pl1_sb.root = "0"b; 222 string (pl1_sb.map) = "0"b; 223 pl1_sb.flags.table_removed = "1"b; 224 end; 225 end; 226 goto copy_tables; 227 228 return: 229 return; 230 231 1 1 /**** START OF: bindext.incl.pl1 * * * * * */ 1 2 1 3 1 4 /****^ HISTORY COMMENTS: 1 5* 1) change(86-06-14,Elhard), approve(86-06-14,MCR7198), 1 6* audit(86-06-30,Weaver): 1 7* Added declarations for bx_$caller and bx_$temp_bsegp. 1 8* END HISTORY COMMENTS */ 1 9 1 10 /* DECLARATION OF BINDER'S MAIN DATABASE */ 1 11 1 12 /* include file bindext.incl.pl1 */ 1 13 1 14 /* Modified Sept 1978 by David Spector for using "get_temp_segment_" in temp_mgr_ */ 1 15 /* Modified Dec 1978 by David Spector for making repatch table automatically extensible */ 1 16 /* Modified 01/15/81 W. Olin Sibert for new options */ 1 17 1 18 declare bx_$vers_name char (168) aligned external; /* ASCII version name, in ACC form */ 1 19 declare bx_$vers_number fixed bin external; /* integer part of version number */ 1 20 declare bx_$size fixed bin external; /* size of main data base, for resetting */ 1 21 declare bx_$snt_limit fixed bin external; /* preset limit for segname table */ 1 22 declare bx_$oddname_limit fixed bin external; /* preset limit for oddname table */ 1 23 declare bx_$stringmap_limit fixed bin external; /* preset limit for stringmap table */ 1 24 declare bx_$addname_limit fixed bin external; /* preset limit for addname table */ 1 25 declare bx_$area_begin fixed bin (18) external; /* beginning of main data base */ 1 26 declare bx_$ctp pointer external; /* pointer to component table */ 1 27 declare bx_$freep pointer external; /* pointer to beginning of free area */ 1 28 declare bx_$isp pointer external; /* pointer to first insym table */ 1 29 declare bx_$inpp pointer external; /* pointer to binder's input structure */ 1 30 declare bx_$bsegp pointer external; /* pointer to base of new object segment */ 1 31 declare bx_$temp pointer external; /* pointer to threaded list of temp segments */ 1 32 declare bx_$optp pointer external; /* pointer to options table */ 1 33 declare bx_$odnp pointer external; /* pointer to oddname table */ 1 34 declare bx_$first_rptp pointer external; /* pointer to first chunk of repatch table */ 1 35 declare bx_$last_rptp pointer external; /* pointer to current chunk of threaded repatch table */ 1 36 declare bx_$adnp pointer external; /* pointer to addname table */ 1 37 declare bx_$bindmap_def pointer external; /* pointer to new object's "bind_map" definition */ 1 38 declare bx_$bdefp pointer external; /* pointer to new object's definition section */ 1 39 declare bx_$bstatp pointer external; /* pointer to new object's static section */ 1 40 declare bx_$blnkp pointer external; /* pointer to new object's linkage section */ 1 41 declare bx_$bsymp pointer external; /* pointer to new object's symbol section */ 1 42 declare bx_$sntp pointer external; /* pointer to segname table */ 1 43 declare bx_$tdefp pointer external; /* pointer to temporary new definition section */ 1 44 declare bx_$tintp pointer external; /* pointer to temporary new internal static */ 1 45 declare bx_$tlinkp pointer external; /* pointer to temporary new linkage section */ 1 46 declare bx_$strmp pointer external; /* pointer to stringmap table */ 1 47 declare bx_$n_firstrefs fixed bin external; /* count of components with firstref traps */ 1 48 declare bx_$bound_segname char (32) aligned external; /* name of new bound object */ 1 49 declare bx_$fatal_error fixed bin external; /* 1 -> fatal error was detected */ 1 50 declare bx_$bseg_acinfop pointer external; /* new object's acinfop for "tssi_" */ 1 51 declare bx_$bseg_bitcount fixed bin (24) external; /* new object's bitcount */ 1 52 declare bx_$o_lng fixed bin (19) external; /* length of new bound object */ 1 53 declare bx_$t_lng fixed bin (18) external; /* length of new text section */ 1 54 declare bx_$d_lng fixed bin (18) external; /* length of new definition section */ 1 55 declare bx_$i_lng fixed bin external; /* length of new static section */ 1 56 declare bx_$l_lng fixed bin external; /* length of new linkage section */ 1 57 declare bx_$s_lng fixed bin (18) external; /* length of new symbol section */ 1 58 declare bx_$addname fixed bin external; /* 1 -> addname option specified */ 1 59 declare bx_$debug fixed bin external; /* 1 -> debug option was specified */ 1 60 declare bx_$brief fixed bin external; /* 1 -> brief option was specified */ 1 61 declare bx_$force_order fixed bin external; /* 1 -> -force_order specified on command line */ 1 62 declare bx_$has_sep_stat fixed bin external; /* 1 -> a comp has nonzero sep static */ 1 63 declare bx_$has_comb_stat fixed bin external; /* 1 -> a comp has nonzero combined static */ 1 64 declare bx_$bound_sep_stat fixed bin external; /* 1 -> bound segment has separate static */ 1 65 declare bx_$perprocess_static fixed bin external; /* 1 -> bound segment has perprocess static switch on */ 1 66 declare bx_$standard fixed bin external; /* 1 -> bound seg is in standard format */ 1 67 declare bx_$bproc fixed bin external; /* 1 -> at least one component is a procedure */ 1 68 declare bx_$textlng fixed bin (18) external; /* length of new pure text portion */ 1 69 declare bx_$curdeflng fixed bin (18) external; /* current length of new definition section */ 1 70 declare bx_$tintlng fixed bin external; /* current length of new internal static */ 1 71 declare bx_$maxlinklng fixed bin external; /* maximum size linkage section may attain */ 1 72 declare bx_$maxdeflng fixed bin (18) external; /* maximum size definition section may attain */ 1 73 declare bx_$tlinklng fixed bin external; /* current size of linkage section */ 1 74 declare bx_$ncomp fixed bin external; /* number of component objects to be bound */ 1 75 declare bx_$v_lng fixed bin external; /* length of version name string */ 1 76 declare bx_$n_lng fixed bin external; /* length of bound segment name string */ 1 77 declare bx_$nsymdefs fixed bin external; /* count of non-null symbol definitions */ 1 78 declare bx_$nsegdefs fixed bin external; /* count of non-null segment name definitions */ 1 79 declare bx_$temp_bsegp ptr external; /* pointer to the temporary bound seg in the process dir */ 1 80 declare bx_$caller char (32) aligned external; /* name of the caller of bind_ for error messages */ 1 81 1 82 /**** END OF: bindext.incl.pl1 * * * * * */ 232 233 2 1 /* Include file comptbl.incl.pl1 */ 2 2 2 3 2 4 /****^ HISTORY COMMENTS: 2 5* 1) change(85-09-24,Elhard), approve(85-09-24,MCR7198), 2 6* audit(86-06-30,Weaver), install(86-07-16,MR12.0-1094): 2 7* added link_regeneration_table pointer (clrtp) to component structure. 2 8* END HISTORY COMMENTS */ 2 9 2 10 declare (ctp, ctep) pointer; 2 11 2 12 declare comp_tbl(1000) pointer based(ctp); 2 13 2 14 2 15 2 16 declare 1 comp aligned based(ctep), /* declaration of a component entry */ 2 17 2 filename char(32) aligned, /* object segment's file name */ 2 18 2 compiler char(8) aligned, /* name of compiler which produced this object */ 2 19 2 format char(8) aligned, /* format of object code (PL/1, ALM etc.) */ 2 20 2 21 2 ctxtp pointer, /* pointer to base of text section */ 2 22 2 cdefp pointer, /* pointer to definitions */ 2 23 2 cstatp pointer, /* pointer to static section */ 2 24 2 clnkp pointer, /* pointer to head of linkage section */ 2 25 2 csymp pointer, /* pointer to symbol table */ 2 26 2 cfrtp pointer, /* pointer to first ref trap array */ 2 27 2 crltp pointer, /* pointer to rel-text */ 2 28 2 crllp pointer, /* pointer to rel-link */ 2 29 2 crlsp pointer, /* pointer to rel-symb */ 2 30 2 insymentp pointer, /* pointer to this component's insym table entry */ 2 31 2 clrtp pointer, /* pointer to link_regeneration_table */ 2 32 2 unused_1 pointer, /* reserve */ 2 33 2 unused_2 pointer, /* reserve */ 2 34 2 unused_3 fixed bin, /* reserve */ 2 35 2 cindex fixed bin, /* this entry's index in table */ 2 36 2 standard_object fixed bin, /* 1 -> this object has standard format */ 2 37 2 defthread fixed bin, /* beginning of comp's definition block */ 2 38 2 fn_lng fixed bin, /* length of filename string */ 2 39 2 ignore fixed bin, /* 1->ignore erroneous entry */ 2 40 2 io_table fixed bin, /* 1 -> symbol table needed for io */ 2 41 2 table_deleted fixed bin, /* 1 -> symbol table is being deleted */ 2 42 2 separate_static fixed bin, /* 1 -> component has nonzero separate static */ 2 43 (2 defblockp, /* rel pointer to component's definition block */ 2 44 2 current_def) bit(18) unaligned, /* rel pointer to component's current def */ 2 45 2 cbitcount fixed bin(24), /* bitcount of component segment */ 2 46 2 clngt fixed bin(18), /* length of pure text section */ 2 47 2 cpadt fixed bin, /* number of added padwords for text */ 2 48 2 clngd fixed bin(18), /* length of definition section */ 2 49 2 clngi fixed bin, /* length of internal static */ 2 50 2 cpadi fixed bin, /* number of added padwords for internal static */ 2 51 2 clngs fixed bin(18), /* length of original symbol table */ 2 52 2 clngns fixed bin(18), /* length of new symb section stripped of relbits */ 2 53 2 clngss fixed bin(18), /* length of symbol section minus relbits and table */ 2 54 2 cpads fixed bin, /* padding length if section length is odd */ 2 55 2 n_sym_blks fixed bin, /* number of symbol blocks */ 2 56 2 57 2 crelt fixed bin, /* relocation value for text */ 2 58 2 creli fixed bin, /* relocation value for internal static */ 2 59 2 crels fixed bin, /* relocation value for symbol section */ 2 60 2 last_item fixed bin; /*** MUST ALWAYS BE LAST IN STRUCTURE ***/ 2 61 2 62 2 63 234 235 3 1 /* BEGIN INCLUDE SEGMENT ... symbol_block.incl.pl1 3 2*coded February 8, 1972 by Michael J. Spier */ 3 3 3 4 /* last modified may 3, 1972 by M. Weaver */ 3 5 3 6 declare 1 sb aligned based(sblkp), /* structure describing a standard symbol block */ 3 7 2 decl_vers fixed bin, /* version number of current structure format */ 3 8 2 identifier char(8) aligned, /* symbolic code to define purpose of this symb block */ 3 9 2 gen_version_number fixed bin, /* positive integer designating version of object generator */ 3 10 2 gen_creation_time fixed bin(71), /* clock reading of date/time generator was created */ 3 11 2 obj_creation_time fixed bin(71), /* clock reading of date/time object was generated */ 3 12 2 generator char(8) aligned, /* name of processor which generated segment */ 3 13 2 gen_name_offset bit(18) unaligned, /* offset of generator name in words rel to base of symbol block */ 3 14 2 gen_name_length bit(18) unaligned, /* length of printable generator version name in characters */ 3 15 2 uid_offset bit(18) unaligned, /* offset of creator id in words rel to base of symbol block */ 3 16 2 uid_length bit(18) unaligned, /* length of standard Multics id of object creator in characters */ 3 17 2 comment_offset bit(18) unaligned, /* offset of comment in words relative to base of symbol block */ 3 18 2 comment_length bit(18) unaligned, /* length of printable generator comment in characters */ 3 19 2 tbound bit(18) unaligned, /* specifies mod of text section base boundary */ 3 20 2 stat_bound bit(18) unaligned, /* specifies mod of internal static base boundary */ 3 21 2 source_map bit(18) unaligned, /* offset relative to base of symbol block of source map structure */ 3 22 2 area_ptr bit(18) unaligned, /* offset of block info in words relative to base of symbol block */ 3 23 2 symb_base bit(18) unaligned, /* back pointer (rel to base of symb block) to base of symb section */ 3 24 2 block_size bit(18) unaligned, /* size in words of entire symbol block */ 3 25 2 next_block bit(18) unaligned, /* if ^= "0"b, is thread (rel to base of symb section) to next symb block */ 3 26 2 rel_text bit(18) unaligned, /* offset rel to base of symbol block of text sect relocation info */ 3 27 2 rel_def bit(18) unaligned, /* offset rel to base of symb block of def section relocation info */ 3 28 2 rel_link bit(18) unaligned, /* offset rel to base of symb block of link sect relocation info */ 3 29 2 rel_symb bit(18) unaligned, /* offset rel to base of symb block of symb sect relocation info */ 3 30 2 default_truncate bit(18) unaligned, /* offset RTBOSB for binder to automatically trunc. symb sect. */ 3 31 2 optional_truncate bit(18) unaligned; /* offset RTBOSB for binder to optionally truncate symb section */ 3 32 3 33 /* END INCLUDE SEGMENT ... symbol_block.incl.pl1 */ 236 237 4 1 dcl 1 pl1_symbol_block aligned based, 4 2 2 version fixed bin, 4 3 2 identifier char(8), /* must be "pl1info" */ 4 4 2 flags, 4 5 3 profile bit(1) unal, 4 6 3 table bit(1) unal, 4 7 3 map bit(1) unal, 4 8 3 flow bit(1) unal, 4 9 3 io bit(1) unal, 4 10 3 table_removed bit(1) unal, 4 11 3 long_profile bit(1) unal, 4 12 3 pad bit(29) unal, 4 13 2 greatest_severity fixed bin, 4 14 2 root unal bit(18), 4 15 2 profile unal bit(18), 4 16 2 map unal, 4 17 3 first bit(18), 4 18 3 last bit(18), 4 19 2 segname unaligned, 4 20 3 offset bit(18), 4 21 3 size bit(18); 238 239 240 end relocate_symbol_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/16/86 0846.9 relocate_symbol_.pl1 >spec>install>1094>relocate_symbol_.pl1 232 1 07/16/86 0841.5 bindext.incl.pl1 >spec>install>1094>bindext.incl.pl1 234 2 07/16/86 0845.6 comptbl.incl.pl1 >spec>install>1094>comptbl.incl.pl1 236 3 05/06/74 1752.6 symbol_block.incl.pl1 >ldd>include>symbol_block.incl.pl1 238 4 03/10/77 1345.4 pl1_symbol_block.incl.pl1 >ldd>include>pl1_symbol_block.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. addr builtin function dcl 56 ref 101 143 143 181 183 203 206 addrel builtin function dcl 56 ref 108 129 149 218 area_ptr 16(18) based bit(18) level 2 packed unaligned dcl 3-6 ref 214 218 bin builtin function dcl 56 ref 105 107 133 150 152 209 bit builtin function dcl 56 ref 105 107 133 209 bx_$bound_sep_stat 000040 external static fixed bin(17,0) dcl 1-64 ref 136 bx_$bsymp 000030 external static pointer dcl 1-41 ref 97 129 bx_$caller 000046 external static char(32) dcl 1-80 ref 89 bx_$ctp 000026 external static pointer dcl 1-26 ref 91 bx_$debug 000036 external static fixed bin(17,0) dcl 1-59 ref 87 bx_$fatal_error 000032 external static fixed bin(17,0) dcl 1-49 set ref 200* bx_$ncomp 000042 external static fixed bin(17,0) dcl 1-74 ref 124 bx_$s_lng 000034 external static fixed bin(18,0) dcl 1-57 set ref 118 129 133 209 212* 212 bx_$symbol_table 000012 external static fixed bin(17,0) dcl 48 set ref 101 bx_$v_lng 000044 external static fixed bin(17,0) dcl 1-75 ref 106 bx_$vers_name 000022 external static char(168) dcl 1-18 ref 108 bx_$vers_number 000024 external static fixed bin(17,0) dcl 1-19 ref 100 clngns 67 based fixed bin(18,0) level 2 dcl 2-16 ref 130 211 clock_ 000014 constant entry external dcl 49 ref 103 com_err_ 000010 constant entry external dcl 47 ref 190 198 comp based structure level 1 dcl 2-16 comp_tbl based pointer array dcl 2-12 ref 109 126 cpads 71 based fixed bin(17,0) level 2 dcl 2-16 ref 211 creli 74 based fixed bin(17,0) level 2 dcl 2-16 ref 135 crels 75 based fixed bin(17,0) level 2 dcl 2-16 ref 139 crelt 73 based fixed bin(17,0) level 2 dcl 2-16 ref 134 crlsp 34 based pointer level 2 dcl 2-16 set ref 141* csymp 24 based pointer level 2 dcl 2-16 ref 109 131 ctep 000134 automatic pointer dcl 2-10 set ref 126* 127 130 131 134 135 136 139 141 190 198 211 211 214 ctp 000132 automatic pointer dcl 2-10 set ref 91* 109 126 decl_vers based fixed bin(17,0) level 2 dcl 3-6 set ref 98* errname 000122 automatic char(16) dcl 68 set ref 87* 89* 190* 198* ext 000126 automatic structure level 1 dcl 70 set ref 143 143 filename based char(32) level 2 dcl 2-16 set ref 190* 198* flags 3 based structure level 2 dcl 80 gen_creation_time 4 based fixed bin(71,0) level 2 dcl 3-6 set ref 102* gen_name_length 12(18) based bit(18) level 2 packed unaligned dcl 3-6 set ref 107* gen_name_offset 12 based bit(18) level 2 packed unaligned dcl 3-6 set ref 105* gen_version_number 3 based fixed bin(17,0) level 2 dcl 3-6 set ref 100* generator 10 based char(8) level 2 dcl 3-6 set ref 104* get_relinfo_ 000020 constant entry external dcl 51 ref 143 get_relinfo_$init 000016 constant entry external dcl 50 ref 141 i 000100 automatic fixed bin(17,0) dcl 61 set ref 121* 122* 122 124 126 identifier 1 based char(8) level 2 in structure "pl1_sb" dcl 80 in procedure "relocate_symbol_" ref 219 identifier 1 based char(8) level 2 in structure "sb" dcl 3-6 in procedure "relocate_symbol_" set ref 99* ignore 53 based fixed bin(17,0) level 2 dcl 2-16 ref 127 intoffset 000105 automatic fixed bin(18,0) dcl 64 set ref 135* 136* 136 174 lhe18 based bit(18) level 2 packed unaligned dcl 77 set ref 150 181 203* lng 000102 automatic fixed bin(17,0) dcl 62 set ref 106* 107 108 108 130* 131 147 map 6 based structure level 2 packed unaligned dcl 80 set ref 222* next_block 20 based bit(18) level 2 packed unaligned dcl 3-6 set ref 209* obj_creation_time 6 based fixed bin(71,0) level 2 dcl 3-6 set ref 102 103* offset 000126 automatic fixed bin(17,0) level 2 dcl 70 set ref 142* 147 149 190* 198* p 000110 automatic pointer dcl 66 set ref 101* 102 109* 110 111 pl1_sb based structure level 1 dcl 80 pl1_sbp 000120 automatic pointer dcl 66 set ref 218* 219 221 222 223 pl1_symbol_block based structure level 1 dcl 4-1 previous_block 000114 automatic pointer dcl 66 set ref 119* 209 213* previous_length 000101 automatic fixed bin(17,0) dcl 62 set ref 118* 211* 212 relinfo 2 000126 automatic char(8) level 2 dcl 70 set ref 145 154 160 166 172 178 188 190* 195 198* relocate 000103 automatic fixed bin(17,0) dcl 62 set ref 150* 152* 156* 156 162* 168* 168 174* 174 180* 181 183 184* 184 203 206 rhe18 0(18) based bit(18) level 2 packed unaligned dcl 77 set ref 152 181* 183* 183 203 206* 206 root 5 based bit(18) level 2 packed unaligned dcl 80 set ref 221* sb based structure level 1 dcl 3-6 sblkp 000112 automatic pointer dcl 66 set ref 97* 98 99 100 102 103 104 105 107 108 110 111 112 119 129* 131 133 149 213 214 218 218 separate_static 56 based fixed bin(17,0) level 2 dcl 2-16 ref 136 side 1 000126 automatic char(3) level 2 dcl 70 set ref 150 181 203 stat_bound 15(18) based bit(18) level 2 packed unaligned dcl 3-6 set ref 111* 111 string builtin function dcl 56 set ref 222* substr builtin function dcl 56 set ref 108* 108 symb_base 17 based bit(18) level 2 packed unaligned dcl 3-6 set ref 112* 133* symboffset 000106 automatic fixed bin(18,0) dcl 64 set ref 139* 168 184 symbolsection based fixed bin(17,0) array dcl 83 set ref 131* 131 table_deleted 55 based fixed bin(17,0) level 2 dcl 2-16 ref 214 table_removed 3(05) based bit(1) level 3 packed unaligned dcl 80 set ref 223* tbound 15 based bit(18) level 2 packed unaligned dcl 3-6 set ref 110* 110 textoffset 000104 automatic fixed bin(18,0) dcl 64 set ref 134* 156 vers_string based char(10000) dcl 82 set ref 108* word based structure level 1 dcl 77 wordp 000116 automatic pointer dcl 66 set ref 149* 150 152 181 183 203 206 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. bx_$addname external static fixed bin(17,0) dcl 1-58 bx_$addname_limit external static fixed bin(17,0) dcl 1-24 bx_$adnp external static pointer dcl 1-36 bx_$area_begin external static fixed bin(18,0) dcl 1-25 bx_$bdefp external static pointer dcl 1-38 bx_$bindmap_def external static pointer dcl 1-37 bx_$blnkp external static pointer dcl 1-40 bx_$bound_segname external static char(32) dcl 1-48 bx_$bproc external static fixed bin(17,0) dcl 1-67 bx_$brief external static fixed bin(17,0) dcl 1-60 bx_$bseg_acinfop external static pointer dcl 1-50 bx_$bseg_bitcount external static fixed bin(24,0) dcl 1-51 bx_$bsegp external static pointer dcl 1-30 bx_$bstatp external static pointer dcl 1-39 bx_$curdeflng external static fixed bin(18,0) dcl 1-69 bx_$d_lng external static fixed bin(18,0) dcl 1-54 bx_$first_rptp external static pointer dcl 1-34 bx_$force_order external static fixed bin(17,0) dcl 1-61 bx_$freep external static pointer dcl 1-27 bx_$has_comb_stat external static fixed bin(17,0) dcl 1-63 bx_$has_sep_stat external static fixed bin(17,0) dcl 1-62 bx_$i_lng external static fixed bin(17,0) dcl 1-55 bx_$inpp external static pointer dcl 1-29 bx_$isp external static pointer dcl 1-28 bx_$l_lng external static fixed bin(17,0) dcl 1-56 bx_$last_rptp external static pointer dcl 1-35 bx_$maxdeflng external static fixed bin(18,0) dcl 1-72 bx_$maxlinklng external static fixed bin(17,0) dcl 1-71 bx_$n_firstrefs external static fixed bin(17,0) dcl 1-47 bx_$n_lng external static fixed bin(17,0) dcl 1-76 bx_$nsegdefs external static fixed bin(17,0) dcl 1-78 bx_$nsymdefs external static fixed bin(17,0) dcl 1-77 bx_$o_lng external static fixed bin(19,0) dcl 1-52 bx_$oddname_limit external static fixed bin(17,0) dcl 1-22 bx_$odnp external static pointer dcl 1-33 bx_$optp external static pointer dcl 1-32 bx_$perprocess_static external static fixed bin(17,0) dcl 1-65 bx_$size external static fixed bin(17,0) dcl 1-20 bx_$snt_limit external static fixed bin(17,0) dcl 1-21 bx_$sntp external static pointer dcl 1-42 bx_$standard external static fixed bin(17,0) dcl 1-66 bx_$stringmap_limit external static fixed bin(17,0) dcl 1-23 bx_$strmp external static pointer dcl 1-46 bx_$t_lng external static fixed bin(18,0) dcl 1-53 bx_$tdefp external static pointer dcl 1-43 bx_$temp external static pointer dcl 1-31 bx_$temp_bsegp external static pointer dcl 1-79 bx_$textlng external static fixed bin(18,0) dcl 1-68 bx_$tintlng external static fixed bin(17,0) dcl 1-70 bx_$tintp external static pointer dcl 1-44 bx_$tlinklng external static fixed bin(17,0) dcl 1-73 bx_$tlinkp external static pointer dcl 1-45 NAMES DECLARED BY EXPLICIT CONTEXT. copy_tables 000231 constant label dcl 122 ref 127 226 relocate_symbol_ 000106 constant entry external dcl 22 relocate_table 000313 constant label dcl 143 ref 192 195 201 207 restore_halfword 000530 constant label dcl 203 ref 157 163 169 175 185 return 000605 constant label dcl 228 set ref 124 thread_blocks 000542 constant label dcl 209 set ref 145 147 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 762 1032 606 772 Length 1312 606 50 244 154 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME relocate_symbol_ 148 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME relocate_symbol_ 000100 i relocate_symbol_ 000101 previous_length relocate_symbol_ 000102 lng relocate_symbol_ 000103 relocate relocate_symbol_ 000104 textoffset relocate_symbol_ 000105 intoffset relocate_symbol_ 000106 symboffset relocate_symbol_ 000110 p relocate_symbol_ 000112 sblkp relocate_symbol_ 000114 previous_block relocate_symbol_ 000116 wordp relocate_symbol_ 000120 pl1_sbp relocate_symbol_ 000122 errname relocate_symbol_ 000126 ext relocate_symbol_ 000132 ctp relocate_symbol_ 000134 ctep relocate_symbol_ 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. clock_ com_err_ get_relinfo_ get_relinfo_$init THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. bx_$bound_sep_stat bx_$bsymp bx_$caller bx_$ctp bx_$debug bx_$fatal_error bx_$ncomp bx_$s_lng bx_$symbol_table bx_$v_lng bx_$vers_name bx_$vers_number LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 22 000105 87 000113 89 000125 91 000134 97 000137 98 000142 99 000144 100 000150 101 000152 102 000154 103 000156 104 000164 105 000170 106 000175 107 000200 108 000205 109 000213 110 000217 111 000221 112 000223 118 000225 119 000227 121 000230 122 000231 124 000232 126 000236 127 000242 129 000245 130 000252 131 000254 133 000261 134 000267 135 000271 136 000273 139 000302 141 000304 142 000312 143 000313 145 000324 147 000327 149 000332 150 000335 152 000344 154 000347 156 000352 157 000354 160 000355 162 000357 163 000360 166 000361 168 000363 169 000365 172 000366 174 000370 175 000372 178 000373 180 000375 181 000377 183 000406 184 000410 185 000412 188 000413 190 000415 192 000456 195 000457 198 000463 200 000524 201 000527 203 000530 206 000537 207 000541 209 000542 211 000551 212 000555 213 000556 214 000560 218 000566 219 000571 221 000577 222 000601 223 000602 226 000604 228 000605 ----------------------------------------------------------- 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