COMPILATION LISTING OF SEGMENT probe_pretty_source_info_ Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 10/27/88 1238.6 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_pretty_source_info_: 26 proc (P_probe_info_ptr, P_sourcep, P_return_string); 27 28 dcl P_probe_info_ptr ptr parameter; 29 dcl P_sourcep ptr parameter; 30 /* to callers source_info */ 31 dcl P_return_string char (*); 32 33 /* given a source info, format and return a string describing it 34* if map_entry_index is valid and there is a statement map for the seg, give line number 35* otherwise give offset (use instruction_ptr) and warn user 36* show level number if there is one 37* 38* James R. Davis 2 July 79 39**/ 40 41 dcl sourcep ptr; /* copy of P_sourcep */ 42 dcl 1 caller_source aligned like source_info based (sourcep); 43 44 dcl level fixed bin;/* what level we are at */ 45 dcl blockname char (64);/* name of current block */ 46 dcl map_index fixed bin;/* index into statement map for source_info */ 47 dcl no_stmnts fixed bin;/* how many statements does proc have */ 48 dcl file fixed bin;/* file number of line */ 49 dcl line fixed bin;/* line number */ 50 dcl stmt fixed bin;/* statement number */ 51 dcl map_ptr ptr; /* to the statement map for proc */ 52 53 dcl 1 map_entry_array (no_stmnts) based (map_ptr) like statement_map; 54 55 dcl probe_stack_trace_$where_source_info 56 entry (ptr, ptr, fixed bin, char (*)); 57 58 dcl ioa_$rsnnl entry options (variable); 59 dcl (binary, fixed, null, rel) 60 builtin; 61 /* */ 62 63 probe_info_ptr = P_probe_info_ptr; 64 sourcep = P_sourcep; 65 66 call probe_stack_trace_$where_source_info (probe_info_ptr, sourcep, level, 67 blockname); 68 69 map_index = caller_source.stmnt_map_entry_index; 70 map_ptr = caller_source.seg_info_ptr -> seg_info.statement_map_ptr; 71 no_stmnts = caller_source.seg_info_ptr -> seg_info.map_size; 72 73 if map_ptr ^= null () & map_index > 0 & map_index <= no_stmnts then do; 74 file = fixed (map_entry_array (map_index).file, 8); 75 line = fixed (map_entry_array (map_index).line, 14); 76 stmt = fixed (map_entry_array (map_index).statement, 5); 77 78 call ioa_$rsnnl ( 79 "line ^[^d-^;^s^]^d^[,^d^;^s^] in ^a ^[(level ^d)^;^s(no active frame)^]", 80 P_return_string, (0), 81 (file > 0), file, 82 line, 83 (stmt > 1), stmt, 84 blockname, 85 (level >= 0), level); 86 end; 87 else do; 88 call ioa_$rsnnl ( 89 " ^a|^o ^[(level ^d)^;^s(no active frame)^] - ^[map missing^;offset invalid^]", 90 P_return_string, (0), 91 blockname, binary (rel (caller_source.instruction_ptr), 18), 92 (level >= 0), level, 93 map_ptr = null ()); 94 end; 95 return; 96 97 /* */ 98 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 */ 99 100 101 /* ;;;;;;; */ 102 2 1 /* BEGIN INCLUDE FILE ... probe_seg_info.incl.pl1 2 2* 2 3* 25 June 79 JRDavis 2 4* 2 5* Modified 7 April 1983, TO - Add fields for character offset/line 2 6* correction per file. 2 7**/ 2 8 2 9 dcl 1 seg_info based aligned, /* place to remember information about object seg */ 2 10 2 language_type fixed bin, /* language of source program */ 2 11 2 bits aligned, 2 12 3 ignore_case bit (1) unal, 2 13 3 bound_segment bit (1) unaligned, 2 14 3 component bit (1) unaligned, 2 15 3 pad bit (33) unal, 2 16 2 names, /* where to find it */ 2 17 3 directory_name character (168) unal, /* what directory */ 2 18 3 entry_name character (32) unal, /* what segment */ 2 19 3 segname character (32) unal, /* procedure segname definition */ 2 20 2 identifier fixed bin (71), /* time of object creation */ 2 21 2 pointers, /* location of various parts of segment */ 2 22 3 symbol_header_ptr ptr unal, /* to symbol section */ 2 23 3 original_source_ptr ptr unal, /* to segment source map */ 2 24 3 statement_map_ptr ptr unal, /* to segment statement map */ 2 25 3 break_info ptr unal, /* for unbound segments, and start of chain for 2 26* bound ones, -> break_map !obsolete, I think! */ 2 27 3 chain ptr unal, /* to entry for next component if bound */ 2 28 3 linkage_ptr ptr unal, /* to linkage section */ 2 29 2 bounds aligned, /* structure of bounds information */ 2 30 3 text_bounds, 2 31 4 start fixed bin (35), 2 32 4 end fixed bin (35), 2 33 3 symbol_bounds, 2 34 4 start fixed bin (35), 2 35 4 end fixed bin (35), 2 36 2 map_size fixed bin, /* size of statement map */ 2 37 2 error_code fixed bin (35), /* errors encoutered while getting info, are recorded here */ 2 38 2 bound_create_time fixed bin (71), /* time seg containing was bound or compiled. */ 2 39 2 bound_sym_header ptr unal, /* to sym. section header for bound seg */ 2 40 2 pad (1) fixed bin (35), 2 41 2 42 2 nfiles fixed bin, 2 43 2 per_file (seg_info_nfiles refer (seg_info.nfiles)), 2 44 3 file_pointers ptr unal, 2 45 3 break_line (0:3) fixed bin (18) unsigned unaligned; 2 46 2 47 dcl seg_info_nfiles fixed bin; /* for allocation purposes */ 2 48 2 49 2 50 /* END INCLUDE FILE ... probe_seg_info.incl.pl1 */ 103 104 105 /* ;;;;;;; */ 106 3 1 /* BEGIN INCLUDE FILE ... probe_source_info.incl.pl1 3 2* 3 3* James R. Davis 2 July 79 */ 3 4 3 5 dcl 1 source_info based aligned, 3 6 2 stmnt_map_entry_index fixed bin, /* index in stmnt map for this stmnt */ 3 7 2 instruction_ptr ptr, /* to last instruction executed */ 3 8 2 block_ptr ptr, /* to runtime_block node */ 3 9 2 stack_ptr ptr, /* to a stack frame */ 3 10 2 entry_ptr ptr, /* to entry seq. for this proc */ 3 11 2 seg_info_ptr ptr; /* to seg_info */ 3 12 3 13 dcl 1 current_source aligned like source_info based (probe_info.ptr_to_current_source); 3 14 dcl 1 initial_source aligned like source_info based (probe_info.ptr_to_initial_source); 3 15 3 16 /* END INCLUDE FILE ... probe_source_info.incl.pl1 */ 107 108 109 /* ;;;;;;; */ 110 4 1 dcl 1 statement_map aligned based, 4 2 2 location bit(18) unaligned, 4 3 2 source_id unaligned, 4 4 3 file bit(8), 4 5 3 line bit(14), 4 6 3 statement bit(5), 4 7 2 source_info unaligned, 4 8 3 start bit(18), 4 9 3 length bit(9); 111 112 113 end probe_pretty_source_info_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/27/88 1224.5 probe_pretty_source_info_.pl1 >spec>install>MR12.2-1194>probe_pretty_source_info_.pl1 99 1 10/27/88 1223.7 probe_info.incl.pl1 >spec>install>MR12.2-1194>probe_info.incl.pl1 103 2 11/02/83 1845.0 probe_seg_info.incl.pl1 >ldd>include>probe_seg_info.incl.pl1 107 3 11/26/79 1320.6 probe_source_info.incl.pl1 >ldd>include>probe_source_info.incl.pl1 111 4 05/06/74 1751.6 statement_map.incl.pl1 >ldd>include>statement_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. P_probe_info_ptr parameter pointer dcl 28 ref 25 63 P_return_string parameter char packed unaligned dcl 31 set ref 25 78* 88* P_sourcep parameter pointer dcl 29 ref 25 64 binary builtin function dcl 59 ref 88 88 blockname 000103 automatic char(64) packed unaligned dcl 45 set ref 66* 78* 88* caller_source based structure level 1 dcl 42 file 0(18) based bit(8) array level 3 in structure "map_entry_array" packed packed unaligned dcl 53 in procedure "probe_pretty_source_info_" ref 74 file 000125 automatic fixed bin(17,0) dcl 48 in procedure "probe_pretty_source_info_" set ref 74* 78 78* fixed builtin function dcl 59 ref 74 75 76 instruction_ptr 2 based pointer level 2 dcl 42 ref 88 88 ioa_$rsnnl 000012 constant entry external dcl 58 ref 78 88 level 000102 automatic fixed bin(17,0) dcl 44 set ref 66* 78 78* 88 88* line 0(26) based bit(14) array level 3 in structure "map_entry_array" packed packed unaligned dcl 53 in procedure "probe_pretty_source_info_" ref 75 line 000126 automatic fixed bin(17,0) dcl 49 in procedure "probe_pretty_source_info_" set ref 75* 78* map_entry_array based structure array level 1 packed packed unaligned dcl 53 map_index 000123 automatic fixed bin(17,0) dcl 46 set ref 69* 73 73 74 75 76 map_ptr 000130 automatic pointer dcl 51 set ref 70* 73 74 75 76 88 map_size 110 based fixed bin(17,0) level 2 dcl 2-9 ref 71 no_stmnts 000124 automatic fixed bin(17,0) dcl 47 set ref 71* 73 null builtin function dcl 59 ref 73 88 pointers 76 based structure level 2 dcl 2-9 probe_info_ptr 000132 automatic pointer dcl 1-86 set ref 63* 66* probe_stack_trace_$where_source_info 000010 constant entry external dcl 55 ref 66 rel builtin function dcl 59 ref 88 88 seg_info based structure level 1 dcl 2-9 seg_info_ptr 12 based pointer level 2 dcl 42 ref 70 71 source_id 0(18) based structure array level 2 packed packed unaligned dcl 53 source_info based structure level 1 dcl 3-5 sourcep 000100 automatic pointer dcl 41 set ref 64* 66* 69 70 71 88 88 statement 1(04) based bit(5) array level 3 packed packed unaligned dcl 53 ref 76 statement_map based structure level 1 dcl 4-1 statement_map_ptr 100 based pointer level 3 packed packed unaligned dcl 2-9 ref 70 stmnt_map_entry_index based fixed bin(17,0) level 2 dcl 42 ref 69 stmt 000127 automatic fixed bin(17,0) dcl 50 set ref 76* 78 78* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. current_source based structure level 1 dcl 3-13 expression_area based area(1024) dcl 1-95 initial_source based structure level 1 dcl 3-14 probe_area based area(1024) dcl 1-93 probe_info based structure level 1 dcl 1-18 probe_info_version internal static fixed bin(17,0) initial dcl 1-88 probe_info_version_1 internal static fixed bin(17,0) initial dcl 1-90 scratch_area based area(1024) dcl 1-92 seg_info_nfiles automatic fixed bin(17,0) dcl 2-47 work_area based area(1024) dcl 1-94 NAME DECLARED BY EXPLICIT CONTEXT. probe_pretty_source_info_ 000066 constant entry external dcl 25 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 442 456 365 452 Length 722 365 14 230 54 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME probe_pretty_source_info_ 196 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME probe_pretty_source_info_ 000100 sourcep probe_pretty_source_info_ 000102 level probe_pretty_source_info_ 000103 blockname probe_pretty_source_info_ 000123 map_index probe_pretty_source_info_ 000124 no_stmnts probe_pretty_source_info_ 000125 file probe_pretty_source_info_ 000126 line probe_pretty_source_info_ 000127 stmt probe_pretty_source_info_ 000130 map_ptr probe_pretty_source_info_ 000132 probe_info_ptr probe_pretty_source_info_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_g_a r_e_as r_ge_a call_ext_out_desc return_mac ext_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. ioa_$rsnnl probe_stack_trace_$where_source_info NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 25 000062 63 000101 64 000105 66 000110 69 000133 70 000135 71 000141 73 000143 74 000153 75 000164 76 000173 78 000202 86 000276 88 000277 95 000364 ----------------------------------------------------------- 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