Thu Nov 19 16:02:46 1998 Dave Brolley <brolley@cygnus.com>
[deliverable/binutils-gdb.git] / bfd / libbfd.h
index d62d9804bfd76c90ddf630e4c57727731d9cc6c6..637d13050f3470b490ad1d2943e7fbfeae49142b 100644 (file)
@@ -1,6 +1,6 @@
 /* libbfd.h -- Declarations used by bfd library *implementation*.
    (This include file is not for users of the library.)
-   Copyright 1990, 91, 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
+   Copyright 1990, 91, 92, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
 ** NOTE: libbfd.h is a GENERATED file.  Don't change it; instead,
@@ -24,9 +24,13 @@ along with this program; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 /* Align an address upward to a boundary, expressed as a number of bytes.
-   E.g. align to an 8-byte boundary with argument of 8.  */
-#define BFD_ALIGN(this, boundary) \
-  ((( (this) + ((boundary) -1)) & (~((boundary)-1))))
+   E.g. align to an 8-byte boundary with argument of 8.  Take care never
+   to wrap around if the address is within boundary-1 of the end of the
+   address space.  */
+#define BFD_ALIGN(this, boundary)                                      \
+  ((((bfd_vma) (this) + (boundary) - 1) >= (bfd_vma) (this))           \
+   ? (((bfd_vma) (this) + ((boundary) - 1)) & (~((boundary)-1)))       \
+   : ~ (bfd_vma) 0)
 
 /* If you want to read and write large blocks, you might want to do it
    in quanta of this amount */
@@ -87,15 +91,11 @@ extern PTR bfd_zmalloc PARAMS ((size_t));
 
 extern bfd_error_handler_type _bfd_error_handler;
 
-/* These routines allocate and free things on the BFD's obstack.  */
+/* These routines allocate and free things on the BFD's objalloc.  */
 
-PTR    bfd_alloc PARAMS ((bfd *abfd, size_t size));
-PTR    bfd_zalloc PARAMS ((bfd *abfd, size_t size));
-void   bfd_alloc_grow PARAMS ((bfd *abfd, PTR thing, size_t size));
-PTR    bfd_alloc_finish PARAMS ((bfd *abfd));
-PTR    bfd_alloc_by_size_t PARAMS ((bfd *abfd, size_t wanted));
-
-#define        bfd_release(x,y) (void) obstack_free(&(x->memory),y)
+extern PTR bfd_alloc PARAMS ((bfd *, size_t));
+extern PTR bfd_zalloc PARAMS ((bfd *, size_t));
+extern void bfd_release PARAMS ((bfd *, PTR));
 
 bfd *  _bfd_create_empty_archive_element_shell PARAMS ((bfd *obfd));
 bfd *  _bfd_look_for_bfd_in_cache PARAMS ((bfd *arch_bfd, file_ptr index));
@@ -259,8 +259,8 @@ extern boolean _bfd_archive_coff_construct_extended_name_table
   ((void (*) PARAMS ((bfd *, PTR, asymbol *, bfd_print_symbol_type))) bfd_void)
 #define _bfd_nosymbols_get_symbol_info \
   ((void (*) PARAMS ((bfd *, asymbol *, symbol_info *))) bfd_void)
-#define _bfd_nosymbols_bfd_is_local_label \
-  ((boolean (*) PARAMS ((bfd *, asymbol *))) bfd_false)
+#define _bfd_nosymbols_bfd_is_local_label_name \
+  ((boolean (*) PARAMS ((bfd *, const char *))) bfd_false)
 #define _bfd_nosymbols_get_lineno \
   ((alent *(*) PARAMS ((bfd *, asymbol *))) bfd_nullvoidptr)
 #define _bfd_nosymbols_find_nearest_line \
@@ -317,6 +317,10 @@ extern boolean _bfd_generic_set_section_contents
   ((boolean (*) \
     PARAMS ((bfd *, asection *, struct bfd_link_info *, boolean *))) \
    bfd_false)
+#define _bfd_nolink_bfd_gc_sections \
+  ((boolean (*) \
+    PARAMS ((bfd *, struct bfd_link_info *))) \
+   bfd_false)
 #define _bfd_nolink_bfd_link_hash_table_create \
   ((struct bfd_link_hash_table *(*) PARAMS ((bfd *))) bfd_nullvoidptr)
 #define _bfd_nolink_bfd_link_add_symbols \
@@ -339,7 +343,7 @@ extern boolean _bfd_generic_set_section_contents
 \f
 /* Generic routine to determine of the given symbol is a local
    label.  */
-extern boolean bfd_generic_is_local_label PARAMS ((bfd *, asymbol *));
+extern boolean bfd_generic_is_local_label_name PARAMS ((bfd *, const char *));
 
 /* Generic minisymbol routines.  */
 extern long _bfd_generic_read_minisymbols
@@ -352,6 +356,16 @@ extern boolean _bfd_stab_section_find_nearest_line
   PARAMS ((bfd *, asymbol **, asection *, bfd_vma, boolean *, const char **,
           const char **, unsigned int *, PTR *));
 
+/* Find the neaderst line using DWARF 1 debugging information.  */
+extern boolean _bfd_dwarf1_find_nearest_line
+  PARAMS ((bfd *, asection *, asymbol **, bfd_vma, const char **,
+          const char **, unsigned int *));
+
+/* Find the nearest line using DWARF 2 debugging information.  */
+extern boolean _bfd_dwarf2_find_nearest_line
+  PARAMS ((bfd *, asection *, asymbol **, bfd_vma, const char **,
+          const char **, unsigned int *));
+
 /* A routine to create entries for a bfd_link_hash_table.  */
 extern struct bfd_hash_entry *_bfd_link_hash_newfunc
   PARAMS ((struct bfd_hash_entry *entry,
@@ -433,12 +447,18 @@ extern boolean _bfd_link_section_stabs
 /* Write out the .stab section when linking stabs in sections.  */
 
 extern boolean _bfd_write_section_stabs
-  PARAMS ((bfd *, asection *, PTR *, bfd_byte *));
+  PARAMS ((bfd *, PTR *, asection *, PTR *, bfd_byte *));
 
 /* Write out the .stabstr string table when linking stabs in sections.  */
 
 extern boolean _bfd_write_stab_strings PARAMS ((bfd *, PTR *));
 
+/* Find an offset within a .stab section when linking stabs in
+   sections.  */
+
+extern bfd_vma _bfd_stab_section_offset
+  PARAMS ((bfd *, PTR *, asection *, PTR *, bfd_vma));
+
 /* Create a string table.  */
 extern struct bfd_strtab_hash *_bfd_stringtab_init PARAMS ((void));
 
@@ -486,7 +506,7 @@ extern bfd *bfd_last_cache;
 /* List of supported target vectors, and the default vector (if
    bfd_default_vector[0] is NULL, there is no default).  */
 extern const bfd_target * const bfd_target_vector[];
-extern const bfd_target * const bfd_default_vector[];
+extern const bfd_target *bfd_default_vector[];
 
 /* Functions shared by the ECOFF and MIPS ELF backends, which have no
    other common header files.  */
@@ -506,6 +526,14 @@ extern boolean _bfd_ecoff_get_accumulated_ss PARAMS ((PTR, bfd_byte *));
 extern bfd_vma _bfd_get_gp_value PARAMS ((bfd *));
 extern void _bfd_set_gp_value PARAMS ((bfd *, bfd_vma));
 
+/* Function shared by the COFF and ELF SH backends, which have no
+   other common header files.  */
+
+extern boolean _bfd_sh_align_load_span
+  PARAMS ((bfd *, asection *, bfd_byte *,
+          boolean (*) (bfd *, asection *, PTR, bfd_byte *, bfd_vma),
+          PTR, bfd_vma **, bfd_vma *, bfd_vma, bfd_vma, boolean *));
+
 /* And more follows */
 
 void 
@@ -540,6 +568,7 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_64",
   "BFD_RELOC_32",
   "BFD_RELOC_26",
+  "BFD_RELOC_24",
   "BFD_RELOC_16",
   "BFD_RELOC_14",
   "BFD_RELOC_8",
@@ -586,8 +615,6 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_LO10",
   "BFD_RELOC_GPREL16",
   "BFD_RELOC_GPREL32",
-  "BFD_RELOC_SWREL32",
-  "BFD_RELOC_SWREL64",
   "BFD_RELOC_I960_CALLJ",
   "BFD_RELOC_NONE",
   "BFD_RELOC_SPARC_WDISP22",
@@ -617,19 +644,29 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_SPARC_PC_LM22",
   "BFD_RELOC_SPARC_WDISP16",
   "BFD_RELOC_SPARC_WDISP19",
-  "BFD_RELOC_SPARC_GLOB_JMP",
   "BFD_RELOC_SPARC_7",
   "BFD_RELOC_SPARC_6",
   "BFD_RELOC_SPARC_5",
+  "BFD_RELOC_SPARC_PLT64",
+  "BFD_RELOC_SPARC_HIX22",
+  "BFD_RELOC_SPARC_LOX10",
+  "BFD_RELOC_SPARC_H44",
+  "BFD_RELOC_SPARC_M44",
+  "BFD_RELOC_SPARC_L44",
+  "BFD_RELOC_SPARC_REGISTER",
+  "BFD_RELOC_SPARC_REV32",
   "BFD_RELOC_ALPHA_GPDISP_HI16",
   "BFD_RELOC_ALPHA_GPDISP_LO16",
   "BFD_RELOC_ALPHA_GPDISP",
   "BFD_RELOC_ALPHA_LITERAL",
+  "BFD_RELOC_ALPHA_ELF_LITERAL",
   "BFD_RELOC_ALPHA_LITUSE",
   "BFD_RELOC_ALPHA_HINT",
   "BFD_RELOC_ALPHA_LINKAGE",
-  "BFD_RELOC_ALPHA_BASEREG",
+  "BFD_RELOC_ALPHA_CODEADDR",
   "BFD_RELOC_MIPS_JMP",
+  "BFD_RELOC_MIPS16_JMP",
+  "BFD_RELOC_MIPS16_GPREL",
   "BFD_RELOC_HI16",
   "BFD_RELOC_HI16_S",
   "BFD_RELOC_LO16",
@@ -642,6 +679,16 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_MIPS_GOT_LO16",
   "BFD_RELOC_MIPS_CALL_HI16",
   "BFD_RELOC_MIPS_CALL_LO16",
+/* start-sanitize-r5900 */
+  "BFD_RELOC_MIPS15_S3",
+/* end-sanitize-r5900 */
+/* start-sanitize-sky */
+  "BFD_RELOC_MIPS_DVP_11_PCREL",
+  "BFD_RELOC_MIPS_DVP_27_S4",
+  "BFD_RELOC_MIPS_DVP_11_S4",
+  "BFD_RELOC_MIPS_DVP_U15_S3",
+/* end-sanitize-sky */
+
   "BFD_RELOC_386_GOT32",
   "BFD_RELOC_386_PLT32",
   "BFD_RELOC_386_COPY",
@@ -704,18 +751,82 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_ARM_LDR_IMM",
   "BFD_RELOC_ARM_LITERAL",
   "BFD_RELOC_ARM_IN_POOL",
-/* start-sanitize-arc */
+  "BFD_RELOC_ARM_OFFSET_IMM8",
+  "BFD_RELOC_ARM_HWLITERAL",
+  "BFD_RELOC_ARM_THUMB_ADD",
+  "BFD_RELOC_ARM_THUMB_IMM",
+  "BFD_RELOC_ARM_THUMB_SHIFT",
+  "BFD_RELOC_ARM_THUMB_OFFSET",
+  "BFD_RELOC_SH_PCDISP8BY2",
+  "BFD_RELOC_SH_PCDISP12BY2",
+  "BFD_RELOC_SH_IMM4",
+  "BFD_RELOC_SH_IMM4BY2",
+  "BFD_RELOC_SH_IMM4BY4",
+  "BFD_RELOC_SH_IMM8",
+  "BFD_RELOC_SH_IMM8BY2",
+  "BFD_RELOC_SH_IMM8BY4",
+  "BFD_RELOC_SH_PCRELIMM8BY2",
+  "BFD_RELOC_SH_PCRELIMM8BY4",
+  "BFD_RELOC_SH_SWITCH16",
+  "BFD_RELOC_SH_SWITCH32",
+  "BFD_RELOC_SH_USES",
+  "BFD_RELOC_SH_COUNT",
+  "BFD_RELOC_SH_ALIGN",
+  "BFD_RELOC_SH_CODE",
+  "BFD_RELOC_SH_DATA",
+  "BFD_RELOC_SH_LABEL",
+  "BFD_RELOC_THUMB_PCREL_BRANCH9",
+  "BFD_RELOC_THUMB_PCREL_BRANCH12",
+  "BFD_RELOC_THUMB_PCREL_BRANCH23",
   "BFD_RELOC_ARC_B22_PCREL",
   "BFD_RELOC_ARC_B26",
-/* end-sanitize-arc */
-
-/* start-sanitize-d10v */
-  "BFD_RELOC_D10V_10_PCREL_L",
   "BFD_RELOC_D10V_10_PCREL_R",
+  "BFD_RELOC_D10V_10_PCREL_L",
   "BFD_RELOC_D10V_18",
   "BFD_RELOC_D10V_18_PCREL",
-/* end-sanitize-d10v */
-
+  "BFD_RELOC_D30V_6",
+  "BFD_RELOC_D30V_9_PCREL",
+  "BFD_RELOC_D30V_9_PCREL_R",
+  "BFD_RELOC_D30V_15",
+  "BFD_RELOC_D30V_15_PCREL",
+  "BFD_RELOC_D30V_15_PCREL_R",
+  "BFD_RELOC_D30V_21",
+  "BFD_RELOC_D30V_21_PCREL",
+  "BFD_RELOC_D30V_21_PCREL_R",
+  "BFD_RELOC_D30V_32",
+  "BFD_RELOC_D30V_32_PCREL",
+  "BFD_RELOC_M32R_24",
+  "BFD_RELOC_M32R_10_PCREL",
+  "BFD_RELOC_M32R_18_PCREL",
+  "BFD_RELOC_M32R_26_PCREL",
+  "BFD_RELOC_M32R_HI16_ULO",
+  "BFD_RELOC_M32R_HI16_SLO",
+  "BFD_RELOC_M32R_LO16",
+  "BFD_RELOC_M32R_SDA16",
+  "BFD_RELOC_V850_9_PCREL",
+  "BFD_RELOC_V850_22_PCREL",
+  "BFD_RELOC_V850_SDA_16_16_OFFSET",
+  "BFD_RELOC_V850_SDA_15_16_OFFSET",
+  "BFD_RELOC_V850_ZDA_16_16_OFFSET",
+  "BFD_RELOC_V850_ZDA_15_16_OFFSET",
+  "BFD_RELOC_V850_TDA_6_8_OFFSET",
+  "BFD_RELOC_V850_TDA_7_8_OFFSET",
+  "BFD_RELOC_V850_TDA_7_7_OFFSET",
+  "BFD_RELOC_V850_TDA_16_16_OFFSET",
+/* start-sanitize-v850e */
+  "BFD_RELOC_V850_TDA_4_5_OFFSET",
+  "BFD_RELOC_V850_TDA_4_4_OFFSET",
+  "BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET",
+  "BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET",
+  "BFD_RELOC_V850_CALLT_6_7_OFFSET",
+  "BFD_RELOC_V850_CALLT_16_16_OFFSET",
+/* end-sanitize-v850e */
+
+  "BFD_RELOC_MN10300_32_PCREL",
+  "BFD_RELOC_MN10300_16_PCREL",
+  "BFD_RELOC_TIC30_LDP",
+  "BFD_RELOC_VTABLE_INHERIT",
+  "BFD_RELOC_VTABLE_ENTRY",
  "@@overflow: BFD_RELOC_UNUSED@@",
 };
 #endif
@@ -731,6 +842,10 @@ bfd_generic_relax_section
     struct bfd_link_info *,
     boolean *));
 
+boolean 
+bfd_generic_gc_sections
+ PARAMS ((bfd *, struct bfd_link_info *));
+
 bfd_byte *
 
 bfd_generic_get_relocated_section_contents  PARAMS ((bfd *abfd,
This page took 0.02681 seconds and 4 git commands to generate.