* elf-bfd.h (RELOC_AGAINST_DISCARDED_SECTION): Handle compound
[binutils-gdb.git] / bfd / libbfd.h
index a10a651e76da3ffc97b79f91d5442b68d654c8d2..e4acdb0cfa9a4f296384bea734f55fc2ce56ab54 100644 (file)
@@ -8,7 +8,7 @@
 
    Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
    1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-   2010, 2011
+   2010, 2011, 2012
    Free Software Foundation, Inc.
 
    Written by Cygnus Support.
@@ -69,16 +69,17 @@ struct section_hash_entry
 /* tdata for an archive.  For an input archive, cache
    needs to be free()'d.  For an output archive, symdefs do.  */
 
-struct artdata {
+struct artdata
+{
   file_ptr first_file_filepos;
   /* Speed up searching the armap */
   htab_t cache;
-  bfd *archive_head;           /* Only interesting in output routines */
-  carsym *symdefs;             /* the symdef entries */
-  symindex symdef_count;       /* how many there are */
-  char *extended_names;                /* clever intel extension */
-  bfd_size_type extended_names_size; /* Size of extended names */
-  /* when more compilers are standard C, this can be a time_t */
+  bfd *archive_head;           /* Only interesting in output routines */
+  carsym *symdefs;             /* The symdef entries.  */
+  symindex symdef_count;       /* How many there are.  */
+  char *extended_names;                /* Clever intel extension.  */
+  bfd_size_type extended_names_size; /* Size of extended names */
+  /* When more compilers are standard C, this can be a time_t.  */
   long  armap_timestamp;       /* Timestamp value written into armap.
                                   This is used for BSD archives to check
                                   that the timestamp is recent enough
@@ -93,12 +94,13 @@ struct artdata {
 #define bfd_ardata(bfd) ((bfd)->tdata.aout_ar_data)
 
 /* Goes in bfd's arelt_data slot */
-struct areltdata {
-  char * arch_header;          /* it's actually a string */
-  unsigned int parsed_size;    /* octets of filesize not including ar_hdr */
-  unsigned int extra_size;     /* BSD4.4: extra bytes after the header.  */
-  char *filename;              /* null-terminated */
-  file_ptr origin;             /* for element of a thin archive */
+struct areltdata
+{
+  char * arch_header;          /* It's actually a string.  */
+  bfd_size_type parsed_size;   /* Octets of filesize not including ar_hdr.  */
+  bfd_size_type extra_size;    /* BSD4.4: extra bytes after the header.  */
+  char *filename;              /* Null-terminated.  */
+  file_ptr origin;             /* For element of a thin archive.  */
 };
 
 #define arelt_size(bfd) (((struct areltdata *)((bfd)->arelt_data))->parsed_size)
@@ -120,6 +122,7 @@ extern void *bfd_zmalloc2
 
 extern void _bfd_default_error_handler (const char *s, ...);
 extern bfd_error_handler_type _bfd_error_handler;
+extern bfd_assert_handler_type _bfd_assert_handler;
 
 /* These routines allocate and free things on the BFD's objalloc.  */
 
@@ -208,6 +211,8 @@ extern void *_bfd_generic_read_ar_hdr
   (bfd *);
 extern void _bfd_ar_spacepad
   (char *, size_t, const char *, long);
+extern bfd_boolean _bfd_ar_sizepad
+  (char *, size_t, bfd_size_type);
 
 extern void *_bfd_generic_read_ar_hdr_mag
   (bfd *, const char *);
@@ -1010,6 +1015,10 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_SPARC_M44",
   "BFD_RELOC_SPARC_L44",
   "BFD_RELOC_SPARC_REGISTER",
+  "BFD_RELOC_SPARC_H34",
+  "BFD_RELOC_SPARC_SIZE32",
+  "BFD_RELOC_SPARC_SIZE64",
+  "BFD_RELOC_SPARC_WDISP10",
   "BFD_RELOC_SPARC_REV32",
   "BFD_RELOC_SPARC_TLS_GD_HI22",
   "BFD_RELOC_SPARC_TLS_GD_LO10",
@@ -1221,6 +1230,17 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_MN10300_RELATIVE",
   "BFD_RELOC_MN10300_SYM_DIFF",
   "BFD_RELOC_MN10300_ALIGN",
+  "BFD_RELOC_MN10300_TLS_GD",
+  "BFD_RELOC_MN10300_TLS_LD",
+  "BFD_RELOC_MN10300_TLS_LDO",
+  "BFD_RELOC_MN10300_TLS_GOTIE",
+  "BFD_RELOC_MN10300_TLS_IE",
+  "BFD_RELOC_MN10300_TLS_LE",
+  "BFD_RELOC_MN10300_TLS_DTPMOD",
+  "BFD_RELOC_MN10300_TLS_DTPOFF",
+  "BFD_RELOC_MN10300_TLS_TPOFF",
+  "BFD_RELOC_MN10300_32_PCREL",
+  "BFD_RELOC_MN10300_16_PCREL",
 
   "BFD_RELOC_386_GOT32",
   "BFD_RELOC_386_PLT32",
@@ -1729,8 +1749,6 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_V850_32_GOTOFF",
   "BFD_RELOC_V850_CODE",
   "BFD_RELOC_V850_DATA",
-  "BFD_RELOC_MN10300_32_PCREL",
-  "BFD_RELOC_MN10300_16_PCREL",
   "BFD_RELOC_TIC30_LDP",
   "BFD_RELOC_TIC54X_PARTLS7",
   "BFD_RELOC_TIC54X_PARTMS9",
@@ -2075,6 +2093,18 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_M68HC11_PAGE",
   "BFD_RELOC_M68HC11_24",
   "BFD_RELOC_M68HC12_5B",
+  "BFD_RELOC_XGATE_RL_JUMP",
+  "BFD_RELOC_XGATE_RL_GROUP",
+  "BFD_RELOC_XGATE_LO16",
+  "BFD_RELOC_XGATE_GPAGE",
+  "BFD_RELOC_XGATE_24",
+  "BFD_RELOC_XGATE_PCREL_9",
+  "BFD_RELOC_XGATE_PCREL_10",
+  "BFD_RELOC_XGATE_IMM8_LO",
+  "BFD_RELOC_XGATE_IMM8_HI",
+  "BFD_RELOC_XGATE_IMM3",
+  "BFD_RELOC_XGATE_IMM4",
+  "BFD_RELOC_XGATE_IMM5",
   "BFD_RELOC_16C_NUM08",
   "BFD_RELOC_16C_NUM08_C",
   "BFD_RELOC_16C_NUM16",
@@ -2333,6 +2363,7 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_LM32_JMP_SLOT",
   "BFD_RELOC_LM32_RELATIVE",
   "BFD_RELOC_MACH_O_SECTDIFF",
+  "BFD_RELOC_MACH_O_LOCAL_SECTDIFF",
   "BFD_RELOC_MACH_O_PAIR",
   "BFD_RELOC_MACH_O_X86_64_BRANCH32",
   "BFD_RELOC_MACH_O_X86_64_BRANCH8",
@@ -2401,6 +2432,12 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_TILEPRO_SHAMT_X1",
   "BFD_RELOC_TILEPRO_SHAMT_Y0",
   "BFD_RELOC_TILEPRO_SHAMT_Y1",
+  "BFD_RELOC_TILEPRO_TLS_GD_CALL",
+  "BFD_RELOC_TILEPRO_IMM8_X0_TLS_GD_ADD",
+  "BFD_RELOC_TILEPRO_IMM8_X1_TLS_GD_ADD",
+  "BFD_RELOC_TILEPRO_IMM8_Y0_TLS_GD_ADD",
+  "BFD_RELOC_TILEPRO_IMM8_Y1_TLS_GD_ADD",
+  "BFD_RELOC_TILEPRO_TLS_IE_LOAD",
   "BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD",
   "BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD",
   "BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_LO",
@@ -2420,6 +2457,14 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_TILEPRO_TLS_DTPMOD32",
   "BFD_RELOC_TILEPRO_TLS_DTPOFF32",
   "BFD_RELOC_TILEPRO_TLS_TPOFF32",
+  "BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE",
+  "BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE",
+  "BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_LO",
+  "BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_LO",
+  "BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HI",
+  "BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HI",
+  "BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HA",
+  "BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA",
   "BFD_RELOC_TILEGX_HW0",
   "BFD_RELOC_TILEGX_HW1",
   "BFD_RELOC_TILEGX_HW2",
@@ -2477,52 +2522,44 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PCREL",
   "BFD_RELOC_TILEGX_IMM16_X0_HW0_GOT",
   "BFD_RELOC_TILEGX_IMM16_X1_HW0_GOT",
-  "BFD_RELOC_TILEGX_IMM16_X0_HW1_GOT",
-  "BFD_RELOC_TILEGX_IMM16_X1_HW1_GOT",
-  "BFD_RELOC_TILEGX_IMM16_X0_HW2_GOT",
-  "BFD_RELOC_TILEGX_IMM16_X1_HW2_GOT",
-  "BFD_RELOC_TILEGX_IMM16_X0_HW3_GOT",
-  "BFD_RELOC_TILEGX_IMM16_X1_HW3_GOT",
   "BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_GOT",
   "BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_GOT",
   "BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_GOT",
   "BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_GOT",
-  "BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_GOT",
-  "BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_GOT",
   "BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_GD",
   "BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_GD",
-  "BFD_RELOC_TILEGX_IMM16_X0_HW1_TLS_GD",
-  "BFD_RELOC_TILEGX_IMM16_X1_HW1_TLS_GD",
-  "BFD_RELOC_TILEGX_IMM16_X0_HW2_TLS_GD",
-  "BFD_RELOC_TILEGX_IMM16_X1_HW2_TLS_GD",
-  "BFD_RELOC_TILEGX_IMM16_X0_HW3_TLS_GD",
-  "BFD_RELOC_TILEGX_IMM16_X1_HW3_TLS_GD",
+  "BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_LE",
+  "BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_LE",
+  "BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_LE",
+  "BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_LE",
+  "BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_LE",
+  "BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_LE",
   "BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_GD",
   "BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_GD",
   "BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_GD",
   "BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_GD",
-  "BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_TLS_GD",
-  "BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_TLS_GD",
   "BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_IE",
   "BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_IE",
-  "BFD_RELOC_TILEGX_IMM16_X0_HW1_TLS_IE",
-  "BFD_RELOC_TILEGX_IMM16_X1_HW1_TLS_IE",
-  "BFD_RELOC_TILEGX_IMM16_X0_HW2_TLS_IE",
-  "BFD_RELOC_TILEGX_IMM16_X1_HW2_TLS_IE",
-  "BFD_RELOC_TILEGX_IMM16_X0_HW3_TLS_IE",
-  "BFD_RELOC_TILEGX_IMM16_X1_HW3_TLS_IE",
   "BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_IE",
   "BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_IE",
   "BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_IE",
   "BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_IE",
-  "BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_TLS_IE",
-  "BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_TLS_IE",
   "BFD_RELOC_TILEGX_TLS_DTPMOD64",
   "BFD_RELOC_TILEGX_TLS_DTPOFF64",
   "BFD_RELOC_TILEGX_TLS_TPOFF64",
   "BFD_RELOC_TILEGX_TLS_DTPMOD32",
   "BFD_RELOC_TILEGX_TLS_DTPOFF32",
   "BFD_RELOC_TILEGX_TLS_TPOFF32",
+  "BFD_RELOC_TILEGX_TLS_GD_CALL",
+  "BFD_RELOC_TILEGX_IMM8_X0_TLS_GD_ADD",
+  "BFD_RELOC_TILEGX_IMM8_X1_TLS_GD_ADD",
+  "BFD_RELOC_TILEGX_IMM8_Y0_TLS_GD_ADD",
+  "BFD_RELOC_TILEGX_IMM8_Y1_TLS_GD_ADD",
+  "BFD_RELOC_TILEGX_TLS_IE_LOAD",
+  "BFD_RELOC_TILEGX_IMM8_X0_TLS_ADD",
+  "BFD_RELOC_TILEGX_IMM8_X1_TLS_ADD",
+  "BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD",
+  "BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD",
   "BFD_RELOC_EPIPHANY_SIMM8",
   "BFD_RELOC_EPIPHANY_SIMM24",
   "BFD_RELOC_EPIPHANY_HIGH",
@@ -2571,4 +2608,8 @@ const bfd_arch_info_type *bfd_default_compatible
 bfd_boolean bfd_default_scan
    (const struct bfd_arch_info *info, const char *string);
 
+void *bfd_arch_default_fill (bfd_size_type count,
+    bfd_boolean is_bigendian,
+    bfd_boolean code);
+
 /* Extracted from elf.c.  */