COMPILATION LISTING OF SEGMENT probe_subsys_util_ Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 10/27/88 1234.9 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 /****^ HISTORY COMMENTS: 15* 1) change(88-09-07,WAAnderson), approve(88-09-30,MCR7952), 16* audit(88-09-30,JRGray), install(88-10-24,MR12.2-1184): 17* Added format control comment to make the source more readable. 18* END HISTORY COMMENTS */ 19 20 21 /* format: style1,insnl,ifthendo,indthenelse,^indnoniterdo,^inditerdo,indcom,^indthenbegin,^indprocbody,ind2,ll78,initcol0,dclind4,idind24,struclvlind1,comcol41 */ 22 23 /**** * * * * * * * * * * * * * * * * * * * * * * * */ 24 25 probe_subsys_util_: 26 proc (); 27 28 return; /* dummy entry */ 29 30 /* * This procedure contains some utility routines for the "probe" debugger. */ 31 /* * Shamelessly stolen from subsystem_util_, 04/22/79 W. Olin Sibert */ 32 /* * Efficiency improved (it uses about 10% of all time in conditional bk), 28 Feb 80 JRD */ 33 /* Changed not to create breakseg (done now by probe_break_mgr_) 09/28/81 S. Herbst */ 34 /* Changed to store probe_static_info.probe_segno for use by probe_break_handler_ 10/07/81 S. Herbst */ 35 /* Changed to use 1 scratch segment per ring 12/29/81 S. Herbst */ 36 37 dcl ( 38 P_version fixed bin,/* version number for validity check */ 39 P_invocation_ptr pointer, /* -> new/old invocation data created/to destroy */ 40 P_code fixed binary (35) 41 ) parameter;/* status code */ 42 43 dcl code fixed bin (35); 44 dcl old_invocation_ptr pointer; 45 dcl probe_scratch_ptr pointer; 46 dcl probe_static_info_ptr pointer; 47 48 dcl based_area area based; 49 50 dcl com_err_ entry options (variable); 51 dcl cu_$cl entry (bit (1) aligned); 52 dcl define_area_ entry (pointer, fixed bin (35)); 53 dcl get_temp_segment_ entry (char (*), ptr, fixed bin (35)); 54 dcl hcs_$truncate_seg entry (pointer, fixed bin (19), fixed (35)); 55 dcl probe_modes_mgr_$init entry (pointer); 56 57 dcl sys_info$max_seg_size fixed bin (18) external static; 58 dcl iox_$user_output pointer external static; 59 dcl iox_$user_input pointer external static; 60 61 dcl probe_request_table_$ fixed bin external static; 62 dcl probe_data_$major_version 63 fixed bin external static; 64 dcl probe_data_$minor_version 65 fixed bin external static; 66 dcl probe_data_$version_string 67 char (32) aligned external static; 68 dcl probe_data_$info_directory 69 char (168) aligned external static; 70 dcl probe_data_$prompt_string 71 char (32) varying external static; 72 73 dcl probe_data_$invocation_list_ptr 74 pointer external static; 75 dcl probe_data_$probe_static_info_ptr 76 pointer external static; 77 dcl probe_data_$probe_scratch_ptr 78 pointer external static; 79 80 dcl error_table_$unimplemented_version 81 fixed bin (35) external static; 82 83 dcl RW_MODE fixed bin (5) internal static 84 options (constant) init (01010b); 85 86 dcl (addr, baseno, codeptr, copy, hbound, null, size, 87 string, unspec) builtin; 88 89 /* */ 90 91 probe_subsys_util_$create_invocation: 92 entry (P_version, P_invocation_ptr, P_code); 93 94 /* * This entry creates a new invocation of probe. It strings it on the list of 95* * active invocations; the head of this list is in external static, called 96* * probe_data_$invocation_list_ptr. P_invocation_ptr is a pointer (output) to 97* * a probe_info structure and associated items which is allocated (in system_free_4_) 98* * by this procedure. The caller must correctly supply P_version. As long as at least 99* * one invocation of a probe is active, the values of listener_info.depth will 100* * never be repeated. */ 101 102 if P_version ^= probe_info_version_1 then do; 103 /* our only validity check */ 104 P_code = error_table_$unimplemented_version; 105 return; 106 end; 107 108 code = 0; /* we're successful */ 109 old_invocation_ptr = probe_data_$invocation_list_ptr; 110 probe_static_info_ptr = probe_data_$probe_static_info_ptr; 111 P_invocation_ptr = null (); 112 113 if probe_static_info_ptr = null () then do; 114 /* similarly, create probe_static_info if not there */ 115 116 call create_probe_scratch (); /* get temp segment */ 117 118 call create_probe_static_info (); /* this sets probe_static_info_ptr */ 119 end; 120 else probe_scratch_ptr = probe_data_$probe_scratch_ptr; 121 122 if code ^= 0 123 then goto INITIALIZATION_ERROR; 124 125 call create_probe_info (); /* set up the database we were called about */ 126 127 probe_info.listener_info.previous = old_invocation_ptr; 128 /* chain into recursion list */ 129 probe_info.listener_info.next = null (); 130 131 if old_invocation_ptr ^= null () then do; 132 /* new level, not first */ 133 probe_info.listener_info.depth = 134 old_invocation_ptr -> probe_info.listener_info.depth + 1; 135 old_invocation_ptr -> probe_info.listener_info.next = probe_info_ptr; 136 end; 137 else probe_info.listener_info.depth = 1; 138 /* first level */ 139 140 probe_data_$invocation_list_ptr = probe_info_ptr; 141 /* update invocation chain */ 142 P_invocation_ptr = probe_info_ptr; 143 144 INITIALIZATION_ERROR: 145 P_code = code; 146 147 return; /* end of code for $create_invocation entry */ 148 149 /* */ 150 151 probe_subsys_util_$destroy_invocation: 152 entry (P_invocation_ptr); 153 154 /* * This entry destroys an invocation of probe. */ 155 156 probe_info_ptr = P_invocation_ptr; 157 old_invocation_ptr = probe_data_$invocation_list_ptr; 158 probe_scratch_ptr = probe_data_$probe_scratch_ptr; 159 probe_static_info_ptr = probe_data_$probe_static_info_ptr; 160 161 if probe_info_ptr = null () 162 then return; /* decide whether we can do anything */ 163 if probe_static_info_ptr = null () 164 then return; 165 if probe_scratch_ptr = null () 166 then return; 167 if old_invocation_ptr = null () 168 then return; 169 170 if probe_data_$invocation_list_ptr = P_invocation_ptr 171 then 172 probe_data_$invocation_list_ptr = probe_info.listener_info.previous; 173 /* pop back a level iff one to destroy is last */ 174 175 if probe_info.listener_info.previous ^= null () 176 then 177 probe_info.listener_info.previous -> probe_info.listener_info.next = 178 probe_info.listener_info.next; 179 180 if probe_info.listener_info.next ^= null () 181 then 182 probe_info.listener_info.next -> probe_info.listener_info.previous = 183 probe_info.listener_info.previous; 184 185 free probe_info.ptr_to_current_source 186 -> current_source in (probe_scratch_ptr -> based_area); 187 free probe_info.ptr_to_initial_source 188 -> initial_source in (probe_scratch_ptr -> based_area); 189 190 free probe_info in (probe_scratch_ptr -> based_area); 191 /* get rid of the last trace */ 192 193 return; /* end of code for $destroy_invocation entry */ 194 195 /* */ 196 197 NULL_LABEL: 198 call com_err_ (0, "probe", 199 "Attempt to goto null label variable. Returning to command level."); 200 201 call cu_$cl ("0"b); 202 203 goto NULL_LABEL; 204 205 /* */ 206 207 create_probe_info: 208 proc (); 209 210 /* * This procedure sets all the values in probe_info to their default settings */ 211 212 allocate probe_info in (probe_scratch_ptr -> based_area) 213 set (probe_info_ptr); 214 215 allocate current_source in (probe_scratch_ptr -> based_area) 216 set (probe_info.ptr_to_current_source); 217 218 allocate initial_source in (probe_scratch_ptr -> based_area) 219 set (probe_info.ptr_to_initial_source); 220 221 probe_info.probe_info_version = probe_info_version_1; 222 223 probe_info.static_info_ptr = probe_data_$probe_static_info_ptr; 224 probe_info.modes_ptr = probe_static_info.modes_ptr; 225 226 probe_info.machine_cond_ptr = null (); 227 228 probe_info.first_token = null (); 229 probe_info.ct = null (); 230 probe_info.end_token = "000000"b3; 231 probe_info.buffer_ptr = null (); 232 probe_info.buffer_lth = 0; 233 234 probe_info.current_stack_frame = null (); 235 probe_info.input_type = 0; 236 probe_info.language_type = 0; 237 probe_info.return_method = 0; 238 probe_info.entry_method = 0; 239 240 probe_info.break_slot_ptr = null (); /* initialize the break_info substructure */ 241 probe_info.last_break_slot_ptr = null (); 242 probe_info.break_reset = "0"b; 243 probe_info.real_break_return_loc = null (); 244 245 probe_info.break_segment_ptr = probe_static_info.break_segment_ptr; 246 probe_info.break_area_ptr = null (); 247 probe_info.scratch_area_ptr = probe_data_$probe_scratch_ptr; 248 probe_info.probe_area_ptr = null (); 249 probe_info.work_area_ptr = null (); 250 probe_info.expression_area_ptr = null (); 251 252 string (probe_info.flags) = ""b; 253 probe_info.flags.execute = "1"b; 254 255 probe_info.input_switch = probe_static_info.input_switch; 256 probe_info.output_switch = probe_static_info.output_switch; 257 258 probe_info.error_code = 0; 259 probe_info.error_message = "<>"; 260 261 probe_info.request_name = "<>"; 262 probe_info.abort_probe_label = NULL_LABEL; 263 probe_info.abort_line_label = NULL_LABEL; 264 probe_info.depth = 0; 265 probe_info.previous = null (); 266 probe_info.next = null (); 267 268 current_source.stmnt_map_entry_index = -1; 269 current_source.instruction_ptr = null (); 270 current_source.stack_ptr = null (); /* now initialize things probe_info refers to */ 271 current_source.entry_ptr = null (); 272 current_source.block_ptr = null (); 273 current_source.seg_info_ptr = null (); 274 275 initial_source.stmnt_map_entry_index = -1; 276 initial_source.instruction_ptr = null (); 277 initial_source.stack_ptr = null (); /* now initialize things probe_info refers to */ 278 initial_source.entry_ptr = null (); 279 initial_source.block_ptr = null (); 280 initial_source.seg_info_ptr = null (); 281 282 return; 283 end; /* create_probe_info internal procedure */ 284 285 /* */ 286 287 create_probe_scratch: 288 proc (); 289 290 /* * This procedure creates the probe_scratch_ segment in the process dir, 291* * and initializes its area. It contains nothing but a segment size area; 292* * all information for managing it is kept in probe_static_info. */ 293 294 dcl 1 scratch_area_info aligned like area_info; 295 /* automatic copy */ 296 297 call get_temp_segment_ ("probe_scratch_", probe_scratch_ptr, code); 298 if probe_scratch_ptr = null () 299 then goto INITIALIZATION_ERROR; /* punt if it fails; Note that this will */ 300 /* re-use an old scratch seg if one was present */ 301 302 call hcs_$truncate_seg (probe_scratch_ptr, 0, (0)); 303 /* eliminate its former contents, if any */ 304 305 unspec (scratch_area_info) = ""b; 306 307 scratch_area_info.version = area_info_version_1; 308 /* prepare to initialize the area */ 309 310 string (scratch_area_info.control) = ""b; 311 /* set all the flags */ 312 scratch_area_info.extend = "0"b; 313 scratch_area_info.zero_on_alloc = "0"b; 314 scratch_area_info.zero_on_free = "0"b; 315 scratch_area_info.dont_free = "0"b; 316 scratch_area_info.no_freeing = "0"b; 317 scratch_area_info.system = "0"b; 318 319 scratch_area_info.owner = "probe scratch area"; 320 scratch_area_info.size = sys_info$max_seg_size; 321 /* a whole segment, more or less */ 322 323 scratch_area_info.areap = probe_scratch_ptr; 324 325 call define_area_ (addr (scratch_area_info), code); 326 if code ^= 0 327 then goto INITIALIZATION_ERROR; /* sorry, we lose */ 328 329 probe_data_$probe_scratch_ptr = probe_scratch_ptr; 330 /* remember it in our external static */ 331 332 return; 333 end; /* create_probe_scratch niternal procedure */ 334 335 /* */ 336 337 create_probe_static_info: 338 proc (); 339 340 /* * This procedure allocates and initializes the probe_static_info structure. 341* * It is allocated in the probe scratch area, which is pointed to by probe_scratch_ptr. 342* * At the end, probe_data_$probe_static_info_ptr is set to point to it. There is one 343* * of these structures per process; it contains global probe data. */ 344 345 dcl probe_modes_ptr pointer unaligned; 346 dcl seg_info_ptr pointer unaligned; 347 dcl probe_seg_mgr_$get_breakseg_ptr 348 entry (fixed bin (35)) returns (ptr); 349 350 allocate probe_static_info in (probe_scratch_ptr -> based_area) 351 set (probe_static_info_ptr); 352 353 unspec (probe_static_info_ptr -> probe_static_info) = 354 copy ("777043777043"b3, size (probe_static_info)); 355 356 probe_static_info_ptr -> probe_static_info.probe_info_version = 357 probe_info_version_1; 358 359 probe_static_info_ptr -> probe_static_info.major_version = 360 probe_data_$major_version; 361 probe_static_info_ptr -> probe_static_info.minor_version = 362 probe_data_$minor_version; 363 probe_static_info_ptr -> probe_static_info.version_string = 364 probe_data_$version_string; 365 366 probe_static_info_ptr -> probe_static_info.name = "probe"; 367 probe_static_info_ptr -> probe_static_info.prompt = 368 probe_data_$prompt_string; 369 unspec (probe_static_info_ptr -> probe_static_info.switches) = "0"b; 370 371 probe_static_info_ptr -> probe_static_info.break_segment_ptr = 372 probe_seg_mgr_$get_breakseg_ptr (code); 373 if code ^= 0 374 then return; 375 /* initialize breakseg only before setting a break */ 376 probe_static_info_ptr -> probe_static_info.scratch_segment_ptr = 377 probe_scratch_ptr; 378 379 probe_static_info_ptr -> probe_static_info.probe_segno = 380 baseno (codeptr (probe_subsys_util_)); 381 /* probe's own segment number */ 382 probe_static_info_ptr -> probe_static_info.last_break_segno = "0"b; 383 384 probe_static_info_ptr -> probe_static_info.stack_info.traced_with_all = 385 "0"b; 386 probe_static_info_ptr -> probe_static_info.stack_info.max_level = -1; 387 probe_static_info_ptr -> probe_static_info.stack_info.level_chain = null (); 388 389 probe_static_info_ptr -> probe_static_info.request_table_ptr_array (*) = 390 null (); 391 probe_static_info_ptr -> probe_static_info.info_directory_name_array (*) = 392 ""; 393 probe_static_info_ptr -> probe_static_info.exclude_name_array (*) = ""; 394 395 probe_static_info_ptr -> probe_static_info.input_switch = iox_$user_input; 396 probe_static_info_ptr -> probe_static_info.output_switch = iox_$user_output; 397 398 probe_static_info_ptr -> probe_static_info.request_table_ptr_array (1) = 399 addr (probe_request_table_$); 400 probe_static_info_ptr -> probe_static_info.info_directory_name_array (1) = 401 probe_data_$info_directory; 402 403 probe_static_info_ptr -> probe_static_info.request_table_info.array_ptr = 404 addr (probe_static_info_ptr 405 -> probe_static_info.request_table_ptr_array); 406 probe_static_info_ptr -> probe_static_info.request_table_info.array_size = 407 1; 408 probe_static_info_ptr 409 -> probe_static_info.request_table_info.array_max_size = 410 hbound (probe_static_info.request_table_ptr_array, 1); 411 probe_static_info_ptr 412 -> probe_static_info.request_table_info.using_internal_array = "1"b; 413 414 probe_static_info_ptr -> probe_static_info.info_directory_info.array_ptr = 415 addr (probe_static_info_ptr 416 -> probe_static_info.info_directory_name_array); 417 probe_static_info_ptr -> probe_static_info.info_directory_info.array_size = 418 1; 419 probe_static_info_ptr 420 -> probe_static_info.info_directory_info.array_max_size = 421 hbound (probe_static_info.info_directory_name_array, 1); 422 probe_static_info_ptr 423 -> probe_static_info.info_directory_info.using_internal_array = "1"b; 424 425 probe_static_info_ptr -> probe_static_info.exclude_name_info.array_ptr = 426 addr (probe_static_info_ptr -> probe_static_info.exclude_name_array); 427 probe_static_info_ptr -> probe_static_info.exclude_name_info.array_size = 0; 428 probe_static_info_ptr 429 -> probe_static_info.exclude_name_info.array_max_size = 430 hbound (probe_static_info.exclude_name_array, 1); 431 probe_static_info_ptr 432 -> probe_static_info.exclude_name_info.using_internal_array = "1"b; 433 434 seg_info_offset_count = 1023; /* start out with 1024 entries, until the LOT exceeds it */ 435 allocate probe_seg_info_array in (probe_scratch_ptr -> based_area) 436 set (probe_static_info_ptr -> probe_static_info.seg_info_offset_ptr); 437 probe_static_info_ptr -> probe_static_info.seg_info_offset_ptr 438 -> probe_seg_info_array.count = 439 seg_info_offset_count; 440 441 allocate probe_modes in (probe_scratch_ptr -> based_area) 442 set (probe_modes_ptr); 443 444 call probe_modes_mgr_$init ((probe_modes_ptr)); 445 /* get default values for modes */ 446 447 probe_static_info_ptr -> probe_static_info.modes_ptr = probe_modes_ptr; 448 /* copy it into static structure */ 449 450 seg_info_nfiles = 1; /* allocate the "null" seg_info block */ 451 allocate seg_info in (probe_scratch_ptr -> based_area) set (seg_info_ptr); 452 453 seg_info_ptr -> seg_info.language_type = OTHER_lang_type; 454 /* and fill it in */ 455 string (seg_info_ptr -> seg_info.bits) = ""b; 456 seg_info_ptr -> seg_info.directory_name = "<>"; 457 seg_info_ptr -> seg_info.entry_name = "<>"; 458 seg_info_ptr -> seg_info.segname = "<>"; 459 seg_info_ptr -> seg_info.identifier = -1; 460 /* better than zero, even */ 461 seg_info_ptr -> seg_info.pointers = null (); 462 /* set them all to null */ 463 seg_info_ptr -> seg_info.bounds = 0; /* set all the bounds information to zeros */ 464 seg_info_ptr -> seg_info.map_size = -1; 465 seg_info_ptr -> seg_info.error_code = -1; 466 seg_info_ptr -> seg_info.pad (*) = -1; 467 seg_info_ptr -> seg_info.nfiles = 1; 468 seg_info_ptr -> seg_info.file_pointers (1) = null (); 469 470 probe_static_info_ptr -> probe_static_info.null_seg_info_ptr = seg_info_ptr; 471 /* remember where it is */ 472 473 probe_data_$probe_static_info_ptr = probe_static_info_ptr; 474 /* remember it in external static */ 475 476 return; 477 end create_probe_static_info; 478 479 /* */ 480 1 1 /* BEGIN INCLUDE FILE probe_info.incl.pl1 */ 1 2 1 3 1 4 1 5 /****^ HISTORY COMMENTS: 1 6* 1) change(88-10-24,WAAnderson), approve(88-10-24,MCR7952), 1 7* audit(88-10-24,RWaters), install(88-10-27,MR12.2-1194): 1 8* Added field 'retry_using_main' to add new C feature. 1 9* END HISTORY COMMENTS */ 1 10 1 11 1 12 /* Created: 04/22/79 W. Olin Sibert, from subsystem_info 1 13* Modified: 22 Sept 79 JRd to remove: default (ptr & (auto|based)) init (null ()); 1 14* Added flags.setting_break 08/22/83 Steve Herbst 1 15* Added flags.executing_quit_request 01/15/85 Steve Herbst 1 16**/ 1 17 1 18 dcl 1 probe_info aligned based (probe_info_ptr), /* standard data for a probe invocation */ 1 19 2 probe_info_version fixed bin, /* version of this structure */ 1 20 1 21 2 static_info_ptr pointer unaligned, /* pointer to static information structure */ 1 22 2 modes_ptr pointer unaligned, /* pointer to probe_modes structure */ 1 23 1 24 2 ptr_to_current_source ptr, /* current_source is based on this */ 1 25 2 ptr_to_initial_source ptr, /* initial_source is based on this */ 1 26 2 machine_cond_ptr pointer, /* pointer to machine conditions, if we faulted to get here */ 1 27 1 28 2 token_info aligned, /* information about token chain currently being processed */ 1 29 3 first_token pointer unaligned, /* first token in chain */ 1 30 3 ct pointer unaligned, /* pointer to current token; updated in MANY places */ 1 31 3 end_token bit (18) aligned, /* token type at which to stop scanning token chain */ 1 32 3 buffer_ptr pointer unaligned, /* pointer to input buffer */ 1 33 3 buffer_lth fixed bin (21), /* and length */ 1 34 1 35 2 random_info aligned, 1 36 3 current_stack_frame pointer unaligned, /* stack frame pointer for frame in which probe was invoked */ 1 37 3 input_type fixed bin, /* current input type */ 1 38 3 language_type fixed bin, /* current language being processed */ 1 39 3 return_method fixed bin, /* how we should return after exiting probe */ 1 40 3 entry_method fixed bin, /* how we got here in the first place */ 1 41 3 pad1 (19) bit (36) aligned, 1 42 1 43 2 break_info, /* break info -- only interesting if we got here via a break */ 1 44 3 break_slot_ptr pointer, /* pointer to break slot -- non-null IFF at a break */ 1 45 3 last_break_slot_ptr pointer unaligned, /* pointer to previous break slot, not presently used */ 1 46 3 break_reset bit (1) aligned, /* this break has been reset by somebody further on */ 1 47 3 real_break_return_loc pointer, /* where to REALLY return to, modulo previous bit */ 1 48 1 49 2 probe_area_info, /* information about various probe areas */ 1 50 3 break_segment_ptr pointer unaligned, /* pointer to Personid.probe */ 1 51 3 break_area_ptr pointer unaligned, /* pointer to area in break segment */ 1 52 3 scratch_area_ptr pointer unaligned, /* pointer to probe scratch seg in process dir */ 1 53 3 probe_area_ptr pointer unaligned, /* This area lasts as long as an invocation of probe. */ 1 54 3 work_area_ptr pointer unaligned, /* This area lasts as long as the current request line */ 1 55 3 expression_area_ptr pointer unaligned, /* This area lasts as long as the current command */ 1 56 1 57 2 flags aligned, /* this, in particular, should be saved and restored correctly */ 1 58 (3 execute, /* "1"b => execute requests, "0"b => just check syntax */ 1 59 3 in_listener, /* ON => in probe listener loop */ 1 60 3 executing_request, /* ON => executing a request */ 1 61 3 in_interpret_line, /* executing in probe_listen_$interpret_line */ 1 62 3 setting_break, /* executing "after" or "before": check syntax of "if" */ 1 63 3 executing_quit_request, /* to prevent error looping during "quit" request */ 1 64 3 pad (30)) bit (1) unaligned, 1 65 1 66 2 io_switches, /* switches probe will do normal I/O on */ 1 67 3 input_switch pointer, 1 68 3 output_switch pointer, 1 69 1 70 2 error_info, /* information about the last error saved for later printing */ 1 71 3 error_code fixed bin (35), 1 72 3 error_message char (300) varying, 1 73 1 74 2 listener_info, /* internal use by probe listener */ 1 75 3 request_name character (32) varying, /* primary name of the request being processed */ 1 76 3 abort_probe_label label variable, 1 77 3 abort_line_label label variable, 1 78 3 depth fixed binary, /* count of active invocations of probe */ 1 79 3 previous pointer unaligned, /* -> previous invocation's info */ 1 80 3 next pointer unaligned, 1 81 1 82 2 end_of_probe_info pointer aligned, 1 83 2 retry_using_main fixed bin aligned; 1 84 1 85 1 86 dcl probe_info_ptr pointer; 1 87 1 88 dcl probe_info_version fixed bin static options (constant) initial (1); 1 89 1 90 dcl probe_info_version_1 fixed bin static options (constant) initial (1); 1 91 1 92 dcl scratch_area area based (probe_info.scratch_area_ptr); 1 93 dcl probe_area area based (probe_info.probe_area_ptr); 1 94 dcl work_area area based (probe_info.work_area_ptr); 1 95 dcl expression_area area based (probe_info.expression_area_ptr); 1 96 1 97 /* END INCLUDE FILE probe_info.incl.pl1 */ 481 482 483 /* ;;;;;;; */ 484 2 1 /* BEGIN INCLUDE FILE probe_static_info.incl.pl1 */ 2 2 2 3 /* * This include file describes per-process information about probe, such 2 4* * as various options available and the info directories and modes. 2 5* * 2 6* * Created: 06/06/79 W. Olin Sibert */ 2 7 2 8 dcl 1 probe_static_info aligned based (probe_info.static_info_ptr), /* per-process data about probe */ 2 9 2 probe_info_version fixed bin, /* same as probe_info.probe_info_version */ 2 10 2 11 2 version aligned, 2 12 3 major_version fixed bin, 2 13 3 minor_version fixed bin, 2 14 3 version_string char (32) unaligned, /* like "4.3f, patch 1" */ 2 15 2 16 2 name char (32) unaligned, /* "probe" */ 2 17 2 prompt character (40) varying, /* prompt for reading requests */ 2 18 2 switches, 2 19 3 brief_sw bit (1) unaligned, /* briefer break messages, no header (default OFF) */ 2 20 3 no_handle_faults_sw bit (1) unaligned, /* don't handle bad ptr faults (default OFF) */ 2 21 3 recursive_breaks_sw bit (1) unaligned, /* don't ignore recursive breaks in probe */ 2 22 3 prompt_on_sw bit (1) unaligned, /* prompt for request lines */ 2 23 3 switch_pad bit (32) unaligned, 2 24 2 25 2 scratch_segment_ptr pointer, /* pointer to probe_scratch_ -- always valid */ 2 26 2 break_segment_ptr pointer, /* pointer to Person.breaks -- valid only if needed */ 2 27 2 28 2 seg_info_offset_ptr pointer, /* pointer to seg_info_offset array */ 2 29 2 30 2 probe_segno bit (18), /* segment number of probe itself */ 2 31 2 last_break_segno bit (18), /* segment number of last interrupted program */ 2 32 2 33 2 stack_info aligned, /* information about the stack trace in probe_scratch_ */ 2 34 3 level_chain pointer unaligned, /* first level frame entry pointer */ 2 35 3 max_level fixed bin, /* number of stack levels */ 2 36 3 flags aligned, 2 37 (4 good_stack, 2 38 4 traced_with_all, /* whether the stack trace includes support frames */ 2 39 4 pad1 (34)) bit (1) unaligned, 2 40 2 41 2 modes_ptr pointer unaligned, /* pointer to modes -- same as probe_info.modes_ptr */ 2 42 2 43 2 request_table_info aligned, /* info for request definitions */ 2 44 3 array_ptr pointer, /* pointer to array of request table pointers */ 2 45 3 array_size fixed bin, /* number of elements in use */ 2 46 3 array_max_size fixed bin, /* max number of elements in array */ 2 47 3 using_internal_array bit (1) aligned, /* whether or not we are using the array in probe_static_info */ 2 48 2 49 2 io_switches, /* switches probe does its I/O on */ 2 50 3 input_switch pointer, 2 51 3 output_switch pointer, 2 52 3 (private_input_sw, private_output_sw) bit (1) aligned, 2 53 /* created by ids, ods and should be destroyed */ 2 54 2 55 2 info_directory_info aligned, /* info about info directories */ 2 56 3 array_ptr pointer, 2 57 3 array_size fixed bin, 2 58 3 array_max_size fixed bin, 2 59 3 using_internal_array bit (1) aligned, 2 60 2 61 2 exclude_name_info aligned, /* info for exclude array used in printing values */ 2 62 3 array_ptr pointer, 2 63 3 array_size fixed bin, 2 64 3 array_max_size fixed bin, 2 65 3 using_internal_array bit (1) aligned, 2 66 2 67 2 null_seg_info_ptr pointer unaligned, /* pointer to the "null" seg_info block */ 2 68 2 69 2 initial_arrays, /* initial versions of various arrays */ 2 70 3 request_table_ptr_array (10) pointer aligned, 2 71 3 info_directory_name_array (3) char (168) unaligned, 2 72 3 exclude_name_array (6) char (32) unaligned, 2 73 2 74 2 metering_info, /* last values for "mode meter" */ 2 75 3 last_clock fixed bin (71), 2 76 3 last_vclock fixed bin (71), 2 77 3 last_page_faults fixed bin, 2 78 2 79 2 end_of_probe_static_info fixed bin; 2 80 2 81 2 82 dcl 1 probe_seg_info_array aligned based (probe_static_info.seg_info_offset_ptr), 2 83 2 count fixed bin, /* number of entries in seg_info_offset array */ 2 84 2 seg_info_offset (0 : seg_info_offset_count refer (probe_seg_info_array.count)) bit (18) aligned; 2 85 2 86 dcl seg_info_offset_count fixed bin; /* one less than the number of info_offsets */ 2 87 2 88 dcl probe_request_tables (probe_static_info.request_table_info.array_max_size) /* array of request table pointers */ 2 89 pointer aligned based (probe_static_info.request_table_info.array_ptr); 2 90 2 91 dcl probe_info_directories (probe_static_info.info_directory_info.array_max_size) /* array of info directories */ 2 92 char (168) unaligned based (probe_static_info.info_directory_info.array_ptr); 2 93 2 94 dcl probe_exclude_names (probe_static_info.exclude_name_info.array_max_size) /* array of exclude names */ 2 95 char (168) unaligned based (probe_static_info.exclude_name_info.array_ptr); 2 96 2 97 /* END INCLUDE FILE probe_static_info.incl.pl1 */ 485 486 487 /* ;;;;;;; */ 488 3 1 /* BEGIN INCLUDE FILE ... probe_modes.incl.pl1 3 2* 3 3* this structure is part of the per-user data base, which alledgedly is 3 4* kept in person_id.probe no probe code other than probe_modes_mgr_ 3 5* should set these modes, or refer to them BY NAME in communication 3 6* with the user I do not even promise a one-to-one correspondance 3 7* between the modes the user can set and the names here 3 8* 3 9* James R. Davis 12 July 79 */ 3 10 /* Added meter 09/23/82 S. Herbst */ 3 11 /* Added truncate_strings 05/21/84 S. Herbst */ 3 12 3 13 3 14 dcl 1 probe_modes aligned based (probe_info.modes_ptr), 3 15 2 len_modes, 3 16 3 error_messages fixed bin, /* for use by probe_error_ */ 3 17 3 qualification fixed bin, /* for use by probe_print_value_ */ 3 18 3 value_print fixed bin, /* for probe_print_value_ */ 3 19 3 pad (5) fixed bin, /* for use by probe_mxyzptlk */ 3 20 2 value_separator char (32) varying, 3 21 2 bits, 3 22 3 use_exclude_names bit (1) unal, 3 23 3 debug_modes_set bit (1) unaligned, /* whether any of the *MAGIC* modes are set */ 3 24 3 ignore_faults bit (1) unaligned, 3 25 3 octal_bitstrings bit (1) unal, /* for Olin Sibert */ 3 26 3 catch_errors bit (1) unaligned, /* calls to probe_error_ will call cu_$cl */ 3 27 3 catch_error_once bit (1) unaligned, /* next call to probe_error_ will call cu_$cl */ 3 28 3 debug_breaks bit (1) unaligned, /* causes various things to happen at breakpoints */ 3 29 3 use_prompt bit (1) unaligned, /* whether to use the prompt */ 3 30 3 debug bit (1) unaligned, /* controls printing of random debugging information */ 3 31 3 meter bit (1) unaligned, /* controls printing of time, vcpu, pf's at halt */ 3 32 3 truncate_strings bit (1) unaligned, /* controls value req printing only 1st 200 chars/bits */ 3 33 3 pad bit (25) unaligned; 3 34 3 35 dcl (BRIEF_mode_type init (1), 3 36 SHORT_mode_type init (2), 3 37 LONG_mode_type init (3)) fixed bin internal static options (constant); 3 38 3 39 /* END INCLUDE FILE ... probe_modes.incl.pl1 */ 3 40 489 490 491 /* ;;;;;;; */ 492 4 1 /* BEGIN INCLUDE FILE ... probe_source_info.incl.pl1 4 2* 4 3* James R. Davis 2 July 79 */ 4 4 4 5 dcl 1 source_info based aligned, 4 6 2 stmnt_map_entry_index fixed bin, /* index in stmnt map for this stmnt */ 4 7 2 instruction_ptr ptr, /* to last instruction executed */ 4 8 2 block_ptr ptr, /* to runtime_block node */ 4 9 2 stack_ptr ptr, /* to a stack frame */ 4 10 2 entry_ptr ptr, /* to entry seq. for this proc */ 4 11 2 seg_info_ptr ptr; /* to seg_info */ 4 12 4 13 dcl 1 current_source aligned like source_info based (probe_info.ptr_to_current_source); 4 14 dcl 1 initial_source aligned like source_info based (probe_info.ptr_to_initial_source); 4 15 4 16 /* END INCLUDE FILE ... probe_source_info.incl.pl1 */ 493 494 495 /* ;;;;;;; */ 496 5 1 /* BEGIN INCLUDE FILE ... probe_seg_info.incl.pl1 5 2* 5 3* 25 June 79 JRDavis 5 4* 5 5* Modified 7 April 1983, TO - Add fields for character offset/line 5 6* correction per file. 5 7**/ 5 8 5 9 dcl 1 seg_info based aligned, /* place to remember information about object seg */ 5 10 2 language_type fixed bin, /* language of source program */ 5 11 2 bits aligned, 5 12 3 ignore_case bit (1) unal, 5 13 3 bound_segment bit (1) unaligned, 5 14 3 component bit (1) unaligned, 5 15 3 pad bit (33) unal, 5 16 2 names, /* where to find it */ 5 17 3 directory_name character (168) unal, /* what directory */ 5 18 3 entry_name character (32) unal, /* what segment */ 5 19 3 segname character (32) unal, /* procedure segname definition */ 5 20 2 identifier fixed bin (71), /* time of object creation */ 5 21 2 pointers, /* location of various parts of segment */ 5 22 3 symbol_header_ptr ptr unal, /* to symbol section */ 5 23 3 original_source_ptr ptr unal, /* to segment source map */ 5 24 3 statement_map_ptr ptr unal, /* to segment statement map */ 5 25 3 break_info ptr unal, /* for unbound segments, and start of chain for 5 26* bound ones, -> break_map !obsolete, I think! */ 5 27 3 chain ptr unal, /* to entry for next component if bound */ 5 28 3 linkage_ptr ptr unal, /* to linkage section */ 5 29 2 bounds aligned, /* structure of bounds information */ 5 30 3 text_bounds, 5 31 4 start fixed bin (35), 5 32 4 end fixed bin (35), 5 33 3 symbol_bounds, 5 34 4 start fixed bin (35), 5 35 4 end fixed bin (35), 5 36 2 map_size fixed bin, /* size of statement map */ 5 37 2 error_code fixed bin (35), /* errors encoutered while getting info, are recorded here */ 5 38 2 bound_create_time fixed bin (71), /* time seg containing was bound or compiled. */ 5 39 2 bound_sym_header ptr unal, /* to sym. section header for bound seg */ 5 40 2 pad (1) fixed bin (35), 5 41 5 42 2 nfiles fixed bin, 5 43 2 per_file (seg_info_nfiles refer (seg_info.nfiles)), 5 44 3 file_pointers ptr unal, 5 45 3 break_line (0:3) fixed bin (18) unsigned unaligned; 5 46 5 47 dcl seg_info_nfiles fixed bin; /* for allocation purposes */ 5 48 5 49 5 50 /* END INCLUDE FILE ... probe_seg_info.incl.pl1 */ 497 498 499 /* ;;;;;;; */ 500 6 1 /* BEGIN INCLUDE FILE probe_info_constants.incl.pl1 */ 6 2 /* Created: 06/25/79 W. Olin Sibert */ 6 3 6 4 dcl (RETURN_TO_CALLER init (1), /* return methods */ 6 5 RETURN_TO_FRAME init (2), 6 6 RETURN_TO_CONDITION init (3), 6 7 RETURN_TO_BREAK init (4)) fixed bin internal static options (constant); 6 8 6 9 dcl (ENTRY_AT_CALL init (1), /* entered by a call to probe */ 6 10 ENTRY_AT_BREAK init (2), /* entered by a call to probe$break */ 6 11 ENTRY_AT_HALT init (3)) fixed bin internal static options (constant); /* entered by a call to probe$halt */ 6 12 6 13 dcl (CONSOLE_INPUT init (1), 6 14 BREAK_INPUT init (2), 6 15 MACRO_INPUT init (3)) fixed bin internal static options (constant); 6 16 6 17 /* END INCLUDE FILE probe_info_constants.incl.pl1 */ 501 502 503 /* ;;;;;;; */ 504 7 1 /* BEGIN INCLUDE FILE ... probe_lang_types.incl.pl1 7 2* 7 3* JRD 26 June 79 7 4* MBW 31 July 1981 to add algol68 */ 7 5 7 6 7 7 /****^ HISTORY COMMENTS: 7 8* 1) change(88-09-20,WAAnderson), approve(88-09-20,MCR7952), 7 9* audit(88-09-30,JRGray), install(88-10-24,MR12.2-1184): 7 10* Added C Language type. 7 11* END HISTORY COMMENTS */ 7 12 7 13 7 14 /* Modified June 83 JMAthane to add PASCAL language type */ 7 15 /* Modified April 88 Hinatsu to add C language type */ 7 16 7 17 dcl (UNKNOWN_lang_type init (1), 7 18 OTHER_lang_type init (2), 7 19 PL1_lang_type init (3), 7 20 FORTRAN_lang_type init (4), 7 21 COBOL_lang_type init (5), 7 22 ALM_lang_type init (6), 7 23 ALGOL68_lang_type init (7), 7 24 PASCAL_lang_type init (8), 7 25 C_lang_type init (9)) fixed bin internal static options (constant); 7 26 7 27 dcl official_language_names (9) char (32) internal static options (constant) init 7 28 ("Unknown", "other", "PL/I", "FORTRAN", "COBOL", "ALM", "Algol 68", "Pascal", "C"); 7 29 7 30 dcl palatable_language_names (9) char (32) internal static options (constant) init 7 31 ("Unknown", "Other", "pl1", "fortran", "cobol", "alm", "algol68", "pascal", "c"); 7 32 7 33 /* END INCLUDE FILE ... probe_lang_types.incl.pl1 */ 505 506 507 /* ;;;;;;; */ 508 8 1 /* BEGIN INCLUDE FILE area_info.incl.pl1 12/75 */ 8 2 8 3 dcl area_info_version_1 fixed bin static init (1) options (constant); 8 4 8 5 dcl area_infop ptr; 8 6 8 7 dcl 1 area_info aligned based (area_infop), 8 8 2 version fixed bin, /* version number for this structure is 1 */ 8 9 2 control aligned like area_control, /* control bits for the area */ 8 10 2 owner char (32) unal, /* creator of the area */ 8 11 2 n_components fixed bin, /* number of components in the area (returned only) */ 8 12 2 size fixed bin (18), /* size of the area in words */ 8 13 2 version_of_area fixed bin, /* version of area (returned only) */ 8 14 2 areap ptr, /* pointer to the area (first component on multisegment area) */ 8 15 2 allocated_blocks fixed bin, /* number of blocks allocated */ 8 16 2 free_blocks fixed bin, /* number of free blocks not in virgin */ 8 17 2 allocated_words fixed bin (30), /* number of words allocated in the area */ 8 18 2 free_words fixed bin (30); /* number of words free in area not in virgin */ 8 19 8 20 dcl 1 area_control aligned based, 8 21 2 extend bit (1) unal, /* says area is extensible */ 8 22 2 zero_on_alloc bit (1) unal, /* says block gets zerod at allocation time */ 8 23 2 zero_on_free bit (1) unal, /* says block gets zerod at free time */ 8 24 2 dont_free bit (1) unal, /* debugging aid, turns off free requests */ 8 25 2 no_freeing bit (1) unal, /* for allocation method without freeing */ 8 26 2 system bit (1) unal, /* says area is managed by system */ 8 27 2 pad bit (30) unal; 8 28 8 29 /* END INCLUDE FILE area_info.incl.pl1 */ 509 510 511 end; /* probe_subsys_util_ external procedure */ SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/27/88 1225.2 probe_subsys_util_.pl1 >spec>install>MR12.2-1194>probe_subsys_util_.pl1 481 1 10/27/88 1223.7 probe_info.incl.pl1 >spec>install>MR12.2-1194>probe_info.incl.pl1 485 2 11/12/82 1624.3 probe_static_info.incl.pl1 >ldd>include>probe_static_info.incl.pl1 489 3 12/04/84 2012.2 probe_modes.incl.pl1 >ldd>include>probe_modes.incl.pl1 493 4 11/26/79 1320.6 probe_source_info.incl.pl1 >ldd>include>probe_source_info.incl.pl1 497 5 11/02/83 1845.0 probe_seg_info.incl.pl1 >ldd>include>probe_seg_info.incl.pl1 501 6 11/26/79 1320.9 probe_info_constants.incl.pl1 >ldd>include>probe_info_constants.incl.pl1 505 7 10/26/88 1255.5 probe_lang_types.incl.pl1 >ldd>include>probe_lang_types.incl.pl1 509 8 06/11/76 1043.4 area_info.incl.pl1 >ldd>include>area_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. OTHER_lang_type constant fixed bin(17,0) initial dcl 7-17 ref 453 P_code parameter fixed bin(35,0) dcl 37 set ref 91 104* 144* P_invocation_ptr parameter pointer dcl 37 set ref 91 111* 142* 151 156 170 P_version parameter fixed bin(17,0) dcl 37 ref 91 102 abort_line_label 226 based label variable level 3 dcl 1-18 set ref 263* abort_probe_label 222 based label variable level 3 dcl 1-18 set ref 262* addr builtin function dcl 86 ref 325 325 398 403 414 425 area_control based structure level 1 dcl 8-20 area_info based structure level 1 dcl 8-7 area_info_version_1 constant fixed bin(17,0) initial dcl 8-3 ref 307 areap 16 000132 automatic pointer level 2 dcl 294 set ref 323* array_max_size 73 based fixed bin(17,0) level 3 in structure "probe_static_info" dcl 2-8 in procedure "probe_subsys_util_" set ref 419* array_max_size 101 based fixed bin(17,0) level 3 in structure "probe_static_info" dcl 2-8 in procedure "probe_subsys_util_" set ref 428* array_max_size 57 based fixed bin(17,0) level 3 in structure "probe_static_info" dcl 2-8 in procedure "probe_subsys_util_" set ref 408* array_ptr 54 based pointer level 3 in structure "probe_static_info" dcl 2-8 in procedure "probe_subsys_util_" set ref 403* array_ptr 76 based pointer level 3 in structure "probe_static_info" dcl 2-8 in procedure "probe_subsys_util_" set ref 425* array_ptr 70 based pointer level 3 in structure "probe_static_info" dcl 2-8 in procedure "probe_subsys_util_" set ref 414* array_size 72 based fixed bin(17,0) level 3 in structure "probe_static_info" dcl 2-8 in procedure "probe_subsys_util_" set ref 417* array_size 100 based fixed bin(17,0) level 3 in structure "probe_static_info" dcl 2-8 in procedure "probe_subsys_util_" set ref 427* array_size 56 based fixed bin(17,0) level 3 in structure "probe_static_info" dcl 2-8 in procedure "probe_subsys_util_" set ref 406* based_area based area(1024) dcl 48 ref 185 187 190 212 215 218 350 435 441 451 baseno builtin function dcl 86 ref 379 bits 1 based structure level 2 dcl 5-9 set ref 455* block_ptr 4 based pointer level 2 in structure "initial_source" dcl 4-14 in procedure "probe_subsys_util_" set ref 279* block_ptr 4 based pointer level 2 in structure "current_source" dcl 4-13 in procedure "probe_subsys_util_" set ref 272* bounds 104 based structure level 2 dcl 5-9 set ref 463* break_area_ptr 57 based pointer level 3 packed packed unaligned dcl 1-18 set ref 246* break_info 50 based structure level 2 dcl 1-18 break_reset 53 based bit(1) level 3 dcl 1-18 set ref 242* break_segment_ptr 56 based pointer level 3 in structure "probe_info" packed packed unaligned dcl 1-18 in procedure "probe_subsys_util_" set ref 245* break_segment_ptr 42 based pointer level 2 in structure "probe_static_info" dcl 2-8 in procedure "probe_subsys_util_" set ref 245 371* break_slot_ptr 50 based pointer level 3 dcl 1-18 set ref 240* buffer_lth 16 based fixed bin(21,0) level 3 dcl 1-18 set ref 232* buffer_ptr 15 based pointer level 3 packed packed unaligned dcl 1-18 set ref 231* code 000100 automatic fixed bin(35,0) dcl 43 set ref 108* 122 144 297* 325* 326 371* 373 codeptr builtin function dcl 86 ref 379 com_err_ 000010 constant entry external dcl 50 ref 197 control 1 000132 automatic structure level 2 dcl 294 set ref 310* copy builtin function dcl 86 ref 353 count based fixed bin(17,0) level 2 dcl 2-82 set ref 435* 437* ct 13 based pointer level 3 packed packed unaligned dcl 1-18 set ref 229* cu_$cl 000012 constant entry external dcl 51 ref 201 current_source based structure level 1 dcl 4-13 set ref 185 215 current_stack_frame 17 based pointer level 3 packed packed unaligned dcl 1-18 set ref 234* define_area_ 000014 constant entry external dcl 52 ref 325 depth 232 based fixed bin(17,0) level 3 dcl 1-18 set ref 133* 133 137* 264* directory_name 2 based char(168) level 3 packed packed unaligned dcl 5-9 set ref 456* dont_free 1(03) 000132 automatic bit(1) level 3 packed packed unaligned dcl 294 set ref 315* end_token 14 based bit(18) level 3 dcl 1-18 set ref 230* entry_method 23 based fixed bin(17,0) level 3 dcl 1-18 set ref 238* entry_name 54 based char(32) level 3 packed packed unaligned dcl 5-9 set ref 457* entry_ptr 10 based pointer level 2 in structure "current_source" dcl 4-13 in procedure "probe_subsys_util_" set ref 271* entry_ptr 10 based pointer level 2 in structure "initial_source" dcl 4-14 in procedure "probe_subsys_util_" set ref 278* error_code 111 based fixed bin(35,0) level 2 in structure "seg_info" dcl 5-9 in procedure "probe_subsys_util_" set ref 465* error_code 72 based fixed bin(35,0) level 3 in structure "probe_info" dcl 1-18 in procedure "probe_subsys_util_" set ref 258* error_info 72 based structure level 2 dcl 1-18 error_message 73 based varying char(300) level 3 dcl 1-18 set ref 259* error_table_$unimplemented_version 000054 external static fixed bin(35,0) dcl 80 ref 104 exclude_name_array 326 based char(32) array level 3 packed packed unaligned dcl 2-8 set ref 393* 425 428 exclude_name_info 76 based structure level 2 dcl 2-8 execute 64 based bit(1) level 3 packed packed unaligned dcl 1-18 set ref 253* expression_area_ptr 63 based pointer level 3 packed packed unaligned dcl 1-18 set ref 250* extend 1 000132 automatic bit(1) level 3 packed packed unaligned dcl 294 set ref 312* file_pointers 117 based pointer array level 3 packed packed unaligned dcl 5-9 set ref 468* first_token 12 based pointer level 3 packed packed unaligned dcl 1-18 set ref 228* flags 64 based structure level 2 in structure "probe_info" dcl 1-18 in procedure "probe_subsys_util_" set ref 252* flags 52 based structure level 3 in structure "probe_static_info" dcl 2-8 in procedure "probe_subsys_util_" get_temp_segment_ 000016 constant entry external dcl 53 ref 297 hbound builtin function dcl 86 ref 408 419 428 hcs_$truncate_seg 000020 constant entry external dcl 54 ref 302 identifier 74 based fixed bin(71,0) level 2 dcl 5-9 set ref 459* info_directory_info 70 based structure level 2 dcl 2-8 info_directory_name_array 130 based char(168) array level 3 packed packed unaligned dcl 2-8 set ref 391* 400* 414 419 initial_arrays 104 based structure level 2 dcl 2-8 initial_source based structure level 1 dcl 4-14 set ref 187 218 input_switch 66 based pointer level 3 in structure "probe_info" dcl 1-18 in procedure "probe_subsys_util_" set ref 255* input_switch 62 based pointer level 3 in structure "probe_static_info" dcl 2-8 in procedure "probe_subsys_util_" set ref 255 395* input_type 20 based fixed bin(17,0) level 3 dcl 1-18 set ref 235* instruction_ptr 2 based pointer level 2 in structure "initial_source" dcl 4-14 in procedure "probe_subsys_util_" set ref 276* instruction_ptr 2 based pointer level 2 in structure "current_source" dcl 4-13 in procedure "probe_subsys_util_" set ref 269* io_switches 66 based structure level 2 in structure "probe_info" dcl 1-18 in procedure "probe_subsys_util_" io_switches 62 based structure level 2 in structure "probe_static_info" dcl 2-8 in procedure "probe_subsys_util_" iox_$user_input 000030 external static pointer dcl 59 ref 395 iox_$user_output 000026 external static pointer dcl 58 ref 396 language_type based fixed bin(17,0) level 2 in structure "seg_info" dcl 5-9 in procedure "probe_subsys_util_" set ref 453* language_type 21 based fixed bin(17,0) level 3 in structure "probe_info" dcl 1-18 in procedure "probe_subsys_util_" set ref 236* last_break_segno 47 based bit(18) level 2 dcl 2-8 set ref 382* last_break_slot_ptr 52 based pointer level 3 packed packed unaligned dcl 1-18 set ref 241* level_chain 50 based pointer level 3 packed packed unaligned dcl 2-8 set ref 387* listener_info 210 based structure level 2 dcl 1-18 machine_cond_ptr 10 based pointer level 2 dcl 1-18 set ref 226* major_version 1 based fixed bin(17,0) level 3 dcl 2-8 set ref 359* map_size 110 based fixed bin(17,0) level 2 dcl 5-9 set ref 464* max_level 51 based fixed bin(17,0) level 3 dcl 2-8 set ref 386* minor_version 2 based fixed bin(17,0) level 3 dcl 2-8 set ref 361* modes_ptr 53 based pointer level 2 in structure "probe_static_info" packed packed unaligned dcl 2-8 in procedure "probe_subsys_util_" set ref 224 447* modes_ptr 2 based pointer level 2 in structure "probe_info" packed packed unaligned dcl 1-18 in procedure "probe_subsys_util_" set ref 224* name 13 based char(32) level 2 packed packed unaligned dcl 2-8 set ref 366* names 2 based structure level 2 dcl 5-9 next 234 based pointer level 3 packed packed unaligned dcl 1-18 set ref 129* 135* 175* 175 180 180 266* nfiles 116 based fixed bin(17,0) level 2 dcl 5-9 set ref 451* 467* no_freeing 1(04) 000132 automatic bit(1) level 3 packed packed unaligned dcl 294 set ref 316* null builtin function dcl 86 ref 111 113 129 131 161 163 165 167 175 180 226 228 229 231 234 240 241 243 246 248 249 250 265 266 269 270 271 272 273 276 277 278 279 280 298 387 389 461 468 null_seg_info_ptr 103 based pointer level 2 packed packed unaligned dcl 2-8 set ref 470* old_invocation_ptr 000102 automatic pointer dcl 44 set ref 109* 127 131 133 135 157* 167 output_switch 64 based pointer level 3 in structure "probe_static_info" dcl 2-8 in procedure "probe_subsys_util_" set ref 256 396* output_switch 70 based pointer level 3 in structure "probe_info" dcl 1-18 in procedure "probe_subsys_util_" set ref 256* owner 2 000132 automatic char(32) level 2 packed packed unaligned dcl 294 set ref 319* pad 115 based fixed bin(35,0) array level 2 dcl 5-9 set ref 466* per_file 117 based structure array level 2 dcl 5-9 pointers 76 based structure level 2 dcl 5-9 set ref 461* previous 233 based pointer level 3 packed packed unaligned dcl 1-18 set ref 127* 170 175 175 180* 180 265* probe_area_info 56 based structure level 2 dcl 1-18 probe_area_ptr 61 based pointer level 3 packed packed unaligned dcl 1-18 set ref 248* probe_data_$info_directory 000042 external static char(168) dcl 68 ref 400 probe_data_$invocation_list_ptr 000046 external static pointer dcl 73 set ref 109 140* 157 170 170* probe_data_$major_version 000034 external static fixed bin(17,0) dcl 62 ref 359 probe_data_$minor_version 000036 external static fixed bin(17,0) dcl 64 ref 361 probe_data_$probe_scratch_ptr 000052 external static pointer dcl 77 set ref 120 158 247 329* probe_data_$probe_static_info_ptr 000050 external static pointer dcl 75 set ref 110 159 223 473* probe_data_$prompt_string 000044 external static varying char(32) dcl 70 ref 367 probe_data_$version_string 000040 external static char(32) dcl 66 ref 363 probe_info based structure level 1 dcl 1-18 set ref 190 212 probe_info_ptr 000110 automatic pointer dcl 1-86 set ref 127 129 133 135 137 140 142 156* 161 170 175 175 175 180 180 180 185 187 190 212* 215 218 221 223 224 224 226 228 229 230 231 232 234 235 236 237 238 240 241 242 243 245 245 246 247 248 249 250 252 253 255 255 256 256 258 259 261 262 263 264 265 266 268 269 270 271 272 273 275 276 277 278 279 280 353 408 419 428 probe_info_version based fixed bin(17,0) level 2 in structure "probe_static_info" dcl 2-8 in procedure "probe_subsys_util_" set ref 356* probe_info_version based fixed bin(17,0) level 2 in structure "probe_info" dcl 1-18 in procedure "probe_subsys_util_" set ref 221* probe_info_version_1 constant fixed bin(17,0) initial dcl 1-90 ref 102 221 356 probe_modes based structure level 1 dcl 3-14 ref 441 probe_modes_mgr_$init 000022 constant entry external dcl 55 ref 444 probe_modes_ptr 000164 automatic pointer packed unaligned dcl 345 set ref 441* 444 447 probe_request_table_$ 000032 external static fixed bin(17,0) dcl 61 set ref 398 probe_scratch_ptr 000104 automatic pointer dcl 45 set ref 120* 158* 165 185 187 190 212 215 218 297* 298 302* 323 329 350 376 435 441 451 probe_seg_info_array based structure level 1 dcl 2-82 set ref 435 probe_seg_mgr_$get_breakseg_ptr 000056 constant entry external dcl 347 ref 371 probe_segno 46 based bit(18) level 2 dcl 2-8 set ref 379* probe_static_info based structure level 1 dcl 2-8 set ref 350 353* 353 probe_static_info_ptr 000106 automatic pointer dcl 46 set ref 110* 113 159* 163 350* 353 356 359 361 363 366 367 369 371 376 379 382 384 386 387 389 391 393 395 396 398 400 403 403 406 408 411 414 414 417 419 422 425 425 427 428 431 435 437 447 470 473 prompt 23 based varying char(40) level 2 dcl 2-8 set ref 367* ptr_to_current_source 4 based pointer level 2 dcl 1-18 set ref 185 215* 268 269 270 271 272 273 ptr_to_initial_source 6 based pointer level 2 dcl 1-18 set ref 187 218* 275 276 277 278 279 280 random_info 17 based structure level 2 dcl 1-18 real_break_return_loc 54 based pointer level 3 dcl 1-18 set ref 243* request_name 210 based varying char(32) level 3 dcl 1-18 set ref 261* request_table_info 54 based structure level 2 dcl 2-8 request_table_ptr_array 104 based pointer array level 3 dcl 2-8 set ref 389* 398* 403 408 return_method 22 based fixed bin(17,0) level 3 dcl 1-18 set ref 237* scratch_area_info 000132 automatic structure level 1 dcl 294 set ref 305* 325 325 scratch_area_ptr 60 based pointer level 3 packed packed unaligned dcl 1-18 set ref 247* scratch_segment_ptr 40 based pointer level 2 dcl 2-8 set ref 376* seg_info based structure level 1 dcl 5-9 set ref 451 seg_info_nfiles 000113 automatic fixed bin(17,0) dcl 5-47 set ref 450* 451 451 seg_info_offset_count 000112 automatic fixed bin(17,0) dcl 2-86 set ref 434* 435 435 437 seg_info_offset_ptr 44 based pointer level 2 dcl 2-8 set ref 435* 437 seg_info_ptr 000165 automatic pointer packed unaligned dcl 346 in procedure "create_probe_static_info" set ref 451* 453 455 456 457 458 459 461 463 464 465 466 467 468 470 seg_info_ptr 12 based pointer level 2 in structure "initial_source" dcl 4-14 in procedure "probe_subsys_util_" set ref 280* seg_info_ptr 12 based pointer level 2 in structure "current_source" dcl 4-13 in procedure "probe_subsys_util_" set ref 273* segname 64 based char(32) level 3 packed packed unaligned dcl 5-9 set ref 458* size builtin function dcl 86 in procedure "probe_subsys_util_" ref 353 size 13 000132 automatic fixed bin(18,0) level 2 in structure "scratch_area_info" dcl 294 in procedure "create_probe_scratch" set ref 320* source_info based structure level 1 dcl 4-5 stack_info 50 based structure level 2 dcl 2-8 stack_ptr 6 based pointer level 2 in structure "current_source" dcl 4-13 in procedure "probe_subsys_util_" set ref 270* stack_ptr 6 based pointer level 2 in structure "initial_source" dcl 4-14 in procedure "probe_subsys_util_" set ref 277* static_info_ptr 1 based pointer level 2 packed packed unaligned dcl 1-18 set ref 223* 224 245 255 256 353 408 419 428 stmnt_map_entry_index based fixed bin(17,0) level 2 in structure "initial_source" dcl 4-14 in procedure "probe_subsys_util_" set ref 275* stmnt_map_entry_index based fixed bin(17,0) level 2 in structure "current_source" dcl 4-13 in procedure "probe_subsys_util_" set ref 268* string builtin function dcl 86 set ref 252* 310* 455* switches 36 based structure level 2 dcl 2-8 set ref 369* sys_info$max_seg_size 000024 external static fixed bin(18,0) dcl 57 ref 320 system 1(05) 000132 automatic bit(1) level 3 packed packed unaligned dcl 294 set ref 317* token_info 12 based structure level 2 dcl 1-18 traced_with_all 52(01) based bit(1) level 4 packed packed unaligned dcl 2-8 set ref 384* unspec builtin function dcl 86 set ref 305* 353* 369* using_internal_array 102 based bit(1) level 3 in structure "probe_static_info" dcl 2-8 in procedure "probe_subsys_util_" set ref 431* using_internal_array 74 based bit(1) level 3 in structure "probe_static_info" dcl 2-8 in procedure "probe_subsys_util_" set ref 422* using_internal_array 60 based bit(1) level 3 in structure "probe_static_info" dcl 2-8 in procedure "probe_subsys_util_" set ref 411* version 1 based structure level 2 in structure "probe_static_info" dcl 2-8 in procedure "probe_subsys_util_" version 000132 automatic fixed bin(17,0) level 2 in structure "scratch_area_info" dcl 294 in procedure "create_probe_scratch" set ref 307* version_string 3 based char(32) level 3 packed packed unaligned dcl 2-8 set ref 363* work_area_ptr 62 based pointer level 3 packed packed unaligned dcl 1-18 set ref 249* zero_on_alloc 1(01) 000132 automatic bit(1) level 3 packed packed unaligned dcl 294 set ref 313* zero_on_free 1(02) 000132 automatic bit(1) level 3 packed packed unaligned dcl 294 set ref 314* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ALGOL68_lang_type internal static fixed bin(17,0) initial dcl 7-17 ALM_lang_type internal static fixed bin(17,0) initial dcl 7-17 BREAK_INPUT internal static fixed bin(17,0) initial dcl 6-13 BRIEF_mode_type internal static fixed bin(17,0) initial dcl 3-35 COBOL_lang_type internal static fixed bin(17,0) initial dcl 7-17 CONSOLE_INPUT internal static fixed bin(17,0) initial dcl 6-13 C_lang_type internal static fixed bin(17,0) initial dcl 7-17 ENTRY_AT_BREAK internal static fixed bin(17,0) initial dcl 6-9 ENTRY_AT_CALL internal static fixed bin(17,0) initial dcl 6-9 ENTRY_AT_HALT internal static fixed bin(17,0) initial dcl 6-9 FORTRAN_lang_type internal static fixed bin(17,0) initial dcl 7-17 LONG_mode_type internal static fixed bin(17,0) initial dcl 3-35 MACRO_INPUT internal static fixed bin(17,0) initial dcl 6-13 PASCAL_lang_type internal static fixed bin(17,0) initial dcl 7-17 PL1_lang_type internal static fixed bin(17,0) initial dcl 7-17 RETURN_TO_BREAK internal static fixed bin(17,0) initial dcl 6-4 RETURN_TO_CALLER internal static fixed bin(17,0) initial dcl 6-4 RETURN_TO_CONDITION internal static fixed bin(17,0) initial dcl 6-4 RETURN_TO_FRAME internal static fixed bin(17,0) initial dcl 6-4 RW_MODE internal static fixed bin(5,0) initial dcl 83 SHORT_mode_type internal static fixed bin(17,0) initial dcl 3-35 UNKNOWN_lang_type internal static fixed bin(17,0) initial dcl 7-17 area_infop automatic pointer dcl 8-5 expression_area based area(1024) dcl 1-95 official_language_names internal static char(32) initial array packed unaligned dcl 7-27 palatable_language_names internal static char(32) initial array packed unaligned dcl 7-30 probe_area based area(1024) dcl 1-93 probe_exclude_names based char(168) array packed unaligned dcl 2-94 probe_info_directories based char(168) array packed unaligned dcl 2-91 probe_info_version internal static fixed bin(17,0) initial dcl 1-88 probe_request_tables based pointer array dcl 2-88 scratch_area based area(1024) dcl 1-92 work_area based area(1024) dcl 1-94 NAMES DECLARED BY EXPLICIT CONTEXT. INITIALIZATION_ERROR 000201 constant label dcl 144 ref 122 298 326 NULL_LABEL 000311 constant label dcl 197 ref 203 262 263 create_probe_info 000352 constant entry internal dcl 207 ref 125 create_probe_scratch 000533 constant entry internal dcl 287 ref 116 create_probe_static_info 000654 constant entry internal dcl 337 ref 118 probe_subsys_util_ 000076 constant entry external dcl 25 ref 379 probe_subsys_util_$create_invocation 000110 constant entry external dcl 91 probe_subsys_util_$destroy_invocation 000210 constant entry external dcl 151 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1600 1660 1232 1610 Length 2256 1232 60 361 346 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME probe_subsys_util_ 186 external procedure is an external procedure. create_probe_info internal procedure shares stack frame of external procedure probe_subsys_util_. create_probe_scratch internal procedure shares stack frame of external procedure probe_subsys_util_. create_probe_static_info internal procedure shares stack frame of external procedure probe_subsys_util_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME probe_subsys_util_ 000100 code probe_subsys_util_ 000102 old_invocation_ptr probe_subsys_util_ 000104 probe_scratch_ptr probe_subsys_util_ 000106 probe_static_info_ptr probe_subsys_util_ 000110 probe_info_ptr probe_subsys_util_ 000112 seg_info_offset_count probe_subsys_util_ 000113 seg_info_nfiles probe_subsys_util_ 000132 scratch_area_info create_probe_scratch 000164 probe_modes_ptr create_probe_static_info 000165 seg_info_ptr create_probe_static_info THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac shorten_stack ext_entry repeat set_bits_eis op_alloc_ op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cu_$cl define_area_ get_temp_segment_ hcs_$truncate_seg probe_modes_mgr_$init probe_seg_mgr_$get_breakseg_ptr THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$unimplemented_version iox_$user_input iox_$user_output probe_data_$info_directory probe_data_$invocation_list_ptr probe_data_$major_version probe_data_$minor_version probe_data_$probe_scratch_ptr probe_data_$probe_static_info_ptr probe_data_$prompt_string probe_data_$version_string probe_request_table_$ sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 25 000075 28 000103 91 000104 102 000120 104 000124 105 000127 108 000130 109 000131 110 000135 111 000140 113 000142 116 000145 118 000146 119 000147 120 000150 122 000153 125 000155 127 000156 129 000161 131 000163 133 000167 135 000172 136 000173 137 000174 140 000176 142 000200 144 000201 147 000204 151 000205 156 000220 157 000223 158 000227 159 000232 161 000235 163 000241 165 000245 167 000251 170 000255 175 000264 180 000273 185 000301 187 000303 190 000306 193 000310 197 000311 201 000340 203 000351 207 000352 212 000353 215 000360 218 000366 221 000374 223 000376 224 000402 226 000405 228 000407 229 000411 230 000412 231 000413 232 000414 234 000415 235 000416 236 000417 237 000420 238 000421 240 000422 241 000424 242 000426 243 000427 245 000431 246 000434 247 000436 248 000441 249 000442 250 000443 252 000444 253 000445 255 000447 256 000452 258 000454 259 000455 261 000462 262 000466 263 000471 264 000474 265 000475 266 000477 268 000500 269 000502 270 000505 271 000507 272 000511 273 000513 275 000515 276 000517 277 000522 278 000524 279 000526 280 000530 282 000532 287 000533 297 000534 298 000561 302 000565 305 000602 307 000605 310 000607 312 000610 313 000612 314 000614 315 000616 316 000620 317 000622 319 000624 320 000627 323 000632 325 000634 326 000646 329 000650 332 000653 337 000654 350 000655 353 000662 356 000675 359 000700 361 000703 363 000705 366 000711 367 000714 369 000722 371 000723 373 000733 376 000736 379 000741 382 000745 384 000746 386 000750 387 000752 389 000754 391 000772 393 001007 395 001025 396 001032 398 001035 400 001037 403 001043 406 001045 408 001047 411 001051 414 001053 417 001055 419 001057 422 001061 425 001062 427 001064 428 001065 431 001067 434 001070 435 001072 441 001103 444 001110 447 001121 450 001124 451 001126 453 001140 455 001142 456 001143 457 001146 458 001151 459 001154 461 001156 463 001165 464 001171 465 001173 466 001175 467 001210 468 001213 470 001215 473 001220 476 001222 ----------------------------------------------------------- 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