include/elf
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.
This commit is contained in:
		| @@ -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> | 2010-05-25  Daniel Jacobowitz  <dan@codesourcery.com> | ||||||
| 	    Joseph Myers  <joseph@codesourcery.com> | 	    Joseph Myers  <joseph@codesourcery.com> | ||||||
| 	    Andrew Stubbs  <ams@codesourcery.com> | 	    Andrew Stubbs  <ams@codesourcery.com> | ||||||
|   | |||||||
| @@ -45,6 +45,14 @@ | |||||||
| /* Not used yet.  */ | /* Not used yet.  */ | ||||||
| #define EF_IA_64_ABSOLUTE	    (1 << 8) /* Load at absolute addresses.  */ | #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_archext		".IA_64.archext" | ||||||
| #define ELF_STRING_ia64_pltoff		".IA_64.pltoff" | #define ELF_STRING_ia64_pltoff		".IA_64.pltoff" | ||||||
| #define ELF_STRING_ia64_unwind		".IA_64.unwind" | #define ELF_STRING_ia64_unwind		".IA_64.unwind" | ||||||
| @@ -159,6 +167,23 @@ | |||||||
| #define DT_IA_64_VMS_PLTGOT_SEG      (DT_LOOS + 64) | #define DT_IA_64_VMS_PLTGOT_SEG      (DT_LOOS + 64) | ||||||
| #define DT_IA_64_VMS_FPMODE          (DT_LOOS + 66) | #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 | /* This section only used by HP-UX, The HP linker gives weak symbols | ||||||
|    precedence over regular common symbols.  We want common to override |    precedence over regular common symbols.  We want common to override | ||||||
|    weak.  Using this common instead of SHN_COMMON does that.  */ |    weak.  Using this common instead of SHN_COMMON does that.  */ | ||||||
| @@ -168,6 +193,45 @@ | |||||||
|    vector (only possible for image files).  */ |    vector (only possible for image files).  */ | ||||||
| #define SHN_IA_64_VMS_SYMVEC SHN_LOOS | #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: */ | /* IA64-specific relocation types: */ | ||||||
|  |  | ||||||
| /* Relocs apply to specific instructions within a bundle.  The least | /* 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 */ |   RELOC_NUMBER (R_IA64_LTOFF_DTPREL22, 0xba) /* @ltoff(@dtprel(s+a)), imm22 */ | ||||||
|  |  | ||||||
|   FAKE_RELOC (R_IA64_MAX_RELOC_CODE, 0xba) |   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) | END_RELOC_NUMBERS (R_IA64_max) | ||||||
|  |  | ||||||
| #endif /* _ELF_IA64_H */ | #endif /* _ELF_IA64_H */ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user