COMPILATION LISTING OF SEGMENT print_gen_info_ Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/12/82 1251.5 mst Fri 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 print_gen_info_: proc (p, bc, stream, code); 12 13 dcl p ptr, 14 bc fixed bin, 15 stream char (*), 16 code fixed bin; 17 18 dcl 1 oi like object_info aligned; 19 20 dcl 1 info aligned, 21 2 pad bit (36), 22 2 dtm bit (36); 23 24 dcl (len, i) fixed bin, 25 dirname char (168) aligned, 26 ename char (32) aligned, 27 time char (16), 28 component_only bit (1) aligned init ("0"b), 29 tran_id char (12) aligned, 30 author char (24) aligned, 31 based_name char (len) based (sp), 32 (symb_ptr, sp, sblkp, bmp) ptr, 33 (error_table_$oldobj, error_table_$not_bound, error_table_$bad_segment) fixed bin ext, 34 (addrel, fixed, null) builtin; 35 36 dcl 1 spec based aligned, /* special structure for looking at old symbol sections */ 37 2 pad bit (36) aligned, 38 2 pad_again bit (9) unal, 39 2 zeros bit (9) unal; 40 41 42 dcl (ioa_$ioa_stream, get_bound_seg_info_, hcs_$fs_get_path_name, hcs_$get_bc_author, hcs_$status_) entry options (variable), 43 date_time_$fstime entry (bit (36) aligned, char (*)), 44 date_time_ entry (fixed bin (71), char (*)); 45 46 join: 47 code = 0; 48 49 call hcs_$fs_get_path_name (p, dirname, i, ename, code); /* get name of segment */ 50 if code ^= 0 then return; 51 52 oi.version_number = object_info_version_2; 53 call get_bound_seg_info_ (p, bc, addr (oi), bmp, symb_ptr, code); 54 if code ^= 0 then if (code = error_table_$not_bound) | (code = error_table_$oldobj) then code = 0; 55 else if code = error_table_$bad_segment then do; /* non-standard object segment */ 56 call hcs_$get_bc_author (dirname, ename, author, code); /* get author of seg */ 57 if code ^= 0 then return; 58 call hcs_$status_ (dirname, ename, 1, addr (info), null, code); /* get DTM */ 59 if code ^= 0 then return; 60 call date_time_$fstime (info.dtm, time); /* convert */ 61 call ioa_$ioa_stream (stream, "^32a ^16a ^24aNON-OBJECT ^44a^/", ename, time, author, dirname); 62 return; 63 end; 64 else return; 65 66 call date_time_ (oi.compile_time, time); /* get time of creation */ 67 if oi.userid = "" then call hcs_$get_bc_author (dirname, ename, oi.userid, code); 68 69 if ^component_only then /* If we want the entire segment ... */ 70 call ioa_$ioa_stream (stream, "^32a ^16a ^24a^12a^44a", ename, time, oi.userid, oi.compiler, dirname); 71 72 /* Now check to aee if the segment is a bound segment */ 73 74 if bmp ^= null then do; /* if this is a bound seg with a bindmap ... */ 75 do i = 1 to bmp -> bindmap.n_components; /* loop through all of them */ 76 sblkp = addrel (oi.symbp, bmp -> bindmap.component (i).symb_start); /* get pointer to symbol section */ 77 len = fixed (bmp -> bindmap.component (i).name.name_lng, 18); 78 ename = addrel (symb_ptr, bmp -> bindmap.component (i).name.name_ptr) -> based_name; 79 if component_only then if ename ^= comp_name then goto next_component; 80 if sblkp -> spec.zeros then do; /* new format symbol section */ 81 call date_time_ (sblkp -> sb.obj_creation_time, time); /* get time of compilation/assembly */ 82 len = fixed (sblkp -> sb.uid_length, 18); 83 author = addrel (sblkp, sblkp -> sb.uid_offset) -> based_name; 84 tran_id = sblkp -> sb.generator; /* get name of compiler */ 85 end; 86 else do; /* old style symbol section for this component */ 87 call date_time_ (sblkp -> symbol_header.times.translation, time); 88 author = ""; 89 tran_id = bmp -> bindmap.component (i).comp_name; 90 end; 91 call ioa_$ioa_stream (stream, " ^32a^16a ^24a^12a", ename, time, author, tran_id); 92 if component_only then return; 93 next_component: 94 end; 95 end; 96 if component_only then do; 97 code = error_table_$not_bound; 98 return; 99 end; 100 101 if ^component_only then 102 call ioa_$ioa_stream (stream, " "); 103 return; 104 105 component: entry (p, bc, stream, code, comp_name); 106 107 dcl comp_name char (*); 108 109 component_only = "1"b; 110 goto join; 111 /* */ 1 1 /* BEGIN INCLUDE SEGMENT ... symbol_block.incl.pl1 1 2*coded February 8, 1972 by Michael J. Spier */ 1 3 1 4 /* last modified may 3, 1972 by M. Weaver */ 1 5 1 6 declare 1 sb aligned based(sblkp), /* structure describing a standard symbol block */ 1 7 2 decl_vers fixed bin, /* version number of current structure format */ 1 8 2 identifier char(8) aligned, /* symbolic code to define purpose of this symb block */ 1 9 2 gen_version_number fixed bin, /* positive integer designating version of object generator */ 1 10 2 gen_creation_time fixed bin(71), /* clock reading of date/time generator was created */ 1 11 2 obj_creation_time fixed bin(71), /* clock reading of date/time object was generated */ 1 12 2 generator char(8) aligned, /* name of processor which generated segment */ 1 13 2 gen_name_offset bit(18) unaligned, /* offset of generator name in words rel to base of symbol block */ 1 14 2 gen_name_length bit(18) unaligned, /* length of printable generator version name in characters */ 1 15 2 uid_offset bit(18) unaligned, /* offset of creator id in words rel to base of symbol block */ 1 16 2 uid_length bit(18) unaligned, /* length of standard Multics id of object creator in characters */ 1 17 2 comment_offset bit(18) unaligned, /* offset of comment in words relative to base of symbol block */ 1 18 2 comment_length bit(18) unaligned, /* length of printable generator comment in characters */ 1 19 2 tbound bit(18) unaligned, /* specifies mod of text section base boundary */ 1 20 2 stat_bound bit(18) unaligned, /* specifies mod of internal static base boundary */ 1 21 2 source_map bit(18) unaligned, /* offset relative to base of symbol block of source map structure */ 1 22 2 area_ptr bit(18) unaligned, /* offset of block info in words relative to base of symbol block */ 1 23 2 symb_base bit(18) unaligned, /* back pointer (rel to base of symb block) to base of symb section */ 1 24 2 block_size bit(18) unaligned, /* size in words of entire symbol block */ 1 25 2 next_block bit(18) unaligned, /* if ^= "0"b, is thread (rel to base of symb section) to next symb block */ 1 26 2 rel_text bit(18) unaligned, /* offset rel to base of symbol block of text sect relocation info */ 1 27 2 rel_def bit(18) unaligned, /* offset rel to base of symb block of def section relocation info */ 1 28 2 rel_link bit(18) unaligned, /* offset rel to base of symb block of link sect relocation info */ 1 29 2 rel_symb bit(18) unaligned, /* offset rel to base of symb block of symb sect relocation info */ 1 30 2 default_truncate bit(18) unaligned, /* offset RTBOSB for binder to automatically trunc. symb sect. */ 1 31 2 optional_truncate bit(18) unaligned; /* offset RTBOSB for binder to optionally truncate symb section */ 1 32 1 33 /* END INCLUDE SEGMENT ... symbol_block.incl.pl1 */ 112 2 1 dcl 1 symbol_header aligned based, 2 2 2 translator, /* dope for translator name */ 2 3 3 offset fixed bin(35), 2 4 3 code unal bit(9), 2 5 3 size unal bit(27), 2 6 2 version, /* dope for version name */ 2 7 3 offset fixed bin(35), 2 8 3 code unal bit(9), 2 9 3 size unal bit(27), 2 10 2 times, 2 11 3 creation fixed bin(71), 2 12 3 translation fixed bin(71), 2 13 2 root unal bit(18), 2 14 2 extension unal bit(18), 2 15 2 map unal bit(18), 2 16 2 n_files unal bit(18), 2 17 2 next_header unal bit(18), 2 18 2 bind_indicator unal bit(18), 2 19 2 text_size unal bit(18), 2 20 2 link_size unal bit(18), 2 21 2 program, /* dope for program name */ 2 22 3 offset fixed bin(35), 2 23 3 code unal bit(9), 2 24 3 size unal bit(27); 113 3 1 /* BEGIN INCLUDE SEGMENT ... bind_map.incl.pl1 Michael J. Spier, 4/29/71 */ 3 2 /* last modified April, 1972 by M. Weaver */ 3 3 3 4 declare 1 bindmap aligned based(bmp), 3 5 3 6 2 dcl_version fixed bin, /* version number of this structure = 1 */ 3 7 2 n_components fixed bin, /* number of entries in this array */ 3 8 2 component(0 refer(bindmap.n_components)) aligned, 3 9 3 name, /* objectname of component object */ 3 10 4 name_ptr bit(18) unaligned, /* pointer to name string */ 3 11 4 name_lng bit(18) unaligned, /* length of name string */ 3 12 3 comp_name char(8) aligned, /* name of component's compiler */ 3 13 3 text_start bit(18) unaligned, /* text section relocation counter */ 3 14 3 text_lng bit(18) unaligned, /* length of text section */ 3 15 3 stat_start bit(18) unaligned, /* internal static relocation counter */ 3 16 3 stat_lng bit(18) unaligned, /* length of internal static */ 3 17 3 symb_start bit(18) unaligned, /* symbol section relocation counter */ 3 18 3 symb_lng bit(18) unaligned, /* length of symbol section */ 3 19 3 defblock_ptr bit(18) unaligned, /* pointer to components definition block */ 3 20 3 n_blocks bit(18) unaligned, /* number of symbol blocks the component has */ 3 21 2 bf_name aligned, /* name of bindfile */ 3 22 3 bf_name_ptr bit(18) unaligned, /* pointer to name string */ 3 23 3 bf_name_lng bit(18) unaligned, /* length of name string */ 3 24 2 bf_date_up char(24), /* date updated in archive */ 3 25 2 bf_date_mod char(24); /* date last modified */ 3 26 3 27 /* END INCLUDE SEGMENT ... bind_map.incl.pl1 */ 114 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 */ 115 116 117 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/12/82 1113.9 print_gen_info_.pl1 >spec>on>11/12/82>print_gen_info_.pl1 112 1 05/06/74 1752.6 symbol_block.incl.pl1 >ldd>include>symbol_block.incl.pl1 113 2 05/06/74 1752.6 symbol_header.incl.pl1 >ldd>include>symbol_header.incl.pl1 114 3 09/18/74 1700.9 bind_map.incl.pl1 >ldd>include>bind_map.incl.pl1 115 4 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. addrel builtin function dcl 24 ref 76 78 83 author 000264 automatic char(24) dcl 24 set ref 56* 61* 83* 88* 91* based_name based char unaligned dcl 24 ref 78 83 bc parameter fixed bin(17,0) dcl 13 set ref 11 53* 105 bindmap based structure level 1 dcl 3-4 bmp 000276 automatic pointer dcl 24 set ref 53* 74 75 76 77 78 89 code parameter fixed bin(17,0) dcl 13 set ref 11 46* 49* 50 53* 54 54 54 54* 55 56* 57 58* 59 67* 97* 105 comp_name parameter char unaligned dcl 107 in procedure "print_gen_info_" ref 79 105 comp_name 3 based char(8) array level 3 in structure "bindmap" dcl 3-4 in procedure "print_gen_info_" ref 89 compile_time 32 000100 automatic fixed bin(71,0) level 2 dcl 18 set ref 66* compiler 30 000100 automatic char(8) level 2 dcl 18 set ref 69* component 2 based structure array level 2 dcl 3-4 component_only 000260 automatic bit(1) initial dcl 24 set ref 24* 69 79 92 96 101 109* date_time_ 000032 constant entry external dcl 42 ref 66 81 87 date_time_$fstime 000030 constant entry external dcl 42 ref 60 dirname 000172 automatic char(168) dcl 24 set ref 49* 56* 58* 61* 67* 69* dtm 1 000166 automatic bit(36) level 2 dcl 20 set ref 60* ename 000244 automatic char(32) dcl 24 set ref 49* 56* 58* 61* 67* 69* 78* 79 91* error_table_$bad_segment 000014 external static fixed bin(17,0) dcl 24 ref 55 error_table_$not_bound 000012 external static fixed bin(17,0) dcl 24 ref 54 97 error_table_$oldobj 000010 external static fixed bin(17,0) dcl 24 ref 54 fixed builtin function dcl 24 ref 77 82 generator 10 based char(8) level 2 dcl 1-6 ref 84 get_bound_seg_info_ 000020 constant entry external dcl 42 ref 53 hcs_$fs_get_path_name 000022 constant entry external dcl 42 ref 49 hcs_$get_bc_author 000024 constant entry external dcl 42 ref 56 67 hcs_$status_ 000026 constant entry external dcl 42 ref 58 i 000171 automatic fixed bin(17,0) dcl 24 set ref 49* 75* 76 77 78 89* info 000166 automatic structure level 1 dcl 20 set ref 58 58 ioa_$ioa_stream 000016 constant entry external dcl 42 ref 61 69 91 101 len 000170 automatic fixed bin(17,0) dcl 24 set ref 77* 78 82* 83 n_components 1 based fixed bin(17,0) level 2 dcl 3-4 ref 75 name 2 based structure array level 3 dcl 3-4 name_lng 2(18) based bit(18) array level 4 packed unaligned dcl 3-4 ref 77 name_ptr 2 based bit(18) array level 4 packed unaligned dcl 3-4 ref 78 null builtin function dcl 24 ref 58 58 74 obj_creation_time 6 based fixed bin(71,0) level 2 dcl 1-6 set ref 81* object_info based structure level 1 dcl 4-6 object_info_version_2 constant fixed bin(17,0) initial dcl 4-60 ref 52 oi 000100 automatic structure level 1 dcl 18 set ref 53 53 p parameter pointer dcl 13 set ref 11 49* 53* 105 sb based structure level 1 dcl 1-6 sblkp 000274 automatic pointer dcl 24 set ref 76* 80 81 82 83 83 84 87 spec based structure level 1 dcl 36 stream parameter char unaligned dcl 13 set ref 11 61* 69* 91* 101* 105 symb_ptr 000272 automatic pointer dcl 24 set ref 53* 78 symb_start 7 based bit(18) array level 3 packed unaligned dcl 3-4 ref 76 symbol_header based structure level 1 dcl 2-1 symbp 12 000100 automatic pointer level 2 dcl 18 set ref 76 time 000254 automatic char(16) unaligned dcl 24 set ref 60* 61* 66* 69* 81* 87* 91* times 4 based structure level 2 dcl 2-1 tran_id 000261 automatic char(12) dcl 24 set ref 84* 89* 91* translation 6 based fixed bin(71,0) level 3 dcl 2-1 set ref 87* uid_length 13(18) based bit(18) level 2 packed unaligned dcl 1-6 ref 82 uid_offset 13 based bit(18) level 2 packed unaligned dcl 1-6 ref 83 userid 34 000100 automatic char(32) level 2 dcl 18 set ref 67 67* 69* version_number 000100 automatic fixed bin(17,0) level 2 dcl 18 set ref 52* zeros 1(09) based bit(9) level 2 packed unaligned dcl 36 ref 80 NAME DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. sp automatic pointer dcl 24 NAMES DECLARED BY EXPLICIT CONTEXT. component 000742 constant entry external dcl 105 join 000073 constant label dcl 46 ref 110 next_component 000701 constant label dcl 93 ref 79 print_gen_info_ 000057 constant entry external dcl 11 NAME DECLARED BY CONTEXT OR IMPLICATION. addr builtin function ref 53 53 58 58 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1130 1164 766 1140 Length 1436 766 34 235 141 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME print_gen_info_ 279 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME print_gen_info_ 000100 oi print_gen_info_ 000166 info print_gen_info_ 000170 len print_gen_info_ 000171 i print_gen_info_ 000172 dirname print_gen_info_ 000244 ename print_gen_info_ 000254 time print_gen_info_ 000260 component_only print_gen_info_ 000261 tran_id print_gen_info_ 000264 author print_gen_info_ 000272 symb_ptr print_gen_info_ 000274 sblkp print_gen_info_ 000276 bmp print_gen_info_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc return ext_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. date_time_ date_time_$fstime get_bound_seg_info_ hcs_$fs_get_path_name hcs_$get_bc_author hcs_$status_ ioa_$ioa_stream THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_segment error_table_$not_bound error_table_$oldobj LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 24 000047 11 000052 46 000073 49 000075 50 000125 52 000130 53 000132 54 000165 55 000177 56 000201 57 000225 58 000230 59 000272 60 000275 61 000312 62 000354 64 000355 66 000356 67 000373 69 000424 74 000473 75 000477 76 000507 77 000516 78 000522 79 000532 80 000544 81 000547 82 000564 83 000570 84 000600 85 000603 87 000604 88 000621 89 000624 91 000632 92 000677 93 000701 96 000703 97 000705 98 000711 101 000712 103 000734 105 000735 109 000763 110 000765 ----------------------------------------------------------- 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