COMPILATION LISTING OF SEGMENT get_defname_ Compiled by: Multics PL/I Compiler, Release 32f, of October 9, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 11/11/89 1046.5 mst Sat Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 /* format: style4,indattr,ifthenstmt,ifthen,idind35,^indcomtxt */ 13 14 get_defname_: proc (a_linkptr, a_defptr, a_offset, a_section, a_ename, a_code); 15 16 /* Get_defname is a routine which is given an entry offset 17* . and returns a pointer to the corresponding entry name in acc format. 18* 19* USAGE: dcl get_defname ext entry (ptr, bit(18) aligned, ptr, fixed bin); 20* 21* call get_defname (linkptr, offset, acc_name_ptr, code); 22* 23* 1) linkptr a pointer to the linkage section for the entry (Input) 24* 25* 2) defptr a ptr to the def section or to the seg if seg is a gate 26* 27* 3) offset the offset of the entry (Input) 28* 29* 4) section the object section offset is relative to 30* 31* 5) ename the entry name from the defs 32* 33* 6) code a standard file system status code (Output) 34* 35* 36* Converted for the follow-on 645 by Craig Jensen on 6/27/72. 37* Recoded as get_def_name_ by M. Weaver 12 June 1973 38* Modified 8/76 by M. Weaver to reference kst_info instead of unsnap_service 39* Modified 10/84 by Keith Loepere to restructure so as to avoid access checks. 40* 41* */ 42 43 44 /* Parameters */ 45 46 dcl a_code fixed bin (35) parameter; 47 dcl a_defptr ptr parameter; 48 dcl a_ename char (*) parameter; 49 dcl a_linkptr ptr parameter; 50 dcl a_offset bit (18) aligned parameter; 51 dcl a_section fixed bin parameter; 52 53 /* Variables */ 54 55 dcl acc_name_ptr ptr; 56 dcl bitcnt fixed bin (24); 57 dcl class fixed bin; 58 dcl code fixed bin (35); 59 dcl def_count fixed bin; 60 dcl defptr ptr; 61 dcl first_defptr ptr; 62 dcl link_count fixed bin; 63 dcl linkptr ptr; 64 dcl offset bit (18) aligned; 65 dcl 1 oi aligned like object_info; 66 dcl old_flag fixed bin; 67 dcl savering fixed bin (3); 68 dcl section fixed bin; 69 dcl type fixed bin (2); 70 71 /* Entries */ 72 73 dcl level$get entry () returns (fixed bin (3)); 74 dcl level$set entry (fixed bin (3)); 75 dcl link_man$get_lp entry (ptr, ptr); 76 dcl object_info_$brief entry (ptr, fixed bin (24), ptr, fixed bin (35)); 77 dcl status_$mins entry (ptr, fixed bin (2), fixed bin (24), fixed bin (35)); 78 79 /* Misc */ 80 81 dcl (addr, addrel, bin, null, rel, unspec) builtin; 82 83 /* External */ 84 85 dcl error_table_$defs_loop ext fixed bin (35); 86 dcl error_table_$no_ext_sym ext fixed bin (35); 87 88 /* Based */ 89 90 dcl 1 acc aligned based, /* template for acc string */ 91 2 count fixed bin (8) unaligned, 92 2 string char (0 refer (count)) unaligned; 93 94 /* OLD DEFINITION FORMAT */ 95 96 dcl 1 ext_sym_definition based aligned, /* external symbol definition block */ 97 2 next_ext_ptr bit (18) unal, /* pointer to next definition */ 98 2 trap_ptr bit (18) unal, /* pointer to trap information */ 99 2 value bit (18) unal, /* value of the defined symbol */ 100 2 class bit (18) unal, /* says what value is relative to */ 101 2 nchars bit (9) unaligned, /* number of characters in external def */ 102 2 char_string bit (279) unaligned;/* external symbol */ 103 104 code = 0; /* first do some initialization */ 105 link_count = 0; 106 def_count = 0; 107 linkptr = a_linkptr; 108 defptr = a_defptr; 109 offset = a_offset; 110 section = a_section; 111 savering = level$get (); 112 113 if defptr ^= null then 114 if rel (defptr) ^= "0"b then ; /* user could find definitions in user ring */ 115 else do; 116 117 /* must find definitions given pointer to object */ 118 /* This program used to handle cases where the segment was a 119*hardcore segment (segno < stack_0) in which the user's validation 120*level was within the call bracket. However, the only two such 121*segments are return_to_ring_0_ and restart_fault, neither of which 122*has anything to look up. */ 123 124 call dc_find$obj_linkage_ring_ptr (defptr, code); /* let user read through call bracket */ 125 if code ^= 0 then go to no_name; 126 127 call status_$mins (defptr, type, bitcnt, code); 128 if code ^= 0 then go to no_name; 129 130 oi.version_number = object_info_version_2; 131 call object_info_$brief (defptr, bitcnt, addr (oi), code); 132 if code = 0 then defptr = oi.defp; 133 else if addr (defptr) -> its_unsigned.ringno ^= 0 then go to no_name; 134 else do; 135 136 /* hardcore objects had their definitions removed - use get_lp to find them */ 137 138 call level$set (0); /* allow get_lp to work */ 139 call link_man$get_lp (defptr, linkptr); 140 call level$set (savering); 141 142 if linkptr ^= null then /* can still find defs from linakge */ 143 if unspec (linkptr -> header.def_ptr) = "0"b then go to no_name; 144 else defptr = linkptr -> header.def_ptr; /* pointer to base of definition section */ 145 end; 146 end; 147 else do; /* must find definitions via linkage info */ 148 if unspec (linkptr -> header.def_ptr) = "0"b then go to no_name; 149 defptr = linkptr -> header.def_ptr; /* pointer to base of definition section */ 150 call dc_find$obj_linkage_ring_ptr (defptr, code); 151 if code ^= 0 then do; 152 no_name: code = error_table_$no_ext_sym; 153 go to return; 154 end; 155 end; 156 157 first_defptr = defptr; 158 if defptr -> definition.flags.new then do; /* this is new format */ 159 old_flag = 0; 160 if defptr -> definition.flags.ignore then /* skip header in std obj segs */ 161 defptr = addrel (first_defptr, defptr -> definition.forward); 162 end; 163 else old_flag = 1; /* this is old format */ 164 go to test; /* got good def so skip next */ 165 166 next: defptr = addrel (first_defptr, defptr -> definition.forward); 167 168 next3: if defptr -> definition.forward = "0"b then /* no more definitions */ 169 goto no_name; 170 171 def_count = def_count + 1; /* increment definition count */ 172 if def_count >= 4000 then do; /* too many definitions */ 173 code = error_table_$defs_loop; 174 go to return; 175 end; 176 177 test: if old_flag = 0 then do; /* new_format */ 178 if defptr -> definition.class = "011"b then do; /* check for class 3 */ 179 defptr = addrel (first_defptr, defptr -> definition.segname); /* get to first def quickly */ 180 go to next3; 181 end; 182 end; 183 184 if defptr -> definition.value ^= offset then go to next; /* no match */ 185 186 if section > -1 then do; /* use only defs for proper section */ 187 if old_flag = 0 then class = bin (defptr -> definition.class, 3); 188 else class = bin (defptr -> ext_sym_definition.class, 18); 189 if section ^= class then go to next; 190 end; 191 192 if old_flag = 0 then /* new format */ 193 acc_name_ptr = addrel (first_defptr, defptr -> definition.symbol); 194 195 else acc_name_ptr = addrel (defptr, 2); /* old format */ 196 197 a_ename = acc_name_ptr -> acc.string; /* fill in name */ 198 199 return: a_code = code; 200 return; 201 /* BEGIN include file dc_find_dcls.incl.pl1 */ 1 2 1 3 /* Calling sequences for dc_find. Keith Loepere, June 1984. */ 1 4 /* Added a few more, October 1984. */ 1 5 /* 85-05-08, EJ Sharpe: added obj_delete_uid, obj_status_read_uid, and obj_status_read_raw_uid */ 1 6 /* 85-05-15, EJ Sharpe: changed dir_write_raw_uid to mdir_set_quota_uid */ 1 7 1 8 /* format: style4,indattr,ifthenstmt,ifthen,idind35,^indcomtxt */ 1 9 1 10 dcl DC_FIND_CHASE fixed bin (1) static options (constant) init (1); 1 11 dcl DC_FIND_NO_CHASE fixed bin (1) static options (constant) init (0); 1 12 dcl DC_FIND_NO_UNLOCK_DIR bit (1) aligned static options (constant) init ("0"b); 1 13 dcl DC_FIND_UNLOCK_DIR bit (1) aligned static options (constant) init ("1"b); 1 14 1 15 dcl dc_find$dir_for_append entry (char (168), char (32), fixed bin (1), ptr, ptr, fixed bin (35)); 1 16 dcl dc_find$dir_for_append_raw entry (char (168), char (32), fixed bin (1), ptr, ptr, fixed bin (35)); 1 17 dcl dc_find$dir_for_retrieve_append entry (char (168), char (32), fixed bin (1), ptr, ptr, ptr, fixed bin (35)); 1 18 1 19 dcl dc_find$dir_initiate entry (char (168), ptr, fixed bin (35)); 1 20 1 21 dcl dc_find$dir_move_quota entry (char (168), ptr, ptr, fixed bin (35)); 1 22 1 23 dcl dc_find$dir_read entry (char (168), ptr, fixed bin (35)); 1 24 dcl dc_find$dir_read_priv entry (char (168), ptr, fixed bin (35)); 1 25 1 26 dcl dc_find$dir_reclassify entry (char (168), ptr, ptr, ptr, fixed bin (35)); 1 27 1 28 dcl dc_find$dir_salvage entry (char (168), bit (36) aligned, ptr, fixed bin (35)); 1 29 1 30 dcl dc_find$dir_write entry (char (168), fixed bin (18) uns, ptr, fixed bin (35)); 1 31 dcl dc_find$dir_write_priv entry (char (168), fixed bin (18) uns, ptr, fixed bin (35)); 1 32 1 33 dcl dc_find$finished entry (ptr, bit (1) aligned); 1 34 1 35 dcl dc_find$link_target entry (char (168), char (32), fixed bin (35)); 1 36 1 37 dcl dc_find$mdir_set_quota_uid entry ((0:15) bit (36) aligned, char (168), fixed bin (18) uns, ptr, ptr, fixed bin (35)); 1 38 1 39 dcl dc_find$obj_access_write entry (char (168), char (32), fixed bin (1), fixed bin (18) uns, ptr, fixed bin (35)); 1 40 dcl dc_find$obj_access_write_priv entry (char (168), char (32), fixed bin (1), fixed bin (18) uns, ptr, fixed bin (35)); 1 41 1 42 dcl dc_find$obj_attributes_read entry (char (168), char (32), fixed bin (1), ptr, fixed bin (35)); 1 43 dcl dc_find$obj_attributes_read_ptr entry (ptr, ptr, fixed bin (35)); 1 44 1 45 dcl dc_find$obj_attributes_write entry (char (168), char (32), fixed bin (1), fixed bin (18) uns, ptr, fixed bin (35)); 1 46 dcl dc_find$obj_attributes_write_ptr entry (ptr, fixed bin (18) uns, ptr, fixed bin (35)); 1 47 1 48 dcl dc_find$obj_bc_delta_write entry (char (168), char (32), fixed bin (24), ptr, fixed bin (35)); 1 49 dcl dc_find$obj_bc_delta_write_ptr entry (ptr, fixed bin (24), ptr, fixed bin (35)); 1 50 dcl dc_find$obj_bc_write entry (char (168), char (32), fixed bin (24), ptr, fixed bin (35)); 1 51 dcl dc_find$obj_bc_write_ptr entry (ptr, fixed bin (24), ptr, fixed bin (35)); 1 52 1 53 dcl dc_find$obj_delete entry (char (168), char (32), fixed bin (1), ptr, fixed bin (35)); 1 54 dcl dc_find$obj_delete_priv entry (char (168), char (32), fixed bin (1), ptr, fixed bin (35)); 1 55 dcl dc_find$obj_delete_uid entry ((0:15) bit (36) aligned, char (168), char (32), ptr, fixed bin (35)); 1 56 dcl dc_find$obj_delete_priv_uid entry ((0:15) bit (36) aligned, char (168), char (32), ptr, fixed bin (35)); 1 57 dcl dc_find$obj_delete_ptr entry (ptr, ptr, fixed bin (35)); 1 58 1 59 dcl dc_find$obj_existence_ptr entry (ptr, ptr, fixed bin (35)); 1 60 1 61 dcl dc_find$obj_for_audit entry (char (168), char (32), ptr, fixed bin (35)); 1 62 1 63 dcl dc_find$obj_initiate entry (char (168), char (32), ptr, fixed bin (35)); 1 64 dcl dc_find$obj_initiate_for_linker_dp entry (ptr, char (32), ptr, fixed bin (35)); 1 65 dcl dc_find$obj_initiate_raw entry (char (168), char (32), ptr, fixed bin (35)); 1 66 1 67 dcl dc_find$obj_linkage_ring_ptr entry (ptr, fixed bin (35)); 1 68 1 69 dcl dc_find$obj_modes_ptr entry (ptr, bit (36) aligned, bit (36) aligned, (3) fixed bin (3), fixed bin (35)); 1 70 1 71 dcl dc_find$obj_reclassify entry (char (168), char (32), ptr, ptr, fixed bin (35)); 1 72 1 73 dcl dc_find$obj_status_attributes_read entry (char (168), char (32), fixed bin (1), ptr, fixed bin (35)); 1 74 1 75 dcl dc_find$obj_status_read entry (char (168), char (32), fixed bin (1), ptr, fixed bin (35)); 1 76 dcl dc_find$obj_status_read_uid entry ((0:15) bit (36) aligned, char (168), char (32), ptr, fixed bin (35)); 1 77 dcl dc_find$obj_status_read_priv entry (char (168), char (32), fixed bin (1), ptr, fixed bin (35)); 1 78 dcl dc_find$obj_status_read_priv_ptr entry (ptr, ptr, fixed bin (35)); 1 79 dcl dc_find$obj_status_read_priv_uid entry ((0:15) bit (36) aligned, char (168), char (32), ptr, fixed bin (35)); 1 80 dcl dc_find$obj_status_read_raw_uid entry ((0:15) bit (36) aligned, char (168), char (32), ptr, fixed bin (35)); 1 81 dcl dc_find$obj_status_read_ptr entry (ptr, ptr, fixed bin (35)); 1 82 1 83 dcl dc_find$obj_status_write entry (char (168), char (32), fixed bin (1), fixed bin (18) uns, ptr, fixed bin (35)); 1 84 dcl dc_find$obj_status_write_priv entry (char (168), char (32), fixed bin (1), fixed bin (18) uns, ptr, fixed bin (35)); 1 85 dcl dc_find$obj_status_write_priv_ptr entry (ptr, fixed bin (18) uns, ptr, fixed bin (35)); 1 86 dcl dc_find$obj_status_write_ptr entry (ptr, fixed bin (18) uns, ptr, fixed bin (35)); 1 87 1 88 dcl dc_find$obj_terminate entry (char (168), char (32), fixed bin (1), ptr, fixed bin (35)); 1 89 dcl dc_find$obj_terminate_ptr entry (ptr, ptr, fixed bin (35)); 1 90 1 91 dcl dc_find$obj_truncate entry (char (168), char (32), ptr, fixed bin (35)); 1 92 dcl dc_find$obj_truncate_ptr entry (ptr, ptr, fixed bin (35)); 1 93 dcl dc_find$obj_truncate_raw_ptr entry (ptr, ptr, fixed bin (35)); 1 94 1 95 dcl dc_find$obj_volume_retrieve entry (char (168), char (32), ptr, ptr, fixed bin (35)); 1 96 1 97 dcl dc_find$seg_fault entry (ptr, ptr, fixed bin (35)); 1 98 1 99 /* END include file dc_find_dcls.incl.pl1 */ 201 202 /* BEGIN INCLUDE FILE definition.incl.pl1 */ 2 2 2 3 2 4 2 5 /****^ HISTORY COMMENTS: 2 6* 1) change(86-05-02,Elhard), approve(86-05-02,MCR7391), 2 7* audit(86-07-18,DGHowe), install(86-11-20,MR12.0-1222): 2 8* Modified to add indirect bit to definition flags. 2 9* END HISTORY COMMENTS */ 2 10 2 11 2 12 dcl 1 definition aligned based, 2 13 2 forward unal bit(18), /* offset of next def */ 2 14 2 backward unal bit(18), /* offset of previous def */ 2 15 2 value unal bit(18), 2 16 2 flags unal, 2 17 3 new bit(1), 2 18 3 ignore bit(1), 2 19 3 entry bit(1), 2 20 3 retain bit(1), 2 21 3 argcount bit(1), 2 22 3 descriptors bit(1), 2 23 3 indirect bit(1), 2 24 3 unused bit(8), 2 25 2 class unal bit(3), 2 26 2 symbol unal bit(18), /* offset of ACC for symbol */ 2 27 2 segname unal bit(18); /* offset of segname def */ 2 28 2 29 /* END INCLUDE FILE definition.incl.pl1 */ 202 203 /* BEGIN INCLUDE FILE its.incl.pl1 3 2* modified 27 July 79 by JRDavis to add its_unsigned 3 3* Internal format of ITS pointer, including ring-number field for follow-on processor */ 3 4 3 5 dcl 1 its based aligned, /* declaration for ITS type pointer */ 3 6 2 pad1 bit (3) unaligned, 3 7 2 segno bit (15) unaligned, /* segment number within the pointer */ 3 8 2 ringno bit (3) unaligned, /* ring number within the pointer */ 3 9 2 pad2 bit (9) unaligned, 3 10 2 its_mod bit (6) unaligned, /* should be 43(8) */ 3 11 3 12 2 offset bit (18) unaligned, /* word offset within the addressed segment */ 3 13 2 pad3 bit (3) unaligned, 3 14 2 bit_offset bit (6) unaligned, /* bit offset within the word */ 3 15 2 pad4 bit (3) unaligned, 3 16 2 mod bit (6) unaligned; /* further modification */ 3 17 3 18 dcl 1 itp based aligned, /* declaration for ITP type pointer */ 3 19 2 pr_no bit (3) unaligned, /* number of pointer register to use */ 3 20 2 pad1 bit (27) unaligned, 3 21 2 itp_mod bit (6) unaligned, /* should be 41(8) */ 3 22 3 23 2 offset bit (18) unaligned, /* word offset from pointer register word offset */ 3 24 2 pad2 bit (3) unaligned, 3 25 2 bit_offset bit (6) unaligned, /* bit offset relative to new word offset */ 3 26 2 pad3 bit (3) unaligned, 3 27 2 mod bit (6) unaligned; /* further modification */ 3 28 3 29 3 30 dcl 1 its_unsigned based aligned, /* just like its, but with unsigned binary */ 3 31 2 pad1 bit (3) unaligned, 3 32 2 segno fixed bin (15) unsigned unaligned, 3 33 2 ringno fixed bin (3) unsigned unaligned, 3 34 2 pad2 bit (9) unaligned, 3 35 2 its_mod bit (6) unaligned, 3 36 3 37 2 offset fixed bin (18) unsigned unaligned, 3 38 2 pad3 bit (3) unaligned, 3 39 2 bit_offset fixed bin (6) unsigned unaligned, 3 40 2 pad4 bit (3) unaligned, 3 41 2 mod bit (6) unaligned; 3 42 3 43 dcl 1 itp_unsigned based aligned, /* just like itp, but with unsigned binary where appropriate */ 3 44 2 pr_no fixed bin (3) unsigned unaligned, 3 45 2 pad1 bit (27) unaligned, 3 46 2 itp_mod bit (6) unaligned, 3 47 3 48 2 offset fixed bin (18) unsigned unaligned, 3 49 2 pad2 bit (3) unaligned, 3 50 2 bit_offset fixed bin (6) unsigned unaligned, 3 51 2 pad3 bit (3) unaligned, 3 52 2 mod bit (6) unaligned; 3 53 3 54 3 55 dcl ITS_MODIFIER bit (6) unaligned internal static options (constant) init ("43"b3); 3 56 dcl ITP_MODIFIER bit (6) unaligned internal static options (constant) init ("41"b3); 3 57 3 58 /* END INCLUDE FILE its.incl.pl1 */ 203 204 /* BEGIN INCLUDE FILE linkdcl.incl.pl1 --- last modified 15 Nov 1971 by C Garman */ 4 2 4 3 /* Last Modified (Date and Reason): 4 4* 6/75 by M.Weaver to add virgin_linkage_header declaration 4 5* 6/75 by S.Webber to comment existing structures better 4 6* 9/77 by M. Weaver to add run_depth to link 4 7* 2/83 by M. Weaver to add linkage header flags and change run_depth precision 4 8**/ 4 9 4 10 /* format: style3 */ 4 11 dcl 1 link based aligned, /* link pair in linkage section */ 4 12 2 head_ptr bit (18) unal, /* rel pointer to beginning of linkage section */ 4 13 2 ringno bit (3) unal, 4 14 2 mbz bit (6) unal, 4 15 2 run_depth fixed bin (2) unal, /* run unit depth, filled when link is snapped */ 4 16 2 ft2 bit (6) unal, /* fault tag. 46(8) if not snapped, 43(8) if snapped */ 4 17 2 exp_ptr bit (18) unal, /* pointer (rel to defs) of expression word */ 4 18 2 mbz2 bit (12) unal, 4 19 2 modifier bit (6) unal; /* modifier to be left in snapped link */ 4 20 4 21 dcl 1 exp_word based aligned, /* expression word in link definition */ 4 22 2 type_ptr bit (18) unal, /* pointer (rel to defs) of type pair structure */ 4 23 2 exp bit (18) unal; /* constant expression to be added in when snapping link */ 4 24 4 25 dcl 1 type_pair based aligned, /* type pair in link definition */ 4 26 2 type bit (18) unal, /* type of link. may be 1,2,3,4,5, or 6 */ 4 27 2 trap_ptr bit (18) unal, /* pointer (rel to defs) to the trap word */ 4 28 2 seg_ptr bit (18) unal, /* pointer to ACC reference name for segment referenced */ 4 29 2 ext_ptr bit (18) unal; /* pointer (rel to defs) of ACC segdef name */ 4 30 4 31 dcl 1 header based aligned, /* linkage block header */ 4 32 2 def_ptr ptr, /* pointer to definition section */ 4 33 2 symbol_ptr ptr unal, /* pointer to symbol section in object segment */ 4 34 2 original_linkage_ptr 4 35 ptr unal, /* pointer to linkage section in object segment */ 4 36 2 unused bit (72), 4 37 2 stats, 4 38 3 begin_links bit (18) unal, /* offset (rel to this section) of first link */ 4 39 3 block_length bit (18) unal, /* number of words in this linkage section */ 4 40 3 segment_number 4 41 bit (18) unal, /* text segment number associated with this section */ 4 42 3 static_length bit (18) unal; /* number of words of static for this segment */ 4 43 4 44 dcl 1 linkage_header_flags 4 45 aligned based, /* overlay of def_ptr for flags */ 4 46 2 pad1 bit (28) unaligned, /* flags are in first word */ 4 47 2 static_vlas bit (1) unaligned, /* static section "owns" some LA/VLA segments */ 4 48 2 perprocess_static 4 49 bit (1) unaligned, /* 1 copy of static section is used by all tasks/run units */ 4 50 2 pad2 bit (6) unaligned; 4 51 4 52 dcl 1 virgin_linkage_header 4 53 aligned based, /* template for linkage header in object segment */ 4 54 2 pad bit (30) unaligned, /* is filled in by linker */ 4 55 2 defs_in_link bit (6) unaligned, /* =o20 if defs in linkage (nonstandard) */ 4 56 2 def_offset bit (18) unaligned, /* offset of definition section */ 4 57 2 first_ref_relp bit (18) unaligned, /* offset of trap-at-first-reference offset array */ 4 58 2 filled_in_later bit (144), 4 59 2 link_begin bit (18) unaligned, /* offset of first link */ 4 60 2 linkage_section_lng 4 61 bit (18) unaligned, /* length of linkage section */ 4 62 2 segno_pad bit (18) unaligned, /* will be segment number of copied linkage */ 4 63 2 static_length bit (18) unaligned; /* length of static section */ 4 64 4 65 4 66 dcl 1 trap_word based aligned, /* trap word in link definition */ 4 67 2 call_ptr bit (18) unal, /* pointer (rel to link) of link to trap procedure */ 4 68 2 arg_ptr bit (18) unal; /* pointer (rel to link) of link to arg info for trap proc */ 4 69 4 70 dcl 1 name based aligned, /* storage of ASCII names in definitions */ 4 71 2 nchars bit (9) unaligned, /* number of characters in name */ 4 72 2 char_string char (31) unaligned; /* 31-character name */ 4 73 4 74 /* END INCLUDE FILE linkdcl.incl.pl1 */ 204 205 /* BEGIN INCLUDE FILE ... object_info.incl.pl1 5 2*coded February 8, 1972 by Michael J. Spier */ 5 3 /* modified May 26, 1972 by M. Weaver */ 5 4 /* modified 15 April, 1975 by M. Weaver */ 5 5 5 6 declare 1 object_info aligned based, /* structure containing object info based, returned by object_info_ */ 5 7 2 version_number fixed bin, /* version number of current structure format (=2) */ 5 8 2 textp pointer, /* pointer to beginning of text section */ 5 9 2 defp pointer, /* pointer to beginning of definition section */ 5 10 2 linkp pointer, /* pointer to beginning of linkage section */ 5 11 2 statp pointer, /* pointer to beginning of static section */ 5 12 2 symbp pointer, /* pointer to beginning of symbol section */ 5 13 2 bmapp pointer, /* pointer to beginning of break map (may be null) */ 5 14 2 tlng fixed bin, /* length in words of text section */ 5 15 2 dlng fixed bin, /* length in words of definition section */ 5 16 2 llng fixed bin, /* length in words of linkage section */ 5 17 2 ilng fixed bin, /* length in words of static section */ 5 18 2 slng fixed bin, /* length in words of symbol section */ 5 19 2 blng fixed bin, /* length in words of break map */ 5 20 2 format, /* word containing bit flags about object type */ 5 21 3 old_format bit(1) unaligned, /* on if segment isn't in new format, i.e. has old style object map */ 5 22 3 bound bit(1) unaligned, /* on if segment is bound */ 5 23 3 relocatable bit(1) unaligned, /* on if seg has relocation info in its first symbol block */ 5 24 3 procedure bit(1) unaligned, /* on if segment is an executable object program */ 5 25 3 standard bit(1) unaligned, /* on if seg is in standard format (more than just standard map) */ 5 26 3 gate bit(1) unaligned, /* on if segment is a gate */ 5 27 3 separate_static bit(1) unaligned, /* on if static not in linkage */ 5 28 3 links_in_text bit(1) unaligned, /* on if there are threaded links in text */ 5 29 3 perprocess_static bit (1) unaligned, /* on if static is not to be per run unit */ 5 30 3 pad bit(27) unaligned, 5 31 2 entry_bound fixed bin, /* entry bound if segment is a gate */ 5 32 2 textlinkp pointer, /* ptr to first link in text */ 5 33 5 34 /* LIMIT OF BRIEF STRUCTURE */ 5 35 5 36 2 compiler char(8) aligned, /* name of processor which generated segment */ 5 37 2 compile_time fixed bin(71), /* clock reading of date/time object was generated */ 5 38 2 userid char(32) aligned, /* standard Multics id of creator of object segment */ 5 39 2 cvers aligned, /* generator version name in printable char string form */ 5 40 3 offset bit(18) unaligned, /* offset of name in words relative to base of symbol section */ 5 41 3 length bit(18) unaligned, /* length of name in characters */ 5 42 2 comment aligned, /* printable comment concerning generator or generation of segment */ 5 43 3 offset bit(18) unaligned, /* offset of comment in words relative to base of symbol section */ 5 44 3 length bit(18) unaligned, /* length of comment in characters */ 5 45 2 source_map fixed bin, /* offset, relative to base of symbol section, of source map structure */ 5 46 5 47 /* LIMIT OF DISPLAY STRUCTURE */ 5 48 5 49 2 rel_text pointer, /* pointer to text section relocation info */ 5 50 2 rel_def pointer, /* pointer to definition section relocation info */ 5 51 2 rel_link pointer, /* pointer to linkage section relocation info */ 5 52 2 rel_static pointer, /* pointer to static section relocation info */ 5 53 2 rel_symbol pointer, /* pointer to symbol section relocation info */ 5 54 2 text_boundary fixed bin, /* specifies mod of text section base boundary */ 5 55 2 static_boundary fixed bin, /* specifies mod of internal static base boundary */ 5 56 /* currently not used by system */ 5 57 2 default_truncate fixed bin, /* offset rel to symbp for binder to automatically trunc. symb sect. */ 5 58 2 optional_truncate fixed bin; /* offset rel to symbp for binder to optionally trunc. symb sect. */ 5 59 5 60 declare object_info_version_2 fixed bin int static init(2); 5 61 5 62 /* END INCLUDE FILE ... object_info.incl.pl1 */ 205 206 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0800.5 get_defname_.pl1 >spec>install>1110>get_defname_.pl1 201 1 05/20/85 0848.1 dc_find_dcls.incl.pl1 >ldd>include>dc_find_dcls.incl.pl1 202 2 11/24/86 1226.9 definition.incl.pl1 >ldd>include>definition.incl.pl1 203 3 11/26/79 1320.6 its.incl.pl1 >ldd>include>its.incl.pl1 204 4 07/27/83 0910.0 linkdcl.incl.pl1 >ldd>include>linkdcl.incl.pl1 205 5 08/05/77 1022.5 object_info.incl.pl1 >ldd>include>object_info.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. a_code parameter fixed bin(35,0) dcl 46 set ref 14 199* a_defptr parameter pointer dcl 47 ref 14 108 a_ename parameter char packed unaligned dcl 48 set ref 14 197* a_linkptr parameter pointer dcl 49 ref 14 107 a_offset parameter bit(18) dcl 50 ref 14 109 a_section parameter fixed bin(17,0) dcl 51 ref 14 110 acc based structure level 1 dcl 90 acc_name_ptr 000100 automatic pointer dcl 55 set ref 192* 195* 197 addr builtin function dcl 81 ref 131 131 133 addrel builtin function dcl 81 ref 160 166 179 192 195 bin builtin function dcl 81 ref 187 188 bitcnt 000102 automatic fixed bin(24,0) dcl 56 set ref 127* 131* class 000103 automatic fixed bin(17,0) dcl 57 in procedure "get_defname_" set ref 187* 188* 189 class 1(33) based bit(3) level 2 in structure "definition" packed packed unaligned dcl 2-12 in procedure "get_defname_" ref 178 187 class 1(18) based bit(18) level 2 in structure "ext_sym_definition" packed packed unaligned dcl 96 in procedure "get_defname_" ref 188 code 000104 automatic fixed bin(35,0) dcl 58 set ref 104* 124* 125 127* 128 131* 132 150* 151 152* 173* 199 count based fixed bin(8,0) level 2 packed packed unaligned dcl 90 ref 197 dc_find$obj_linkage_ring_ptr 000026 constant entry external dcl 1-67 ref 124 150 def_count 000105 automatic fixed bin(17,0) dcl 59 set ref 106* 171* 171 172 def_ptr based pointer level 2 dcl 4-31 ref 142 144 148 149 definition based structure level 1 dcl 2-12 defp 4 000120 automatic pointer level 2 dcl 65 set ref 132 defptr 000106 automatic pointer dcl 60 set ref 108* 113 113 124* 127* 131* 132* 133 139* 144* 149* 150* 157 158 160 160* 160 166* 166 168 178 179* 179 184 187 188 192 195 error_table_$defs_loop 000022 external static fixed bin(35,0) dcl 85 ref 173 error_table_$no_ext_sym 000024 external static fixed bin(35,0) dcl 86 ref 152 ext_sym_definition based structure level 1 dcl 96 first_defptr 000110 automatic pointer dcl 61 set ref 157* 160 166 179 192 flags 1(18) based structure level 2 packed packed unaligned dcl 2-12 forward based bit(18) level 2 packed packed unaligned dcl 2-12 ref 160 166 168 header based structure level 1 dcl 4-31 ignore 1(19) based bit(1) level 3 packed packed unaligned dcl 2-12 ref 160 its_unsigned based structure level 1 dcl 3-30 level$get 000010 constant entry external dcl 73 ref 111 level$set 000012 constant entry external dcl 74 ref 138 140 link_count 000112 automatic fixed bin(17,0) dcl 62 set ref 105* link_man$get_lp 000014 constant entry external dcl 75 ref 139 linkptr 000114 automatic pointer dcl 63 set ref 107* 139* 142 142 144 148 149 new 1(18) based bit(1) level 3 packed packed unaligned dcl 2-12 ref 158 null builtin function dcl 81 ref 113 142 object_info based structure level 1 dcl 5-6 object_info_$brief 000016 constant entry external dcl 76 ref 131 object_info_version_2 constant fixed bin(17,0) initial dcl 5-60 ref 130 offset 000116 automatic bit(18) dcl 64 set ref 109* 184 oi 000120 automatic structure level 1 dcl 65 set ref 131 131 old_flag 000206 automatic fixed bin(17,0) dcl 66 set ref 159* 163* 177 187 192 rel builtin function dcl 81 ref 113 ringno 0(18) based fixed bin(3,0) level 2 packed packed unsigned unaligned dcl 3-30 ref 133 savering 000207 automatic fixed bin(3,0) dcl 67 set ref 111* 140* section 000210 automatic fixed bin(17,0) dcl 68 set ref 110* 186 189 segname 2(18) based bit(18) level 2 packed packed unaligned dcl 2-12 ref 179 status_$mins 000020 constant entry external dcl 77 ref 127 string 0(09) based char level 2 packed packed unaligned dcl 90 ref 197 symbol 2 based bit(18) level 2 packed packed unaligned dcl 2-12 ref 192 type 000211 automatic fixed bin(2,0) dcl 69 set ref 127* unspec builtin function dcl 81 ref 142 148 value 1 based bit(18) level 2 packed packed unaligned dcl 2-12 ref 184 version_number 000120 automatic fixed bin(17,0) level 2 dcl 65 set ref 130* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. DC_FIND_CHASE internal static fixed bin(1,0) initial dcl 1-10 DC_FIND_NO_CHASE internal static fixed bin(1,0) initial dcl 1-11 DC_FIND_NO_UNLOCK_DIR internal static bit(1) initial dcl 1-12 DC_FIND_UNLOCK_DIR internal static bit(1) initial dcl 1-13 ITP_MODIFIER internal static bit(6) initial packed unaligned dcl 3-56 ITS_MODIFIER internal static bit(6) initial packed unaligned dcl 3-55 dc_find$dir_for_append 000000 constant entry external dcl 1-15 dc_find$dir_for_append_raw 000000 constant entry external dcl 1-16 dc_find$dir_for_retrieve_append 000000 constant entry external dcl 1-17 dc_find$dir_initiate 000000 constant entry external dcl 1-19 dc_find$dir_move_quota 000000 constant entry external dcl 1-21 dc_find$dir_read 000000 constant entry external dcl 1-23 dc_find$dir_read_priv 000000 constant entry external dcl 1-24 dc_find$dir_reclassify 000000 constant entry external dcl 1-26 dc_find$dir_salvage 000000 constant entry external dcl 1-28 dc_find$dir_write 000000 constant entry external dcl 1-30 dc_find$dir_write_priv 000000 constant entry external dcl 1-31 dc_find$finished 000000 constant entry external dcl 1-33 dc_find$link_target 000000 constant entry external dcl 1-35 dc_find$mdir_set_quota_uid 000000 constant entry external dcl 1-37 dc_find$obj_access_write 000000 constant entry external dcl 1-39 dc_find$obj_access_write_priv 000000 constant entry external dcl 1-40 dc_find$obj_attributes_read 000000 constant entry external dcl 1-42 dc_find$obj_attributes_read_ptr 000000 constant entry external dcl 1-43 dc_find$obj_attributes_write 000000 constant entry external dcl 1-45 dc_find$obj_attributes_write_ptr 000000 constant entry external dcl 1-46 dc_find$obj_bc_delta_write 000000 constant entry external dcl 1-48 dc_find$obj_bc_delta_write_ptr 000000 constant entry external dcl 1-49 dc_find$obj_bc_write 000000 constant entry external dcl 1-50 dc_find$obj_bc_write_ptr 000000 constant entry external dcl 1-51 dc_find$obj_delete 000000 constant entry external dcl 1-53 dc_find$obj_delete_priv 000000 constant entry external dcl 1-54 dc_find$obj_delete_priv_uid 000000 constant entry external dcl 1-56 dc_find$obj_delete_ptr 000000 constant entry external dcl 1-57 dc_find$obj_delete_uid 000000 constant entry external dcl 1-55 dc_find$obj_existence_ptr 000000 constant entry external dcl 1-59 dc_find$obj_for_audit 000000 constant entry external dcl 1-61 dc_find$obj_initiate 000000 constant entry external dcl 1-63 dc_find$obj_initiate_for_linker_dp 000000 constant entry external dcl 1-64 dc_find$obj_initiate_raw 000000 constant entry external dcl 1-65 dc_find$obj_modes_ptr 000000 constant entry external dcl 1-69 dc_find$obj_reclassify 000000 constant entry external dcl 1-71 dc_find$obj_status_attributes_read 000000 constant entry external dcl 1-73 dc_find$obj_status_read 000000 constant entry external dcl 1-75 dc_find$obj_status_read_priv 000000 constant entry external dcl 1-77 dc_find$obj_status_read_priv_ptr 000000 constant entry external dcl 1-78 dc_find$obj_status_read_priv_uid 000000 constant entry external dcl 1-79 dc_find$obj_status_read_ptr 000000 constant entry external dcl 1-81 dc_find$obj_status_read_raw_uid 000000 constant entry external dcl 1-80 dc_find$obj_status_read_uid 000000 constant entry external dcl 1-76 dc_find$obj_status_write 000000 constant entry external dcl 1-83 dc_find$obj_status_write_priv 000000 constant entry external dcl 1-84 dc_find$obj_status_write_priv_ptr 000000 constant entry external dcl 1-85 dc_find$obj_status_write_ptr 000000 constant entry external dcl 1-86 dc_find$obj_terminate 000000 constant entry external dcl 1-88 dc_find$obj_terminate_ptr 000000 constant entry external dcl 1-89 dc_find$obj_truncate 000000 constant entry external dcl 1-91 dc_find$obj_truncate_ptr 000000 constant entry external dcl 1-92 dc_find$obj_truncate_raw_ptr 000000 constant entry external dcl 1-93 dc_find$obj_volume_retrieve 000000 constant entry external dcl 1-95 dc_find$seg_fault 000000 constant entry external dcl 1-97 exp_word based structure level 1 dcl 4-21 itp based structure level 1 dcl 3-18 itp_unsigned based structure level 1 dcl 3-43 its based structure level 1 dcl 3-5 link based structure level 1 dcl 4-11 linkage_header_flags based structure level 1 dcl 4-44 name based structure level 1 dcl 4-70 trap_word based structure level 1 dcl 4-66 type_pair based structure level 1 dcl 4-25 virgin_linkage_header based structure level 1 dcl 4-52 NAMES DECLARED BY EXPLICIT CONTEXT. get_defname_ 000016 constant entry external dcl 14 next 000265 constant label dcl 166 ref 184 189 next3 000272 constant label dcl 168 ref 180 no_name 000237 constant label dcl 152 ref 125 128 133 142 148 168 return 000370 constant label dcl 199 ref 153 174 test 000305 constant label dcl 177 ref 164 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 520 550 375 530 Length 1024 375 30 237 122 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME get_defname_ 162 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME get_defname_ 000100 acc_name_ptr get_defname_ 000102 bitcnt get_defname_ 000103 class get_defname_ 000104 code get_defname_ 000105 def_count get_defname_ 000106 defptr get_defname_ 000110 first_defptr get_defname_ 000112 link_count get_defname_ 000114 linkptr get_defname_ 000116 offset get_defname_ 000120 oi get_defname_ 000206 old_flag get_defname_ 000207 savering get_defname_ 000210 section get_defname_ 000211 type get_defname_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out return_mac ext_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. dc_find$obj_linkage_ring_ptr level$get level$set link_man$get_lp object_info_$brief status_$mins THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$defs_loop error_table_$no_ext_sym LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 14 000010 104 000031 105 000032 106 000033 107 000034 108 000040 109 000043 110 000046 111 000050 113 000056 124 000065 125 000076 127 000100 128 000115 130 000117 131 000121 132 000140 133 000145 138 000151 139 000161 140 000172 142 000201 144 000212 146 000214 148 000215 149 000222 150 000224 151 000235 152 000237 153 000242 157 000243 158 000245 159 000250 160 000251 162 000261 163 000262 164 000264 166 000265 168 000272 171 000275 172 000276 173 000301 174 000304 177 000305 178 000307 179 000314 180 000321 184 000322 186 000327 187 000332 188 000340 189 000343 192 000345 195 000355 197 000360 199 000370 200 000373 ----------------------------------------------------------- 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