Upload Tizen:Base source
[external/binutils.git] / include / vms / eihd.h
1 /* Alpha VMS external format of Extended Image Header.
2
3    Copyright 2010 Free Software Foundation, Inc.
4    Written by Tristan Gingold <gingold@adacore.com>, AdaCore.
5
6    This file is part of BFD, the Binary File Descriptor library.
7
8    This program is free software; you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation; either version 3 of the License, or
11    (at your option) any later version.
12
13    This program is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16    GNU General Public License for more details.
17
18    You should have received a copy of the GNU General Public License
19    along with this program; if not, write to the Free Software
20    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
21    MA 02110-1301, USA.  */
22
23 #ifndef _VMS_EIHD_H
24 #define _VMS_EIHD_H
25
26 /* Extended Image Header (eihd) structure.  */
27 struct vms_eihd
28 {
29   /* Version of this EIHD.  */
30   unsigned char majorid[4];
31   unsigned char minorid[4];
32
33   /* Size in bytes of the header.  */
34   unsigned char size[4];
35
36   /* Byte offset to ISD (Image Section Descriptors) list.  */
37   unsigned char isdoff[4];
38
39   /* Byte offset to activation data (off=16).  */
40   unsigned char activoff[4];
41
42   /* Byte offset to symbol table and debugging data.  */ 
43   unsigned char symdbgoff[4];
44
45   /* Byte offset to image ident.  */
46   unsigned char imgidoff[4];
47
48   /* Byte offset to patch data.  */
49   unsigned char patchoff[4];
50
51   /* RVA of fixup info (off=32).  */
52   unsigned char iafva[8];
53
54   /* RVA of symbol vector.  */
55   unsigned char symvva[8];
56
57   /* Byte offset to version number array (off=48).  */
58   unsigned char version_array_off[4];
59
60   /* Image type.  */
61   unsigned char imgtype[4];
62
63   /* Image subtype.  */
64   unsigned char subtype[4];
65
66   /* Size in bytes of image I/O section requested.  */
67   unsigned char imgiocnt[4];
68
69   /* Nbr of channels requested (off=64).  */
70   unsigned char iochancnt[4];
71
72   /* Requested privilege mask.  */
73   unsigned char privreqs[8];
74
75   /* Number of header diskblocks.  */
76   unsigned char hdrblkcnt[4];
77
78   /* Linker produced image flags.  */
79   unsigned char lnkflags[4];
80
81   /* GBL SEC ident value for linkable image.  */
82   unsigned char ident[4];
83
84   /* SYS$K_VERSION or 0 if not linked with exec.  */
85   unsigned char sysver[4];
86
87   /* Linker match control.  */
88   unsigned char matchctl;
89   unsigned char fill_1[3];
90
91   /* Size of the symbol vector in bytes.  */
92   unsigned char symvect_size[4];
93
94   /* Value of /BPAGE.  */
95   unsigned char virt_mem_block_size[4];
96
97   /* Byte offset to extended fixup data.  */
98   unsigned char ext_fixup_off[4];
99
100   /* Byte offset to no_optimize psect table.  */
101   unsigned char noopt_psect_off[4];
102
103   unsigned char fill_2[398];
104
105   /* CODE identifies image type to MOM.  */
106   unsigned char alias[2];
107 };
108
109 #define EIHD__K_MAJORID 3       /* Major id constant    */
110 #define EIHD__K_MINORID 0       /* Minor id constant    */
111
112 /* Image type.  */
113 #define EIHD__K_EXE             1       /* Executable image     */
114 #define EIHD__K_LIM             2       /* Linkable image.  */
115
116 /* Image subtype.  */
117 #define EIHD__C_NATIVE          0       /* Alpha native image.  */
118 #define EIHD__C_CLI             1       /* Image is a CLI, run LOGINOUT.  */
119
120 /* Linker image flags.  */
121 #define EIHD__M_LNKDEBUG        0x0001  /* Full debugging requested.  */
122 #define EIHD__M_LNKNOTFR        0x0002  /* No first transfer address.  */
123 #define EIHD__M_NOP0BUFS        0x0004  /* No RMS use of P0 for image I/O.  */
124 #define EIHD__M_PICIMG          0x0008  /* PIC image.  */
125 #define EIHD__M_P0IMAGE         0x0010  /* P0 only image.  */
126 #define EIHD__M_DBGDMT          0x0020  /* Image header has dmt fields.  */
127 #define EIHD__M_INISHR          0x0040  /* Transfer array contains LNISHR.  */
128 #define EIHD__M_XLATED          0x0080  /* Translated image.  */
129 #define EIHD__M_BIND_CODE_SEC   0x0100  /* EXE sect can be put into S0.  */
130 #define EIHD__M_BIND_DATA_SEC   0x0200  /* DATA sect can be put into S0.  */
131 #define EIHD__M_MKTHREADS       0x0400  /* Multiple kernel threads.  */
132 #define EIHD__M_UPCALLS         0x0800  /* Upcalls enabled.  */
133 #define EIHD__M_OMV_READY       0x1000  /* Can be processed by OMV.  */
134 #define EIHD__M_EXT_BIND_SECT   0x2000  /* May be moved, using ext fixups.  */
135
136 /* Offsets of some fields.  */
137 #define EIHD__L_SIZE            8
138 #define EIHD__L_ISDOFF          12
139 #define EIHD__L_SYMDBGOFF       20
140 #define EIHD__Q_SYMVVA          40
141 #define EIHD__L_IMGTYPE         52
142
143 #define EIHD__C_LENGTH 104
144
145 #endif /* _VMS_EIHD_H */