Subversion Repositories Kolibri OS

Rev

Rev 5191 | Blame | Compare with Previous | Last modification | View Log | RSS feed

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