COMPILATION LISTING OF SEGMENT make_defs_ Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: CGI Compiled on: 2000-04-17_1947.20_Mon_mdt Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 7 8 /****^ HISTORY COMMENTS: 9* 1) change(85-09-24,Elhard), approve(85-09-24,MCR7198), 10* audit(86-06-30,Weaver), install(86-07-16,MR12.0-1094): 11* Improved documentation and readablilty, changed errname to use caller 12* supplied name instead of "binder_". 13* END HISTORY COMMENTS */ 14 15 16 /* format: style3,^indnoniterdo */ 17 18 /* ****************************************************** 19* * * 20* * * 21* * Copyright (c) 1972 by Massachusetts Institute of * 22* * Technology and Honeywell Information Systems, Inc. * 23* * * 24* * * 25* ****************************************************** */ 26 27 /* ****************************************************** 28* * * 29* * * 30* * Copyright (c) 1978 by Massachusetts Institute of * 31* * Technology and Honeywell Information Systems, Inc. * 32* * * 33* * * 34* ****************************************************** */ 35 36 37 /* Designed and initially coded by Michael J. Spier, October 6, 1970 */ 38 /* Modified Sept 1978 by David Spector for hash-coding strm */ 39 40 make_defs_: 41 procedure; 42 43 44 /* DECLARATION OF EXTERNAL SYMBOLS */ 45 46 declare com_err_ external entry options (variable); 47 declare generate_def_ external entry (pointer, pointer); 48 declare hash_defs_ external entry; 49 declare strm_hash_$make_entry 50 external entry (char (*), fixed bin (17)); 51 52 /* DECLARATION OF INTERNAL STATIC VARIABLES */ 53 54 declare (defbase, linkbase, last_def, last_segname) 55 pointer internal static; 56 declare errname char (16) aligned internal static; 57 declare last_def_rel fixed bin aligned internal static; 58 59 /* DECLARATION OF AUTOMATIC STORAGE VARIABLES */ 60 61 declare (i, j, ndefs) fixed bin; 62 declare (ip, sp) pointer; 63 declare (defblock_head, segblock_head, rel_ptr) 64 fixed bin aligned; 65 declare temp_name char (32) varying; 66 declare newignore bit (1) aligned; 67 68 /* DECLARATION OF BUILTIN FUNCTIONS */ 69 70 declare (addr, addrel, bin, bit, divide, fixed, length, null, rtrim, substr) 71 builtin; 72 73 /* DECLARATION OF BASED VARIABLES */ 74 75 declare acc_string_overlay char (acc_string.count + 1) based (acc_string_ptr); 76 declare 01 last_definition aligned like definition based (last_def); 77 78 /* */ 79 1 1 /**** START OF: bindext.incl.pl1 * * * * * */ 1 2 1 3 1 4 /****^ HISTORY COMMENTS: 1 5* 1) change(86-06-14,Elhard), approve(86-06-14,MCR7198), 1 6* audit(86-06-30,Weaver): 1 7* Added declarations for bx_$caller and bx_$temp_bsegp. 1 8* END HISTORY COMMENTS */ 1 9 1 10 /* DECLARATION OF BINDER'S MAIN DATABASE */ 1 11 1 12 /* include file bindext.incl.pl1 */ 1 13 1 14 /* Modified Sept 1978 by David Spector for using "get_temp_segment_" in temp_mgr_ */ 1 15 /* Modified Dec 1978 by David Spector for making repatch table automatically extensible */ 1 16 /* Modified 01/15/81 W. Olin Sibert for new options */ 1 17 1 18 declare bx_$vers_name char (168) aligned external; /* ASCII version name, in ACC form */ 1 19 declare bx_$vers_number fixed bin external; /* integer part of version number */ 1 20 declare bx_$size fixed bin external; /* size of main data base, for resetting */ 1 21 declare bx_$snt_limit fixed bin external; /* preset limit for segname table */ 1 22 declare bx_$oddname_limit fixed bin external; /* preset limit for oddname table */ 1 23 declare bx_$stringmap_limit fixed bin external; /* preset limit for stringmap table */ 1 24 declare bx_$addname_limit fixed bin external; /* preset limit for addname table */ 1 25 declare bx_$area_begin fixed bin (18) external; /* beginning of main data base */ 1 26 declare bx_$ctp pointer external; /* pointer to component table */ 1 27 declare bx_$freep pointer external; /* pointer to beginning of free area */ 1 28 declare bx_$isp pointer external; /* pointer to first insym table */ 1 29 declare bx_$inpp pointer external; /* pointer to binder's input structure */ 1 30 declare bx_$bsegp pointer external; /* pointer to base of new object segment */ 1 31 declare bx_$temp pointer external; /* pointer to threaded list of temp segments */ 1 32 declare bx_$optp pointer external; /* pointer to options table */ 1 33 declare bx_$odnp pointer external; /* pointer to oddname table */ 1 34 declare bx_$first_rptp pointer external; /* pointer to first chunk of repatch table */ 1 35 declare bx_$last_rptp pointer external; /* pointer to current chunk of threaded repatch table */ 1 36 declare bx_$adnp pointer external; /* pointer to addname table */ 1 37 declare bx_$bindmap_def pointer external; /* pointer to new object's "bind_map" definition */ 1 38 declare bx_$bdefp pointer external; /* pointer to new object's definition section */ 1 39 declare bx_$bstatp pointer external; /* pointer to new object's static section */ 1 40 declare bx_$blnkp pointer external; /* pointer to new object's linkage section */ 1 41 declare bx_$bsymp pointer external; /* pointer to new object's symbol section */ 1 42 declare bx_$sntp pointer external; /* pointer to segname table */ 1 43 declare bx_$tdefp pointer external; /* pointer to temporary new definition section */ 1 44 declare bx_$tintp pointer external; /* pointer to temporary new internal static */ 1 45 declare bx_$tlinkp pointer external; /* pointer to temporary new linkage section */ 1 46 declare bx_$strmp pointer external; /* pointer to stringmap table */ 1 47 declare bx_$n_firstrefs fixed bin external; /* count of components with firstref traps */ 1 48 declare bx_$bound_segname char (32) aligned external; /* name of new bound object */ 1 49 declare bx_$fatal_error fixed bin external; /* 1 -> fatal error was detected */ 1 50 declare bx_$bseg_acinfop pointer external; /* new object's acinfop for "tssi_" */ 1 51 declare bx_$bseg_bitcount fixed bin (24) external; /* new object's bitcount */ 1 52 declare bx_$o_lng fixed bin (19) external; /* length of new bound object */ 1 53 declare bx_$t_lng fixed bin (18) external; /* length of new text section */ 1 54 declare bx_$d_lng fixed bin (18) external; /* length of new definition section */ 1 55 declare bx_$i_lng fixed bin external; /* length of new static section */ 1 56 declare bx_$l_lng fixed bin external; /* length of new linkage section */ 1 57 declare bx_$s_lng fixed bin (18) external; /* length of new symbol section */ 1 58 declare bx_$addname fixed bin external; /* 1 -> addname option specified */ 1 59 declare bx_$debug fixed bin external; /* 1 -> debug option was specified */ 1 60 declare bx_$brief fixed bin external; /* 1 -> brief option was specified */ 1 61 declare bx_$force_order fixed bin external; /* 1 -> -force_order specified on command line */ 1 62 declare bx_$has_sep_stat fixed bin external; /* 1 -> a comp has nonzero sep static */ 1 63 declare bx_$has_comb_stat fixed bin external; /* 1 -> a comp has nonzero combined static */ 1 64 declare bx_$bound_sep_stat fixed bin external; /* 1 -> bound segment has separate static */ 1 65 declare bx_$perprocess_static fixed bin external; /* 1 -> bound segment has perprocess static switch on */ 1 66 declare bx_$standard fixed bin external; /* 1 -> bound seg is in standard format */ 1 67 declare bx_$bproc fixed bin external; /* 1 -> at least one component is a procedure */ 1 68 declare bx_$textlng fixed bin (18) external; /* length of new pure text portion */ 1 69 declare bx_$curdeflng fixed bin (18) external; /* current length of new definition section */ 1 70 declare bx_$tintlng fixed bin external; /* current length of new internal static */ 1 71 declare bx_$maxlinklng fixed bin external; /* maximum size linkage section may attain */ 1 72 declare bx_$maxdeflng fixed bin (18) external; /* maximum size definition section may attain */ 1 73 declare bx_$tlinklng fixed bin external; /* current size of linkage section */ 1 74 declare bx_$ncomp fixed bin external; /* number of component objects to be bound */ 1 75 declare bx_$v_lng fixed bin external; /* length of version name string */ 1 76 declare bx_$n_lng fixed bin external; /* length of bound segment name string */ 1 77 declare bx_$nsymdefs fixed bin external; /* count of non-null symbol definitions */ 1 78 declare bx_$nsegdefs fixed bin external; /* count of non-null segment name definitions */ 1 79 declare bx_$temp_bsegp ptr external; /* pointer to the temporary bound seg in the process dir */ 1 80 declare bx_$caller char (32) aligned external; /* name of the caller of bind_ for error messages */ 1 81 1 82 /**** END OF: bindext.incl.pl1 * * * * * */ 80 81 82 /* */ 83 2 1 /* Include file comptbl.incl.pl1 */ 2 2 2 3 2 4 /****^ HISTORY COMMENTS: 2 5* 1) change(85-09-24,Elhard), approve(85-09-24,MCR7198), 2 6* audit(86-06-30,Weaver), install(86-07-16,MR12.0-1094): 2 7* added link_regeneration_table pointer (clrtp) to component structure. 2 8* END HISTORY COMMENTS */ 2 9 2 10 declare (ctp, ctep) pointer; 2 11 2 12 declare comp_tbl(1000) pointer based(ctp); 2 13 2 14 2 15 2 16 declare 1 comp aligned based(ctep), /* declaration of a component entry */ 2 17 2 filename char(32) aligned, /* object segment's file name */ 2 18 2 compiler char(8) aligned, /* name of compiler which produced this object */ 2 19 2 format char(8) aligned, /* format of object code (PL/1, ALM etc.) */ 2 20 2 21 2 ctxtp pointer, /* pointer to base of text section */ 2 22 2 cdefp pointer, /* pointer to definitions */ 2 23 2 cstatp pointer, /* pointer to static section */ 2 24 2 clnkp pointer, /* pointer to head of linkage section */ 2 25 2 csymp pointer, /* pointer to symbol table */ 2 26 2 cfrtp pointer, /* pointer to first ref trap array */ 2 27 2 crltp pointer, /* pointer to rel-text */ 2 28 2 crllp pointer, /* pointer to rel-link */ 2 29 2 crlsp pointer, /* pointer to rel-symb */ 2 30 2 insymentp pointer, /* pointer to this component's insym table entry */ 2 31 2 clrtp pointer, /* pointer to link_regeneration_table */ 2 32 2 unused_1 pointer, /* reserve */ 2 33 2 unused_2 pointer, /* reserve */ 2 34 2 unused_3 fixed bin, /* reserve */ 2 35 2 cindex fixed bin, /* this entry's index in table */ 2 36 2 standard_object fixed bin, /* 1 -> this object has standard format */ 2 37 2 defthread fixed bin, /* beginning of comp's definition block */ 2 38 2 fn_lng fixed bin, /* length of filename string */ 2 39 2 ignore fixed bin, /* 1->ignore erroneous entry */ 2 40 2 io_table fixed bin, /* 1 -> symbol table needed for io */ 2 41 2 table_deleted fixed bin, /* 1 -> symbol table is being deleted */ 2 42 2 separate_static fixed bin, /* 1 -> component has nonzero separate static */ 2 43 (2 defblockp, /* rel pointer to component's definition block */ 2 44 2 current_def) bit(18) unaligned, /* rel pointer to component's current def */ 2 45 2 cbitcount fixed bin(24), /* bitcount of component segment */ 2 46 2 clngt fixed bin(18), /* length of pure text section */ 2 47 2 cpadt fixed bin, /* number of added padwords for text */ 2 48 2 clngd fixed bin(18), /* length of definition section */ 2 49 2 clngi fixed bin, /* length of internal static */ 2 50 2 cpadi fixed bin, /* number of added padwords for internal static */ 2 51 2 clngs fixed bin(18), /* length of original symbol table */ 2 52 2 clngns fixed bin(18), /* length of new symb section stripped of relbits */ 2 53 2 clngss fixed bin(18), /* length of symbol section minus relbits and table */ 2 54 2 cpads fixed bin, /* padding length if section length is odd */ 2 55 2 n_sym_blks fixed bin, /* number of symbol blocks */ 2 56 2 57 2 crelt fixed bin, /* relocation value for text */ 2 58 2 creli fixed bin, /* relocation value for internal static */ 2 59 2 crels fixed bin, /* relocation value for symbol section */ 2 60 2 last_item fixed bin; /*** MUST ALWAYS BE LAST IN STRUCTURE ***/ 2 61 2 62 2 63 84 85 86 /* */ 87 3 1 /* Include file bndtbl.incl.pl1 */ 3 2 3 3 3 4 /****^ HISTORY COMMENTS: 3 5* 1) change(85-09-24,Elhard), approve(85-09-24,MCR7198), 3 6* audit(86-06-30,Weaver), install(86-07-16,MR12.0-1094): 3 7* Added link_regeneration_table and eliminated the use of "p" as a pointer 3 8* to base structures on.. 3 9* END HISTORY COMMENTS */ 3 10 3 11 /* DIVERSE BINDER TABLES */ 3 12 3 13 /* Modified Oct 1978 by David Spector for hash coding snt and strm */ 3 14 /* Modified Dec 1978 by David Spector for making repatch table 3 15* automatically extensible */ 3 16 3 17 declare (sntp, adnp, odnp, rptp, rptep, strmp, lrtp) pointer; 3 18 3 19 /* The SEGNAME table - segnames and synonyms of all components */ 3 20 3 21 declare 1 snt aligned based(sntp), 3 22 2 hash_table (0:210) unaligned ptr, /* prime length */ 3 23 2 max_size fixed bin, /* size limit of allocated segname table */ 3 24 2 n_names fixed bin, /* number of segname-table entries used */ 3 25 2 entry(1000) like seg; 3 26 3 27 /* declaration of a SEGNAME entry */ 3 28 3 29 declare 1 seg aligned based, /* redeclaration of a single segname */ 3 30 2 name char(33) aligned, /* segname in ACC string format */ 3 31 2 lng fixed bin, /* length of segname, incl ACC count */ 3 32 2 addname fixed bin, /* 1-> add name to bound segment */ 3 33 2 defrel bit(18), /* offset in defs of new definition */ 3 34 2 comp pointer, /* pointer to associated component table */ 3 35 2 hash_thread ptr; /* thread to next "seg" in bucket */ 3 36 3 37 3 38 /* the ADDNAME table - list of names specified by "Addname" statement */ 3 39 3 40 declare 1 an aligned based(adnp), 3 41 2 max_size fixed bin, /* size limit of addname table */ 3 42 2 n_an fixed bin, /* number of names to add */ 3 43 2 syn(1000) char(32) aligned; /* contains the names to be added */ 3 44 3 45 3 46 /* The ODDNAME table - scratchpad memory to suppress redundant error messages */ 3 47 3 48 declare 1 od aligned based(odnp), 3 49 2 max_size fixed bin, /* max size of table */ 3 50 2 n_odds fixed bin, /* current size of table */ 3 51 2 entry(1000), 3 52 3 name char(289) aligned; 3 53 3 54 3 55 /* The REPATCH table - of halfwords to be relocated at a later time */ 3 56 3 57 declare 1 rpt aligned based(rptp), 3 58 2 thread unaligned ptr, /* To next rpt (null at end) */ 3 59 2 npt fixed bin, 3 60 2 entry(1000) like rpte aligned; 3 61 3 62 3 63 declare 1 rpte aligned based(rptep), /* declaration of single repatch table entry */ 3 64 2 poffset bit(18) unaligned, /* offset into text of word to be patched */ 3 65 2 pexpr bit(18) unaligned, /* value to add to patched halfword */ 3 66 2 halfword char(3) aligned, /* designates wordhalf to be patched */ 3 67 2 pbase char(1) unaligned, /* section designator of word to be patched */ 3 68 2 code char(1) unaligned; /* code of section base to be used as patch value */ 3 69 3 70 3 71 /* The STRINGMAP table - to avoid redundant strings in definition section */ 3 72 3 73 declare 1 strm aligned based(strmp), 3 74 2 hash_table (0:862) fixed bin(17), /* prime length */ 3 75 2 max_size fixed bin, 3 76 2 nstr fixed bin, 3 77 2 entry(2048) unaligned, 3 78 3 map bit(18), /* rel pointer to string in def section */ 3 79 3 hash_thread fixed bin(17); /* index of next strm.entry in hash bucket */ 3 80 3 81 /* The LINK_REGENERATION table - to flag links which have and */ 3 82 /* have not been regenerated to insure generation of all links */ 3 83 3 84 declare 1 lrt aligned based (lrtp), 3 85 2 count fixed bin, 3 86 2 start_offset fixed bin (18) unsigned, 3 87 2 regenerated (0 refer (lrt.count)) 3 88 bit (18) unaligned; 3 89 3 90 declare UNRESOLVED bit (18) static options (constant) init ("000000"b3); 3 91 declare INTERNALLY_RESOLVED bit (18) static options (constant) init ("777777"b3); 88 89 90 /* */ 91 4 1 /* Include file insym.incl.pl1 */ 4 2 4 3 4 4 /****^ HISTORY COMMENTS: 4 5* 1) change(86-06-14,Elhard), approve(86-06-14,MCR7198), 4 6* audit(86-06-30,Weaver), install(86-07-16,MR12.0-1094): 4 7* Changed to eliminate the use of "p" as a pointer to base the structures 4 8* on. 4 9* END HISTORY COMMENTS */ 4 10 4 11 4 12 declare 1 insym aligned based, /* declaration of the INSYM structure */ 4 13 4 14 2 thread pointer, /* pointer to the next insym structure */ 4 15 2 n_insyms fixed bin, /* number of insym entries */ 4 16 (2 retained, /* def(s) have been retained for this component */ 4 17 2 global_nolink) bit(1) unaligned, /* don't prelink any reference to/from this object */ 4 18 2 entry(1000) like is; 4 19 4 20 declare 1 is aligned based, 4 21 (2 next_ext_ptr bit(18), /* thread to next def */ 4 22 2 trap_ptr bit(18), /* trap pointer */ 4 23 2 value bit(18), /* symbol's offset value */ 4 24 2 class bit(18)) unaligned, /* corresponding section of the object */ 4 25 2 def_offset fixed bin(18), /* offset of def in original def section */ 4 26 2 symbol char(257) aligned, /* the symbol in ACC string form */ 4 27 2 lng fixed bin, /* length in chars of ACC string (incl. ACC count) */ 4 28 2 nargs fixed bin, /* # of args expected by entry */ 4 29 2 descr_ptr pointer, /* ptr to descriptor ptr array */ 4 30 (2 null_entry, /* 1->type 3 (seg|expr) entry, no insym symbol */ 4 31 2 snapped, /* 0->not referenced, 1->link snapped */ 4 32 2 has_descr, /* 1->entry has valid descriptors */ 4 33 2 entrypoint, /* 0->segdef, 1->entrypoint; meaningful only for standard */ 4 34 2 retain_flag, /* 1->turn on retain flag; was on in original */ 4 35 2 delete, /* 1->don't regenerate this def in any case */ 4 36 2 ignore, /* 1->regenerate but ignore */ 4 37 2 regenerated, /* this definition already regenerated */ 4 38 2 retain, /* 0->don't regenerate, 1->retain definition */ 4 39 2 no_link, /* don't prelink to this symbol */ 4 40 2 duplicate) bit(1) unaligned, /* this symbol name duplicated in another block */ 4 41 2 defrel bit (18); /* offset in defs of regenerated definition */ 4 42 4 43 4 44 92 93 94 /* */ 95 5 1 /* Begin include file definition_dcls.incl.pl1 BIM 1981 */ 5 2 5 3 5 4 /****^ HISTORY COMMENTS: 5 5* 1) change(86-05-02,Elhard), approve(86-05-02,MCR7391), 5 6* audit(86-07-18,DGHowe), install(86-11-20,MR12.0-1222): 5 7* Modified to add indirect bit to definition flags, add msf_map_relp to the 5 8* definition header, declare the msf_map, and add structures and constants 5 9* for deferred initialization. 5 10* 2) change(86-06-24,DGHowe), approve(86-06-24,MCR7420), 5 11* audit(86-08-05,Schroth), install(86-11-20,MR12.0-1222): 5 12* added the structures for pointer initialization. pointer_init_template. 5 13* changed list_template_entry 5 14* END HISTORY COMMENTS */ 5 15 5 16 5 17 /* Modified: */ 5 18 /* 13 Dec 1982 by Lee A. Newcomb to put definition_header.hash_table_relp */ 5 19 /* after unused half-word instead of before it. */ 5 20 /* 1 March 1983 by M. Weaver to add list template init type */ 5 21 5 22 /* format: style3,idind25 */ 5 23 /* everything for the definition section */ 5 24 5 25 declare ( 5 26 CLASS_TEXT init (0), /* text section definition */ 5 27 CLASS_LINKAGE init (1), /* linkage section definition */ 5 28 CLASS_SYMBOL init (2), /* symbol section definition */ 5 29 CLASS_SEGNAME init (3), /* segment name definition */ 5 30 CLASS_STATIC init (4), /* static section definition */ 5 31 CLASS_SYSTEM init (5), /* valid only in self links, not def class */ 5 32 CLASS_HEAP init (6) /* valid only in self links, not def class */ 5 33 ) fixed bin (3) unsigned internal static options (constant); 5 34 5 35 declare CLASS_NAMES (0:6) character (12) internal static options (constant) 5 36 init ("text", "linkage", "symbol", "segname", "static", "system", "heap"); 5 37 5 38 declare SYMBOLIC_SECTION_NAMES (0:6) character (8) 5 39 init ("*text", "*link", "*symbol", *, "*static", "*system", "*heap") internal static 5 40 options (constant); 5 41 5 42 declare 1 definition_flags unaligned based, 5 43 2 new bit (1), /* should be "1"b */ 5 44 2 ignore bit (1), /* cannot snap link to this */ 5 45 2 entry bit (1), /* can tra here */ 5 46 2 retain bit (1), /* binder respects this */ 5 47 2 argcount bit (1), /* OBSOLETE */ 5 48 2 descriptors bit (1), /* OBSOLETE */ 5 49 2 indirect bit (1), /* target is a pointer to actual target */ 5 50 2 unused bit (8); /* Must be zero */ 5 51 5 52 5 53 5 54 5 55 /* Header of the definition section */ 5 56 5 57 declare def_header_ptr pointer; 5 58 declare 1 definition_header aligned based (def_header_ptr), 5 59 2 def_list_relp fixed bin (18) unsigned unaligned, 5 60 /* first definition, reloc def18 */ 5 61 2 msf_map_relp fixed bin (18) unsigned unaligned, 5 62 /* msf_map if any, or 0 if none. reloc def18 unless none */ 5 63 2 hash_table_relp fixed bin (18) unsigned unaligned, 5 64 /* def hash table, if any, or 0 if none. reloc def18 unless none */ 5 65 2 flags unaligned like definition_flags; 5 66 /* both new and ignore must be "1"b here */ 5 67 5 68 /* A non class=3 definition. See segname_definition below for class=3 */ 5 69 5 70 5 71 declare def_ptr pointer; 5 72 declare 1 definition aligned based (def_ptr), 5 73 2 forward_relp unal fixed bin (18) unsigned, 5 74 /* offset of next def */ 5 75 2 backward_relp unal fixed bin (18) unsigned, 5 76 /* offset of previous def */ 5 77 2 thing_relp unal fixed bin (18) unsigned, 5 78 /* offset in section specified by class of thing this defines */ 5 79 2 flags unaligned like definition_flags, 5 80 2 class unal fixed bin (3) unsigned, 5 81 /* Type of definition */ 5 82 2 name_relp unal fixed bin (18) unsigned, 5 83 /* offset of ACC for symbol */ 5 84 2 segname_relp unal fixed bin (18) unsigned; 5 85 /* offset of segname def to which this belongs */ 5 86 5 87 /* Class=3, segname definition */ 5 88 5 89 declare segname_ptr pointer; 5 90 declare 1 segname_definition aligned based (segname_ptr), 5 91 2 forward_relp unal fixed bin (18) unsigned, 5 92 /* offset of next def */ 5 93 2 backward_relp unal fixed bin (18) unsigned, 5 94 /* offset of previous def */ 5 95 2 next_segname_relp unal fixed bin (18) unsigned, 5 96 /* offset of next segname def */ 5 97 2 flags unaligned like definition_flags, 5 98 2 class unal fixed bin (3) unsigned, 5 99 /* 3 for segname */ 5 100 2 name_relp unal fixed bin (18) unsigned, 5 101 /* offset of ACC for symbol */ 5 102 2 first_relp unal fixed bin (18) unsigned; 5 103 /* see following : */ 5 104 5 105 /* Definition blocks are chained off of segname definitions. 5 106* segname_definition.first_relp is one of three things: 5 107* (1) the def section offset of the first ordinary (class^=3) definition 5 108* belonging to this segname block. In the case where there are more than 5 109* one segname's on a block, all their first_relp will point 5 110* to the same place. 5 111* 5 112* (2) if there are no ordinary definitions associated with this segname, 5 113* then it is the def section offset of the next segname. 5 114* 5 115* (3) if there are no ordinary definitions in the block, and it 5 116* is the last block, then it points to a word containing 0. 5 117* 5 118* Thus the end of a list of synonym segnames can be detected by forward_relp 5 119* pointing to a class=3 definition whose first_relp is not the same as 5 120* the current definitions first_relp. 5 121**/ 5 122 5 123 /* All the definitions are linked through the forward and 5 124* backward thread variables. The end of the chain can is indicated 5 125* by forward pointing to a zero word. */ 5 126 5 127 5 128 declare exp_ptr pointer; 5 129 declare 1 exp_word based (exp_ptr) aligned, /* expression word in link definition */ 5 130 2 type_relp fixed bin (18) unsigned unal, 5 131 /* pointer (rel to defs) of type pair structure */ 5 132 2 expression fixed bin (17) unal; /* constant expression to be added in when snapping link */ 5 133 5 134 declare ( 5 135 LINK_SELF_BASE init (1), /* *section|0+expression,modifier */ 5 136 /* which section determined by segname_relp */ 5 137 LINK_OBSOLETE_2 init (2), /* not used */ 5 138 LINK_REFNAME_BASE init (3), /* refname|0+expression,modifier */ 5 139 LINK_REFNAME_OFFSETNAME init (4), /* refname|offsetname+expression,modifier */ 5 140 LINK_SELF_OFFSETNAME init (5), /* *section|offsetname+expression,modifier */ 5 141 LINK_CREATE_IF_NOT_FOUND init (6), /* OBSOLETE: like LINK_REFNAME_OFFSETNAME except that it will create instead of taking linkage_error */ 5 142 SECTION_TEXT init (0), /* *text */ 5 143 SECTION_LINK init (1), /* *link */ 5 144 SECTION_SYMBOL init (2), /* *symbol */ 5 145 SECTION_UNUSED init (3), /* reserved */ 5 146 SECTION_STATIC init (4), /* *static */ 5 147 SECTION_SYSTEM init (5), /* *system */ 5 148 SECTION_HEAP init (6) /* *heap */ 5 149 ) fixed bin (18) unsigned unaligned internal static options (constant); 5 150 5 151 /* use CLASS_NAMES for section names */ 5 152 5 153 declare LINK_TYPE_NAMES (1:6) 5 154 init ("absolute in section", "unused", "absolute off of refname", 5 155 "symbolic off of refname", "symbolic in section", "symbolic off of refname; create") 5 156 character (32) varying internal static options (constant); 5 157 5 158 5 159 declare type_ptr pointer; 5 160 declare 1 type_pair based (type_ptr) aligned,/* type pair in link definition */ 5 161 2 type fixed bin (18) unsigned unal, 5 162 /* see above */ 5 163 2 trap_relp fixed bin (18) unsigned unal, 5 164 /* pointer (rel to defs) to the trap word */ 5 165 /* unless LINK_SELF_OFFSETNAME off of *system or create link */ 5 166 2 segname_relp fixed bin (18) unsigned unal, 5 167 /* pointer (rel to defs) to ACC reference name for segment referenced, 5 168* /*or section code for SELF links */ 5 169 2 offsetname_relp fixed bin (18) unsigned unal; 5 170 /* for OFFSETNAME links, ACC string of name of location. */ 5 171 /* for others, must be ZERO */ 5 172 5 173 5 174 /* Link Trap Pair */ 5 175 5 176 declare link_trap_ptr pointer; 5 177 declare 1 link_trap_pair aligned based (link_trap_ptr), 5 178 2 call_relp fixed bin (18) unsigned unaligned, 5 179 /* LINK18, link to thing to call */ 5 180 2 info_relp fixed bin (18) unsigned unaligned; 5 181 /* LINK18, link to argument list */ 5 182 5 183 5 184 /* initialization info for *system or *heap link */ 5 185 5 186 5 187 /* NOTE -------------------------------------------------- 5 188* the following structures defining initialization information are also 5 189* defined in fortran_storage.incl.pl1 system_link_init_info.incl.pl1 5 190* and should be kept equivalent 5 191* ------------------------------------------------------- 5 192**/ 5 193 5 194 declare ( 5 195 INIT_NO_INIT init (0), 5 196 INIT_COPY_INFO init (3), 5 197 INIT_DEFINE_AREA init (4), 5 198 INIT_LIST_TEMPLATE init (5), 5 199 INIT_DEFERRED init (6) 5 200 ) fixed bin internal static options (constant); 5 201 5 202 /* for type = 0 or 4 */ 5 203 5 204 declare link_init_ptr pointer; 5 205 declare 1 link_init aligned based (link_init_ptr), 5 206 2 n_words fixed bin (35), /* number to invent */ 5 207 2 type fixed bin; /* see types above */ 5 208 5 209 /* for type=3, there is data to copy */ 5 210 5 211 declare 1 link_init_copy_info aligned based (link_init_ptr), 5 212 2 header aligned like link_init, 5 213 2 initial_data (link_init_n_words refer (link_init_copy_info.header.n_words)) bit (36) aligned; 5 214 5 215 declare link_init_n_words fixed bin; 5 216 5 217 /* for type = 5, there is a list template to copy */ 5 218 5 219 declare 1 link_init_list_template 5 220 aligned based (link_init_ptr), 5 221 2 header aligned like link_init, 5 222 2 pad bit (18) unaligned, 5 223 2 n_words_in_list fixed bin (18) unsigned unaligned, 5 224 2 template (link_init_n_words_in_list refer (link_init_list_template.n_words_in_list)); 5 225 5 226 declare link_init_n_words_in_list 5 227 fixed bin; 5 228 5 229 /* A list template consists of a series of entries with the following 5 230* description, concatenated together. n_bits and datum are bit items, 5 231* to permit a wide range of inputs. 5 232* 5 233* 1. A 'repeat' of '0' signifies skipping of 'n_bits' bits. 5 234* 2. A 'n_bits' of '0' signifies the last item of the list. 5 235* 5 236* COMMON, VLA's, and LA's are presumed to start at the base pointer 5 237* of their particular storage section. */ 5 238 5 239 declare 1 list_template_entry aligned based, 5 240 2 n_bits fixed bin (35) aligned, /* size of datum */ 5 241 2 mbz bit (3) unaligned, /* future expansion */ 5 242 2 init_type fixed bin (3) unsigned unaligned, /* 0 normal init, 1 ptr init, 2 packed ptr init */ 5 243 2 repeat fixed bin (30) unsigned unaligned, 5 244 /* number of times to repeat datum */ 5 245 2 datum bit (link_init_n_bits_in_datum refer (list_template_entry.n_bits)); 5 246 5 247 5 248 /* the pointer_init_template represents the initialization information 5 249* for ITS and packed pointers. Both pointer types require the entire 5 250* 72 bit structure. 5 251**/ 5 252 5 253 dcl 1 pointer_init_template based, 5 254 2 ptr_type fixed bin (18) unsigned unaligned, /* 0 text section, 1 linkage section, 2 static section */ 5 255 2 section_offset fixed bin (18) unsigned unaligned, /* offset to item in specified section */ 5 256 2 word_offset fixed bin (18) unsigned unaligned, /* offset from section item to target in words */ 5 257 2 mbz bit (12) unaligned, 5 258 2 bit_offset fixed bin (6) unsigned unaligned; /* offset from section item|word offset to target in bits */ 5 259 5 260 5 261 declare link_init_n_bits_in_datum 5 262 fixed bin (35); 5 263 5 264 /* for type = 6, the init_info resides in another MSF component */ 5 265 /* target_relp is a linkage section offset to a partial link to */ 5 266 /* the base of the linkage section of the component containing */ 5 267 /* the actual init_info. link_relp is the offset of the actual */ 5 268 /* link within that linkage section. */ 5 269 5 270 declare 1 link_init_deferred aligned based (link_init_ptr), 5 271 2 header aligned like link_init, 5 272 2 target_relp fixed bin (18) unsigned unaligned, 5 273 2 link_relp fixed bin (18) unsigned unaligned; 5 274 5 275 /* Definition section hash table */ 5 276 5 277 declare def_ht_ptr pointer; 5 278 declare 1 definition_ht aligned based (def_ht_ptr), 5 279 2 n_entries fixed bin, 5 280 2 table (def_ht_n_entries refer (definition_ht.n_entries)) aligned, 5 281 3 def_relp fixed bin (18) unsigned unaligned, 5 282 3 unused bit (18) unaligned; 5 283 5 284 declare def_ht_n_entries fixed bin; 5 285 5 286 5 287 /* Component name ht */ 5 288 declare comp_ht_ptr pointer; 5 289 declare 1 component_ht aligned based (comp_ht_ptr), 5 290 2 n_entries fixed bin, 5 291 2 table (comp_ht_n_entries refer (component_ht.n_entries)) aligned, 5 292 3 def_relp fixed bin (18) unsigned unaligned, 5 293 /* hashed segname */ 5 294 3 block_hdr_relp fixed bin (18) unsigned unaligned; 5 295 /* first segname def of block containing def_relp */ 5 296 5 297 declare comp_ht_n_entries fixed bin; 5 298 5 299 /* Duplicate name table */ 5 300 5 301 declare dup_table_ptr pointer; 5 302 declare 1 duplicate_table aligned based (dup_table_ptr), 5 303 2 mbz bit (18) unaligned, /* to tell it from a definition */ 5 304 2 n_names fixed bin (18) unsigned unaligned, 5 305 /* n in table */ 5 306 2 table (dup_table_n_names refer (duplicate_table.n_names)) aligned, 5 307 3 def_relp fixed bin (18) unsigned unaligned, 5 308 3 block_hdr_relp fixed bin (18) unsigned unaligned; 5 309 5 310 declare dup_table_n_names fixed bin; 5 311 5 312 /* The msf_map is found in the definition section of an */ 5 313 /* object MSF component. It is used by the linker to */ 5 314 /* determine whether a segment is a component of an object */ 5 315 /* MSF or a standard single-segment object. */ 5 316 5 317 dcl msf_map_ptr ptr; 5 318 dcl 01 msf_map aligned based (msf_map_ptr), 5 319 02 version char (8), 5 320 02 component_count fixed bin (15) unsigned, 5 321 02 my_component fixed bin (15) unsigned; 5 322 5 323 dcl msf_map_version_1 char (8) static options (constant) 5 324 init ("msfmp1.0"); 5 325 5 326 declare acc_string_ptr pointer; 5 327 declare 1 acc_string aligned based (acc_string_ptr), 5 328 2 count fixed bin (9) unsigned unaligned, 5 329 2 string character (max (3, acc_string_length) refer (acc_string.count)) unaligned, 5 330 2 mbz bit (0) aligned; /* this causes the statement */ 5 331 /* unspec (acc_string) = ""b to zero out */ 5 332 /* the last word, if the string is not of length 0mod4 */ 5 333 5 334 declare acc_string_length fixed bin (21); 5 335 5 336 5 337 /* end include file definitions_dcls.incl.pl1 */ 96 97 98 /* */ 99 100 open_section: 101 entry; 102 103 /**********************************************************************/ 104 /* */ 105 /* Name: make_defs_$open_section */ 106 /* Input: none */ 107 /* Function: initializes the definition section of the new */ 108 /* bound object segment and creates the standard */ 109 /* definitions for the bound segment. */ 110 /* Output: none */ 111 /* */ 112 /**********************************************************************/ 113 114 ctp = bx_$ctp; 115 strmp = bx_$strmp; 116 errname = bx_$caller; 117 if bx_$debug = 1 118 then errname = "make_defs_"; 119 last_def, defbase = bx_$tdefp; /* pointer to base of new definition section */ 120 linkbase = bx_$tlinkp; /* pointer to base of new linkage section */ 121 newignore = "0"b; /* defs by this entry not ignored */ 122 123 /* generate dummy def for standard object */ 124 125 def_ptr = defbase; 126 definition.forward_relp = 2; 127 definition.flags.new = "1"b; 128 definition.flags.ignore = "1"b; 129 bx_$curdeflng = 2; /* adjust for dummy def */ 130 last_def = addrel (last_def, 2); /* have reinitialized everything necessary */ 131 132 133 /* Make a definition block for the new bound segment itself */ 134 135 last_segname = null; /* indicate initialization */ 136 last_def_rel, /* initialize threads */ 137 segblock_head = bx_$curdeflng; 138 139 temp_name = rtrim (bx_$bound_segname); 140 call fabricate_def (temp_name, CLASS_SEGNAME, 0); 141 142 last_definition.segname_relp, /* pointer to def block */ 143 last_definition.forward_relp = bx_$curdeflng; 144 last_segname = last_def; /* remember segname thread */ 145 call fabricate_def ("symbol_table", CLASS_SYMBOL, 0); 146 /* fabricate definitions for bound segment */ 147 call fabricate_def ("bind_map", CLASS_SYMBOL, 0); 148 bx_$bindmap_def = last_def; /* remember pointer to bindmap definition */ 149 150 bx_$curdeflng = bx_$curdeflng + 1; /* grow def section for the zero word */ 151 152 return; 153 154 155 156 157 close_section: 158 entry; 159 160 /**********************************************************************/ 161 /* */ 162 /* Name: make_defs_$close_section */ 163 /* Input: none */ 164 /* Function: generates and threads in segname definitions for */ 165 /* definition blocks which have retained definitions */ 166 /* terminates the threads, and generates the hash */ 167 /* table */ 168 /* Output: none */ 169 /* */ 170 /**********************************************************************/ 171 172 ctp = bx_$ctp; 173 sntp = bx_$sntp; 174 strmp = bx_$strmp; 175 do i = 1 to bx_$ncomp; /* scan all component segments */ 176 ctep = comp_tbl (i); /* pointer to component entry */ 177 /* rel pointer to head of def list */ 178 defblock_head = fixed (comp.defblockp, 18); 179 if defblock_head ^= 0 180 then do; 181 call check_ignore (); /* if defblock ignored, ignore segnames */ 182 /* remember pointer to first segname */ 183 segblock_head = bx_$curdeflng; /* remember defblock head */ 184 comp.defthread = bx_$curdeflng; 185 do j = 1 to snt.n_names; /* scan segname table */ 186 sp = addr (snt.entry (j)); /* pointer to segname entry */ 187 if sp -> seg.comp = ctep /* this is same component */ 188 then do; 189 temp_name = substr (sp -> seg.name, 2, sp -> seg.lng - 1); 190 call fabricate_def (temp_name, CLASS_SEGNAME, 0); 191 if ^newignore 192 then do; 193 bx_$nsegdefs = bx_$nsegdefs + 1; 194 /* Save rel_ptr to new def. */ 195 sp -> seg.defrel = bit (bin (rel_ptr, 18), 18); 196 end; 197 end; 198 end; /* pointer to current regular def */ 199 def_ptr = addrel (defbase, defblock_head); 200 /* thread blocks together, forwards ... */ 201 last_definition.forward_relp = defblock_head; 202 /* and backwards */ 203 definition.backward_relp = last_def_rel; 204 205 gen_blockpointer: 206 definition.segname_relp = segblock_head;/* pointer to segblock block */ 207 if definition.forward_relp ^= 0 208 then do; /* follow thread */ 209 def_ptr = addrel (defbase, definition.forward_relp); 210 goto gen_blockpointer; 211 end; 212 213 /* end of list */ 214 last_def_rel = fixed (comp.current_def, 18); 215 last_def = addrel (defbase, last_def_rel); 216 end; 217 end; 218 219 last_segname -> definition.thing_relp, /* last thread points to zero word */ 220 last_definition.forward_relp, addrel (defbase, 2) -> definition.backward_relp = bx_$curdeflng; 221 if last_definition.class ^= CLASS_SEGNAME 222 then last_definition.segname_relp = segblock_head; 223 bx_$curdeflng = bx_$curdeflng + 1; /* thread must end at physical end for checker */ 224 225 call hash_defs_; /* Make defs hash table now. */ 226 227 return; 228 229 230 231 232 233 234 regenerate_block: 235 entry (compent_ptr); 236 237 /**********************************************************************/ 238 /* */ 239 /* Name: make_defs_$regenerate_block */ 240 /* Input: component_entry_pointer */ 241 /* Function: given a pointer to a component table entry, scan */ 242 /* the insym table for that component and regenerate */ 243 /* any definitions which are to be retained. */ 244 /* Output: none */ 245 /* */ 246 /**********************************************************************/ 247 248 declare compent_ptr pointer; 249 250 ctep = compent_ptr; /* copy pointer to current component table entry */ 251 252 ip = comp.insymentp; /* pointer to component's definitions */ 253 ndefs = ip -> insym.n_insyms; /* get number of definitions for this component */ 254 255 /* now generate definitions for all insyms which are to be retained */ 256 257 do i = 1 to ndefs - 1; /* scan definition table for component */ 258 sp = addr (ip -> insym.entry (i)); /* pointer to current definition */ 259 if sp -> is.regenerated 260 then goto skip; /* this definition has already been regenerated */ 261 if ((sp -> is.delete | sp -> is.ignore) & ^sp -> is.retain_flag) 262 then go to skip; 263 call generate_def_ (ctep, sp); /* generate this definition */ 264 skip: 265 end; 266 267 268 return; 269 270 271 /* */ 272 273 check_ignore: 274 proc; 275 276 /**********************************************************************/ 277 /* */ 278 /* Name: check_ignore */ 279 /* Input: defblock_head */ 280 /* Function: scans the definition block specified by defblock */ 281 /* head for non-ignored definition and sets the */ 282 /* newignore flag if all of the definitions in the */ 283 /* block are ignored. */ 284 /* Output: newignore */ 285 /* */ 286 /**********************************************************************/ 287 288 newignore = "1"b; /* ignore unless we find 1 nonignored def */ 289 /* find beginning of defblock */ 290 def_ptr = addrel (defbase, defblock_head); 291 test_ignore: 292 if ^definition.flags.ignore 293 then do; /* at least 1 nonignored def */ 294 newignore = "0"b; 295 return; /* don't need to look further */ 296 end; 297 298 if definition.forward_relp ^= 0 299 then do; /* follow thread */ 300 def_ptr = addrel (defbase, definition.forward_relp); 301 go to test_ignore; 302 end; 303 304 return; 305 end; 306 307 308 /* */ 309 310 311 fabricate_def: 312 procedure (defstring, newclass, newvalue); 313 314 /**********************************************************************/ 315 /* */ 316 /* Name: fabricate_def */ 317 /* Input: defstring, newclass, newvalue */ 318 /* Function: creates a definition in the definition section */ 319 /* with the name specified by defstring, the class */ 320 /* specified by newclass, and a thing_relp specified */ 321 /* by newvalue. */ 322 /* */ 323 /**********************************************************************/ 324 325 declare defstring char (32) varying; 326 declare newclass fixed bin (3) unsigned; 327 declare newvalue fixed bin (18) unsigned; 328 329 declare (i, defoffset) fixed bin; 330 declare dp pointer; 331 declare 01 new_def aligned like definition based (dp); 332 333 defoffset = bx_$curdeflng; 334 rel_ptr = defoffset; /* relative offset of def */ 335 dp = addrel (defbase, rel_ptr); /* absolute pointer to new def */ 336 new_def.class = newclass; 337 new_def.thing_relp = newvalue; 338 new_def.flags.new = "1"b; 339 new_def.flags.ignore = newignore; 340 defoffset = defoffset + 3; 341 do i = 1 to strm.nstr; /* lookup string in map */ 342 /* pointer to a generated string */ 343 acc_string_ptr = addrel (defbase, strm.entry (i).map); 344 if defstring = acc_string.string 345 then do; 346 new_def.name_relp = fixed (strm.entry (i).map, 18); 347 goto string_generated; 348 end; 349 end; 350 i, strm.nstr = strm.nstr + 1; 351 if strm.nstr > strm.max_size 352 then do; 353 call com_err_ (0, errname, "stringmap table overflow; please contact maintenance."); 354 strm.nstr = 1; 355 bx_$fatal_error = 1; 356 end; 357 new_def.name_relp = defoffset; /* pointer to newly generated symbol string */ 358 strm.entry (i).map = bit (bin (defoffset, 18), 18); 359 acc_string_ptr = addrel (defbase, defoffset); 360 acc_string.count = length (defstring); 361 acc_string.string = defstring; 362 defoffset = defoffset + divide (acc_string.count + 4, 4, 17, 0); 363 364 call strm_hash_$make_entry (acc_string_overlay, i); 365 366 string_generated: 367 bx_$curdeflng = defoffset; 368 if last_segname = null 369 then return; /* only once for first definition */ 370 371 last_definition.forward_relp = rel_ptr; /* thread entries together */ 372 new_def.backward_relp = last_def_rel; /* backwards thread */ 373 last_def = dp; /* remember this definition */ 374 last_def_rel = rel_ptr; /* and its rel-ptr form */ 375 if newclass ^= CLASS_SEGNAME 376 then /* not a segname */ 377 do; /* pointer to head of segname block */ 378 new_def.segname_relp = segblock_head; 379 return; /* and that's all */ 380 end; 381 382 /* thread of segname entries */ 383 last_segname -> definition.thing_relp = rel_ptr; 384 new_def.segname_relp = defblock_head; /* set up segname thread */ 385 last_segname = dp; /* remember this segname definition */ 386 387 return; 388 389 end fabricate_def; 390 391 end make_defs_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/17/00 1947.2 make_defs_.pl1 >udd>sm>ds>w>ml>make_defs_.pl1 80 1 07/16/86 1322.1 bindext.incl.pl1 >ldd>incl>bindext.incl.pl1 84 2 07/16/86 1322.1 comptbl.incl.pl1 >ldd>incl>comptbl.incl.pl1 88 3 07/16/86 1322.1 bndtbl.incl.pl1 >ldd>incl>bndtbl.incl.pl1 92 4 07/16/86 1322.1 insym.incl.pl1 >ldd>incl>insym.incl.pl1 96 5 11/24/86 1326.9 definition_dcls.incl.pl1 >ldd>incl>definition_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. CLASS_SEGNAME constant fixed bin(3,0) initial unsigned dcl 5-25 set ref 140* 190* 221 375 CLASS_SYMBOL constant fixed bin(3,0) initial unsigned dcl 5-25 set ref 145* 147* acc_string based structure level 1 dcl 5-327 acc_string_overlay based char packed unaligned dcl 75 set ref 364* acc_string_ptr 000140 automatic pointer dcl 5-326 set ref 343* 344 359* 360 361 362 364 364 364 addr builtin function dcl 70 ref 186 258 addrel builtin function dcl 70 ref 130 199 209 215 219 290 300 335 343 359 backward_relp 0(18) based fixed bin(18,0) level 2 in structure "new_def" packed packed unsigned unaligned dcl 331 in procedure "fabricate_def" set ref 372* backward_relp 0(18) based fixed bin(18,0) level 2 in structure "definition" packed packed unsigned unaligned dcl 5-72 in procedure "make_defs_" set ref 203* 219* bin builtin function dcl 70 ref 195 358 bit builtin function dcl 70 ref 195 358 bx_$bindmap_def 000040 external static pointer dcl 1-37 set ref 148* bx_$bound_segname 000052 external static char(32) dcl 1-48 ref 139 bx_$caller 000066 external static char(32) dcl 1-80 ref 116 bx_$ctp 000036 external static pointer dcl 1-26 ref 114 172 bx_$curdeflng 000060 external static fixed bin(18,0) dcl 1-69 set ref 129* 136 142 150* 150 183 184 219 223* 223 333 366* bx_$debug 000056 external static fixed bin(17,0) dcl 1-59 ref 117 bx_$fatal_error 000054 external static fixed bin(17,0) dcl 1-49 set ref 355* bx_$ncomp 000062 external static fixed bin(17,0) dcl 1-74 ref 175 bx_$nsegdefs 000064 external static fixed bin(17,0) dcl 1-78 set ref 193* 193 bx_$sntp 000042 external static pointer dcl 1-42 ref 173 bx_$strmp 000050 external static pointer dcl 1-46 ref 115 174 bx_$tdefp 000044 external static pointer dcl 1-43 ref 119 bx_$tlinkp 000046 external static pointer dcl 1-45 ref 120 class 1(33) based fixed bin(3,0) level 2 in structure "new_def" packed packed unsigned unaligned dcl 331 in procedure "fabricate_def" set ref 336* class 1(33) based fixed bin(3,0) level 2 in structure "last_definition" packed packed unsigned unaligned dcl 76 in procedure "make_defs_" ref 221 com_err_ 000026 constant entry external dcl 46 ref 353 comp based structure level 1 dcl 2-16 in procedure "make_defs_" comp 14 based pointer level 2 in structure "seg" dcl 3-29 in procedure "make_defs_" ref 187 comp_tbl based pointer array dcl 2-12 ref 176 compent_ptr parameter pointer dcl 248 ref 234 250 count based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 5-327 set ref 344 360* 361 362 364 364 ctep 000130 automatic pointer dcl 2-10 set ref 176* 178 184 187 214 250* 252 263* ctp 000126 automatic pointer dcl 2-10 set ref 114* 172* 176 current_def 57(18) based bit(18) level 2 packed packed unaligned dcl 2-16 ref 214 def_ptr 000136 automatic pointer dcl 5-71 set ref 125* 126 127 128 199* 203 205 207 209* 209 290* 291 298 300* 300 defbase 000010 internal static pointer dcl 54 set ref 119* 125 199 209 215 219 290 300 335 343 359 defblock_head 000110 automatic fixed bin(17,0) dcl 63 set ref 178* 179 199 201 290 384 defblockp 57 based bit(18) level 2 packed packed unaligned dcl 2-16 ref 178 definition based structure level 1 dcl 5-72 definition_flags based structure level 1 packed packed unaligned dcl 5-42 defoffset 000163 automatic fixed bin(17,0) dcl 329 set ref 333* 334 340* 340 357 358 359 362* 362 366 defrel 13 based bit(18) level 2 dcl 3-29 set ref 195* defstring parameter varying char(32) dcl 325 ref 311 344 360 361 defthread 51 based fixed bin(17,0) level 2 dcl 2-16 set ref 184* delete 110(05) based bit(1) level 2 packed packed unaligned dcl 4-20 ref 261 divide builtin function dcl 70 ref 362 dp 000164 automatic pointer dcl 330 set ref 335* 336 337 338 339 346 357 372 373 378 384 385 entry 1541 based structure array level 2 in structure "strm" packed packed unaligned dcl 3-73 in procedure "make_defs_" entry 326 based structure array level 2 in structure "snt" dcl 3-21 in procedure "make_defs_" set ref 186 entry 4 based structure array level 2 in structure "insym" dcl 4-12 in procedure "make_defs_" set ref 258 errname 000020 internal static char(16) dcl 56 set ref 116* 117* 353* fixed builtin function dcl 70 ref 178 214 346 flags 1(18) based structure level 2 in structure "definition" packed packed unaligned dcl 5-72 in procedure "make_defs_" flags 1(18) based structure level 2 in structure "new_def" packed packed unaligned dcl 331 in procedure "fabricate_def" forward_relp based fixed bin(18,0) level 2 in structure "definition" packed packed unsigned unaligned dcl 5-72 in procedure "make_defs_" set ref 126* 207 209 298 300 forward_relp based fixed bin(18,0) level 2 in structure "last_definition" packed packed unsigned unaligned dcl 76 in procedure "make_defs_" set ref 142* 201* 219* 371* generate_def_ 000030 constant entry external dcl 47 ref 263 hash_defs_ 000032 constant entry external dcl 48 ref 225 i 000162 automatic fixed bin(17,0) dcl 329 in procedure "fabricate_def" set ref 341* 343 346* 350* 358 364* i 000100 automatic fixed bin(17,0) dcl 61 in procedure "make_defs_" set ref 175* 176* 257* 258* ignore 110(06) based bit(1) level 2 in structure "is" packed packed unaligned dcl 4-20 in procedure "make_defs_" ref 261 ignore 1(19) based bit(1) level 3 in structure "definition" packed packed unaligned dcl 5-72 in procedure "make_defs_" set ref 128* 291 ignore 1(19) based bit(1) level 3 in structure "new_def" packed packed unaligned dcl 331 in procedure "fabricate_def" set ref 339* insym based structure level 1 dcl 4-12 insymentp 36 based pointer level 2 dcl 2-16 ref 252 ip 000104 automatic pointer dcl 62 set ref 252* 253 258 is based structure level 1 dcl 4-20 j 000101 automatic fixed bin(17,0) dcl 61 set ref 185* 186* last_def 000014 internal static pointer dcl 54 set ref 119* 130* 130 142 142 144 148 201 215* 219 221 221 371 373* last_def_rel 000024 internal static fixed bin(17,0) dcl 57 set ref 136* 203 214* 215 372 374* last_definition based structure level 1 dcl 76 last_segname 000016 internal static pointer dcl 54 set ref 135* 144* 219 368 383 385* length builtin function dcl 70 ref 360 link_init based structure level 1 dcl 5-205 linkbase 000012 internal static pointer dcl 54 set ref 120* lng 11 based fixed bin(17,0) level 2 dcl 3-29 ref 189 map 1541 based bit(18) array level 3 packed packed unaligned dcl 3-73 set ref 343 346 358* max_size 1537 based fixed bin(17,0) level 2 dcl 3-73 ref 351 n_insyms 2 based fixed bin(17,0) level 2 dcl 4-12 ref 253 n_names 324 based fixed bin(17,0) level 2 dcl 3-21 ref 185 name based char(33) level 2 dcl 3-29 ref 189 name_relp 2 based fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 331 set ref 346* 357* ndefs 000102 automatic fixed bin(17,0) dcl 61 set ref 253* 257 new 1(18) based bit(1) level 3 in structure "new_def" packed packed unaligned dcl 331 in procedure "fabricate_def" set ref 338* new 1(18) based bit(1) level 3 in structure "definition" packed packed unaligned dcl 5-72 in procedure "make_defs_" set ref 127* new_def based structure level 1 dcl 331 newclass parameter fixed bin(3,0) unsigned dcl 326 ref 311 336 375 newignore 000124 automatic bit(1) dcl 66 set ref 121* 191 288* 294* 339 newvalue parameter fixed bin(18,0) unsigned dcl 327 ref 311 337 nstr 1540 based fixed bin(17,0) level 2 dcl 3-73 set ref 341 350 350* 351 354* null builtin function dcl 70 ref 135 368 regenerated 110(07) based bit(1) level 2 packed packed unaligned dcl 4-20 ref 259 rel_ptr 000112 automatic fixed bin(17,0) dcl 63 set ref 195 334* 335 371 374 383 retain_flag 110(04) based bit(1) level 2 packed packed unaligned dcl 4-20 ref 261 rpte based structure level 1 dcl 3-63 rtrim builtin function dcl 70 ref 139 seg based structure level 1 dcl 3-29 segblock_head 000111 automatic fixed bin(17,0) dcl 63 set ref 136* 183* 205 221 378 segname_relp 2(18) based fixed bin(18,0) level 2 in structure "new_def" packed packed unsigned unaligned dcl 331 in procedure "fabricate_def" set ref 378* 384* segname_relp 2(18) based fixed bin(18,0) level 2 in structure "definition" packed packed unsigned unaligned dcl 5-72 in procedure "make_defs_" set ref 205* segname_relp 2(18) based fixed bin(18,0) level 2 in structure "last_definition" packed packed unsigned unaligned dcl 76 in procedure "make_defs_" set ref 142* 221* snt based structure level 1 dcl 3-21 sntp 000132 automatic pointer dcl 3-17 set ref 173* 185 186 sp 000106 automatic pointer dcl 62 set ref 186* 187 189 189 195 258* 259 261 261 261 263* string 0(09) based char level 2 packed packed unaligned dcl 5-327 set ref 344 361* strm based structure level 1 dcl 3-73 strm_hash_$make_entry 000034 constant entry external dcl 49 ref 364 strmp 000134 automatic pointer dcl 3-17 set ref 115* 174* 341 343 346 350 350 351 351 354 358 substr builtin function dcl 70 ref 189 temp_name 000113 automatic varying char(32) dcl 65 set ref 139* 140* 189* 190* thing_relp 1 based fixed bin(18,0) level 2 in structure "definition" packed packed unsigned unaligned dcl 5-72 in procedure "make_defs_" set ref 219* 383* thing_relp 1 based fixed bin(18,0) level 2 in structure "new_def" packed packed unsigned unaligned dcl 331 in procedure "fabricate_def" set ref 337* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. CLASS_HEAP internal static fixed bin(3,0) initial unsigned dcl 5-25 CLASS_LINKAGE internal static fixed bin(3,0) initial unsigned dcl 5-25 CLASS_NAMES internal static char(12) initial array packed unaligned dcl 5-35 CLASS_STATIC internal static fixed bin(3,0) initial unsigned dcl 5-25 CLASS_SYSTEM internal static fixed bin(3,0) initial unsigned dcl 5-25 CLASS_TEXT internal static fixed bin(3,0) initial unsigned dcl 5-25 INIT_COPY_INFO internal static fixed bin(17,0) initial dcl 5-194 INIT_DEFERRED internal static fixed bin(17,0) initial dcl 5-194 INIT_DEFINE_AREA internal static fixed bin(17,0) initial dcl 5-194 INIT_LIST_TEMPLATE internal static fixed bin(17,0) initial dcl 5-194 INIT_NO_INIT internal static fixed bin(17,0) initial dcl 5-194 INTERNALLY_RESOLVED internal static bit(18) initial packed unaligned dcl 3-91 LINK_CREATE_IF_NOT_FOUND internal static fixed bin(18,0) initial packed unsigned unaligned dcl 5-134 LINK_OBSOLETE_2 internal static fixed bin(18,0) initial packed unsigned unaligned dcl 5-134 LINK_REFNAME_BASE internal static fixed bin(18,0) initial packed unsigned unaligned dcl 5-134 LINK_REFNAME_OFFSETNAME internal static fixed bin(18,0) initial packed unsigned unaligned dcl 5-134 LINK_SELF_BASE internal static fixed bin(18,0) initial packed unsigned unaligned dcl 5-134 LINK_SELF_OFFSETNAME internal static fixed bin(18,0) initial packed unsigned unaligned dcl 5-134 LINK_TYPE_NAMES internal static varying char(32) initial array dcl 5-153 SECTION_HEAP internal static fixed bin(18,0) initial packed unsigned unaligned dcl 5-134 SECTION_LINK internal static fixed bin(18,0) initial packed unsigned unaligned dcl 5-134 SECTION_STATIC internal static fixed bin(18,0) initial packed unsigned unaligned dcl 5-134 SECTION_SYMBOL internal static fixed bin(18,0) initial packed unsigned unaligned dcl 5-134 SECTION_SYSTEM internal static fixed bin(18,0) initial packed unsigned unaligned dcl 5-134 SECTION_TEXT internal static fixed bin(18,0) initial packed unsigned unaligned dcl 5-134 SECTION_UNUSED internal static fixed bin(18,0) initial packed unsigned unaligned dcl 5-134 SYMBOLIC_SECTION_NAMES internal static char(8) initial array packed unaligned dcl 5-38 UNRESOLVED internal static bit(18) initial packed unaligned dcl 3-90 acc_string_length automatic fixed bin(21,0) dcl 5-334 adnp automatic pointer dcl 3-17 an based structure level 1 dcl 3-40 bx_$addname external static fixed bin(17,0) dcl 1-58 bx_$addname_limit external static fixed bin(17,0) dcl 1-24 bx_$adnp external static pointer dcl 1-36 bx_$area_begin external static fixed bin(18,0) dcl 1-25 bx_$bdefp external static pointer dcl 1-38 bx_$blnkp external static pointer dcl 1-40 bx_$bound_sep_stat external static fixed bin(17,0) dcl 1-64 bx_$bproc external static fixed bin(17,0) dcl 1-67 bx_$brief external static fixed bin(17,0) dcl 1-60 bx_$bseg_acinfop external static pointer dcl 1-50 bx_$bseg_bitcount external static fixed bin(24,0) dcl 1-51 bx_$bsegp external static pointer dcl 1-30 bx_$bstatp external static pointer dcl 1-39 bx_$bsymp external static pointer dcl 1-41 bx_$d_lng external static fixed bin(18,0) dcl 1-54 bx_$first_rptp external static pointer dcl 1-34 bx_$force_order external static fixed bin(17,0) dcl 1-61 bx_$freep external static pointer dcl 1-27 bx_$has_comb_stat external static fixed bin(17,0) dcl 1-63 bx_$has_sep_stat external static fixed bin(17,0) dcl 1-62 bx_$i_lng external static fixed bin(17,0) dcl 1-55 bx_$inpp external static pointer dcl 1-29 bx_$isp external static pointer dcl 1-28 bx_$l_lng external static fixed bin(17,0) dcl 1-56 bx_$last_rptp external static pointer dcl 1-35 bx_$maxdeflng external static fixed bin(18,0) dcl 1-72 bx_$maxlinklng external static fixed bin(17,0) dcl 1-71 bx_$n_firstrefs external static fixed bin(17,0) dcl 1-47 bx_$n_lng external static fixed bin(17,0) dcl 1-76 bx_$nsymdefs external static fixed bin(17,0) dcl 1-77 bx_$o_lng external static fixed bin(19,0) dcl 1-52 bx_$oddname_limit external static fixed bin(17,0) dcl 1-22 bx_$odnp external static pointer dcl 1-33 bx_$optp external static pointer dcl 1-32 bx_$perprocess_static external static fixed bin(17,0) dcl 1-65 bx_$s_lng external static fixed bin(18,0) dcl 1-57 bx_$size external static fixed bin(17,0) dcl 1-20 bx_$snt_limit external static fixed bin(17,0) dcl 1-21 bx_$standard external static fixed bin(17,0) dcl 1-66 bx_$stringmap_limit external static fixed bin(17,0) dcl 1-23 bx_$t_lng external static fixed bin(18,0) dcl 1-53 bx_$temp external static pointer dcl 1-31 bx_$temp_bsegp external static pointer dcl 1-79 bx_$textlng external static fixed bin(18,0) dcl 1-68 bx_$tintlng external static fixed bin(17,0) dcl 1-70 bx_$tintp external static pointer dcl 1-44 bx_$tlinklng external static fixed bin(17,0) dcl 1-73 bx_$v_lng external static fixed bin(17,0) dcl 1-75 bx_$vers_name external static char(168) dcl 1-18 bx_$vers_number external static fixed bin(17,0) dcl 1-19 comp_ht_n_entries automatic fixed bin(17,0) dcl 5-297 comp_ht_ptr automatic pointer dcl 5-288 component_ht based structure level 1 dcl 5-289 def_header_ptr automatic pointer dcl 5-57 def_ht_n_entries automatic fixed bin(17,0) dcl 5-284 def_ht_ptr automatic pointer dcl 5-277 definition_header based structure level 1 dcl 5-58 definition_ht based structure level 1 dcl 5-278 dup_table_n_names automatic fixed bin(17,0) dcl 5-310 dup_table_ptr automatic pointer dcl 5-301 duplicate_table based structure level 1 dcl 5-302 exp_ptr automatic pointer dcl 5-128 exp_word based structure level 1 dcl 5-129 link_init_copy_info based structure level 1 dcl 5-211 link_init_deferred based structure level 1 dcl 5-270 link_init_list_template based structure level 1 dcl 5-219 link_init_n_bits_in_datum automatic fixed bin(35,0) dcl 5-261 link_init_n_words automatic fixed bin(17,0) dcl 5-215 link_init_n_words_in_list automatic fixed bin(17,0) dcl 5-226 link_init_ptr automatic pointer dcl 5-204 link_trap_pair based structure level 1 dcl 5-177 link_trap_ptr automatic pointer dcl 5-176 list_template_entry based structure level 1 dcl 5-239 lrt based structure level 1 dcl 3-84 lrtp automatic pointer dcl 3-17 msf_map based structure level 1 dcl 5-318 msf_map_ptr automatic pointer dcl 5-317 msf_map_version_1 internal static char(8) initial packed unaligned dcl 5-323 od based structure level 1 dcl 3-48 odnp automatic pointer dcl 3-17 pointer_init_template based structure level 1 packed packed unaligned dcl 5-253 rpt based structure level 1 dcl 3-57 rptep automatic pointer dcl 3-17 rptp automatic pointer dcl 3-17 segname_definition based structure level 1 dcl 5-90 segname_ptr automatic pointer dcl 5-89 type_pair based structure level 1 dcl 5-160 type_ptr automatic pointer dcl 5-159 NAMES DECLARED BY EXPLICIT CONTEXT. check_ignore 000512 constant entry internal dcl 273 ref 181 close_section 000221 constant entry external dcl 157 fabricate_def 000542 constant entry internal dcl 311 ref 140 145 147 190 gen_blockpointer 000351 constant label dcl 205 ref 210 make_defs_ 000045 constant entry external dcl 40 open_section 000054 constant entry external dcl 100 regenerate_block 000435 constant entry external dcl 234 skip 000507 constant label dcl 264 ref 259 261 string_generated 000755 constant label dcl 366 ref 347 test_ignore 000522 constant label dcl 291 ref 301 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1256 1346 1040 1266 Length 1652 1040 70 267 215 16 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME make_defs_ 162 external procedure is an external procedure. check_ignore internal procedure shares stack frame of external procedure make_defs_. fabricate_def internal procedure shares stack frame of external procedure make_defs_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 defbase make_defs_ 000012 linkbase make_defs_ 000014 last_def make_defs_ 000016 last_segname make_defs_ 000020 errname make_defs_ 000024 last_def_rel make_defs_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME make_defs_ 000100 i make_defs_ 000101 j make_defs_ 000102 ndefs make_defs_ 000104 ip make_defs_ 000106 sp make_defs_ 000110 defblock_head make_defs_ 000111 segblock_head make_defs_ 000112 rel_ptr make_defs_ 000113 temp_name make_defs_ 000124 newignore make_defs_ 000126 ctp make_defs_ 000130 ctep make_defs_ 000132 sntp make_defs_ 000134 strmp make_defs_ 000136 def_ptr make_defs_ 000140 acc_string_ptr make_defs_ 000162 i fabricate_def 000163 defoffset fabricate_def 000164 dp fabricate_def THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ generate_def_ hash_defs_ strm_hash_$make_entry THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. bx_$bindmap_def bx_$bound_segname bx_$caller bx_$ctp bx_$curdeflng bx_$debug bx_$fatal_error bx_$ncomp bx_$nsegdefs bx_$sntp bx_$strmp bx_$tdefp bx_$tlinkp LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 40 000044 100 000052 114 000061 115 000064 116 000067 117 000076 119 000104 120 000110 121 000113 125 000114 126 000115 127 000120 128 000123 129 000125 130 000127 135 000132 136 000134 139 000137 140 000161 142 000164 144 000172 145 000173 147 000203 148 000213 150 000216 152 000217 157 000220 172 000226 173 000232 174 000235 175 000240 176 000247 178 000253 179 000256 181 000260 183 000261 184 000264 185 000266 186 000277 187 000303 189 000307 190 000320 191 000323 193 000325 195 000327 198 000335 199 000337 201 000344 203 000347 205 000351 207 000354 209 000360 210 000364 214 000365 215 000372 217 000375 219 000377 221 000415 223 000424 225 000425 227 000431 234 000432 250 000442 252 000446 253 000450 257 000452 258 000461 259 000465 261 000470 263 000476 264 000507 268 000511 273 000512 288 000513 290 000515 291 000522 294 000526 295 000527 298 000530 300 000534 301 000540 304 000541 311 000542 333 000544 334 000547 335 000550 336 000553 337 000557 338 000562 339 000564 340 000571 341 000573 343 000603 344 000612 346 000625 347 000632 349 000633 350 000635 351 000642 353 000644 354 000671 355 000674 357 000676 358 000702 359 000711 360 000716 361 000723 362 000731 364 000735 366 000755 368 000760 371 000765 372 000771 373 000774 374 000776 375 001000 378 001004 379 001006 383 001007 384 001013 385 001015 387 001016 ----------------------------------------------------------- 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