1 /* BEGIN INCLUDE FILE ... binder_input.incl.pl1 ... 01/14/81 W. Olin Sibert */
 2 /* Input structure for binder_. Modified to contain more useful information 01/14/81 */
 3 
 4 /* This file is used only by bind.pl1, bind_.pl1 and parse_bindfile_.pl1 */
 5 
 6 /* Modified 9/24/84 by M Sharpe to hold a few new flags (originally done
 7    by Henry Bodzin, Ford Motor Co.), and to allow "unlimited" number of
 8    input archives/segments and object components. */
 9 
10 dcl 1 inp aligned based (inpp),                             /* Really based on bx_$inpp */
11     2 version char (4) aligned,
12     2 caller_name char (32) unaligned,                      /* Name of command on whose behalf binder is being invoked */
13 
14     2 bound_seg_name char (32) unaligned,                   /* name of new bound segment */
15 
16     2 narc fixed bin,                                       /* number of input archive files */
17     2 nupd fixed bin,                                       /* number of update archive files */
18     2 ntotal fixed bin,                                     /* total number of input and update files */
19     2 nobj fixed bin,                                       /* number of objects to be bound */
20 
21     2 bindfilep pointer,                                    /* pointer to bindfile */
22     2 bindfile_bc fixed bin (24),                           /* bitcount of bindfile */
23     2 bindfile_name char (32) unaligned,                    /* name of bindfile */
24     2 bindfile_time_up fixed bin (71),                      /* date updated in archive */
25     2 bindfile_time_mod fixed bin (71),                     /* date last modified */
26     2 bindfile_idx fixed bin,                               /* index of archive bindfile was in */
27 
28     2 options aligned,
29       3 debug bit (1) unaligned,                            /* 1-> debug option ON */
30       3 list_seg bit (1) unaligned,                         /* 1 -> make list seg */
31       3 map_opt bit (1) unaligned,                          /* 1 -> map option  */
32       3 list_opt bit (1) unaligned,                         /* 1 -> list option */
33       3 brief_opt bit (1) unaligned,                        /* 1 -> brief option */
34       3 force_order_opt bit (1) unaligned,                  /* 1 -> force_order option from command line */
35       3 zeroseg_seen bit (1) unaligned,                     /* 1 -> a zero-length object is in the obj array */
36       3 flags_pad bit(29) unaligned,
37                                                             /* ---- any additions to the include file must be made before
38                                                                the "archive" substructure, as inp.ntotal is incremented
39                                                                and the structure is extended as we pick up the names of
40                                                                archives/segs from the command line arguments. Similarly,
41                                                                after inp.ntotal is determined, the "obj" substructure is
42                                                                filled and inp.nobj is incremented as we open up each
43                                                                archive and take the necessary information from the
44                                                                components.  To allocate the structure, the user must first
45                                                                set NTOTAL and NOBJ, allocate the structure and then set
46                                                                inp.notal and inp.nobj; otherwise, this structure must be
47                                                                declared in a temporary segment.  */
48 
49     2 archive (NTOTAL refer (inp.ntotal)) aligned,          /* info about input archives/segs, for source map, etc. */
50       3 path char (168) unaligned,                          /* for identifying archive */
51       3 real_path char (168) unaligned,                     /* determined by translator_info_ */
52       3 ptr pointer,                                        /* pointer to archive */
53       3 bc fixed bin (24),                                  /* and its bitcount */
54       3 standalone_seg bit (1) unaligned,                   /* 1 -> standalone_seg;0 -> archive */
55       3 entryname char (32),                                /* entryname of segment */
56       3 uid bit (36) aligned,                               /* unique id of archive */
57       3 dtm fixed bin (71),                                 /* date-time modified of archive */
58 
59 
60     2 obj (NOBJ refer (inp.nobj)) aligned like obj;
61 
62 
63 dcl 1 obj aligned based (p),                                /* declaration of single input entry */
64     2 filename char (32) unaligned,
65     2 base pointer,                                         /* pointer to base of object segment */
66     2 bitcount fixed bin (24),                              /* bitcount of object segment */
67     2 option bit (18) unaligned,                            /* pointer into option structure */
68     2 new_order fixed bin(9) unsigned unaligned,            /* new position from XXX_Order statement */
69     2 to_be_ignored bit(1) unaligned,                       /* mentioned in Ignore statement or is zero-length */
70     2 objectname_stmt bit(1) unaligned,                     /* mentioned in objectname: statement */
71     2 flag bit (1) unaligned,                               /* This word of unaligned bits ought to be a substructure, */
72     2 pad bit (6) unaligned,                                /* but if it is, pl1 scope-of-names stupidly rejects refs */
73                                                             /* to obj.flag as "ambiguous", because of inp.obj.flag */
74     2 archive_idx fixed bin,                                /* index of archive from which this component comes */
75     2 time_mod fixed bin (71),                              /* DTCM of component (from archive) */
76     2 time_up fixed bin (71);                               /* Time updated in archive */
77 
78 
79 dcl  BINDER_INPUT_VERSION_2 char (4) aligned internal static options (constant) init ("BI.2");
80 dcl  (NOBJ, NTOTAL)    fixed bin init (0);
81 
82 
83 /* END INCLUDE FILE ... binder_input.incl.pl1 */