Line 1... |
Line 1... |
/* ARM ELF support for BFD.
|
/* ARM ELF support for BFD.
|
Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004
|
Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2009
|
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
|
|
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
|
|
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
Line 39... |
Line 39... |
|
|
/* Frame unwind information */
|
/* Frame unwind information */
|
#define PT_ARM_EXIDX (PT_LOPROC + 1)
|
#define PT_ARM_EXIDX (PT_LOPROC + 1)
|
|
|
/* Other constants defined in the ARM ELF spec. version B-01. */
|
/* Other constants defined in the ARM ELF spec. version B-01. */
|
#define EF_ARM_SYMSARESORTED 0x04 /* NB conflicts with EF_INTERWORK */
|
#define EF_ARM_SYMSARESORTED 0x04 /* NB conflicts with EF_INTERWORK. */
|
#define EF_ARM_DYNSYMSUSESEGIDX 0x08 /* NB conflicts with EF_APCS26 */
|
#define EF_ARM_DYNSYMSUSESEGIDX 0x08 /* NB conflicts with EF_APCS26. */
|
#define EF_ARM_MAPSYMSFIRST 0x10 /* NB conflicts with EF_APCS_FLOAT */
|
#define EF_ARM_MAPSYMSFIRST 0x10 /* NB conflicts with EF_APCS_FLOAT. */
|
#define EF_ARM_EABIMASK 0xFF000000
|
#define EF_ARM_EABIMASK 0xFF000000
|
|
|
/* Constants defined in AAELF. */
|
/* Constants defined in AAELF. */
|
#define EF_ARM_BE8 0x00800000
|
#define EF_ARM_BE8 0x00800000
|
#define EF_ARM_LE8 0x00400000
|
#define EF_ARM_LE8 0x00400000
|
Line 72... |
Line 72... |
|
|
/* Additional section types. */
|
/* Additional section types. */
|
#define SHT_ARM_EXIDX 0x70000001 /* Section holds ARM unwind info. */
|
#define SHT_ARM_EXIDX 0x70000001 /* Section holds ARM unwind info. */
|
#define SHT_ARM_PREEMPTMAP 0x70000002 /* Section pre-emption details. */
|
#define SHT_ARM_PREEMPTMAP 0x70000002 /* Section pre-emption details. */
|
#define SHT_ARM_ATTRIBUTES 0x70000003 /* Section holds attributes. */
|
#define SHT_ARM_ATTRIBUTES 0x70000003 /* Section holds attributes. */
|
|
#define SHT_ARM_DEBUGOVERLAY 0x70000004 /* Section holds overlay debug info. */
|
|
#define SHT_ARM_OVERLAYSECTION 0x70000005 /* Section holds GDB and overlay integration info. */
|
|
|
/* ARM-specific values for sh_flags. */
|
/* ARM-specific values for sh_flags. */
|
#define SHF_ENTRYSECT 0x10000000 /* Section contains an entry point. */
|
#define SHF_ENTRYSECT 0x10000000 /* Section contains an entry point. */
|
#define SHF_COMDEF 0x80000000 /* Section may be multiply defined in the input to a link step. */
|
#define SHF_COMDEF 0x80000000 /* Section may be multiply defined in the input to a link step. */
|
|
|
Line 94... |
Line 96... |
#define TAG_CPU_ARCH_V6 6
|
#define TAG_CPU_ARCH_V6 6
|
#define TAG_CPU_ARCH_V6KZ 7
|
#define TAG_CPU_ARCH_V6KZ 7
|
#define TAG_CPU_ARCH_V6T2 8
|
#define TAG_CPU_ARCH_V6T2 8
|
#define TAG_CPU_ARCH_V6K 9
|
#define TAG_CPU_ARCH_V6K 9
|
#define TAG_CPU_ARCH_V7 10
|
#define TAG_CPU_ARCH_V7 10
|
|
#define TAG_CPU_ARCH_V6_M 11
|
|
#define TAG_CPU_ARCH_V6S_M 12
|
|
#define MAX_TAG_CPU_ARCH 12
|
|
/* Pseudo-architecture to allow objects to be compatible with the subset of
|
|
armv4t and armv6-m. This value should never be stored in object files. */
|
|
#define TAG_CPU_ARCH_V4T_PLUS_V6_M (MAX_TAG_CPU_ARCH + 1)
|
|
|
/* Relocation types. */
|
/* Relocation types. */
|
|
|
START_RELOC_NUMBERS (elf_arm_reloc_type)
|
START_RELOC_NUMBERS (elf_arm_reloc_type)
|
/* AAELF official names and numbers. */
|
/* AAELF official names and numbers. */
|
Line 232... |
Line 240... |
GNU usage. */
|
GNU usage. */
|
FAKE_RELOC (R_ARM_GOTPC, R_ARM_BASE_PREL) /* 32 bit PC relative offset to GOT. */
|
FAKE_RELOC (R_ARM_GOTPC, R_ARM_BASE_PREL) /* 32 bit PC relative offset to GOT. */
|
FAKE_RELOC (R_ARM_GOT32, R_ARM_GOT_BREL) /* 32 bit GOT entry. */
|
FAKE_RELOC (R_ARM_GOT32, R_ARM_GOT_BREL) /* 32 bit GOT entry. */
|
FAKE_RELOC (R_ARM_ROSEGREL32, R_ARM_SBREL31) /* ??? */
|
FAKE_RELOC (R_ARM_ROSEGREL32, R_ARM_SBREL31) /* ??? */
|
FAKE_RELOC (R_ARM_AMP_VCALL9, R_ARM_BREL_ADJ) /* Thumb-something. Not used. */
|
FAKE_RELOC (R_ARM_AMP_VCALL9, R_ARM_BREL_ADJ) /* Thumb-something. Not used. */
|
END_RELOC_NUMBERS (R_ARM_max)
|
|
|
END_RELOC_NUMBERS (R_ARM_max = 256)
|
|
|
#ifdef BFD_ARCH_SIZE
|
#ifdef BFD_ARCH_SIZE
|
/* EABI object attributes. */
|
/* EABI object attributes. */
|
|
|
enum
|
enum
|
Line 248... |
Line 257... |
Tag_CPU_arch_profile,
|
Tag_CPU_arch_profile,
|
Tag_ARM_ISA_use,
|
Tag_ARM_ISA_use,
|
Tag_THUMB_ISA_use,
|
Tag_THUMB_ISA_use,
|
Tag_VFP_arch,
|
Tag_VFP_arch,
|
Tag_WMMX_arch,
|
Tag_WMMX_arch,
|
Tag_NEON_arch,
|
Tag_Advanced_SIMD_arch,
|
Tag_PCS_config,
|
Tag_PCS_config,
|
Tag_ABI_PCS_R9_use,
|
Tag_ABI_PCS_R9_use,
|
Tag_ABI_PCS_RW_data,
|
Tag_ABI_PCS_RW_data,
|
Tag_ABI_PCS_RO_data,
|
Tag_ABI_PCS_RO_data,
|
Tag_ABI_PCS_GOT_use,
|
Tag_ABI_PCS_GOT_use,
|
Line 268... |
Line 277... |
Tag_ABI_HardFP_use,
|
Tag_ABI_HardFP_use,
|
Tag_ABI_VFP_args,
|
Tag_ABI_VFP_args,
|
Tag_ABI_WMMX_args,
|
Tag_ABI_WMMX_args,
|
Tag_ABI_optimization_goals,
|
Tag_ABI_optimization_goals,
|
Tag_ABI_FP_optimization_goals,
|
Tag_ABI_FP_optimization_goals,
|
/* 32 is generic. */
|
/* 32 is generic (Tag_compatibility). */
|
|
Tag_undefined33 = 33,
|
|
Tag_CPU_unaligned_access,
|
|
Tag_undefined35,
|
|
Tag_VFP_HP_extension,
|
|
Tag_undefined37,
|
|
Tag_ABI_FP_16bit_format,
|
|
Tag_undefined39,
|
|
Tag_nodefaults = 64,
|
|
Tag_also_compatible_with,
|
|
Tag_T2EE_use,
|
|
Tag_conformance,
|
|
Tag_Virtualization_use,
|
|
Tag_undefined69,
|
|
Tag_MPextension_use
|
};
|
};
|
|
|
#endif
|
#endif
|
|
|
/* The name of the note section used to identify arm variants. */
|
/* The name of the note section used to identify arm variants. */
|