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