COMPILATION LISTING OF SEGMENT le_emit_symbol_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Multics Op. - System M Compiled on: 12/10/86 1254.2 mst Wed Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1986 * 4* * * 5* *********************************************************** */ 6 7 /****^ HISTORY COMMENTS: 8* 1) change(86-08-12,Elhard), approve(86-08-12,MCR7505), 9* audit(86-12-10,DGHowe), install(86-12-10,MR12.0-1241): 10* Originally written to relocate and emit the symbol section for a single 11* input component. 12* END HISTORY COMMENTS */ 13 14 /* format: style1,insnl,ifthendo,indthenelse,^indnoniterdo,^inditerdo,indcom,^indthenbegin,^indprocbody,ind2,ll78,initcol0,dclind4,idind24,struclvlind1,comcol41 */ 15 16 le_emit_symbol_: 17 proc (ocudp, /** ocu data pointer (in ) */ 18 lecp, /** components pointer (i/o) */ 19 c); /** component index (in ) */ 20 21 /*** ****************************************************************/ 22 /*** */ 23 /*** Name: le_emit_symbol_ */ 24 /*** Input: ocudp, lecp, c */ 25 /*** Function: emits the symbol section of a single input */ 26 /*** component. */ 27 /*** Output: lecp */ 28 /*** */ 29 /*** ****************************************************************/ 30 31 /* constants */ 32 33 dcl true bit (1) static options (constant) init ("1"b); 34 dcl false bit (1) static options (constant) init ("0"b); 35 36 dcl Left fixed bin static options (constant) init (1); 37 dcl Right fixed bin static options (constant) init (2); 38 39 dcl Table_Removed_Mask bit (36) static options (constant) 40 init ("000000010000"b3); 41 dcl Root_Offset fixed bin (18) unsigned static options 42 (constant) init (5); 43 dcl Map_Offset fixed bin (18) unsigned static options 44 (constant) init (6); 45 dcl Flag_Offset fixed bin (18) unsigned static options 46 (constant) init (3); 47 48 /* parameters */ 49 50 dcl ocudp ptr parameter; 51 dcl lecp ptr parameter; 52 dcl c fixed bin parameter; 53 54 /* procedures */ 55 56 dcl le_error_ entry options (variable); 57 dcl le_snap_ entry (ptr, ptr, fixed bin, fixed bin (3), 58 uns fixed bin (18), uns fixed bin (18), bit (1), 59 fixed bin (3), uns fixed bin (18), bit (6), 60 bit (1)); 61 dcl le_util_$scan_relinfo entry (ptr, fixed bin, bit (1), fixed bin, 62 char (*)); 63 64 /* external */ 65 66 dcl le_et_$implementation_error 67 external fixed bin (35); 68 dcl le_et_$invalid_relinfo external fixed bin (35); 69 dcl le_et_$unsupported_relinfo 70 external fixed bin (35); 71 72 /* based */ 73 74 dcl based_word bit (36) aligned based; 75 dcl 01 comp aligned like le_comp based (compp); 76 dcl 01 lec aligned based (lecp), 77 02 header aligned like le_components.header, 78 02 comp dim (0 refer (lec.n_components)) like le_comp; 79 dcl 01 word18 aligned based (addr (word)), 80 02 side (1:2) fixed bin (18) unsigned unaligned; 81 82 /* automatic */ 83 84 dcl compp ptr automatic; 85 dcl internal bit (1) automatic; 86 dcl modifier bit (6) automatic; 87 dcl n_words fixed bin (18) unsigned automatic; 88 dcl odd bit (1) automatic; 89 dcl pad_words (1:16) bit (36) aligned automatic; 90 dcl rel char (2) automatic; 91 dcl relindex fixed bin automatic; 92 dcl relp fixed bin (18) unsigned automatic; 93 dcl relstr char (4096) varying automatic; 94 dcl relstrp ptr automatic; 95 dcl s fixed bin automatic; 96 dcl sbp ptr automatic; 97 dcl section fixed bin (3) automatic; 98 dcl size fixed bin (18) unsigned automatic; 99 dcl skip fixed bin automatic; 100 dcl start fixed bin (18) unsigned automatic; 101 dcl stat_relp fixed bin (18) unsigned automatic; 102 dcl symb_relp fixed bin (18) unsigned automatic; 103 dcl symbp ptr automatic; 104 dcl text_relp fixed bin (18) unsigned automatic; 105 dcl value fixed bin (35) automatic; 106 dcl word bit (36) aligned automatic; 107 108 /* builtin */ 109 110 dcl addr builtin; 111 dcl addrel builtin; 112 dcl copy builtin; 113 dcl fixed builtin; 114 dcl min builtin; 115 dcl null builtin; 116 dcl substr builtin; 117 118 compp = addr (lec.comp (c)); 119 relindex = 1; 120 odd = false; 121 n_words = 0; 122 symbp = comp.orig.symbp; 123 relstrp = addrel (addr (relstr), 1); 124 125 /* extract the relocation counters */ 126 127 text_relp = comp.new.rel_text; 128 stat_relp = comp.new.rel_stat; 129 symb_relp = comp.new.rel_symb; 130 131 /* pad the symbol section to put it on a doubleword boundary */ 132 133 if comp.new.symbol_pad > 0 134 then do; 135 n_words = comp.new.symbol_pad; 136 relstr = copy ("aa", n_words); 137 relp = ocu_$emit_symbol (ocudp, addr (pad_words), relstrp, n_words); 138 end; 139 140 start = 0; 141 n_words = 0; 142 143 /* emit the section */ 144 145 do while (n_words < comp.orig.symbl); 146 147 /* scan for a non-absolute word */ 148 149 call le_util_$scan_relinfo (comp.orig.rel_symbp, relindex, odd, skip, 150 rel); 151 152 /* emit the intervening words with absolute relocation */ 153 154 do while (skip > 0 & n_words < comp.orig.symbl); 155 size = min (2048, skip, comp.orig.symbl - n_words); 156 relstr = copy ("aa", size); 157 relp = ocu_$emit_symbol (ocudp, symbp, relstrp, size); 158 if start = 0 159 then start = relp; 160 skip = skip - size; 161 symbp = addrel (symbp, size); 162 n_words = n_words + size; 163 end; 164 165 /* copy the word to relocate */ 166 167 word = symbp -> based_word; 168 169 do s = Left to Right while (n_words < comp.orig.symbl); 170 171 /* for each halfword . . . */ 172 173 /* abrolute or self-relative */ 174 175 if substr (rel, s, 1) = "a" | substr (rel, s, 1) = "r" 176 then ; /* no relocation required */ 177 178 /* text relative */ 179 180 else if substr (rel, s, 1) = "t" | substr (rel, s, 1) = "1" 181 then do; 182 value = word18.side (s) + text_relp; 183 word18.side (s) = addr (value) -> word18.side (2); 184 end; 185 186 /* definition relative (not supported) */ 187 188 else if substr (rel, s, 1) = "d" 189 then call le_error_ (LE_FATAL_ERROR, le_et_$unsupported_relinfo, 190 "^/Relocation code ""^a"" found at symbol|^o in ^a.", 191 substr (rel, s, 1), n_words, comp.name); 192 193 /* 18 bit linkage reference */ 194 195 else if substr (rel, s, 1) = "2" | substr (rel, s, 1) = "3" 196 then do; 197 198 /* snap the link to its target and then make sure that the */ 199 /* reference is still to a link by emitting a type-1 link */ 200 /* to the target if the target is not a linkage reference. */ 201 202 call le_snap_ (ocudp, lecp, c, Symbol, n_words, (word18.side (s)), 203 false, section, relp, modifier, internal); 204 if section = Linkage 205 then word18.side (s) = relp; 206 else word18.side (s) = ocu_$emit_link (ocudp, Self_Base, section, 207 "", "", (relp), ""b, null); 208 end; 209 210 /* symbol reference */ 211 212 else if substr (rel, s, 1) = "s" | substr (rel, s, 1) = "7" 213 then do; 214 value = word18.side (s) + symb_relp; 215 word18.side (s) = addr (value) -> word18.side (Right); 216 end; 217 218 /* 18 bit static reference */ 219 220 else if substr (rel, s, 1) = "8" 221 then word18.side (s) = word18.side (s) + stat_relp; 222 else call le_error_ (LE_FATAL_ERROR, le_et_$invalid_relinfo, 223 "^/Relocation code ""^a"" found at symbol|^o in ^a.", 224 substr (rel, s, 1), n_words, comp.name); 225 end; 226 227 /* if not off the end, then emit the word */ 228 229 if n_words < comp.orig.symbl 230 then do; 231 relp = ocu_$emit_symbol (ocudp, addr (word), addr (rel), 1); 232 if start = 0 233 then start = relp; 234 n_words = n_words + 1; 235 symbp = addrel (symbp, 1); 236 end; 237 end; 238 239 /* make sure the section starts where we calculated that it would */ 240 241 if start ^= 0 & start ^= lec.comp (c).new.rel_symb 242 then call le_error_ (LE_ABORT_ERROR, le_et_$implementation_error, 243 "^/Symbol for ^a emitted at ^d instead of ^d as expected.", 244 lec.comp (c).name, start, lec.comp (c).new.rel_symb); 245 246 /* if we deleted the symbol table from the component, then patch */ 247 /* the pl1 symbol block to indicate that there is no table. */ 248 249 if start ^= 0 & lec.comp (c).flags.delete_table 250 then do; 251 sbp = lec.comp (c).symbp; 252 if sbp -> std_symbol_header.area_pointer ^= ""b 253 then do; 254 sbp = addrel (sbp, sbp -> std_symbol_header.area_pointer); 255 if sbp -> pl1_symbol_block.identifier = "pl1info" 256 then do; 257 258 /* clear the root offset */ 259 260 call ocu_$backpatch (ocudp, "symbol", start + Root_Offset, 261 "left 18 unsigned", 0); 262 263 /* clear the map start and length */ 264 265 call ocu_$backpatch (ocudp, "symbol", start + Map_Offset, 266 "left 18 unsigned", 0); 267 call ocu_$backpatch (ocudp, "symbol", start + Map_Offset, 268 "right 18 unsigned", 0); 269 270 /* copy the flag bits, mask the table_removed bit on, */ 271 /* and patch the halfword. */ 272 273 word = ""b; 274 word18.side (2) = 275 addr (sbp -> pl1_symbol_block.flags) -> word18.side (1); 276 word = word | Table_Removed_Mask; 277 call ocu_$backpatch (ocudp, "symbol", start + Flag_Offset, 278 "left 18 unsigned", fixed (word, 35)); 279 end; 280 end; 281 end; 282 283 return; 284 285 /**** * * * * * * * * * * * * * * * * * * * * * * * */ 286 287 /**** * * * * * * * * * * * * * * * * * * * * * * * */ 288 289 1 1 /**** START OF: le_data.incl.pl1 * * * * * */ 1 2 1 3 /****^ HISTORY COMMENTS: 1 4* 1) change(86-08-12,Elhard), approve(86-08-12,MCR7505), 1 5* audit(86-12-10,DGHowe), install(86-12-10,MR12.0-1241): 1 6* Originally written to define the structures used internally by le_. 1 7* END HISTORY COMMENTS */ 1 8 1 9 /*** ****************************************************************/ 1 10 /*** */ 1 11 /*** Name: le_data */ 1 12 /*** Function: This include file defines the data structures */ 1 13 /*** used internally by the linkage_editor subroutine. */ 1 14 /*** */ 1 15 /*** ****************************************************************/ 1 16 1 17 /* error severity constants */ 1 18 1 19 dcl LE_WARNING fixed bin static options (constant) init (1); 1 20 dcl LE_ERROR fixed bin static options (constant) init (2); 1 21 dcl LE_FATAL_ERROR fixed bin static options (constant) init (3); 1 22 dcl LE_ABORT_ERROR fixed bin static options (constant) init (4); 1 23 1 24 /* section identifier constants */ 1 25 1 26 dcl Text fixed bin (3) static options (constant) 1 27 init (0); 1 28 dcl Linkage fixed bin (3) static options (constant) 1 29 init (1); 1 30 dcl Symbol fixed bin (3) static options (constant) 1 31 init (2); 1 32 dcl Definition fixed bin (3) static options (constant) 1 33 init (3); 1 34 dcl Static fixed bin (3) static options (constant) 1 35 init (4); 1 36 dcl System fixed bin (3) static options (constant) 1 37 init (5); 1 38 dcl Heap fixed bin (3) static options (constant) 1 39 init (6); 1 40 1 41 dcl section_nm (0:6) char (16) static options (constant) 1 42 init ("text", "linkage", "symbol", "definition", 1 43 "static", "system", "heap"); 1 44 1 45 /* link type constants */ 1 46 1 47 dcl Self_Base fixed bin (3) static options (constant) 1 48 init (1); 1 49 dcl Refname_Base fixed bin (3) static options (constant) 1 50 init (3); 1 51 dcl Refname_Offsetname fixed bin (3) static options (constant) 1 52 init (4); 1 53 dcl Self_Offsetname fixed bin (3) static options (constant) 1 54 init (5); 1 55 1 56 /* backpatch type constants */ 1 57 1 58 dcl Patch_Link fixed bin static options (constant) init (1); 1 59 dcl Patch_Init fixed bin static options (constant) init (2); 1 60 dcl Patch_Symbol_Ref fixed bin static options (constant) init (3); 1 61 dcl Patch_Self_Init fixed bin static options (constant) init (4); 1 62 1 63 /*** ****************************************************************/ 1 64 /*** */ 1 65 /*** Name: le_components */ 1 66 /*** Function: the component table is used to keep information */ 1 67 /*** about the input components being used and their */ 1 68 /*** disposition in output components. */ 1 69 /*** */ 1 70 /*** ****************************************************************/ 1 71 1 72 dcl 01 le_components aligned based, 1 73 02 header aligned, 1 74 03 flags aligned, 1 75 04 separate_static bit (1) unaligned, 1 76 04 perprocess_static bit (1) unaligned, 1 77 04 mbz bit (34) unaligned, 1 78 03 n_components fixed bin, 1 79 02 comp (0 refer (le_components.n_components)) 1 80 like le_comp; 1 81 1 82 /*** ****************************************************************/ 1 83 /*** */ 1 84 /*** Name: le_comp */ 1 85 /*** Function: this is a single component table entry. */ 1 86 /*** */ 1 87 /*** ****************************************************************/ 1 88 1 89 dcl 01 le_comp aligned based, 1 90 02 segp ptr, 1 91 02 bc fixed bin (24), 1 92 02 uid bit (36) aligned, 1 93 02 dtcm fixed bin (71), 1 94 02 name char (32) varying, 1 95 02 path char (194) varying, 1 96 02 compiler char (8), 1 97 02 target fixed bin, 1 98 02 flags aligned, 1 99 03 library bit (1) unaligned, 1 100 03 include bit (1) unaligned, 1 101 03 delete_table bit (1) unaligned, 1 102 03 separate_static bit (1) unaligned, 1 103 03 io_table bit (1) unaligned, 1 104 03 unique_path bit (1) unaligned, 1 105 03 mbz bit (30) unaligned, 1 106 02 tables aligned, 1 107 03 lesp ptr, 1 108 03 ledp ptr, 1 109 03 lelp ptr, 1 110 02 orig aligned, 1 111 03 textp ptr, 1 112 03 defnp ptr, 1 113 03 linkp ptr, 1 114 03 statp ptr, 1 115 03 symbp ptr, 1 116 03 rel_textp ptr, 1 117 03 rel_symbp ptr, 1 118 03 rel_linkp ptr, 1 119 03 textl fixed bin (18) unsigned unaligned, 1 120 03 defnl fixed bin (18) unsigned unaligned, 1 121 03 linkl fixed bin (18) unsigned unaligned, 1 122 03 statl fixed bin (18) unsigned unaligned, 1 123 03 symbl fixed bin (18) unsigned unaligned, 1 124 03 symbl_no_rel fixed bin (18) unsigned unaligned, 1 125 03 symbl_no_table fixed bin (18) unsigned unaligned, 1 126 03 n_symb_blocks fixed bin (18) unsigned unaligned, 1 127 03 text_boundary fixed bin (9) unsigned unaligned, 1 128 03 static_boundary fixed bin (9) unsigned unaligned, 1 129 03 next_comp fixed bin (18) unsigned unaligned, 1 130 02 new aligned, 1 131 03 rel_text fixed bin (18) unsigned unaligned, 1 132 03 rel_symb fixed bin (18) unsigned unaligned, 1 133 03 rel_stat fixed bin (18) unsigned unaligned, 1 134 03 text_pad fixed bin (18) unsigned unaligned, 1 135 03 static_pad fixed bin (18) unsigned unaligned, 1 136 03 symbol_pad fixed bin (18) unsigned unaligned; 1 137 1 138 /*** ****************************************************************/ 1 139 /*** */ 1 140 /*** Name: le_segnames */ 1 141 /*** Function: the segname table is used for two purposes: */ 1 142 /*** - to determine the target components of links */ 1 143 /*** being resolved internally. */ 1 144 /*** - to determine the segname definitions to be */ 1 145 /*** emited for definitions being retained. */ 1 146 /*** */ 1 147 /*** ****************************************************************/ 1 148 1 149 dcl 01 le_segnames aligned based, 1 150 02 header aligned, 1 151 03 n_segnames fixed bin, 1 152 02 segname (segname_count refer (le_segnames.n_segnames)), 1 153 03 str char (32) varying, 1 154 03 relp fixed bin (18) unsigned unaligned, 1 155 03 pad bit (18) unaligned; 1 156 dcl segname_count fixed bin automatic; 1 157 1 158 /*** ****************************************************************/ 1 159 /*** */ 1 160 /*** Name: le_definitions */ 1 161 /*** Function: the definition table contains the definitions */ 1 162 /*** from the input components and is used to resolve */ 1 163 /*** link targets, and regenerate definition entries */ 1 164 /*** */ 1 165 /*** ****************************************************************/ 1 166 1 167 dcl 01 le_definitions aligned based, 1 168 02 header aligned, 1 169 03 n_defs fixed bin, 1 170 03 pad bit (36), 1 171 02 def (def_count refer (le_definitions.n_defs)) 1 172 like le_definition; 1 173 dcl def_count fixed bin automatic; 1 174 1 175 dcl 01 le_definition aligned based, 1 176 02 str char (256) varying, 1 177 02 type fixed bin (18) unsigned unaligned, 1 178 02 relp fixed bin (18) unsigned unaligned, 1 179 02 offset fixed bin (18) unsigned unaligned, 1 180 02 new_offset fixed bin (18) unsigned unaligned, 1 181 02 flags aligned, 1 182 03 force_retain bit (1) unaligned, 1 183 03 entrypoint bit (1) unaligned, 1 184 03 ignore bit (1) unaligned, 1 185 03 referenced bit (1) unaligned, 1 186 03 no_link bit (1) unaligned, 1 187 03 retain bit (1) unaligned, 1 188 03 delete bit (1) unaligned, 1 189 03 mbz bit (29) unaligned; 1 190 1 191 /*** ****************************************************************/ 1 192 /*** */ 1 193 /*** Name: le_options */ 1 194 /*** Function: the option table contains definition retention */ 1 195 /*** information. The input retentions options are */ 1 196 /*** ordered such that a linear search of the option */ 1 197 /*** table for the first matching starname will give */ 1 198 /*** the correct retention state. */ 1 199 /*** */ 1 200 /*** ****************************************************************/ 1 201 1 202 dcl 01 le_options aligned based, 1 203 02 header aligned, 1 204 03 n_opts fixed bin, 1 205 02 opt (0 refer (le_options.n_opts)), 1 206 03 type fixed bin (8) unaligned, 1 207 03 used bit (1) unaligned, 1 208 03 inhibit_error bit (1) unaligned, 1 209 03 class fixed bin (6) unaligned, 1 210 03 order fixed bin (17) unaligned, 1 211 03 segname char (32) unaligned, 1 212 03 ep_name char (256) unaligned; 1 213 1 214 /*** ****************************************************************/ 1 215 /*** */ 1 216 /*** Name: le_links */ 1 217 /*** Function: the link table contains information on all of the */ 1 218 /*** links in the input components. It is used to */ 1 219 /*** determine link targets, which library components */ 1 220 /*** will be included, and what init_info will be */ 1 221 /*** used, and where it will be placed. */ 1 222 /*** */ 1 223 /*** ****************************************************************/ 1 224 1 225 dcl 01 le_links aligned based, 1 226 02 header aligned, 1 227 03 offset_adjustment fixed bin (18), 1 228 03 n_links fixed bin, 1 229 02 link (link_count refer (le_links.n_links)) 1 230 like le_link; 1 231 dcl link_count fixed bin automatic; 1 232 1 233 dcl 01 le_link aligned based, 1 234 02 flags unaligned, 1 235 03 used bit (1), 1 236 03 mbx bit (35), 1 237 02 type fixed bin (6) unsigned unaligned, 1 238 02 class fixed bin (6) unsigned unaligned, 1 239 02 mod bit (6) unaligned, 1 240 02 exp fixed bin (17) unaligned, 1 241 02 target fixed bin (18) unsigned unaligned, 1 242 02 defx fixed bin (18) unsigned unaligned, 1 243 02 relp fixed bin (18) unsigned unaligned, 1 244 02 target_comp fixed bin (18) unsigned unaligned, 1 245 02 target_link fixed bin (18) unsigned unaligned, 1 246 02 extension fixed bin (18) unsigned unaligned, 1 247 02 initp ptr unaligned, 1 248 02 segnamep ptr unaligned, 1 249 02 offsetp ptr unaligned; 1 250 1 251 /*** ****************************************************************/ 1 252 /*** */ 1 253 /*** Name: le_binaries */ 1 254 /*** Function: This table contains information about the output */ 1 255 /*** binaries. It is primarily used for creation and */ 1 256 /*** backpatching of MSF output. */ 1 257 /*** */ 1 258 /*** ****************************************************************/ 1 259 1 260 dcl 01 le_binaries aligned based, 1 261 02 header aligned, 1 262 03 n_binaries fixed bin, 1 263 03 pad bit (36), 1 264 02 binary (0:0 refer (le_binaries.n_binaries)), 1 265 03 segp ptr, 1 266 03 bc fixed bin (24), 1 267 03 uid bit (36), 1 268 03 aclc fixed bin, 1 269 03 aclp ptr, 1 270 03 textp ptr, 1 271 03 defnp ptr, 1 272 03 linkp ptr, 1 273 03 symbp ptr, 1 274 03 statp ptr, 1 275 03 textl fixed bin (18) unsigned unaligned, 1 276 03 defnl fixed bin (18) unsigned unaligned, 1 277 03 linkl fixed bin (18) unsigned unaligned, 1 278 03 symbl fixed bin (18) unsigned unaligned, 1 279 03 statl fixed bin (18) unsigned unaligned, 1 280 03 mbz2 bit (18) unaligned; 1 281 1 282 /*** ****************************************************************/ 1 283 /*** */ 1 284 /*** Name: le_patches */ 1 285 /*** Function: This table contains the list of backpatches to be */ 1 286 /*** performed when the rest of the object creation is */ 1 287 /*** complete. Since le_backpatch_ is the only routine */ 1 288 /*** concerned with this, it is maintained completely */ 1 289 /*** internal to le_backpatch_. */ 1 290 /*** */ 1 291 /*** ****************************************************************/ 1 292 1 293 dcl 01 le_patches aligned based, 1 294 02 header aligned, 1 295 03 n_patches fixed bin, 1 296 02 patch (0 refer (le_patches.n_patches)) like le_patch; 1 297 1 298 dcl 01 le_patch aligned based, 1 299 02 type fixed bin, 1 300 02 comp fixed bin, 1 301 02 relp fixed bin (18) unsigned, 1 302 02 target fixed bin, 1 303 02 index fixed bin; 1 304 1 305 /**** END OF: le_data.incl.pl1 * * * * * */ 290 2 1 dcl 1 std_symbol_header based aligned, 2 2 2 dcl_version fixed bin, 2 3 2 identifier char(8), 2 4 2 gen_number fixed bin, 2 5 2 gen_created fixed bin(71), 2 6 2 object_created fixed bin(71), 2 7 2 generator char(8), 2 8 2 gen_version unaligned, 2 9 3 offset bit(18), 2 10 3 size bit(18), 2 11 2 userid unaligned, 2 12 3 offset bit(18), 2 13 3 size bit(18), 2 14 2 comment unaligned, 2 15 3 offset bit(18), 2 16 3 size bit(18), 2 17 2 text_boundary bit(18) unaligned, 2 18 2 stat_boundary bit(18) unaligned, 2 19 2 source_map bit(18) unaligned, 2 20 2 area_pointer bit(18) unaligned, 2 21 2 backpointer bit(18) unaligned, 2 22 2 block_size bit(18) unaligned, 2 23 2 next_block bit(18) unaligned, 2 24 2 rel_text bit(18) unaligned, 2 25 2 rel_def bit(18) unaligned, 2 26 2 rel_link bit(18) unaligned, 2 27 2 rel_symbol bit(18) unaligned, 2 28 2 mini_truncate bit(18) unaligned, 2 29 2 maxi_truncate bit(18) unaligned; 291 3 1 dcl 1 pl1_symbol_block aligned based, 3 2 2 version fixed bin, 3 3 2 identifier char(8), /* must be "pl1info" */ 3 4 2 flags, 3 5 3 profile bit(1) unal, 3 6 3 table bit(1) unal, 3 7 3 map bit(1) unal, 3 8 3 flow bit(1) unal, 3 9 3 io bit(1) unal, 3 10 3 table_removed bit(1) unal, 3 11 3 long_profile bit(1) unal, 3 12 3 pad bit(29) unal, 3 13 2 greatest_severity fixed bin, 3 14 2 root unal bit(18), 3 15 2 profile unal bit(18), 3 16 2 map unal, 3 17 3 first bit(18), 3 18 3 last bit(18), 3 19 2 segname unaligned, 3 20 3 offset bit(18), 3 21 3 size bit(18); 292 4 1 /* START OF: ocu_dcls.incl.pl1 * * * * * */ 4 2 4 3 /****^ HISTORY COMMENTS: 4 4* 1) change(86-08-12,Elhard), approve(86-08-12,MCR7505), 4 5* audit(86-12-10,DGHowe), install(86-12-10,MR12.0-1241): 4 6* Originally written to define the subroutines and data structures used by 4 7* callers of ocu_. 4 8* END HISTORY COMMENTS */ 4 9 4 10 /*** ****************************************************************/ 4 11 /*** */ 4 12 /*** Name: ocu_dcls */ 4 13 /*** Function: These are the entrypoints and structures required */ 4 14 /*** to use the ocu_ object creation utilities. */ 4 15 /*** */ 4 16 /*** ****************************************************************/ 4 17 4 18 /* open option flags */ 4 19 4 20 dcl OPEN_FLAGS_BOUND bit (6) static options (constant) 4 21 init ("100000"b); 4 22 dcl OPEN_FLAGS_RELOCATABLE bit (6) static options (constant) 4 23 init ("010000"b); 4 24 dcl OPEN_FLAGS_PROCEDURE bit (6) static options (constant) 4 25 init ("001000"b); 4 26 dcl OPEN_FLAGS_SEPARATE_STATIC 4 27 bit (6) static options (constant) 4 28 init ("000100"b); 4 29 dcl OPEN_FLAGS_PERPROCESS_STATIC 4 30 bit (6) static options (constant) 4 31 init ("000010"b); 4 32 dcl OPEN_FLAGS_NO_HASHTABLE bit (6) static options (constant) 4 33 init ("000001"b); 4 34 4 35 /* definition flags */ 4 36 4 37 dcl DEFINITION_FLAGS_IGNORE bit (4) static options (constant) init ("1000"b); 4 38 dcl DEFINITION_FLAGS_ENTRY bit (4) static options (constant) init ("0100"b); 4 39 dcl DEFINITION_FLAGS_RETAIN bit (4) static options (constant) init ("0010"b); 4 40 dcl DEFINITION_FLAGS_INDIRECT 4 41 bit (4) static options (constant) init ("0001"b); 4 42 4 43 /* input structures */ 4 44 4 45 dcl word_arrayp ptr; 4 46 dcl word_arrayl fixed bin (18) unsigned; 4 47 4 48 dcl word_array(word_arrayl) bit (36) based (word_arrayp); 4 49 4 50 dcl reloc_strp ptr; 4 51 dcl reloc_strl fixed bin (21); 4 52 4 53 dcl reloc_str char (reloc_strl) based (reloc_strp); 4 54 4 55 dcl component_listp ptr; 4 56 dcl component_count fixed bin (15) unsigned; 4 57 4 58 dcl component_list (1:component_count) 4 59 ptr based (component_listp); 4 60 4 61 dcl 01 gen_info aligned based, 4 62 02 gen_created fixed bin (71), 4 63 02 generator char (8), 4 64 02 gen_number fixed bin, 4 65 02 gen_version char (512) varying; 4 66 4 67 /* entrypoint declarations */ 4 68 4 69 dcl ocu_$open /* setup to create an object */ 4 70 entry (char(*), /* directory name (in ) */ 4 71 char(*), /* entry name (in ) */ 4 72 bit(*), /* option flags (in ) */ 4 73 ptr, /* ocu_data pointer (out) */ 4 74 fixed bin(35)); /* error code (out) */ 4 75 4 76 dcl ocu_$close /* create the object segment */ 4 77 entry (ptr, /* ocu_data pointer (in ) */ 4 78 fixed bin(35)); /* error code (out) */ 4 79 4 80 dcl ocu_$release /* release storage on cleanup */ 4 81 entry (ptr); /* ocu_data pointer (in ) */ 4 82 4 83 dcl ocu_$emit_text /* emit a block of text words */ 4 84 entry (ptr, /* ocu_data pointer (in ) */ 4 85 ptr, /* word array pointer (in ) */ 4 86 ptr, /* reloc string pointer (in ) */ 4 87 fixed bin (18) uns) /* word count (in ) */ 4 88 returns(fixed bin (18) uns); /* text relp (out) */ 4 89 4 90 dcl ocu_$emit_definition /* emit a single definition entry */ 4 91 entry (ptr, /* ocu_data pointer (in ) */ 4 92 char(*) var, /* definition name (in ) */ 4 93 fixed bin (3), /* target section (in ) */ 4 94 fixed bin (18) uns, /* offset in section (in ) */ 4 95 bit(*)) /* definition flags (in ) */ 4 96 returns(fixed bin (18) uns); /* definition relp (out) */ 4 97 4 98 dcl ocu_$emit_segname /* emit a single segname definition */ 4 99 entry (ptr, /* ocu_data pointer (in ) */ 4 100 char(*) var, /* segname (in ) */ 4 101 bit(*)) /* definition flags (in ) */ 4 102 returns(fixed bin (18) uns); /* definition relp (out) */ 4 103 4 104 dcl ocu_$emit_msf_map /* emit an msf map (MSF components) */ 4 105 entry (ptr, /* ocu_data pointer (in ) */ 4 106 fixed bin (15) uns, /* component count (in ) */ 4 107 fixed bin (15) uns); /* my component (in ) */ 4 108 4 109 dcl ocu_$emit_static /* emit a block of static words */ 4 110 entry (ptr, /* ocu_data pointer (in ) */ 4 111 ptr, /* word array pointer (in ) */ 4 112 fixed bin (18) uns) /* word count (in ) */ 4 113 returns(fixed bin (18) uns); /* static relp (out) */ 4 114 4 115 dcl ocu_$emit_link /* emit a single external link */ 4 116 entry (ptr, /* ocu_data pointer (in ) */ 4 117 fixed bin (3), /* link type (in ) */ 4 118 fixed bin (3), /* link class (in ) */ 4 119 char(*) var, /* target refname (in ) */ 4 120 char(*) var, /* target definition (in ) */ 4 121 fixed bin, /* expression offset (in ) */ 4 122 bit(6), /* link modifier (in ) */ 4 123 ptr) /* init info pointer (in ) */ 4 124 returns(fixed bin (18) uns); /* link relp (out) */ 4 125 4 126 dcl ocu_$emit_partial_link /* emit a single partial link */ 4 127 entry (ptr, /* ocu_data pointer (in ) */ 4 128 fixed bin (15) uns, /* target component (in ) */ 4 129 fixed bin (3), /* target section (in ) */ 4 130 fixed bin (18) uns, /* offset in section (in ) */ 4 131 bit(6)) /* link modifier (in ) */ 4 132 returns(fixed bin (18) uns); /* link relp (out) */ 4 133 4 134 dcl ocu_$emit_firstref_trap /* add a trap to the firstref block */ 4 135 entry (ptr, /* ocu_data pointer (in ) */ 4 136 fixed bin (18) uns, /* call relp (in ) */ 4 137 fixed bin (18) uns); /* info relp (in ) */ 4 138 4 139 dcl ocu_$emit_symbol /* emit a block of symbol words */ 4 140 entry (ptr, /* ocu_data pointer (in ) */ 4 141 ptr, /* word array pointer (in ) */ 4 142 ptr, /* reloc string pointer (in ) */ 4 143 fixed bin (18) uns) /* word count (in ) */ 4 144 returns(fixed bin (18) uns); /* symbol relp (out) */ 4 145 4 146 dcl ocu_$backpatch /* patch a word in the text/symbol scn */ 4 147 entry (ptr, /* ocu_data pointer (in ) */ 4 148 char(*), /* section (in ) */ 4 149 fixed bin (18) uns, /* offset in section (in ) */ 4 150 char(*), /* side and size (in ) */ 4 151 fixed bin (35)); /* new value to patch (in ) */ 4 152 4 153 dcl ocu_$create_msf /* create component 0 of the MSF */ 4 154 entry (ptr, /* component array ptr (in ) */ 4 155 fixed bin (15) uns, /* component count (in ) */ 4 156 ptr, /* generator info ptr (in ) */ 4 157 fixed bin(35)); /* error code (out) */ 4 158 4 159 /* END OF: ocu_dcls.incl.pl1 * * * * * */ 293 294 295 end le_emit_symbol_; 296 SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 12/10/86 1251.4 le_emit_symbol_.pl1 >special_ldd>install>MR12.0-1241>le_emit_symbol_.pl1 290 1 12/10/86 1248.4 le_data.incl.pl1 >special_ldd>install>MR12.0-1241>le_data.incl.pl1 291 2 05/06/74 1751.6 std_symbol_header.incl.pl1 >ldd>include>std_symbol_header.incl.pl1 292 3 03/10/77 1345.4 pl1_symbol_block.incl.pl1 >ldd>include>pl1_symbol_block.incl.pl1 293 4 12/10/86 1248.0 ocu_dcls.incl.pl1 >special_ldd>install>MR12.0-1241>ocu_dcls.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. Flag_Offset constant fixed bin(18,0) initial unsigned dcl 45 ref 277 LE_ABORT_ERROR 000020 constant fixed bin(17,0) initial dcl 1-22 set ref 241* LE_FATAL_ERROR 000021 constant fixed bin(17,0) initial dcl 1-21 set ref 188* 222* Left constant fixed bin(17,0) initial dcl 36 ref 169 Linkage constant fixed bin(3,0) initial dcl 1-28 ref 204 Map_Offset constant fixed bin(18,0) initial unsigned dcl 43 ref 265 267 Right constant fixed bin(17,0) initial dcl 37 ref 169 215 Root_Offset constant fixed bin(18,0) initial unsigned dcl 41 ref 260 Self_Base 000024 constant fixed bin(3,0) initial dcl 1-47 set ref 206* Symbol 000023 constant fixed bin(3,0) initial dcl 1-30 set ref 202* Table_Removed_Mask constant bit(36) initial unaligned dcl 39 ref 276 addr builtin function dcl 110 ref 118 123 137 137 182 183 183 202 204 206 214 215 215 220 220 231 231 231 231 274 274 addrel builtin function dcl 111 ref 123 161 235 254 area_pointer 16(18) based bit(18) level 2 packed unaligned dcl 2-1 ref 252 254 based_word based bit(36) dcl 74 ref 167 c parameter fixed bin(17,0) dcl 52 set ref 16 118 202* 241 241 241 249 251 comp based structure level 1 dcl 75 in procedure "le_emit_symbol_" comp 2 based structure array level 2 in structure "lec" dcl 76 in procedure "le_emit_symbol_" set ref 118 compp 000100 automatic pointer dcl 84 set ref 118* 122 127 128 129 133 135 145 149 154 155 169 188 222 229 copy builtin function dcl 112 ref 136 156 delete_table 106(02) based bit(1) array level 4 packed unaligned dcl 76 set ref 249 false 000016 constant bit(1) initial unaligned dcl 34 set ref 120 202* fixed builtin function dcl 113 ref 277 277 flags 106 based structure array level 3 in structure "lec" dcl 76 in procedure "le_emit_symbol_" flags 3 based structure level 2 in structure "pl1_symbol_block" dcl 3-1 in procedure "le_emit_symbol_" set ref 274 header based structure level 2 dcl 1-72 identifier 1 based char(8) level 2 dcl 3-1 ref 255 internal 000102 automatic bit(1) unaligned dcl 85 set ref 202* le_comp based structure level 1 dcl 1-89 le_components based structure level 1 dcl 1-72 le_definition based structure level 1 dcl 1-175 le_error_ 000010 constant entry external dcl 56 ref 188 222 241 le_et_$implementation_error 000016 external static fixed bin(35,0) dcl 66 set ref 241* le_et_$invalid_relinfo 000020 external static fixed bin(35,0) dcl 68 set ref 222* le_et_$unsupported_relinfo 000022 external static fixed bin(35,0) dcl 69 set ref 188* le_link based structure level 1 dcl 1-233 le_patch based structure level 1 dcl 1-298 le_snap_ 000012 constant entry external dcl 57 ref 202 le_util_$scan_relinfo 000014 constant entry external dcl 61 ref 149 lec based structure level 1 dcl 76 lecp parameter pointer dcl 51 set ref 16 118 202* 241 241 241 249 251 min builtin function dcl 114 ref 155 modifier 000103 automatic bit(6) unaligned dcl 86 set ref 202* n_words 000104 automatic fixed bin(18,0) unsigned dcl 87 set ref 121* 135* 136 137* 141* 145 154 155 162* 162 169 188* 202* 222* 229 234* 234 name 6 based varying char(32) level 2 in structure "comp" dcl 75 in procedure "le_emit_symbol_" set ref 188* 222* name 10 based varying char(32) array level 3 in structure "lec" dcl 76 in procedure "le_emit_symbol_" set ref 241* new 141 based structure level 2 in structure "comp" dcl 75 in procedure "le_emit_symbol_" new 143 based structure array level 3 in structure "lec" dcl 76 in procedure "le_emit_symbol_" null builtin function dcl 115 ref 206 206 ocu_$backpatch 000030 constant entry external dcl 4-146 ref 260 265 267 277 ocu_$emit_link 000024 constant entry external dcl 4-115 ref 206 ocu_$emit_symbol 000026 constant entry external dcl 4-139 ref 137 157 231 ocudp parameter pointer dcl 50 set ref 16 137* 157* 202* 206* 231* 260* 265* 267* 277* odd 000105 automatic bit(1) unaligned dcl 88 set ref 120* 149* orig 114 based structure level 2 in structure "comp" dcl 75 in procedure "le_emit_symbol_" orig 116 based structure array level 3 in structure "lec" dcl 76 in procedure "le_emit_symbol_" pad_words 000106 automatic bit(36) array dcl 89 set ref 137 137 pl1_symbol_block based structure level 1 dcl 3-1 rel 000126 automatic char(2) unaligned dcl 90 set ref 149* 175 175 180 180 188 188 188 195 195 212 212 220 222 222 231 231 rel_stat 142 based fixed bin(18,0) level 3 packed unsigned unaligned dcl 75 ref 128 rel_symb 143(18) based fixed bin(18,0) array level 4 in structure "lec" packed unsigned unaligned dcl 76 in procedure "le_emit_symbol_" set ref 241 241* rel_symb 141(18) based fixed bin(18,0) level 3 in structure "comp" packed unsigned unaligned dcl 75 in procedure "le_emit_symbol_" ref 129 rel_symbp 130 based pointer level 3 dcl 75 set ref 149* rel_text 141 based fixed bin(18,0) level 3 packed unsigned unaligned dcl 75 ref 127 relindex 000127 automatic fixed bin(17,0) dcl 91 set ref 119* 149* relp 000130 automatic fixed bin(18,0) unsigned dcl 92 set ref 137* 157* 158 202* 204 206 231* 232 relstr 000131 automatic varying char(4096) dcl 93 set ref 123 136* 156* relstrp 002132 automatic pointer dcl 94 set ref 123* 137* 157* s 002134 automatic fixed bin(17,0) dcl 95 set ref 169* 175 175 180 180 182 183 188 188 188 195 195 202 204 206 212 212 214 215 220 220 220 222 222* sbp 002136 automatic pointer dcl 96 set ref 251* 252 254* 254 254 255 274 section 002140 automatic fixed bin(3,0) dcl 97 set ref 202* 204 206* side based fixed bin(18,0) array level 2 packed unsigned unaligned dcl 79 set ref 182 183* 183 202 204* 206* 214 215* 215 220* 220 274* 274 size 002141 automatic fixed bin(18,0) unsigned dcl 98 set ref 155* 156 157* 160 161 162 skip 002142 automatic fixed bin(17,0) dcl 99 set ref 149* 154 155 160* 160 start 002143 automatic fixed bin(18,0) unsigned dcl 100 set ref 140* 158 158* 232 232* 241 241 241* 249 260 265 267 277 stat_relp 002144 automatic fixed bin(18,0) unsigned dcl 101 set ref 128* 220 std_symbol_header based structure level 1 dcl 2-1 substr builtin function dcl 116 ref 175 175 180 180 188 188 188 195 195 212 212 220 222 222 symb_relp 002145 automatic fixed bin(18,0) unsigned dcl 102 set ref 129* 214 symbl 136 based fixed bin(18,0) level 3 packed unsigned unaligned dcl 75 ref 145 154 155 169 229 symbol_pad 143(18) based fixed bin(18,0) level 3 packed unsigned unaligned dcl 75 ref 133 135 symbp 126 based pointer array level 4 in structure "lec" dcl 76 in procedure "le_emit_symbol_" set ref 251 symbp 124 based pointer level 3 in structure "comp" dcl 75 in procedure "le_emit_symbol_" ref 122 symbp 002146 automatic pointer dcl 103 in procedure "le_emit_symbol_" set ref 122* 157* 161* 161 167 235* 235 text_relp 002150 automatic fixed bin(18,0) unsigned dcl 104 set ref 127* 182 value 002151 automatic fixed bin(35,0) dcl 105 set ref 182* 183 214* 215 word 002152 automatic bit(36) dcl 106 set ref 167* 182 183 202 204 206 214 215 220 220 231 231 273* 274 276* 276 277 277 word18 based structure level 1 dcl 79 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. DEFINITION_FLAGS_ENTRY internal static bit(4) initial unaligned dcl 4-38 DEFINITION_FLAGS_IGNORE internal static bit(4) initial unaligned dcl 4-37 DEFINITION_FLAGS_INDIRECT internal static bit(4) initial unaligned dcl 4-40 DEFINITION_FLAGS_RETAIN internal static bit(4) initial unaligned dcl 4-39 Definition internal static fixed bin(3,0) initial dcl 1-32 Heap internal static fixed bin(3,0) initial dcl 1-38 LE_ERROR internal static fixed bin(17,0) initial dcl 1-20 LE_WARNING internal static fixed bin(17,0) initial dcl 1-19 OPEN_FLAGS_BOUND internal static bit(6) initial unaligned dcl 4-20 OPEN_FLAGS_NO_HASHTABLE internal static bit(6) initial unaligned dcl 4-32 OPEN_FLAGS_PERPROCESS_STATIC internal static bit(6) initial unaligned dcl 4-29 OPEN_FLAGS_PROCEDURE internal static bit(6) initial unaligned dcl 4-24 OPEN_FLAGS_RELOCATABLE internal static bit(6) initial unaligned dcl 4-22 OPEN_FLAGS_SEPARATE_STATIC internal static bit(6) initial unaligned dcl 4-26 Patch_Init internal static fixed bin(17,0) initial dcl 1-59 Patch_Link internal static fixed bin(17,0) initial dcl 1-58 Patch_Self_Init internal static fixed bin(17,0) initial dcl 1-61 Patch_Symbol_Ref internal static fixed bin(17,0) initial dcl 1-60 Refname_Base internal static fixed bin(3,0) initial dcl 1-49 Refname_Offsetname internal static fixed bin(3,0) initial dcl 1-51 Self_Offsetname internal static fixed bin(3,0) initial dcl 1-53 Static internal static fixed bin(3,0) initial dcl 1-34 System internal static fixed bin(3,0) initial dcl 1-36 Text internal static fixed bin(3,0) initial dcl 1-26 component_count automatic fixed bin(15,0) unsigned dcl 4-56 component_list based pointer array dcl 4-58 component_listp automatic pointer dcl 4-55 def_count automatic fixed bin(17,0) dcl 1-173 gen_info based structure level 1 dcl 4-61 le_binaries based structure level 1 dcl 1-260 le_definitions based structure level 1 dcl 1-167 le_links based structure level 1 dcl 1-225 le_options based structure level 1 dcl 1-202 le_patches based structure level 1 dcl 1-293 le_segnames based structure level 1 dcl 1-149 link_count automatic fixed bin(17,0) dcl 1-231 ocu_$close 000000 constant entry external dcl 4-76 ocu_$create_msf 000000 constant entry external dcl 4-153 ocu_$emit_definition 000000 constant entry external dcl 4-90 ocu_$emit_firstref_trap 000000 constant entry external dcl 4-134 ocu_$emit_msf_map 000000 constant entry external dcl 4-104 ocu_$emit_partial_link 000000 constant entry external dcl 4-126 ocu_$emit_segname 000000 constant entry external dcl 4-98 ocu_$emit_static 000000 constant entry external dcl 4-109 ocu_$emit_text 000000 constant entry external dcl 4-83 ocu_$open 000000 constant entry external dcl 4-69 ocu_$release 000000 constant entry external dcl 4-80 reloc_str based char unaligned dcl 4-53 reloc_strl automatic fixed bin(21,0) dcl 4-51 reloc_strp automatic pointer dcl 4-50 section_nm internal static char(16) initial array unaligned dcl 1-41 segname_count automatic fixed bin(17,0) dcl 1-156 true internal static bit(1) initial unaligned dcl 33 word_array based bit(36) array unaligned dcl 4-48 word_arrayl automatic fixed bin(18,0) unsigned dcl 4-46 word_arrayp automatic pointer dcl 4-45 NAME DECLARED BY EXPLICIT CONTEXT. le_emit_symbol_ 000103 constant entry external dcl 16 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1514 1546 1362 1524 Length 2034 1362 32 251 131 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME le_emit_symbol_ 1246 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME le_emit_symbol_ 000100 compp le_emit_symbol_ 000102 internal le_emit_symbol_ 000103 modifier le_emit_symbol_ 000104 n_words le_emit_symbol_ 000105 odd le_emit_symbol_ 000106 pad_words le_emit_symbol_ 000126 rel le_emit_symbol_ 000127 relindex le_emit_symbol_ 000130 relp le_emit_symbol_ 000131 relstr le_emit_symbol_ 002132 relstrp le_emit_symbol_ 002134 s le_emit_symbol_ 002136 sbp le_emit_symbol_ 002140 section le_emit_symbol_ 002141 size le_emit_symbol_ 002142 skip le_emit_symbol_ 002143 start le_emit_symbol_ 002144 stat_relp le_emit_symbol_ 002145 symb_relp le_emit_symbol_ 002146 symbp le_emit_symbol_ 002150 text_relp le_emit_symbol_ 002151 value le_emit_symbol_ 002152 word le_emit_symbol_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac shorten_stack ext_entry repeat set_chars_eis THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. le_error_ le_snap_ le_util_$scan_relinfo ocu_$backpatch ocu_$emit_link ocu_$emit_symbol THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. le_et_$implementation_error le_et_$invalid_relinfo le_et_$unsupported_relinfo LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 16 000077 118 000110 119 000117 120 000121 121 000122 122 000123 123 000125 127 000131 128 000134 129 000137 133 000142 135 000145 136 000146 137 000164 140 000206 141 000207 145 000210 149 000215 154 000245 155 000257 156 000272 157 000310 158 000331 160 000335 161 000337 162 000343 163 000344 167 000345 169 000347 175 000364 180 000376 182 000402 183 000414 184 000417 188 000420 195 000464 202 000470 204 000535 206 000550 208 000636 212 000637 214 000643 215 000655 216 000661 220 000662 222 000703 225 000744 229 000746 231 000753 232 001001 234 001005 235 001006 237 001011 241 001012 249 001075 251 001111 252 001113 254 001116 255 001120 260 001126 265 001171 267 001235 273 001303 274 001304 276 001310 277 001312 283 001360 ----------------------------------------------------------- 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