Blame include/vms/eisd.h

Packit bbfece
/* Alpha VMS external format of Extended Image Section Descriptor.
Packit bbfece
Packit bbfece
   Copyright (C) 2010-2018 Free Software Foundation, Inc.
Packit bbfece
   Written by Tristan Gingold <gingold@adacore.com>, AdaCore.
Packit bbfece
Packit bbfece
   This file is part of BFD, the Binary File Descriptor library.
Packit bbfece
Packit bbfece
   This program is free software; you can redistribute it and/or modify
Packit bbfece
   it under the terms of the GNU General Public License as published by
Packit bbfece
   the Free Software Foundation; either version 3 of the License, or
Packit bbfece
   (at your option) any later version.
Packit bbfece
Packit bbfece
   This program is distributed in the hope that it will be useful,
Packit bbfece
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit bbfece
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit bbfece
   GNU General Public License for more details.
Packit bbfece
Packit bbfece
   You should have received a copy of the GNU General Public License
Packit bbfece
   along with this program; if not, write to the Free Software
Packit bbfece
   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
Packit bbfece
   MA 02110-1301, USA.  */
Packit bbfece
Packit bbfece
#ifndef _VMS_EISD_H
Packit bbfece
#define _VMS_EISD_H
Packit bbfece
Packit bbfece
/* Flags.  */
Packit bbfece
#define EISD__M_GBL		0x0001	/* Global.  */
Packit bbfece
#define EISD__M_CRF		0x0002	/* Copy on reference.  */
Packit bbfece
#define EISD__M_DZRO		0x0004	/* Demand zero page.  */
Packit bbfece
#define EISD__M_WRT		0x0008	/* Writable.  */
Packit bbfece
#define EISD__M_INITALCODE	0x0010	/* Part of initialization code.  */
Packit bbfece
#define EISD__M_BASED		0x0020	/* Isect is based.  */
Packit bbfece
#define EISD__M_FIXUPVEC	0x0040	/* Isect is fixup section.  */
Packit bbfece
#define EISD__M_RESIDENT	0x0080	/* Isect is memory resident.  */
Packit bbfece
#define EISD__M_VECTOR		0x0100	/* Vector contained in isect.  */
Packit bbfece
#define EISD__M_PROTECT		0x0200	/* Isect is protected.  */
Packit bbfece
#define EISD__M_LASTCLU		0x0400	/* Last cluster.  */
Packit bbfece
#define EISD__M_EXE		0x0800	/* Code isect.  */
Packit bbfece
#define EISD__M_NONSHRADR	0x1000	/* Contains non-shareable data.  */
Packit bbfece
#define EISD__M_QUAD_LENGTH	0x2000	/* Quad length field valid.  */
Packit bbfece
#define EISD__M_ALLOC_64BIT	0x4000	/* Allocate 64-bit space.  */
Packit bbfece
Packit bbfece
#define EISD__K_LEN 36
Packit bbfece
#define EISD__K_LENEND 12	/* For end marker or next block.  */
Packit bbfece
#define EISD__K_MAXLENGLBL 84
Packit bbfece
Packit bbfece
#define EISD__K_GBLNAMLEN 44	/* Size of the field.  */
Packit bbfece
Packit bbfece
struct vms_eisd
Packit bbfece
{
Packit bbfece
  unsigned char majorid[4];
Packit bbfece
  unsigned char minorid[4];
Packit bbfece
Packit bbfece
  /* Size (in bytes) of this eisd.  */
Packit bbfece
  unsigned char eisdsize[4];
Packit bbfece
Packit bbfece
  /* Size (in bytes) of the section.  */
Packit bbfece
  unsigned char secsize[4];
Packit bbfece
Packit bbfece
  /* Virtual address of the section.  */
Packit bbfece
  unsigned char virt_addr[8];
Packit bbfece
Packit bbfece
  /* Flags.  */
Packit bbfece
  unsigned char flags[4];
Packit bbfece
Packit bbfece
  /* Base virtual block number.  */
Packit bbfece
  unsigned char vbn[4];
Packit bbfece
Packit bbfece
  /* Page fault cluster.  */
Packit bbfece
  unsigned char pfc;
Packit bbfece
Packit bbfece
  /* Linker match control.  */
Packit bbfece
  unsigned char matchctl;
Packit bbfece
Packit bbfece
  /* Section type.  */
Packit bbfece
  unsigned char type;
Packit bbfece
Packit bbfece
  unsigned char fill_1;
Packit bbfece
Packit bbfece
  /* End of structure for normal records.  */
Packit bbfece
Packit bbfece
  /* Ident for global section.  */
Packit bbfece
  unsigned char ident[4];
Packit bbfece
      
Packit bbfece
  /* Global name ascic.  First 8 bytes are quad length field.  */
Packit bbfece
  unsigned char gblnam[EISD__K_GBLNAMLEN];
Packit bbfece
};
Packit bbfece
Packit bbfece
/* Versions.  */
Packit bbfece
#define EISD__K_MAJORID 1
Packit bbfece
#define EISD__K_MINORID 1
Packit bbfece
Packit bbfece
/* Match control.  */
Packit bbfece
#define EISD__K_MATALL 0	/* Match always.  */
Packit bbfece
#define EISD__K_MATEQU 1	/* Match if equal.  */
Packit bbfece
#define EISD__K_MATLEQ 2	/* Match if less or equal.  */
Packit bbfece
#define EISD__K_MATNEV 3	/* Match never.  */
Packit bbfece
Packit bbfece
/* Section type.  */
Packit bbfece
#define EISD__K_NORMAL 0	/* Normal program image section.  */
Packit bbfece
#define EISD__K_SHRFXD 1	/* Shareable fixed section.  */
Packit bbfece
#define EISD__K_PRVFXD 2	/* Private fixed section.  */
Packit bbfece
#define EISD__K_SHRPIC 3	/* Shareable pic section.  */
Packit bbfece
#define EISD__K_PRVPIC 4	/* Private PIC section.  */
Packit bbfece
#define EISD__K_USRSTACK 253	/* User stack section.  */
Packit bbfece
Packit bbfece
/* EISD offsets.  */
Packit bbfece
Packit bbfece
#define EISD__L_EISDSIZE	 8
Packit bbfece
#define EISD__L_SECSIZE		12
Packit bbfece
#define EISD__Q_VIR_ADDR	16
Packit bbfece
#define EISD__L_FLAGS		24
Packit bbfece
#define EISD__L_VBN		28
Packit bbfece
#define EISD__R_CONTROL		32
Packit bbfece
#define EISD__L_IDENT		36
Packit bbfece
#define EISD__T_GBLNAM		40
Packit bbfece
Packit bbfece
#endif /* _VMS_EISD_H */