COMPILATION LISTING OF SEGMENT make_object_map_ Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/04/82 1645.6 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 make_object_map_: proc(object_ptr,textl,linkl,symboll,bitcnt,code); 12 13 14 15 /* procedure to make an object map and place it in the end of 16* the object segment 17* 18* the first four arguments are given to be a ptr to the segment 19* and the lengths of the three component parts (in words) 20* the assumption is that the text begins at loc 0 21* the link at the first 0mod(2) loc after the end of the text 22* and the symbol at the first 0mod(2) loc after then end of the link 23* 24* the map immediately follows 25* 26* the bitcnt is returned as is the code which is equal to 0 if sucessful 27* and equal to 1 if there is no room for the map */ 28 29 dcl object_ptr ptr, 30 (textl,linkl,symboll,code) fixed bin(17), 31 bitcnt fixed bin(24); 32 33 dcl (i,linkrel,symbolrel,maprel) fixed bin(17); 34 dcl p ptr; 35 36 dcl max_length fixed bin (17), 37 hcs_$get_max_length_seg entry (ptr, fixed bin (17), fixed bin (17)); 38 39 dcl 1 object_glop based(p) aligned, 40 2 idwords(0:3) bit(36) aligned, 41 2 textrel fixed bin(35), 42 2 textbc fixed bin(35), 43 2 linkrel fixed bin(35), 44 2 linkbc fixed bin(35), 45 2 symbolrel fixed bin(35), 46 2 symbolbc fixed bin(35), 47 2 maprel fixed bin(35); 48 49 dcl (segp,map_ptr) ptr; 50 51 dcl map_words fixed bin(17); 52 53 dcl map_ptr_offset fixed bin(17), 54 fb18 fixed bin(18) based; 55 /* */ 56 57 58 linkrel = divide(textl+1,2,17,0)*2; 59 60 symbolrel = divide(linkrel+linkl+1,2,17,0)*2; 61 62 maprel = symbolrel + symboll; 63 64 call hcs_$get_max_length_seg (object_ptr, max_length, code); 65 if code ^= 0 then return; 66 67 if (maprel +11) > max_length then do; 68 code = 1; /* no room for map */ 69 return; 70 end; 71 72 73 p = ptr(object_ptr,maprel); /* make ptr to map */ 74 75 do i = 0 to 3; 76 p->object_glop.idwords(i) = "101010101010101010101010101010101010"b; 77 end; 78 79 p->object_glop.textrel = 0; 80 p->object_glop.textbc = textl*36; 81 p->object_glop.linkrel = linkrel; 82 p->object_glop.linkbc = linkl*36; 83 p->object_glop.symbolrel = symbolrel; 84 p->object_glop.symbolbc = symboll*36; 85 p->object_glop.maprel = maprel; 86 87 bitcnt = multiply(maprel+11,36,24,0); 88 89 code = 0; 90 return; 91 /* */ 92 93 /* make_object_map_$tl is a special entry for use by the mst generator. The assumptions are that the last 94* word of the segment is a pointer to the beginning of the object map, and that the current 95* structure of the map causes the first 9 words of the map to be equivalent to a 96* map which would be created for a segment consisting of a text and linkage section only 97**/ 98 99 tl: entry (bitcnt,segp,map_ptr,map_words,code); 100 101 code = 0; /* zero out error code */ 102 103 map_ptr_offset = divide(bitcnt+35,36,17,0)-1; /* get map offset */ 104 map_ptr = addrel(segp,addrel(segp,map_ptr_offset)->fb18); /* create map pointer */ 105 map_words = 9; /* return map size */ 106 107 do i =0 to 3; /* check map format */ 108 if map_ptr->object_glop.idwords(i) ^= "101010101010101010101010101010101010"b then do; 109 code = 2; 110 return; 111 end; 112 end; 113 114 return; 115 116 end make_object_map_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/04/82 1614.7 make_object_map_.pl1 >dumps>old>recomp>make_object_map_.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. bitcnt parameter fixed bin(24,0) dcl 29 set ref 11 87* 99 103 code parameter fixed bin(17,0) dcl 29 set ref 11 64* 65 68* 89* 99 101* 109* fb18 based fixed bin(18,0) dcl 53 ref 104 hcs_$get_max_length_seg 000010 constant entry external dcl 36 ref 64 i 000100 automatic fixed bin(17,0) dcl 33 set ref 75* 76* 107* 108* idwords based bit(36) array level 2 dcl 39 set ref 76* 108 linkbc 7 based fixed bin(35,0) level 2 dcl 39 set ref 82* linkl parameter fixed bin(17,0) dcl 29 ref 11 60 82 linkrel 000101 automatic fixed bin(17,0) dcl 33 in procedure "make_object_map_" set ref 58* 60 81 linkrel 6 based fixed bin(35,0) level 2 in structure "object_glop" dcl 39 in procedure "make_object_map_" set ref 81* map_ptr parameter pointer dcl 49 set ref 99 104* 108 map_ptr_offset 000107 automatic fixed bin(17,0) dcl 53 set ref 103* 104 map_words parameter fixed bin(17,0) dcl 51 set ref 99 105* maprel 12 based fixed bin(35,0) level 2 in structure "object_glop" dcl 39 in procedure "make_object_map_" set ref 85* maprel 000103 automatic fixed bin(17,0) dcl 33 in procedure "make_object_map_" set ref 62* 67 73 85 87 max_length 000106 automatic fixed bin(17,0) dcl 36 set ref 64* 67 object_glop based structure level 1 dcl 39 object_ptr parameter pointer dcl 29 set ref 11 64* 73 p 000104 automatic pointer dcl 34 set ref 73* 76 79 80 81 82 83 84 85 segp parameter pointer dcl 49 ref 99 104 104 symbolbc 11 based fixed bin(35,0) level 2 dcl 39 set ref 84* symboll parameter fixed bin(17,0) dcl 29 ref 11 62 84 symbolrel 000102 automatic fixed bin(17,0) dcl 33 in procedure "make_object_map_" set ref 60* 62 83 symbolrel 10 based fixed bin(35,0) level 2 in structure "object_glop" dcl 39 in procedure "make_object_map_" set ref 83* textbc 5 based fixed bin(35,0) level 2 dcl 39 set ref 80* textl parameter fixed bin(17,0) dcl 29 ref 11 58 80 textrel 4 based fixed bin(35,0) level 2 dcl 39 set ref 79* NAMES DECLARED BY EXPLICIT CONTEXT. make_object_map_ 000012 constant entry external dcl 11 tl 000135 constant entry external dcl 99 NAMES DECLARED BY CONTEXT OR IMPLICATION. addrel builtin function ref 104 104 divide builtin function ref 58 60 103 multiply builtin function ref 87 ptr builtin function ref 73 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 254 266 207 264 Length 434 207 12 131 44 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME make_object_map_ 84 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME make_object_map_ 000100 i make_object_map_ 000101 linkrel make_object_map_ 000102 symbolrel make_object_map_ 000103 maprel make_object_map_ 000104 p make_object_map_ 000106 max_length make_object_map_ 000107 map_ptr_offset make_object_map_ 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_$get_max_length_seg NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000004 58 000024 60 000031 62 000036 64 000040 65 000052 67 000054 68 000060 69 000062 73 000063 75 000071 76 000075 77 000077 79 000101 80 000103 81 000107 82 000111 83 000114 84 000116 85 000121 87 000123 89 000126 90 000127 99 000130 101 000147 103 000150 104 000155 105 000166 107 000170 108 000174 109 000201 110 000203 112 000204 114 000206 ----------------------------------------------------------- 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