COMPILATION LISTING OF SEGMENT decode_definition_ Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/04/82 1803.9 mst Thu 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 /* Decode Definition - internal subroutine to return the information contained 12* in a given object segment definition, in an explicit and directly-accessible format. 13* 14* Designed and initially coded by Michael J. Spier, March 29, 1971 */ 15 /* Modified 1972 by R. Barnes to add $full entrypoint */ 16 /* Modified May 1981 by M. Weaver to make $full not mess up static variables */ 17 18 19 decode_definition_: procedure(definition_ptr, structure_ptr, code); 20 21 declare (definition_ptr, structure_ptr) pointer, code bit(1) aligned; 22 23 /* DECLARATION OF EXTERNAL SYMBOLS */ 24 25 declare object_info_$brief external entry(pointer,fixed bin(24),pointer,fixed bin(35)); 26 declare hcs_$status_mins entry(ptr, fixed bin, fixed bin(24), fixed bin(35)); 27 28 /* DECLARATION OF INTERNAL STATIC VARIABLES */ 29 30 declare section_table(0:4) char(4) internal static initial("text","link","symb","segn", "stat"); 31 declare (segbase,static_defbase,static_linkbase) pointer internal static initial(null); 32 declare (initialize, bitcount) fixed bin(24) internal static initial(0); 33 34 /* DECLARATION OF AUTOMATIC STORAGE VARIABLES */ 35 36 declare (i, lng) fixed bin; 37 declare err_code fixed bin(35); 38 declare ret_acc bit(1) aligned init("0"b); 39 declare fullsw bit(1) aligned; 40 declare (argp, dp, acc_ptr, linkp, oip, oi_ptr) pointer; 41 declare (defbase, linkbase) pointer; 42 declare based_bit bit(36) based; 43 declare oi_area(50) fixed bin(35); /* for automatic version of oi structure */ 44 45 46 /* DECLARATION OF BUILTIN FUNCTIONS */ 47 48 declare (addr, addrel, baseno, bin, fixed, null, rel, substr) builtin; 49 50 /* DECLARATION OF BASED STRUCTURES */ 51 52 declare 1 short_dd aligned based(argp), 53 2 snext_def pointer, /* pointer to next definition in list */ 54 2 slast_def pointer, /* pointer to previous definition in list */ 55 2 sblock_ptr pointer, /* pointer to either defblock or segname block */ 56 2 ssection char(4) aligned, /* "text", "link", "symb" or "segn" */ 57 2 soffset fixed bin, /* offset within class (if ^= "segn") */ 58 2 sentrypoint fixed bin, /* value of entrypoint in text if ^= 0 */ 59 2 ssymbol char(32) aligned; /* the symbolic name of the definition */ 60 61 declare 1 dd aligned based(argp), /* structure filled in by full entry */ 62 2 next_def ptr, /* ptr to next definition in list */ 63 2 last_def ptr, /* ptr to previous definition in list */ 64 2 block_ptr ptr, /* ptr to either defblock or segname block */ 65 2 section char(4) aligned, /* "text", "link", "symb" or "segn" */ 66 2 offset fixed bin, /* offset within class (if ^= "segn") */ 67 2 entrypoint fixed bin, /* value of entrypoint in text if ^= 0 */ 68 2 symbol char(256) aligned, /* the symbolic name of the definition */ 69 2 symbol_lng fixed bin, /* the actual length of symbol */ 70 2 flags, /* same flags as in std def */ 71 3 a_new_format bit(1) unaligned, /* def is in new format */ 72 3 a_ignore bit(1) unaligned, /* linker should ignore this def */ 73 3 a_entrypoint bit(1) unaligned, /* def is for entrypoint */ 74 3 a_retain bit(1) unaligned, 75 3 a_arg_count bit(1) unaligned, /* there is an arg count for entry */ 76 3 a_descr_sw bit(1) unaligned, /* there are valid descriptors for entry */ 77 3 unused bit(12) unaligned, 78 2 n_args fixed bin, /* # of args entry expects */ 79 2 descr_ptr ptr; /* ptr to array of rel ptrs to descriptors for entry */ 80 81 declare 1 acc_structure aligned based(argp), 82 2 next_defx ptr, /* pointer to next definition in list */ 83 2 last_defx ptr, /* pointer to previous definition in list */ 84 2 block_ptrx ptr, /* pointer to either defblock or segname block */ 85 2 sectionx char(4) aligned, /* "text", "link", "symb" or "segn" */ 86 2 offsetx fixed bin, /* offset within class (if ^= "segn") */ 87 2 entrypointx fixed bin, /* value of entrypoint in text if ^= 0 */ 88 2 ret_acc_ptr ptr; /* Pointer to ACC representation of string */ 89 90 declare 1 definition based(dp) aligned, 91 2 forward bit(18) unaligned, 92 2 backward bit(18) unaligned, 93 2 value bit(18) unaligned, 94 2 flags unaligned, 95 3 new_def bit(1) unaligned, 96 3 ignore bit(1) unaligned, 97 3 entrypoint bit(1) unaligned, 98 3 retain bit(1) unaligned, 99 3 arg_count bit(1) unaligned, 100 3 descr_sw bit(1) unaligned, 101 3 dum bit(9) unaligned, 102 2 class bit(3) unaligned, 103 2 string_ptr bit(18) unaligned, 104 2 segname_ptr bit(18) unaligned, 105 2 nargs bit(18) unaligned, 106 2 descriptor(bin(nargs,18)) bit(18) unaligned; 107 108 declare 1 eax(3) aligned based(linkp), 109 2 location bit(18) unaligned, 110 2 op_code bit(6) unaligned; 111 112 declare 1 linkheader aligned based(linkbase), 113 2 defseg fixed bin, 114 2 defoffset bit(18) unaligned, 115 2 dum1 bit(18) unaligned, 116 2 block_thread pointer, 117 2 dum2 pointer, 118 2 link_begin bit(18) unaligned, 119 2 sect_lng bit(18) unaligned; 120 121 declare 1 class_3_def based(dp) aligned, 122 2 dum1 bit(36) aligned, 123 2 next_class3 bit(18) unaligned, 124 2 dum2 bit(36) unaligned, 125 2 defblock_ptr bit(18) unaligned; 126 127 declare 1 acc aligned based(acc_ptr), 128 2 lng bit(9) unaligned, 129 2 dum1 bit(27) unaligned; 130 131 declare acc_string char(33) aligned based(acc_ptr); 132 133 declare delimitor fixed bin based(dp); 134 135 /* */ 136 137 138 declare 1 oi aligned based(oip) like object_info; 139 1 1 /* BEGIN INCLUDE FILE ... object_info.incl.pl1 1 2*coded February 8, 1972 by Michael J. Spier */ 1 3 /* modified May 26, 1972 by M. Weaver */ 1 4 /* modified 15 April, 1975 by M. Weaver */ 1 5 1 6 declare 1 object_info aligned based, /* structure containing object info based, returned by object_info_ */ 1 7 2 version_number fixed bin, /* version number of current structure format (=2) */ 1 8 2 textp pointer, /* pointer to beginning of text section */ 1 9 2 defp pointer, /* pointer to beginning of definition section */ 1 10 2 linkp pointer, /* pointer to beginning of linkage section */ 1 11 2 statp pointer, /* pointer to beginning of static section */ 1 12 2 symbp pointer, /* pointer to beginning of symbol section */ 1 13 2 bmapp pointer, /* pointer to beginning of break map (may be null) */ 1 14 2 tlng fixed bin, /* length in words of text section */ 1 15 2 dlng fixed bin, /* length in words of definition section */ 1 16 2 llng fixed bin, /* length in words of linkage section */ 1 17 2 ilng fixed bin, /* length in words of static section */ 1 18 2 slng fixed bin, /* length in words of symbol section */ 1 19 2 blng fixed bin, /* length in words of break map */ 1 20 2 format, /* word containing bit flags about object type */ 1 21 3 old_format bit(1) unaligned, /* on if segment isn't in new format, i.e. has old style object map */ 1 22 3 bound bit(1) unaligned, /* on if segment is bound */ 1 23 3 relocatable bit(1) unaligned, /* on if seg has relocation info in its first symbol block */ 1 24 3 procedure bit(1) unaligned, /* on if segment is an executable object program */ 1 25 3 standard bit(1) unaligned, /* on if seg is in standard format (more than just standard map) */ 1 26 3 gate bit(1) unaligned, /* on if segment is a gate */ 1 27 3 separate_static bit(1) unaligned, /* on if static not in linkage */ 1 28 3 links_in_text bit(1) unaligned, /* on if there are threaded links in text */ 1 29 3 perprocess_static bit (1) unaligned, /* on if static is not to be per run unit */ 1 30 3 pad bit(27) unaligned, 1 31 2 entry_bound fixed bin, /* entry bound if segment is a gate */ 1 32 2 textlinkp pointer, /* ptr to first link in text */ 1 33 1 34 /* LIMIT OF BRIEF STRUCTURE */ 1 35 1 36 2 compiler char(8) aligned, /* name of processor which generated segment */ 1 37 2 compile_time fixed bin(71), /* clock reading of date/time object was generated */ 1 38 2 userid char(32) aligned, /* standard Multics id of creator of object segment */ 1 39 2 cvers aligned, /* generator version name in printable char string form */ 1 40 3 offset bit(18) unaligned, /* offset of name in words relative to base of symbol section */ 1 41 3 length bit(18) unaligned, /* length of name in characters */ 1 42 2 comment aligned, /* printable comment concerning generator or generation of segment */ 1 43 3 offset bit(18) unaligned, /* offset of comment in words relative to base of symbol section */ 1 44 3 length bit(18) unaligned, /* length of comment in characters */ 1 45 2 source_map fixed bin, /* offset, relative to base of symbol section, of source map structure */ 1 46 1 47 /* LIMIT OF DISPLAY STRUCTURE */ 1 48 1 49 2 rel_text pointer, /* pointer to text section relocation info */ 1 50 2 rel_def pointer, /* pointer to definition section relocation info */ 1 51 2 rel_link pointer, /* pointer to linkage section relocation info */ 1 52 2 rel_static pointer, /* pointer to static section relocation info */ 1 53 2 rel_symbol pointer, /* pointer to symbol section relocation info */ 1 54 2 text_boundary fixed bin, /* specifies mod of text section base boundary */ 1 55 2 static_boundary fixed bin, /* specifies mod of internal static base boundary */ 1 56 /* currently not used by system */ 1 57 2 default_truncate fixed bin, /* offset rel to symbp for binder to automatically trunc. symb sect. */ 1 58 2 optional_truncate fixed bin; /* offset rel to symbp for binder to optionally trunc. symb sect. */ 1 59 1 60 declare object_info_version_2 fixed bin int static init(2); 1 61 1 62 /* END INCLUDE FILE ... object_info.incl.pl1 */ 140 141 142 143 144 declare 1 old_oi aligned based(oip), /* structure containing object info, returned by object_info_ */ 145 2 version_number fixed bin, /* version number of current structure format */ 146 2 textp pointer, /* pointer to beginning of text section */ 147 2 defp pointer, /* pointer to beginning of definition section */ 148 2 linkp pointer, /* pointer to beginning of linkage section */ 149 2 symbp pointer, /* pointer to beginning of symbol section */ 150 2 bmapp pointer, /* pointer to beginning of break map (may be null) */ 151 2 tlng fixed bin, /* length in words of text section */ 152 2 dlng fixed bin, /* length in words of definition section */ 153 2 llng fixed bin, /* length in words of linkage section */ 154 2 slng fixed bin, /* length in words of symbol section */ 155 2 blng fixed bin, /* length in words of break map */ 156 2 format, /* word containing bit flags about object type */ 157 3 old_format bit(1) unaligned, /* on if segment isn't in new format, i.e. has old style object map */ 158 3 bound bit(1) unaligned, /* on if segment is bound */ 159 3 relocatable bit(1) unaligned, /* on if seg has relocation info in its first symbol block */ 160 3 procedure bit(1) unaligned, /* on if segment is an executable object program */ 161 3 standard bit(1) unaligned, /* on if seg is in standard format (more than just standard map) */ 162 3 gate bit(1) unaligned, /* on if segment is a gate */ 163 3 no_old_alm bit(1) unaligned, /* if bound, means there are no old format alm components (temp.) */ 164 2 call_delimiter fixed bin, /* call delimiter if segment is a gate */ 165 166 /* LIMIT OF BRIEF STRUCTURE */ 167 168 2 compiler char(8) aligned, /* name of processor which generated segment */ 169 2 compile_time fixed bin(71), /* clock reading of date/time object was generated */ 170 2 userid char(32) aligned, /* standard Multics id of creator of object segment */ 171 2 cvers aligned, /* generator version name in printable char string form */ 172 3 offset bit(18) unaligned, /* offset of name in words relative to base of symbol section */ 173 3 length bit(18) unaligned, /* length of name in characters */ 174 2 comment aligned, /* printable comment concerning generator or generation of segment */ 175 3 offset bit(18) unaligned, /* offset of comment in words relative to base of symbol section */ 176 3 length bit(18) unaligned, /* length of comment in characters */ 177 2 source_map fixed bin, /* offset, relative to base of symbol section, of source map structure */ 178 179 /* LIMIT OF DISPLAY STRUCTURE */ 180 181 2 rel_text pointer, /* offset rel to base of symbol section of text sect. relocation info */ 182 2 rel_def pointer, /* offset relative to symbp of definition section relocation info */ 183 2 rel_link pointer, /* offset relative to symbp of linkage section relocation info */ 184 2 rel_symbol pointer, /* offset relative to symbp of symbol section relocation info */ 185 2 text_boundary fixed bin, /* specifies mod of text section base boundary */ 186 2 static_boundary fixed bin, /* specifies mod of internal static base boundary */ 187 2 default_truncate fixed bin, /* offset rel to symbp for binder to automatically trunc. symb sect. */ 188 2 optional_truncate fixed bin; /* offset rel to symbp for binder to optionally trunc. symb sect. */ 189 190 191 192 /* */ 193 194 195 fullsw = "0"b; 196 oip = addr(oi_area); /* initialize for original entries */ 197 argp = structure_ptr; /* copy arguments into stack */ 198 dp = definition_ptr; /* ... */ 199 if initialize = 1 then 200 do; 201 if baseno(dp) = baseno(segbase) then goto get_object_info; 202 initialize, 203 bitcount = 0; 204 segbase = null; 205 end; 206 if rel(dp) = "0"b then /* initialization, locate first def */ 207 do; 208 segbase = dp; 209 call hcs_$status_mins(segbase,i,bitcount,err_code); 210 if err_code ^= 0 then goto no_definition; 211 212 get_object_info: 213 oi.version_number = object_info_version_2; 214 call object_info_$brief(segbase,bitcount,oip,err_code); 215 if err_code ^= 0 then goto no_definition; 216 static_linkbase = oi.linkp; 217 dp, 218 static_defbase = oi.defp; 219 if oi.format.standard = "1"b then dp = addrel(static_defbase,forward); 220 /* skip definition section header */ 221 else if ^oi.format.old_format then go to no_definition; 222 /* don't attempt to process non-standard new format segs */ 223 initialize = 0; 224 end; 225 226 nonreentrant_join: 227 defbase = static_defbase; /* copy so $full doesn't use static variables */ 228 linkbase = static_linkbase; 229 230 loop: 231 code = "0"b; /* preset error code */ 232 233 if dp = null then goto no_definition; 234 if delimitor = 0 then /* end of definition thread */ 235 do; 236 no_definition: 237 code = "1"b; /* EOF */ 238 return; 239 end; 240 241 next_def = addrel(defbase, forward); /* pointer to next def on list */ 242 last_def, 243 block_ptr = null; /* temporarily preset to null */ 244 dd.offset, 245 dd.entrypoint = 0; /* temporarily preset to zero */ 246 i = fixed(class, 3); /* get class code, convert to fixed bin */ 247 section = section_table(i); /* get symbolic section code */ 248 249 if section ^= "segn" then /* its a regular definition */ 250 dd.offset = fixed(value, 18); /* compute value of definition */ 251 252 if section = "link" then if dd.offset >= fixed(link_begin, 18) then 253 do; /* this seems to be an entrypoint */ 254 linkp = addrel(linkbase, dd.offset); /* pointer to entry sequence */ 255 if eax(1).op_code = "110010"b then dd.entrypoint = fixed(eax(1).location, 18); 256 else if eax(3).op_code = "110010"b then dd.entrypoint = fixed(eax(3).location, 18); 257 end; 258 259 if ignore = "1"b then if ^fullsw then 260 do; /* ignore this definition */ 261 dp = next_def; /* follow thread */ 262 goto loop; 263 end; 264 265 if definition.flags.new_def then if section = "text" 266 then if definition.flags.entrypoint = "1"b 267 then dd.entrypoint = dd.offset; /* have standard entrypoint in text */ 268 269 if definition.flags.new_def then acc_ptr = addrel(defbase, string_ptr); /* new definition format */ 270 else acc_ptr = addrel(dp, 2); /* pointer to symbol */ 271 272 if ret_acc then ret_acc_ptr = acc_ptr; 273 else do; 274 lng = fixed(acc.lng, 9); /* length of ACC string */ 275 if fullsw then symbol = substr(acc_string, 2, lng); 276 else ssymbol = substr(acc_string, 2, lng); /* get string, convert to fixed format */ 277 end; 278 279 if fullsw then do; 280 symbol_lng = lng; /* fill in actual symbol length */ 281 n_args = 0; /* initialize */ 282 descr_ptr = null; 283 if definition.flags.new_def then do; /* there is more info */ 284 addr(dd.flags)->based_bit = substr(addr(definition.flags)->based_bit,1,15); 285 if definition.flags.arg_count then do; 286 n_args = fixed(nargs,18); 287 descr_ptr = addr(definition.descriptor(1)); 288 end; 289 end; 290 else addr(dd.flags)->based_bit = "0"b; 291 end; 292 293 if definition.flags.new_def = "0"b then return; /* that's all for old def format */ 294 295 last_def = addrel(defbase, backward); /* pointer to previous def on list */ 296 block_ptr = addrel(defbase, defblock_ptr); /* pointer to related block */ 297 298 299 return; 300 301 init: entry(segment_pointer, segment_bitcount); 302 303 declare segment_pointer pointer, segment_bitcount fixed bin(24); 304 305 segbase = segment_pointer; 306 bitcount = segment_bitcount; 307 initialize = 1; 308 309 return; 310 311 312 decode_cref: entry(definition_ptr, structure_ptr, code, link_ptr); 313 314 declare link_ptr pointer; 315 316 ret_acc = "1"b; /* Set flag saying return pointer to ACC string */ 317 fullsw = "0"b; /* want smaller amount of information */ 318 argp = structure_ptr; /* Copy args */ 319 dp = definition_ptr; 320 linkp = link_ptr; 321 if linkp ^= null 322 then do; 323 static_defbase = dp; 324 static_linkbase = linkp; 325 end; 326 327 go to nonreentrant_join; 328 329 330 full: entry(definition_ptr, structure_ptr, oi_ptr, code); 331 332 fullsw = "1"b; 333 334 /* initialize oip each time; object info is passed each time to avoid 335* using internal static, thus enabling this procedure to be called 336* concurrently for 2 different sets of definitions */ 337 338 oip = oi_ptr; 339 argp = structure_ptr; 340 dp = definition_ptr; /* must initialize at this entry */ 341 if oi.version_number = 2 then do; /* use new structure */ 342 linkbase = oi.linkp; 343 defbase = oi.defp; 344 if oi.format.standard then do; 345 if dp = defbase /* first def is dummy */ 346 then dp = addrel(defbase,forward); /* skip over it */ 347 end; 348 else if ^oi.format.old_format then go to no_definition; /* unrecognizable format */ 349 end; 350 else do; /* use old structure */ 351 linkbase = old_oi.linkp; 352 defbase = old_oi.defp; 353 if old_oi.format.standard then do; 354 if dp = defbase /* first def is dummy */ 355 then dp = addrel(defbase,forward); /* skip over it */ 356 end; 357 else if ^old_oi.format.old_format then go to no_definition; /* unrecognizable format */ 358 end; 359 360 go to loop; /* have done all necessary initialization */ 361 362 end decode_definition_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/04/82 1624.8 decode_definition_.pl1 >dumps>old>recomp>decode_definition_.pl1 140 1 08/05/77 1022.5 object_info.incl.pl1 >ldd>include>object_info.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. acc based structure level 1 dcl 127 acc_ptr 000112 automatic pointer dcl 40 set ref 269* 270* 272 274 275 276 acc_string based char(33) dcl 131 ref 275 276 acc_structure based structure level 1 dcl 81 addr builtin function dcl 48 ref 196 284 284 287 290 addrel builtin function dcl 48 ref 219 241 254 269 270 295 296 345 354 arg_count 1(22) based bit(1) level 3 packed unaligned dcl 90 set ref 285 argp 000106 automatic pointer dcl 40 set ref 197* 241 242 242 244 244 247 249 249 252 252 254 255 256 261 265 265 265 272 275 276 280 281 282 284 286 287 290 295 296 318* 339* backward 0(18) based bit(18) level 2 packed unaligned dcl 90 ref 295 based_bit based bit(36) unaligned dcl 42 set ref 284* 284 290* baseno builtin function dcl 48 ref 201 201 bitcount 000017 internal static fixed bin(24,0) initial dcl 32 set ref 202* 209* 214* 306* block_ptr 4 based pointer level 2 dcl 61 set ref 242* 296* class 1(33) based bit(3) level 2 packed unaligned dcl 90 ref 246 class_3_def based structure level 1 dcl 121 code parameter bit(1) dcl 21 set ref 19 230* 236* 312 330 dd based structure level 1 dcl 61 defbase 000120 automatic pointer dcl 41 set ref 226* 241 269 295 296 343* 345 345 352* 354 354 defblock_ptr 2(18) based bit(18) level 2 packed unaligned dcl 121 ref 296 definition based structure level 1 dcl 90 definition_ptr parameter pointer dcl 21 ref 19 198 312 319 330 340 defp 4 based pointer level 2 in structure "oi" dcl 138 in procedure "decode_definition_" ref 217 343 defp 4 based pointer level 2 in structure "old_oi" dcl 144 in procedure "decode_definition_" ref 352 delimitor based fixed bin(17,0) dcl 133 ref 234 descr_ptr 114 based pointer level 2 dcl 61 set ref 282* 287* descriptor 3(18) based bit(18) array level 2 packed unaligned dcl 90 set ref 287 dp 000110 automatic pointer dcl 40 set ref 198* 201 206 208 217* 219* 219 233 234 241 246 249 259 261* 265 265 269 269 270 283 284 285 286 287 293 295 296 319* 323 340* 345 345* 345 354 354* 354 eax based structure array level 1 dcl 108 entrypoint 1(20) based bit(1) level 3 in structure "definition" packed unaligned dcl 90 in procedure "decode_definition_" set ref 265 entrypoint 10 based fixed bin(17,0) level 2 in structure "dd" dcl 61 in procedure "decode_definition_" set ref 244* 255* 256* 265* err_code 000102 automatic fixed bin(35,0) dcl 37 set ref 209* 210 214* 215 fixed builtin function dcl 48 ref 246 249 252 255 256 274 286 flags 112 based structure level 2 in structure "dd" dcl 61 in procedure "decode_definition_" set ref 284 290 flags 1(18) based structure level 2 in structure "definition" packed unaligned dcl 90 in procedure "decode_definition_" set ref 284 format 24 based structure level 2 in structure "oi" dcl 138 in procedure "decode_definition_" format 21 based structure level 2 in structure "old_oi" dcl 144 in procedure "decode_definition_" forward based bit(18) level 2 packed unaligned dcl 90 ref 219 241 345 354 fullsw 000104 automatic bit(1) dcl 39 set ref 195* 259 275 279 317* 332* hcs_$status_mins 000022 constant entry external dcl 26 ref 209 i 000100 automatic fixed bin(17,0) dcl 36 set ref 209* 246* 247 ignore 1(19) based bit(1) level 3 packed unaligned dcl 90 set ref 259 initialize 000016 internal static fixed bin(24,0) initial dcl 32 set ref 199 202* 223* 307* last_def 2 based pointer level 2 dcl 61 set ref 242* 295* link_begin 6 based bit(18) level 2 packed unaligned dcl 112 ref 252 link_ptr parameter pointer dcl 314 ref 312 320 linkbase 000122 automatic pointer dcl 41 set ref 228* 252 254 342* 351* linkheader based structure level 1 dcl 112 linkp 6 based pointer level 2 in structure "oi" dcl 138 in procedure "decode_definition_" ref 216 342 linkp 000114 automatic pointer dcl 40 in procedure "decode_definition_" set ref 254* 255 255 256 256 320* 321 324 linkp 6 based pointer level 2 in structure "old_oi" dcl 144 in procedure "decode_definition_" ref 351 lng 000101 automatic fixed bin(17,0) dcl 36 in procedure "decode_definition_" set ref 274* 275 276 280 lng based bit(9) level 2 in structure "acc" packed unaligned dcl 127 in procedure "decode_definition_" ref 274 location based bit(18) array level 2 packed unaligned dcl 108 ref 255 256 n_args 113 based fixed bin(17,0) level 2 dcl 61 set ref 281* 286* nargs 3 based bit(18) level 2 packed unaligned dcl 90 ref 286 new_def 1(18) based bit(1) level 3 packed unaligned dcl 90 set ref 265 269 283 293 next_def based pointer level 2 dcl 61 set ref 241* 261 null builtin function dcl 48 ref 204 233 242 282 321 object_info based structure level 1 dcl 1-6 object_info_$brief 000020 constant entry external dcl 25 ref 214 object_info_version_2 constant fixed bin(17,0) initial dcl 1-60 ref 212 offset 7 based fixed bin(17,0) level 2 dcl 61 set ref 244* 249* 252 254 265 oi based structure level 1 dcl 138 oi_area 000124 automatic fixed bin(35,0) array dcl 43 set ref 196 oi_ptr parameter pointer dcl 40 ref 330 338 oip 000116 automatic pointer dcl 40 set ref 196* 212 214* 216 217 219 221 338* 341 342 343 344 348 351 352 353 357 old_format 24 based bit(1) level 3 in structure "oi" packed unaligned dcl 138 in procedure "decode_definition_" ref 221 348 old_format 21 based bit(1) level 3 in structure "old_oi" packed unaligned dcl 144 in procedure "decode_definition_" ref 357 old_oi based structure level 1 dcl 144 op_code 0(18) based bit(6) array level 2 packed unaligned dcl 108 ref 255 256 rel builtin function dcl 48 ref 206 ret_acc 000103 automatic bit(1) initial dcl 38 set ref 38* 272 316* ret_acc_ptr 12 based pointer level 2 dcl 81 set ref 272* section 6 based char(4) level 2 dcl 61 set ref 247* 249 252 265 section_table 000000 constant char(4) initial array unaligned dcl 30 ref 247 segbase 000010 internal static pointer initial dcl 31 set ref 201 204* 208* 209* 214* 305* segment_bitcount parameter fixed bin(24,0) dcl 303 ref 301 306 segment_pointer parameter pointer dcl 303 ref 301 305 short_dd based structure level 1 dcl 52 ssymbol 11 based char(32) level 2 dcl 52 set ref 276* standard 21(04) based bit(1) level 3 in structure "old_oi" packed unaligned dcl 144 in procedure "decode_definition_" ref 353 standard 24(04) based bit(1) level 3 in structure "oi" packed unaligned dcl 138 in procedure "decode_definition_" ref 219 344 static_defbase 000012 internal static pointer initial dcl 31 set ref 217* 219 226 323* static_linkbase 000014 internal static pointer initial dcl 31 set ref 216* 228 324* string_ptr 2 based bit(18) level 2 packed unaligned dcl 90 ref 269 structure_ptr parameter pointer dcl 21 ref 19 197 312 318 330 339 substr builtin function dcl 48 ref 275 276 284 symbol 11 based char(256) level 2 dcl 61 set ref 275* symbol_lng 111 based fixed bin(17,0) level 2 dcl 61 set ref 280* value 1 based bit(18) level 2 packed unaligned dcl 90 ref 249 version_number based fixed bin(17,0) level 2 dcl 138 set ref 212* 341 NAME DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. bin builtin function dcl 48 NAMES DECLARED BY EXPLICIT CONTEXT. decode_cref 000450 constant entry external dcl 312 decode_definition_ 000026 constant entry external dcl 19 full 000513 constant entry external dcl 330 get_object_info 000111 constant label dcl 212 ref 201 init 000423 constant entry external dcl 301 loop 000167 constant label dcl 230 ref 262 360 no_definition 000176 constant label dcl 236 ref 210 215 221 233 348 357 nonreentrant_join 000162 constant label dcl 226 ref 327 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 704 730 615 714 Length 1130 615 24 164 67 10 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME decode_definition_ 150 external procedure is an external procedure. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 segbase decode_definition_ 000012 static_defbase decode_definition_ 000014 static_linkbase decode_definition_ 000016 initialize decode_definition_ 000017 bitcount decode_definition_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME decode_definition_ 000100 i decode_definition_ 000101 lng decode_definition_ 000102 err_code decode_definition_ 000103 ret_acc decode_definition_ 000104 fullsw decode_definition_ 000106 argp decode_definition_ 000110 dp decode_definition_ 000112 acc_ptr decode_definition_ 000114 linkp decode_definition_ 000116 oip decode_definition_ 000120 defbase decode_definition_ 000122 linkbase decode_definition_ 000124 oi_area decode_definition_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out return ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. hcs_$status_mins object_info_$brief NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 38 000017 19 000022 195 000037 196 000040 197 000042 198 000046 199 000051 201 000055 202 000064 204 000066 206 000070 208 000072 209 000073 210 000107 212 000111 214 000113 215 000130 216 000132 217 000136 219 000142 221 000156 223 000161 226 000162 228 000165 230 000167 233 000170 234 000174 236 000176 238 000200 241 000201 242 000206 244 000212 246 000214 247 000220 249 000222 252 000227 254 000237 255 000243 256 000254 259 000264 261 000273 262 000275 265 000276 269 000315 270 000325 272 000330 274 000334 275 000337 276 000345 279 000350 280 000352 281 000354 282 000355 283 000357 284 000361 285 000365 286 000370 287 000373 289 000377 290 000400 293 000401 295 000404 296 000411 299 000416 301 000417 305 000431 306 000436 307 000440 309 000442 312 000443 316 000461 317 000463 318 000464 319 000470 320 000473 321 000476 323 000502 324 000504 327 000505 330 000506 332 000524 338 000526 339 000532 340 000535 341 000540 342 000543 343 000545 344 000547 345 000552 347 000563 348 000564 349 000567 351 000570 352 000572 353 000574 354 000577 356 000610 357 000611 360 000614 ----------------------------------------------------------- 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