COMPILATION LISTING OF SEGMENT perprocess_static_sw_on Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/15/82 1543.8 mst Mon 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 perprocess_static_sw_on: 12 proc; 13 14 /* This command sets the perprocess_static bit in an object map */ 15 /* coded 5/77 by Melanie Weaver */ 16 /* modified 10/79 by Melanie Weaver to make argument handling more standard */ 17 18 dcl (i, j, alng, lng, arg_count) 19 fixed bin; 20 dcl wordcount fixed bin (18); 21 dcl type fixed bin (2); 22 dcl code fixed bin (35); 23 dcl bitcnt fixed bin (24); 24 25 dcl (mapp, segptr, argptr, lastword, aclptr) 26 ptr; 27 28 dcl arg_found bit (1) aligned; 29 dcl new_value bit (1) aligned; 30 dcl delete_sw bit (1) aligned; 31 dcl saved_mode bit (36) aligned; 32 33 dcl arg char (alng) based (argptr); 34 dcl dirname char (168); 35 dcl ename char (32); 36 dcl me char (24); 37 38 dcl (addr, addrel, bin, divide, index, null) 39 builtin; 40 41 dcl 1 segment_acl (1) aligned, 42 2 access_name char (32), 43 2 mode bit (36), 44 2 pad bit (36), 45 2 status_code fixed bin (35); 46 47 dcl error_table_$badopt fixed bin (35) external; 48 49 dcl cu_$arg_count entry () returns (fixed bin); 50 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)); 51 dcl com_err_ entry options (variable); 52 dcl com_err_$suppress_name entry () options (variable); 53 dcl cv_ptr_ entry (char (*), fixed bin (35)) returns (ptr); 54 dcl get_group_id_ entry () returns (char (32) aligned); 55 dcl hcs_$status_mins entry (ptr, fixed bin (2), fixed bin (24), fixed bin (35)); 56 dcl hcs_$fs_get_path_name entry (ptr, char (*), fixed bin, char (*), fixed bin (35)); 57 dcl hcs_$list_acl entry (char (*), char (*), ptr, ptr, ptr, fixed bin, fixed bin (35)); 58 dcl hcs_$add_acl_entries entry (char (*), char (*), ptr, fixed bin, fixed bin (35)); 59 dcl hcs_$delete_acl_entries 60 entry (char (*), char (*), ptr, fixed bin, fixed bin (35)); 61 1 1 /* BEGIN INCLUDE FILE ... object_map.incl.pl1 */ 1 2 /* coded February 8, 1972 by Michael J. Spier */ 1 3 /* Last modified on 05/20/72 at 13:29:38 by R F Mabee. */ 1 4 /* Made to agree with Spier's document on 20 May 1972 by R F Mabee. */ 1 5 /* modified on 6 May 1972 by R F Mabee to add map_ptr at end of object map. */ 1 6 /* modified May, 1972 by M. Weaver */ 1 7 /* modified 5/75 by E. Wiatrowski and 6/75 by M. Weaver */ 1 8 /* modified 5/77 by M. Weaver to add perprocess_static bit */ 1 9 1 10 declare 1 object_map aligned based, /* Structure describing standard object map */ 1 11 1 12 2 decl_vers fixed bin, /* Version number of current structure format */ 1 13 2 identifier char (8) aligned, /* Must be the constant "obj_map" */ 1 14 2 text_offset bit (18) unaligned, /* Offset relative to base of object segment of base of text section */ 1 15 2 text_length bit (18) unaligned, /* Length in words of text section */ 1 16 2 definition_offset bit (18) unaligned, /* Offset relative to base of object seg of base of definition section */ 1 17 2 definition_length bit (18) unaligned, /* Length in words of definition section */ 1 18 2 linkage_offset bit (18) unaligned, /* Offset relative to base of object seg of base of linkage section */ 1 19 2 linkage_length bit (18) unaligned, /* Length in words of linkage section */ 1 20 2 static_offset bit (18) unaligned, /* Offset relative to base of obj seg of static section */ 1 21 2 static_length bit (18) unaligned, /* Length in words of static section */ 1 22 2 symbol_offset bit (18) unaligned, /* Offset relative to base of object seg of base of symbol section */ 1 23 2 symbol_length bit (18) unaligned, /* Length in words of symbol section */ 1 24 2 break_map_offset bit (18) unaligned, /* Offset relative to base of object seg of base of break map */ 1 25 2 break_map_length bit (18) unaligned, /* Length in words of break map */ 1 26 2 entry_bound bit (18) unaligned, /* Offset in text of last gate entry */ 1 27 2 text_link_offset bit (18) unaligned, /* Offset of first text-embedded link */ 1 28 2 format aligned, /* Word containing bit flags about object type */ 1 29 3 bound bit (1) unaligned, /* On if segment is bound */ 1 30 3 relocatable bit (1) unaligned, /* On if segment has relocation info in its first symbol block */ 1 31 3 procedure bit (1) unaligned, /* On if segment is an executable object program */ 1 32 3 standard bit (1) unaligned, /* On if segment is in standard format (more than just standard map) */ 1 33 3 separate_static bit(1) unaligned, /* On if static is a separate section from linkage */ 1 34 3 links_in_text bit (1) unaligned, /* On if there are text-embedded links */ 1 35 3 perprocess_static bit (1) unaligned, /* On if static is not to be per run unit */ 1 36 3 unused bit (29) unaligned; /* Reserved */ 1 37 1 38 declare map_ptr bit(18) aligned based; /* Last word of the segment. It points to the base of the object map. */ 1 39 1 40 declare object_map_version_2 fixed bin static init(2); 1 41 1 42 /* END INCLUDE FILE ... object_map.incl.pl1 */ 62 63 64 65 new_value = "1"b; 66 me = "perprocess_static_sw_on"; 67 68 join: 69 arg_count = cu_$arg_count (); 70 if arg_count = 0 71 then do; 72 usage: 73 call com_err_$suppress_name (0, me, "Usage: ^a pathname", me); 74 return; 75 end; 76 arg_found = "0"b; 77 78 do j = 1 to arg_count; 79 call cu_$arg_ptr (j, argptr, alng, code); 80 if code ^= 0 81 then do; 82 call com_err_ (code, me, "Argument ^d", j); 83 return; 84 end; 85 86 if index (arg, "-") = 1 87 then do; 88 call com_err_ (error_table_$badopt, me, "^a", arg); 89 end; 90 else do; 91 arg_found = "1"b; 92 call process_arg; 93 end; 94 end; 95 96 if ^arg_found 97 then go to usage; 98 99 return; 100 101 102 perprocess_static_sw_off: 103 entry; 104 105 new_value = "0"b; 106 me = "perprocess_static_sw_off"; 107 goto join; 108 109 process_arg: 110 proc; 111 112 segptr = cv_ptr_ (arg, code); 113 if code ^= 0 114 then do; 115 err2: 116 call com_err_ (code, me, "^a", arg); 117 return; 118 end; 119 120 call hcs_$status_mins (segptr, type, bitcnt, code); 121 if code ^= 0 122 then goto err2; 123 124 125 wordcount = divide (bitcnt + 35, 36, 18, 0); 126 lastword = addrel (segptr, wordcount - 1); 127 i = bin (lastword -> map_ptr, 18); 128 if (i <= 0) | (i >= wordcount) 129 then do; 130 err3: 131 call com_err_ (0, me, "Obsolete or non object segment ^a", arg); 132 return; 133 end; 134 mapp = addrel (segptr, lastword -> map_ptr); 135 if mapp -> object_map.identifier ^= "obj_map " 136 then goto err3; 137 if mapp -> object_map.decl_vers ^= 2 138 then goto err3; 139 140 /* be sure we have write access to segment so we can change it */ 141 142 aclptr = addr (segment_acl); 143 segment_acl (1).access_name = get_group_id_ (); 144 call hcs_$fs_get_path_name (segptr, dirname, lng, ename, code); 145 if code ^= 0 146 then do; 147 err4: 148 call com_err_ (code, me, "Cannot set access on ^a", arg); 149 return; 150 end; 151 152 call hcs_$list_acl (dirname, ename, null, lastword, aclptr, 1, code); 153 if code ^= 0 154 then goto err4; 155 if segment_acl (1).status_code ^= 0 156 then delete_sw = "1"b; /* no previous acl entry for us */ 157 else do; 158 delete_sw = "0"b; 159 saved_mode = segment_acl (1).mode; 160 end; 161 162 segment_acl (1).mode = "101"b; /* set our access to rw */ 163 call hcs_$add_acl_entries (dirname, ename, aclptr, 1, code); 164 if code ^= 0 165 then goto err4; 166 167 mapp -> object_map.format.perprocess_static = new_value; 168 169 /* now restore acl */ 170 171 if delete_sw 172 then call hcs_$delete_acl_entries (dirname, ename, aclptr, 1, code); 173 else do; 174 segment_acl (1).mode = saved_mode; 175 call hcs_$add_acl_entries (dirname, ename, aclptr, 1, code); 176 end; 177 178 return; 179 180 end; /* of process_arg */ 181 182 183 184 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/15/82 1455.9 perprocess_static_sw_on.pl1 >dumps>old>recomp>perprocess_static_sw_on.pl1 62 1 08/05/77 1022.5 object_map.incl.pl1 >ldd>include>object_map.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. access_name 000220 automatic char(32) array level 2 dcl 41 set ref 143* aclptr 000122 automatic pointer dcl 25 set ref 142* 152* 163* 171* 175* addr builtin function dcl 38 ref 142 addrel builtin function dcl 38 ref 126 134 alng 000102 automatic fixed bin(17,0) dcl 18 set ref 79* 86 88 88 112 112 115 115 130 130 147 147 arg based char unaligned dcl 33 set ref 86 88* 112* 115* 130* 147* arg_count 000104 automatic fixed bin(17,0) dcl 18 set ref 68* 70 78 arg_found 000124 automatic bit(1) dcl 28 set ref 76* 91* 96 argptr 000116 automatic pointer dcl 25 set ref 79* 86 88 112 115 130 147 bin builtin function dcl 38 ref 127 bitcnt 000110 automatic fixed bin(24,0) dcl 23 set ref 120* 125 code 000107 automatic fixed bin(35,0) dcl 22 set ref 79* 80 82* 112* 113 115* 120* 121 144* 145 147* 152* 153 163* 164 171* 175* com_err_ 000016 constant entry external dcl 51 ref 82 88 115 130 147 com_err_$suppress_name 000020 constant entry external dcl 52 ref 72 cu_$arg_count 000012 constant entry external dcl 49 ref 68 cu_$arg_ptr 000014 constant entry external dcl 50 ref 79 cv_ptr_ 000022 constant entry external dcl 53 ref 112 decl_vers based fixed bin(17,0) level 2 dcl 1-10 ref 137 delete_sw 000126 automatic bit(1) dcl 30 set ref 155* 158* 171 dirname 000130 automatic char(168) unaligned dcl 34 set ref 144* 152* 163* 171* 175* divide builtin function dcl 38 ref 125 ename 000202 automatic char(32) unaligned dcl 35 set ref 144* 152* 163* 171* 175* error_table_$badopt 000010 external static fixed bin(35,0) dcl 47 set ref 88* format 12 based structure level 2 dcl 1-10 get_group_id_ 000024 constant entry external dcl 54 ref 143 hcs_$add_acl_entries 000034 constant entry external dcl 58 ref 163 175 hcs_$delete_acl_entries 000036 constant entry external dcl 59 ref 171 hcs_$fs_get_path_name 000030 constant entry external dcl 56 ref 144 hcs_$list_acl 000032 constant entry external dcl 57 ref 152 hcs_$status_mins 000026 constant entry external dcl 55 ref 120 i 000100 automatic fixed bin(17,0) dcl 18 set ref 127* 128 128 identifier 1 based char(8) level 2 dcl 1-10 ref 135 index builtin function dcl 38 ref 86 j 000101 automatic fixed bin(17,0) dcl 18 set ref 78* 79* 82* lastword 000120 automatic pointer dcl 25 set ref 126* 127 134 152* lng 000103 automatic fixed bin(17,0) dcl 18 set ref 144* map_ptr based bit(18) dcl 1-38 ref 127 134 mapp 000112 automatic pointer dcl 25 set ref 134* 135 137 167 me 000212 automatic char(24) unaligned dcl 36 set ref 66* 72* 72* 82* 88* 106* 115* 130* 147* mode 10 000220 automatic bit(36) array level 2 dcl 41 set ref 159 162* 174* new_value 000125 automatic bit(1) dcl 29 set ref 65* 105* 167 null builtin function dcl 38 ref 152 152 object_map based structure level 1 dcl 1-10 perprocess_static 12(06) based bit(1) level 3 packed unaligned dcl 1-10 set ref 167* saved_mode 000127 automatic bit(36) dcl 31 set ref 159* 174 segment_acl 000220 automatic structure array level 1 dcl 41 set ref 142 segptr 000114 automatic pointer dcl 25 set ref 112* 120* 126 134 144* status_code 12 000220 automatic fixed bin(35,0) array level 2 dcl 41 set ref 155 type 000106 automatic fixed bin(2,0) dcl 21 set ref 120* wordcount 000105 automatic fixed bin(18,0) dcl 20 set ref 125* 126 128 NAME DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. object_map_version_2 internal static fixed bin(17,0) initial dcl 1-40 NAMES DECLARED BY EXPLICIT CONTEXT. err2 000346 constant label dcl 115 ref 121 err3 000437 constant label dcl 130 ref 135 137 err4 000553 constant label dcl 147 ref 153 164 join 000100 constant label dcl 68 ref 107 perprocess_static_sw_off 000302 constant entry external dcl 102 perprocess_static_sw_on 000066 constant entry external dcl 11 process_arg 000317 constant entry internal dcl 109 ref 92 usage 000111 constant label dcl 72 ref 96 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1214 1254 1030 1224 Length 1464 1030 40 174 164 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME perprocess_static_sw_on 280 external procedure is an external procedure. process_arg internal procedure shares stack frame of external procedure perprocess_static_sw_on. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME perprocess_static_sw_on 000100 i perprocess_static_sw_on 000101 j perprocess_static_sw_on 000102 alng perprocess_static_sw_on 000103 lng perprocess_static_sw_on 000104 arg_count perprocess_static_sw_on 000105 wordcount perprocess_static_sw_on 000106 type perprocess_static_sw_on 000107 code perprocess_static_sw_on 000110 bitcnt perprocess_static_sw_on 000112 mapp perprocess_static_sw_on 000114 segptr perprocess_static_sw_on 000116 argptr perprocess_static_sw_on 000120 lastword perprocess_static_sw_on 000122 aclptr perprocess_static_sw_on 000124 arg_found perprocess_static_sw_on 000125 new_value perprocess_static_sw_on 000126 delete_sw perprocess_static_sw_on 000127 saved_mode perprocess_static_sw_on 000130 dirname perprocess_static_sw_on 000202 ename perprocess_static_sw_on 000212 me perprocess_static_sw_on 000220 segment_acl perprocess_static_sw_on 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. com_err_ com_err_$suppress_name cu_$arg_count cu_$arg_ptr cv_ptr_ get_group_id_ hcs_$add_acl_entries hcs_$delete_acl_entries hcs_$fs_get_path_name hcs_$list_acl hcs_$status_mins THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000065 65 000073 66 000075 68 000100 70 000107 72 000111 74 000141 76 000142 78 000143 79 000151 80 000166 82 000170 83 000221 86 000222 88 000236 89 000270 91 000271 92 000273 94 000274 96 000276 99 000300 102 000301 105 000307 106 000310 107 000316 109 000317 112 000320 113 000344 115 000346 117 000400 120 000401 121 000416 125 000420 126 000424 127 000430 128 000433 130 000437 132 000473 134 000474 135 000500 137 000504 142 000507 143 000511 144 000520 145 000551 147 000553 149 000611 152 000612 153 000655 155 000657 158 000664 159 000665 162 000667 163 000671 164 000724 167 000726 171 000734 174 000772 175 000774 178 001027 ----------------------------------------------------------- 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