[444] | 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 */ |
---|