COMPILATION LISTING OF SEGMENT probe_line_number_ Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 10/24/88 1546.9 mst Mon 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_line_number_: 26 proc (P_probe_info_ptr, P_statement_entry) returns (char (64)); 27 28 /* * This routine is used to format a line number (including file and statement numbers) for output. 29* * It takes as an argument a pointer to the statement map entry for the line desired. 30* * 31* * Initial Version: 12 August 1974 by Jeffrey M. Broughton 32* * Converted to probe 4.0 05/27/79 W. Olin Sibert 33* */ 34 35 dcl P_probe_info_ptr pointer parameter; 36 37 dcl (addr, fixed, null, substr) 38 builtin; 39 40 dcl 1 P_statement_entry aligned like source_info; 41 /* statement to be printed */ 42 43 dcl probe_info_ptr pointer; /* to avoid including the whole mess */ 44 45 dcl statement_map_ptr pointer; /* pointer to entry for this line */ 46 dcl name_wanted bit (1); /* tells whether name is wanted */ 47 dcl j fixed bin;/* tells which format to use */ 48 dcl i fixed bin; 49 dcl (f, l, s) fixed bin;/* file, line, and statement numbers */ 50 51 dcl proc_name character (32); 52 /* procedure segname, we hope */ 53 dcl string char (64);/* return string */ 54 55 dcl 1 map_array (1) based aligned like statement_map; 56 57 dcl ioa_$rsnnl entry options (variable); 58 59 dcl format (0:3) char (32) varying internal static 60 options (constant) 61 init /* formats to use when building number */ 62 ("line ^d", 63 "line ^d,^d", 64 "line ^d-^d", 65 "line ^d-^d,^d"); 66 /* */ 67 name_wanted = "0"b; 68 goto COMMON; 69 70 71 probe_line_number_$proc: 72 entry (P_probe_info_ptr, P_statement_entry) returns (character (64)); 73 name_wanted = "1"b; 74 go to COMMON; 75 76 77 COMMON: 78 probe_info_ptr = P_probe_info_ptr; 79 80 if P_statement_entry.seg_info_ptr = null () 81 then 82 return ("unknown line"); 83 84 statement_map_ptr = 85 P_statement_entry.seg_info_ptr -> seg_info.statement_map_ptr; 86 if statement_map_ptr = null () 87 then 88 return ("unknown line"); 89 90 statement_map_ptr = 91 addr (statement_map_ptr 92 -> map_array (P_statement_entry.stmnt_map_entry_index)); 93 94 f = fixed (statement_map_ptr -> statement_map.file, 17, 0); 95 /* unpack these numbers */ 96 l = fixed (statement_map_ptr -> statement_map.line, 17, 0); 97 s = fixed (statement_map_ptr -> statement_map.statement, 17, 0); 98 99 if s < 2 100 then j = 0; /* don't include statment number */ 101 else j = 1; 102 103 if f = 0 104 then /* don't include file number */ 105 call ioa_$rsnnl (format (j), string, i, l, s); 106 else call ioa_$rsnnl (format (j + 2), string, i, f, l, s); 107 108 if name_wanted then do; 109 proc_name = P_statement_entry.seg_info_ptr -> seg_info.segname; 110 if proc_name = "" then do; 111 proc_name = P_statement_entry.seg_info_ptr -> seg_info.entry_name; 112 if proc_name = "" 113 then proc_name = "unknown?"; 114 end; 115 substr (string, i + 1) = " of " || proc_name; 116 end; 117 return (string); 118 119 /* */ 120 1 1 dcl 1 statement_map aligned based, 1 2 2 location bit(18) unaligned, 1 3 2 source_id unaligned, 1 4 3 file bit(8), 1 5 3 line bit(14), 1 6 3 statement bit(5), 1 7 2 source_info unaligned, 1 8 3 start bit(18), 1 9 3 length bit(9); 121 122 123 /* ;;;;;;; */ 124 2 1 /* BEGIN INCLUDE FILE ... probe_source_info.incl.pl1 2 2* 2 3* James R. Davis 2 July 79 */ 2 4 2 5 dcl 1 source_info based aligned, 2 6 2 stmnt_map_entry_index fixed bin, /* index in stmnt map for this stmnt */ 2 7 2 instruction_ptr ptr, /* to last instruction executed */ 2 8 2 block_ptr ptr, /* to runtime_block node */ 2 9 2 stack_ptr ptr, /* to a stack frame */ 2 10 2 entry_ptr ptr, /* to entry seq. for this proc */ 2 11 2 seg_info_ptr ptr; /* to seg_info */ 2 12 2 13 dcl 1 current_source aligned like source_info based (probe_info.ptr_to_current_source); 2 14 dcl 1 initial_source aligned like source_info based (probe_info.ptr_to_initial_source); 2 15 2 16 /* END INCLUDE FILE ... probe_source_info.incl.pl1 */ 125 126 127 /* ;;;;;;; */ 128 3 1 /* BEGIN INCLUDE FILE ... probe_seg_info.incl.pl1 3 2* 3 3* 25 June 79 JRDavis 3 4* 3 5* Modified 7 April 1983, TO - Add fields for character offset/line 3 6* correction per file. 3 7**/ 3 8 3 9 dcl 1 seg_info based aligned, /* place to remember information about object seg */ 3 10 2 language_type fixed bin, /* language of source program */ 3 11 2 bits aligned, 3 12 3 ignore_case bit (1) unal, 3 13 3 bound_segment bit (1) unaligned, 3 14 3 component bit (1) unaligned, 3 15 3 pad bit (33) unal, 3 16 2 names, /* where to find it */ 3 17 3 directory_name character (168) unal, /* what directory */ 3 18 3 entry_name character (32) unal, /* what segment */ 3 19 3 segname character (32) unal, /* procedure segname definition */ 3 20 2 identifier fixed bin (71), /* time of object creation */ 3 21 2 pointers, /* location of various parts of segment */ 3 22 3 symbol_header_ptr ptr unal, /* to symbol section */ 3 23 3 original_source_ptr ptr unal, /* to segment source map */ 3 24 3 statement_map_ptr ptr unal, /* to segment statement map */ 3 25 3 break_info ptr unal, /* for unbound segments, and start of chain for 3 26* bound ones, -> break_map !obsolete, I think! */ 3 27 3 chain ptr unal, /* to entry for next component if bound */ 3 28 3 linkage_ptr ptr unal, /* to linkage section */ 3 29 2 bounds aligned, /* structure of bounds information */ 3 30 3 text_bounds, 3 31 4 start fixed bin (35), 3 32 4 end fixed bin (35), 3 33 3 symbol_bounds, 3 34 4 start fixed bin (35), 3 35 4 end fixed bin (35), 3 36 2 map_size fixed bin, /* size of statement map */ 3 37 2 error_code fixed bin (35), /* errors encoutered while getting info, are recorded here */ 3 38 2 bound_create_time fixed bin (71), /* time seg containing was bound or compiled. */ 3 39 2 bound_sym_header ptr unal, /* to sym. section header for bound seg */ 3 40 2 pad (1) fixed bin (35), 3 41 3 42 2 nfiles fixed bin, 3 43 2 per_file (seg_info_nfiles refer (seg_info.nfiles)), 3 44 3 file_pointers ptr unal, 3 45 3 break_line (0:3) fixed bin (18) unsigned unaligned; 3 46 3 47 dcl seg_info_nfiles fixed bin; /* for allocation purposes */ 3 48 3 49 3 50 /* END INCLUDE FILE ... probe_seg_info.incl.pl1 */ 129 130 131 end; /* external procedure probe_line_number_ */ SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/24/88 1339.0 probe_line_number_.pl1 >special_ldd>install>MR12.2-1184>probe_line_number_.pl1 121 1 05/06/74 1751.6 statement_map.incl.pl1 >ldd>include>statement_map.incl.pl1 125 2 11/26/79 1320.6 probe_source_info.incl.pl1 >ldd>include>probe_source_info.incl.pl1 129 3 11/02/83 1845.0 probe_seg_info.incl.pl1 >ldd>include>probe_seg_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. P_probe_info_ptr parameter pointer dcl 35 ref 25 71 77 P_statement_entry parameter structure level 1 dcl 40 ref 25 71 addr builtin function dcl 37 ref 90 entry_name 54 based char(32) level 3 packed packed unaligned dcl 3-9 ref 111 f 000107 automatic fixed bin(17,0) dcl 49 set ref 94* 103 106* file 0(18) based bit(8) level 3 packed packed unaligned dcl 1-1 ref 94 fixed builtin function dcl 37 ref 94 96 97 format 000000 constant varying char(32) initial array dcl 59 set ref 103* 106* i 000106 automatic fixed bin(17,0) dcl 48 set ref 103* 106* 115 ioa_$rsnnl 000010 constant entry external dcl 57 ref 103 106 j 000105 automatic fixed bin(17,0) dcl 47 set ref 99* 101* 103 106 l 000110 automatic fixed bin(17,0) dcl 49 set ref 96* 103* 106* line 0(26) based bit(14) level 3 packed packed unaligned dcl 1-1 ref 96 map_array based structure array level 1 dcl 55 set ref 90 name_wanted 000104 automatic bit(1) packed unaligned dcl 46 set ref 67* 73* 108 names 2 based structure level 2 dcl 3-9 null builtin function dcl 37 ref 80 86 pointers 76 based structure level 2 dcl 3-9 probe_info_ptr 000100 automatic pointer dcl 43 set ref 77* proc_name 000112 automatic char(32) packed unaligned dcl 51 set ref 109* 110 111* 112 112* 115 s 000111 automatic fixed bin(17,0) dcl 49 set ref 97* 99 103* 106* seg_info based structure level 1 dcl 3-9 seg_info_ptr 12 parameter pointer level 2 dcl 40 ref 80 84 109 111 segname 64 based char(32) level 3 packed packed unaligned dcl 3-9 ref 109 source_id 0(18) based structure level 2 packed packed unaligned dcl 1-1 source_info based structure level 1 dcl 2-5 statement 1(04) based bit(5) level 3 packed packed unaligned dcl 1-1 ref 97 statement_map based structure level 1 dcl 1-1 statement_map_ptr 100 based pointer level 3 in structure "seg_info" packed packed unaligned dcl 3-9 in procedure "probe_line_number_" ref 84 statement_map_ptr 000102 automatic pointer dcl 45 in procedure "probe_line_number_" set ref 84* 86 90* 90 94 96 97 stmnt_map_entry_index parameter fixed bin(17,0) level 2 dcl 40 ref 90 string 000122 automatic char(64) packed unaligned dcl 53 set ref 103* 106* 115* 117 substr builtin function dcl 37 set ref 115* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. current_source based structure level 1 dcl 2-13 initial_source based structure level 1 dcl 2-14 seg_info_nfiles automatic fixed bin(17,0) dcl 3-47 NAMES DECLARED BY EXPLICIT CONTEXT. COMMON 000115 constant label dcl 77 ref 68 74 probe_line_number_ 000074 constant entry external dcl 25 probe_line_number_$proc 000105 constant entry external dcl 71 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 416 430 342 426 Length 654 342 12 210 53 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME probe_line_number_ 147 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME probe_line_number_ 000100 probe_info_ptr probe_line_number_ 000102 statement_map_ptr probe_line_number_ 000104 name_wanted probe_line_number_ 000105 j probe_line_number_ 000106 i probe_line_number_ 000107 f probe_line_number_ 000110 l probe_line_number_ 000111 s probe_line_number_ 000112 proc_name probe_line_number_ 000122 string probe_line_number_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp call_ext_out_desc return_mac shorten_stack ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. ioa_$rsnnl NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 25 000070 67 000101 68 000102 71 000103 73 000112 74 000114 77 000115 80 000121 84 000133 86 000136 90 000147 94 000153 96 000157 97 000164 99 000170 101 000174 103 000176 106 000232 108 000266 109 000270 110 000276 111 000302 112 000305 115 000314 116 000333 117 000334 ----------------------------------------------------------- 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