This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Patch]: create include/vms


Hi,

this patch creates include/vms and adds severals files to define structures and constant for
Alpha VMS object and image files.

It mimics VMS include files (but using standard ANSI-C).

Currently it duplicates some macros defined in bfd/vms.h but I will soon submit (or commit) patches to
clean that.

Ok to commit ?

Tristan.


2010-02-12  Tristan Gingold  <gingold@adacore.com>

	* dmt.h, dst.h, eeom.h, egps.h, egsd.h, egst.h, egsy.h: New Files.
	* eiaf.h, eicp.h, eiha.h, eihd.h, eihi.h, eihs.h, eihvn.h: Ditto.
	* eisd.h, emh.h, eobjrec.h, esdf.h, esrf.h, etir.h, shl.h: Ditto.
diff --git a/include/vms/dmt.h b/include/vms/dmt.h
new file mode 100644
index 0000000..f2f4e0d
--- /dev/null
+++ b/include/vms/dmt.h
@@ -0,0 +1,45 @@
+/* Alpha VMS external format of Debug Module Table.
+
+   Copyright 2010 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_DMT_H
+#define _VMS_DMT_H
+
+struct vms_dmt_header
+{
+  /* Address of the module.  */
+  unsigned char modbeg[4];
+
+  /* Size of the module.  */
+  unsigned char size[4];
+
+  /* Number of psect for this module.  */
+  unsigned char psect_count[2];
+
+  unsigned char mbz[2];
+};
+
+struct vms_dmt_psect
+{
+  unsigned char start[4];
+  unsigned char length[4];
+};
+#endif /* _VMS_DMT_H */
diff --git a/include/vms/dst.h b/include/vms/dst.h
new file mode 100644
index 0000000..d179018
--- /dev/null
+++ b/include/vms/dst.h
@@ -0,0 +1,165 @@
+/* Alpha VMS external format of Debug Symbol Table.
+
+   Copyright 2010 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_DST_H
+#define _VMS_DST_H
+
+/* Also available in vms freeware v5.0 debug/alpha_dstrecrds.sdl.  */
+
+struct vms_dst_header
+{
+  /* Length.  */
+  unsigned char length[2];
+
+  /* Type.  */
+  unsigned char type[2];
+};
+
+/* Beginning of module.  */
+#define DST__K_MODBEG 188
+
+/* Some well known languages.  */
+#define DST__K_MACRO 0
+#define DST__K_BLISS 2
+#define DST__K_C 7
+#define DST__K_ADA 9
+
+struct vms_dst_modbeg
+{
+  unsigned char flags;
+  unsigned char unused;
+  unsigned char language[4];
+  unsigned char major[2];
+  unsigned char minor[2];
+  /* Module name ASCIC.  */
+  /* Ident name ASCIC.  */
+};
+
+/* Routine begin.  */
+#define DST__K_RTNBEG 190
+
+struct vms_dst_rtnbeg
+{
+  unsigned char flags;
+
+  /* Address of the code.  */
+  unsigned char address[4];
+
+  /* Procedure descriptor address.  */
+  unsigned char pd_address[4];
+
+  /* Name: ASCIC  */
+};
+
+/* Line number.  */
+#define DST__K_LINE_NUM 185
+
+struct vms_dst_pcline
+{
+  unsigned char pcline_command;
+  unsigned char field[4];
+};
+
+#define DST__K_DELTA_PC_W 1
+#define DST__K_INCR_LINUM 2
+#define DST__K_INCR_LINUM_W 3
+#define DST__K_SET_LINUM  9
+#define DST__K_SET_LINUM_B 19
+#define DST__K_SET_LINUM_L 20
+#define DST__K_TERM 14
+#define DST__K_SET_ABS_PC 16
+#define DST__K_DELTA_PC_L 17
+
+/* Routine end.  */
+#define DST__K_RTNEND 191
+
+struct vms_dst_rtnend
+{
+  unsigned char unused;
+  unsigned char size[4];
+};
+
+/* Prologue.  */
+#define DST__K_PROLOG 162
+
+struct vms_dst_prolog
+{
+  unsigned char bkpt_addr[4];
+};
+
+/* Epilog.  */
+#define DST__K_EPILOG 127
+
+struct vms_dst_epilog
+{
+  unsigned char flags;
+  unsigned char count[4];
+};
+
+/* Module end.  */
+#define DST__K_MODEND 189
+
+/* Block begin.  */
+#define DST__K_BLKBEG 176
+
+struct vms_dst_blkbeg
+{
+  unsigned char unused;
+  unsigned char address[4];
+  /* Name ASCIC.  */
+};
+
+/* Block end.  */
+#define DST__K_BLKEND 177
+
+struct vms_dst_blkend
+{
+  unsigned char unused;
+  unsigned char size[4];
+};
+
+/* Source correlation.  */
+#define DST__K_SOURCE 155
+
+#define DST__K_SRC_DECLFILE    1
+#define DST__K_SRC_SETFILE     2
+#define DST__K_SRC_SETREC_L    3
+#define DST__K_SRC_SETREC_W    4
+#define DST__K_SRC_SETLNUM_L   5
+#define DST__K_SRC_SETLNUM_W   6
+#define DST__K_SRC_DEFLINES_W 10
+#define DST__K_SRC_DEFLINES_B 11
+#define DST__K_SRC_FORMFEED   16
+
+struct vms_dst_src_decl_src
+{
+  unsigned char length;
+  unsigned char flags;
+  unsigned char fileid[2];
+  unsigned char rms_cdt[8];
+  unsigned char rms_ebk[4];
+  unsigned char rms_ffb[2];
+  unsigned char rms_rfo;
+  /* Filename ASCIC.  */
+};
+
+#endif /* _VMS_DST_H */
diff --git a/include/vms/eeom.h b/include/vms/eeom.h
new file mode 100644
index 0000000..36f4e56
--- /dev/null
+++ b/include/vms/eeom.h
@@ -0,0 +1,60 @@
+/* Alpha VMS external format of Extended End Of Module.
+
+   Copyright 2010 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_EEOM_H
+#define _VMS_EEOM_H
+
+/* Completion flags.  */
+#define EEOM__C_SUCCESS 0
+#define EEOM__C_WARNING 1
+#define EEOM__C_ERROR   2
+#define EEOM__C_ABORT   3
+
+struct vms_eeom
+{
+  /* Record type.  */
+  unsigned char rectyp[2];
+
+  /* Record size.  */
+  unsigned char size[2];
+
+  /* Number of conditional linkage pairs.  */
+  unsigned char total_lps[4];
+
+  /* Completion code.  */
+  unsigned char comcod[2];
+
+
+  /* Transfer address flags.  */
+  unsigned char tfrflg;
+
+  /* Pad for alignment.  */
+  unsigned char temp;
+
+  /* Psect of transfer address.  */
+  unsigned char psindx[4];
+
+  /* Transfer address.  */
+  unsigned char tfradr[8];
+};
+
+#endif /* _VMS_EEOM_H */
diff --git a/include/vms/egps.h b/include/vms/egps.h
new file mode 100644
index 0000000..2b09999
--- /dev/null
+++ b/include/vms/egps.h
@@ -0,0 +1,50 @@
+/* Alpha VMS external format of Extended Program Section Definition.
+
+   Copyright 2010 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_EGPS_H
+#define _VMS_EGPS_H
+
+struct vms_egps
+{
+  /* Entry type.  */
+  unsigned char gsdtyp[2];
+
+  /* Length of the entry.  */
+  unsigned char gsdsiz[2];
+
+  /* Psect alignment.  */
+  unsigned char align;
+
+  /* Pad for alignment.  */
+  unsigned char temp;
+
+  unsigned char flags[2];
+
+  /* Length of this contribution.  */
+  unsigned char alloc[4];
+
+  /* Name.  */
+  unsigned char namlng;
+  unsigned char name[31];
+};
+
+#endif /* _VMS_EGPS_H */
diff --git a/include/vms/egsd.h b/include/vms/egsd.h
new file mode 100644
index 0000000..9a665cd
--- /dev/null
+++ b/include/vms/egsd.h
@@ -0,0 +1,61 @@
+/* Alpha VMS external format of Extended Global Symbol Directory.
+
+   Copyright 2010 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_EGSD_H
+#define _VMS_EGSD_H
+
+#define EGSD__K_ENTRIES 2	/* Offset to first entry in record.	*/
+#define EGSD__C_ENTRIES 2	/* Offset to first entry in record.	*/
+#define EGSD__C_PSC 0		/* Psect definition.			*/
+#define EGSD__C_SYM 1		/* Symbol specification.		*/
+#define EGSD__C_IDC 2		/* Random entity check.			*/
+#define EGSD__C_SPSC 5		/* Shareable image psect definition.	*/
+#define EGSD__C_SYMV 6		/* Vectored (dual-valued) versions of SYM.  */
+#define EGSD__C_SYMM 7		/* Masked versions of SYM.		*/
+#define EGSD__C_SYMG 8		/* EGST - gst version of SYM.		*/
+#define EGSD__C_MAXRECTYP 8	/* Maximum entry type defined.		*/
+
+struct vms_egsd
+{
+  /* Record type.  */
+  unsigned char rectyp[2];
+
+  /* Record size.  */
+  unsigned char recsiz[2];
+
+  /* Padding for alignment.  */
+  unsigned char alignlw[4];
+
+  /* Followed by egsd entries.  */
+};
+
+struct vms_egsd_entry
+{
+  /* Entry type.  */
+  unsigned char gsdtyp[2];
+
+  /* Length of the entry.  */
+  unsigned char gsdsiz[2];
+};
+
+
+#endif /* _VMS_EGSD_H */
diff --git a/include/vms/egst.h b/include/vms/egst.h
new file mode 100644
index 0000000..d424484
--- /dev/null
+++ b/include/vms/egst.h
@@ -0,0 +1,39 @@
+/* Alpha VMS external format of Extended Global Symbol Definition.
+
+   Copyright 2010 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_EGST_H
+#define _VMS_EGST_H
+
+struct vms_egst
+{
+  struct vms_egsy header;
+
+  unsigned char value[8];
+  unsigned char lp_1[8];
+  unsigned char lp_2[8];
+
+  unsigned char psindx[4];
+  unsigned char namlng;
+  unsigned char name[31];
+};
+
+#endif /* _VMS_EGST_H */
diff --git a/include/vms/egsy.h b/include/vms/egsy.h
new file mode 100644
index 0000000..5add879
--- /dev/null
+++ b/include/vms/egsy.h
@@ -0,0 +1,54 @@
+/* Alpha VMS external format of Extended Global Symbol.
+
+   Copyright 2010 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_EGSY_H
+#define _VMS_EGSY_H
+
+#define EGSY__W_FLAGS  6
+
+#define EGSY__V_WEAK		0x0001
+#define EGSY__V_DEF		0x0002
+#define EGSY__V_UNI		0x0004
+#define EGSY__V_REL		0x0008
+#define EGSY__V_COMM		0x0010
+#define EGSY__V_VECEP		0x0020
+#define EGSY__V_NORM		0x0040
+#define EGSY__V_QUAD_VAL	0x0080
+
+struct vms_egsy
+{
+  /* Entry type.  */
+  unsigned char gsdtyp[2];
+
+  /* Length of the entry.  */
+  unsigned char gsdsiz[2];
+
+  /* Data type.  */
+  unsigned char datyp;
+
+  /* Pad for alignment.  */
+  unsigned char temp;
+
+  unsigned char flags[2];
+};
+
+#endif /* _VMS_EGSY_H */
diff --git a/include/vms/eiaf.h b/include/vms/eiaf.h
new file mode 100644
index 0000000..37830da
--- /dev/null
+++ b/include/vms/eiaf.h
@@ -0,0 +1,80 @@
+/* Alpha VMS external format of Extended Image Activator Fixup section.
+
+   Copyright 2010 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_EIAF_H
+#define _VMS_EIAF_H
+
+struct vms_eiaf
+{
+  /* Version.  */
+  unsigned char majorid[4];
+  unsigned char minorid[4];
+
+  /* Link for image activator use.  */
+  unsigned char iaflink[8];
+
+  /* Link for sharable image fixups.  */
+  unsigned char fixuplnk[8];
+
+  /* Size of EIAF fixed part.  */
+  unsigned char size[4];
+
+  /* Flags.  */
+  unsigned char flags[4];
+
+  /* Offsets to quadword and longword relocation fixup data.  */
+  unsigned char qrelfixoff[4];
+  unsigned char lrelfixoff[4];
+
+  /* Offsets to quardword and longword .address fixup data.  */
+  unsigned char qdotadroff[4];
+  unsigned char ldotadroff[4];
+
+  /* Offset to code address fixup data.  */
+  unsigned char codeadroff[4];
+
+  /* Offset to linkage part fixup data.  */
+  unsigned char lpfixoff[4];
+
+  /* Offset to isect change protection data.  */
+  unsigned char chgprtoff[4];
+
+  /* Offset to shareable image list.  */
+  unsigned char shlstoff[4];
+
+  /* Number of shareable images.  */
+  unsigned char shrimgcnt[4];
+
+  /* Number of extra shareable images allowed.  */
+  unsigned char shlextra[4];
+
+  /* Permanent shareable image context.  */
+  unsigned char permctx[4];
+
+  /* Base address of the image itself.  */
+  unsigned char base_va[8];
+
+  /* Offset to linkage pair with procedure signature fixups.  */
+  unsigned char lppsbfixoff[4];
+};
+
+#endif /* _VMS_EIAF_H */
diff --git a/include/vms/eicp.h b/include/vms/eicp.h
new file mode 100644
index 0000000..9c769f7
--- /dev/null
+++ b/include/vms/eicp.h
@@ -0,0 +1,38 @@
+/* Alpha VMS external format of Extended Image section Change Protection.
+
+   Copyright 2010 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_EICP_H
+#define _VMS_EICP_H
+
+struct vms_eicp
+{
+  /* Start of section.  */
+  unsigned char baseva[8];
+
+  /* Size in bytes of the image section.  */
+  unsigned char size[4];
+
+  /* New protections.  */
+  unsigned char newprt[4];
+};
+
+#endif /* _VMS_EICP_H */
diff --git a/include/vms/eiha.h b/include/vms/eiha.h
new file mode 100644
index 0000000..d488178
--- /dev/null
+++ b/include/vms/eiha.h
@@ -0,0 +1,50 @@
+/* Alpha VMS external format of Extended Image Activation.
+
+   Copyright 2010 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_EIHA_H
+#define _VMS_EIHA_H
+
+struct vms_eiha
+{
+  /* Size of the struct.  */
+  unsigned char size[4];
+
+  unsigned char spare[4];
+
+  /* First transfer address.  */
+  unsigned char tfradr1[4];
+  unsigned char tfradr1_h[4];
+
+  /* Second.  */
+  unsigned char tfradr2[4];
+  unsigned char tfradr2_h[4];
+
+  /* Third.  */
+  unsigned char tfradr3[4];
+  unsigned char tfradr3_h[4];
+
+  /* Fourth (must be 0).  */
+  unsigned char tfradr4[4];
+  unsigned char tfradr4_h[4];
+};
+
+#endif /* _VMS_EIHA_H */
diff --git a/include/vms/eihd.h b/include/vms/eihd.h
new file mode 100644
index 0000000..771727e
--- /dev/null
+++ b/include/vms/eihd.h
@@ -0,0 +1,140 @@
+/* Alpha VMS external format of Extended Image Header.
+
+   Copyright 2010 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.  */
+  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.  */
+  unsigned char iafva[8];
+
+  /* RVA of symbol vector.  */
+  unsigned char symvva[8];
+
+  /* Byte offset to version number array.  */
+  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.  */
+  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.  */
+
+/* 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
+
+#endif /* _VMS_EIHD_H */
diff --git a/include/vms/eihi.h b/include/vms/eihi.h
new file mode 100644
index 0000000..97d3d89
--- /dev/null
+++ b/include/vms/eihi.h
@@ -0,0 +1,50 @@
+/* Alpha VMS external format of Extended Image Identification.
+
+   Copyright 2010 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_EIHI_H
+#define _VMS_EIHI_H
+
+#define EIHI__K_MAJORID 1
+#define EIHI__K_MINORID 2
+
+struct vms_eihi
+{
+  unsigned char majorid[4];
+  unsigned char minorid[4];
+
+  /* Time when this image was linked.  */
+  unsigned char linktime[8];
+
+  /* Image name.  */
+  unsigned char imgnam[40];
+
+  /* Image ident.  */
+  unsigned char imgid[16];
+
+  /* Linker ident.  */
+  unsigned char linkid[16];
+
+  /* Image build ident.  */
+  unsigned char imgbid[16];
+};
+
+#endif /* _VMS_EIHI_H */
diff --git a/include/vms/eihs.h b/include/vms/eihs.h
new file mode 100644
index 0000000..d5f1eac
--- /dev/null
+++ b/include/vms/eihs.h
@@ -0,0 +1,63 @@
+/* Alpha VMS external format of Extended Image Symbols and debug table.
+
+   Copyright 2010 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_EIHS_H
+#define _VMS_EIHS_H
+
+#define EIHS__K_MAJORID 1
+#define EIHS__K_MINORID 1
+
+struct vms_eihs
+{
+  unsigned char majorid[4];
+  unsigned char minorid[4];
+
+  /* Debug symbol table virtual block number (vbn).  */
+  unsigned char dstvbn[4];
+
+  /* Debug symbol table size.  */
+  unsigned char dstsize[4];
+
+  /* Global symbol table vbn.  */
+  unsigned char gstvbn[4];
+
+  /* Global symtol table size.  */
+  unsigned char gstsize[4];
+
+  /* Debug module table vbn.  */
+  unsigned char dmtvbn[4];
+
+  /* Debug module table size.  */
+  unsigned char dmtsize[4];
+};
+
+/* Various offsets.  */
+
+#define EIHS__L_DSTVBN		 8
+#define EIHS__L_DSTSIZE		12
+#define EIHS__L_GSTVBN		16
+#define EIHS__L_GSTSIZE		20
+#define EIHS__L_DMTVBN		24
+#define EIHS__L_DMTBYTES	28
+
+
+#endif /* _VMS_EIHS_H */
diff --git a/include/vms/eihvn.h b/include/vms/eihvn.h
new file mode 100644
index 0000000..7f587a3
--- /dev/null
+++ b/include/vms/eihvn.h
@@ -0,0 +1,56 @@
+/* Alpha VMS external format of Extended Image Header Version.
+
+   Copyright 2010 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_EIHVN_H
+#define _VMS_EIHVN_H
+
+struct vms_eihvn
+{
+  unsigned char subsystem_mask[4];
+};
+
+struct vms_eihvn_subversion
+{
+  unsigned char minor[2];
+  unsigned char major[2];
+};
+
+#define EIHVN__BASE_IMAGE_BIT		0
+#define EIHVN__MEMORY_MANAGEMENT_BIT	1
+#define EIHVN__IO_BIT			2
+#define EIHVN__FILES_VOLUMES_BIT	3
+#define EIHVN__PROCESS_SCHED_BIT	4
+#define EIHVN__SYSGEN_BIT		5
+#define EIHVN__CLUSTERS_LOCKMGR_BIT	6
+#define EIHVN__LOGICAL_NAMES_BIT	7
+#define EIHVN__SECURITY_BIT		8
+#define EIHVN__IMAGE_ACTIVATOR_BIT	9
+#define EIHVN__NETWORKS_BIT		10
+#define EIHVN__COUNTERS_BIT		11
+#define EIHVN__STABLE_BIT		12
+#define EIHVN__MISC_BIT			13
+#define EIHVN__CPU_BIT			14
+#define EIHVN__VOLATILE_BIT		15
+#define EIHVN__SHELL_BIT		16
+#define EIHVN__POSIX_BIT		17
+
+#endif /* _VMS_EIHVN_H */
diff --git a/include/vms/eisd.h b/include/vms/eisd.h
new file mode 100644
index 0000000..b4e47e2
--- /dev/null
+++ b/include/vms/eisd.h
@@ -0,0 +1,95 @@
+/* Alpha VMS external format of Extended Image Section Descriptor.
+
+   Copyright 2010 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_EISD_H
+#define _VMS_EISD_H
+
+/* Flags.  */
+#define EISD__M_GBL		0x0001	/* Global.  */
+#define EISD__M_CRF		0x0002	/* Copy on reference.  */
+#define EISD__M_DZRO		0x0004	/* Demand zero page.  */
+#define EISD__M_WRT		0x0008	/* Writable.  */
+#define EISD__M_INITALCODE	0x0010	/* Part of initialization code.  */
+#define EISD__M_BASED		0x0020	/* Isect is based.  */
+#define EISD__M_FIXUPVEC	0x0040	/* Isect is fixup section.  */
+#define EISD__M_RESIDENT	0x0080	/* Isect is memory resident.  */
+#define EISD__M_VECTOR		0x0100	/* Vector contained in isect.  */
+#define EISD__M_PROTECT		0x0200	/* Isect is proected.  */
+#define EISD__M_LASTCLU		0x0400	/* Last cluster.  */
+#define EISD__M_EXE		0x0800	/* Code isect.  */
+#define EISD__M_NONSHRADR	0x1000	/* Contains non-shareable data.  */
+#define EISD__M_QUAD_LENGTH	0x2000	/* Quad length field valid.  */
+#define EISD__M_ALLOC_64BIT	0x4000	/* Allocate 64-bit space.  */
+
+struct vms_eisd
+{
+  unsigned char majorid[4];
+  unsigned char minorid[4];
+
+  /* Size (in bytes) of this eisd.  */
+  unsigned char eisdsize[4];
+
+  /* Size (in bytes) of the section.  */
+  unsigned char secsize[4];
+
+  /* Virtual address of the section.  */
+  unsigned char virt_addr[8];
+
+  /* Flags.  */
+  unsigned char flags[4];
+
+  /* Base virtual block number.  */
+  unsigned char vbn[4];
+
+  /* Page fault cluster.  */
+  unsigned char pfc;
+
+  /* Linker match control.  */
+  unsigned char matchctl;
+
+  /* Section type.  */
+  unsigned char type;
+
+  unsigned char fill_1;
+};
+
+struct vms_eisd_ext
+{
+  /* Ident for global section.  */
+  unsigned char ident[4];
+
+  /* Global name ascic.  First 8 bytes are quad length field.  */
+  unsigned char gblnam[44];
+};
+
+/* EISD offsets.  */
+
+#define EISD__L_EISDSIZE	 8
+#define EISD__L_SECSIZE		12
+#define EISD__Q_VIR_ADDR	16
+#define EISD__L_FLAGS		24
+#define EISD__L_VBN		28
+#define EISD__R_CONTROL		32
+#define EISD__L_IDENT		36
+#define EISD__T_GBLNAM		40
+
+#endif /* _VMS_EISD_H */
diff --git a/include/vms/emh.h b/include/vms/emh.h
new file mode 100644
index 0000000..f373c37
--- /dev/null
+++ b/include/vms/emh.h
@@ -0,0 +1,72 @@
+/* Alpha VMS external format of Extended Module Header.
+
+   Copyright 2010 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_EMH_H
+#define _VMS_EMH_H
+
+#define EMH__C_MHD 0		/* Main header record.		*/
+#define EMH__C_LNM 1		/* Language name and version.	*/
+#define EMH__C_SRC 2		/* Source file specification.	*/
+#define EMH__C_TTL 3		/* Title text of module.	*/
+#define EMH__C_CPR 4		/* Copyright notice.		*/
+#define EMH__C_MTC 5		/* Maintenance status.		*/
+#define EMH__C_GTX 6		/* General text.		*/
+#define EMH__C_MAXHDRTYP 6	/* Maximum allowable type.	*/
+
+struct vms_emh_common
+{
+  /* Record type.  */
+  unsigned char rectyp[2];
+
+  /* Record size.  */
+  unsigned char size[2];
+
+  /* Subtype.  */
+  unsigned char subtyp[2];
+};
+
+struct vms_emh_mhd
+{
+  struct vms_emh_common common;
+
+  unsigned char strlvl;
+
+  unsigned char temp;
+
+  unsigned char arch1[4];
+  unsigned char arch2[4];
+
+  unsigned char recsiz[4];
+
+  /* Module name: ASCIC.  */
+  /* Module version: ASCIC.  */
+  /* Compile data: ASCIC.  */
+};
+
+struct vms_emh_lnm
+{
+  struct vms_emh_common common;
+
+  /* Language processor name: ASCII.  */
+};
+
+#endif /* _VMS_EMH_H */
diff --git a/include/vms/eobjrec.h b/include/vms/eobjrec.h
new file mode 100644
index 0000000..985fda7
--- /dev/null
+++ b/include/vms/eobjrec.h
@@ -0,0 +1,48 @@
+/* Alpha VMS external format of Extended Object Records.
+
+   Copyright 2010 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_EOBJREC_H
+#define _VMS_EOBJREC_H
+
+#define EOBJ__C_EMH 8		/* EVAX mdule header record.  */
+#define EOBJ__C_EEOM 9		/* EVAX ed of module record.  */
+#define EOBJ__C_EGSD 10		/* EVAX gobal symbol definition record.  */
+#define EOBJ__C_ETIR 11		/* EVAX txt information record.  */
+#define EOBJ__C_EDBG 12		/* EVAX Dbugger information record.  */
+#define EOBJ__C_ETBT 13		/* EVAX Taceback information record.  */
+#define EOBJ__C_MAXRECTYP 13	/* EVAX Lst assigned record type.  */
+
+struct vms_eobjrec
+{
+  /* Record type.  */
+  unsigned char rectyp[2];
+
+  /* Record size.  */
+  unsigned char size[2];
+
+#if 0
+  /* Record subtype.  */
+  unsigned char subtyp[2];
+#endif
+};
+
+#endif /* _VMS_EOBJREC_H */
diff --git a/include/vms/esdf.h b/include/vms/esdf.h
new file mode 100644
index 0000000..c75d33e
--- /dev/null
+++ b/include/vms/esdf.h
@@ -0,0 +1,39 @@
+/* Alpha VMS external format of Extended GSD Global Symbol Definition.
+
+   Copyright 2010 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_ESDF_H
+#define _VMS_ESDF_H
+
+struct vms_esdf
+{
+  struct vms_egsy header;
+
+  unsigned char value[8];
+  unsigned char code_address[8];
+  unsigned char ca_psindx[4];
+
+  unsigned char psindx[4];
+  unsigned char namlng;
+  unsigned char name[31];
+};
+
+#endif /* _VMS_ESDF_H */
diff --git a/include/vms/esrf.h b/include/vms/esrf.h
new file mode 100644
index 0000000..93d78c8
--- /dev/null
+++ b/include/vms/esrf.h
@@ -0,0 +1,34 @@
+/* Alpha VMS external format of Extended GSD Global Symbol Reference.
+
+   Copyright 2010 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_ESRF_H
+#define _VMS_ESRF_H
+
+struct vms_esrf
+{
+  struct vms_egsy header;
+
+  unsigned char namlng;
+  unsigned char name[31];
+};
+
+#endif /* _VMS_ESRF_H */
diff --git a/include/vms/etir.h b/include/vms/etir.h
new file mode 100644
index 0000000..4d922dc
--- /dev/null
+++ b/include/vms/etir.h
@@ -0,0 +1,114 @@
+/* Alpha VMS external format of Extended Text Information and Relocation.
+
+   Copyright 2010 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_ETIR_H
+#define _VMS_ETIR_H
+
+#define ETIR__C_MINSTACOD 0	/* Minimum stack code.		*/
+#define ETIR__C_STA_GBL   0	/* Stack global symbol value.	*/
+#define ETIR__C_STA_LW    1	/* Stack longword.		*/
+#define ETIR__C_STA_QW    2	/* Stack quadword.		*/
+#define ETIR__C_STA_PQ    3	/* Stack psect base + quadword off.  */
+#define ETIR__C_STA_LI    4	/* Stack literal.		*/
+#define ETIR__C_STA_MOD   5	/* Stack module.		*/
+#define ETIR__C_STA_CKARG 6	/* Check Arguments.		*/
+#define ETIR__C_MAXSTACOD 6	/* Maximum stack code.		*/
+
+#define ETIR__C_MINSTOCOD  50	/* Minimum store code.		*/
+#define ETIR__C_STO_B      50	/* Store byte.			*/
+#define ETIR__C_STO_W      51	/* Store word.			*/
+#define ETIR__C_STO_LW     52	/* Store longword.		*/
+#define ETIR__C_STO_QW     53	/* Store quadword.		*/
+#define ETIR__C_STO_IMMR   54	/* Store immediate Repeated.	*/
+#define ETIR__C_STO_GBL    55	/* Store global.		*/
+#define ETIR__C_STO_CA     56	/* Store code address.		*/
+#define ETIR__C_STO_RB     57	/* Store relative branch.	*/
+#define ETIR__C_STO_AB     58	/* Store absolute branch.	*/
+#define ETIR__C_STO_OFF    59	/* Store offset within psect.	*/
+#define ETIR__C_STO_IMM    61	/* Store immediate.		*/
+#define ETIR__C_STO_GBL_LW 62	/* Store global Longword.	*/
+#define ETIR__C_STO_LP_PSB 63	/* STO_LP_PSB not valid in level 2 use STC_LP_PSB.  */
+#define ETIR__C_STO_HINT_GBL 64  /* Store 14 bit HINT at global address.  */
+#define ETIR__C_STO_HINT_PS  65  /* Store 14 bit HINT at psect + offset */
+#define ETIR__C_MAXSTOCOD    65  /* Maximum store code.		*/
+
+/* Operate codes.  */
+#define ETIR__C_MINOPRCOD 100	/* Minimum operate code.	*/
+#define ETIR__C_OPR_NOP   100	/* No-op.			*/
+#define ETIR__C_OPR_ADD   101	/* Add.				*/
+#define ETIR__C_OPR_SUB   102	/* Subtract.			*/
+#define ETIR__C_OPR_MUL   103	/* Multiply.			*/
+#define ETIR__C_OPR_DIV   104	/* Divide.			*/
+#define ETIR__C_OPR_AND   105	/* Logical AND.			*/
+#define ETIR__C_OPR_IOR   106	/* Logical inclusive OR.	*/
+#define ETIR__C_OPR_EOR   107	/* Logical exclusive OR.	*/
+#define ETIR__C_OPR_NEG   108	/* Negate.			*/
+#define ETIR__C_OPR_COM   109	/* Complement.			*/
+#define ETIR__C_OPR_INSV  110	/* Insert bit field.		*/
+#define ETIR__C_OPR_ASH   111	/* Arithmetic shift.		*/
+#define ETIR__C_OPR_USH   112	/* Unsigned shift.		*/
+#define ETIR__C_OPR_ROT   113	/* Rotate.			*/
+#define ETIR__C_OPR_SEL   114	/* Select one of 3 long on top of stack.   */
+#define ETIR__C_OPR_REDEF 115	/* Redefine this symbol after pass 2.  */
+#define ETIR__C_OPR_DFLIT 116	/* Define a literal.		*/
+#define ETIR__C_MAXOPRCOD 116	/* Maximum operate code.	*/
+
+/* Control codes.  */
+#define ETIR__C_MINCTLCOD 150	/* Minimum control code.	*/
+#define ETIR__C_CTL_SETRB 150	/* Set relocation base.		*/
+#define ETIR__C_CTL_AUGRB 151	/* Augment relocation base.	*/
+#define ETIR__C_CTL_DFLOC 152	/* Define debug location.	*/
+#define ETIR__C_CTL_STLOC 153	/* Set debug location.		*/
+#define ETIR__C_CTL_STKDL 154	/* Stack debug location.	*/
+#define ETIR__C_MAXCTLCOD 154	/* Maximum control code.	*/
+
+/* Store-conditional (STC) codes.  */
+#define ETIR__C_MINSTCCOD   200 /* Minimum store-conditional code.   */
+#define ETIR__C_STC_LP      200 /* STC Linkage Pair.   */
+#define ETIR__C_STC_LP_PSB  201 /* STC Linkage Pair with Proc Signature.  */
+#define ETIR__C_STC_GBL     202 /* STC Address at global address.  */
+#define ETIR__C_STC_GCA     203 /* STC Code Address at global address.  */
+#define ETIR__C_STC_PS      204 /* STC Address at psect + offset.  */
+#define ETIR__C_STC_NOP_GBL 205 /* STC NOP at address of global.  */
+#define ETIR__C_STC_NOP_PS  206 /* STC NOP at pect + offset.  */
+#define ETIR__C_STC_BSR_GBL 207 /* STC BSR at global address.  */
+#define ETIR__C_STC_BSR_PS  208 /* STC BSR at pect + offset.  */
+#define ETIR__C_STC_LDA_GBL 209 /* STC LDA at global address.  */
+#define ETIR__C_STC_LDA_PS  210 /* STC LDA at psect + offset.  */
+#define ETIR__C_STC_BOH_GBL 211 /* STC BSR or Hint at global address.  */
+#define ETIR__C_STC_BOH_PS  212 /* STC BSR or Hint at pect + offset.  */
+#define ETIR__C_STC_NBH_GBL 213 /* STC NOP,BSR or HINT at global address.  */
+#define ETIR__C_STC_NBH_PS  214 /* STC NOP,BSR or HINT at psect + offset.  */
+#define ETIR__C_MAXSTCCOD   214 /* Maximum store-conditional code.   */
+
+#define ETIR__C_HEADER_SIZE 4	/* Size of the header of a command */
+
+struct vms_etir
+{
+  /* Commands.  See above.  */
+  unsigned char rectyp[2];
+
+  /* Size (including this header).  */
+  unsigned char size[2];
+};
+
+#endif /* _VMS_ETIR_H */
diff --git a/include/vms/shl.h b/include/vms/shl.h
new file mode 100644
index 0000000..f93d9dd
--- /dev/null
+++ b/include/vms/shl.h
@@ -0,0 +1,51 @@
+/* Alpha VMS external format of Shareable image List.
+
+   Copyright 2010 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_SHL_H
+#define _VMS_SHL_H
+
+struct vms_shl
+{
+  /* Base address of this shareable image.  */
+  unsigned char baseva[4];
+
+  /* Point in SHL shareable image to SHL in executable image.  */
+  unsigned char shlptr[4];
+
+  /* GSMATCH.  */
+  unsigned char ident[4];
+
+  /* Permanent shareable image context.  */
+  unsigned char permctx[4];
+
+  unsigned char size;
+  unsigned char fill_1[2];
+  unsigned char flags;
+
+  /* Address of the image control block.  */
+  unsigned char icb[4];
+
+  /* Image name.  ASCIC.  */
+  unsigned char imgnam[40];
+};
+
+#endif /* _VMS_SHL_H */


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]