COMPILATION LISTING OF SEGMENT gen_pl1_linkage Compiled by: Multics PL/I Compiler, Release 28d, of September 14, 1983 Compiled at: Honeywell LCPD Phoenix, System M Compiled on: 10/03/83 1640.6 mst Mon Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 /* This program is called to generate the linkage section 12* 13* Initial Version: 21 January 1971 by BLW for pl2 14* Modified: 23 June 1975 by EEW to remove trace entry word 15* Modified: 12 January 1976 by RAB to allocate all externals if symbol table built 16* fixes bug 1454 17* Modified: 1 June 1976 by RAB for *system links */ 18 19 gen_pl1_linkage: proc(pt); 20 21 dcl pt ptr; /* points at a block node */ 22 23 dcl (p,block_pt,sym_pt,tok_pt,t_pt,def_ptr,def_reloc_ptr, 24 link_ptr,link_reloc_ptr) ptr, 25 (loc,n,def_pos,link_pos) fixed bin(18), 26 (first,no_runtime_symbol) aligned bit(1); 27 28 dcl (null,index,fixed,bit,addrel,rel,substr) builtin; 29 30 dcl create_list entry(fixed bin) returns(ptr), 31 error entry(fixed bin,ptr,ptr), 32 initialize_ext_static entry(ptr) returns(bit(18) aligned), 33 gen_pl1_linkage entry(ptr), 34 generate_definition entry(char(*) aligned,fixed bin(3),bit(18) aligned), 35 compile_link entry(char(*) aligned,bit(18) aligned,fixed bin) returns(fixed bin(18)); 36 37 dcl (cg_static_$def_pos,cg_static_$link_pos,cg_static_$aos_array,cg_static_$link_begin, 38 cg_static_$def_origin,cg_static_$text_pos) fixed bin(18) ext, 39 (cg_static_$def_base,cg_static_$def_reloc_base,cg_static_$link_base, 40 cg_static_$link_reloc_base,cg_static_$root,cg_static_$ext_proc_list,cg_static_$ext_var_list) ptr ext, 41 (cg_static_$star_symbol_up_zero,cg_static_$last_def,cg_static_$zero_def,cg_static_$seg_def) bit(18) aligned ext, 42 cg_static_$seg_name char(32) varying ext, 43 (cg_static_$generate_symtab,cg_static_$table_option,cg_static_$use_type_6) bit(1) ext; 44 45 dcl ( rc_dp_t initial("000000000000010101000000000000010000"b), 46 rc_lb_lb initial("000000000000011000000000000000011000"b)) 47 bit(36) internal static; 48 49 dcl fi_mod bit(6) int static init("100110"b); /* fi mod = 46 oct */ 50 51 dcl 1 type_block aligned based, 52 2 (type,trap_ptr) unal bit(18), 53 2 (seg_id,exp) unal bit(18), 54 2 (blk_ptr,int_val) unal bit(18); 55 56 dcl 1 fault_pair aligned based, 57 2 minus_star unal bit(18), 58 2 unused unal bit(12), 59 2 tag unal bit(6), 60 2 expr_word unal bit(18), 61 2 rest unal bit(18); 62 63 dcl 1 def_header aligned based, 64 2 forward unal bit(18), 65 2 backward unal bit(18), 66 2 skip unal bit(18), 67 2 flags unal bit(18); 68 69 dcl address fixed bin(35) based; 70 71 dcl word(0:1) aligned bit(36) based, 72 reloc(0:3) aligned bit(36) based; 73 74 /* We make use of the fact that an 18 bit relocation code is 75* padded to 36 bits with zeros on the right when assign to 76* the full word reloc fields since almost all right-hand_sides 77* are absolute */ 78 1 1 /* BEGIN INCLUDE FILE relbts.incl.pl1 */ 1 2 1 3 /* This include file defines the relocation bits as bit (18) entities. See 1 4* also relocation_bits.incl.pl1 and reloc_lower.incl.pl1. */ 1 5 1 6 dcl ( rc_a initial("0"b), /* absolute */ 1 7 rc_t initial("000000000000010000"b), /* text */ 1 8 rc_nt initial("000000000000010001"b), /* negative text */ 1 9 rc_lp18 initial("000000000000010010"b), /* linkage, 18 bit */ 1 10 rc_nlp18 initial("000000000000010011"b), /* negative link, 18 bit */ 1 11 rc_lp15 initial("000000000000010100"b), /* linkage, 15 bit */ 1 12 rc_dp initial("000000000000010101"b), /* def section */ 1 13 rc_s initial("000000000000010110"b), /* symbol segment */ 1 14 rc_ns initial("000000000000010111"b), /* negative symbol */ 1 15 rc_is18 initial("000000000000011000"b), /* internal static 18 */ 1 16 rc_is15 initial("000000000000011001"b), /* internal static 15 */ 1 17 rc_lb initial("000000000000011000"b), /* link block */ 1 18 rc_nlb initial("000000000000011001"b), /* negative link block */ 1 19 rc_sr initial("000000000000011010"b), /* self relative */ 1 20 rc_e initial("000000000000011111"b)) /* escape */ 1 21 bit(18) internal static options(constant); 1 22 1 23 dcl ( rc_dp_dp initial("000000000000010101000000000000010101"b), /* def section, def section */ 1 24 rc_a_dp initial("000000000000000000000000000000010101"b)) /* absolute, def section */ 1 25 bit(36) internal static options(constant); 1 26 1 27 /* END INCLUDE FILE relbts.incl.pl1 */ 79 2 1 /* BEGIN INCLUDE FILE ... list.incl.pl1 */ 2 2 2 3 /* Modified 26 June 81 by EBush to add max_list_elements */ 2 4 2 5 2 6 dcl 1 list based aligned, 2 7 2 node_type bit(9) unaligned, 2 8 2 reserved bit(12) unaligned, 2 9 2 number fixed(14) unaligned, 2 10 2 element dimension(n refer(list.number)) ptr unaligned; 2 11 2 12 dcl max_list_elements fixed bin(17) internal static options (constant) 2 13 init(16383); 2 14 2 15 /* END INCLUDE FILE ... list.incl.pl1 */ 80 3 1 /* BEGIN INCLUDE FILE ... block.incl.pl1 */ 3 2 /* Modified 22 Ocober 1980 by M. N. Davidoff to increase max block.number to 511 */ 3 3 /* format: style3,idind30 */ 3 4 3 5 declare 1 block aligned based, 3 6 2 node_type bit (9) unaligned, 3 7 2 source_id structure unaligned, 3 8 3 file_number bit (8), 3 9 3 line_number bit (14), 3 10 3 statement_number bit (5), 3 11 2 father ptr unaligned, 3 12 2 brother ptr unaligned, 3 13 2 son ptr unaligned, 3 14 2 declaration ptr unaligned, 3 15 2 end_declaration ptr unaligned, 3 16 2 default ptr unaligned, 3 17 2 end_default ptr unaligned, 3 18 2 context ptr unaligned, 3 19 2 prologue ptr unaligned, 3 20 2 end_prologue ptr unaligned, 3 21 2 main ptr unaligned, 3 22 2 end_main ptr unaligned, 3 23 2 return_values ptr unaligned, 3 24 2 return_count ptr unaligned, 3 25 2 plio_ps ptr unaligned, 3 26 2 plio_fa ptr unaligned, 3 27 2 plio_ffsb ptr unaligned, 3 28 2 plio_ssl ptr unaligned, 3 29 2 plio_fab2 ptr unaligned, 3 30 2 block_type bit (9) unaligned, 3 31 2 prefix bit (12) unaligned, 3 32 2 like_attribute bit (1) unaligned, 3 33 2 no_stack bit (1) unaligned, 3 34 2 get_data bit (1) unaligned, 3 35 2 flush_at_call bit (1) unaligned, 3 36 2 processed bit (1) unaligned, 3 37 2 text_displayed bit (1) unaligned, 3 38 2 number fixed bin (9) unsigned unaligned, 3 39 2 free_temps dimension (3) ptr, /* these fields are used by the code generator */ 3 40 2 temp_list ptr, 3 41 2 entry_list ptr, 3 42 2 o_and_s ptr, 3 43 2 why_nonquick aligned, 3 44 3 auto_adjustable_storage bit (1) unaligned, 3 45 3 returns_star_extents bit (1) unaligned, 3 46 3 stack_extended_by_args bit (1) unaligned, 3 47 3 invoked_by_format bit (1) unaligned, 3 48 3 format_statement bit (1) unaligned, 3 49 3 io_statements bit (1) unaligned, 3 50 3 assigned_to_entry_var bit (1) unaligned, 3 51 3 condition_statements bit (1) unaligned, 3 52 3 no_owner bit (1) unaligned, 3 53 3 recursive_call bit (1) unaligned, 3 54 3 options_non_quick bit (1) unaligned, 3 55 3 options_variable bit (1) unaligned, 3 56 3 never_referenced bit (1) unaligned, 3 57 3 pad_nonquick bit (5) unaligned, 3 58 2 prologue_flag bit (1) unaligned, 3 59 2 options_main bit (1) unaligned, 3 60 2 pad bit (16) unaligned, 3 61 2 number_of_entries fixed bin (17), 3 62 2 level fixed bin (17), 3 63 2 last_auto_loc fixed bin (17), 3 64 2 symbol_block fixed bin (17), 3 65 2 entry_info fixed bin (18), 3 66 2 enter structure unaligned, 3 67 3 start fixed bin (17), 3 68 3 end fixed bin (17), 3 69 2 leave structure unaligned, 3 70 3 start fixed bin (17), 3 71 3 end fixed bin (17), 3 72 2 owner ptr; 3 73 3 74 declare max_block_number fixed bin internal static options (constant) initial (511); 3 75 3 76 /* END INCLUDE FILE ... block.incl.pl1 */ 81 4 1 /* BEGIN INCLUDE FILE ... symbol.incl.pl1 */ 4 2 4 3 dcl 1 symbol based aligned, 4 4 2 node_type bit(9) unal, 4 5 2 source_id structure unal, 4 6 3 file_number bit(8), 4 7 3 line_number bit(14), 4 8 3 statement_number bit(5), 4 9 2 location fixed(18) unal unsigned, 4 10 2 allocated bit(1) unal, 4 11 2 dcl_type bit(3) unal, 4 12 2 reserved bit(6) unal, 4 13 2 pix unal, 4 14 3 pic_fixed bit(1) unal, 4 15 3 pic_float bit(1) unal, 4 16 3 pic_char bit(1) unal, 4 17 3 pic_scale fixed(7) unal, 4 18 3 pic_size fixed(7) unal, 4 19 2 level fixed(8) unal, 4 20 2 boundary fixed(3) unal, 4 21 2 size_units fixed(3) unal, 4 22 2 scale fixed(7) unal, 4 23 2 runtime bit(18) unal, 4 24 2 runtime_offset bit(18) unal, 4 25 2 block_node ptr unal, 4 26 2 token ptr unal, 4 27 2 next ptr unal, 4 28 2 multi_use ptr unal, 4 29 2 cross_references ptr unal, 4 30 2 initial ptr unal, 4 31 2 array ptr unal, 4 32 2 descriptor ptr unal, 4 33 2 equivalence ptr unal, 4 34 2 reference ptr unal, 4 35 2 general ptr unal, 4 36 2 father ptr unal, 4 37 2 brother ptr unal, 4 38 2 son ptr unal, 4 39 2 word_size ptr unal, 4 40 2 bit_size ptr unal, 4 41 2 dcl_size ptr unal, 4 42 2 symtab_size ptr unal, 4 43 2 c_word_size fixed(24), 4 44 2 c_bit_size fixed(24), 4 45 2 c_dcl_size fixed(24), 4 46 4 47 2 attributes structure aligned, 4 48 3 data_type structure unal, 4 49 4 structure bit(1) , 4 50 4 fixed bit(1), 4 51 4 float bit(1), 4 52 4 bit bit(1), 4 53 4 char bit(1), 4 54 4 ptr bit(1), 4 55 4 offset bit(1), 4 56 4 area bit(1), 4 57 4 label bit(1), 4 58 4 entry bit(1), 4 59 4 file bit(1), 4 60 4 arg_descriptor bit(1), 4 61 4 storage_block bit(1), 4 62 4 explicit_packed bit(1), /* options(packed) */ 4 63 4 condition bit(1), 4 64 4 format bit(1), 4 65 4 builtin bit(1), 4 66 4 generic bit(1), 4 67 4 picture bit(1), 4 68 4 69 3 misc_attributes structure unal, 4 70 4 dimensioned bit(1), 4 71 4 initialed bit(1), 4 72 4 aligned bit(1), 4 73 4 unaligned bit(1), 4 74 4 signed bit(1), 4 75 4 unsigned bit(1), 4 76 4 precision bit(1), 4 77 4 varying bit(1), 4 78 4 local bit(1), 4 79 4 decimal bit(1), 4 80 4 binary bit(1), 4 81 4 real bit(1), 4 82 4 complex bit(1), 4 83 4 variable bit(1), 4 84 4 reducible bit(1), 4 85 4 irreducible bit(1), 4 86 4 returns bit(1), 4 87 4 position bit(1), 4 88 4 internal bit(1), 4 89 4 external bit(1), 4 90 4 like bit(1), 4 91 4 member bit(1), 4 92 4 non_varying bit(1), 4 93 4 options bit(1), 4 94 4 variable_arg_list bit(1), /* options(variable) */ 4 95 4 alloc_in_text bit(1), /* options(constant) */ 4 96 4 97 3 storage_class structure unal, 4 98 4 auto bit(1), 4 99 4 based bit(1), 4 100 4 static bit(1), 4 101 4 controlled bit(1), 4 102 4 defined bit(1), 4 103 4 parameter bit(1), 4 104 4 param_desc bit(1), 4 105 4 constant bit(1), 4 106 4 temporary bit(1), 4 107 4 return_value bit(1), 4 108 4 109 3 file_attributes structure unal, 4 110 4 print bit(1), 4 111 4 input bit(1), 4 112 4 output bit(1), 4 113 4 update bit(1), 4 114 4 stream bit(1), 4 115 4 reserved_1 bit(1), 4 116 4 record bit(1), 4 117 4 sequential bit(1), 4 118 4 direct bit(1), 4 119 4 interactive bit(1), /* env(interactive) */ 4 120 4 reserved_2 bit(1), 4 121 4 reserved_3 bit(1), 4 122 4 stringvalue bit(1), /* env(stringvalue) */ 4 123 4 keyed bit(1), 4 124 4 reserved_4 bit(1), 4 125 4 environment bit(1), 4 126 4 127 3 compiler_developed structure unal, 4 128 4 aliasable bit(1), 4 129 4 packed bit(1), 4 130 4 passed_as_arg bit(1), 4 131 4 allocate bit(1), 4 132 4 set bit(1), 4 133 4 exp_extents bit(1), 4 134 4 refer_extents bit(1), 4 135 4 star_extents bit(1), 4 136 4 isub bit(1), 4 137 4 put_in_symtab bit(1), 4 138 4 contiguous bit(1), 4 139 4 put_data bit(1), 4 140 4 overlayed bit(1), 4 141 4 error bit(1), 4 142 4 symtab_processed bit(1), 4 143 4 overlayed_by_builtin bit(1), 4 144 4 defaulted bit(1), 4 145 4 connected bit(1); 4 146 4 147 /* END INCLUDE FILE ... symbol.incl.pl1 */ 82 5 1 /* BEGIN INCLUDE FILE ... token.incl.pl1 */ 5 2 5 3 dcl 1 token based aligned, 5 4 2 node_type bit(9) unaligned, 5 5 2 type bit(9) unaligned, 5 6 2 loc bit(18) unaligned, /* symtab offset for identifiers, "p" flag for constants */ 5 7 2 declaration ptr unaligned, 5 8 2 next ptr unaligned, 5 9 2 size fixed(9), 5 10 2 string char(n refer(token.size)); 5 11 5 12 /* END INCLUDE FILE ... token.incl.pl1 */ 83 6 1 /* BEGIN INCLUDE FILE ... nodes.incl.pl1 */ 6 2 6 3 /* Modified: 26 Dec 1979 by PCK to implement by name assignment */ 6 4 6 5 dcl ( block_node initial("000000001"b), 6 6 statement_node initial("000000010"b), 6 7 operator_node initial("000000011"b), 6 8 reference_node initial("000000100"b), 6 9 token_node initial("000000101"b), 6 10 symbol_node initial("000000110"b), 6 11 context_node initial("000000111"b), 6 12 array_node initial("000001000"b), 6 13 bound_node initial("000001001"b), 6 14 format_value_node initial("000001010"b), 6 15 list_node initial("000001011"b), 6 16 default_node initial("000001100"b), 6 17 machine_state_node initial("000001101"b), 6 18 source_node initial("000001110"b), 6 19 label_node initial("000001111"b), 6 20 cross_reference_node initial("000010000"b), 6 21 sf_par_node initial("000010001"b), 6 22 temporary_node initial("000010010"b), 6 23 label_array_element_node initial("000010011"b), 6 24 by_name_agg_node initial("000010100"b)) 6 25 bit(9) internal static aligned options(constant); 6 26 6 27 dcl 1 node based aligned, 6 28 2 type unal bit(9), 6 29 2 source_id unal structure, 6 30 3 file_number bit(8), 6 31 3 line_number bit(14), 6 32 3 statement_number bit(5); 6 33 6 34 /* END INCLUDE FILE ... nodes.incl.pl1 */ 84 7 1 /* BEGIN INCLUDE FILE segname_def.incl.pl1 */ 7 2 7 3 dcl 1 segname_def aligned based, 7 4 2 forward unal bit(18), /* offset of next def */ 7 5 2 backward unal bit(18), /* offset of previous def */ 7 6 2 next unal bit(18), /* offset of next segname def */ 7 7 2 flags unal, 7 8 3 new bit(1), 7 9 3 ignore bit(1), 7 10 3 entry bit(1), 7 11 3 retain bit(1), 7 12 3 descriptors bit(1), 7 13 3 unused bit(10), 7 14 2 class unal bit(3), 7 15 2 symbol unal bit(18), /* offset of ACC for symbol */ 7 16 2 defblock unal bit(18); /* offset of head of this defblock */ 7 17 7 18 /* END INCLUDE FILE segname_def.incl.pl1 */ 85 86 87 no_runtime_symbol = ^ (cg_static_$table_option | cg_static_$generate_symtab); 88 89 block_pt = pt; 90 do while(block_pt ^= null); 91 92 sym_pt = block_pt -> block.declaration; 93 do while(sym_pt ^= null); 94 95 if sym_pt -> node.type ^= symbol_node then goto loop; 96 if ^ sym_pt -> symbol.external then goto loop; 97 if no_runtime_symbol 98 then if ^ sym_pt -> symbol.allocate 99 then goto loop; 100 if sym_pt -> symbol.condition then goto loop; 101 if sym_pt -> symbol.arg_descriptor then goto loop; 102 if sym_pt -> symbol.builtin then goto loop; 103 if sym_pt -> symbol.father ^= null then goto loop; 104 105 tok_pt = sym_pt -> symbol.token; 106 107 if sym_pt -> symbol.entry & sym_pt -> symbol.constant 108 then do; 109 110 /* we have an ext entry, generate link if 111* its an outward reference */ 112 113 if sym_pt -> symbol.initial = null 114 then if sym_pt -> symbol.allocate 115 then do; 116 sym_pt -> symbol.location = compile_link(tok_pt -> token.string,"0"b,0); 117 sym_pt -> symbol.allocated = "1"b; 118 119 p = create_list(2); 120 p -> element(2) = sym_pt; 121 p -> element(1) = cg_static_$ext_proc_list; 122 cg_static_$ext_proc_list = p; 123 end; 124 125 goto loop; 126 end; 127 128 129 /* we have a variable, put it on list for prepare_symbol_map */ 130 131 p = create_list(2); 132 p -> element(2) = sym_pt; 133 p -> element(1) = cg_static_$ext_var_list; 134 cg_static_$ext_var_list = p; 135 136 if index(tok_pt -> token.string,"$") = 0 | cg_static_$use_type_6 137 then do; 138 sym_pt -> symbol.location = cg_static_$link_pos; 139 sym_pt -> symbol.location = compile_link(tok_pt -> token.string, 140 initialize_ext_static(sym_pt),1); 141 end; 142 else do; 143 if sym_pt -> symbol.initialed 144 then call error(345,null,sym_pt); 145 loc, 146 sym_pt -> symbol.location = compile_link(tok_pt -> token.string,"0"b,1); 147 148 if sym_pt -> symbol.son ^= null 149 then call fill_loc((sym_pt -> symbol.son)); 150 end; 151 152 sym_pt -> symbol.allocated = "1"b; 153 154 loop: sym_pt = sym_pt -> symbol.next; 155 end; 156 157 /* thru with this block, now do sons and then brother */ 158 159 p = block_pt -> block.son; 160 if p ^= null then call gen_pl1_linkage(p); 161 block_pt = block_pt -> block.brother; 162 end; 163 164 return; 165 166 gen_pl1_linkage$init_linkage: entry; 167 168 /* This entry is called to initialize the linkage generator. 169* It generates the class 3 segname definition and the definition 170* for "symbol_table". A link to <*symbol>|0 is generated if needed */ 171 172 cg_static_$ext_proc_list, cg_static_$ext_var_list = null; 173 174 link_pos = cg_static_$link_pos; 175 cg_static_$link_begin, link_pos = link_pos + mod(link_pos,2); /* make EVEN */ 176 177 /* generate definition header. the word of zeros terminating 178* the definition chain will be a location 2 */ 179 180 cg_static_$def_base -> def_header.flags = "11"b; /* new, ignore */ 181 cg_static_$def_reloc_base -> reloc(0) = rc_dp; 182 cg_static_$zero_def = "000000000000000010"b; 183 cg_static_$last_def = "000000000000000000"b; 184 cg_static_$def_pos = 3; 185 186 /* generate definition for segname, class 3 */ 187 188 call generate_definition((cg_static_$seg_name),3,cg_static_$zero_def); 189 190 /* generate definition for "symbol_table" */ 191 192 call generate_definition("symbol_table",2,"0"b); 193 194 addrel(cg_static_$def_base,cg_static_$seg_def) -> segname_def.defblock = cg_static_$last_def; 195 196 /* generate link to <*symbol>|0 only if it is needed */ 197 198 if cg_static_$generate_symtab then goto ml; 199 if ^ cg_static_$table_option then goto done; 200 201 ml: link_ptr = addrel(cg_static_$link_base,link_pos); 202 link_reloc_ptr = addrel(cg_static_$link_reloc_base,link_pos); 203 204 def_pos = cg_static_$def_pos; 205 def_ptr = addrel(cg_static_$def_base,def_pos); 206 def_reloc_ptr = addrel(cg_static_$def_reloc_base,def_pos); 207 208 def_ptr -> type_block.type = "000000000000000001"b; 209 def_ptr -> type_block.seg_id = "000000000000000010"b; 210 211 def_ptr -> type_block.blk_ptr = bit(def_pos,18); 212 def_reloc_ptr -> reloc(2) = rc_dp; 213 214 link_ptr -> address = -link_pos * 262144; 215 link_ptr -> fault_pair.tag = fi_mod; 216 link_reloc_ptr -> reloc(0) = rc_nlb; 217 218 link_ptr -> fault_pair.expr_word = bit(fixed(def_pos+2,18),18); 219 link_reloc_ptr -> reloc(1) = rc_dp; 220 221 cg_static_$star_symbol_up_zero = bit(link_pos,18); 222 223 cg_static_$def_pos = cg_static_$def_pos + 3; 224 link_pos = link_pos + 2; 225 226 done: cg_static_$link_pos = link_pos; 227 return; 228 229 230 fill_loc: proc(pt); 231 232 dcl (pt,s) ptr; 233 234 do s = pt repeat s -> symbol.brother while(s ^= null); 235 s -> symbol.location = loc; 236 237 if s -> symbol.son ^= null 238 then call fill_loc((s -> symbol.son)); 239 240 if s -> symbol.initialed 241 then call error(345,null,s); 242 end; 243 244 end; 245 246 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/03/83 1008.3 gen_pl1_linkage.pl1 >spec>on>pl128d>gen_pl1_linkage.pl1 79 1 10/30/80 1648.7 relbts.incl.pl1 >ldd>include>relbts.incl.pl1 80 2 08/13/81 2211.5 list.incl.pl1 >ldd>include>list.incl.pl1 81 3 08/13/81 2043.5 block.incl.pl1 >ldd>include>block.incl.pl1 82 4 10/02/83 0828.4 symbol.incl.pl1 >spec>on>pl128d>symbol.incl.pl1 83 5 09/14/77 1705.7 token.incl.pl1 >ldd>include>token.incl.pl1 84 6 07/21/80 1546.3 nodes.incl.pl1 >ldd>include>nodes.incl.pl1 85 7 10/30/80 1648.7 segname_def.incl.pl1 >ldd>include>segname_def.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. addrel builtin function dcl 28 ref 194 201 202 205 206 address based fixed bin(35,0) dcl 69 set ref 214* allocate 33(02) based bit(1) level 4 packed unaligned dcl 4-3 ref 97 113 allocated 1(18) based bit(1) level 2 packed unaligned dcl 4-3 set ref 117* 152* arg_descriptor 31(11) based bit(1) level 4 packed unaligned dcl 4-3 ref 101 attributes 31 based structure level 2 dcl 4-3 bit builtin function dcl 28 ref 211 218 221 blk_ptr 2 based bit(18) level 2 packed unaligned dcl 51 set ref 211* block based structure level 1 dcl 3-5 block_pt 000102 automatic pointer dcl 23 set ref 89* 90 92 159 161* 161 brother 20 based pointer level 2 in structure "symbol" packed unaligned dcl 4-3 in procedure "gen_pl1_linkage" ref 242 brother 2 based pointer level 2 in structure "block" packed unaligned dcl 3-5 in procedure "gen_pl1_linkage" ref 161 builtin 31(16) based bit(1) level 4 packed unaligned dcl 4-3 ref 102 cg_static_$def_base 000032 external static pointer dcl 37 ref 180 194 205 cg_static_$def_pos 000024 external static fixed bin(18,0) dcl 37 set ref 184* 204 223* 223 cg_static_$def_reloc_base 000034 external static pointer dcl 37 ref 181 206 cg_static_$ext_proc_list 000042 external static pointer dcl 37 set ref 121 122* 172* cg_static_$ext_var_list 000044 external static pointer dcl 37 set ref 133 134* 172* cg_static_$generate_symtab 000060 external static bit(1) unaligned dcl 37 ref 87 198 cg_static_$last_def 000050 external static bit(18) dcl 37 set ref 183* 194 cg_static_$link_base 000036 external static pointer dcl 37 ref 201 cg_static_$link_begin 000030 external static fixed bin(18,0) dcl 37 set ref 175* cg_static_$link_pos 000026 external static fixed bin(18,0) dcl 37 set ref 138 174 226* cg_static_$link_reloc_base 000040 external static pointer dcl 37 ref 202 cg_static_$seg_def 000054 external static bit(18) dcl 37 ref 194 cg_static_$seg_name 000056 external static varying char(32) dcl 37 ref 188 cg_static_$star_symbol_up_zero 000046 external static bit(18) dcl 37 set ref 221* cg_static_$table_option 000062 external static bit(1) unaligned dcl 37 ref 87 199 cg_static_$use_type_6 000064 external static bit(1) unaligned dcl 37 ref 136 cg_static_$zero_def 000052 external static bit(18) dcl 37 set ref 182* 188* compile_link 000022 constant entry external dcl 30 ref 116 139 145 compiler_developed 32(35) based structure level 3 packed unaligned dcl 4-3 condition 31(14) based bit(1) level 4 packed unaligned dcl 4-3 ref 100 constant 32(16) based bit(1) level 4 packed unaligned dcl 4-3 ref 107 create_list 000010 constant entry external dcl 30 ref 119 131 data_type 31 based structure level 3 packed unaligned dcl 4-3 declaration 4 based pointer level 2 packed unaligned dcl 3-5 ref 92 def_header based structure level 1 dcl 63 def_pos 000121 automatic fixed bin(18,0) dcl 23 set ref 204* 205 206 211 218 def_ptr 000110 automatic pointer dcl 23 set ref 205* 208 209 211 def_reloc_ptr 000112 automatic pointer dcl 23 set ref 206* 212 defblock 2(18) based bit(18) level 2 packed unaligned dcl 7-3 set ref 194* element 1 based pointer array level 2 packed unaligned dcl 2-6 set ref 120* 121* 132* 133* entry 31(09) based bit(1) level 4 packed unaligned dcl 4-3 ref 107 error 000012 constant entry external dcl 30 ref 143 240 expr_word 1 based bit(18) level 2 packed unaligned dcl 56 set ref 218* external 32(02) based bit(1) level 4 packed unaligned dcl 4-3 ref 96 father 17 based pointer level 2 packed unaligned dcl 4-3 ref 103 fault_pair based structure level 1 dcl 56 fi_mod constant bit(6) initial unaligned dcl 49 ref 215 fixed builtin function dcl 28 ref 218 flags 1(18) based bit(18) level 2 packed unaligned dcl 63 set ref 180* gen_pl1_linkage 000016 constant entry external dcl 30 ref 160 generate_definition 000020 constant entry external dcl 30 ref 188 192 index builtin function dcl 28 ref 136 initial 11 based pointer level 2 packed unaligned dcl 4-3 ref 113 initialed 31(20) based bit(1) level 4 packed unaligned dcl 4-3 ref 143 240 initialize_ext_static 000014 constant entry external dcl 30 ref 139 139 link_pos 000122 automatic fixed bin(18,0) dcl 23 set ref 174* 175 175 175* 201 202 214 221 224* 224 226 link_ptr 000114 automatic pointer dcl 23 set ref 201* 214 215 218 link_reloc_ptr 000116 automatic pointer dcl 23 set ref 202* 216 219 list based structure level 1 dcl 2-6 loc 000120 automatic fixed bin(18,0) dcl 23 set ref 145* 235 location 1 based fixed bin(18,0) level 2 packed unsigned unaligned dcl 4-3 set ref 116* 138* 139* 145* 235* misc_attributes 31(19) based structure level 3 packed unaligned dcl 4-3 next 6 based pointer level 2 packed unaligned dcl 4-3 ref 154 no_runtime_symbol 000123 automatic bit(1) dcl 23 set ref 87* 97 node based structure level 1 dcl 6-27 null builtin function dcl 28 ref 90 93 103 113 143 143 148 160 172 234 237 240 240 p 000100 automatic pointer dcl 23 set ref 119* 120 121 122 131* 132 133 134 159* 160 160* pt parameter pointer dcl 21 in procedure "gen_pl1_linkage" ref 19 89 pt parameter pointer dcl 232 in procedure "fill_loc" ref 230 234 rc_dp constant bit(18) initial unaligned dcl 1-6 ref 181 212 219 rc_nlb constant bit(18) initial unaligned dcl 1-6 ref 216 reloc based bit(36) array dcl 71 set ref 181* 212* 216* 219* s 000100 automatic pointer dcl 232 set ref 234* 234* 235 237 237 240 240* 242 seg_id 1 based bit(18) level 2 packed unaligned dcl 51 set ref 209* segname_def based structure level 1 dcl 7-3 size 3 based fixed bin(9,0) level 2 dcl 5-3 ref 116 116 136 139 139 145 145 son 21 based pointer level 2 in structure "symbol" packed unaligned dcl 4-3 in procedure "gen_pl1_linkage" ref 148 148 237 237 son 3 based pointer level 2 in structure "block" packed unaligned dcl 3-5 in procedure "gen_pl1_linkage" ref 159 storage_class 32(09) based structure level 3 packed unaligned dcl 4-3 string 4 based char level 2 dcl 5-3 set ref 116* 136 139* 145* sym_pt 000104 automatic pointer dcl 23 set ref 92* 93 95 96 97 100 101 102 103 105 107 107 113 113 116 117 120 132 138 139 139* 139* 143 143* 145 148 148 152 154* 154 symbol based structure level 1 dcl 4-3 symbol_node constant bit(9) initial dcl 6-5 ref 95 tag 0(30) based bit(6) level 2 packed unaligned dcl 56 set ref 215* tok_pt 000106 automatic pointer dcl 23 set ref 105* 116 136 139 145 token 5 based pointer level 2 in structure "symbol" packed unaligned dcl 4-3 in procedure "gen_pl1_linkage" ref 105 token based structure level 1 dcl 5-3 in procedure "gen_pl1_linkage" type based bit(9) level 2 in structure "node" packed unaligned dcl 6-27 in procedure "gen_pl1_linkage" ref 95 type based bit(18) level 2 in structure "type_block" packed unaligned dcl 51 in procedure "gen_pl1_linkage" set ref 208* type_block based structure level 1 dcl 51 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. array_node internal static bit(9) initial dcl 6-5 block_node internal static bit(9) initial dcl 6-5 bound_node internal static bit(9) initial dcl 6-5 by_name_agg_node internal static bit(9) initial dcl 6-5 cg_static_$aos_array external static fixed bin(18,0) dcl 37 cg_static_$def_origin external static fixed bin(18,0) dcl 37 cg_static_$root external static pointer dcl 37 cg_static_$text_pos external static fixed bin(18,0) dcl 37 context_node internal static bit(9) initial dcl 6-5 cross_reference_node internal static bit(9) initial dcl 6-5 default_node internal static bit(9) initial dcl 6-5 first automatic bit(1) dcl 23 format_value_node internal static bit(9) initial dcl 6-5 label_array_element_node internal static bit(9) initial dcl 6-5 label_node internal static bit(9) initial dcl 6-5 list_node internal static bit(9) initial dcl 6-5 machine_state_node internal static bit(9) initial dcl 6-5 max_block_number internal static fixed bin(17,0) initial dcl 3-74 max_list_elements internal static fixed bin(17,0) initial dcl 2-12 n automatic fixed bin(18,0) dcl 23 operator_node internal static bit(9) initial dcl 6-5 rc_a internal static bit(18) initial unaligned dcl 1-6 rc_a_dp internal static bit(36) initial unaligned dcl 1-23 rc_dp_dp internal static bit(36) initial unaligned dcl 1-23 rc_dp_t internal static bit(36) initial unaligned dcl 45 rc_e internal static bit(18) initial unaligned dcl 1-6 rc_is15 internal static bit(18) initial unaligned dcl 1-6 rc_is18 internal static bit(18) initial unaligned dcl 1-6 rc_lb internal static bit(18) initial unaligned dcl 1-6 rc_lb_lb internal static bit(36) initial unaligned dcl 45 rc_lp15 internal static bit(18) initial unaligned dcl 1-6 rc_lp18 internal static bit(18) initial unaligned dcl 1-6 rc_nlp18 internal static bit(18) initial unaligned dcl 1-6 rc_ns internal static bit(18) initial unaligned dcl 1-6 rc_nt internal static bit(18) initial unaligned dcl 1-6 rc_s internal static bit(18) initial unaligned dcl 1-6 rc_sr internal static bit(18) initial unaligned dcl 1-6 rc_t internal static bit(18) initial unaligned dcl 1-6 reference_node internal static bit(9) initial dcl 6-5 rel builtin function dcl 28 sf_par_node internal static bit(9) initial dcl 6-5 source_node internal static bit(9) initial dcl 6-5 statement_node internal static bit(9) initial dcl 6-5 substr builtin function dcl 28 t_pt automatic pointer dcl 23 temporary_node internal static bit(9) initial dcl 6-5 token_node internal static bit(9) initial dcl 6-5 word based bit(36) array dcl 71 NAMES DECLARED BY EXPLICIT CONTEXT. done 000676 constant label dcl 226 ref 199 fill_loc 000702 constant entry internal dcl 230 ref 148 237 gen_pl1_linkage 000020 constant entry external dcl 19 gen_pl1_linkage$init_linkage 000452 constant entry external dcl 166 loop 000422 constant label dcl 154 ref 95 96 97 100 101 102 103 125 ml 000607 constant label dcl 201 ref 198 NAME DECLARED BY CONTEXT OR IMPLICATION. mod builtin function ref 175 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1276 1364 773 1306 Length 1722 773 66 322 302 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME gen_pl1_linkage 122 external procedure is an external procedure. fill_loc 84 internal procedure calls itself recursively. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME fill_loc 000100 s fill_loc gen_pl1_linkage 000100 p gen_pl1_linkage 000102 block_pt gen_pl1_linkage 000104 sym_pt gen_pl1_linkage 000106 tok_pt gen_pl1_linkage 000110 def_ptr gen_pl1_linkage 000112 def_reloc_ptr gen_pl1_linkage 000114 link_ptr gen_pl1_linkage 000116 link_reloc_ptr gen_pl1_linkage 000120 loc gen_pl1_linkage 000121 def_pos gen_pl1_linkage 000122 link_pos gen_pl1_linkage 000123 no_runtime_symbol gen_pl1_linkage THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs call_ext_out_desc call_ext_out call_int_this call_int_other return mod_fx1 shorten_stack ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. compile_link create_list error gen_pl1_linkage generate_definition initialize_ext_static THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. cg_static_$def_base cg_static_$def_pos cg_static_$def_reloc_base cg_static_$ext_proc_list cg_static_$ext_var_list cg_static_$generate_symtab cg_static_$last_def cg_static_$link_base cg_static_$link_begin cg_static_$link_pos cg_static_$link_reloc_base cg_static_$seg_def cg_static_$seg_name cg_static_$star_symbol_up_zero cg_static_$table_option cg_static_$use_type_6 cg_static_$zero_def LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 19 000015 87 000025 89 000031 90 000035 92 000042 93 000045 95 000052 96 000056 97 000062 100 000067 101 000072 102 000075 103 000100 105 000103 107 000105 113 000113 116 000121 117 000160 119 000162 120 000175 121 000200 122 000204 125 000205 131 000206 132 000221 133 000224 134 000230 136 000231 138 000246 139 000251 141 000320 143 000321 145 000342 148 000404 152 000417 154 000422 155 000425 159 000426 160 000431 161 000444 162 000447 164 000450 166 000451 172 000457 174 000463 175 000465 180 000472 181 000476 182 000501 183 000503 184 000504 188 000506 192 000541 194 000573 198 000603 199 000605 201 000607 202 000614 204 000620 205 000622 206 000626 208 000632 209 000634 211 000636 212 000643 214 000645 215 000650 216 000652 218 000654 219 000663 221 000665 223 000672 224 000674 226 000676 227 000700 230 000701 234 000707 235 000720 237 000725 240 000741 242 000764 244 000770 ----------------------------------------------------------- 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