1 /* BEGIN INCLUDE FILE linkdcl.incl.pl1 --- last modified 15 Nov 1971 by C Garman */
 2 
 3 /* Last Modified (Date and Reason):
 4    6/75 by M.Weaver to add virgin_linkage_header declaration
 5    6/75 by S.Webber to comment existing structures better
 6    9/77 by M. Weaver to add run_depth to link
 7    2/83 by M. Weaver to add linkage header flags and change run_depth precision
 8 */
 9 
10 /* format: style3 */
11 dcl       1 link              based aligned,                /* link pair in linkage section */
12             2 head_ptr        bit (18) unal,                /* rel pointer to beginning of linkage section */
13             2 ringno          bit (3) unal,
14             2 mbz             bit (6) unal,
15             2 run_depth       fixed bin (2) unal,           /* run unit depth, filled when link is snapped */
16             2 ft2             bit (6) unal,                 /* fault tag. 46(8) if not snapped, 43(8) if snapped */
17             2 exp_ptr         bit (18) unal,                /* pointer (rel to defs) of expression word */
18             2 mbz2            bit (12) unal,
19             2 modifier        bit (6) unal;                 /* modifier to be left in snapped link */
20 
21 dcl       1 exp_word          based aligned,                /* expression word in link definition */
22             2 type_ptr        bit (18) unal,                /* pointer (rel to defs) of type pair structure */
23             2 exp             bit (18) unal;                /* constant expression to be added in when snapping link */
24 
25 dcl       1 type_pair         based aligned,                /* type pair in link definition */
26             2 type            bit (18) unal,                /* type of link. may be 1,2,3,4,5, or 6 */
27             2 trap_ptr        bit (18) unal,                /* pointer (rel to defs) to the trap word */
28             2 seg_ptr         bit (18) unal,                /* pointer to ACC reference name for segment referenced */
29             2 ext_ptr         bit (18) unal;                /* pointer (rel to defs)  of ACC segdef name */
30 
31 dcl       1 header            based aligned,                /* linkage block header */
32             2 def_ptr         ptr,                          /* pointer to definition section */
33             2 symbol_ptr      ptr unal,                     /* pointer to symbol section in object segment */
34             2 original_linkage_ptr
35                               ptr unal,                     /* pointer to linkage section in object segment */
36             2 unused          bit (72),
37             2 stats,
38               3 begin_links   bit (18) unal,                /* offset (rel to this section) of first link */
39               3 block_length  bit (18) unal,                /* number of words in this linkage section */
40               3 segment_number
41                               bit (18) unal,                /* text segment number associated with this section */
42               3 static_length bit (18) unal;                /* number of words of static for this segment */
43 
44 dcl       1 linkage_header_flags
45                               aligned based,                /* overlay of def_ptr for flags */
46             2 pad1            bit (28) unaligned,           /* flags are in first word */
47             2 static_vlas     bit (1) unaligned,            /* static section "owns" some LA/VLA segments */
48             2 perprocess_static
49                               bit (1) unaligned,            /* 1 copy of static section is used by all tasks/run units */
50             2 pad2            bit (6) unaligned;
51 
52 dcl       1 virgin_linkage_header
53                               aligned based,                /* template for linkage header in object segment */
54             2 pad             bit (30) unaligned,           /* is filled in by linker */
55             2 defs_in_link    bit (6) unaligned,            /* =o20 if defs in linkage (nonstandard) */
56             2 def_offset      bit (18) unaligned,           /* offset of definition section */
57             2 first_ref_relp  bit (18) unaligned,           /* offset of trap-at-first-reference offset array */
58             2 filled_in_later bit (144),
59             2 link_begin      bit (18) unaligned,           /* offset of first link */
60             2 linkage_section_lng
61                               bit (18) unaligned,           /* length of linkage section */
62             2 segno_pad       bit (18) unaligned,           /* will be segment number of copied linkage */
63             2 static_length   bit (18) unaligned;           /* length of static section */
64 
65 
66 dcl       1 trap_word         based aligned,                /* trap word in link definition */
67             2 call_ptr        bit (18) unal,                /* pointer (rel to link) of link to trap procedure */
68             2 arg_ptr         bit (18) unal;                /* pointer (rel to link) of link to arg info for trap proc */
69 
70 dcl       1 name              based aligned,                /* storage of ASCII names in definitions */
71             2 nchars          bit (9) unaligned,            /* number of characters in name */
72             2 char_string     char (31) unaligned;          /* 31-character name */
73 
74 /* END INCLUDE FILE linkdcl.incl.pl1 */