COMPILATION LISTING OF SEGMENT compare_defs_ Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/16/82 1318.7 mst Tue 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 compare_defs_: proc(optr,a_diff,a_brief,segptr); 12 13 dcl optr pointer; 14 dcl a_diff bit(1) unaligned; 15 dcl a_brief bit(1) unaligned; 16 dcl segptr pointer; 17 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 */ 18 19 20 dcl 1 oi(2) based(optr) aligned like object_info; 21 22 dcl 1 seg based(segptr), 23 2 p(4) pointer, /* segment pointers */ 24 2 sname(2) char(200) aligned; /* segment names */ 25 26 27 dcl first bit(1) aligned init("1"b); 28 dcl differ bit(1) aligned init("0"b); 29 dcl brief bit(1) aligned; 30 31 dcl 1 def_header based aligned, 32 2 def_list bit(18) unaligned, 33 2 unused bit(54) unaligned; 34 35 /* Definition block returned by decode_definition_$full */ 36 37 dcl 1 def(2) aligned, 38 2 next_def pointer, 39 2 last_def pointer, 40 2 block_ptr pointer, 41 2 section char(4) aligned, 42 2 offset fixed bin, 43 2 entrypoint fixed bin, 44 2 symbol char(256) aligned, 45 2 symbol_lng fixed bin, 46 2 flags, 47 3 new_format bit(1) unal, 48 3 ignore bit(1) unal, 49 3 entrypoint bit(1) unal, 50 3 retain bit(1) unal, 51 3 descr_sw bit(1) unal, 52 3 unused bit(31) unal, 53 2 n_args fixed bin, 54 2 descr_ptr pointer; 55 56 dcl arg_desc bit(36) aligned based; 57 dcl dptr(n_args(1)) bit(18) unaligned based; 58 59 60 dcl def_ptr(2) pointer; /* points to definition block to be examined */ 61 dcl oip(2) pointer init(addr(oi(1)),addr(oi(2))); 62 dcl stptr(2) pointer; /* points to receiving structure for defs */ 63 dcl tp(2) pointer init(oi.textp(1),oi.textp(2)); /* text pointers */ 64 65 dcl are_defs bit(1) aligned init ("1"b); 66 dcl end_thread(2) bit(1) aligned; 67 dcl (i,j,lng) fixed bin (17); 68 69 /* function definitions */ 70 71 dcl decode_definition_$full entry(ptr,ptr,ptr) returns(bit(1) aligned); 72 dcl ioa_ entry options(variable); 73 74 dcl (addr,addrel,fixed,string,substr) builtin; 75 76 /* Initialize flag */ 77 78 stptr(1) = addr(def(1)); 79 stptr(2) = addr(def(2)); 80 /* points to receiving structure for defs */ 81 brief = a_brief; 82 83 /* Point to first definitions */ 84 85 /* (decode_definition_ automatically points to first definition if given the header */ 86 87 88 def_ptr(1) = oi.defp(1); 89 def_ptr(2) = oi.defp(2); 90 91 /* LOOP FOR DECODING DEFINITIONS */ 92 93 do while (are_defs); 94 do i = 1 to 2; 95 end_thread(i) = decode_definition_$full(def_ptr(i),stptr(i),oip(i)); 96 end; 97 are_defs = ^(end_thread(1)|end_thread(2)); 98 if are_defs then 99 100 /* Compare the 2 definitions */ 101 102 do; 103 if section(1) ^= section(2) then go to baddefs; 104 if def.offset(1) ^= def.offset(2) then go to baddefs; 105 if def.entrypoint(1) ^= def.entrypoint(2) then go to baddefs; 106 if symbol_lng(1) ^= symbol_lng(2) then go to baddefs; 107 lng = symbol_lng(1); 108 if substr(symbol(1),1,lng) ^= substr(symbol(2),1,lng) then go to baddefs; 109 if string(flags(1)) ^= string(flags(2)) then go to baddefs; 110 if descr_sw(1) then 111 do; 112 if n_args(1) ^= n_args(2) then go to baddefs; 113 do i = 1 to n_args(1) while 114 (addrel(tp(1),descr_ptr(1)->dptr(i))->arg_desc = 115 addrel(tp(2),descr_ptr(2)->dptr(i))->arg_desc); 116 end; 117 if i <= n_args(1) then go to baddefs; 118 end; 119 end; 120 121 comploop: def_ptr(1) = next_def(1); 122 def_ptr(2) = next_def(2); 123 end; 124 125 if ^(end_thread(1)&end_thread(2)) then 126 do; 127 differ = "1"b; 128 if end_thread(1) then 129 do; 130 i=2; 131 j=1; 132 end; 133 else 134 do; 135 i=1; 136 j=2; 137 end; 138 call ioa_("^/^a has more definitions than ^a.",sname(i),sname(j)); 139 end; 140 141 /* RETURN SECTION */ 142 143 a_diff = differ; 144 return; 145 146 /* BADDEFS */ 147 148 baddefs: differ = "1"b; 149 if ^brief then 150 do; 151 if first then 152 do; 153 call ioa_("^/**Definition discrepancies between the 2 segments have been found.^/"); 154 first = "0"b; 155 end; 156 do j = 1 to 2; 157 call ioa_ 158 ("^/^a:^/^-section = ^a^-offset = ^o^-entrypoint = ^o^/^-symbol = ^a^/^-symbol_lng = ^o 159 ^-new_format = ^o^-ignore = ^o^-ep = ^o^-retain = ^o^-descr_sw = ^o",sname(j),section(j),def.offset(j), 160 def.entrypoint(j),symbol(j),symbol_lng(j),fixed(new_format(j),1), 161 fixed(ignore(j),1),fixed(flags.entrypoint(j),1),fixed(retain(j),1),fixed(descr_sw(j),1)); 162 if descr_sw(j) then 163 do; 164 call ioa_("^-n_args = ^d^/^/^-argument descriptors:^/",n_args(j)); 165 do i = 1 to n_args(j); 166 call ioa_("^-^w",addrel(tp(j),descr_ptr(j)->dptr(i)) 167 ->arg_desc); 168 end; 169 end; 170 end; 171 call ioa_("^/"); 172 end; 173 go to comploop; 174 175 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/16/82 1317.1 compare_defs_.pl1 >dumps>old_dumps>recomp>compare_defs_.pl1 18 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. a_brief parameter bit(1) unaligned dcl 15 ref 11 81 a_diff parameter bit(1) unaligned dcl 14 set ref 11 143* addr builtin function dcl 74 ref 61 61 78 79 addrel builtin function dcl 74 ref 113 113 166 are_defs 000360 automatic bit(1) initial dcl 65 set ref 65* 93 97* 98 arg_desc based bit(36) dcl 56 set ref 113 113 166* brief 000102 automatic bit(1) dcl 29 set ref 81* 149 decode_definition_$full 000010 constant entry external dcl 71 ref 95 def 000104 automatic structure array level 1 dcl 37 set ref 78 79 def_ptr 000340 automatic pointer array dcl 60 set ref 88* 89* 95* 121* 122* defp 4 based pointer array level 2 dcl 20 set ref 88 89 descr_ptr 114 000104 automatic pointer array level 2 dcl 37 set ref 113 113 166 descr_sw 112(04) 000104 automatic bit(1) array level 3 packed unaligned dcl 37 set ref 110 157 157 162 differ 000101 automatic bit(1) initial dcl 28 set ref 28* 127* 143 148* dptr based bit(18) array unaligned dcl 57 ref 113 113 166 end_thread 000362 automatic bit(1) array dcl 66 set ref 95* 97 97 125 125 128 entrypoint 10 000104 automatic fixed bin(17,0) array level 2 in structure "def" dcl 37 in procedure "compare_defs_" set ref 105 105 157* entrypoint 112(02) 000104 automatic bit(1) array level 3 in structure "def" packed unaligned dcl 37 in procedure "compare_defs_" set ref 157 157 first 000100 automatic bit(1) initial dcl 27 set ref 27* 151 154* fixed builtin function dcl 74 ref 157 157 157 157 157 157 157 157 157 157 flags 112 000104 automatic structure array level 2 dcl 37 set ref 109 109 i 000364 automatic fixed bin(17,0) dcl 67 set ref 94* 95 95 95 95* 113* 113 113* 117 130* 135* 138 165* 166* ignore 112(01) 000104 automatic bit(1) array level 3 packed unaligned dcl 37 set ref 157 157 ioa_ 000012 constant entry external dcl 72 ref 138 153 157 164 166 171 j 000365 automatic fixed bin(17,0) dcl 67 set ref 131* 136* 138 156* 157 157 157 157 157 157 157 157 157 157 157 157 157 157 157 157 162 164 165 166 166* lng 000366 automatic fixed bin(17,0) dcl 67 set ref 107* 108 108 n_args 113 000104 automatic fixed bin(17,0) array level 2 dcl 37 set ref 112 112 113 117 164* 165 new_format 112 000104 automatic bit(1) array level 3 packed unaligned dcl 37 set ref 157 157 next_def 000104 automatic pointer array level 2 dcl 37 set ref 121 122 object_info based structure level 1 dcl 1-6 offset 7 000104 automatic fixed bin(17,0) array level 2 dcl 37 set ref 104 104 157* oi based structure array level 1 dcl 20 set ref 61 61 oip 000344 automatic pointer initial array dcl 61 set ref 61* 61* 95* optr parameter pointer dcl 13 ref 11 61 61 63 63 88 89 retain 112(03) 000104 automatic bit(1) array level 3 packed unaligned dcl 37 set ref 157 157 section 6 000104 automatic char(4) array level 2 dcl 37 set ref 103 103 157* seg based structure level 1 unaligned dcl 22 segptr parameter pointer dcl 16 ref 11 138 138 157 sname 10 based char(200) array level 2 dcl 22 set ref 138* 138* 157* stptr 000350 automatic pointer array dcl 62 set ref 78* 79* 95* string builtin function dcl 74 ref 109 109 substr builtin function dcl 74 ref 108 108 symbol 11 000104 automatic char(256) array level 2 dcl 37 set ref 108 108 157* symbol_lng 111 000104 automatic fixed bin(17,0) array level 2 dcl 37 set ref 106 106 107 157* textp 2 based pointer array level 2 dcl 20 set ref 63 63 tp 000354 automatic pointer initial array dcl 63 set ref 63* 63* 113 113 166 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. def_header based structure level 1 dcl 31 object_info_version_2 internal static fixed bin(17,0) initial dcl 1-60 NAMES DECLARED BY EXPLICIT CONTEXT. baddefs 000443 constant label dcl 148 ref 103 104 105 106 108 109 112 117 compare_defs_ 000141 constant entry external dcl 11 comploop 000351 constant label dcl 121 ref 173 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 770 1004 724 1000 Length 1172 724 14 152 44 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME compare_defs_ 390 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME compare_defs_ 000100 first compare_defs_ 000101 differ compare_defs_ 000102 brief compare_defs_ 000104 def compare_defs_ 000340 def_ptr compare_defs_ 000344 oip compare_defs_ 000350 stptr compare_defs_ 000354 tp compare_defs_ 000360 are_defs compare_defs_ 000362 end_thread compare_defs_ 000364 i compare_defs_ 000365 j compare_defs_ 000366 lng compare_defs_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. decode_definition_$full ioa_ NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000134 27 000146 28 000150 61 000151 63 000167 65 000202 78 000204 79 000206 81 000210 88 000215 89 000217 93 000221 94 000223 95 000230 96 000247 97 000251 98 000261 103 000262 104 000265 105 000270 106 000273 107 000276 108 000277 109 000303 110 000306 112 000311 113 000314 116 000344 117 000346 121 000351 122 000353 123 000355 125 000356 127 000365 128 000367 130 000371 131 000373 132 000375 135 000376 136 000400 138 000402 143 000435 144 000442 148 000443 149 000445 151 000447 153 000451 154 000465 156 000466 157 000473 162 000611 164 000615 165 000635 166 000645 168 000704 170 000706 171 000710 173 000723 ----------------------------------------------------------- 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