]> oss.titaniummirror.com Git - msp430-binutils.git/blobdiff - bfd/libbfd.h
Imported binutils-2.20
[msp430-binutils.git] / bfd / libbfd.h
index 2d5b5b3dec0e55b6eba6dd4ea1f0c903bcf81528..2450b2d80b3720de7fed78b62fb919fde6bde8e9 100644 (file)
@@ -7,7 +7,7 @@
    (This include file is not for users of the library.)
 
    Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
    (This include file is not for users of the library.)
 
    Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
    Free Software Foundation, Inc.
 
    Written by Cygnus Support.
    Free Software Foundation, Inc.
 
    Written by Cygnus Support.
@@ -96,6 +96,7 @@ struct areltdata {
   char * arch_header;          /* it's actually a string */
   unsigned int parsed_size;    /* octets of filesize not including ar_hdr */
   char *filename;              /* null-terminated */
   char * arch_header;          /* it's actually a string */
   unsigned int parsed_size;    /* octets of filesize not including ar_hdr */
   char *filename;              /* null-terminated */
+  file_ptr origin;             /* for element of a thin archive */
 };
 
 #define arelt_size(bfd) (((struct areltdata *)((bfd)->arelt_data))->parsed_size)
 };
 
 #define arelt_size(bfd) (((struct areltdata *)((bfd)->arelt_data))->parsed_size)
@@ -104,6 +105,8 @@ extern void *bfd_malloc
   (bfd_size_type);
 extern void *bfd_realloc
   (void *, bfd_size_type);
   (bfd_size_type);
 extern void *bfd_realloc
   (void *, bfd_size_type);
+extern void *bfd_realloc_or_free
+  (void *, bfd_size_type);
 extern void *bfd_zmalloc
   (bfd_size_type);
 extern void *bfd_malloc2
 extern void *bfd_zmalloc
   (bfd_size_type);
 extern void *bfd_malloc2
@@ -418,6 +421,9 @@ extern bfd_boolean _bfd_generic_set_section_contents
   ((bfd_boolean (*) (bfd *, struct bfd_section *)) bfd_false)
 #define _bfd_nolink_section_already_linked \
   ((void (*) (bfd *, struct bfd_section *, struct bfd_link_info *)) bfd_void)
   ((bfd_boolean (*) (bfd *, struct bfd_section *)) bfd_false)
 #define _bfd_nolink_section_already_linked \
   ((void (*) (bfd *, struct bfd_section *, struct bfd_link_info *)) bfd_void)
+#define _bfd_nolink_bfd_define_common_symbol \
+  ((bfd_boolean (*) (bfd *, struct bfd_link_info *, \
+                    struct bfd_link_hash_entry *)) bfd_false)
 
 /* Routines to use for BFD_JUMP_TABLE_DYNAMIC for targets which do not
    have dynamic symbols or relocs.  Use BFD_JUMP_TABLE_DYNAMIC
 
 /* Routines to use for BFD_JUMP_TABLE_DYNAMIC for targets which do not
    have dynamic symbols or relocs.  Use BFD_JUMP_TABLE_DYNAMIC
@@ -767,6 +773,9 @@ struct bfd_iovec
   int (*bclose) (struct bfd *abfd);
   int (*bflush) (struct bfd *abfd);
   int (*bstat) (struct bfd *abfd, struct stat *sb);
   int (*bclose) (struct bfd *abfd);
   int (*bflush) (struct bfd *abfd);
   int (*bstat) (struct bfd *abfd, struct stat *sb);
+  /* Just like mmap: (void*)-1 on failure, mmapped address on success.  */
+  void *(*bmmap) (struct bfd *abfd, void *addr, bfd_size_type len,
+                  int prot, int flags, file_ptr offset);
 };
 /* Extracted from bfdwin.c.  */
 struct _bfd_window_internal {
 };
 /* Extracted from bfdwin.c.  */
 struct _bfd_window_internal {
@@ -826,6 +835,21 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_68K_GLOB_DAT",
   "BFD_RELOC_68K_JMP_SLOT",
   "BFD_RELOC_68K_RELATIVE",
   "BFD_RELOC_68K_GLOB_DAT",
   "BFD_RELOC_68K_JMP_SLOT",
   "BFD_RELOC_68K_RELATIVE",
+  "BFD_RELOC_68K_TLS_GD32",
+  "BFD_RELOC_68K_TLS_GD16",
+  "BFD_RELOC_68K_TLS_GD8",
+  "BFD_RELOC_68K_TLS_LDM32",
+  "BFD_RELOC_68K_TLS_LDM16",
+  "BFD_RELOC_68K_TLS_LDM8",
+  "BFD_RELOC_68K_TLS_LDO32",
+  "BFD_RELOC_68K_TLS_LDO16",
+  "BFD_RELOC_68K_TLS_LDO8",
+  "BFD_RELOC_68K_TLS_IE32",
+  "BFD_RELOC_68K_TLS_IE16",
+  "BFD_RELOC_68K_TLS_IE8",
+  "BFD_RELOC_68K_TLS_LE32",
+  "BFD_RELOC_68K_TLS_LE16",
+  "BFD_RELOC_68K_TLS_LE8",
   "BFD_RELOC_32_BASEREL",
   "BFD_RELOC_16_BASEREL",
   "BFD_RELOC_LO16_BASEREL",
   "BFD_RELOC_32_BASEREL",
   "BFD_RELOC_16_BASEREL",
   "BFD_RELOC_LO16_BASEREL",
@@ -859,6 +883,11 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_SPARC_UA16",
   "BFD_RELOC_SPARC_UA32",
   "BFD_RELOC_SPARC_UA64",
   "BFD_RELOC_SPARC_UA16",
   "BFD_RELOC_SPARC_UA32",
   "BFD_RELOC_SPARC_UA64",
+  "BFD_RELOC_SPARC_GOTDATA_HIX22",
+  "BFD_RELOC_SPARC_GOTDATA_LOX10",
+  "BFD_RELOC_SPARC_GOTDATA_OP_HIX22",
+  "BFD_RELOC_SPARC_GOTDATA_OP_LOX10",
+  "BFD_RELOC_SPARC_GOTDATA_OP",
   "BFD_RELOC_SPARC_BASE13",
   "BFD_RELOC_SPARC_BASE22",
   "BFD_RELOC_SPARC_10",
   "BFD_RELOC_SPARC_BASE13",
   "BFD_RELOC_SPARC_BASE22",
   "BFD_RELOC_SPARC_10",
@@ -922,6 +951,7 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_SPU_HI16",
   "BFD_RELOC_SPU_PPU32",
   "BFD_RELOC_SPU_PPU64",
   "BFD_RELOC_SPU_HI16",
   "BFD_RELOC_SPU_PPU32",
   "BFD_RELOC_SPU_PPU64",
+  "BFD_RELOC_SPU_ADD_PIC",
   "BFD_RELOC_ALPHA_GPDISP_HI16",
   "BFD_RELOC_ALPHA_GPDISP_LO16",
   "BFD_RELOC_ALPHA_GPDISP",
   "BFD_RELOC_ALPHA_GPDISP_HI16",
   "BFD_RELOC_ALPHA_GPDISP_LO16",
   "BFD_RELOC_ALPHA_GPDISP",
@@ -934,6 +964,10 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_ALPHA_GPREL_HI16",
   "BFD_RELOC_ALPHA_GPREL_LO16",
   "BFD_RELOC_ALPHA_BRSGP",
   "BFD_RELOC_ALPHA_GPREL_HI16",
   "BFD_RELOC_ALPHA_GPREL_LO16",
   "BFD_RELOC_ALPHA_BRSGP",
+  "BFD_RELOC_ALPHA_NOP",
+  "BFD_RELOC_ALPHA_BSR",
+  "BFD_RELOC_ALPHA_LDA",
+  "BFD_RELOC_ALPHA_BOH",
   "BFD_RELOC_ALPHA_TLSGD",
   "BFD_RELOC_ALPHA_TLSLDM",
   "BFD_RELOC_ALPHA_DTPMOD64",
   "BFD_RELOC_ALPHA_TLSGD",
   "BFD_RELOC_ALPHA_TLSLDM",
   "BFD_RELOC_ALPHA_DTPMOD64",
@@ -956,6 +990,8 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_HI16_PCREL",
   "BFD_RELOC_HI16_S_PCREL",
   "BFD_RELOC_LO16_PCREL",
   "BFD_RELOC_HI16_PCREL",
   "BFD_RELOC_HI16_S_PCREL",
   "BFD_RELOC_LO16_PCREL",
+  "BFD_RELOC_MIPS16_GOT16",
+  "BFD_RELOC_MIPS16_CALL16",
   "BFD_RELOC_MIPS16_HI16",
   "BFD_RELOC_MIPS16_HI16_S",
   "BFD_RELOC_MIPS16_LO16",
   "BFD_RELOC_MIPS16_HI16",
   "BFD_RELOC_MIPS16_HI16_S",
   "BFD_RELOC_MIPS16_LO16",
@@ -998,6 +1034,8 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_MIPS_COPY",
   "BFD_RELOC_MIPS_JUMP_SLOT",
 
   "BFD_RELOC_MIPS_COPY",
   "BFD_RELOC_MIPS_JUMP_SLOT",
 
+  "BFD_RELOC_MOXIE_10_PCREL",
+
   "BFD_RELOC_FRV_LABEL16",
   "BFD_RELOC_FRV_LABEL24",
   "BFD_RELOC_FRV_LO16",
   "BFD_RELOC_FRV_LABEL16",
   "BFD_RELOC_FRV_LABEL24",
   "BFD_RELOC_FRV_LO16",
@@ -1046,6 +1084,8 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_MN10300_GLOB_DAT",
   "BFD_RELOC_MN10300_JMP_SLOT",
   "BFD_RELOC_MN10300_RELATIVE",
   "BFD_RELOC_MN10300_GLOB_DAT",
   "BFD_RELOC_MN10300_JMP_SLOT",
   "BFD_RELOC_MN10300_RELATIVE",
+  "BFD_RELOC_MN10300_SYM_DIFF",
+  "BFD_RELOC_MN10300_ALIGN",
 
   "BFD_RELOC_386_GOT32",
   "BFD_RELOC_386_PLT32",
 
   "BFD_RELOC_386_GOT32",
   "BFD_RELOC_386_PLT32",
@@ -1070,6 +1110,7 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_386_TLS_GOTDESC",
   "BFD_RELOC_386_TLS_DESC_CALL",
   "BFD_RELOC_386_TLS_DESC",
   "BFD_RELOC_386_TLS_GOTDESC",
   "BFD_RELOC_386_TLS_DESC_CALL",
   "BFD_RELOC_386_TLS_DESC",
+  "BFD_RELOC_386_IRELATIVE",
   "BFD_RELOC_X86_64_GOT32",
   "BFD_RELOC_X86_64_PLT32",
   "BFD_RELOC_X86_64_COPY",
   "BFD_RELOC_X86_64_GOT32",
   "BFD_RELOC_X86_64_PLT32",
   "BFD_RELOC_X86_64_COPY",
@@ -1096,6 +1137,7 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_X86_64_GOTPC32_TLSDESC",
   "BFD_RELOC_X86_64_TLSDESC_CALL",
   "BFD_RELOC_X86_64_TLSDESC",
   "BFD_RELOC_X86_64_GOTPC32_TLSDESC",
   "BFD_RELOC_X86_64_TLSDESC_CALL",
   "BFD_RELOC_X86_64_TLSDESC",
+  "BFD_RELOC_X86_64_IRELATIVE",
   "BFD_RELOC_NS32K_IMM_8",
   "BFD_RELOC_NS32K_IMM_16",
   "BFD_RELOC_NS32K_IMM_32",
   "BFD_RELOC_NS32K_IMM_8",
   "BFD_RELOC_NS32K_IMM_16",
   "BFD_RELOC_NS32K_IMM_32",
@@ -1170,6 +1212,8 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_PPC64_PLTGOT16_DS",
   "BFD_RELOC_PPC64_PLTGOT16_LO_DS",
   "BFD_RELOC_PPC_TLS",
   "BFD_RELOC_PPC64_PLTGOT16_DS",
   "BFD_RELOC_PPC64_PLTGOT16_LO_DS",
   "BFD_RELOC_PPC_TLS",
+  "BFD_RELOC_PPC_TLSGD",
+  "BFD_RELOC_PPC_TLSLD",
   "BFD_RELOC_PPC_DTPMOD",
   "BFD_RELOC_PPC_TPREL16",
   "BFD_RELOC_PPC_TPREL16_LO",
   "BFD_RELOC_PPC_DTPMOD",
   "BFD_RELOC_PPC_TPREL16",
   "BFD_RELOC_PPC_TPREL16_LO",
@@ -1280,6 +1324,7 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_ARM_LDC_SB_G0",
   "BFD_RELOC_ARM_LDC_SB_G1",
   "BFD_RELOC_ARM_LDC_SB_G2",
   "BFD_RELOC_ARM_LDC_SB_G0",
   "BFD_RELOC_ARM_LDC_SB_G1",
   "BFD_RELOC_ARM_LDC_SB_G2",
+  "BFD_RELOC_ARM_V4BX",
   "BFD_RELOC_ARM_IMMEDIATE",
   "BFD_RELOC_ARM_ADRL_IMMEDIATE",
   "BFD_RELOC_ARM_T32_IMMEDIATE",
   "BFD_RELOC_ARM_IMMEDIATE",
   "BFD_RELOC_ARM_ADRL_IMMEDIATE",
   "BFD_RELOC_ARM_T32_IMMEDIATE",
@@ -1651,13 +1696,15 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_390_GOT20",
   "BFD_RELOC_390_GOTPLT20",
   "BFD_RELOC_390_TLS_GOTIE20",
   "BFD_RELOC_390_GOT20",
   "BFD_RELOC_390_GOTPLT20",
   "BFD_RELOC_390_TLS_GOTIE20",
-  "BFD_RELOC_SCORE_DUMMY1",
   "BFD_RELOC_SCORE_GPREL15",
   "BFD_RELOC_SCORE_DUMMY2",
   "BFD_RELOC_SCORE_JMP",
   "BFD_RELOC_SCORE_BRANCH",
   "BFD_RELOC_SCORE_GPREL15",
   "BFD_RELOC_SCORE_DUMMY2",
   "BFD_RELOC_SCORE_JMP",
   "BFD_RELOC_SCORE_BRANCH",
+  "BFD_RELOC_SCORE_IMM30",
+  "BFD_RELOC_SCORE_IMM32",
   "BFD_RELOC_SCORE16_JMP",
   "BFD_RELOC_SCORE16_BRANCH",
   "BFD_RELOC_SCORE16_JMP",
   "BFD_RELOC_SCORE16_BRANCH",
+  "BFD_RELOC_SCORE_BCMP",
   "BFD_RELOC_SCORE_GOT15",
   "BFD_RELOC_SCORE_GOT_LO16",
   "BFD_RELOC_SCORE_CALL15",
   "BFD_RELOC_SCORE_GOT15",
   "BFD_RELOC_SCORE_GOT_LO16",
   "BFD_RELOC_SCORE_CALL15",
@@ -1833,6 +1880,12 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_CR16_DISP20",
   "BFD_RELOC_CR16_DISP24",
   "BFD_RELOC_CR16_DISP24a",
   "BFD_RELOC_CR16_DISP20",
   "BFD_RELOC_CR16_DISP24",
   "BFD_RELOC_CR16_DISP24a",
+  "BFD_RELOC_CR16_SWITCH8",
+  "BFD_RELOC_CR16_SWITCH16",
+  "BFD_RELOC_CR16_SWITCH32",
+  "BFD_RELOC_CR16_GOT_REGREL20",
+  "BFD_RELOC_CR16_GOTC_REGREL20",
+  "BFD_RELOC_CR16_GLOB_DAT",
   "BFD_RELOC_CRX_REL4",
   "BFD_RELOC_CRX_REL8",
   "BFD_RELOC_CRX_REL8_CMP",
   "BFD_RELOC_CRX_REL4",
   "BFD_RELOC_CRX_REL8",
   "BFD_RELOC_CRX_REL8_CMP",
@@ -1874,6 +1927,18 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_CRIS_32_GOTREL",
   "BFD_RELOC_CRIS_32_PLT_GOTREL",
   "BFD_RELOC_CRIS_32_PLT_PCREL",
   "BFD_RELOC_CRIS_32_GOTREL",
   "BFD_RELOC_CRIS_32_PLT_GOTREL",
   "BFD_RELOC_CRIS_32_PLT_PCREL",
+  "BFD_RELOC_CRIS_32_GOT_GD",
+  "BFD_RELOC_CRIS_16_GOT_GD",
+  "BFD_RELOC_CRIS_32_GD",
+  "BFD_RELOC_CRIS_DTP",
+  "BFD_RELOC_CRIS_32_DTPREL",
+  "BFD_RELOC_CRIS_16_DTPREL",
+  "BFD_RELOC_CRIS_32_GOT_TPREL",
+  "BFD_RELOC_CRIS_16_GOT_TPREL",
+  "BFD_RELOC_CRIS_32_TPREL",
+  "BFD_RELOC_CRIS_16_TPREL",
+  "BFD_RELOC_CRIS_DTPMOD",
+  "BFD_RELOC_CRIS_32_IE",
   "BFD_RELOC_860_COPY",
   "BFD_RELOC_860_GLOB_DAT",
   "BFD_RELOC_860_JUMP_SLOT",
   "BFD_RELOC_860_COPY",
   "BFD_RELOC_860_GLOB_DAT",
   "BFD_RELOC_860_JUMP_SLOT",
@@ -1985,10 +2050,40 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_XTENSA_OP2",
   "BFD_RELOC_XTENSA_ASM_EXPAND",
   "BFD_RELOC_XTENSA_ASM_SIMPLIFY",
   "BFD_RELOC_XTENSA_OP2",
   "BFD_RELOC_XTENSA_ASM_EXPAND",
   "BFD_RELOC_XTENSA_ASM_SIMPLIFY",
+  "BFD_RELOC_XTENSA_TLSDESC_FN",
+  "BFD_RELOC_XTENSA_TLSDESC_ARG",
+  "BFD_RELOC_XTENSA_TLS_DTPOFF",
+  "BFD_RELOC_XTENSA_TLS_TPOFF",
+  "BFD_RELOC_XTENSA_TLS_FUNC",
+  "BFD_RELOC_XTENSA_TLS_ARG",
+  "BFD_RELOC_XTENSA_TLS_CALL",
   "BFD_RELOC_Z80_DISP8",
   "BFD_RELOC_Z8K_DISP7",
   "BFD_RELOC_Z8K_CALLR",
   "BFD_RELOC_Z8K_IMM4L",
   "BFD_RELOC_Z80_DISP8",
   "BFD_RELOC_Z8K_DISP7",
   "BFD_RELOC_Z8K_CALLR",
   "BFD_RELOC_Z8K_IMM4L",
+  "BFD_RELOC_LM32_CALL",
+  "BFD_RELOC_LM32_BRANCH",
+  "BFD_RELOC_LM32_16_GOT",
+  "BFD_RELOC_LM32_GOTOFF_HI16",
+  "BFD_RELOC_LM32_GOTOFF_LO16",
+  "BFD_RELOC_LM32_COPY",
+  "BFD_RELOC_LM32_GLOB_DAT",
+  "BFD_RELOC_LM32_JMP_SLOT",
+  "BFD_RELOC_LM32_RELATIVE",
+  "BFD_RELOC_MACH_O_SECTDIFF",
+  "BFD_RELOC_MACH_O_PAIR",
+  "BFD_RELOC_MICROBLAZE_32_LO",
+  "BFD_RELOC_MICROBLAZE_32_LO_PCREL",
+  "BFD_RELOC_MICROBLAZE_32_ROSDA",
+  "BFD_RELOC_MICROBLAZE_32_RWSDA",
+  "BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM",
+  "BFD_RELOC_MICROBLAZE_64_NONE",
+  "BFD_RELOC_MICROBLAZE_64_GOTPC",
+  "BFD_RELOC_MICROBLAZE_64_GOT",
+  "BFD_RELOC_MICROBLAZE_64_PLT",
+  "BFD_RELOC_MICROBLAZE_64_GOTOFF",
+  "BFD_RELOC_MICROBLAZE_32_GOTOFF",
+  "BFD_RELOC_MICROBLAZE_COPY",
  "@@overflow: BFD_RELOC_UNUSED@@",
 };
 #endif
  "@@overflow: BFD_RELOC_UNUSED@@",
 };
 #endif
@@ -2028,5 +2123,3 @@ bfd_boolean bfd_default_scan
    (const struct bfd_arch_info *info, const char *string);
 
 /* Extracted from elf.c.  */
    (const struct bfd_arch_info *info, const char *string);
 
 /* Extracted from elf.c.  */
-struct elf_internal_shdr *bfd_elf_find_section (bfd *abfd, char *name);
-