2001-03-20 Michael Chastain <chastain@redhat.com>
[deliverable/binutils-gdb.git] / bfd / libbfd-in.h
index cefe9146fe935fd6bd22e386dabb07d75f81daa9..dc2cd1128a061f2a39a973dfd9dbcb8f117dab99 100644 (file)
@@ -1,6 +1,8 @@
 /* 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, 1997 Free Software Foundation, Inc.
+   Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+   2000, 2001
+   Free Software Foundation, Inc.
    Written by Cygnus Support.
 
 ** NOTE: libbfd.h is a GENERATED file.  Don't change it; instead,
@@ -24,9 +26,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 */
@@ -54,9 +60,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.
@@ -74,9 +80,9 @@ 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)
@@ -87,14 +93,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));
-
-#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));
@@ -126,11 +129,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,
@@ -316,6 +319,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 \
@@ -351,6 +358,17 @@ 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 *, unsigned int,
+          PTR *));
+
 /* 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,
@@ -432,12 +450,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));
 
@@ -457,6 +481,9 @@ extern bfd_size_type _bfd_stringtab_add
 
 /* Write out a string table.  */
 extern boolean _bfd_stringtab_emit PARAMS ((bfd *, struct bfd_strtab_hash *));
+
+/* Check that endianness of input and output file match.  */
+extern boolean _bfd_generic_verify_endian_match PARAMS ((bfd *, bfd *));
 \f
 /* Macros to tell if bfds are read or write enabled.
 
@@ -478,13 +505,24 @@ void      bfd_assert PARAMS ((const char*,int));
 #define BFD_FAIL() \
 { bfd_assert(__FILE__,__LINE__); }
 
+extern void _bfd_abort PARAMS ((const char *, int, const char *))
+     ATTRIBUTE_NORETURN;
+
+/* 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
+
+#undef abort
+#define abort() _bfd_abort (__FILE__, __LINE__, __PRETTY_FUNCTION__)
+
 FILE * bfd_cache_lookup_worker PARAMS ((bfd *));
 
 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
This page took 0.026198 seconds and 4 git commands to generate.