]> sourceware.org Git - newlib-cygwin.git/commitdiff
include/elf
authorTristan Gingold <gingold@adacore.com>
Fri, 11 Jun 2010 15:57:46 +0000 (15:57 +0000)
committerTristan Gingold <gingold@adacore.com>
Fri, 11 Jun 2010 15:57:46 +0000 (15:57 +0000)
2010-06-11  Tristan Gingold  <gingold@adacore.com>

* ia64.h (EF_IA_64_VMS_COMCOD, EF_IA_64_VMS_COMCOD_SUCCESS)
(EF_IA_64_VMS_COMCOD_WARNING, EF_IA_64_VMS_COMCOD_ERROR)
(EF_IA_64_VMS_COMCOD_ABORT, EF_IA_64_VMS_LINKAGES): Define.
(VMS_LF_CALL_DEBUG, VMS_LF_NOP0BUFS, VMS_LF_P0IMAGE)
(VMS_LF_MKTHREADS, VMS_LF_UPCALLS, VMS_LF_IMGSTA)
(VMS_LF_INITIALIZE, VMS_LF_MAIN, VMS_LF_EXE_INIT)
(VMS_LF_TBK_IN_IMG, VMS_LF_DBG_IN_IMG, VMS_LF_TBK_IN_DSF)
(VMS_LF_DBG_IN_DSF, VMS_LF_SIGNATURES, VMS_LF_REL_SEG_OFF): Define.
(VMS_STO_VISIBILITY, VMS_ST_VISIBILITY, VMS_STO_FUNC_TYPE)
(VMS_ST_FUNC_TYPE, VMS_SFT_CODE_ADDR, VMS_SFT_SYMV_IDX)
(VMS_SFT_FD, VMS_SFT_RESERVE, VMS_STO_LINKAGE, VMS_ST_LINKAGE)
(VMS_STL_IGNORE, VMS_STL_RESERVE, VMS_STL_STD, VMS_STL_LNK): Define.
(Elf64_External_VMS_IMAGE_FIXUP): New declaration.
(Elf64_External_VMS_IMAGE_RELA): Ditto.
(R_IA64_VMS_DIR8, R_IA64_VMS_DIR16LSB, R_IA64_VMS_CALL_SIGNATURE)
(R_IA64_VMS_EXECLET_FUNC, R_IA64_VMS_EXECLET_DATA, R_IA64_VMS_FIX8)
(R_IA64_VMS_FIX16, R_IA64_VMS_FIX32, R_IA64_VMS_FIX64)
(R_IA64_VMS_FIXFD, R_IA64_VMS_ACC_LOAD, R_IA64_VMS_ACC_ADD)
(R_IA64_VMS_ACC_SUB, R_IA64_VMS_ACC_MUL, R_IA64_VMS_ACC_DIV)
(R_IA64_VMS_ACC_AND, R_IA64_VMS_ACC_IOR, R_IA64_VMS_ACC_EOR)
(R_IA64_VMS_ACC_ASH, R_IA64_VMS_ACC_STO8, R_IA64_VMS_ACC_STO16LSH)
(R_IA64_VMS_ACC_STO32LSH, R_IA64_VMS_ACC_STO64LSH): New.

binutils/
2010-06-11  Tristan Gingold  <gingold@adacore.com>
    Doug Rupp <rupp@gnat.com>

* readelf.c (is_ia64_vms): New function.
(dump_relocations): Use it.
(get_machine_flags): Display IA-64 OpenVMS flags.
(process_program_headers): No error on OpenVMS if no .dynamic section.
(struct ia64_vms_dynfixup, struct ia64_vms_dynimgrela): New
declarations.
(dump_ia64_vms_dynamic_fixups): New function.
(dump_ia64_vms_dynamic_relocs): Ditto.
(process_ia64_vms_dynamic_relocs): Ditto.
(process_relocs): Handle IA-64 OpenVMS relocs.
(VMS_EPOCH_OFFSET, VMS_GRANULARITY_FACTOR): New macros.
(print_vms_time): New function.
(dynamic_section_ia64_val): Handle DT_IA_64_VMS_LINKTIME and
DT_IA_64_VMS_LNKFLAGS.
(get_ia64_symbol_other): New function.
(get_symbol_other): Handle EM_IA_64.

include/elf/ChangeLog
include/elf/ia64.h

index ddd927ae805f26ee15d9e52d1809505594e3d34a..bf36e1e1d1dd8f0ba08cb04513b7e3e49ba7ba6f 100644 (file)
@@ -1,3 +1,28 @@
+2010-06-11  Tristan Gingold  <gingold@adacore.com>
+
+       * ia64.h (EF_IA_64_VMS_COMCOD, EF_IA_64_VMS_COMCOD_SUCCESS)
+       (EF_IA_64_VMS_COMCOD_WARNING, EF_IA_64_VMS_COMCOD_ERROR)
+       (EF_IA_64_VMS_COMCOD_ABORT, EF_IA_64_VMS_LINKAGES): Define.
+       (VMS_LF_CALL_DEBUG, VMS_LF_NOP0BUFS, VMS_LF_P0IMAGE)
+       (VMS_LF_MKTHREADS, VMS_LF_UPCALLS, VMS_LF_IMGSTA)
+       (VMS_LF_INITIALIZE, VMS_LF_MAIN, VMS_LF_EXE_INIT)
+       (VMS_LF_TBK_IN_IMG, VMS_LF_DBG_IN_IMG, VMS_LF_TBK_IN_DSF)
+       (VMS_LF_DBG_IN_DSF, VMS_LF_SIGNATURES, VMS_LF_REL_SEG_OFF): Define.
+       (VMS_STO_VISIBILITY, VMS_ST_VISIBILITY, VMS_STO_FUNC_TYPE)
+       (VMS_ST_FUNC_TYPE, VMS_SFT_CODE_ADDR, VMS_SFT_SYMV_IDX)
+       (VMS_SFT_FD, VMS_SFT_RESERVE, VMS_STO_LINKAGE, VMS_ST_LINKAGE)
+       (VMS_STL_IGNORE, VMS_STL_RESERVE, VMS_STL_STD, VMS_STL_LNK): Define.
+       (Elf64_External_VMS_IMAGE_FIXUP): New declaration.
+       (Elf64_External_VMS_IMAGE_RELA): Ditto.
+       (R_IA64_VMS_DIR8, R_IA64_VMS_DIR16LSB, R_IA64_VMS_CALL_SIGNATURE)
+       (R_IA64_VMS_EXECLET_FUNC, R_IA64_VMS_EXECLET_DATA, R_IA64_VMS_FIX8)
+       (R_IA64_VMS_FIX16, R_IA64_VMS_FIX32, R_IA64_VMS_FIX64)
+       (R_IA64_VMS_FIXFD, R_IA64_VMS_ACC_LOAD, R_IA64_VMS_ACC_ADD)
+       (R_IA64_VMS_ACC_SUB, R_IA64_VMS_ACC_MUL, R_IA64_VMS_ACC_DIV)
+       (R_IA64_VMS_ACC_AND, R_IA64_VMS_ACC_IOR, R_IA64_VMS_ACC_EOR)
+       (R_IA64_VMS_ACC_ASH, R_IA64_VMS_ACC_STO8, R_IA64_VMS_ACC_STO16LSH)
+       (R_IA64_VMS_ACC_STO32LSH, R_IA64_VMS_ACC_STO64LSH): New.
+
 2010-05-25  Daniel Jacobowitz  <dan@codesourcery.com>
            Joseph Myers  <joseph@codesourcery.com>
            Andrew Stubbs  <ams@codesourcery.com>
index 625933caa8c21a859fb57b5768489e696bd60740..fb3d99f4008db54d316c13823bac1439c1e3f34f 100644 (file)
 /* Not used yet.  */
 #define EF_IA_64_ABSOLUTE          (1 << 8) /* Load at absolute addresses.  */
 
+/* OpenVMS speficic.  */
+#define EF_IA_64_VMS_COMCOD        0x03   /* Completion code.  */
+#define EF_IA_64_VMS_COMCOD_SUCCESS 0
+#define EF_IA_64_VMS_COMCOD_WARNING 1
+#define EF_IA_64_VMS_COMCOD_ERROR   2
+#define EF_IA_64_VMS_COMCOD_ABORT   3
+#define EF_IA_64_VMS_LINKAGES      0x04   /* Contains VMS linkages info.  */
+
 #define ELF_STRING_ia64_archext                ".IA_64.archext"
 #define ELF_STRING_ia64_pltoff         ".IA_64.pltoff"
 #define ELF_STRING_ia64_unwind         ".IA_64.unwind"
 #define DT_IA_64_VMS_PLTGOT_SEG      (DT_LOOS + 64)
 #define DT_IA_64_VMS_FPMODE          (DT_LOOS + 66)
 
+/* Values for DT_IA_64_LNKFLAGS.  */
+#define VMS_LF_CALL_DEBUG      0x0001  /* Activate and call the debugger.  */
+#define VMS_LF_NOP0BUFS                0x0002  /* RMS use of P0 for i/o disabled.  */
+#define VMS_LF_P0IMAGE         0x0004  /* Image in P0 space only.  */
+#define VMS_LF_MKTHREADS       0x0008  /* Multiple kernel threads enabled.  */
+#define VMS_LF_UPCALLS         0x0010  /* Upcalls enabled.  */
+#define VMS_LF_IMGSTA          0x0020  /* Use SYS$IMGSTA.  */
+#define VMS_LF_INITIALIZE      0x0040  /* Image uses tfradr2.  */
+#define VMS_LF_MAIN            0x0080  /* Image uses tfradr3.  */
+#define VMS_LF_EXE_INIT                0x0200  /* Image uses tfradr4.  */
+#define VMS_LF_TBK_IN_IMG      0x0400  /* Traceback records in image.  */
+#define VMS_LF_DBG_IN_IMG      0x0800  /* Debug records in image.  */
+#define VMS_LF_TBK_IN_DSF      0x1000  /* Traceback records in DSF.  */
+#define VMS_LF_DBG_IN_DSF      0x2000  /* Debug records in DSF.  */
+#define VMS_LF_SIGNATURES      0x4000  /* Signatures present.  */
+#define VMS_LF_REL_SEG_OFF     0x8000  /* Maintain relative pos of seg.  */
+
 /* This section only used by HP-UX, The HP linker gives weak symbols
    precedence over regular common symbols.  We want common to override
    weak.  Using this common instead of SHN_COMMON does that.  */
    vector (only possible for image files).  */
 #define SHN_IA_64_VMS_SYMVEC SHN_LOOS
 
+/* OpenVMS IA64-specific symbol attributes.  */
+#define VMS_STO_VISIBILITY 3     /* Alias of the standard field.  */
+#define VMS_ST_VISIBILITY(o) ((o) & VMS_STO_VISIBILITY)
+#define VMS_STO_FUNC_TYPE  0x30          /* Function type.  */
+#define VMS_ST_FUNC_TYPE(o)  (((o) & VMS_STO_FUNC_TYPE) >> 4)
+# define VMS_SFT_CODE_ADDR 0     /* Symbol value is a code address.  */
+# define VMS_SFT_SYMV_IDX  1     /* Symbol value is a symbol vector index.  */
+# define VMS_SFT_FD       2      /* Symbol value is a function descriptor.  */
+# define VMS_SFT_RESERVE   3     /* Reserved.  */
+#define VMS_STO_LINKAGE    0xc0
+#define VMS_ST_LINKAGE(o)  (((o) & VMS_STO_LINKAGE) >> 6)
+# define VMS_STL_IGNORE           0      /* No associated linkage.  */
+# define VMS_STL_RESERVE   1
+# define VMS_STL_STD      2      /* Standard linkage with return value.  */
+# define VMS_STL_LNK      3      /* Explicit represented in .vms_linkages.  */
+
+/* OpenVMS specific fixup and relocation structures.  */
+
+typedef struct
+{
+  unsigned char fixup_offset[8];
+  unsigned char type[4];
+  unsigned char fixup_seg[4];
+  unsigned char addend[8];
+  unsigned char symvec_index[4];
+  unsigned char data_type[4];
+} Elf64_External_VMS_IMAGE_FIXUP;
+
+typedef struct
+{
+  unsigned char rela_offset[8];
+  unsigned char type[4];
+  unsigned char rela_seg[4];
+  unsigned char addend[8];
+  unsigned char sym_offset[8];
+  unsigned char sym_seg[4];
+  unsigned char fill_1[4];
+} Elf64_External_VMS_IMAGE_RELA;
+
 /* IA64-specific relocation types: */
 
 /* Relocs apply to specific instructions within a bundle.  The least
@@ -282,6 +346,31 @@ START_RELOC_NUMBERS (elf_ia64_reloc_type)
   RELOC_NUMBER (R_IA64_LTOFF_DTPREL22, 0xba) /* @ltoff(@dtprel(s+a)), imm22 */
 
   FAKE_RELOC (R_IA64_MAX_RELOC_CODE, 0xba)
+
+  /* OpenVMS specific relocs.  */
+  RELOC_NUMBER (R_IA64_VMS_DIR8, 0x70000000)           /* S + A */
+  RELOC_NUMBER (R_IA64_VMS_DIR16LSB, 0x70000001)       /* S + A */
+  RELOC_NUMBER (R_IA64_VMS_CALL_SIGNATURE, 0x70000002)
+  RELOC_NUMBER (R_IA64_VMS_EXECLET_FUNC, 0x70000003)
+  RELOC_NUMBER (R_IA64_VMS_EXECLET_DATA, 0x70000004)
+  RELOC_NUMBER (R_IA64_VMS_FIX8, 0x70000005)           /* S + A */
+  RELOC_NUMBER (R_IA64_VMS_FIX16, 0x70000006)          /* S + A */
+  RELOC_NUMBER (R_IA64_VMS_FIX32, 0x70000007)          /* S + A */
+  RELOC_NUMBER (R_IA64_VMS_FIX64, 0x70000008)          /* S + A */
+  RELOC_NUMBER (R_IA64_VMS_FIXFD, 0x70000009)
+  RELOC_NUMBER (R_IA64_VMS_ACC_LOAD, 0x7000000a)       /* ACC = S + A */
+  RELOC_NUMBER (R_IA64_VMS_ACC_ADD, 0x7000000b)                /* ACC += S + A */
+  RELOC_NUMBER (R_IA64_VMS_ACC_SUB, 0x7000000c)                /* ACC -= S + A */
+  RELOC_NUMBER (R_IA64_VMS_ACC_MUL, 0x7000000d)                /* ACC *= S + A */
+  RELOC_NUMBER (R_IA64_VMS_ACC_DIV, 0x7000000e)                /* ACC /= S + A */
+  RELOC_NUMBER (R_IA64_VMS_ACC_AND, 0x7000000f)                /* ACC &= S + A */
+  RELOC_NUMBER (R_IA64_VMS_ACC_IOR, 0x70000010)                /* ACC |= S + A */
+  RELOC_NUMBER (R_IA64_VMS_ACC_EOR, 0x70000011)                /* ACC ^= S + A */
+  RELOC_NUMBER (R_IA64_VMS_ACC_ASH, 0x70000012)                /* ACC >>= S + A */
+  RELOC_NUMBER (R_IA64_VMS_ACC_STO8, 0x70000014)       /* ACC */
+  RELOC_NUMBER (R_IA64_VMS_ACC_STO16LSH, 0x70000015)   /* ACC */
+  RELOC_NUMBER (R_IA64_VMS_ACC_STO32LSH, 0x70000016)   /* ACC */
+  RELOC_NUMBER (R_IA64_VMS_ACC_STO64LSH, 0x70000017)   /* ACC */
 END_RELOC_NUMBERS (R_IA64_max)
 
 #endif /* _ELF_IA64_H */
This page took 0.035592 seconds and 5 git commands to generate.