2002-09-27 David Carlton <carlton@math.stanford.edu>
[deliverable/binutils-gdb.git] / bfd / libbfd-in.h
index 79a176d063c473c4eca8f65fbc7e082980f06525..776dcd62f910ce620da3e11c5504c001a1178446 100644 (file)
@@ -1,13 +1,10 @@
 /* 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, 96, 97, 98, 1999
+   Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+   2000, 2001, 2002
    Free Software Foundation, Inc.
    Written by Cygnus Support.
 
-** NOTE: libbfd.h is a GENERATED file.  Don't change it; instead,
-** change libbfd-in.h or the other BFD source files processed to
-** generate this file.
-
 This file is part of BFD, the Binary File Descriptor library.
 
 This program is free software; you can redistribute it and/or modify
@@ -28,9 +25,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
    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)))       \
+#define BFD_ALIGN(this, boundary)                                        \
+  ((((bfd_vma) (this) + (boundary) - 1) >= (bfd_vma) (this))             \
+   ? (((bfd_vma) (this) + ((boundary) - 1)) & ~ (bfd_vma) ((boundary)-1)) \
    : ~ (bfd_vma) 0)
 
 /* If you want to read and write large blocks, you might want to do it
@@ -59,9 +56,9 @@ struct artdata {
   file_ptr first_file_filepos;
   /* Speed up searching the armap */
   struct ar_cache *cache;
-  bfd *archive_head;            /* Only interesting in output routines */
+  bfd *archive_head;           /* Only interesting in output routines */
   carsym *symdefs;             /* the symdef entries */
-  symindex symdef_count;             /* how many there are */
+  symindex symdef_count;       /* how many there are */
   char *extended_names;                /* clever intel extension */
   /* when more compilers are standard C, this can be a time_t */
   long  armap_timestamp;       /* Timestamp value written into armap.
@@ -79,27 +76,27 @@ struct artdata {
 
 /* 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 */
-  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 */
 };
 
 #define arelt_size(bfd) (((struct areltdata *)((bfd)->arelt_data))->parsed_size)
 
-extern PTR bfd_malloc PARAMS ((size_t));
-extern PTR bfd_realloc PARAMS ((PTR, size_t));
-extern PTR bfd_zmalloc PARAMS ((size_t));
+extern PTR bfd_malloc PARAMS ((bfd_size_type));
+extern PTR bfd_realloc PARAMS ((PTR, bfd_size_type));
+extern PTR bfd_zmalloc PARAMS ((bfd_size_type));
 
 extern bfd_error_handler_type _bfd_error_handler;
 
 /* These routines allocate and free things on the BFD's objalloc.  */
 
-extern PTR bfd_alloc PARAMS ((bfd *, size_t));
-extern PTR bfd_zalloc PARAMS ((bfd *, size_t));
+extern PTR bfd_alloc PARAMS ((bfd *, bfd_size_type));
+extern PTR bfd_zalloc PARAMS ((bfd *, bfd_size_type));
 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));
+bfd *  _bfd_look_for_bfd_in_cache PARAMS ((bfd *, file_ptr));
 boolean _bfd_add_bfd_to_archive_cache PARAMS ((bfd *, file_ptr, bfd *));
 boolean        _bfd_generic_mkarchive PARAMS ((bfd *abfd));
 const bfd_target *bfd_generic_archive_p PARAMS ((bfd *abfd));
@@ -115,6 +112,7 @@ boolean _bfd_compute_and_write_armap PARAMS ((bfd *, unsigned int elength));
 bfd *_bfd_get_elt_at_filepos PARAMS ((bfd *archive, file_ptr filepos));
 extern bfd *_bfd_generic_get_elt_at_index PARAMS ((bfd *, symindex));
 bfd * _bfd_new_bfd PARAMS ((void));
+void _bfd_delete_bfd PARAMS ((bfd *));
 
 boolean        bfd_false PARAMS ((bfd *ignore));
 boolean        bfd_true PARAMS ((bfd *ignore));
@@ -128,11 +126,11 @@ void      bfd_void PARAMS ((bfd *ignore));
 bfd *_bfd_new_bfd_contained_in PARAMS ((bfd *));
 const bfd_target *_bfd_dummy_target PARAMS ((bfd *abfd));
 
-void   bfd_dont_truncate_arname PARAMS ((bfd *abfd, CONST char *filename,
+void   bfd_dont_truncate_arname PARAMS ((bfd *abfd, const char *filename,
                                        char *hdr));
-void   bfd_bsd_truncate_arname PARAMS ((bfd *abfd, CONST char *filename,
+void   bfd_bsd_truncate_arname PARAMS ((bfd *abfd, const char *filename,
                                        char *hdr));
-void   bfd_gnu_truncate_arname PARAMS ((bfd *abfd, CONST char *filename,
+void   bfd_gnu_truncate_arname PARAMS ((bfd *abfd, const char *filename,
                                        char *hdr));
 
 boolean        bsd_write_armap PARAMS ((bfd *arch, unsigned int elength,
@@ -161,8 +159,7 @@ int bfd_generic_stat_arch_elt PARAMS ((bfd *, struct stat *));
 #define _bfd_generic_new_section_hook \
   ((boolean (*) PARAMS ((bfd *, asection *))) bfd_true)
 extern boolean _bfd_generic_get_section_contents
-  PARAMS ((bfd *, asection *, PTR location, file_ptr offset,
-          bfd_size_type count));
+  PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type));
 extern boolean _bfd_generic_get_section_contents_in_window
   PARAMS ((bfd *, asection *, bfd_window *, file_ptr, bfd_size_type));
 
@@ -254,8 +251,7 @@ extern boolean _bfd_archive_coff_construct_extended_name_table
 #define _bfd_nosymbols_get_symtab_upper_bound _bfd_n1
 #define _bfd_nosymbols_get_symtab \
   ((long (*) PARAMS ((bfd *, asymbol **))) _bfd_n1)
-#define _bfd_nosymbols_make_empty_symbol \
-  ((asymbol *(*) PARAMS ((bfd *))) bfd_nullvoidptr)
+#define _bfd_nosymbols_make_empty_symbol _bfd_generic_make_empty_symbol
 #define _bfd_nosymbols_print_symbol \
   ((void (*) PARAMS ((bfd *, PTR, asymbol *, bfd_print_symbol_type))) bfd_void)
 #define _bfd_nosymbols_get_symbol_info \
@@ -322,10 +318,22 @@ extern boolean _bfd_generic_set_section_contents
   ((boolean (*) \
     PARAMS ((bfd *, struct bfd_link_info *))) \
    bfd_false)
+#define _bfd_nolink_bfd_merge_sections \
+  ((boolean (*) \
+    PARAMS ((bfd *, struct bfd_link_info *))) \
+   bfd_false)
+#define _bfd_nolink_bfd_discard_group \
+  ((boolean (*) \
+    PARAMS ((bfd *, struct sec *))) \
+   bfd_false)
 #define _bfd_nolink_bfd_link_hash_table_create \
   ((struct bfd_link_hash_table *(*) PARAMS ((bfd *))) bfd_nullvoidptr)
+#define _bfd_nolink_bfd_link_hash_table_free \
+  ((void (*) PARAMS ((struct bfd_link_hash_table *))) bfd_void)
 #define _bfd_nolink_bfd_link_add_symbols \
   ((boolean (*) PARAMS ((bfd *, struct bfd_link_info *))) bfd_false)
+#define _bfd_nolink_bfd_link_just_syms \
+  ((void (*) PARAMS ((asection *, struct bfd_link_info *))) bfd_void)
 #define _bfd_nolink_bfd_final_link \
   ((boolean (*) PARAMS ((bfd *, struct bfd_link_info *))) bfd_false)
 #define _bfd_nolink_bfd_link_split_section \
@@ -365,7 +373,12 @@ extern boolean _bfd_dwarf1_find_nearest_line
 /* 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 *, unsigned int));
+          const char **, unsigned int *, unsigned int,
+          PTR *));
+
+/* Create a new section entry.  */
+extern struct bfd_hash_entry *bfd_section_hash_newfunc
+  PARAMS ((struct bfd_hash_entry *, struct bfd_hash_table *, const char *));
 
 /* A routine to create entries for a bfd_link_hash_table.  */
 extern struct bfd_hash_entry *_bfd_link_hash_newfunc
@@ -384,6 +397,10 @@ extern boolean _bfd_link_hash_table_init
 extern struct bfd_link_hash_table *_bfd_generic_link_hash_table_create
   PARAMS ((bfd *));
 
+/* Generic link hash table destruction routine.  */
+extern void _bfd_generic_link_hash_table_free
+  PARAMS ((struct bfd_link_hash_table *));
+
 /* Generic add symbol routine.  */
 extern boolean _bfd_generic_link_add_symbols
   PARAMS ((bfd *, struct bfd_link_info *));
@@ -399,8 +416,6 @@ extern boolean _bfd_generic_link_add_archive_symbols
   PARAMS ((bfd *, struct bfd_link_info *,
           boolean (*checkfn) (bfd *, struct bfd_link_info *, boolean *)));
 
-
-
 /* Forward declaration to avoid prototype errors.  */
 typedef struct bfd_link_hash_entry _bfd_link_hash_entry;
 
@@ -410,6 +425,10 @@ extern boolean _bfd_generic_link_add_one_symbol
           asection *, bfd_vma, const char *, boolean copy,
           boolean constructor, struct bfd_link_hash_entry **));
 
+/* Generic routine to mark section as supplying symbols only.  */
+extern void _bfd_generic_link_just_syms
+  PARAMS ((asection *, struct bfd_link_info *));
+
 /* Generic link routine.  */
 extern boolean _bfd_generic_final_link
   PARAMS ((bfd *, struct bfd_link_info *));
@@ -434,7 +453,7 @@ extern unsigned int _bfd_count_link_order_relocs
 /* Final link relocation routine.  */
 extern bfd_reloc_status_type _bfd_final_link_relocate
   PARAMS ((reloc_howto_type *, bfd *, asection *, bfd_byte *,
-          bfd_vma address, bfd_vma value, bfd_vma addend));
+          bfd_vma, bfd_vma, bfd_vma));
 
 /* Relocate a particular location by a howto and a value.  */
 extern bfd_reloc_status_type _bfd_relocate_contents
@@ -445,6 +464,11 @@ extern bfd_reloc_status_type _bfd_relocate_contents
 extern boolean _bfd_link_section_stabs
   PARAMS ((bfd *, PTR *, asection *, asection *, PTR *));
 
+/* Eliminate stabs for discarded functions and symbols.  */
+extern boolean _bfd_discard_section_stabs
+  PARAMS ((bfd *, asection *, PTR,
+          boolean (*) (bfd_vma, PTR), PTR));
+
 /* Write out the .stab section when linking stabs in sections.  */
 
 extern boolean _bfd_write_section_stabs
@@ -460,6 +484,26 @@ extern boolean _bfd_write_stab_strings PARAMS ((bfd *, PTR *));
 extern bfd_vma _bfd_stab_section_offset
   PARAMS ((bfd *, PTR *, asection *, PTR *, bfd_vma));
 
+/* Attempt to merge a SEC_MERGE section.  */
+
+extern boolean _bfd_merge_section
+  PARAMS ((bfd *, PTR *, asection *, PTR *));
+
+/* Attempt to merge SEC_MERGE sections.  */
+
+extern boolean _bfd_merge_sections
+  PARAMS ((bfd *, PTR, void (*)(bfd *, asection *)));
+
+/* Write out a merged section.  */
+
+extern boolean _bfd_write_merged_section
+  PARAMS ((bfd *, asection *, PTR));
+
+/* Find an offset within a modified SEC_MERGE section.  */
+
+extern bfd_vma _bfd_merged_section_offset
+  PARAMS ((bfd *, asection **, PTR, bfd_vma, bfd_vma));
+
 /* Create a string table.  */
 extern struct bfd_strtab_hash *_bfd_stringtab_init PARAMS ((void));
 
@@ -506,8 +550,8 @@ void        bfd_assert PARAMS ((const char*,int));
 extern void _bfd_abort PARAMS ((const char *, int, const char *))
      ATTRIBUTE_NORETURN;
 
-/* if gcc, we can give a function name, too */
-#if !defined (__GNUC__) || __GNUC_MINOR__ <= 5
+/* if gcc >= 2.6, we can give a function name, too */
+#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 6)
 #define __PRETTY_FUNCTION__  ((char *) NULL)
 #endif
 
@@ -520,7 +564,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_target_vector;
 extern const bfd_target *bfd_default_vector[];
 
 /* Functions shared by the ECOFF and MIPS ELF backends, which have no
@@ -549,5 +593,3 @@ extern boolean _bfd_sh_align_load_span
           boolean (*) (bfd *, asection *, PTR, bfd_byte *, bfd_vma),
           PTR, bfd_vma **, bfd_vma *, bfd_vma, bfd_vma, boolean *));
 
-/* And more follows */
-
This page took 0.02734 seconds and 4 git commands to generate.