COMPILATION LISTING OF SEGMENT print_link_info Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 10/06/88 1044.0 mst Thu Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1988 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 15 /****^ HISTORY COMMENTS: 16* 1) change(86-07-31,Elhard), approve(86-07-31,MCR7457), 17* audit(86-11-05,DGHowe), install(86-11-20,MR12.0-1222): 18* Modified to iterate across components 1 to N of an object MSF. 19* 2) change(88-09-21,TLNguyen), approve(88-09-21,MCR7997), 20* audit(88-10-03,Parisek), install(88-10-06,MR12.2-1135): 21* Change the print_link_info command to return selected items of information 22* for the specified object segment. 23* END HISTORY COMMENTS */ 24 25 26 /* Print Link Info - command to display the contents of a standard Multics object segment. 27* 28* Designed and Initially coded by Michael J. Spier, March 17, 1971 29* modified 75/06/05 by M. Weaver to remove call to old_print_link_info 30* modified 76/07/28 by S. Webber to use get_temp_segments_ and to add -header 31* modified 77/03/03 by M. Weaver to handle case of -he only 32* modified 78/10/12 by J. Spencer Love to add a cleanup handler. 33* also changed to use clock builtin and singular version of get_temp_segment_ 34* modified 82/03/08 by M. Weaver to handle archive components 35**/ 36 37 /* format: style3,^indnoniterdo */ 38 print_link_info: 39 pli: 40 procedure () options (variable); 41 42 /* Obligatory overhead */ 43 44 dcl (addr, clock, divide, min, null, ptr, substr, unspec) 45 builtin; 46 dcl cleanup condition; 47 48 /* AUTOMATIC STORAGE VARIABLES */ 49 50 dcl (arg_count, last_path, arg_idx, arg_len) 51 fixed bin; 52 dcl status fixed bin (35); 53 dcl bitcount fixed bin (24); 54 dcl (my_arg_ptr, arg_ptr, p) 55 ptr; 56 dcl header_sw bit (1) aligned; 57 dcl msf_sw bit (1); 58 dcl componentname char (32); 59 dcl objname char (32); 60 dcl dirname char (168); 61 dcl date char (24) aligned; 62 63 dcl 1 auto_form_link_info_args 64 aligned like form_link_info_args; 65 66 /* STATIC VARIABLES AND CONSTANTS */ 67 68 dcl who_am_i char (16) static init ("print_link_info") options (constant); 69 70 /* BASED STRUCTURES */ 71 72 dcl arg char (arg_len) unaligned based (my_arg_ptr); 73 1 1 /* begin include file -- form_link_info_args.incl.pl1 */ 1 2 /* coded July 8, 1981 and March 2, 1982 by Melanie Weaver */ 1 3 1 4 dcl 1 form_link_info_args aligned based (arg_ptr), 1 5 2 version fixed bin, 1 6 2 list_bc fixed bin, /* bit count of the output segment */ 1 7 2 list_ptr ptr, /* pointer to the output segment */ 1 8 2 obj_ptr ptr, /* pointer to the object segment */ 1 9 2 flags aligned, 1 10 3 hd_sw bit (1) unaligned, /* header option */ 1 11 3 ln_sw bit (1) unaligned, /* length option */ 1 12 3 et_sw bit (1) unaligned, /* entry option */ 1 13 3 lk_sw bit (1) unaligned, /* link option */ 1 14 3 lg_sw bit (1) unaligned, /* long option */ 1 15 3 bc_sw bit (1) unaligned, /* bit_count field is valid */ 1 16 3 cn_sw bit (1) unaligned, /* component name is given */ 1 17 3 pad bit (29) unaligned, 1 18 2 bit_count fixed bin (24), /* bit count of object segment */ 1 19 2 component_name char (32) aligned; /* name of component in archive */ 1 20 1 21 dcl form_link_info_args_version_1 fixed bin static options (constant) init (1); 1 22 1 23 /* end include file -- form_link_info_args.incl.pl1 */ 74 2 1 /* BEGIN INCLUDE FILE ... object_info.incl.pl1 2 2*coded February 8, 1972 by Michael J. Spier */ 2 3 /* modified May 26, 1972 by M. Weaver */ 2 4 /* modified 15 April, 1975 by M. Weaver */ 2 5 2 6 declare 1 object_info aligned based, /* structure containing object info based, returned by object_info_ */ 2 7 2 version_number fixed bin, /* version number of current structure format (=2) */ 2 8 2 textp pointer, /* pointer to beginning of text section */ 2 9 2 defp pointer, /* pointer to beginning of definition section */ 2 10 2 linkp pointer, /* pointer to beginning of linkage section */ 2 11 2 statp pointer, /* pointer to beginning of static section */ 2 12 2 symbp pointer, /* pointer to beginning of symbol section */ 2 13 2 bmapp pointer, /* pointer to beginning of break map (may be null) */ 2 14 2 tlng fixed bin, /* length in words of text section */ 2 15 2 dlng fixed bin, /* length in words of definition section */ 2 16 2 llng fixed bin, /* length in words of linkage section */ 2 17 2 ilng fixed bin, /* length in words of static section */ 2 18 2 slng fixed bin, /* length in words of symbol section */ 2 19 2 blng fixed bin, /* length in words of break map */ 2 20 2 format, /* word containing bit flags about object type */ 2 21 3 old_format bit(1) unaligned, /* on if segment isn't in new format, i.e. has old style object map */ 2 22 3 bound bit(1) unaligned, /* on if segment is bound */ 2 23 3 relocatable bit(1) unaligned, /* on if seg has relocation info in its first symbol block */ 2 24 3 procedure bit(1) unaligned, /* on if segment is an executable object program */ 2 25 3 standard bit(1) unaligned, /* on if seg is in standard format (more than just standard map) */ 2 26 3 gate bit(1) unaligned, /* on if segment is a gate */ 2 27 3 separate_static bit(1) unaligned, /* on if static not in linkage */ 2 28 3 links_in_text bit(1) unaligned, /* on if there are threaded links in text */ 2 29 3 perprocess_static bit (1) unaligned, /* on if static is not to be per run unit */ 2 30 3 pad bit(27) unaligned, 2 31 2 entry_bound fixed bin, /* entry bound if segment is a gate */ 2 32 2 textlinkp pointer, /* ptr to first link in text */ 2 33 2 34 /* LIMIT OF BRIEF STRUCTURE */ 2 35 2 36 2 compiler char(8) aligned, /* name of processor which generated segment */ 2 37 2 compile_time fixed bin(71), /* clock reading of date/time object was generated */ 2 38 2 userid char(32) aligned, /* standard Multics id of creator of object segment */ 2 39 2 cvers aligned, /* generator version name in printable char string form */ 2 40 3 offset bit(18) unaligned, /* offset of name in words relative to base of symbol section */ 2 41 3 length bit(18) unaligned, /* length of name in characters */ 2 42 2 comment aligned, /* printable comment concerning generator or generation of segment */ 2 43 3 offset bit(18) unaligned, /* offset of comment in words relative to base of symbol section */ 2 44 3 length bit(18) unaligned, /* length of comment in characters */ 2 45 2 source_map fixed bin, /* offset, relative to base of symbol section, of source map structure */ 2 46 2 47 /* LIMIT OF DISPLAY STRUCTURE */ 2 48 2 49 2 rel_text pointer, /* pointer to text section relocation info */ 2 50 2 rel_def pointer, /* pointer to definition section relocation info */ 2 51 2 rel_link pointer, /* pointer to linkage section relocation info */ 2 52 2 rel_static pointer, /* pointer to static section relocation info */ 2 53 2 rel_symbol pointer, /* pointer to symbol section relocation info */ 2 54 2 text_boundary fixed bin, /* specifies mod of text section base boundary */ 2 55 2 static_boundary fixed bin, /* specifies mod of internal static base boundary */ 2 56 /* currently not used by system */ 2 57 2 default_truncate fixed bin, /* offset rel to symbp for binder to automatically trunc. symb sect. */ 2 58 2 optional_truncate fixed bin; /* offset rel to symbp for binder to optionally trunc. symb sect. */ 2 59 2 60 declare object_info_version_2 fixed bin int static init(2); 2 61 2 62 /* END INCLUDE FILE ... object_info.incl.pl1 */ 75 76 77 /* EXTERNALS */ 78 79 dcl active_fnc_err_ entry () options (variable); 80 dcl check_star_name_$entry 81 entry (char (*), fixed bin (35)); 82 dcl com_err_ entry () options (variable); 83 dcl com_err_$suppress_name 84 entry () options (variable); 85 dcl cu_$af_arg_count entry (fixed bin, fixed bin (35)); 86 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)); 87 dcl date_time_ entry (fixed bin (71), char (*) aligned); 88 dcl error_table_$badopt external fixed bin (35); 89 dcl error_table_$dirseg external fixed bin (35); 90 dcl error_table_$nostars 91 ext fixed bin (35); 92 dcl error_table_$not_act_fnc 93 fixed bin (35) external; 94 dcl expand_pathname_$component 95 entry (char (*), char (*), char (*), char (*), fixed bin (35)); 96 dcl form_link_info_ entry (ptr, fixed bin (35)); 97 dcl get_system_free_area_ 98 entry() returns(ptr); 99 dcl get_temp_segment_ entry (char (*), ptr, fixed bin (35)); 100 dcl hcs_$terminate_noname 101 entry (ptr, fixed bin (35)); 102 dcl initiate_file_$component 103 entry (char (*), char (*), char (*), bit (*), ptr, fixed bin (24), fixed bin (35)); 104 dcl ioa_ entry () options (variable); 105 dcl iox_$put_chars entry (ptr, ptr, fixed bin (22), fixed bin (35)); 106 dcl iox_$user_output ext ptr; 107 dcl object_lib_$get_component_info 108 entry (ptr, ptr, char(8), char(*), ptr, 109 fixed bin(35)); 110 dcl object_lib_$initiate 111 entry (char (*), char (*), char (*), bit (1), ptr, fixed bin (24), bit (1), fixed bin (35)); 112 dcl release_temp_segment_ 113 entry (char (*), ptr, fixed bin (35)); 114 dcl pathname_$component entry (char (*), char (*), char (*)) returns (char (194)); 115 116 call cu_$af_arg_count (arg_count, status); 117 if status = 0 118 then do; 119 call active_fnc_err_ (0, who_am_i, "This command may not be invoked as an active function."); 120 return; 121 end; 122 else if status ^= error_table_$not_act_fnc 123 then do; 124 call com_err_ (status, who_am_i); 125 return; 126 end; 127 128 msf_sw = "0"b; /* must be initialized */ 129 last_path = 0; 130 header_sw = "1"b; 131 unspec (auto_form_link_info_args) = "0"b; 132 arg_ptr = addr (auto_form_link_info_args); 133 form_link_info_args.version = form_link_info_args_version_1; 134 135 do arg_idx = 1 to arg_count; /* compile options */ 136 call cu_$arg_ptr (arg_idx, my_arg_ptr, arg_len, status); 137 if status ^= 0 138 then do; 139 call com_err_ (status, who_am_i, "Getting argument #^d.", arg_idx); 140 return; 141 end; 142 if substr (arg, 1, min (1, arg_len)) ^= "-" 143 then last_path = arg_idx; /* remember where last path is */ 144 else if arg = "-no_header" | arg = "-nhe" 145 then header_sw = "0"b; 146 else if arg = "-header" | arg = "-he" 147 then form_link_info_args.flags.hd_sw = "1"b; 148 else if arg = "-length" | arg = "-ln" 149 then form_link_info_args.flags.ln_sw = "1"b; 150 else if arg = "-entry" | arg = "-et" 151 then form_link_info_args.flags.et_sw = "1"b; 152 else if arg = "-link" | arg = "-lk" 153 then form_link_info_args.flags.lk_sw = "1"b; 154 else if arg = "-long" | arg = "-lg" 155 then form_link_info_args.flags.lg_sw = "1"b; 156 else do; 157 call com_err_ (error_table_$badopt, who_am_i, "^a", arg); 158 return; 159 end; 160 end; 161 162 if last_path = 0 163 then do; /* wasn't any last path = wasn't any path */ 164 call com_err_$suppress_name (0, who_am_i, "Usage is: pli paths {-control_args}"); 165 return; 166 end; 167 if ^form_link_info_args.flags.hd_sw & ^form_link_info_args.flags.ln_sw & ^form_link_info_args.flags.et_sw 168 & ^form_link_info_args.flags.lk_sw 169 then do; 170 form_link_info_args.flags.hd_sw = header_sw; 171 form_link_info_args.flags.ln_sw = "1"b; 172 form_link_info_args.flags.et_sw = "1"b; 173 form_link_info_args.flags.lk_sw = "1"b; 174 end; 175 else header_sw = form_link_info_args.flags.hd_sw; /* -header overrides -no_header */ 176 if form_link_info_args.flags.lg_sw 177 then header_sw, form_link_info_args.flags.hd_sw = "1"b; 178 /* -long forces -header */ 179 180 /* Now proceed to print object segment information */ 181 182 form_link_info_args.list_ptr = null; 183 form_link_info_args.obj_ptr = null; 184 on cleanup 185 begin; 186 if form_link_info_args.list_ptr ^= null () 187 then call release_temp_segment_ (who_am_i, form_link_info_args.list_ptr, status); 188 if form_link_info_args.obj_ptr ^= null () 189 then call hcs_$terminate_noname (ptr (form_link_info_args.obj_ptr, 0), status); 190 end; 191 call get_temp_segment_ (who_am_i, form_link_info_args.list_ptr, status); 192 if status ^= 0 193 then do; 194 call com_err_ (status, who_am_i, "Getting temp segment."); 195 return; 196 end; 197 198 do arg_idx = 1 to last_path; 199 call cu_$arg_ptr (arg_idx, my_arg_ptr, arg_len, status); 200 if substr (arg, 1, min (1, arg_len)) ^= "-" 201 then do; 202 call expand_pathname_$component (arg, dirname, objname, componentname, status); 203 if status ^= 0 204 then do; 205 call com_err_ (status, who_am_i, "^a", arg); 206 goto finish_up; 207 end; 208 call check_star_name_$entry (objname, status); 209 if status ^= 0 210 then do; 211 if status = 1 | status = 2 212 then status = error_table_$nostars; 213 call com_err_ (status, who_am_i, "^a", objname); 214 go to finish_up; 215 end; 216 form_link_info_args.flags.cn_sw = (componentname ^= ""); 217 form_link_info_args.component_name = componentname; 218 219 call initiate_file_$component (dirname, objname, componentname, "100"b, form_link_info_args.obj_ptr, 220 bitcount, status); 221 if status = error_table_$dirseg & componentname = "" 222 then call object_lib_$initiate (dirname, objname, "", "1"b, form_link_info_args.obj_ptr, bitcount, 223 msf_sw, status); 224 225 if form_link_info_args.obj_ptr = null () 226 then do; 227 error_return: 228 call com_err_ (status, who_am_i, "^a", pathname_$component (dirname, objname, componentname)); 229 goto get_next; 230 end; 231 232 form_link_info_args.flags.bc_sw = "1"b; 233 form_link_info_args.bit_count = bitcount; 234 235 form_link_info_args.list_bc = 0; 236 237 /* if we have an msf use special handling */ 238 239 if msf_sw 240 then call form_msf_link_info (status); 241 else call form_link_info_ (arg_ptr, status); 242 /* format information into listing segment */ 243 if status ^= 0 244 then go to error_return; 245 246 if header_sw 247 then do; 248 call date_time_ (clock (), date); 249 call ioa_ ("^/^2-^a^4x^a", arg, date); 250 end; 251 call iox_$put_chars (iox_$user_output, form_link_info_args.list_ptr, 252 divide (form_link_info_args.list_bc, 9, 21, 0), status); 253 254 get_next: 255 if form_link_info_args.obj_ptr ^= null () 256 then do; 257 p = ptr (form_link_info_args.obj_ptr, 0); 258 form_link_info_args.obj_ptr = null (); 259 /* prevent race with cleanup handler */ 260 call hcs_$terminate_noname (p, status); 261 end; 262 end; 263 end; 264 265 finish_up: 266 if form_link_info_args.list_ptr ^= null () 267 then call release_temp_segment_ (who_am_i, form_link_info_args.list_ptr, status); 268 return; 269 270 form_msf_link_info: 271 proc (status); 272 273 dcl status fixed bin (35); 274 275 dcl sys_areap ptr; 276 dcl sys_area area based (sys_areap); 277 dcl c fixed bin; 278 3 1 /* START OF: object_lib_defs.incl.pl1 * * * * * */ 3 2 3 3 3 4 /****^ HISTORY COMMENTS: 3 5* 1) change(86-05-02,Elhard), approve(86-05-02,MCR7391), 3 6* audit(86-10-03,DGHowe), install(86-11-20,MR12.0-1222): 3 7* Written to define structure returned by object_lib_$get_component_info. 3 8* END HISTORY COMMENTS */ 3 9 3 10 /********************************************************************/ 3 11 /* */ 3 12 /* Name: object_lib_defs */ 3 13 /* */ 3 14 /* Function: This include file defines constants & structures */ 3 15 /* used and returned by the object_lib_ subroutines. */ 3 16 /* */ 3 17 /********************************************************************/ 3 18 3 19 dcl 01 component_info aligned based (comp_infop), 3 20 02 version char (8), 3 21 02 flags aligned, 3 22 03 msf bit (1) unaligned, 3 23 03 mbz bit (35) unaligned, 3 24 02 max fixed bin, 3 25 02 comp (0:max_component refer (component_info.max)), 3 26 03 segp ptr, 3 27 03 bc fixed bin (24), 3 28 03 mbz bit (36), 3 29 03 info like object_info; 3 30 3 31 dcl comp_infop ptr; 3 32 dcl max_component fixed bin; 3 33 dcl component_info_version_1 3 34 char (8) static options (constant) 3 35 init ("cinfo1.0"); 3 36 3 37 /* END OF: object_lib_defs.incl.pl1 * * * * * */ 279 280 281 sys_areap = get_system_free_area_ (); 282 283 comp_infop = null; 284 285 on cleanup 286 begin; 287 if comp_infop ^= null 288 then do; 289 do c = 1 to component_info.max; 290 call hcs_$terminate_noname (component_info.comp (c).segp, 0); 291 end; 292 free component_info in (sys_area); 293 end; 294 end; 295 296 call object_lib_$get_component_info (form_link_info_args.obj_ptr, sys_areap, component_info_version_1, "none", 297 comp_infop, status); 298 if status ^= 0 299 then return; 300 301 do c = 1 to component_info.max while (status = 0); 302 form_link_info_args.obj_ptr = component_info.comp (c).segp; 303 form_link_info_args.bit_count = component_info.comp (c).bc; 304 305 call form_link_info_ (arg_ptr, status); 306 end; 307 308 do c = 1 to component_info.max; 309 call hcs_$terminate_noname (component_info.comp (c).segp, 0); 310 end; 311 free component_info in (sys_area); 312 313 end form_msf_link_info; 314 315 end; /* END OF EXTERNAL PROCEDURE print_link_info */ 316 317 SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/06/88 1044.0 print_link_info.pl1 >spec>install>1135>print_link_info.pl1 74 1 04/26/82 1150.1 form_link_info_args.incl.pl1 >ldd>include>form_link_info_args.incl.pl1 75 2 08/05/77 1022.5 object_info.incl.pl1 >ldd>include>object_info.incl.pl1 279 3 11/24/86 1226.9 object_lib_defs.incl.pl1 >ldd>include>object_lib_defs.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. active_fnc_err_ 000010 constant entry external dcl 79 ref 119 addr builtin function dcl 44 ref 132 arg based char packed unaligned dcl 72 set ref 142 144 144 146 146 148 148 150 150 152 152 154 154 157* 200 202* 205* 249* arg_count 000106 automatic fixed bin(17,0) dcl 50 set ref 116* 135 arg_idx 000110 automatic fixed bin(17,0) dcl 50 set ref 135* 136* 139* 142* 198* 199* arg_len 000111 automatic fixed bin(17,0) dcl 50 set ref 136* 142 142 144 144 146 146 148 148 150 150 152 152 154 154 157 157 199* 200 200 202 202 205 205 249 249 arg_ptr 000116 automatic pointer dcl 54 set ref 132* 133 146 148 150 152 154 167 167 167 167 170 171 172 173 175 176 176 182 183 186 186 188 188 188 191 216 217 219 221 225 232 233 235 241* 251 251 251 254 257 258 265 265 296 302 303 305* auto_form_link_info_args 000224 automatic structure level 1 dcl 63 set ref 131* 132 bc 6 based fixed bin(24,0) array level 3 dcl 3-19 ref 303 bc_sw 6(05) based bit(1) level 3 packed packed unaligned dcl 1-4 set ref 232* bit_count 7 based fixed bin(24,0) level 2 dcl 1-4 set ref 233* 303* bitcount 000113 automatic fixed bin(24,0) dcl 53 set ref 219* 221* 233 c 000102 automatic fixed bin(17,0) dcl 277 set ref 289* 290* 301* 302 303* 308* 309* check_star_name_$entry 000012 constant entry external dcl 80 ref 208 cleanup 000100 stack reference condition dcl 46 ref 184 285 clock builtin function dcl 44 ref 248 248 cn_sw 6(06) based bit(1) level 3 packed packed unaligned dcl 1-4 set ref 216* com_err_ 000014 constant entry external dcl 82 ref 124 139 157 194 205 213 227 com_err_$suppress_name 000016 constant entry external dcl 83 ref 164 comp 4 based structure array level 2 dcl 3-19 comp_infop 000104 automatic pointer dcl 3-31 set ref 283* 287 289 290 292 296* 301 302 303 308 309 311 component_info based structure level 1 dcl 3-19 set ref 292 311 component_info_version_1 000000 constant char(8) initial packed unaligned dcl 3-33 set ref 296* component_name 10 based char(32) level 2 dcl 1-4 set ref 217* componentname 000124 automatic char(32) packed unaligned dcl 58 set ref 202* 216 217 219* 221 227* 227* cu_$af_arg_count 000020 constant entry external dcl 85 ref 116 cu_$arg_ptr 000022 constant entry external dcl 86 ref 136 199 date 000216 automatic char(24) dcl 61 set ref 248* 249* date_time_ 000024 constant entry external dcl 87 ref 248 dirname 000144 automatic char(168) packed unaligned dcl 60 set ref 202* 219* 221* 227* 227* divide builtin function dcl 44 ref 251 251 error_table_$badopt 000026 external static fixed bin(35,0) dcl 88 set ref 157* error_table_$dirseg 000030 external static fixed bin(35,0) dcl 89 ref 221 error_table_$nostars 000032 external static fixed bin(35,0) dcl 90 ref 211 error_table_$not_act_fnc 000034 external static fixed bin(35,0) dcl 92 ref 122 et_sw 6(02) based bit(1) level 3 packed packed unaligned dcl 1-4 set ref 150* 167 172* expand_pathname_$component 000036 constant entry external dcl 94 ref 202 flags 6 based structure level 2 dcl 1-4 form_link_info_ 000040 constant entry external dcl 96 ref 241 305 form_link_info_args based structure level 1 dcl 1-4 form_link_info_args_version_1 constant fixed bin(17,0) initial dcl 1-21 ref 133 get_system_free_area_ 000042 constant entry external dcl 97 ref 281 get_temp_segment_ 000044 constant entry external dcl 99 ref 191 hcs_$terminate_noname 000046 constant entry external dcl 100 ref 188 260 290 309 hd_sw 6 based bit(1) level 3 packed packed unaligned dcl 1-4 set ref 146* 167 170* 175 176* header_sw 000122 automatic bit(1) dcl 56 set ref 130* 144* 170 175* 176* 246 initiate_file_$component 000050 constant entry external dcl 102 ref 219 ioa_ 000052 constant entry external dcl 104 ref 249 iox_$put_chars 000054 constant entry external dcl 105 ref 251 iox_$user_output 000056 external static pointer dcl 106 set ref 251* last_path 000107 automatic fixed bin(17,0) dcl 50 set ref 129* 142* 162 198 lg_sw 6(04) based bit(1) level 3 packed packed unaligned dcl 1-4 set ref 154* 176 list_bc 1 based fixed bin(17,0) level 2 dcl 1-4 set ref 235* 251 251 list_ptr 2 based pointer level 2 dcl 1-4 set ref 182* 186 186* 191* 251* 265 265* lk_sw 6(03) based bit(1) level 3 packed packed unaligned dcl 1-4 set ref 152* 167 173* ln_sw 6(01) based bit(1) level 3 packed packed unaligned dcl 1-4 set ref 148* 167 171* max 3 based fixed bin(17,0) level 2 dcl 3-19 ref 289 292 301 308 311 min builtin function dcl 44 ref 142 200 msf_sw 000123 automatic bit(1) packed unaligned dcl 57 set ref 128* 221* 239 my_arg_ptr 000114 automatic pointer dcl 54 set ref 136* 142 144 144 146 146 148 148 150 150 152 152 154 154 157 199* 200 202 205 249 null builtin function dcl 44 ref 182 183 186 188 225 254 258 265 283 287 obj_ptr 4 based pointer level 2 dcl 1-4 set ref 183* 188 188 188 219* 221* 225 254 257 258* 296* 302* object_info based structure level 1 dcl 2-6 object_lib_$get_component_info 000060 constant entry external dcl 107 ref 296 object_lib_$initiate 000062 constant entry external dcl 110 ref 221 objname 000134 automatic char(32) packed unaligned dcl 59 set ref 202* 208* 213* 219* 221* 227* 227* p 000120 automatic pointer dcl 54 set ref 257* 260* pathname_$component 000066 constant entry external dcl 114 ref 227 227 ptr builtin function dcl 44 ref 188 188 257 release_temp_segment_ 000064 constant entry external dcl 112 ref 186 265 segp 4 based pointer array level 3 dcl 3-19 set ref 290* 302 309* status 000112 automatic fixed bin(35,0) dcl 52 in procedure "pli" set ref 116* 117 122 124* 136* 137 139* 186* 188* 191* 192 194* 199* 202* 203 205* 208* 209 211 211 211* 213* 219* 221 221* 227* 239* 241* 243 251* 260* 265* status parameter fixed bin(35,0) dcl 273 in procedure "form_msf_link_info" set ref 270 296* 298 301 305* substr builtin function dcl 44 ref 142 200 sys_area based area(1024) dcl 276 ref 292 311 sys_areap 000100 automatic pointer dcl 275 set ref 281* 292 296* 311 unspec builtin function dcl 44 set ref 131* version based fixed bin(17,0) level 2 dcl 1-4 set ref 133* who_am_i 000002 constant char(16) initial packed unaligned dcl 68 set ref 119* 124* 139* 157* 164* 186* 191* 194* 205* 213* 227* 265* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. max_component automatic fixed bin(17,0) dcl 3-32 object_info_version_2 internal static fixed bin(17,0) initial dcl 2-60 NAMES DECLARED BY EXPLICIT CONTEXT. error_return 001305 constant label dcl 227 ref 243 finish_up 001531 constant label dcl 265 ref 206 214 form_msf_link_info 001561 constant entry internal dcl 270 ref 239 get_next 001505 constant label dcl 254 ref 229 pli 000136 constant entry external dcl 38 print_link_info 000145 constant entry external dcl 38 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2362 2452 2024 2372 Length 2750 2024 70 261 336 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME pli 358 external procedure is an external procedure. on unit on line 184 80 on unit form_msf_link_info 110 internal procedure enables or reverts conditions. on unit on line 285 72 on unit STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME form_msf_link_info 000100 sys_areap form_msf_link_info 000102 c form_msf_link_info 000104 comp_infop form_msf_link_info pli 000106 arg_count pli 000107 last_path pli 000110 arg_idx pli 000111 arg_len pli 000112 status pli 000113 bitcount pli 000114 my_arg_ptr pli 000116 arg_ptr pli 000120 p pli 000122 header_sw pli 000123 msf_sw pli 000124 componentname pli 000134 objname pli 000144 dirname pli 000216 date pli 000224 auto_form_link_info_args pli THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_ne_as call_ext_out_desc call_ext_out call_int_this return_mac enable_op ext_entry int_entry op_freen_ clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. active_fnc_err_ check_star_name_$entry com_err_ com_err_$suppress_name cu_$af_arg_count cu_$arg_ptr date_time_ expand_pathname_$component form_link_info_ get_system_free_area_ get_temp_segment_ hcs_$terminate_noname initiate_file_$component ioa_ iox_$put_chars object_lib_$get_component_info object_lib_$initiate pathname_$component release_temp_segment_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$dirseg error_table_$nostars error_table_$not_act_fnc iox_$user_output LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 38 000135 116 000152 117 000162 119 000164 120 000211 122 000212 124 000215 125 000231 128 000232 129 000233 130 000234 131 000236 132 000241 133 000243 135 000245 136 000255 137 000272 139 000274 140 000327 142 000330 144 000344 146 000357 148 000373 150 000407 152 000423 154 000437 157 000453 158 000505 160 000506 162 000510 164 000512 165 000537 167 000540 170 000550 171 000554 172 000556 173 000560 174 000562 175 000563 176 000565 182 000574 183 000576 184 000577 186 000613 188 000641 190 000662 191 000663 192 000705 194 000707 195 000736 198 000737 199 000747 200 000764 202 000775 203 001030 205 001032 206 001064 208 001065 209 001102 211 001104 213 001113 214 001142 216 001143 217 001154 219 001157 221 001221 225 001300 227 001305 229 001360 232 001361 233 001363 235 001365 239 001366 241 001400 243 001411 246 001413 248 001415 249 001434 251 001464 254 001505 257 001512 258 001514 260 001516 263 001527 265 001531 268 001557 270 001560 281 001566 283 001574 285 001576 287 001612 289 001617 290 001630 291 001644 292 001647 294 001656 296 001657 298 001717 301 001722 302 001736 303 001745 305 001751 306 001762 308 001764 309 001775 310 002011 311 002013 313 002022 ----------------------------------------------------------- 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