1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 declare (
26 CLASS_TEXT init (0),
27 CLASS_LINKAGE init (1),
28 CLASS_SYMBOL init (2),
29 CLASS_SEGNAME init (3),
30 CLASS_STATIC init (4),
31 CLASS_SYSTEM init (5),
32 CLASS_HEAP init (6)
33 ) fixed bin (3) unsigned internal static options (constant);
34
35 declare CLASS_NAMES (0:6) character (12) internal static options (constant)
36 init ("text", "linkage", "symbol", "segname", "static", "system", "heap");
37
38 declare SYMBOLIC_SECTION_NAMES (0:6) character (8)
39 init ("*text", "*link", "*symbol", *, "*static", "*system", "*heap") internal static
40 options (constant);
41
42 declare 1 definition_flags unaligned based,
43 2 new bit (1),
44 2 ignore bit (1),
45 2 entry bit (1),
46 2 retain bit (1),
47 2 argcount bit (1),
48 2 descriptors bit (1),
49 2 indirect bit (1),
50 2 unused bit (8);
51
52
53
54
55
56
57 declare def_header_ptr pointer;
58 declare 1 definition_header aligned based (def_header_ptr),
59 2 def_list_relp fixed bin (18) unsigned unaligned,
60
61 2 msf_map_relp fixed bin (18) unsigned unaligned,
62
63 2 hash_table_relp fixed bin (18) unsigned unaligned,
64
65 2 flags unaligned like definition_flags;
66
67
68
69
70
71 declare def_ptr pointer;
72 declare 1 definition aligned based (def_ptr),
73 2 forward_relp unal fixed bin (18) unsigned,
74
75 2 backward_relp unal fixed bin (18) unsigned,
76
77 2 thing_relp unal fixed bin (18) unsigned,
78
79 2 flags unaligned like definition_flags,
80 2 class unal fixed bin (3) unsigned,
81
82 2 name_relp unal fixed bin (18) unsigned,
83
84 2 segname_relp unal fixed bin (18) unsigned;
85
86
87
88
89 declare segname_ptr pointer;
90 declare 1 segname_definition aligned based (segname_ptr),
91 2 forward_relp unal fixed bin (18) unsigned,
92
93 2 backward_relp unal fixed bin (18) unsigned,
94
95 2 next_segname_relp unal fixed bin (18) unsigned,
96
97 2 flags unaligned like definition_flags,
98 2 class unal fixed bin (3) unsigned,
99
100 2 name_relp unal fixed bin (18) unsigned,
101
102 2 first_relp unal fixed bin (18) unsigned;
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128 declare exp_ptr pointer;
129 declare 1 exp_word based (exp_ptr) aligned,
130 2 type_relp fixed bin (18) unsigned unal,
131
132 2 expression fixed bin (17) unal;
133
134 declare (
135 LINK_SELF_BASE init (1),
136
137 LINK_OBSOLETE_2 init (2),
138 LINK_REFNAME_BASE init (3),
139 LINK_REFNAME_OFFSETNAME init (4),
140 LINK_SELF_OFFSETNAME init (5),
141 LINK_CREATE_IF_NOT_FOUND init (6),
142 SECTION_TEXT init (0),
143 SECTION_LINK init (1),
144 SECTION_SYMBOL init (2),
145 SECTION_UNUSED init (3),
146 SECTION_STATIC init (4),
147 SECTION_SYSTEM init (5),
148 SECTION_HEAP init (6)
149 ) fixed bin (18) unsigned unaligned internal static options (constant);
150
151
152
153 declare LINK_TYPE_NAMES (1:6)
154 init ("absolute in section", "unused", "absolute off of refname",
155 "symbolic off of refname", "symbolic in section", "symbolic off of refname; create")
156 character (32) varying internal static options (constant);
157
158
159 declare type_ptr pointer;
160 declare 1 type_pair based (type_ptr) aligned,
161 2 type fixed bin (18) unsigned unal,
162
163 2 trap_relp fixed bin (18) unsigned unal,
164
165
166 2 segname_relp fixed bin (18) unsigned unal,
167
168
169 2 offsetname_relp fixed bin (18) unsigned unal;
170
171
172
173
174
175
176 declare link_trap_ptr pointer;
177 declare 1 link_trap_pair aligned based (link_trap_ptr),
178 2 call_relp fixed bin (18) unsigned unaligned,
179
180 2 info_relp fixed bin (18) unsigned unaligned;
181
182
183
184
185
186
187 NOTE
188
189
190
191
192
193
194 declare (
195 INIT_NO_INIT init (0),
196 INIT_COPY_INFO init (3),
197 INIT_DEFINE_AREA init (4),
198 INIT_LIST_TEMPLATE init (5),
199 INIT_DEFERRED init (6)
200 ) fixed bin internal static options (constant);
201
202
203
204 declare link_init_ptr pointer;
205 declare 1 link_init aligned based (link_init_ptr),
206 2 n_words fixed bin (35),
207 2 type fixed bin;
208
209
210
211 declare 1 link_init_copy_info aligned based (link_init_ptr),
212 2 header aligned like link_init,
213 2 initial_data (link_init_n_words refer (link_init_copy_info.header.n_words)) bit (36) aligned;
214
215 declare link_init_n_words fixed bin;
216
217
218
219 declare 1 link_init_list_template
220 aligned based (link_init_ptr),
221 2 header aligned like link_init,
222 2 pad bit (18) unaligned,
223 2 n_words_in_list fixed bin (18) unsigned unaligned,
224 2 template (link_init_n_words_in_list refer (link_init_list_template.n_words_in_list));
225
226 declare link_init_n_words_in_list
227 fixed bin;
228
229
230
231
232
233
234
235
236
237
238
239 declare 1 list_template_entry aligned based,
240 2 n_bits fixed bin (35) aligned,
241 2 mbz bit (3) unaligned,
242 2 init_type fixed bin (3) unsigned unaligned,
243 2 repeat fixed bin (30) unsigned unaligned,
244
245 2 datum bit (link_init_n_bits_in_datum refer (list_template_entry.n_bits));
246
247
248
249
250
251
252
253 dcl 1 pointer_init_template based,
254 2 ptr_type fixed bin (18) unsigned unaligned,
255 2 section_offset fixed bin (18) unsigned unaligned,
256 2 word_offset fixed bin (18) unsigned unaligned,
257 2 mbz bit (12) unaligned,
258 2 bit_offset fixed bin (6) unsigned unaligned;
259
260
261 declare link_init_n_bits_in_datum
262 fixed bin (35);
263
264
265
266
267
268
269
270 declare 1 link_init_deferred aligned based (link_init_ptr),
271 2 header aligned like link_init,
272 2 target_relp fixed bin (18) unsigned unaligned,
273 2 link_relp fixed bin (18) unsigned unaligned;
274
275
276
277 declare def_ht_ptr pointer;
278 declare 1 definition_ht aligned based (def_ht_ptr),
279 2 n_entries fixed bin,
280 2 table (def_ht_n_entries refer (definition_ht.n_entries)) aligned,
281 3 def_relp fixed bin (18) unsigned unaligned,
282 3 unused bit (18) unaligned;
283
284 declare def_ht_n_entries fixed bin;
285
286
287
288 declare comp_ht_ptr pointer;
289 declare 1 component_ht aligned based (comp_ht_ptr),
290 2 n_entries fixed bin,
291 2 table (comp_ht_n_entries refer (component_ht.n_entries)) aligned,
292 3 def_relp fixed bin (18) unsigned unaligned,
293
294 3 block_hdr_relp fixed bin (18) unsigned unaligned;
295
296
297 declare comp_ht_n_entries fixed bin;
298
299
300
301 declare dup_table_ptr pointer;
302 declare 1 duplicate_table aligned based (dup_table_ptr),
303 2 mbz bit (18) unaligned,
304 2 n_names fixed bin (18) unsigned unaligned,
305
306 2 table (dup_table_n_names refer (duplicate_table.n_names)) aligned,
307 3 def_relp fixed bin (18) unsigned unaligned,
308 3 block_hdr_relp fixed bin (18) unsigned unaligned;
309
310 declare dup_table_n_names fixed bin;
311
312
313
314
315
316
317 dcl msf_map_ptr ptr;
318 dcl 01 msf_map aligned based (msf_map_ptr),
319 02 version char (8),
320 02 component_count fixed bin (15) unsigned,
321 02 my_component fixed bin (15) unsigned;
322
323 dcl msf_map_version_1 char (8) static options (constant)
324 init ("msfmp1.0");
325
326 declare acc_string_ptr pointer;
327 declare 1 acc_string aligned based (acc_string_ptr),
328 2 count fixed bin (9) unsigned unaligned,
329 2 string character (max (3, acc_string_length) refer (acc_string.count)) unaligned,
330 2 mbz bit (0) aligned;
331
332
333
334 declare acc_string_length fixed bin (21);
335
336
337