2010-02-17 Tristan Gingold <gingold@adacore.com>
authorTristan Gingold <gingold@adacore.com>
Wed, 17 Feb 2010 10:12:48 +0000 (10:12 +0000)
committerTristan Gingold <gingold@adacore.com>
Wed, 17 Feb 2010 10:12:48 +0000 (10:12 +0000)
* 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.

22 files changed:
include/vms/ChangeLog [new file with mode: 0644]
include/vms/dmt.h [new file with mode: 0644]
include/vms/dst.h [new file with mode: 0644]
include/vms/eeom.h [new file with mode: 0644]
include/vms/egps.h [new file with mode: 0644]
include/vms/egsd.h [new file with mode: 0644]
include/vms/egst.h [new file with mode: 0644]
include/vms/egsy.h [new file with mode: 0644]
include/vms/eiaf.h [new file with mode: 0644]
include/vms/eicp.h [new file with mode: 0644]
include/vms/eiha.h [new file with mode: 0644]
include/vms/eihd.h [new file with mode: 0644]
include/vms/eihi.h [new file with mode: 0644]
include/vms/eihs.h [new file with mode: 0644]
include/vms/eihvn.h [new file with mode: 0644]
include/vms/eisd.h [new file with mode: 0644]
include/vms/emh.h [new file with mode: 0644]
include/vms/eobjrec.h [new file with mode: 0644]
include/vms/esdf.h [new file with mode: 0644]
include/vms/esrf.h [new file with mode: 0644]
include/vms/etir.h [new file with mode: 0644]
include/vms/shl.h [new file with mode: 0644]

diff --git a/include/vms/ChangeLog b/include/vms/ChangeLog
new file mode 100644 (file)
index 0000000..19ad1d3
--- /dev/null
@@ -0,0 +1,5 @@
+2010-02-17  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 (file)
index 0000000..f2f4e0d
--- /dev/null
@@ -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 (file)
index 0000000..d179018
--- /dev/null
@@ -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 (file)
index 0000000..36f4e56
--- /dev/null
@@ -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 (file)
index 0000000..2b09999
--- /dev/null
@@ -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 (file)
index 0000000..9a665cd
--- /dev/null
@@ -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 (file)
index 0000000..d424484
--- /dev/null
@@ -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 (file)
index 0000000..5add879
--- /dev/null
@@ -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 (file)
index 0000000..37830da
--- /dev/null
@@ -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 (file)
index 0000000..9c769f7
--- /dev/null
@@ -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 (file)
index 0000000..d488178
--- /dev/null
@@ -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 (file)
index 0000000..771727e
--- /dev/null
@@ -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 (file)
index 0000000..97d3d89
--- /dev/null
@@ -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 (file)
index 0000000..d5f1eac
--- /dev/null
@@ -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 (file)
index 0000000..7f587a3
--- /dev/null
@@ -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 (file)
index 0000000..b4e47e2
--- /dev/null
@@ -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 (file)
index 0000000..f373c37
--- /dev/null
@@ -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 (file)
index 0000000..985fda7
--- /dev/null
@@ -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 (file)
index 0000000..c75d33e
--- /dev/null
@@ -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 (file)
index 0000000..93d78c8
--- /dev/null
@@ -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 (file)
index 0000000..4d922dc
--- /dev/null
@@ -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 (file)
index 0000000..f93d9dd
--- /dev/null
@@ -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 */