COMPILATION LISTING OF SEGMENT incorporate_options_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Multics Op. - System M Compiled on: 08/06/86 1419.3 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 /****^ HISTORY COMMENTS: 12* 1) change(85-09-24,Elhard), approve(85-09-24,MCR7198), 13* audit(86-06-30,Weaver), install(86-07-16,MR12.0-1094): 14* Changed errname to use the caller-supplied name instead of "binder_", 15* improved documentation, removed non-functional support for obsolete 16* "indirect" keyword. "indirect" now functions the same as "retain". 17* 2) change(86-07-02,Elhard), approve(86-07-02,MCR7281), 18* audit(86-07-23,JRGray), install(86-08-06,MR12.0-1119): 19* Modified to improve error messages for multiple retain, delete, or no_link 20* keywords given for a single input component. 21* END HISTORY COMMENTS */ 22 23 24 /**********************************************************************/ 25 /* */ 26 /* Name: incorporate_options_ */ 27 /* Input: none */ 28 /* Function: incorporates the options specified in the */ 29 /* bindfile into the component table, (symbol length */ 30 /* based on no_table specification), insym lists, */ 31 /* (indirect, retain, delete, or nolink specified), */ 32 /* and segname table, (synonym statements). checks */ 33 /* are also made to insure that all the options are */ 34 /* processed and that none of the segnames in the */ 35 /* segname table match the bound objectname. Checks */ 36 /* are also made to insure that all options are */ 37 /* consistent. */ 38 /* Output: none. */ 39 /* */ 40 /**********************************************************************/ 41 42 /* format: style3,^indnoniterdo */ 43 incorporate_options_: 44 procedure; 45 46 /* coded by Michael J. Spier 1970? */ 47 /* modified 11/24/76 by M. Weaver to set comp.table_deleted */ 48 /* Modified 01/14/81 W. Olin Sibert for new format of input structure */ 49 /* Modified 85-02-11 by Dean Elhard to change errname to "bind" */ 50 /* Modified 85-03-18 by Dean Elhard to clean up documentation and */ 51 /* remove support for the indirect keyword. It */ 52 /* now behaves exactly as retain. */ 53 54 /* DECLARATION OF EXTERNAL SYMBOLS */ 55 56 declare (com_err_, ioa_) external entry options (variable); 57 58 /* DECLARATION OF INTERNAL STATIC VARIABLES */ 59 60 61 /* DECLARATION OF AUTOMATIC STORAGE VARIABLES */ 62 63 declare (i, j, k, ndefs, nobjects) 64 fixed bin; 65 declare (p, inpp, areap, optp, ip, dp, sp) 66 pointer; 67 declare (g_nt, g_rt, g_in, g_dl, g_nl, op_sw, tab_sw) 68 bit (1) aligned; 69 declare opt_code char (1) aligned; 70 declare (errname, str1, str3) 71 char (32) aligned; 72 declare str2 char (256) aligned; 73 declare newname char (33) aligned; 74 declare message char (256) varying; 75 76 /* DECLARATION OF BUILTIN FUNCTIONS */ 77 78 declare (addr, addrel, bin, bit, index, null, substr) 79 builtin; 80 81 /* DECLARATION OF BASED STRUCTURES */ 82 83 declare reset bit (297) aligned based (p); 84 declare acc_count bit (9) aligned based (p); 85 86 /* */ 87 88 ctp = bx_$ctp; 89 inpp = bx_$inpp; 90 sntp = bx_$sntp; 91 areap = bx_$optp; 92 93 if bx_$debug = 1 94 then errname = "incorporate_options_"; 95 else errname = bx_$caller; 96 97 addr (newname) -> reset = "0"b; /* make acc string of bound segname */ 98 i = index (bx_$bound_segname, " "); 99 if i = 0 100 then i = 32; 101 else i = i - 1; 102 addr (newname) -> acc_count = bit (bin (i, 9), 9); 103 substr (newname, 2, i) = substr (bx_$bound_segname, 1, i); 104 105 nobjects = bx_$ncomp; /* number of component objects */ 106 if areap = null 107 then goto check_bound_name; 108 109 110 /* incorporate specified options into insym table */ 111 112 g_nt, g_rt, g_in, g_dl, g_nl = "0"b; 113 114 /* copy global options */ 115 116 if option.g_delete = "d" 117 then g_dl = "1"b; 118 else if option.g_indirect = "i" 119 then g_rt = "1"b; 120 else if option.g_retain = "r" 121 then g_rt = "1"b; 122 else if option.g_nolink = "l" 123 then do; 124 g_rt, g_nl = "1"b; 125 end; 126 127 if option.g_notable = "t" 128 then g_nt = "1"b; 129 130 do i = 1 to nobjects; 131 ctep = comp_tbl (i); 132 if comp.ignore = 1 133 then goto next_object; 134 ip = comp.insymentp; /* pointer to insym table of this component */ 135 ndefs = ip -> insym.n_insyms - 1; /* number of defs to scan */ 136 op_sw = "0"b; /* preset option flag */ 137 optp = null; /* reset pointer to option structure */ 138 tab_sw = "0"b; /* reset switch for keeping specific table */ 139 if option.g_nolink = "l" 140 then ip -> insym.global_nolink = "1"b; 141 if inp.obj (i).option ^= "0"b 142 then do; /* there is an option entry */ 143 optp = addrel (areap, inp.obj (i).option); 144 if op.n_options > op.n_synonyms 145 then op_sw = "1"b; /* more than just synonyms */ 146 if op.no_link = "l" 147 then ip -> insym.global_nolink = "1"b; 148 if op.table = "t" 149 then do; /* want to keep table */ 150 if comp.clngns = comp.clngss 151 then call ioa_ ("Warning: ^a has no symbol table, which bindfile wanted kept.", comp.filename); 152 else tab_sw = "1"b; /* do not delete this table */ 153 end; 154 end; 155 if g_nt 156 then if ^tab_sw 157 then do; /* truncate any symbol table */ 158 if comp.io_table ^= 0 159 then call ioa_ ( 160 "Warning: symbol table not removed from ^a^/^-because it may be needed for data-directed I/O.", 161 comp.filename); 162 else do; 163 if comp.clngns > comp.clngss 164 then comp.table_deleted = 1; 165 comp.clngns = comp.clngss; /* use the shorter length */ 166 end; 167 end; 168 do j = 1 to ndefs; /* scan insym table */ 169 dp = addr (ip -> insym.entry (j)); /* pointer to one definition */ 170 if op_sw = "1"b 171 then do k = 2 to op.n_options; /* lookup options */ 172 p = addr (op.opes (k)); 173 if p -> ope.symb ^= dp -> is.symbol 174 then goto next_option; 175 opt_code = p -> ope.code; 176 if opt_code = "r" 177 then dp -> is.retain = "1"b; 178 else if opt_code = "i" 179 then dp -> is.retain = "1"b; 180 else if opt_code = "d" 181 then dp -> is.delete = "1"b; 182 else if opt_code = "l" 183 then do; 184 dp -> is.retain, dp -> is.no_link = "1"b; 185 end; 186 else goto next_option; /* skip synonyms */ 187 p -> ope.code = "*"; /* indicate that entry has been processed */ 188 goto next_def; 189 next_option: 190 end; 191 if optp ^= null 192 then do; /* use "global" options */ 193 if op.delete = "d" 194 then dp -> is.delete = "1"b; 195 else if op.indirect = "i" 196 then dp -> is.retain = "1"b; 197 else if op.retain = "r" 198 then dp -> is.retain = "1"b; 199 else if op.no_link = "l" 200 then do; 201 dp -> is.retain, dp -> is.no_link = "1"b; 202 end; 203 else goto use_Global; 204 end; 205 else do; /* use "Global" options */ 206 use_Global: 207 dp -> is.retain = g_rt; 208 dp -> is.delete = g_dl; 209 dp -> is.no_link = g_nl; 210 end; 211 next_def: 212 end; 213 next_object: 214 end; 215 216 /* next process all synonyms */ 217 218 ndefs = snt.n_names; /* size of segname table */ 219 do i = 1 to nobjects; 220 if inp.obj (i).option = "0"b 221 then goto try_next; /* no option here */ 222 optp = addrel (areap, inp.obj (i).option); /* pointer to option table */ 223 if op.n_options = 0 224 then goto try_next; /* only global stuff */ 225 p = addr (op.opes (1)); /* first string is the filename */ 226 do j = 1 to snt.n_names; /* scan segname table */ 227 if snt.entry (j).name = substr (p -> ope.symb, 1, 33) 228 then goto filename_found; 229 end; 230 goto try_next; 231 filename_found: 232 ctep = snt.entry (j).comp; /* pointer to file's component entry */ 233 op.opes (1).code = "*"; 234 do k = 2 to op.n_options; /* now locate all synonyms for this file */ 235 p = addr (op.opes (k)); 236 if p -> ope.code ^= "s" 237 then goto not_synonym; 238 do j = 1 to ndefs; /* compare with all segnames in table */ 239 sp = addr (snt.entry (j)); 240 if sp -> seg.name = substr (p -> ope.symb, 1, 33) 241 then do; 242 if sp -> seg.comp = ctep 243 then goto set_mark; /* already in table */ 244 call com_err_ (0, errname, "segname ^a has been multiply declared in bindfile", 245 substr (sp -> seg.name, 2, sp -> seg.lng - 1)); 246 goto not_synonym; 247 end; 248 end; 249 ndefs = ndefs + 1; 250 sp = addr (snt.entry (ndefs)); /* pointer to segname table entry */ 251 sp -> seg.name = p -> ope.symb; /* copy string */ 252 sp -> seg.comp = ctep; /* remember pointer to component table entry */ 253 sp -> seg.lng = p -> ope.lng; 254 set_mark: 255 p -> ope.code = "*"; /* indicate that entry was processed */ 256 not_synonym: 257 end; 258 try_next: 259 end; 260 snt.n_names = ndefs; /* update size of segname table */ 261 if ndefs > snt.max_size 262 then do; 263 call com_err_ (0, errname, "Segname table overflow; current limit = ^d.", snt.max_size); 264 bx_$fatal_error = 1; 265 end; 266 267 268 269 /* Now check to see if all options were correctly processed */ 270 271 do i = 1 to nobjects; 272 if inp.obj (i).option ^= "0"b 273 then do; 274 optp = addrel (areap, inp.obj (i).option); 275 if op.n_options = 0 276 then goto next_comp; 277 p = addr (op.opes (1)); 278 str3 = substr (p -> ope.symb, 2, p -> ope.lng - 1); 279 do j = 1 to op.n_options; 280 p = addr (op.opes (j)); 281 if p -> ope.code ^= "*" 282 then do; 283 message = 284 "'^a: ^a;' of bind-file entry ^a:^/Only one the 'retain', 'delete', or 'no_link', keywords may be specified." 285 ; 286 opt_code = p -> ope.code; 287 str2 = substr (p -> ope.symb, 2, p -> ope.lng - 1); 288 if opt_code = "r" 289 then str1 = "retain"; 290 else if opt_code = "i" 291 then str1 = "indirect"; 292 else if opt_code = "d" 293 then str1 = "delete"; 294 else if opt_code = "l" 295 then str1 = "no_link"; 296 else if opt_code = "s" 297 then do; 298 if j = 1 299 then str1 = "objectname"; 300 else str1 = "synonym"; 301 message = "'^a: ^a;' of bind-file entry ^a could not be processed"; 302 end; 303 else str1 = "'" || opt_code || "'"; 304 call com_err_ (0, errname, message, str1, str2, str3); 305 bx_$fatal_error = 1; 306 end; 307 end; 308 end; 309 next_comp: 310 end; 311 312 313 314 check_bound_name: 315 do i = 1 to snt.n_names; /* rescan segname table */ 316 p = addr (snt.entry (i)); 317 if p -> seg.name = newname 318 then do; 319 if areap ^= null 320 then /* have a bindfile */ 321 call com_err_ (0, errname, "segname ^a has been multiply declared in bindfile", 322 bx_$bound_segname); 323 else call com_err_ (0, errname, "segname ^a has been multiply declared", bx_$bound_segname); 324 bx_$fatal_error = 1; 325 end; 326 end; 327 328 329 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 * * * * * */ 330 331 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 332 333 3 1 /* Include file bndtbl.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 and eliminated the use of "p" as a pointer 3 8* to base structures on.. 3 9* END HISTORY COMMENTS */ 3 10 3 11 /* DIVERSE BINDER TABLES */ 3 12 3 13 /* Modified Oct 1978 by David Spector for hash coding snt and strm */ 3 14 /* Modified Dec 1978 by David Spector for making repatch table 3 15* automatically extensible */ 3 16 3 17 declare (sntp, adnp, odnp, rptp, rptep, strmp, lrtp) pointer; 3 18 3 19 /* The SEGNAME table - segnames and synonyms of all components */ 3 20 3 21 declare 1 snt aligned based(sntp), 3 22 2 hash_table (0:210) unaligned ptr, /* prime length */ 3 23 2 max_size fixed bin, /* size limit of allocated segname table */ 3 24 2 n_names fixed bin, /* number of segname-table entries used */ 3 25 2 entry(1000) like seg; 3 26 3 27 /* declaration of a SEGNAME entry */ 3 28 3 29 declare 1 seg aligned based, /* redeclaration of a single segname */ 3 30 2 name char(33) aligned, /* segname in ACC string format */ 3 31 2 lng fixed bin, /* length of segname, incl ACC count */ 3 32 2 addname fixed bin, /* 1-> add name to bound segment */ 3 33 2 defrel bit(18), /* offset in defs of new definition */ 3 34 2 comp pointer, /* pointer to associated component table */ 3 35 2 hash_thread ptr; /* thread to next "seg" in bucket */ 3 36 3 37 3 38 /* the ADDNAME table - list of names specified by "Addname" statement */ 3 39 3 40 declare 1 an aligned based(adnp), 3 41 2 max_size fixed bin, /* size limit of addname table */ 3 42 2 n_an fixed bin, /* number of names to add */ 3 43 2 syn(1000) char(32) aligned; /* contains the names to be added */ 3 44 3 45 3 46 /* The ODDNAME table - scratchpad memory to suppress redundant error messages */ 3 47 3 48 declare 1 od aligned based(odnp), 3 49 2 max_size fixed bin, /* max size of table */ 3 50 2 n_odds fixed bin, /* current size of table */ 3 51 2 entry(1000), 3 52 3 name char(289) aligned; 3 53 3 54 3 55 /* The REPATCH table - of halfwords to be relocated at a later time */ 3 56 3 57 declare 1 rpt aligned based(rptp), 3 58 2 thread unaligned ptr, /* To next rpt (null at end) */ 3 59 2 npt fixed bin, 3 60 2 entry(1000) like rpte aligned; 3 61 3 62 3 63 declare 1 rpte aligned based(rptep), /* declaration of single repatch table entry */ 3 64 2 poffset bit(18) unaligned, /* offset into text of word to be patched */ 3 65 2 pexpr bit(18) unaligned, /* value to add to patched halfword */ 3 66 2 halfword char(3) aligned, /* designates wordhalf to be patched */ 3 67 2 pbase char(1) unaligned, /* section designator of word to be patched */ 3 68 2 code char(1) unaligned; /* code of section base to be used as patch value */ 3 69 3 70 3 71 /* The STRINGMAP table - to avoid redundant strings in definition section */ 3 72 3 73 declare 1 strm aligned based(strmp), 3 74 2 hash_table (0:862) fixed bin(17), /* prime length */ 3 75 2 max_size fixed bin, 3 76 2 nstr fixed bin, 3 77 2 entry(2048) unaligned, 3 78 3 map bit(18), /* rel pointer to string in def section */ 3 79 3 hash_thread fixed bin(17); /* index of next strm.entry in hash bucket */ 3 80 3 81 /* The LINK_REGENERATION table - to flag links which have and */ 3 82 /* have not been regenerated to insure generation of all links */ 3 83 3 84 declare 1 lrt aligned based (lrtp), 3 85 2 count fixed bin, 3 86 2 start_offset fixed bin (18) unsigned, 3 87 2 regenerated (0 refer (lrt.count)) 3 88 bit (18) unaligned; 3 89 3 90 declare UNRESOLVED bit (18) static options (constant) init ("000000"b3); 3 91 declare INTERNALLY_RESOLVED bit (18) static options (constant) init ("777777"b3); 334 335 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 336 337 5 1 /* BEGIN INCLUDE FILE ... binder_input.incl.pl1 ... 01/14/81 W. Olin Sibert */ 5 2 /* Input structure for binder_. Modified to contain more useful information 01/14/81 */ 5 3 5 4 /* This file is used only by bind.pl1, bind_.pl1 and parse_bindfile_.pl1 */ 5 5 5 6 /* Modified 9/24/84 by M Sharpe to hold a few new flags (originally done 5 7* by Henry Bodzin, Ford Motor Co.), and to allow "unlimited" number of 5 8* input archives/segments and object components. */ 5 9 5 10 dcl 1 inp aligned based (inpp), /* Really based on bx_$inpp */ 5 11 2 version char (4) aligned, 5 12 2 caller_name char (32) unaligned, /* Name of command on whose behalf binder is being invoked */ 5 13 5 14 2 bound_seg_name char (32) unaligned, /* name of new bound segment */ 5 15 5 16 2 narc fixed bin, /* number of input archive files */ 5 17 2 nupd fixed bin, /* number of update archive files */ 5 18 2 ntotal fixed bin, /* total number of input and update files */ 5 19 2 nobj fixed bin, /* number of objects to be bound */ 5 20 5 21 2 bindfilep pointer, /* pointer to bindfile */ 5 22 2 bindfile_bc fixed bin (24), /* bitcount of bindfile */ 5 23 2 bindfile_name char (32) unaligned, /* name of bindfile */ 5 24 2 bindfile_time_up fixed bin (71), /* date updated in archive */ 5 25 2 bindfile_time_mod fixed bin (71), /* date last modified */ 5 26 2 bindfile_idx fixed bin, /* index of archive bindfile was in */ 5 27 5 28 2 options aligned, 5 29 3 debug bit (1) unaligned, /* 1-> debug option ON */ 5 30 3 list_seg bit (1) unaligned, /* 1 -> make list seg */ 5 31 3 map_opt bit (1) unaligned, /* 1 -> map option */ 5 32 3 list_opt bit (1) unaligned, /* 1 -> list option */ 5 33 3 brief_opt bit (1) unaligned, /* 1 -> brief option */ 5 34 3 force_order_opt bit (1) unaligned, /* 1 -> force_order option from command line */ 5 35 3 zeroseg_seen bit (1) unaligned, /* 1 -> a zero-length object is in the obj array */ 5 36 3 flags_pad bit(29) unaligned, 5 37 /* ---- any additions to the include file must be made before 5 38* the "archive" substructure, as inp.ntotal is incremented 5 39* and the structure is extended as we pick up the names of 5 40* archives/segs from the command line arguments. Similarly, 5 41* after inp.ntotal is determined, the "obj" substructure is 5 42* filled and inp.nobj is incremented as we open up each 5 43* archive and take the necessary information from the 5 44* components. To allocate the structure, the user must first 5 45* set NTOTAL and NOBJ, allocate the structure and then set 5 46* inp.notal and inp.nobj; otherwise, this structure must be 5 47* declared in a temporary segment. */ 5 48 5 49 2 archive (NTOTAL refer (inp.ntotal)) aligned, /* info about input archives/segs, for source map, etc. */ 5 50 3 path char (168) unaligned, /* for identifying archive */ 5 51 3 real_path char (168) unaligned, /* determined by translator_info_ */ 5 52 3 ptr pointer, /* pointer to archive */ 5 53 3 bc fixed bin (24), /* and its bitcount */ 5 54 3 standalone_seg bit (1) unaligned, /* 1 -> standalone_seg;0 -> archive */ 5 55 3 entryname char (32), /* entryname of segment */ 5 56 3 uid bit (36) aligned, /* unique id of archive */ 5 57 3 dtm fixed bin (71), /* date-time modified of archive */ 5 58 5 59 5 60 2 obj (NOBJ refer (inp.nobj)) aligned like obj; 5 61 5 62 5 63 dcl 1 obj aligned based (p), /* declaration of single input entry */ 5 64 2 filename char (32) unaligned, 5 65 2 base pointer, /* pointer to base of object segment */ 5 66 2 bitcount fixed bin (24), /* bitcount of object segment */ 5 67 2 option bit (18) unaligned, /* pointer into option structure */ 5 68 2 new_order fixed bin(9) unsigned unaligned, /* new position from XXX_Order statement */ 5 69 2 to_be_ignored bit(1) unaligned, /* mentioned in Ignore statement or is zero-length */ 5 70 2 objectname_stmt bit(1) unaligned, /* mentioned in objectname: statement */ 5 71 2 flag bit (1) unaligned, /* This word of unaligned bits ought to be a substructure, */ 5 72 2 pad bit (6) unaligned, /* but if it is, pl1 scope-of-names stupidly rejects refs */ 5 73 /* to obj.flag as "ambiguous", because of inp.obj.flag */ 5 74 2 archive_idx fixed bin, /* index of archive from which this component comes */ 5 75 2 time_mod fixed bin (71), /* DTCM of component (from archive) */ 5 76 2 time_up fixed bin (71); /* Time updated in archive */ 5 77 5 78 5 79 dcl BINDER_INPUT_VERSION_2 char (4) aligned internal static options (constant) init ("BI.2"); 5 80 dcl (NOBJ, NTOTAL) fixed bin init (0); 5 81 5 82 5 83 /* END INCLUDE FILE ... binder_input.incl.pl1 */ 338 339 6 1 /* Include file option.incl.pl1 */ 6 2 6 3 declare 1 option aligned based(areap), 6 4 6 5 2 g_retain char(1) unaligned, /* global retain option */ 6 6 2 g_indirect char(1) unaligned, /* global indirect */ 6 7 2 g_delete char(1) unaligned, /* global delete */ 6 8 2 g_nolink char(1) unaligned, /* global no_link */ 6 9 2 g_notable char(1) unaligned, /* global no_table */ 6 10 2 structures fixed bin; /* beginning of option structures */ 6 11 6 12 declare 1 op aligned based(optp), /* declaration of an option structure */ 6 13 6 14 2 n_options fixed bin, /* number of symbols in structure */ 6 15 2 retain char(1) unaligned, /* global retain for this object */ 6 16 2 indirect char(1) unaligned, /* global indirect for this object */ 6 17 2 delete char(1) unaligned, /* global delete for this object */ 6 18 2 no_link char(1) unaligned, /* global no_link for this object */ 6 19 2 table char(1) unaligned, /* keep table for this object */ 6 20 2 n_synonyms fixed bin, /* synonym(s) of component segment */ 6 21 2 n_retain fixed bin, /* number of definitions to be retained */ 6 22 2 n_indirect fixed bin, /* number of symbols to remain unsnapped */ 6 23 2 n_delete fixed bin, /* number of symbols to be deleted */ 6 24 2 n_nolink fixed bin, /* number of symbols not to be prelinked */ 6 25 2 opes(1000) aligned, /* the symbols */ 6 26 3 symb char(257) aligned, 6 27 3 code char(1) aligned, /* code indicating type of option */ 6 28 3 lng fixed bin; 6 29 6 30 declare 1 ope aligned based(p), 6 31 2 symb char(257) aligned, 6 32 2 code char(1) aligned, 6 33 2 lng fixed bin; 6 34 340 341 342 end incorporate_options_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/06/86 1419.4 incorporate_options_.pl1 >spec>install>1119>incorporate_options_.pl1 330 1 07/16/86 1222.1 bindext.incl.pl1 >ldd>include>bindext.incl.pl1 332 2 07/16/86 1222.1 comptbl.incl.pl1 >ldd>include>comptbl.incl.pl1 334 3 07/16/86 1222.1 bndtbl.incl.pl1 >ldd>include>bndtbl.incl.pl1 336 4 07/16/86 1222.1 insym.incl.pl1 >ldd>include>insym.incl.pl1 338 5 12/18/84 0934.2 binder_input.incl.pl1 >ldd>include>binder_input.incl.pl1 340 6 07/23/74 1840.0 option.incl.pl1 >ldd>include>option.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. NOBJ 000404 automatic fixed bin(17,0) initial dcl 5-80 set ref 5-80* NTOTAL 000405 automatic fixed bin(17,0) initial dcl 5-80 set ref 5-80* acc_count based bit(9) dcl 84 set ref 102* addr builtin function dcl 78 ref 97 102 169 172 225 235 239 250 277 280 316 addrel builtin function dcl 78 ref 143 222 274 areap 000112 automatic pointer dcl 65 set ref 91* 106 116 118 120 122 127 139 143 222 274 319 bin builtin function dcl 78 ref 102 bit builtin function dcl 78 ref 102 bx_$bound_segname 000024 external static char(32) dcl 1-48 set ref 98 103 319* 323* bx_$caller 000034 external static char(32) dcl 1-80 ref 95 bx_$ctp 000014 external static pointer dcl 1-26 ref 88 bx_$debug 000030 external static fixed bin(17,0) dcl 1-59 ref 93 bx_$fatal_error 000026 external static fixed bin(17,0) dcl 1-49 set ref 264* 305* 324* bx_$inpp 000016 external static pointer dcl 1-29 ref 89 bx_$ncomp 000032 external static fixed bin(17,0) dcl 1-74 ref 105 bx_$optp 000020 external static pointer dcl 1-32 ref 91 bx_$sntp 000022 external static pointer dcl 1-42 ref 90 clngns 67 based fixed bin(18,0) level 2 dcl 2-16 set ref 150 163 165* clngss 70 based fixed bin(18,0) level 2 dcl 2-16 ref 150 163 165 code 111 based char(1) array level 3 in structure "op" dcl 6-12 in procedure "incorporate_options_" set ref 233* code 101 based char(1) level 2 in structure "ope" dcl 6-30 in procedure "incorporate_options_" set ref 175 187* 236 254* 281 286 com_err_ 000010 constant entry external dcl 56 ref 244 263 304 319 323 comp 342 based pointer array level 3 in structure "snt" dcl 3-21 in procedure "incorporate_options_" set ref 231 comp based structure level 1 dcl 2-16 in procedure "incorporate_options_" comp 14 based pointer level 2 in structure "seg" dcl 3-29 in procedure "incorporate_options_" set ref 242 252* comp_tbl based pointer array dcl 2-12 ref 131 ctep 000400 automatic pointer dcl 2-10 set ref 131* 132 134 150 150 150 158 158 163 163 163 165 165 231* 242 252 ctp 000376 automatic pointer dcl 2-10 set ref 88* 131 delete 110(05) based bit(1) level 2 in structure "is" packed unaligned dcl 4-20 in procedure "incorporate_options_" set ref 180* 193* 208* delete 1(18) based char(1) level 2 in structure "op" packed unaligned dcl 6-12 in procedure "incorporate_options_" ref 193 dp 000120 automatic pointer dcl 65 set ref 169* 173 176 178 180 184 184 193 195 197 201 201 206 208 209 entry 326 based structure array level 2 in structure "snt" dcl 3-21 in procedure "incorporate_options_" set ref 239 250 316 entry 4 based structure array level 2 in structure "insym" dcl 4-12 in procedure "incorporate_options_" set ref 169 errname 000134 automatic char(32) dcl 70 set ref 93* 95* 244* 263* 304* 319* 323* filename based char(32) level 2 dcl 2-16 set ref 150* 158* g_delete 0(18) based char(1) level 2 packed unaligned dcl 6-3 ref 116 g_dl 000127 automatic bit(1) dcl 67 set ref 112* 116* 208 g_in 000126 automatic bit(1) dcl 67 set ref 112* g_indirect 0(09) based char(1) level 2 packed unaligned dcl 6-3 ref 118 g_nl 000130 automatic bit(1) dcl 67 set ref 112* 124* 209 g_nolink 0(27) based char(1) level 2 packed unaligned dcl 6-3 ref 122 139 g_notable 1 based char(1) level 2 packed unaligned dcl 6-3 ref 127 g_nt 000124 automatic bit(1) dcl 67 set ref 112* 127* 155 g_retain based char(1) level 2 packed unaligned dcl 6-3 ref 120 g_rt 000125 automatic bit(1) dcl 67 set ref 112* 118* 120* 124* 206 global_nolink 3(01) based bit(1) level 2 packed unaligned dcl 4-12 set ref 139* 146* i 000100 automatic fixed bin(17,0) dcl 63 set ref 98* 99 99* 101* 101 102 103 103 130* 131 141 143* 219* 220 222* 271* 272 274* 314* 316* ignore 53 based fixed bin(17,0) level 2 dcl 2-16 ref 132 index builtin function dcl 78 ref 98 indirect 1(09) based char(1) level 2 packed unaligned dcl 6-12 ref 195 inp based structure level 1 dcl 5-10 inpp 000110 automatic pointer dcl 65 set ref 89* 141 143 220 222 272 274 insym based structure level 1 dcl 4-12 insymentp 36 based pointer level 2 dcl 2-16 ref 134 io_table 54 based fixed bin(17,0) level 2 dcl 2-16 ref 158 ioa_ 000012 constant entry external dcl 56 ref 150 158 ip 000116 automatic pointer dcl 65 set ref 134* 135 139 146 169 is based structure level 1 dcl 4-20 j 000101 automatic fixed bin(17,0) dcl 63 set ref 168* 169* 226* 227* 231 238* 239* 279* 280 298* k 000102 automatic fixed bin(17,0) dcl 63 set ref 170* 172* 234* 235* lng 102 based fixed bin(17,0) level 2 in structure "ope" dcl 6-30 in procedure "incorporate_options_" ref 253 278 287 lng 11 based fixed bin(17,0) level 2 in structure "seg" dcl 3-29 in procedure "incorporate_options_" set ref 244 244 253* max_size 323 based fixed bin(17,0) level 2 dcl 3-21 set ref 261 263* message 000275 automatic varying char(256) dcl 74 set ref 283* 301* 304* n_insyms 2 based fixed bin(17,0) level 2 dcl 4-12 ref 135 n_names 324 based fixed bin(17,0) level 2 dcl 3-21 set ref 218 226 260* 314 n_options based fixed bin(17,0) level 2 dcl 6-12 ref 144 170 223 234 275 279 n_synonyms 3 based fixed bin(17,0) level 2 dcl 6-12 ref 144 name 326 based char(33) array level 3 in structure "snt" dcl 3-21 in procedure "incorporate_options_" set ref 227 name based char(33) level 2 in structure "seg" dcl 3-29 in procedure "incorporate_options_" set ref 240 244 244 251* 317 ndefs 000103 automatic fixed bin(17,0) dcl 63 set ref 135* 168 218* 238 249* 249 250 260 261 newname 000264 automatic char(33) dcl 73 set ref 97 102 103* 317 no_link 1(27) based char(1) level 2 in structure "op" packed unaligned dcl 6-12 in procedure "incorporate_options_" ref 146 199 no_link 110(09) based bit(1) level 2 in structure "is" packed unaligned dcl 4-20 in procedure "incorporate_options_" set ref 184* 201* 209* nobjects 000104 automatic fixed bin(17,0) dcl 63 set ref 105* 130 219 271 ntotal 23 based fixed bin(17,0) level 2 dcl 5-10 ref 141 143 220 222 272 274 null builtin function dcl 78 ref 106 137 191 319 obj based structure level 1 dcl 5-63 in procedure "incorporate_options_" obj based structure array level 2 in structure "inp" dcl 5-10 in procedure "incorporate_options_" op based structure level 1 dcl 6-12 op_sw 000131 automatic bit(1) dcl 67 set ref 136* 144* 170 ope based structure level 1 dcl 6-30 opes 10 based structure array level 2 dcl 6-12 set ref 172 225 235 277 280 opt_code 000133 automatic char(1) dcl 69 set ref 175* 176 178 180 182 286* 288 290 292 294 296 303 option based structure level 1 dcl 6-3 in procedure "incorporate_options_" option based bit(18) array level 3 in structure "inp" packed unaligned dcl 5-10 in procedure "incorporate_options_" ref 141 143 220 222 272 274 optp 000114 automatic pointer dcl 65 set ref 137* 143* 144 144 146 148 170 172 191 193 195 197 199 222* 223 225 233 234 235 274* 275 277 279 280 p 000106 automatic pointer dcl 65 set ref 172* 173 175 187 225* 227 235* 236 240 251 253 254 277* 278 278 280* 281 286 287 287 316* 317 reset based bit(297) dcl 83 set ref 97* retain 1 based char(1) level 2 in structure "op" packed unaligned dcl 6-12 in procedure "incorporate_options_" ref 197 retain 110(08) based bit(1) level 2 in structure "is" packed unaligned dcl 4-20 in procedure "incorporate_options_" set ref 176* 178* 184* 195* 197* 201* 206* rpte based structure level 1 dcl 3-63 seg based structure level 1 dcl 3-29 snt based structure level 1 dcl 3-21 sntp 000402 automatic pointer dcl 3-17 set ref 90* 218 226 227 231 239 250 260 261 263 314 316 sp 000122 automatic pointer dcl 65 set ref 239* 240 242 244 244 244 244 250* 251 252 253 str1 000144 automatic char(32) dcl 70 set ref 288* 290* 292* 294* 298* 300* 303* 304* str2 000164 automatic char(256) dcl 72 set ref 287* 304* str3 000154 automatic char(32) dcl 70 set ref 278* 304* substr builtin function dcl 78 set ref 103* 103 227 240 244 244 278 287 symb based char(257) level 2 dcl 6-30 ref 173 227 240 251 278 287 symbol 3 based char(257) level 2 dcl 4-20 ref 173 tab_sw 000132 automatic bit(1) dcl 67 set ref 138* 152* 155 table 2 based char(1) level 2 packed unaligned dcl 6-12 ref 148 table_deleted 55 based fixed bin(17,0) level 2 dcl 2-16 set ref 163* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. BINDER_INPUT_VERSION_2 internal static char(4) initial dcl 5-79 INTERNALLY_RESOLVED internal static bit(18) initial unaligned dcl 3-91 UNRESOLVED internal static bit(18) initial unaligned dcl 3-90 adnp automatic pointer dcl 3-17 an based structure level 1 dcl 3-40 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_sep_stat external static fixed bin(17,0) dcl 1-64 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_$bsymp external static pointer dcl 1-41 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_$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_$perprocess_static external static fixed bin(17,0) dcl 1-65 bx_$s_lng external static fixed bin(18,0) dcl 1-57 bx_$size external static fixed bin(17,0) dcl 1-20 bx_$snt_limit external static fixed bin(17,0) dcl 1-21 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 bx_$v_lng external static fixed bin(17,0) dcl 1-75 bx_$vers_name external static char(168) dcl 1-18 bx_$vers_number external static fixed bin(17,0) dcl 1-19 lrt based structure level 1 dcl 3-84 lrtp automatic pointer dcl 3-17 od based structure level 1 dcl 3-48 odnp automatic pointer dcl 3-17 rpt based structure level 1 dcl 3-57 rptep automatic pointer dcl 3-17 rptp automatic pointer dcl 3-17 strm based structure level 1 dcl 3-73 strmp automatic pointer dcl 3-17 NAMES DECLARED BY EXPLICIT CONTEXT. check_bound_name 001445 constant label dcl 314 ref 106 filename_found 001023 constant label dcl 231 ref 227 incorporate_options_ 000222 constant entry external dcl 43 next_comp 001443 constant label dcl 309 ref 275 next_def 000737 constant label dcl 211 ref 188 next_object 000741 constant label dcl 213 ref 132 next_option 000644 constant label dcl 189 ref 173 182 not_synonym 001162 constant label dcl 256 ref 236 246 set_mark 001160 constant label dcl 254 ref 242 try_next 001164 constant label dcl 258 ref 220 223 230 use_Global 000717 constant label dcl 206 ref 199 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1702 1740 1560 1712 Length 2234 1560 36 257 122 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME incorporate_options_ 352 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME incorporate_options_ 000100 i incorporate_options_ 000101 j incorporate_options_ 000102 k incorporate_options_ 000103 ndefs incorporate_options_ 000104 nobjects incorporate_options_ 000106 p incorporate_options_ 000110 inpp incorporate_options_ 000112 areap incorporate_options_ 000114 optp incorporate_options_ 000116 ip incorporate_options_ 000120 dp incorporate_options_ 000122 sp incorporate_options_ 000124 g_nt incorporate_options_ 000125 g_rt incorporate_options_ 000126 g_in incorporate_options_ 000127 g_dl incorporate_options_ 000130 g_nl incorporate_options_ 000131 op_sw incorporate_options_ 000132 tab_sw incorporate_options_ 000133 opt_code incorporate_options_ 000134 errname incorporate_options_ 000144 str1 incorporate_options_ 000154 str3 incorporate_options_ 000164 str2 incorporate_options_ 000264 newname incorporate_options_ 000275 message incorporate_options_ 000376 ctp incorporate_options_ 000400 ctep incorporate_options_ 000402 sntp incorporate_options_ 000404 NOBJ incorporate_options_ 000405 NTOTAL incorporate_options_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp call_ext_out_desc return_mac shorten_stack ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ ioa_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. bx_$bound_segname bx_$caller bx_$ctp bx_$debug bx_$fatal_error bx_$inpp bx_$ncomp bx_$optp bx_$sntp LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 43 000221 5 80 000227 88 000231 89 000234 90 000237 91 000242 93 000245 95 000254 97 000260 98 000263 99 000275 101 000301 102 000303 103 000310 105 000315 106 000317 112 000323 116 000330 118 000340 120 000350 122 000357 124 000363 127 000366 130 000374 131 000403 132 000407 134 000412 135 000414 136 000417 137 000420 138 000422 139 000423 141 000431 143 000445 144 000450 146 000455 148 000463 150 000466 152 000512 155 000514 158 000520 163 000544 165 000551 168 000553 169 000563 170 000567 172 000601 173 000605 175 000612 176 000614 178 000621 180 000626 182 000633 184 000635 187 000641 188 000643 189 000644 191 000646 193 000652 195 000664 197 000675 199 000705 201 000711 204 000716 206 000717 208 000725 209 000732 211 000737 213 000741 218 000743 219 000746 220 000755 222 000770 223 000773 225 000775 226 000777 227 001007 229 001020 230 001022 231 001023 233 001026 234 001031 235 001041 236 001045 238 001050 239 001057 240 001063 242 001070 244 001074 246 001136 248 001140 249 001142 250 001143 251 001150 252 001154 253 001156 254 001160 256 001162 258 001164 260 001166 261 001171 263 001173 264 001224 271 001227 272 001237 274 001252 275 001255 277 001257 278 001261 279 001266 280 001275 281 001301 283 001304 286 001311 287 001312 288 001317 290 001325 292 001333 294 001341 296 001347 298 001351 300 001360 301 001363 302 001370 303 001371 304 001402 305 001436 307 001441 309 001443 314 001445 316 001455 317 001461 319 001465 323 001522 324 001552 326 001555 342 001557 ----------------------------------------------------------- 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