const char *name;
/* A unique sequence number. */
- int id;
+ unsigned int id;
/* Which section in the bfd; 0..n-1 as sections are created in a bfd. */
- int index;
+ unsigned int index;
/* The next section in the list belonging to the BFD, or NULL. */
struct bfd_section *next;
asection *bfd_make_section (bfd *, const char *name);
+int bfd_get_next_section_id (void);
+
bfd_boolean bfd_set_section_flags
(bfd *abfd, asection *sec, flagword flags);
#define bfd_mach_v850e2v3 0x45325633
#define bfd_mach_v850e3v5 0x45335635 /* ('E'|'3'|'V'|'5') */
bfd_arch_arc, /* ARC Cores */
-#define bfd_mach_arc_5 5
-#define bfd_mach_arc_6 6
-#define bfd_mach_arc_7 7
-#define bfd_mach_arc_8 8
+#define bfd_mach_arc_a4 0
+#define bfd_mach_arc_a5 1
+#define bfd_mach_arc_arc600 2
+#define bfd_mach_arc_arc601 4
+#define bfd_mach_arc_arc700 3
+#define bfd_mach_arc_arcv2 5
bfd_arch_m32c, /* Renesas M16C/M32C. */
#define bfd_mach_m16c 0x75
#define bfd_mach_m32c 0x78
BFD_RELOC_386_TLS_DESC_CALL,
BFD_RELOC_386_TLS_DESC,
BFD_RELOC_386_IRELATIVE,
+ BFD_RELOC_386_GOT32X,
/* x86-64/elf relocations */
BFD_RELOC_X86_64_GOT32,
BFD_RELOC_X86_64_IRELATIVE,
BFD_RELOC_X86_64_PC32_BND,
BFD_RELOC_X86_64_PLT32_BND,
+ BFD_RELOC_X86_64_GOTPCRELX,
+ BFD_RELOC_X86_64_REX_GOTPCRELX,
/* ns32k relocations */
BFD_RELOC_NS32K_IMM_8,
BFD_RELOC_SH_GOTOFFFUNCDESC20,
BFD_RELOC_SH_FUNCDESC,
-/* ARC Cores relocs.
-ARC 22 bit pc-relative branch. The lowest two bits must be zero and are
-not stored in the instruction. The high 20 bits are installed in bits 26
-through 7 of the instruction. */
- BFD_RELOC_ARC_B22_PCREL,
-
-/* ARC 26 bit absolute branch. The lowest two bits must be zero and are not
-stored in the instruction. The high 24 bits are installed in bits 23
-through 0. */
- BFD_RELOC_ARC_B26,
+/* ARC relocs. */
+ BFD_RELOC_ARC_NONE,
+ BFD_RELOC_ARC_8,
+ BFD_RELOC_ARC_16,
+ BFD_RELOC_ARC_24,
+ BFD_RELOC_ARC_32,
+ BFD_RELOC_ARC_N8,
+ BFD_RELOC_ARC_N16,
+ BFD_RELOC_ARC_N24,
+ BFD_RELOC_ARC_N32,
+ BFD_RELOC_ARC_SDA,
+ BFD_RELOC_ARC_SECTOFF,
+ BFD_RELOC_ARC_S21H_PCREL,
+ BFD_RELOC_ARC_S21W_PCREL,
+ BFD_RELOC_ARC_S25H_PCREL,
+ BFD_RELOC_ARC_S25W_PCREL,
+ BFD_RELOC_ARC_SDA32,
+ BFD_RELOC_ARC_SDA_LDST,
+ BFD_RELOC_ARC_SDA_LDST1,
+ BFD_RELOC_ARC_SDA_LDST2,
+ BFD_RELOC_ARC_SDA16_LD,
+ BFD_RELOC_ARC_SDA16_LD1,
+ BFD_RELOC_ARC_SDA16_LD2,
+ BFD_RELOC_ARC_S13_PCREL,
+ BFD_RELOC_ARC_W,
+ BFD_RELOC_ARC_32_ME,
+ BFD_RELOC_ARC_32_ME_S,
+ BFD_RELOC_ARC_N32_ME,
+ BFD_RELOC_ARC_SECTOFF_ME,
+ BFD_RELOC_ARC_SDA32_ME,
+ BFD_RELOC_ARC_W_ME,
+ BFD_RELOC_AC_SECTOFF_U8,
+ BFD_RELOC_AC_SECTOFF_U8_1,
+ BFD_RELOC_AC_SECTOFF_U8_2,
+ BFD_RELOC_AC_SECTFOFF_S9,
+ BFD_RELOC_AC_SECTFOFF_S9_1,
+ BFD_RELOC_AC_SECTFOFF_S9_2,
+ BFD_RELOC_ARC_SECTOFF_ME_1,
+ BFD_RELOC_ARC_SECTOFF_ME_2,
+ BFD_RELOC_ARC_SECTOFF_1,
+ BFD_RELOC_ARC_SECTOFF_2,
+ BFD_RELOC_ARC_SDA16_ST2,
+ BFD_RELOC_ARC_PC32,
+ BFD_RELOC_ARC_GOT32,
+ BFD_RELOC_ARC_GOTPC32,
+ BFD_RELOC_ARC_PLT32,
+ BFD_RELOC_ARC_COPY,
+ BFD_RELOC_ARC_GLOB_DAT,
+ BFD_RELOC_ARC_JMP_SLOT,
+ BFD_RELOC_ARC_RELATIVE,
+ BFD_RELOC_ARC_GOTOFF,
+ BFD_RELOC_ARC_GOTPC,
+ BFD_RELOC_ARC_S21W_PCREL_PLT,
+ BFD_RELOC_ARC_S25H_PCREL_PLT,
+ BFD_RELOC_ARC_TLS_DTPMOD,
+ BFD_RELOC_ARC_TLS_TPOFF,
+ BFD_RELOC_ARC_TLS_GD_GOT,
+ BFD_RELOC_ARC_TLS_GD_LD,
+ BFD_RELOC_ARC_TLS_GD_CALL,
+ BFD_RELOC_ARC_TLS_IE_GOT,
+ BFD_RELOC_ARC_TLS_DTPOFF,
+ BFD_RELOC_ARC_TLS_DTPOFF_S9,
+ BFD_RELOC_ARC_TLS_LE_S9,
+ BFD_RELOC_ARC_TLS_LE_32,
+ BFD_RELOC_ARC_S25W_PCREL_PLT,
+ BFD_RELOC_ARC_S21H_PCREL_PLT,
/* ADI Blackfin 16 bit immediate absolute reloc. */
BFD_RELOC_BFIN_16_IMM,
BFD_RELOC_AARCH64_ADR_GOTPAGE. Valid in ILP32 ABI only. */
BFD_RELOC_AARCH64_LD32_GOT_LO12_NC,
+/* Unsigned 16 bit byte offset for 64 bit load/store from the GOT entry
+for this symbol. Valid in LP64 ABI only. */
+ BFD_RELOC_AARCH64_MOVW_GOTOFF_G0_NC,
+
+/* Unsigned 16 bit byte higher offset for 64 bit load/store from the GOT entry
+for this symbol. Valid in LP64 ABI only. */
+ BFD_RELOC_AARCH64_MOVW_GOTOFF_G1,
+
/* Unsigned 15 bit byte offset for 64 bit load/store from the page of
-the GOT entry for this symbol. Valid in ILP64 ABI only. */
+the GOT entry for this symbol. Valid in LP64 ABI only. */
BFD_RELOC_AARCH64_LD64_GOTOFF_LO15,
/* Scaled 14 bit byte offset to the page base of the global offset table. */
BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21. */
BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC,
-/* AArch64 TLS INITIAL EXEC relocation. */
- BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1,
+/* AArch64 TLS General Dynamic relocation. */
+ BFD_RELOC_AARCH64_TLSGD_MOVW_G0_NC,
-/* AArch64 TLS INITIAL EXEC relocation. */
- BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC,
+/* AArch64 TLS General Dynamic relocation. */
+ BFD_RELOC_AARCH64_TLSGD_MOVW_G1,
/* AArch64 TLS INITIAL EXEC relocation. */
BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21,
/* AArch64 TLS INITIAL EXEC relocation. */
BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19,
+/* AArch64 TLS INITIAL EXEC relocation. */
+ BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC,
+
+/* AArch64 TLS INITIAL EXEC relocation. */
+ BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1,
+
+/* bit[23:12] of byte offset to module TLS base address. */
+ BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_HI12,
+
/* Unsigned 12 bit byte offset to module TLS base address. */
BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12,
/* GOT entry address for AArch64 TLS Local Dynamic, used with ADR instruction. */
BFD_RELOC_AARCH64_TLSLD_ADR_PREL21,
+/* bit[11:1] of byte offset to module TLS base address, encoded in ldst
+instructions. */
+ BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12,
+
+/* Similar as BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12, but no overflow check. */
+ BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC,
+
+/* bit[11:2] of byte offset to module TLS base address, encoded in ldst
+instructions. */
+ BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12,
+
+/* Similar as BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12, but no overflow check. */
+ BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC,
+
+/* bit[11:3] of byte offset to module TLS base address, encoded in ldst
+instructions. */
+ BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12,
+
+/* Similar as BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12, but no overflow check. */
+ BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC,
+
+/* bit[11:0] of byte offset to module TLS base address, encoded in ldst
+instructions. */
+ BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12,
+
+/* Similar as BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12, but no overflow check. */
+ BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC,
+
+/* bit[15:0] of byte offset to module TLS base address. */
+ BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0,
+
+/* No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0 */
+ BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0_NC,
+
+/* bit[31:16] of byte offset to module TLS base address. */
+ BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1,
+
+/* No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1 */
+ BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1_NC,
+
+/* bit[47:32] of byte offset to module TLS base address. */
+ BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G2,
+
/* AArch64 TLS LOCAL EXEC relocation. */
BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2,
address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. */
BFD_RELOC_AARCH64_LDST_LO12,
+/* AArch64 pseudo relocation code for TLS local dynamic mode. It's to be
+used internally by the AArch64 assembler and not (currently) written to
+any object files. */
+ BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12,
+
+/* Similar as BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12, but no overflow check. */
+ BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12_NC,
+
/* AArch64 pseudo relocation code to be used internally by the AArch64
assembler and not (currently) written to any object files. */
BFD_RELOC_AARCH64_LD_GOT_LO12_NC,
(bfd *ibfd, asection *isec, bfd *obfd, bfd_size_type size);
bfd_boolean bfd_convert_section_contents
- (bfd *ibfd, asection *isec, bfd *obfd, bfd_byte **ptr);
+ (bfd *ibfd, asection *isec, bfd *obfd,
+ bfd_byte **ptr, bfd_size_type *ptr_size);
/* Extracted from archive.c. */
symindex bfd_get_next_mapent
enum bfd_flavour
{
+ /* N.B. Update bfd_flavour_name if you change this. */
bfd_target_unknown_flavour,
bfd_target_aout_flavour,
bfd_target_coff_flavour,
(int (*search_func) (const bfd_target *, void *),
void *);
+const char *bfd_flavour_name (enum bfd_flavour flavour);
+
/* Extracted from format.c. */
bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);