2004-10-12 Paul Brook <paul@codesourcery.com>
[deliverable/binutils-gdb.git] / include / elf / arm.h
index 049925185fac614bc78de82956a70f2105f4ee2d..9055f622de115dcb8e0440fb22a0fc36248f50d1 100644 (file)
@@ -1,5 +1,5 @@
 /* ARM ELF support for BFD.
-   Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
+   Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
 /* Processor specific flags for the ELF header e_flags field.  */
 #define EF_ARM_RELEXEC     0x01
 #define EF_ARM_HASENTRY    0x02
-#define EF_INTERWORK       0x04
-#define EF_APCS_26         0x08
-#define EF_APCS_FLOAT      0x10
-#define EF_PIC             0x20
-#define EF_ALIGN8         0x40         /* 8-bit structure alignment is in use.  */
-#define EF_NEW_ABI         0x80
-#define EF_OLD_ABI         0x100
-#define EF_SOFT_FLOAT      0x200
-
-/* Other constants defined in the ARM ELF spec. version A-08.  */
+#define EF_ARM_INTERWORK   0x04
+#define EF_ARM_APCS_26     0x08
+#define EF_ARM_APCS_FLOAT  0x10
+#define EF_ARM_PIC         0x20
+#define EF_ARM_ALIGN8     0x40         /* 8-bit structure alignment is in use.  */
+#define EF_ARM_NEW_ABI     0x80
+#define EF_ARM_OLD_ABI     0x100
+#define EF_ARM_SOFT_FLOAT  0x200
+#define EF_ARM_VFP_FLOAT   0x400
+#define EF_ARM_MAVERICK_FLOAT 0x800
+
+/* Other constants defined in the ARM ELF spec. version B-01.  */
 #define EF_ARM_SYMSARESORTED 0x04      /* NB conflicts with EF_INTERWORK */
+#define EF_ARM_DYNSYMSUSESEGIDX 0x08   /* NB conflicts with EF_APCS26 */
+#define EF_ARM_MAPSYMSFIRST 0x10       /* NB conflicts with EF_APCS_FLOAT */
 #define EF_ARM_EABIMASK      0xFF000000
 
+/* Constants defined in AAELF.  */
+#define EF_ARM_BE8         0x00800000
+#define EF_ARM_LE8         0x00400000
+
 #define EF_ARM_EABI_VERSION(flags) ((flags) & EF_ARM_EABIMASK)
 #define EF_ARM_EABI_UNKNOWN  0x00000000
 #define EF_ARM_EABI_VER1     0x01000000
+#define EF_ARM_EABI_VER2     0x02000000
+#define EF_ARM_EABI_VER3     0x03000000
+#define EF_ARM_EABI_VER4     0x04000000
 
 /* Local aliases for some flags to match names used by COFF port.  */
-#define F_INTERWORK       EF_INTERWORK
-#define F_APCS26          EF_APCS_26
-#define F_APCS_FLOAT      EF_APCS_FLOAT
-#define F_PIC              EF_PIC
-#define F_SOFT_FLOAT      EF_SOFT_FLOAT
+#define F_INTERWORK       EF_ARM_INTERWORK
+#define F_APCS26          EF_ARM_APCS_26
+#define F_APCS_FLOAT      EF_ARM_APCS_FLOAT
+#define F_PIC              EF_ARM_PIC
+#define F_SOFT_FLOAT      EF_ARM_SOFT_FLOAT
+#define F_VFP_FLOAT       EF_ARM_VFP_FLOAT
 
 /* Additional symbol types for Thumb.  */
 #define STT_ARM_TFUNC      STT_LOPROC   /* A Thumb function.  */
 #define STT_ARM_16BIT      STT_HIPROC   /* A Thumb label.  */
 
+/* Additional section types.  */
+#define SHT_ARM_EXIDX     0x70000001   /* Section holds ARM unwind info.  */
+
 /* ARM-specific values for sh_flags.  */
 #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.  */
@@ -109,13 +124,31 @@ START_RELOC_NUMBERS (elf_arm_reloc_type)
   FAKE_RELOC   (LAST_INVALID_RELOC,   249)
 #else /* not OLD_ARM_ABI */
   FAKE_RELOC   (FIRST_INVALID_RELOC1,  28)
-  FAKE_RELOC   (LAST_INVALID_RELOC1,   99)
+  FAKE_RELOC   (LAST_INVALID_RELOC1,   31)
+  RELOC_NUMBER (R_ARM_ALU_PCREL7_0,    32)
+  RELOC_NUMBER (R_ARM_ALU_PCREL15_8,   33)
+  RELOC_NUMBER (R_ARM_ALU_PCREL23_15,  34)
+  RELOC_NUMBER (R_ARM_LDR_SBREL_11_0,  35)
+  RELOC_NUMBER (R_ARM_ALU_SBREL_19_12, 36)
+  RELOC_NUMBER (R_ARM_ALU_SBREL_27_20, 37)
+  RELOC_NUMBER (R_ARM_TARGET1,         38)
+  RELOC_NUMBER (R_ARM_ROSEGREL32,      39)
+  RELOC_NUMBER (R_ARM_V4BX,            40)
+  RELOC_NUMBER (R_ARM_TARGET2,        41)
+  RELOC_NUMBER (R_ARM_PREL31,         42)
+  FAKE_RELOC   (FIRST_INVALID_RELOC2,  43)
+  FAKE_RELOC   (LAST_INVALID_RELOC2,   94)
+  RELOC_NUMBER (R_ARM_GOT_ABS,        95)
+  RELOC_NUMBER (R_ARM_GOT_PREL,               96)
+  RELOC_NUMBER (R_ARM_GOT_BREL12,      97)
+  RELOC_NUMBER (R_ARM_GOTOFF12,               98)
+  RELOC_NUMBER (R_ARM_GOTRELAX,               99)
   RELOC_NUMBER (R_ARM_GNU_VTENTRY,    100)
   RELOC_NUMBER (R_ARM_GNU_VTINHERIT,  101)
   RELOC_NUMBER (R_ARM_THM_PC11,       102)   /* Cygnus extension to abi: Thumb unconditional branch.  */
   RELOC_NUMBER (R_ARM_THM_PC9,        103)   /* Cygnus extension to abi: Thumb conditional branch.  */
-  FAKE_RELOC   (FIRST_INVALID_RELOC2, 104)
-  FAKE_RELOC   (LAST_INVALID_RELOC2,  248)
+  FAKE_RELOC   (FIRST_INVALID_RELOC3, 104)
+  FAKE_RELOC   (LAST_INVALID_RELOC3,  248)
   RELOC_NUMBER (R_ARM_RXPC25,         249)
 #endif /* not OLD_ARM_ABI */
   RELOC_NUMBER (R_ARM_RSBREL32,       250)
@@ -126,4 +159,13 @@ START_RELOC_NUMBERS (elf_arm_reloc_type)
   RELOC_NUMBER (R_ARM_RBASE,          255)
 END_RELOC_NUMBERS (R_ARM_max)
 
+/* The name of the note section used to identify arm variants.  */
+#define ARM_NOTE_SECTION ".note.gnu.arm.ident"
+
+/* Special section names.  */
+#define ELF_STRING_ARM_unwind           ".ARM.exidx"
+#define ELF_STRING_ARM_unwind_info      ".ARM.extab"
+#define ELF_STRING_ARM_unwind_once      ".gnu.linkonce.armexidx."
+#define ELF_STRING_ARM_unwind_info_once ".gnu.linkonce.armextab."
+
 #endif /* _ELF_ARM_H */
This page took 0.023848 seconds and 4 git commands to generate.