COMPILATION LISTING OF SEGMENT alm_source_map_ Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 10/17/88 1008.8 mst Mon Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 15 /****^ HISTORY COMMENTS: 16* 1) change(87-04-28,JRGray), approve(87-07-03,MCR7689), 17* audit(87-07-09,RWaters), install(87-11-02,MR12.2-1001): 18* Updated to use the latest source_info structure (alm 19). 19* END HISTORY COMMENTS */ 20 21 22 /* This segment contains routines to generate standard object segment source map identifying 23* the source files which went into this compilation. An additional entry point counts 24* the words used for the source map so that space can be allocated in advance. */ 25 26 /* Created on 06/20/72 at 20:34:31 by R F Mabee. */ 27 /* Modified on 06/22/72 at 11:51:34 by R F Mabee. */ 28 /* Modified for macro expansion 3/24/77 by Noel I. Morris */ 29 /* Modified to fix bugs phx5126 and phx6042 on 5/12/81 by EBush */ 30 31 32 alm_source_map_$count_map_words: procedure (nwords); 33 34 /* This entry returns the number of words to be reserved for the source map. */ 35 36 37 declare nwords fixed bin; 38 39 declare temp pointer, (i, j) fixed bin (26), 40 code fixed bin (35); 41 42 declare nnames fixed bin internal static; /* Saved from count entry to putout entry. */ 43 44 declare twop18 fixed bin (26) internal static initial (262144); /* Constant. */ 45 46 declare prnam_$prnam_ external entry (pointer), 47 putout_$putblk external entry (fixed bin, pointer, fixed bin (26), fixed bin, pointer), 48 putout_$putwrd external entry (fixed bin, fixed bin, fixed bin (26), fixed bin (35)), 49 hcs_$terminate_noname external entry (ptr, fixed bin (35)); 50 51 declare null builtin, substr builtin, divide builtin, length builtin, rtrim builtin; 52 53 1 1 /* Begin include file alm_include_file_info.incl.pl1. 1 2* Created on 06/16/72 at 00:18:27 by R F Mabee. 1 3* Modified 4/13/77 by Noel I. Morris 1 4* 1 5* This structure is used for the nodes of a linked list describing the source and 1 6*include files processed by the assembler. Its primary purpose is to save this 1 7*information from pass one to pass two to save searching for the include files again. 1 8*Enough information is saved to create the standard object segment source file map. 1 9*The list nodes are also temporarily threaded (by the stack_back_pointer item) to form 1 10*a stack of suspended input files for nested include file use. */ 1 11 1 12 1 13 1 14 1 15 /****^ HISTORY COMMENTS: 1 16* 1) change(87-04-28,JRGray), approve(87-07-03,MCR7689), 1 17* audit(87-07-09,RWaters), install(87-11-02,MR12.2-1001): 1 18* Modified to track more info, (fix for alm 19). 1 19* END HISTORY COMMENTS */ 1 20 1 21 1 22 declare 1 source_info aligned based, 1 23 2 first_word fixed bin (71), /* Forces even alignment. */ 1 24 1 25 /* Threading items. */ 1 26 1 27 2 names_list_pointer pointer, /* List of file nodes, oldest first. */ 1 28 2 stack_back_pointer pointer, /* Push-down list for nested files, newest first. */ 1 29 1 30 /* File info passed for pass two. */ 1 31 1 32 2 source_pointer pointer, /* Base of include file. */ 1 33 2 source_length fixed bin (26), /* Character count. */ 1 34 2 search_name char (32), /* File name called for (with ".incl.alm"). */ 1 35 1 36 /* Source map information. */ 1 37 1 38 2 source_number fixed bin (26), /* Main source 0, first include 1 ... */ 1 39 2 uid bit (36), /* From segment branch. */ 1 40 2 dtm fixed bin (71), /* Watch for alignment. */ 1 41 2 pathname char (256), /* Actual pathname. */ 1 42 2 source_map_offset fixed bin (26), /* Used only in alm_source_map_. */ 1 43 2 source_map_length fixed bin (26), /* Ditto. Saves stuff from pre-counting for later use. */ 1 44 1 45 /* The rest of this node stores position in this file when another 1 46* level of include file is invoked. */ 1 47 1 48 2 curr_char_no fixed bin (26), /* eb_data_$curr_char_no. */ 1 49 2 line_begin_offset fixed bin (26), /* begin_line. */ 1 50 2 line_number fixed bin (26), /* binlin. */ 1 51 2 savep ptr unal, /* saved source pointer */ 1 52 2 savel fixed bin (24), /* saved source length */ 1 53 1 54 2 last_word fixed bin (26); /* Need [fixed (rel (last), 18) - 1 55* fixed (rel (first), 18))] words. */ 1 56 1 57 1 58 /* End of include file alm_include_file_info.incl.pl1. */ 54 55 2 1 /* Begin include file varcom.incl.pl1. */ 2 2 /* RHG added new variables 9/7/70. */ 2 3 /* RFM added new cells for new object segment format and first-reference trap, 27 March 1972. */ 2 4 /* RFM added include file stuff, then cross referencer stuff, 23 July 1972. */ 2 5 /* Last modified on 07/23/72 at 04:19:25 by R F Mabee. */ 2 6 2 7 declare 1 eb_data_$varcom external aligned, 2 8 2 (brk(2), nbrk(2), sym(8), dsym(8),old_locsym, pc, spc, tpc, 2 9 pclst, p2pcl, old_ndpcls, tvorg, tvcnt, tvlth, litorg, 2 10 litc, deforg, defc, defcnt, stkc, lnkc, lnkno, 2 11 litlst, old_ndltls, lnklst, old_ndlkls, explst, blklst, namlst, 2 12 trplst, xdflst, tvlst, begin_line, tpass1, tpass2, tpostp, 2 13 tinhib, tmmode, txonly, tmm2, txo2, tprot, tcall, 2 14 tmvdef, tpulnk, tfatal, calrho, lreter, passwd, binlin, 2 15 nboxes, box(0:210), myfil, mynam, myblk, mylnk, tpost1 ) fixed bin (26) , 2 16 2 source_printed bit(1) aligned, 2 17 2 (ndpcls, ndltls, ndlkls, ndtvls) ptr, 2 18 2 (basno, value, admod, b29, iaddr, symlnk ) fixed bin (26), 2 19 2 (itxtmod, ilnkmod, entrieslc, include_file_list, include_index, 2 20 first_ref_trap_proc_linkno, first_ref_trap_arg_linkno, 2 21 text_section_length) fixed binary (26), 2 22 2 (include_info_stack, include_name_list_base, include_name_list_top) pointer, 2 23 2 symbol_tree_rel fixed binary (26); 2 24 2 25 /* End of the include file varcom.incl.pl1. */ 56 57 3 1 3 2 3 3 3 4 /* include file for CONCOM */ 3 5 3 6 declare 1 eb_data_$concom ext aligned, 3 7 2 (ap, ab, bp, bb, lp, lb, sp, sb, 3 8 clunk, clint, clext, clbas, clstk, clndx, clmlc, fdef, 3 9 fmul, fphs, fset, frel, fabs, fbol, fcom, find, 3 10 flocrf, fequrf, fbolrf, fsetrf, fbasrf, fsegrf, fstkrf, fndxrf, 3 11 fmlcrf, onesev, twosev, thrsev, forsev, fivsev, sixsev, allsev, 3 12 symbas(8),mir, mri, mdu, mdl, mx0, mx1, mpc, 3 13 mpci, mfi, mits, mitb, ixtern, intern, iassgn, iserch, 3 14 ixvrvl, ixvrvp, invrvl, invrvp, ibvrvl, ibvrvp, iaccvl, iacivl, 3 15 mcmpq, mcmpx0, mldaq, mldq, mldx0, mnopdu, mstcd, mtra, 3 16 mtnc, mtnz, meabsp, meapap, meapbp, meaplp, meapsp, mstpap, 3 17 mstpbp, mstplp, mstpsp, i1542, i642, i3333, i66, ibb, 3 18 ibsp, nullf, smxer(2), sentry(2),sretrn(2), dzero(2) ) fixed bin (26) aligned ; 3 19 3 20 /* end of the include file for CONCOM */ 58 59 60 61 nwords, nnames = 0; /* Count names, words containing names. */ 62 63 temp = include_name_list_base; 64 do while (temp ^= null ()); /* Run down list. */ 65 i = length (rtrim (temp -> source_info.pathname)); 66 67 temp -> source_info.source_map_offset = nwords; 68 temp -> source_info.source_map_length = i; 69 70 nwords = nwords + divide (i + 3, 4, 26, 0); 71 72 temp = temp -> source_info.names_list_pointer; 73 nnames = nnames + 1; 74 end; 75 76 nwords = nwords + nnames * 4 + 2; /* Two word header, four word array entries. */ 77 78 return; 79 80 81 alm_source_map_$put_out_map: entry (ispc); 82 83 /* This entry sticks source map in object at ispc in current lc. */ 84 85 86 declare ispc fixed bin; 87 88 declare map_base fixed bin; 89 90 declare 1 acc_temp aligned, 91 2 count bit (9) unaligned, 92 2 string char (256) unaligned; 93 94 95 map_base = ispc + 2 + nnames * 4; /* Two word header plus a four word entry pointing to each name. */ 96 call putout_$putwrd (ispc, 1, i66, 0); /* Version number of structure. */ 97 call putout_$putwrd (ispc, nnames, i66, 0); 98 99 temp = include_name_list_base; 100 do while (temp ^= null ()); 101 /*****************************************************************************/ 102 /* The first source_ptr in this chain is apparently a ptr to the 103* source program segment. Thus, to avoid bugs 5126,6042, we bypass 104* the termination step for it so that the source is not prematurely 105* terminated. */ 106 /****************************************************************************/ 107 if temp ^= include_name_list_base 108 then call hcs_$terminate_noname (temp-> source_info.source_pointer, code); 109 /* Terminate file and ignore error code. */ 110 call putout_$putwrd (ispc, (temp -> source_info.source_map_offset + map_base) * twop18 + temp -> source_info.source_map_length, i66, 0); 111 call putout_$putblk (ispc, addr (temp -> source_info.uid), i66, 1, null ()); 112 call putout_$putblk (ispc, addr (temp -> source_info.dtm), i66, 2, null ()); 113 temp = temp -> source_info.names_list_pointer; 114 end; 115 116 temp = include_name_list_base; 117 do while (temp ^= null ()); 118 acc_temp.count = bit (fixed (min (temp -> source_info.source_map_length, 68), 9)); 119 acc_temp.string = temp -> source_info.pathname; 120 call prnam_$prnam_ (addr (acc_temp)); 121 call putout_$putblk (ispc, addr (temp -> source_info.pathname), i66, divide (temp -> source_info.source_map_length + 3, 4, 26, 0), null ()); 122 temp = temp -> source_info.names_list_pointer; 123 end; 124 125 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/17/88 0929.4 alm_source_map_.pl1 >spec>install>1170>alm_source_map_.pl1 54 1 11/02/87 1305.6 alm_include_file_info.incl.pl1 >ldd>include>alm_include_file_info.incl.pl1 56 2 10/21/74 1242.9 varcom.incl.pl1 >ldd>include>varcom.incl.pl1 58 3 10/21/74 1243.0 concom.incl.pl1 >ldd>include>concom.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. acc_temp 000105 automatic structure level 1 dcl 90 set ref 120 120 code 000103 automatic fixed bin(35,0) dcl 39 set ref 107* count 000105 automatic bit(9) level 2 packed packed unaligned dcl 90 set ref 118* divide builtin function dcl 51 ref 70 121 121 dtm 24 based fixed bin(71,0) level 2 dcl 1-22 set ref 112 112 eb_data_$concom 000024 external static structure level 1 dcl 3-6 eb_data_$varcom 000022 external static structure level 1 dcl 2-7 hcs_$terminate_noname 000020 constant entry external dcl 46 ref 107 i 000102 automatic fixed bin(26,0) dcl 39 set ref 65* 68 70 i66 135 000024 external static fixed bin(26,0) level 2 dcl 3-6 set ref 96* 97* 110* 111* 112* 121* include_name_list_base 464 000022 external static pointer level 2 dcl 2-7 ref 63 99 107 116 ispc parameter fixed bin(17,0) dcl 86 set ref 81 95 96* 97* 110* 111* 112* 121* length builtin function dcl 51 ref 65 map_base 000104 automatic fixed bin(17,0) dcl 88 set ref 95* 110 names_list_pointer 2 based pointer level 2 dcl 1-22 ref 72 113 122 nnames 000010 internal static fixed bin(17,0) dcl 42 set ref 61* 73* 73 76 95 97* null builtin function dcl 51 ref 64 100 111 111 112 112 117 121 121 nwords parameter fixed bin(17,0) dcl 37 set ref 32 61* 67 70* 70 76* 76 pathname 26 based char(256) level 2 dcl 1-22 set ref 65 119 121 121 prnam_$prnam_ 000012 constant entry external dcl 46 ref 120 putout_$putblk 000014 constant entry external dcl 46 ref 111 112 121 putout_$putwrd 000016 constant entry external dcl 46 ref 96 97 110 rtrim builtin function dcl 51 ref 65 source_info based structure level 1 dcl 1-22 source_map_length 127 based fixed bin(26,0) level 2 dcl 1-22 set ref 68* 110 118 121 121 source_map_offset 126 based fixed bin(26,0) level 2 dcl 1-22 set ref 67* 110 source_pointer 6 based pointer level 2 dcl 1-22 set ref 107* string 0(09) 000105 automatic char(256) level 2 packed packed unaligned dcl 90 set ref 119* temp 000100 automatic pointer dcl 39 set ref 63* 64 65 67 68 72* 72 99* 100 107 107 110 110 111 111 112 112 113* 113 116* 117 118 119 121 121 121 121 122* 122 twop18 constant fixed bin(26,0) initial dcl 44 ref 110 uid 22 based bit(36) level 2 dcl 1-22 set ref 111 111 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. j automatic fixed bin(26,0) dcl 39 substr builtin function dcl 51 NAMES DECLARED BY EXPLICIT CONTEXT. alm_source_map_$count_map_words 000007 constant entry external dcl 32 alm_source_map_$put_out_map 000070 constant entry external dcl 81 NAMES DECLARED BY CONTEXT OR IMPLICATION. addr builtin function ref 111 111 112 112 120 120 121 121 bit builtin function ref 118 fixed builtin function ref 118 min builtin function ref 118 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 544 572 407 554 Length 1026 407 26 217 134 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME alm_source_map_$count_map_words 162 external procedure is an external procedure. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 nnames alm_source_map_$count_map_words STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME alm_source_map_$count_map_words 000100 temp alm_source_map_$count_map_words 000102 i alm_source_map_$count_map_words 000103 code alm_source_map_$count_map_words 000104 map_base alm_source_map_$count_map_words 000105 acc_temp alm_source_map_$count_map_words THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out return_mac ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. hcs_$terminate_noname prnam_$prnam_ putout_$putblk putout_$putwrd THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. eb_data_$concom eb_data_$varcom LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 32 000004 61 000014 63 000017 64 000022 65 000026 67 000041 68 000044 70 000046 72 000051 73 000053 74 000055 76 000056 78 000065 81 000066 95 000075 96 000106 97 000126 99 000146 100 000152 107 000156 110 000175 111 000223 112 000253 113 000303 114 000306 116 000307 117 000313 118 000320 119 000333 120 000336 121 000347 122 000402 123 000405 125 000406 ----------------------------------------------------------- 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