COMPILATION LISTING OF SEGMENT le_make_comp_tbl_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Multics Op. - System M Compiled on: 12/10/86 1257.6 mst Wed Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1986 * 4* * * 5* *********************************************************** */ 6 7 /****^ HISTORY COMMENTS: 8* 1) change(86-08-12,Elhard), approve(86-08-12,MCR7505), 9* audit(86-12-10,DGHowe), install(86-12-10,MR12.0-1241): 10* Originally written to create the component table of input paths and 11* library components to be included in the output object. 12* END HISTORY COMMENTS */ 13 14 /* format: style1,insnl,ifthendo,indthenelse,^indnoniterdo,^inditerdo,indcom,^indthenbegin,^indprocbody,ind2,ll78,initcol0,dclind4,idind24,struclvlind1,comcol41 */ 15 16 le_make_comp_tbl_: 17 proc (leip, /** le_input ptr (in ) */ 18 lecp); /** comp_table ptr (out) */ 19 20 /*** ****************************************************************/ 21 /*** */ 22 /*** Name: le_make_comp_tbl_ */ 23 /*** Input: leip */ 24 /*** Function: create the component table from the list of */ 25 /*** input components in the le_input structure. */ 26 /*** Output: lecp */ 27 /*** */ 28 /*** ****************************************************************/ 29 30 /* constants */ 31 32 dcl true bit (1) static options (constant) init ("1"b); 33 dcl false bit (1) static options (constant) init ("0"b); 34 35 /* parameters */ 36 37 dcl leip ptr parameter; 38 dcl lecp ptr parameter; 39 40 /* procedures */ 41 42 dcl archive_$get_component_info 43 entry (ptr, fixed bin (24), char (*), ptr, 44 fixed bin (35)); 45 dcl cv_fstime_ entry (bit (36) aligned) 46 returns (fixed bin (71)); 47 dcl expand_pathname_$component 48 entry (char (*), char (*), char (*), char (*), 49 fixed bin (35)); 50 dcl hcs_$status_long entry (char (*), char (*), fixed bin (1), ptr, 51 ptr, fixed bin (35)); 52 dcl le_error_ entry options (variable); 53 dcl object_info_$long entry (ptr, fixed bin (24), ptr, 54 fixed bin (35)); 55 56 /* external */ 57 58 dcl le_et_$cant_delete_table 59 external fixed bin (35); 60 dcl le_et_$dup_global_table_opt 61 external fixed bin (35); 62 dcl le_et_$dup_input_component 63 external fixed bin (35); 64 dcl le_et_$dup_table_opt external fixed bin (35); 65 dcl le_et_$has_break_map external fixed bin (35); 66 dcl le_et_$nonrelocatable external fixed bin (35); 67 dcl le_et_$nonstandard_object 68 external fixed bin (35); 69 dcl le_et_$not_an_object external fixed bin (35); 70 71 /* based */ 72 73 dcl 01 comp aligned like le_comp based (compp); 74 dcl 01 lei aligned based (leip), 75 02 header aligned like le_input.header, 76 02 opt dim (0 refer (lei.n_opts)) like le_option; 77 dcl 01 lec aligned based (lecp), 78 02 header aligned like le_components.header, 79 02 comp dim (0 refer (lec.n_components)) like le_comp; 80 dcl 01 opt aligned like le_option based (optp); 81 dcl 01 ssb aligned like sb based (ssbp); 82 83 /* automatic */ 84 85 dcl 01 ac_info aligned like archive_component_info automatic; 86 dcl 01 br_info aligned like status_branch automatic; 87 dcl cn char (32) automatic; 88 dcl compp ptr automatic; 89 dcl cx fixed bin automatic; 90 dcl dn char (168) automatic; 91 dcl ec fixed bin (35) automatic; 92 dcl en char (32) automatic; 93 dcl ix fixed bin automatic; 94 dcl found bit (1) automatic; 95 dcl 01 oi aligned like object_info; 96 dcl optp ptr automatic; 97 dcl optx fixed bin automatic; 98 dcl sblkp ptr automatic; 99 dcl sbp ptr automatic; 100 dcl select_type fixed bin automatic; 101 dcl ssbp ptr automatic; 102 103 /* builtin */ 104 105 dcl addr builtin; 106 dcl addrel builtin; 107 dcl null builtin; 108 109 /**** * * * * * * * * * * * * * * * * * * * * * * * */ 110 111 /**** * * * * * * * * * * * * * * * * * * * * * * * */ 112 113 114 oi.version_number = object_info_version_2; 115 116 /* scan the option list for PATH or LIBRARY input */ 117 118 do select_type = PATH, LIBRARY; 119 120 do optx = 1 to lei.n_opts; 121 122 optp = addr (lei.opt (optx)); 123 124 if opt.type = select_type 125 then do; 126 127 found = false; 128 129 do cx = 1 to lec.n_components while (^found); 130 if opt.optp = lec.comp (cx).segp 131 then found = true; 132 end; 133 134 if found 135 then call le_error_ (LE_ERROR, le_et_$dup_input_component, 136 "^a", opt.name); 137 else do; 138 139 /* get the object info for the segment */ 140 141 call object_info_$long (opt.optp, opt.bc, 142 addr (oi), ec); 143 144 /* if it didn't work, complain and dont append anything */ 145 /* to the component table. */ 146 147 if ec ^= 0 148 then call le_error_ (LE_ERROR, le_et_$not_an_object, "^a", 149 opt.name); 150 else if ^found 151 then do; 152 if ^oi.format.standard 153 154 /* if the thing is an object but not in standard */ 155 /* format, then we don't want to touch it */ 156 157 then call le_error_ (LE_ERROR, 158 le_et_$nonstandard_object, "^a", opt.name); 159 else if ^oi.format.relocatable 160 then call le_error_ (LE_ERROR, le_et_$nonrelocatable, 161 "^a", opt.name); 162 else if oi.bmapp ^= null 163 then call le_error_ (LE_ERROR, le_et_$has_break_map, 164 "^a", opt.name); 165 else do; 166 167 /* actually add the component to the table */ 168 169 cx, lec.n_components = lec.n_components + 1; 170 171 compp = addr (lec.comp (cx)); 172 comp.name = opt.name; 173 comp.path = opt.path_or_ep; 174 comp.segp = opt.optp; 175 comp.bc = opt.bc; 176 comp.compiler = oi.compiler; 177 call expand_pathname_$component ((comp.path), dn, en, cn, 178 ec); 179 call hcs_$status_long (dn, en, 1, addr (br_info), null, 180 ec); 181 comp.uid = br_info.uid; 182 if cn ^= "" 183 then do; 184 185 /* get dtcm from archive for archive components */ 186 187 ac_info.version = ARCHIVE_COMPONENT_INFO_VERSION_1; 188 189 call archive_$get_component_info (comp.segp, 190 (br_info.bit_count), cn, addr (ac_info), ec); 191 comp.dtcm = ac_info.time_modified; 192 end; 193 194 /* from file system for segments or entire archives */ 195 196 else comp.dtcm = cv_fstime_ ((br_info.dtcm)); 197 198 comp.tables.lesp = null; 199 comp.tables.ledp = null; 200 comp.tables.lelp = null; 201 202 comp.orig.textp = oi.textp; 203 comp.orig.defnp = oi.defp; 204 comp.orig.linkp = oi.linkp; 205 comp.orig.statp = oi.statp; 206 comp.orig.symbp = oi.symbp; 207 comp.orig.rel_textp = oi.rel_text; 208 comp.orig.rel_symbp = oi.rel_symbol; 209 comp.orig.rel_linkp = oi.rel_link; 210 comp.orig.text_boundary = oi.text_boundary; 211 comp.orig.static_boundary = oi.static_boundary; 212 comp.orig.textl = oi.tlng; 213 comp.orig.defnl = oi.dlng; 214 comp.orig.linkl = oi.llng; 215 comp.orig.statl = oi.ilng; 216 comp.orig.symbl = oi.slng; 217 comp.orig.symbl_no_rel = oi.default_truncate; 218 comp.orig.symbl_no_table = oi.optional_truncate; 219 220 comp.flags.separate_static = oi.separate_static; 221 222 /* see if the pathname is unique */ 223 224 found = false; 225 do ix = optx + 1 to lei.n_opts while (^found); 226 if lei.opt (ix).type = opt.type & 227 lei.opt (ix).path_or_ep = opt.path_or_ep 228 then found = true; 229 end; 230 comp.flags.unique_path = ^found; 231 232 /* if the option was a PATH option it is */ 233 /* forcibly included. If it is a LIBRARY */ 234 /* option, things are still negotiable. */ 235 236 if opt.type = LIBRARY 237 then comp.flags.library = true; 238 else comp.flags.library = false; 239 240 comp.flags.include = false; 241 242 /* see if the table is required for language I/O */ 243 244 comp.flags.io_table = false; 245 246 if oi.compiler = "v2pl1" | oi.compiler = "PL/I" 247 then do; 248 sbp = oi.symbp; 249 if sbp -> sb.area_ptr ^= ""b 250 then if addrel (sbp, sbp -> sb.area_ptr) -> 251 pl1_symbol_block.flags.io 252 then comp.flags.io_table = true; 253 end; 254 255 256 /* see how many symbol blocks there are */ 257 258 comp.orig.n_symb_blocks = 1; 259 ssbp = comp.orig.symbp; 260 261 do while (ssb.next_block ^= ""b); 262 comp.orig.n_symb_blocks = 263 comp.orig.n_symb_blocks + 1; 264 ssbp = addrel (comp.orig.symbp, ssb.next_block); 265 end; 266 267 /* try to find an option specifying what we do */ 268 /* with the symbol table. First we try to find */ 269 /* a specific option for this component. */ 270 271 found = false; 272 comp.flags.delete_table = false; 273 274 do ix = 1 to lei.n_opts; 275 if (lei.opt (ix).type = TABLE | 276 lei.opt (ix).type = NO_TABLE) & 277 lei.opt (ix).name = comp.name & 278 ^lei.opt (ix).ignore 279 then if found 280 then do; 281 282 /* if this is the second such */ 283 /* option, then complain that */ 284 /* duplicates exist and mark the */ 285 /* duplicate to be ignored. */ 286 287 call le_error_ (LE_WARNING, 288 le_et_$dup_table_opt, 289 "table for ^a will be " || 290 "^[deleted^;retained^].", 291 lei.opt (ix).name, 292 comp.flags.delete_table); 293 lei.opt (ix).flags.ignore = true; 294 end; 295 else do; 296 297 /* we have found an option, note */ 298 /* that we have and set the */ 299 /* delete_table flag */ 300 301 found = true; 302 if lei.opt (ix).type = TABLE 303 then comp.flags.delete_table = false; 304 else comp.flags.delete_table = true; 305 end; 306 end; 307 308 /* if we have not found a specific option, */ 309 /* look for a global table or no_table option. */ 310 311 if ^found 312 then 313 do ix = 1 to lei.n_opts; 314 315 /* look for a global table or no_table option */ 316 317 if (lei.opt (ix).type = TABLE | 318 lei.opt (ix).type = NO_TABLE) & 319 lei.opt (ix).name = "" & 320 ^lei.opt (ix).flags.ignore 321 then if found 322 then do; 323 324 /* if we already found one, */ 325 /* then print a message and */ 326 /* flag the new one as ignored */ 327 328 call le_error_ (LE_WARNING, 329 le_et_$dup_global_table_opt, 330 "Tables will be " || 331 "^[deleted^;retained^].", 332 comp.flags.delete_table); 333 lei.opt (ix).flags.ignore = true; 334 end; 335 else do; 336 337 /* note that we have found a */ 338 /* global option and set the */ 339 /* delete_table flag */ 340 341 found = true; 342 if lei.opt (ix).type = TABLE 343 then comp.flags.delete_table = false; 344 else comp.flags.delete_table = true; 345 end; 346 end; 347 348 /* check to see if there is a conflict between */ 349 /* the user option and the requirements of the */ 350 /* runtime (ie. user wants table deleted but */ 351 /* it is needed for data-directed I/O) */ 352 353 if comp.flags.delete_table & comp.flags.io_table 354 then do; 355 call le_error_ (LE_WARNING, 356 le_et_$cant_delete_table, "^a", comp.name); 357 comp.flags.delete_table = false; 358 end; 359 end; 360 end; 361 end; 362 end; 363 end; 364 end; 365 366 return; 367 368 /**** * * * * * * * * * * * * * * * * * * * * * * * */ 369 370 /**** * * * * * * * * * * * * * * * * * * * * * * * */ 371 372 1 1 /* BEGIN INCLUDE FILE ... archive_component_info.incl.pl1 ... WOS 01/13/81 */ 1 2 /* Structure describing an archive component, used by archive_ */ 1 3 1 4 dcl archive_component_info_ptr pointer; 1 5 1 6 dcl 1 archive_component_info aligned based (archive_component_info_ptr), 1 7 2 version fixed bin, 1 8 2 comp_bc fixed bin (24), 1 9 2 comp_ptr pointer, 1 10 2 name char (32) unaligned, 1 11 2 time_modified fixed bin (71), 1 12 2 time_updated fixed bin (71), 1 13 2 comp_lth fixed bin (19), 1 14 2 access bit (36) unaligned; 1 15 1 16 dcl ARCHIVE_COMPONENT_INFO_VERSION_1 fixed bin internal static options (constant) init (1); 1 17 1 18 /* BEGIN INCLUDE FILE ... archive_component_info.incl.pl1 ... WOS 01/13/81 */ 373 2 1 /**** START OF: le_data.incl.pl1 * * * * * */ 2 2 2 3 /****^ HISTORY COMMENTS: 2 4* 1) change(86-08-12,Elhard), approve(86-08-12,MCR7505), 2 5* audit(86-12-10,DGHowe), install(86-12-10,MR12.0-1241): 2 6* Originally written to define the structures used internally by le_. 2 7* END HISTORY COMMENTS */ 2 8 2 9 /*** ****************************************************************/ 2 10 /*** */ 2 11 /*** Name: le_data */ 2 12 /*** Function: This include file defines the data structures */ 2 13 /*** used internally by the linkage_editor subroutine. */ 2 14 /*** */ 2 15 /*** ****************************************************************/ 2 16 2 17 /* error severity constants */ 2 18 2 19 dcl LE_WARNING fixed bin static options (constant) init (1); 2 20 dcl LE_ERROR fixed bin static options (constant) init (2); 2 21 dcl LE_FATAL_ERROR fixed bin static options (constant) init (3); 2 22 dcl LE_ABORT_ERROR fixed bin static options (constant) init (4); 2 23 2 24 /* section identifier constants */ 2 25 2 26 dcl Text fixed bin (3) static options (constant) 2 27 init (0); 2 28 dcl Linkage fixed bin (3) static options (constant) 2 29 init (1); 2 30 dcl Symbol fixed bin (3) static options (constant) 2 31 init (2); 2 32 dcl Definition fixed bin (3) static options (constant) 2 33 init (3); 2 34 dcl Static fixed bin (3) static options (constant) 2 35 init (4); 2 36 dcl System fixed bin (3) static options (constant) 2 37 init (5); 2 38 dcl Heap fixed bin (3) static options (constant) 2 39 init (6); 2 40 2 41 dcl section_nm (0:6) char (16) static options (constant) 2 42 init ("text", "linkage", "symbol", "definition", 2 43 "static", "system", "heap"); 2 44 2 45 /* link type constants */ 2 46 2 47 dcl Self_Base fixed bin (3) static options (constant) 2 48 init (1); 2 49 dcl Refname_Base fixed bin (3) static options (constant) 2 50 init (3); 2 51 dcl Refname_Offsetname fixed bin (3) static options (constant) 2 52 init (4); 2 53 dcl Self_Offsetname fixed bin (3) static options (constant) 2 54 init (5); 2 55 2 56 /* backpatch type constants */ 2 57 2 58 dcl Patch_Link fixed bin static options (constant) init (1); 2 59 dcl Patch_Init fixed bin static options (constant) init (2); 2 60 dcl Patch_Symbol_Ref fixed bin static options (constant) init (3); 2 61 dcl Patch_Self_Init fixed bin static options (constant) init (4); 2 62 2 63 /*** ****************************************************************/ 2 64 /*** */ 2 65 /*** Name: le_components */ 2 66 /*** Function: the component table is used to keep information */ 2 67 /*** about the input components being used and their */ 2 68 /*** disposition in output components. */ 2 69 /*** */ 2 70 /*** ****************************************************************/ 2 71 2 72 dcl 01 le_components aligned based, 2 73 02 header aligned, 2 74 03 flags aligned, 2 75 04 separate_static bit (1) unaligned, 2 76 04 perprocess_static bit (1) unaligned, 2 77 04 mbz bit (34) unaligned, 2 78 03 n_components fixed bin, 2 79 02 comp (0 refer (le_components.n_components)) 2 80 like le_comp; 2 81 2 82 /*** ****************************************************************/ 2 83 /*** */ 2 84 /*** Name: le_comp */ 2 85 /*** Function: this is a single component table entry. */ 2 86 /*** */ 2 87 /*** ****************************************************************/ 2 88 2 89 dcl 01 le_comp aligned based, 2 90 02 segp ptr, 2 91 02 bc fixed bin (24), 2 92 02 uid bit (36) aligned, 2 93 02 dtcm fixed bin (71), 2 94 02 name char (32) varying, 2 95 02 path char (194) varying, 2 96 02 compiler char (8), 2 97 02 target fixed bin, 2 98 02 flags aligned, 2 99 03 library bit (1) unaligned, 2 100 03 include bit (1) unaligned, 2 101 03 delete_table bit (1) unaligned, 2 102 03 separate_static bit (1) unaligned, 2 103 03 io_table bit (1) unaligned, 2 104 03 unique_path bit (1) unaligned, 2 105 03 mbz bit (30) unaligned, 2 106 02 tables aligned, 2 107 03 lesp ptr, 2 108 03 ledp ptr, 2 109 03 lelp ptr, 2 110 02 orig aligned, 2 111 03 textp ptr, 2 112 03 defnp ptr, 2 113 03 linkp ptr, 2 114 03 statp ptr, 2 115 03 symbp ptr, 2 116 03 rel_textp ptr, 2 117 03 rel_symbp ptr, 2 118 03 rel_linkp ptr, 2 119 03 textl fixed bin (18) unsigned unaligned, 2 120 03 defnl fixed bin (18) unsigned unaligned, 2 121 03 linkl fixed bin (18) unsigned unaligned, 2 122 03 statl fixed bin (18) unsigned unaligned, 2 123 03 symbl fixed bin (18) unsigned unaligned, 2 124 03 symbl_no_rel fixed bin (18) unsigned unaligned, 2 125 03 symbl_no_table fixed bin (18) unsigned unaligned, 2 126 03 n_symb_blocks fixed bin (18) unsigned unaligned, 2 127 03 text_boundary fixed bin (9) unsigned unaligned, 2 128 03 static_boundary fixed bin (9) unsigned unaligned, 2 129 03 next_comp fixed bin (18) unsigned unaligned, 2 130 02 new aligned, 2 131 03 rel_text fixed bin (18) unsigned unaligned, 2 132 03 rel_symb fixed bin (18) unsigned unaligned, 2 133 03 rel_stat fixed bin (18) unsigned unaligned, 2 134 03 text_pad fixed bin (18) unsigned unaligned, 2 135 03 static_pad fixed bin (18) unsigned unaligned, 2 136 03 symbol_pad fixed bin (18) unsigned unaligned; 2 137 2 138 /*** ****************************************************************/ 2 139 /*** */ 2 140 /*** Name: le_segnames */ 2 141 /*** Function: the segname table is used for two purposes: */ 2 142 /*** - to determine the target components of links */ 2 143 /*** being resolved internally. */ 2 144 /*** - to determine the segname definitions to be */ 2 145 /*** emited for definitions being retained. */ 2 146 /*** */ 2 147 /*** ****************************************************************/ 2 148 2 149 dcl 01 le_segnames aligned based, 2 150 02 header aligned, 2 151 03 n_segnames fixed bin, 2 152 02 segname (segname_count refer (le_segnames.n_segnames)), 2 153 03 str char (32) varying, 2 154 03 relp fixed bin (18) unsigned unaligned, 2 155 03 pad bit (18) unaligned; 2 156 dcl segname_count fixed bin automatic; 2 157 2 158 /*** ****************************************************************/ 2 159 /*** */ 2 160 /*** Name: le_definitions */ 2 161 /*** Function: the definition table contains the definitions */ 2 162 /*** from the input components and is used to resolve */ 2 163 /*** link targets, and regenerate definition entries */ 2 164 /*** */ 2 165 /*** ****************************************************************/ 2 166 2 167 dcl 01 le_definitions aligned based, 2 168 02 header aligned, 2 169 03 n_defs fixed bin, 2 170 03 pad bit (36), 2 171 02 def (def_count refer (le_definitions.n_defs)) 2 172 like le_definition; 2 173 dcl def_count fixed bin automatic; 2 174 2 175 dcl 01 le_definition aligned based, 2 176 02 str char (256) varying, 2 177 02 type fixed bin (18) unsigned unaligned, 2 178 02 relp fixed bin (18) unsigned unaligned, 2 179 02 offset fixed bin (18) unsigned unaligned, 2 180 02 new_offset fixed bin (18) unsigned unaligned, 2 181 02 flags aligned, 2 182 03 force_retain bit (1) unaligned, 2 183 03 entrypoint bit (1) unaligned, 2 184 03 ignore bit (1) unaligned, 2 185 03 referenced bit (1) unaligned, 2 186 03 no_link bit (1) unaligned, 2 187 03 retain bit (1) unaligned, 2 188 03 delete bit (1) unaligned, 2 189 03 mbz bit (29) unaligned; 2 190 2 191 /*** ****************************************************************/ 2 192 /*** */ 2 193 /*** Name: le_options */ 2 194 /*** Function: the option table contains definition retention */ 2 195 /*** information. The input retentions options are */ 2 196 /*** ordered such that a linear search of the option */ 2 197 /*** table for the first matching starname will give */ 2 198 /*** the correct retention state. */ 2 199 /*** */ 2 200 /*** ****************************************************************/ 2 201 2 202 dcl 01 le_options aligned based, 2 203 02 header aligned, 2 204 03 n_opts fixed bin, 2 205 02 opt (0 refer (le_options.n_opts)), 2 206 03 type fixed bin (8) unaligned, 2 207 03 used bit (1) unaligned, 2 208 03 inhibit_error bit (1) unaligned, 2 209 03 class fixed bin (6) unaligned, 2 210 03 order fixed bin (17) unaligned, 2 211 03 segname char (32) unaligned, 2 212 03 ep_name char (256) unaligned; 2 213 2 214 /*** ****************************************************************/ 2 215 /*** */ 2 216 /*** Name: le_links */ 2 217 /*** Function: the link table contains information on all of the */ 2 218 /*** links in the input components. It is used to */ 2 219 /*** determine link targets, which library components */ 2 220 /*** will be included, and what init_info will be */ 2 221 /*** used, and where it will be placed. */ 2 222 /*** */ 2 223 /*** ****************************************************************/ 2 224 2 225 dcl 01 le_links aligned based, 2 226 02 header aligned, 2 227 03 offset_adjustment fixed bin (18), 2 228 03 n_links fixed bin, 2 229 02 link (link_count refer (le_links.n_links)) 2 230 like le_link; 2 231 dcl link_count fixed bin automatic; 2 232 2 233 dcl 01 le_link aligned based, 2 234 02 flags unaligned, 2 235 03 used bit (1), 2 236 03 mbx bit (35), 2 237 02 type fixed bin (6) unsigned unaligned, 2 238 02 class fixed bin (6) unsigned unaligned, 2 239 02 mod bit (6) unaligned, 2 240 02 exp fixed bin (17) unaligned, 2 241 02 target fixed bin (18) unsigned unaligned, 2 242 02 defx fixed bin (18) unsigned unaligned, 2 243 02 relp fixed bin (18) unsigned unaligned, 2 244 02 target_comp fixed bin (18) unsigned unaligned, 2 245 02 target_link fixed bin (18) unsigned unaligned, 2 246 02 extension fixed bin (18) unsigned unaligned, 2 247 02 initp ptr unaligned, 2 248 02 segnamep ptr unaligned, 2 249 02 offsetp ptr unaligned; 2 250 2 251 /*** ****************************************************************/ 2 252 /*** */ 2 253 /*** Name: le_binaries */ 2 254 /*** Function: This table contains information about the output */ 2 255 /*** binaries. It is primarily used for creation and */ 2 256 /*** backpatching of MSF output. */ 2 257 /*** */ 2 258 /*** ****************************************************************/ 2 259 2 260 dcl 01 le_binaries aligned based, 2 261 02 header aligned, 2 262 03 n_binaries fixed bin, 2 263 03 pad bit (36), 2 264 02 binary (0:0 refer (le_binaries.n_binaries)), 2 265 03 segp ptr, 2 266 03 bc fixed bin (24), 2 267 03 uid bit (36), 2 268 03 aclc fixed bin, 2 269 03 aclp ptr, 2 270 03 textp ptr, 2 271 03 defnp ptr, 2 272 03 linkp ptr, 2 273 03 symbp ptr, 2 274 03 statp ptr, 2 275 03 textl fixed bin (18) unsigned unaligned, 2 276 03 defnl fixed bin (18) unsigned unaligned, 2 277 03 linkl fixed bin (18) unsigned unaligned, 2 278 03 symbl fixed bin (18) unsigned unaligned, 2 279 03 statl fixed bin (18) unsigned unaligned, 2 280 03 mbz2 bit (18) unaligned; 2 281 2 282 /*** ****************************************************************/ 2 283 /*** */ 2 284 /*** Name: le_patches */ 2 285 /*** Function: This table contains the list of backpatches to be */ 2 286 /*** performed when the rest of the object creation is */ 2 287 /*** complete. Since le_backpatch_ is the only routine */ 2 288 /*** concerned with this, it is maintained completely */ 2 289 /*** internal to le_backpatch_. */ 2 290 /*** */ 2 291 /*** ****************************************************************/ 2 292 2 293 dcl 01 le_patches aligned based, 2 294 02 header aligned, 2 295 03 n_patches fixed bin, 2 296 02 patch (0 refer (le_patches.n_patches)) like le_patch; 2 297 2 298 dcl 01 le_patch aligned based, 2 299 02 type fixed bin, 2 300 02 comp fixed bin, 2 301 02 relp fixed bin (18) unsigned, 2 302 02 target fixed bin, 2 303 02 index fixed bin; 2 304 2 305 /**** END OF: le_data.incl.pl1 * * * * * */ 374 3 1 /**** START OF: le_input.incl.pl1 * * * * * */ 3 2 3 3 /****^ HISTORY COMMENTS: 3 4* 1) change(86-08-12,Elhard), approve(86-08-12,MCR7505), 3 5* audit(86-12-10,DGHowe), install(86-12-10,MR12.0-1241): 3 6* Orignally written to define the le_ input structures. 3 7* END HISTORY COMMENTS */ 3 8 3 9 /*** ****************************************************************/ 3 10 /*** */ 3 11 /*** Name: le_input */ 3 12 /*** Function: This include file declares the input structure to */ 3 13 /*** to the le_ subroutine. The structure consists of */ 3 14 /*** a set of standard data, and a variable length */ 3 15 /*** array of options. The options have a type field */ 3 16 /*** which specified what the option means. The */ 3 17 /*** options can have the following types: */ 3 18 /*** */ 3 19 /*** PATH - specified a single input component */ 3 20 /*** to be bound in with the object */ 3 21 /*** name - is the name of the component */ 3 22 /*** path_or_ep - is the pathname to the component */ 3 23 /*** this may be an archive component */ 3 24 /*** pathname. */ 3 25 /*** flags - link is used by the le command to */ 3 26 /*** keep track of the pathnames that */ 3 27 /*** were found via links for chase */ 3 28 /*** processing. */ 3 29 /*** bc - is the bit count of the component */ 3 30 /*** optp - is a pointer to the component */ 3 31 /*** */ 3 32 /*** LIBRARY - specifies a single library */ 3 33 /*** component. Library components are */ 3 34 /*** only included if they are referred */ 3 35 /*** to by a PATH component or a library */ 3 36 /*** component that is referenced and */ 3 37 /*** therefor included. */ 3 38 /*** name - same as for PATH. */ 3 39 /*** path_or_ep - same as for PATH. */ 3 40 /*** flags - same as for PATH. */ 3 41 /*** bc - same as for PATH. */ 3 42 /*** optp - same as for PATH. */ 3 43 /*** */ 3 44 /*** ADDNAME - specifies a name to be added to the */ 3 45 /*** bound object. */ 3 46 /*** name - is the name to be added to the */ 3 47 /*** bound unit */ 3 48 /*** */ 3 49 /*** SYNONYM - specifies a synonym to be added to */ 3 50 /*** a particular component. This is */ 3 51 /*** reflected as a segname definition */ 3 52 /*** added to the block for that */ 3 53 /*** component. */ 3 54 /*** name - specifies the name of the component */ 3 55 /*** to which you are adding a name. */ 3 56 /*** path_or_ep - is the name being added */ 3 57 /*** */ 3 58 /*** RETAIN - gives a starname to be used when */ 3 59 /*** determining if a definition should */ 3 60 /*** be retained. If the definition */ 3 61 /*** matches the starname and no more */ 3 62 /*** specific info is given, the name is */ 3 63 /*** retained. */ 3 64 /*** flags - the "inhibit_error" flag indicates */ 3 65 /*** that it is not an error if this */ 3 66 /*** option is unused. */ 3 67 /*** path_or_ep - is the starname to match */ 3 68 /*** */ 3 69 /*** DELETE - gives a starname to be used when */ 3 70 /*** determining if a definition should */ 3 71 /*** be retained. If the definition */ 3 72 /*** matches the starname and no more */ 3 73 /*** specific info is given, the name is */ 3 74 /*** deleted. */ 3 75 /*** flags - the "inhibit_error" flag indicates */ 3 76 /*** that it is not an error if this */ 3 77 /*** option is unused. */ 3 78 /*** path_or_ep - is the starname to match. */ 3 79 /*** */ 3 80 /*** NO_LINK - gives a starname to be used when */ 3 81 /*** determining if a definition should */ 3 82 /*** be retained. If the definition */ 3 83 /*** matches the starname and no more */ 3 84 /*** specific info is given, the name is */ 3 85 /*** retained and references to the */ 3 86 /*** definition within the bound uni */ 3 87 /*** are not resolved but are generated */ 3 88 /*** as external links. */ 3 89 /*** flags - the "inhibit_error" flag indicates */ 3 90 /*** that it is not an error if this */ 3 91 /*** option is unused. */ 3 92 /*** path_or_ep - is the starname to match */ 3 93 /*** */ 3 94 /*** TABLE - specifies that the table for a */ 3 95 /*** particular component is to be */ 3 96 /*** retained. */ 3 97 /*** name - is the name of the component to */ 3 98 /*** which the option applies. If name */ 3 99 /*** is "", this is a global option and */ 3 100 /*** applies to all component for which */ 3 101 /*** a specific option does not exist. */ 3 102 /*** */ 3 103 /*** NO_TABLE - specifies that the table for a */ 3 104 /*** particular component is to be */ 3 105 /*** deleted. */ 3 106 /*** name - is the name of the component to */ 3 107 /*** which the option applies. If name */ 3 108 /*** is "", this is a global option and */ 3 109 /*** applies to all component for which */ 3 110 /*** a specific option does not exist. */ 3 111 /*** */ 3 112 /*** ****************************************************************/ 3 113 3 114 dcl 01 le_input aligned based, 3 115 02 header aligned, 3 116 03 version char (8), 3 117 03 name char (32), 3 118 03 flags aligned, 3 119 04 perprocess_static bit (1) unaligned, 3 120 04 force bit (1) unaligned, 3 121 04 debug bit (1) unaligned, 3 122 04 list bit (1) unaligned, 3 123 04 map bit (1) unaligned, 3 124 04 auto_segnames bit (1) unaligned, 3 125 04 mbz bit (30) unaligned, 3 126 03 output_file unaligned, 3 127 04 dir char (168), 3 128 04 entry char (32), 3 129 03 component_size fixed bin, 3 130 03 display_severity fixed bin, 3 131 03 abort_severity fixed bin, 3 132 03 bindfile aligned, 3 133 04 name char (32), 3 134 04 dt_updated fixed bin (71), 3 135 04 dt_modified fixed bin (71), 3 136 03 pad bit (36), 3 137 03 n_opts fixed bin, 3 138 02 opt dim (0 refer (le_input.n_opts)) like le_option; 3 139 3 140 dcl 01 le_option aligned based, 3 141 02 name char (32) unaligned, 3 142 02 path_or_ep char (194) unaligned, 3 143 02 flags unaligned, 3 144 03 link bit (1), 3 145 03 ignore bit (1), 3 146 03 used bit (1), 3 147 03 inhibit_error bit (1), 3 148 03 mbz bit (5), 3 149 02 type fixed bin (8) unaligned, 3 150 02 bc fixed bin (24), 3 151 02 optp ptr; 3 152 3 153 dcl le_input_version_1 char (8) static options (constant) 3 154 init ("le_ 1.0 "); 3 155 3 156 /* constants for the defined option types */ 3 157 3 158 dcl PATH fixed bin static options (constant) init (1); 3 159 dcl LIBRARY fixed bin static options (constant) init (2); 3 160 dcl ADDNAME fixed bin static options (constant) init (3); 3 161 dcl SYNONYM fixed bin static options (constant) init (4); 3 162 dcl RETAIN fixed bin static options (constant) init (5); 3 163 dcl DELETE fixed bin static options (constant) init (6); 3 164 dcl NO_LINK fixed bin static options (constant) init (7); 3 165 dcl TABLE fixed bin static options (constant) init (8); 3 166 dcl NO_TABLE fixed bin static options (constant) init (9); 3 167 3 168 /**** END OF: le_input.incl.pl1 * * * * * */ 375 4 1 /* BEGIN INCLUDE FILE ... object_info.incl.pl1 4 2*coded February 8, 1972 by Michael J. Spier */ 4 3 /* modified May 26, 1972 by M. Weaver */ 4 4 /* modified 15 April, 1975 by M. Weaver */ 4 5 4 6 declare 1 object_info aligned based, /* structure containing object info based, returned by object_info_ */ 4 7 2 version_number fixed bin, /* version number of current structure format (=2) */ 4 8 2 textp pointer, /* pointer to beginning of text section */ 4 9 2 defp pointer, /* pointer to beginning of definition section */ 4 10 2 linkp pointer, /* pointer to beginning of linkage section */ 4 11 2 statp pointer, /* pointer to beginning of static section */ 4 12 2 symbp pointer, /* pointer to beginning of symbol section */ 4 13 2 bmapp pointer, /* pointer to beginning of break map (may be null) */ 4 14 2 tlng fixed bin, /* length in words of text section */ 4 15 2 dlng fixed bin, /* length in words of definition section */ 4 16 2 llng fixed bin, /* length in words of linkage section */ 4 17 2 ilng fixed bin, /* length in words of static section */ 4 18 2 slng fixed bin, /* length in words of symbol section */ 4 19 2 blng fixed bin, /* length in words of break map */ 4 20 2 format, /* word containing bit flags about object type */ 4 21 3 old_format bit(1) unaligned, /* on if segment isn't in new format, i.e. has old style object map */ 4 22 3 bound bit(1) unaligned, /* on if segment is bound */ 4 23 3 relocatable bit(1) unaligned, /* on if seg has relocation info in its first symbol block */ 4 24 3 procedure bit(1) unaligned, /* on if segment is an executable object program */ 4 25 3 standard bit(1) unaligned, /* on if seg is in standard format (more than just standard map) */ 4 26 3 gate bit(1) unaligned, /* on if segment is a gate */ 4 27 3 separate_static bit(1) unaligned, /* on if static not in linkage */ 4 28 3 links_in_text bit(1) unaligned, /* on if there are threaded links in text */ 4 29 3 perprocess_static bit (1) unaligned, /* on if static is not to be per run unit */ 4 30 3 pad bit(27) unaligned, 4 31 2 entry_bound fixed bin, /* entry bound if segment is a gate */ 4 32 2 textlinkp pointer, /* ptr to first link in text */ 4 33 4 34 /* LIMIT OF BRIEF STRUCTURE */ 4 35 4 36 2 compiler char(8) aligned, /* name of processor which generated segment */ 4 37 2 compile_time fixed bin(71), /* clock reading of date/time object was generated */ 4 38 2 userid char(32) aligned, /* standard Multics id of creator of object segment */ 4 39 2 cvers aligned, /* generator version name in printable char string form */ 4 40 3 offset bit(18) unaligned, /* offset of name in words relative to base of symbol section */ 4 41 3 length bit(18) unaligned, /* length of name in characters */ 4 42 2 comment aligned, /* printable comment concerning generator or generation of segment */ 4 43 3 offset bit(18) unaligned, /* offset of comment in words relative to base of symbol section */ 4 44 3 length bit(18) unaligned, /* length of comment in characters */ 4 45 2 source_map fixed bin, /* offset, relative to base of symbol section, of source map structure */ 4 46 4 47 /* LIMIT OF DISPLAY STRUCTURE */ 4 48 4 49 2 rel_text pointer, /* pointer to text section relocation info */ 4 50 2 rel_def pointer, /* pointer to definition section relocation info */ 4 51 2 rel_link pointer, /* pointer to linkage section relocation info */ 4 52 2 rel_static pointer, /* pointer to static section relocation info */ 4 53 2 rel_symbol pointer, /* pointer to symbol section relocation info */ 4 54 2 text_boundary fixed bin, /* specifies mod of text section base boundary */ 4 55 2 static_boundary fixed bin, /* specifies mod of internal static base boundary */ 4 56 /* currently not used by system */ 4 57 2 default_truncate fixed bin, /* offset rel to symbp for binder to automatically trunc. symb sect. */ 4 58 2 optional_truncate fixed bin; /* offset rel to symbp for binder to optionally trunc. symb sect. */ 4 59 4 60 declare object_info_version_2 fixed bin int static init(2); 4 61 4 62 /* END INCLUDE FILE ... object_info.incl.pl1 */ 376 5 1 dcl 1 pl1_symbol_block aligned based, 5 2 2 version fixed bin, 5 3 2 identifier char(8), /* must be "pl1info" */ 5 4 2 flags, 5 5 3 profile bit(1) unal, 5 6 3 table bit(1) unal, 5 7 3 map bit(1) unal, 5 8 3 flow bit(1) unal, 5 9 3 io bit(1) unal, 5 10 3 table_removed bit(1) unal, 5 11 3 long_profile bit(1) unal, 5 12 3 pad bit(29) unal, 5 13 2 greatest_severity fixed bin, 5 14 2 root unal bit(18), 5 15 2 profile unal bit(18), 5 16 2 map unal, 5 17 3 first bit(18), 5 18 3 last bit(18), 5 19 2 segname unaligned, 5 20 3 offset bit(18), 5 21 3 size bit(18); 377 6 1 /* --------------- BEGIN include file status_structures.incl.pl1 --------------- */ 6 2 6 3 /* Revised from existing include files 09/26/78 by C. D. Tavares */ 6 4 6 5 /* This include file contains branch and link structures returned by 6 6* hcs_$status_ and hcs_$status_long. */ 6 7 6 8 dcl 1 status_branch aligned based (status_ptr), 6 9 2 short aligned, 6 10 3 type fixed bin (2) unaligned unsigned, /* seg, dir, or link */ 6 11 3 nnames fixed bin (16) unaligned unsigned, /* number of names */ 6 12 3 names_relp bit (18) unaligned, /* see entry_names dcl */ 6 13 3 dtcm bit (36) unaligned, /* date/time contents last modified */ 6 14 3 dtu bit (36) unaligned, /* date/time last used */ 6 15 3 mode bit (5) unaligned, /* caller's effective access */ 6 16 3 raw_mode bit (5) unaligned, /* caller's raw "rew" modes */ 6 17 3 pad1 bit (8) unaligned, 6 18 3 records_used fixed bin (18) unaligned unsigned, /* number of NONZERO pages used */ 6 19 6 20 /* Limit of information returned by hcs_$status_ */ 6 21 6 22 2 long aligned, 6 23 3 dtd bit (36) unaligned, /* date/time last dumped */ 6 24 3 dtem bit (36) unaligned, /* date/time branch last modified */ 6 25 3 lvid bit (36) unaligned, /* logical volume ID */ 6 26 3 current_length fixed bin (12) unaligned unsigned, /* number of last page used */ 6 27 3 bit_count fixed bin (24) unaligned unsigned, /* reported length in bits */ 6 28 3 pad2 bit (8) unaligned, 6 29 3 copy_switch bit (1) unaligned, /* copy switch */ 6 30 3 tpd_switch bit (1) unaligned, /* transparent to paging device switch */ 6 31 3 mdir_switch bit (1) unaligned, /* is a master dir */ 6 32 3 damaged_switch bit (1) unaligned, /* salvager warned of possible damage */ 6 33 3 synchronized_switch bit (1) unaligned, /* DM synchronized file */ 6 34 3 pad3 bit (5) unaligned, 6 35 3 ring_brackets (0:2) fixed bin (6) unaligned unsigned, 6 36 3 uid bit (36) unaligned; /* unique ID */ 6 37 6 38 dcl 1 status_link aligned based (status_ptr), 6 39 2 type fixed bin (2) unaligned unsigned, /* as above */ 6 40 2 nnames fixed bin (16) unaligned unsigned, 6 41 2 names_relp bit (18) unaligned, 6 42 2 dtem bit (36) unaligned, 6 43 2 dtd bit (36) unaligned, 6 44 2 pathname_length fixed bin (17) unaligned, /* see pathname */ 6 45 2 pathname_relp bit (18) unaligned; /* see pathname */ 6 46 6 47 dcl status_entry_names (status_branch.nnames) character (32) aligned 6 48 based (pointer (status_area_ptr, status_branch.names_relp)), 6 49 /* array of names returned */ 6 50 status_pathname character (status_link.pathname_length) aligned 6 51 based (pointer (status_area_ptr, status_link.pathname_relp)), 6 52 /* link target path */ 6 53 status_area_ptr pointer, 6 54 status_ptr pointer; 6 55 6 56 dcl (Link initial (0), 6 57 Segment initial (1), 6 58 Directory initial (2)) fixed bin internal static options (constant); 6 59 /* values for type fields declared above */ 6 60 6 61 /* ---------------- END include file status_structures.incl.pl1 ---------------- */ 378 7 1 /* BEGIN INCLUDE SEGMENT ... symbol_block.incl.pl1 7 2*coded February 8, 1972 by Michael J. Spier */ 7 3 7 4 /* last modified may 3, 1972 by M. Weaver */ 7 5 7 6 declare 1 sb aligned based(sblkp), /* structure describing a standard symbol block */ 7 7 2 decl_vers fixed bin, /* version number of current structure format */ 7 8 2 identifier char(8) aligned, /* symbolic code to define purpose of this symb block */ 7 9 2 gen_version_number fixed bin, /* positive integer designating version of object generator */ 7 10 2 gen_creation_time fixed bin(71), /* clock reading of date/time generator was created */ 7 11 2 obj_creation_time fixed bin(71), /* clock reading of date/time object was generated */ 7 12 2 generator char(8) aligned, /* name of processor which generated segment */ 7 13 2 gen_name_offset bit(18) unaligned, /* offset of generator name in words rel to base of symbol block */ 7 14 2 gen_name_length bit(18) unaligned, /* length of printable generator version name in characters */ 7 15 2 uid_offset bit(18) unaligned, /* offset of creator id in words rel to base of symbol block */ 7 16 2 uid_length bit(18) unaligned, /* length of standard Multics id of object creator in characters */ 7 17 2 comment_offset bit(18) unaligned, /* offset of comment in words relative to base of symbol block */ 7 18 2 comment_length bit(18) unaligned, /* length of printable generator comment in characters */ 7 19 2 tbound bit(18) unaligned, /* specifies mod of text section base boundary */ 7 20 2 stat_bound bit(18) unaligned, /* specifies mod of internal static base boundary */ 7 21 2 source_map bit(18) unaligned, /* offset relative to base of symbol block of source map structure */ 7 22 2 area_ptr bit(18) unaligned, /* offset of block info in words relative to base of symbol block */ 7 23 2 symb_base bit(18) unaligned, /* back pointer (rel to base of symb block) to base of symb section */ 7 24 2 block_size bit(18) unaligned, /* size in words of entire symbol block */ 7 25 2 next_block bit(18) unaligned, /* if ^= "0"b, is thread (rel to base of symb section) to next symb block */ 7 26 2 rel_text bit(18) unaligned, /* offset rel to base of symbol block of text sect relocation info */ 7 27 2 rel_def bit(18) unaligned, /* offset rel to base of symb block of def section relocation info */ 7 28 2 rel_link bit(18) unaligned, /* offset rel to base of symb block of link sect relocation info */ 7 29 2 rel_symb bit(18) unaligned, /* offset rel to base of symb block of symb sect relocation info */ 7 30 2 default_truncate bit(18) unaligned, /* offset RTBOSB for binder to automatically trunc. symb sect. */ 7 31 2 optional_truncate bit(18) unaligned; /* offset RTBOSB for binder to optionally truncate symb section */ 7 32 7 33 /* END INCLUDE SEGMENT ... symbol_block.incl.pl1 */ 379 380 381 end le_make_comp_tbl_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 12/10/86 1252.1 le_make_comp_tbl_.pl1 >special_ldd>install>MR12.0-1241>le_make_comp_tbl_.pl1 373 1 04/16/81 0942.6 archive_component_info.incl.pl1 >ldd>include>archive_component_info.incl.pl1 374 2 12/10/86 1248.4 le_data.incl.pl1 >special_ldd>install>MR12.0-1241>le_data.incl.pl1 375 3 12/10/86 1248.7 le_input.incl.pl1 >special_ldd>install>MR12.0-1241>le_input.incl.pl1 376 4 08/05/77 1022.5 object_info.incl.pl1 >ldd>include>object_info.incl.pl1 377 5 03/10/77 1345.4 pl1_symbol_block.incl.pl1 >ldd>include>pl1_symbol_block.incl.pl1 378 6 11/22/82 0955.7 status_structures.incl.pl1 >ldd>include>status_structures.incl.pl1 379 7 05/06/74 1752.6 symbol_block.incl.pl1 >ldd>include>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. ARCHIVE_COMPONENT_INFO_VERSION_1 constant fixed bin(17,0) initial dcl 1-16 ref 187 LE_ERROR 000016 constant fixed bin(17,0) initial dcl 2-20 set ref 134* 147* 152* 159* 162* LE_WARNING 000017 constant fixed bin(17,0) initial dcl 2-19 set ref 287* 328* 355* LIBRARY constant fixed bin(17,0) initial dcl 3-159 ref 118 236 NO_TABLE constant fixed bin(17,0) initial dcl 3-166 ref 275 317 PATH constant fixed bin(17,0) initial dcl 3-158 ref 118 TABLE constant fixed bin(17,0) initial dcl 3-165 ref 275 302 317 342 ac_info 000100 automatic structure level 1 dcl 85 set ref 189 189 addr builtin function dcl 105 ref 122 141 141 171 179 179 189 189 addrel builtin function dcl 106 ref 249 264 archive_$get_component_info 000010 constant entry external dcl 42 ref 189 archive_component_info based structure level 1 dcl 1-6 area_ptr 16(18) based bit(18) level 2 packed unaligned dcl 7-6 ref 249 249 bc 71 based fixed bin(24,0) level 2 in structure "opt" dcl 80 in procedure "le_make_comp_tbl_" set ref 141* 175 bc 2 based fixed bin(24,0) level 2 in structure "comp" dcl 73 in procedure "le_make_comp_tbl_" set ref 175* bit_count 7(12) 000122 automatic fixed bin(24,0) level 3 packed unsigned unaligned dcl 86 set ref 189 bmapp 14 000234 automatic pointer level 2 dcl 95 set ref 162 br_info 000122 automatic structure level 1 dcl 86 set ref 179 179 cn 000134 automatic char(32) unaligned dcl 87 set ref 177* 182 189* comp based structure level 1 dcl 73 in procedure "le_make_comp_tbl_" comp 2 based structure array level 2 in structure "lec" dcl 77 in procedure "le_make_comp_tbl_" set ref 171 compiler 30 000234 automatic char(8) level 2 in structure "oi" dcl 95 in procedure "le_make_comp_tbl_" set ref 176 246 246 compiler 101 based char(8) level 2 in structure "comp" dcl 73 in procedure "le_make_comp_tbl_" set ref 176* compp 000144 automatic pointer dcl 88 set ref 171* 172 173 174 175 176 177 181 189 191 196 198 199 200 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 220 230 236 238 240 244 249 258 259 262 262 264 272 275 287 302 304 328 342 344 353 353 355 357 cv_fstime_ 000012 constant entry external dcl 45 ref 196 cx 000146 automatic fixed bin(17,0) dcl 89 set ref 129* 130* 169* 171 default_truncate 64 000234 automatic fixed bin(17,0) level 2 dcl 95 set ref 217 defnl 134(18) based fixed bin(18,0) level 3 packed unsigned unaligned dcl 73 set ref 213* defnp 116 based pointer level 3 dcl 73 set ref 203* defp 4 000234 automatic pointer level 2 dcl 95 set ref 203 delete_table 104(02) based bit(1) level 3 packed unaligned dcl 73 set ref 272* 287* 302* 304* 328* 342* 344* 353 357* dlng 17 000234 automatic fixed bin(17,0) level 2 dcl 95 set ref 213 dn 000147 automatic char(168) unaligned dcl 90 set ref 177* 179* dtcm 4 based fixed bin(71,0) level 2 in structure "comp" dcl 73 in procedure "le_make_comp_tbl_" set ref 191* 196* dtcm 1 000122 automatic bit(36) level 3 in structure "br_info" packed unaligned dcl 86 in procedure "le_make_comp_tbl_" set ref 196 ec 000221 automatic fixed bin(35,0) dcl 91 set ref 141* 147 177* 179* 189* en 000222 automatic char(32) unaligned dcl 92 set ref 177* 179* expand_pathname_$component 000014 constant entry external dcl 47 ref 177 false constant bit(1) initial unaligned dcl 33 ref 127 224 238 240 244 271 272 302 342 357 flags 206(18) based structure array level 3 in structure "lei" packed unaligned dcl 74 in procedure "le_make_comp_tbl_" flags 104 based structure level 2 in structure "comp" dcl 73 in procedure "le_make_comp_tbl_" flags 3 based structure level 2 in structure "pl1_symbol_block" dcl 5-1 in procedure "le_make_comp_tbl_" format 24 000234 automatic structure level 2 dcl 95 found 000233 automatic bit(1) unaligned dcl 94 set ref 127* 129 130* 134 150 224* 225 226* 230 271* 275 301* 311 317 341* hcs_$status_long 000016 constant entry external dcl 50 ref 179 header based structure level 2 in structure "le_components" dcl 2-72 in procedure "le_make_comp_tbl_" header based structure level 2 in structure "lec" dcl 77 in procedure "le_make_comp_tbl_" header based structure level 2 in structure "le_input" dcl 3-114 in procedure "le_make_comp_tbl_" header based structure level 2 in structure "lei" dcl 74 in procedure "le_make_comp_tbl_" ignore 206(19) based bit(1) array level 4 packed unaligned dcl 74 set ref 275 293* 317 333* ilng 21 000234 automatic fixed bin(17,0) level 2 dcl 95 set ref 215 include 104(01) based bit(1) level 3 packed unaligned dcl 73 set ref 240* io 3(04) based bit(1) level 3 packed unaligned dcl 5-1 ref 249 io_table 104(04) based bit(1) level 3 packed unaligned dcl 73 set ref 244* 249* 353 ix 000232 automatic fixed bin(17,0) dcl 93 set ref 225* 226 226* 274* 275 275 275 275 287 293 302* 311* 317 317 317 317 333 342* le_comp based structure level 1 dcl 2-89 le_components based structure level 1 dcl 2-72 le_definition based structure level 1 dcl 2-175 le_error_ 000020 constant entry external dcl 52 ref 134 147 152 159 162 287 328 355 le_et_$cant_delete_table 000024 external static fixed bin(35,0) dcl 58 set ref 355* le_et_$dup_global_table_opt 000026 external static fixed bin(35,0) dcl 60 set ref 328* le_et_$dup_input_component 000030 external static fixed bin(35,0) dcl 62 set ref 134* le_et_$dup_table_opt 000032 external static fixed bin(35,0) dcl 64 set ref 287* le_et_$has_break_map 000034 external static fixed bin(35,0) dcl 65 set ref 162* le_et_$nonrelocatable 000036 external static fixed bin(35,0) dcl 66 set ref 159* le_et_$nonstandard_object 000040 external static fixed bin(35,0) dcl 67 set ref 152* le_et_$not_an_object 000042 external static fixed bin(35,0) dcl 69 set ref 147* le_input based structure level 1 dcl 3-114 le_link based structure level 1 dcl 2-233 le_option based structure level 1 dcl 3-140 le_patch based structure level 1 dcl 2-298 lec based structure level 1 dcl 77 lecp parameter pointer dcl 38 ref 16 129 130 169 169 171 ledp 110 based pointer level 3 dcl 73 set ref 199* lei based structure level 1 dcl 74 leip parameter pointer dcl 37 ref 16 120 122 225 226 226 274 275 275 275 275 287 293 302 311 317 317 317 317 333 342 lelp 112 based pointer level 3 dcl 73 set ref 200* lesp 106 based pointer level 3 dcl 73 set ref 198* library 104 based bit(1) level 3 packed unaligned dcl 73 set ref 236* 238* linkl 135 based fixed bin(18,0) level 3 packed unsigned unaligned dcl 73 set ref 214* linkp 120 based pointer level 3 in structure "comp" dcl 73 in procedure "le_make_comp_tbl_" set ref 204* linkp 6 000234 automatic pointer level 2 in structure "oi" dcl 95 in procedure "le_make_comp_tbl_" set ref 204 llng 20 000234 automatic fixed bin(17,0) level 2 dcl 95 set ref 214 long 4 000122 automatic structure level 2 dcl 86 n_components 1 based fixed bin(17,0) level 3 dcl 77 set ref 129 169 169* n_opts 115 based fixed bin(17,0) level 3 dcl 74 ref 120 225 274 311 n_symb_blocks 137(18) based fixed bin(18,0) level 3 packed unsigned unaligned dcl 73 set ref 258* 262* 262 name based char(32) level 2 in structure "opt" packed unaligned dcl 80 in procedure "le_make_comp_tbl_" set ref 134* 147* 152* 159* 162* 172 name 116 based char(32) array level 3 in structure "lei" packed unaligned dcl 74 in procedure "le_make_comp_tbl_" set ref 275 287* 317 name 6 based varying char(32) level 2 in structure "comp" dcl 73 in procedure "le_make_comp_tbl_" set ref 172* 275 355* next_block 20 based bit(18) level 2 packed unaligned dcl 81 ref 261 264 null builtin function dcl 107 ref 162 179 179 198 199 200 object_info based structure level 1 dcl 4-6 object_info_$long 000022 constant entry external dcl 53 ref 141 object_info_version_2 constant fixed bin(17,0) initial dcl 4-60 ref 114 oi 000234 automatic structure level 1 dcl 95 set ref 141 141 opt based structure level 1 dcl 80 in procedure "le_make_comp_tbl_" opt 116 based structure array level 2 in structure "lei" dcl 74 in procedure "le_make_comp_tbl_" set ref 122 optional_truncate 65 000234 automatic fixed bin(17,0) level 2 dcl 95 set ref 218 optp 72 based pointer level 2 in structure "opt" dcl 80 in procedure "le_make_comp_tbl_" set ref 130 141* 174 optp 000322 automatic pointer dcl 96 in procedure "le_make_comp_tbl_" set ref 122* 124 130 134 141 141 147 152 159 162 172 173 174 175 226 226 236 optx 000324 automatic fixed bin(17,0) dcl 97 set ref 120* 122 225* orig 114 based structure level 2 dcl 73 path 17 based varying char(194) level 2 dcl 73 set ref 173* 177 path_or_ep 126 based char(194) array level 3 in structure "lei" packed unaligned dcl 74 in procedure "le_make_comp_tbl_" set ref 226 path_or_ep 10 based char(194) level 2 in structure "opt" packed unaligned dcl 80 in procedure "le_make_comp_tbl_" ref 173 226 pl1_symbol_block based structure level 1 dcl 5-1 rel_link 54 000234 automatic pointer level 2 dcl 95 set ref 209 rel_linkp 132 based pointer level 3 dcl 73 set ref 209* rel_symbol 60 000234 automatic pointer level 2 dcl 95 set ref 208 rel_symbp 130 based pointer level 3 dcl 73 set ref 208* rel_text 50 000234 automatic pointer level 2 dcl 95 set ref 207 rel_textp 126 based pointer level 3 dcl 73 set ref 207* relocatable 24(02) 000234 automatic bit(1) level 3 packed unaligned dcl 95 set ref 159 sb based structure level 1 dcl 7-6 sbp 000326 automatic pointer dcl 99 set ref 248* 249 249 249 segp based pointer level 2 in structure "comp" dcl 73 in procedure "le_make_comp_tbl_" set ref 174* 189* segp 2 based pointer array level 3 in structure "lec" dcl 77 in procedure "le_make_comp_tbl_" set ref 130 select_type 000330 automatic fixed bin(17,0) dcl 100 set ref 118* 124* separate_static 104(03) based bit(1) level 3 in structure "comp" packed unaligned dcl 73 in procedure "le_make_comp_tbl_" set ref 220* separate_static 24(06) 000234 automatic bit(1) level 3 in structure "oi" packed unaligned dcl 95 in procedure "le_make_comp_tbl_" set ref 220 short 000122 automatic structure level 2 dcl 86 slng 22 000234 automatic fixed bin(17,0) level 2 dcl 95 set ref 216 ssb based structure level 1 dcl 81 ssbp 000332 automatic pointer dcl 101 set ref 259* 261 264* 264 standard 24(04) 000234 automatic bit(1) level 3 packed unaligned dcl 95 set ref 152 static_boundary 140(09) based fixed bin(9,0) level 3 in structure "comp" packed unsigned unaligned dcl 73 in procedure "le_make_comp_tbl_" set ref 211* static_boundary 63 000234 automatic fixed bin(17,0) level 2 in structure "oi" dcl 95 in procedure "le_make_comp_tbl_" set ref 211 statl 135(18) based fixed bin(18,0) level 3 packed unsigned unaligned dcl 73 set ref 215* statp 10 000234 automatic pointer level 2 in structure "oi" dcl 95 in procedure "le_make_comp_tbl_" set ref 205 statp 122 based pointer level 3 in structure "comp" dcl 73 in procedure "le_make_comp_tbl_" set ref 205* status_branch based structure level 1 dcl 6-8 symbl 136 based fixed bin(18,0) level 3 packed unsigned unaligned dcl 73 set ref 216* symbl_no_rel 136(18) based fixed bin(18,0) level 3 packed unsigned unaligned dcl 73 set ref 217* symbl_no_table 137 based fixed bin(18,0) level 3 packed unsigned unaligned dcl 73 set ref 218* symbp 124 based pointer level 3 in structure "comp" dcl 73 in procedure "le_make_comp_tbl_" set ref 206* 259 264 symbp 12 000234 automatic pointer level 2 in structure "oi" dcl 95 in procedure "le_make_comp_tbl_" set ref 206 248 tables 106 based structure level 2 dcl 73 text_boundary 62 000234 automatic fixed bin(17,0) level 2 in structure "oi" dcl 95 in procedure "le_make_comp_tbl_" set ref 210 text_boundary 140 based fixed bin(9,0) level 3 in structure "comp" packed unsigned unaligned dcl 73 in procedure "le_make_comp_tbl_" set ref 210* textl 134 based fixed bin(18,0) level 3 packed unsigned unaligned dcl 73 set ref 212* textp 2 000234 automatic pointer level 2 in structure "oi" dcl 95 in procedure "le_make_comp_tbl_" set ref 202 textp 114 based pointer level 3 in structure "comp" dcl 73 in procedure "le_make_comp_tbl_" set ref 202* time_modified 14 000100 automatic fixed bin(71,0) level 2 dcl 85 set ref 191 tlng 16 000234 automatic fixed bin(17,0) level 2 dcl 95 set ref 212 true constant bit(1) initial unaligned dcl 32 ref 130 226 236 249 293 301 304 333 341 344 type 206(27) based fixed bin(8,0) array level 3 in structure "lei" packed unaligned dcl 74 in procedure "le_make_comp_tbl_" set ref 226 275 275 302 317 317 342 type 70(27) based fixed bin(8,0) level 2 in structure "opt" packed unaligned dcl 80 in procedure "le_make_comp_tbl_" ref 124 226 236 uid 3 based bit(36) level 2 in structure "comp" dcl 73 in procedure "le_make_comp_tbl_" set ref 181* uid 11 000122 automatic bit(36) level 3 in structure "br_info" packed unaligned dcl 86 in procedure "le_make_comp_tbl_" set ref 181 unique_path 104(05) based bit(1) level 3 packed unaligned dcl 73 set ref 230* version 000100 automatic fixed bin(17,0) level 2 dcl 85 set ref 187* version_number 000234 automatic fixed bin(17,0) level 2 dcl 95 set ref 114* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ADDNAME internal static fixed bin(17,0) initial dcl 3-160 DELETE internal static fixed bin(17,0) initial dcl 3-163 Definition internal static fixed bin(3,0) initial dcl 2-32 Directory internal static fixed bin(17,0) initial dcl 6-56 Heap internal static fixed bin(3,0) initial dcl 2-38 LE_ABORT_ERROR internal static fixed bin(17,0) initial dcl 2-22 LE_FATAL_ERROR internal static fixed bin(17,0) initial dcl 2-21 Link internal static fixed bin(17,0) initial dcl 6-56 Linkage internal static fixed bin(3,0) initial dcl 2-28 NO_LINK internal static fixed bin(17,0) initial dcl 3-164 Patch_Init internal static fixed bin(17,0) initial dcl 2-59 Patch_Link internal static fixed bin(17,0) initial dcl 2-58 Patch_Self_Init internal static fixed bin(17,0) initial dcl 2-61 Patch_Symbol_Ref internal static fixed bin(17,0) initial dcl 2-60 RETAIN internal static fixed bin(17,0) initial dcl 3-162 Refname_Base internal static fixed bin(3,0) initial dcl 2-49 Refname_Offsetname internal static fixed bin(3,0) initial dcl 2-51 SYNONYM internal static fixed bin(17,0) initial dcl 3-161 Segment internal static fixed bin(17,0) initial dcl 6-56 Self_Base internal static fixed bin(3,0) initial dcl 2-47 Self_Offsetname internal static fixed bin(3,0) initial dcl 2-53 Static internal static fixed bin(3,0) initial dcl 2-34 Symbol internal static fixed bin(3,0) initial dcl 2-30 System internal static fixed bin(3,0) initial dcl 2-36 Text internal static fixed bin(3,0) initial dcl 2-26 archive_component_info_ptr automatic pointer dcl 1-4 def_count automatic fixed bin(17,0) dcl 2-173 le_binaries based structure level 1 dcl 2-260 le_definitions based structure level 1 dcl 2-167 le_input_version_1 internal static char(8) initial unaligned dcl 3-153 le_links based structure level 1 dcl 2-225 le_options based structure level 1 dcl 2-202 le_patches based structure level 1 dcl 2-293 le_segnames based structure level 1 dcl 2-149 link_count automatic fixed bin(17,0) dcl 2-231 sblkp automatic pointer dcl 98 section_nm internal static char(16) initial array unaligned dcl 2-41 segname_count automatic fixed bin(17,0) dcl 2-156 status_area_ptr automatic pointer dcl 6-47 status_entry_names based char(32) array dcl 6-47 status_link based structure level 1 dcl 6-38 status_pathname based char dcl 6-47 status_ptr automatic pointer dcl 6-47 NAME DECLARED BY EXPLICIT CONTEXT. le_make_comp_tbl_ 000057 constant entry external dcl 16 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1620 1664 1410 1630 Length 2236 1410 44 335 210 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME le_make_comp_tbl_ 300 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME le_make_comp_tbl_ 000100 ac_info le_make_comp_tbl_ 000122 br_info le_make_comp_tbl_ 000134 cn le_make_comp_tbl_ 000144 compp le_make_comp_tbl_ 000146 cx le_make_comp_tbl_ 000147 dn le_make_comp_tbl_ 000221 ec le_make_comp_tbl_ 000222 en le_make_comp_tbl_ 000232 ix le_make_comp_tbl_ 000233 found le_make_comp_tbl_ 000234 oi le_make_comp_tbl_ 000322 optp le_make_comp_tbl_ 000324 optx le_make_comp_tbl_ 000326 sbp le_make_comp_tbl_ 000330 select_type le_make_comp_tbl_ 000332 ssbp le_make_comp_tbl_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp call_ext_out_desc call_ext_out return_mac shorten_stack ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. archive_$get_component_info cv_fstime_ expand_pathname_$component hcs_$status_long le_error_ object_info_$long THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. le_et_$cant_delete_table le_et_$dup_global_table_opt le_et_$dup_input_component le_et_$dup_table_opt le_et_$has_break_map le_et_$nonrelocatable le_et_$nonstandard_object le_et_$not_an_object LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 16 000053 114 000064 118 000066 120 000072 122 000105 124 000113 127 000120 129 000121 130 000135 132 000151 134 000153 141 000205 147 000225 150 000257 152 000261 159 000314 162 000347 169 000403 171 000412 172 000415 173 000423 174 000430 175 000432 176 000434 177 000437 179 000477 181 000542 182 000545 187 000551 189 000553 191 000610 192 000613 196 000614 198 000627 199 000632 200 000633 202 000634 203 000636 204 000640 205 000642 206 000644 207 000646 208 000650 209 000652 210 000654 211 000657 212 000662 213 000665 214 000667 215 000672 216 000674 217 000677 218 000701 220 000704 224 000711 225 000712 226 000727 229 000756 230 000760 236 000767 238 001000 240 001002 244 001004 246 001006 248 001017 249 001021 258 001034 259 001036 261 001040 262 001045 264 001052 265 001056 271 001057 272 001060 274 001063 275 001075 287 001127 293 001167 294 001175 301 001176 302 001200 304 001205 306 001207 311 001211 317 001225 328 001255 333 001310 334 001316 341 001317 342 001321 344 001327 346 001332 353 001334 355 001341 357 001370 363 001373 364 001375 366 001403 ----------------------------------------------------------- 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