1 |
/* ARM ELF support for BFD. |
/* ARM ELF support for BFD. |
2 |
Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. |
Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004 |
3 |
|
Free Software Foundation, Inc. |
4 |
|
|
5 |
This file is part of BFD, the Binary File Descriptor library. |
This file is part of BFD, the Binary File Descriptor library. |
6 |
|
|
35 |
#define EF_ARM_OLD_ABI 0x100 |
#define EF_ARM_OLD_ABI 0x100 |
36 |
#define EF_ARM_SOFT_FLOAT 0x200 |
#define EF_ARM_SOFT_FLOAT 0x200 |
37 |
#define EF_ARM_VFP_FLOAT 0x400 |
#define EF_ARM_VFP_FLOAT 0x400 |
38 |
|
#define EF_ARM_MAVERICK_FLOAT 0x800 |
39 |
|
|
40 |
|
/* Frame unwind information */ |
41 |
|
#define PT_ARM_EXIDX (PT_LOPROC + 1) |
42 |
|
|
43 |
/* Other constants defined in the ARM ELF spec. version B-01. */ |
/* Other constants defined in the ARM ELF spec. version B-01. */ |
44 |
#define EF_ARM_SYMSARESORTED 0x04 /* NB conflicts with EF_INTERWORK */ |
#define EF_ARM_SYMSARESORTED 0x04 /* NB conflicts with EF_INTERWORK */ |
46 |
#define EF_ARM_MAPSYMSFIRST 0x10 /* NB conflicts with EF_APCS_FLOAT */ |
#define EF_ARM_MAPSYMSFIRST 0x10 /* NB conflicts with EF_APCS_FLOAT */ |
47 |
#define EF_ARM_EABIMASK 0xFF000000 |
#define EF_ARM_EABIMASK 0xFF000000 |
48 |
|
|
49 |
|
/* Constants defined in AAELF. */ |
50 |
|
#define EF_ARM_BE8 0x00800000 |
51 |
|
#define EF_ARM_LE8 0x00400000 |
52 |
|
|
53 |
#define EF_ARM_EABI_VERSION(flags) ((flags) & EF_ARM_EABIMASK) |
#define EF_ARM_EABI_VERSION(flags) ((flags) & EF_ARM_EABIMASK) |
54 |
#define EF_ARM_EABI_UNKNOWN 0x00000000 |
#define EF_ARM_EABI_UNKNOWN 0x00000000 |
55 |
#define EF_ARM_EABI_VER1 0x01000000 |
#define EF_ARM_EABI_VER1 0x01000000 |
56 |
#define EF_ARM_EABI_VER2 0x02000000 |
#define EF_ARM_EABI_VER2 0x02000000 |
57 |
|
#define EF_ARM_EABI_VER3 0x03000000 |
58 |
|
#define EF_ARM_EABI_VER4 0x04000000 |
59 |
|
|
60 |
/* Local aliases for some flags to match names used by COFF port. */ |
/* Local aliases for some flags to match names used by COFF port. */ |
61 |
#define F_INTERWORK EF_ARM_INTERWORK |
#define F_INTERWORK EF_ARM_INTERWORK |
69 |
#define STT_ARM_TFUNC STT_LOPROC /* A Thumb function. */ |
#define STT_ARM_TFUNC STT_LOPROC /* A Thumb function. */ |
70 |
#define STT_ARM_16BIT STT_HIPROC /* A Thumb label. */ |
#define STT_ARM_16BIT STT_HIPROC /* A Thumb label. */ |
71 |
|
|
72 |
|
/* Additional section types. */ |
73 |
|
#define SHT_ARM_EXIDX 0x70000001 /* Section holds ARM unwind info. */ |
74 |
|
|
75 |
/* ARM-specific values for sh_flags. */ |
/* ARM-specific values for sh_flags. */ |
76 |
#define SHF_ENTRYSECT 0x10000000 /* Section contains an entry point. */ |
#define SHF_ENTRYSECT 0x10000000 /* Section contains an entry point. */ |
77 |
#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. */ |
127 |
FAKE_RELOC (FIRST_INVALID_RELOC, 28) |
FAKE_RELOC (FIRST_INVALID_RELOC, 28) |
128 |
FAKE_RELOC (LAST_INVALID_RELOC, 249) |
FAKE_RELOC (LAST_INVALID_RELOC, 249) |
129 |
#else /* not OLD_ARM_ABI */ |
#else /* not OLD_ARM_ABI */ |
130 |
FAKE_RELOC (FIRST_INVALID_RELOC1, 28) |
RELOC_NUMBER (R_ARM_CALL, 28) |
131 |
|
RELOC_NUMBER (R_ARM_JUMP24, 29) |
132 |
|
FAKE_RELOC (FIRST_INVALID_RELOC1, 30) |
133 |
FAKE_RELOC (LAST_INVALID_RELOC1, 31) |
FAKE_RELOC (LAST_INVALID_RELOC1, 31) |
134 |
RELOC_NUMBER (R_ARM_ALU_PCREL7_0, 32) |
RELOC_NUMBER (R_ARM_ALU_PCREL7_0, 32) |
135 |
RELOC_NUMBER (R_ARM_ALU_PCREL15_8, 33) |
RELOC_NUMBER (R_ARM_ALU_PCREL15_8, 33) |
136 |
RELOC_NUMBER (R_ARM_ALU_PCREL23_15, 34) |
RELOC_NUMBER (R_ARM_ALU_PCREL23_15, 34) |
137 |
RELOC_NUMBER (R_ARM_LDR_SBREL11_0, 35) |
RELOC_NUMBER (R_ARM_LDR_SBREL_11_0, 35) |
138 |
RELOC_NUMBER (R_ARM_ALU_SBREL19_12, 36) |
RELOC_NUMBER (R_ARM_ALU_SBREL_19_12, 36) |
139 |
RELOC_NUMBER (R_ARM_ALU_SBREL27_20, 37) |
RELOC_NUMBER (R_ARM_ALU_SBREL_27_20, 37) |
140 |
FAKE_RELOC (FIRST_INVALID_RELOC2, 38) |
RELOC_NUMBER (R_ARM_TARGET1, 38) |
141 |
FAKE_RELOC (LAST_INVALID_RELOC2, 99) |
RELOC_NUMBER (R_ARM_ROSEGREL32, 39) |
142 |
|
RELOC_NUMBER (R_ARM_V4BX, 40) |
143 |
|
RELOC_NUMBER (R_ARM_TARGET2, 41) |
144 |
|
RELOC_NUMBER (R_ARM_PREL31, 42) |
145 |
|
FAKE_RELOC (FIRST_INVALID_RELOC2, 43) |
146 |
|
FAKE_RELOC (LAST_INVALID_RELOC2, 94) |
147 |
|
RELOC_NUMBER (R_ARM_GOT_ABS, 95) |
148 |
|
RELOC_NUMBER (R_ARM_GOT_PREL, 96) |
149 |
|
RELOC_NUMBER (R_ARM_GOT_BREL12, 97) |
150 |
|
RELOC_NUMBER (R_ARM_GOTOFF12, 98) |
151 |
|
RELOC_NUMBER (R_ARM_GOTRELAX, 99) |
152 |
RELOC_NUMBER (R_ARM_GNU_VTENTRY, 100) |
RELOC_NUMBER (R_ARM_GNU_VTENTRY, 100) |
153 |
RELOC_NUMBER (R_ARM_GNU_VTINHERIT, 101) |
RELOC_NUMBER (R_ARM_GNU_VTINHERIT, 101) |
154 |
RELOC_NUMBER (R_ARM_THM_PC11, 102) /* Cygnus extension to abi: Thumb unconditional branch. */ |
RELOC_NUMBER (R_ARM_THM_PC11, 102) /* Cygnus extension to abi: Thumb unconditional branch. */ |
165 |
RELOC_NUMBER (R_ARM_RBASE, 255) |
RELOC_NUMBER (R_ARM_RBASE, 255) |
166 |
END_RELOC_NUMBERS (R_ARM_max) |
END_RELOC_NUMBERS (R_ARM_max) |
167 |
|
|
168 |
|
/* The name of the note section used to identify arm variants. */ |
169 |
|
#define ARM_NOTE_SECTION ".note.gnu.arm.ident" |
170 |
|
|
171 |
|
/* Special section names. */ |
172 |
|
#define ELF_STRING_ARM_unwind ".ARM.exidx" |
173 |
|
#define ELF_STRING_ARM_unwind_info ".ARM.extab" |
174 |
|
#define ELF_STRING_ARM_unwind_once ".gnu.linkonce.armexidx." |
175 |
|
#define ELF_STRING_ARM_unwind_info_once ".gnu.linkonce.armextab." |
176 |
|
|
177 |
#endif /* _ELF_ARM_H */ |
#endif /* _ELF_ARM_H */ |