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