COMPILATION LISTING OF SEGMENT find_header Compiled by: Multics PL/I Compiler of June 9, 1975. Compiled on: 09/08/75 1644.2 mst Mon Options: optimize map 1 /* ****************************************************** 2 * * 3 * * 4 * Copyright (c) 1972 by Massachusetts Institute of * 5 * Technology and Honeywell Information Systems, Inc. * 6 * * 7 * * 8 ****************************************************** */ 9 10 /* Procedure to find symbol header of a specified program 11 12 Modified: 25 September 1972 by BLW for std obj segments 13 Modified: 11 June 1975 by JMB for version 2 object info 14 */ 15 16 find_header: proc(seg_pt,name,bc) returns(ptr); 17 18 dcl seg_pt ptr, /* points at text segment */ 19 name char(32) aligned, /* name of segment */ 20 bc fixed bin; /* bit count */ 21 22 dcl (p,q) ptr, 23 dir char(168), 24 ent char(32), 25 (n,code,size) fixed bin, 26 hcs_$make_ptr entry(ptr,char(*) aligned,char(*) aligned,ptr,fixed bin), 27 hcs_$status_mins entry(ptr,fixed bin,fixed bin,fixed bin), 28 object_info_$brief entry(ptr,fixed bin,ptr,fixed bin), 29 component_info_$name entry(ptr,char(32) aligned,ptr,fixed bin); 30 31 dcl (index,null,ptr,substr) builtin; 32 33 dcl 1 oi structure aligned like object_info; 34 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 pad bit(28) unaligned, 1 30 2 entry_bound fixed bin, /* entry bound if segment is a gate */ 1 31 2 textlinkp pointer, /* ptr to first link in text */ 1 32 1 33 /* LIMIT OF BRIEF STRUCTURE */ 1 34 1 35 2 compiler char(8) aligned, /* name of processor which generated segment */ 1 36 2 compile_time fixed bin(71), /* clock reading of date/time object was generated */ 1 37 2 userid char(32) aligned, /* standard Multics id of creator of object segment */ 1 38 2 cvers aligned, /* generator version name in printable char string form */ 1 39 3 offset bit(18) unaligned, /* offset of name in words relative to base of symbol section */ 1 40 3 length bit(18) unaligned, /* length of name in characters */ 1 41 2 comment aligned, /* printable comment concerning generator or generation of segment */ 1 42 3 offset bit(18) unaligned, /* offset of comment in words relative to base of symbol section */ 1 43 3 length bit(18) unaligned, /* length of comment in characters */ 1 44 2 source_map fixed bin, /* offset, relative to base of symbol section, of source map structure */ 1 45 1 46 /* LIMIT OF DISPLAY STRUCTURE */ 1 47 1 48 2 rel_text pointer, /* pointer to text section relocation info */ 1 49 2 rel_def pointer, /* pointer to definition section relocation info */ 1 50 2 rel_link pointer, /* pointer to linkage section relocation info */ 1 51 2 rel_static pointer, /* pointer to static section relocation info */ 1 52 2 rel_symbol pointer, /* pointer to symbol section relocation info */ 1 53 2 text_boundary fixed bin, /* specifies mod of text section base boundary */ 1 54 2 static_boundary fixed bin, /* specifies mod of internal static base boundary */ 1 55 /* currently not used by system */ 1 56 2 default_truncate fixed bin, /* offset rel to symbp for binder to automatically trunc. symb sect. */ 1 57 2 optional_truncate fixed bin; /* offset rel to symbp for binder to optionally trunc. symb sect. */ 1 58 1 59 declare object_info_version_2 fixed bin int static init(2); 1 60 1 61 /* END INCLUDE FILE ... object_info.incl.pl1 */ 35 2 1 /* BEGIN INCLUDE SEGMENT ... component_info.incl.pl1 M. Weaver 4/26/72 */ 2 2 2 3 declare 1 ci aligned, 2 4 2 dcl_version fixed bin, /* version number of this structure */ 2 5 2 name char(32) aligned, /* objectname of component segment */ 2 6 2 text_start pointer, /* ptr to component's section of text */ 2 7 2 stat_start pointer, /* pointer to component's section of internal static */ 2 8 2 symb_start pointer, /* pointer to component's first symbol block */ 2 9 2 defblock_ptr pointer, /* ptr to component's definition block */ 2 10 2 text_lng fixed bin, /* length of text section */ 2 11 2 stat_lng fixed bin, /* length of internal static */ 2 12 2 symb_lng fixed bin, /* length of symbol section */ 2 13 2 n_blocks fixed bin, /* number of symbol blocks in component's symbol section */ 2 14 2 standard bit(1) aligned, /* indicates whether component is in standard (new) format */ 2 15 2 compiler char(8) aligned, /* name of component's compiler */ 2 16 2 compile_time fixed bin(71), /* time component was compiled */ 2 17 2 userid char(32) aligned, /* id of creator of component */ 2 18 2 cvers aligned, /* version of component's compiler in printable form */ 2 19 3 offset bit(18) unaligned, /* offset in words relative to symb_start */ 2 20 3 length bit(18) unaligned, /* length of name in characters */ 2 21 2 comment aligned, /* component's comment */ 2 22 3 offset bit(18) unaligned, /* offset in words relative to symb_start */ 2 23 3 length bit(18) unaligned, /* length of comment in characters */ 2 24 2 source_map fixed bin; /* offset, rel to beg of symbol block, of component's source map */ 2 25 2 26 /* END INCLUDE SEGMENT ... component_info.incl.pl1 */ 36 37 38 if seg_pt ^= null then p = seg_pt; 39 else do; 40 n = index(name," "); 41 if n = 0 then n = 33; 42 call hcs_$make_ptr(null,substr(name,1,n-1),"symbol_table",p,code); 43 if code ^= 0 then goto no; 44 end; 45 46 if bc ^= 0 then n = bc; 47 else do; 48 call hcs_$status_mins(p,size,n,code); 49 if code ^= 0 then goto no; 50 end; 51 52 p = ptr(p,0); 53 54 oi.version_number = object_info_version_2; 55 call object_info_$brief(p,n,addr(oi),code); 56 57 if code ^= 0 then goto no; 58 59 /* if segment is not bound, there is only one symbol header and 60 that's the one we'll use */ 61 62 if ^ oi.bound then return(oi.symbp); 63 64 call component_info_$name(p,name,addr(ci),code); 65 66 if code ^= 0 then goto no; 67 68 return(ci.symb_start); 69 70 no: return(null); 71 72 end; INCLUDE FILES USED IN THIS COMPILATION. LINE NUMBER NAME PATHNAME 35 1 object_info.incl.pl1 >ldd>include>object_info.incl.pl1 36 2 component_info.incl.pl1 >ldd>include>component_info.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES NAMES DECLARED BY DECLARE STATEMENT. bc parameter fixed bin(17,0) dcl 18 ref 16 46 46 blng 23 000106 automatic fixed bin(17,0) level 2 dcl 33 bmapp 14 000106 automatic pointer level 2 dcl 33 bound 24(01) 000106 automatic bit(1) level 3 packed unaligned dcl 33 set ref 62 ci 000174 automatic structure level 1 dcl 2-3 set ref 64 64 code 000103 automatic fixed bin(17,0) dcl 22 set ref 42 43 48 49 55 57 64 66 comment 45 000174 automatic structure level 2 dcl 2-3 comment 45 000106 automatic structure level 2 dcl 33 compile_time 32 000106 automatic fixed bin(71,0) level 2 dcl 33 compile_time 32 000174 automatic fixed bin(71,0) level 2 dcl 2-3 compiler 30 000106 automatic char(8) level 2 dcl 33 compiler 27 000174 automatic char(8) level 2 dcl 2-3 component_info_$name 000020 constant entry external dcl 22 ref 64 cvers 44 000106 automatic structure level 2 dcl 33 cvers 44 000174 automatic structure level 2 dcl 2-3 dcl_version 000174 automatic fixed bin(17,0) level 2 dcl 2-3 default_truncate 64 000106 automatic fixed bin(17,0) level 2 dcl 33 defblock_ptr 20 000174 automatic pointer level 2 dcl 2-3 defp 4 000106 automatic pointer level 2 dcl 33 dlng 17 000106 automatic fixed bin(17,0) level 2 dcl 33 entry_bound 25 000106 automatic fixed bin(17,0) level 2 dcl 33 format 24 000106 automatic structure level 2 dcl 33 gate 24(05) 000106 automatic bit(1) level 3 packed unaligned dcl 33 hcs_$make_ptr 000012 constant entry external dcl 22 ref 42 hcs_$status_mins 000014 constant entry external dcl 22 ref 48 ilng 21 000106 automatic fixed bin(17,0) level 2 dcl 33 index builtin function internal dcl 31 ref 40 length 45(18) 000106 automatic bit(18) level 3 packed unaligned dcl 33 length 45(18) 000174 automatic bit(18) level 3 packed unaligned dcl 2-3 length 44(18) 000106 automatic bit(18) level 3 packed unaligned dcl 33 length 44(18) 000174 automatic bit(18) level 3 packed unaligned dcl 2-3 linkp 6 000106 automatic pointer level 2 dcl 33 links_in_text 24(07) 000106 automatic bit(1) level 3 packed unaligned dcl 33 llng 20 000106 automatic fixed bin(17,0) level 2 dcl 33 n 000102 automatic fixed bin(17,0) dcl 22 set ref 40 41 41 42 42 46 48 55 n_blocks 25 000174 automatic fixed bin(17,0) level 2 dcl 2-3 name parameter char(32) dcl 18 set ref 16 40 42 42 64 name 1 000174 automatic char(32) level 2 dcl 2-3 null builtin function internal dcl 31 ref 38 42 42 70 object_info_$brief 000016 constant entry external dcl 22 ref 55 object_info_version_2 constant fixed bin(17,0) initial dcl 1-59 ref 54 offset 45 000106 automatic bit(18) level 3 packed unaligned dcl 33 offset 45 000174 automatic bit(18) level 3 packed unaligned dcl 2-3 offset 44 000174 automatic bit(18) level 3 packed unaligned dcl 2-3 offset 44 000106 automatic bit(18) level 3 packed unaligned dcl 33 oi 000106 automatic structure level 1 dcl 33 set ref 55 55 old_format 24 000106 automatic bit(1) level 3 packed unaligned dcl 33 optional_truncate 65 000106 automatic fixed bin(17,0) level 2 dcl 33 p 000100 automatic pointer dcl 22 set ref 38 42 48 52 52 55 64 pad 24(08) 000106 automatic bit(28) level 3 packed unaligned dcl 33 procedure 24(03) 000106 automatic bit(1) level 3 packed unaligned dcl 33 ptr builtin function internal dcl 31 ref 52 rel_def 52 000106 automatic pointer level 2 dcl 33 rel_link 54 000106 automatic pointer level 2 dcl 33 rel_static 56 000106 automatic pointer level 2 dcl 33 rel_symbol 60 000106 automatic pointer level 2 dcl 33 rel_text 50 000106 automatic pointer level 2 dcl 33 relocatable 24(02) 000106 automatic bit(1) level 3 packed unaligned dcl 33 seg_pt parameter pointer dcl 18 ref 16 38 38 separate_static 24(06) 000106 automatic bit(1) level 3 packed unaligned dcl 33 size 000104 automatic fixed bin(17,0) dcl 22 set ref 48 slng 22 000106 automatic fixed bin(17,0) level 2 dcl 33 source_map 46 000106 automatic fixed bin(17,0) level 2 dcl 33 source_map 46 000174 automatic fixed bin(17,0) level 2 dcl 2-3 standard 26 000174 automatic bit(1) level 2 dcl 2-3 standard 24(04) 000106 automatic bit(1) level 3 packed unaligned dcl 33 stat_lng 23 000174 automatic fixed bin(17,0) level 2 dcl 2-3 stat_start 14 000174 automatic pointer level 2 dcl 2-3 static_boundary 63 000106 automatic fixed bin(17,0) level 2 dcl 33 statp 10 000106 automatic pointer level 2 dcl 33 substr builtin function internal dcl 31 ref 42 42 symb_lng 24 000174 automatic fixed bin(17,0) level 2 dcl 2-3 symb_start 16 000174 automatic pointer level 2 dcl 2-3 set ref 68 symbp 12 000106 automatic pointer level 2 dcl 33 set ref 62 text_boundary 62 000106 automatic fixed bin(17,0) level 2 dcl 33 text_lng 22 000174 automatic fixed bin(17,0) level 2 dcl 2-3 text_start 12 000174 automatic pointer level 2 dcl 2-3 textlinkp 26 000106 automatic pointer level 2 dcl 33 textp 2 000106 automatic pointer level 2 dcl 33 tlng 16 000106 automatic fixed bin(17,0) level 2 dcl 33 userid 34 000174 automatic char(32) level 2 dcl 2-3 userid 34 000106 automatic char(32) level 2 dcl 33 version_number 000106 automatic fixed bin(17,0) level 2 dcl 33 set ref 54 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. blng 23 based fixed bin(17,0) level 2 dcl 1-6 bmapp 14 based pointer level 2 dcl 1-6 bound 24(01) based bit(1) level 3 packed unaligned dcl 1-6 comment 45 based structure level 2 dcl 1-6 compile_time 32 based fixed bin(71,0) level 2 dcl 1-6 compiler 30 based char(8) level 2 dcl 1-6 cvers 44 based structure level 2 dcl 1-6 default_truncate 64 based fixed bin(17,0) level 2 dcl 1-6 defp 4 based pointer level 2 dcl 1-6 dir automatic char(168) unaligned dcl 22 dlng 17 based fixed bin(17,0) level 2 dcl 1-6 ent automatic char(32) unaligned dcl 22 entry_bound 25 based fixed bin(17,0) level 2 dcl 1-6 format 24 based structure level 2 dcl 1-6 gate 24(05) based bit(1) level 3 packed unaligned dcl 1-6 ilng 21 based fixed bin(17,0) level 2 dcl 1-6 length 44(18) based bit(18) level 3 packed unaligned dcl 1-6 length 45(18) based bit(18) level 3 packed unaligned dcl 1-6 linkp 6 based pointer level 2 dcl 1-6 links_in_text 24(07) based bit(1) level 3 packed unaligned dcl 1-6 llng 20 based fixed bin(17,0) level 2 dcl 1-6 object_info based structure level 1 dcl 1-6 offset 45 based bit(18) level 3 packed unaligned dcl 1-6 offset 44 based bit(18) level 3 packed unaligned dcl 1-6 old_format 24 based bit(1) level 3 packed unaligned dcl 1-6 optional_truncate 65 based fixed bin(17,0) level 2 dcl 1-6 pad 24(08) based bit(28) level 3 packed unaligned dcl 1-6 procedure 24(03) based bit(1) level 3 packed unaligned dcl 1-6 q automatic pointer dcl 22 rel_def 52 based pointer level 2 dcl 1-6 rel_link 54 based pointer level 2 dcl 1-6 rel_static 56 based pointer level 2 dcl 1-6 rel_symbol 60 based pointer level 2 dcl 1-6 rel_text 50 based pointer level 2 dcl 1-6 relocatable 24(02) based bit(1) level 3 packed unaligned dcl 1-6 separate_static 24(06) based bit(1) level 3 packed unaligned dcl 1-6 slng 22 based fixed bin(17,0) level 2 dcl 1-6 source_map 46 based fixed bin(17,0) level 2 dcl 1-6 standard 24(04) based bit(1) level 3 packed unaligned dcl 1-6 static_boundary 63 based fixed bin(17,0) level 2 dcl 1-6 statp 10 based pointer level 2 dcl 1-6 symbp 12 based pointer level 2 dcl 1-6 text_boundary 62 based fixed bin(17,0) level 2 dcl 1-6 textlinkp 26 based pointer level 2 dcl 1-6 textp 2 based pointer level 2 dcl 1-6 tlng 16 based fixed bin(17,0) level 2 dcl 1-6 userid 34 based char(32) level 2 dcl 1-6 version_number based fixed bin(17,0) level 2 dcl 1-6 NAMES DECLARED BY EXPLICIT CONTEXT. find_header 000014 constant entry external dcl 16 ref 16 no 000230 constant label dcl 70 ref 43 49 57 66 70 NAME DECLARED BY CONTEXT OR IMPLICATION. addr builtin function internal ref 55 55 64 64 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 324 346 234 334 Length 542 234 22 161 67 12 External procedure find_header uses 196 words of automatic storage THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs call_ext_out_desc call_ext_out return shorten_stack ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. component_info_$name hcs_$make_ptr 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 16 000013 38 000021 40 000032 41 000044 42 000047 43 000116 46 000121 48 000126 49 000143 52 000145 54 000150 55 000152 57 000171 62 000173 64 000202 66 000222 68 000224 70 000230 ----------------------------------------------------------- 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