1 03/15/84  check_mst
  2 
  3 Syntax:  check_mst REEL_NAME {-control_args}
  4     or:  check_mst -file MST_FILE_NAME {-control_args}
  5     or:  check_mst -tape REEL_NAME {-control_args}
  6     or:  check_mst OUTPUT_FILE_NAME
  7 
  8 
  9 Function: scans a Multics system tape (MST), producing a report on the
 10 segments it defines and checking for certain errors and
 11 inconsistencies.
 12 
 13 
 14 Arguments:
 15 REEL_NAME
 16    is the name of the reel to be checked containing an MST written
 17    with generate_mst.
 18 MST_FILE_NAME
 19    is the pathname of the file created by generate_mst -file.
 20 OUTPUT_FILE_NAME
 21    is the name to be given to the output file if the input file has
 22    already been attached by generate_mst -hold.
 23 
 24 
 25 Control arguments:
 26 -density N, -den N
 27    specifies the recorded density of the MST.
 28 -severity N, -sv N
 29    specifies the minimum severity of errors to be printed.
 30 
 31 
 32 Notes on output format:  The check_mst command produces an output file
 33 named REEL_NAME.ckrout (or OUTPUT_FILE_NAME.ckrout) that contains a
 34 list of the segments on the tape, as well as diagnostic information.
 35 For each segment there is an entry of the form:
 36 
 37    PRIMARY_NAME SEGNO (W, R, E) ATTRIBUTES1
 38     NAME2              ATTRIBUTES2
 39     NAME3              ATTRIBUTES3
 40     NAME4              PATHNAME
 41     NAME5                ...              ...
 42     ...                  ...              ...
 43     ACL LIST             ...
 44 
 45 
 46 where--
 47 PRIMARY_NAME
 48    is the primary name of the segment.
 49 NAME1...NAMEN
 50    are additional names of the segment.  Names that are not printed to
 51    the left of ATTRIBUTES are printed in a third column.
 52 W, R, E
 53    are the segment ring brackets, in the conventional order.
 54 ATTRIBUTES1
 55    are the standard SDW access attributes for the segment: read,
 56    execute, write, privileged, encacheable, gate, and wired.  The gate
 57    attribute is derived from the ring brackets.
 58 
 59 
 60 ATTRIBUTES2
 61    are chosen from:
 62    init seg
 63       a segment that is deleted at the end of system initialization.
 64    temp seg
 65       an init seg that is deleted when its collection is complete.
 66    per process
 67       segments in the Initializer's process directory.
 68    firmware
 69       segments that contain MPC firmware images.
 70 
 71 
 72 ATTRIBUTES3
 73    indicate that the segment has one of the following types of storage
 74    allocated or that no storage is allocated:
 75    wired length
 76       is the amount of memory used rounded up to an even 16-word
 77       boundary.  This attribute is only meaningful for segments loaded
 78       before paging has been initialized.
 79    paged length
 80       is the length in pages of a segment that is either loaded after
 81       paging is initialized or that is made paged.  The latter results
 82       in entries for both wired length and paged length.
 83    max length
 84       is a standard file system max length and is set for segments
 85       that grow dynamically.
 86 
 87 
 88 PATHNAME
 89    is any pathname the segment gets.
 90 ACL LIST
 91    is a standard access control list.
 92 
 93 
 94 Notes: After the segments have been listed a cross-reference is run
 95 over the contents of the tape, in an effort to detect links to
 96 nonexistent segments or entry points or types of links that the
 97 hardcore prelinker cannot snap.  The cross-referencer produces messages
 98 for links between temp segments and other segments that do not exist.
 99 For example, a collection 1 temp seg cannot legally reference a
100 collection 2 segment because the first is guaranteed to have been
101 deleted before the second is loaded from the tape.
102 
103 
104 Next, the cross-referencer produces four sorted lists--
105 1.  A list of references to entrypoints that cannot be found in
106     segments.  These are usually errors.
107 2.  A list of links to segments that cannot be found on the MST, but
108     are present in your search rules.  This is a normal occurrence,
109     since many hardcore programs check their ring of execution and make
110     appropriate calls.  When producing a modified system tape, check
111     this list.
112 3.  A list of segments that cannot be found at all.  Unless the code
113     that uses them is not executed, or unless they are installed
114     online, they produce linkage errors.
115 4.  A list of links to special star segnames (*system, *symbol, etc.).
116     A *system link cannot be used in the hardcore, and the symbol
117     section of hardcore programs is not retained; thus, any entries in
118     this list should be investigated.
119 
120 
121 Notes on error messages:  The checker detects and reports on several
122 classes of errors--
123 SEVERITY 4--FATAL
124    the tape is malformed and cannot be read.  This can be due to a
125    logic error in generate_mst or tape I/O errors.
126 SEVERITY 3--SEVERE ERROR
127    a segment has run out of space, or the rules for the system tape
128    have been violated.  The checker keeps track of the amount of space
129    used in the linkage segments, definitions_, and name_table.  If an
130    error indicates a wired overflow, then increase the cur_length
131    specified in the header file to the size given in the total summary
132    in the output file.  If the error indicates a paged overflow,
133    increase the max_length.
134 
135 
136 SEVERITY 2--ERROR
137    the cross-referencer finds references to entrypoints that are
138    undefined in their containing segments or segments that cannot
139    be found.
140 WARNING
141    other errors detected by the cross-referencer.
142 
143 Checker errors are reported by com_err_ and are written to the
144 output file.
145 
146 There is a severity indicator that is zero or one if there are no
147 errors detected.  It is accessible with the severity active function:
148    [severity check_mst]