| /* Alpha VMS external format of Extended Image Header. | 
 |  | 
 |    Copyright (C) 2010-2022 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 */ |