doc cleanup
[deliverable/binutils-gdb.git] / bfd / libbfd.h
index c358a9ba7c8701a40a324809ee7ce5ee0eea31ae..4bc87d49bf7e66a5ab22e7577d254c76f3604c94 100644 (file)
@@ -1,7 +1,6 @@
-
 /* libbfd.h -- Declarations used by bfd library *implementation*.
    (This include file is not for users of the library.)
 /* libbfd.h -- Declarations used by bfd library *implementation*.
    (This include file is not for users of the library.)
-   Copyright (C) 1990-1991 Free Software Foundation, Inc.
+   Copyright 1990, 1991, 1992, 1993 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
 This file is part of BFD, the Binary File Descriptor library.
    Written by Cygnus Support.
 
 This file is part of BFD, the Binary File Descriptor library.
@@ -21,13 +20,18 @@ along with this program; if not, write to the Free Software
 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 
 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, 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))))
+
 /* If you want to read and write large blocks, you might want to do it
    in quanta of this amount */
 #define DEFAULT_BUFFERSIZE 8192
 
 /* Set a tdata field.  Can't use the other macros for this, since they
    do casts, and casting to the left of assignment isn't portable.  */
 /* If you want to read and write large blocks, you might want to do it
    in quanta of this amount */
 #define DEFAULT_BUFFERSIZE 8192
 
 /* Set a tdata field.  Can't use the other macros for this, since they
    do casts, and casting to the left of assignment isn't portable.  */
-#define set_tdata(bfd, v) ((bfd)->tdata = (PTR) (v))
+#define set_tdata(bfd, v) ((bfd)->tdata.any = (PTR) (v))
 
 /* tdata for an archive.  For an input archive, cache
    needs to be free()'d.  For an output archive, symdefs do.  */
 
 /* tdata for an archive.  For an input archive, cache
    needs to be free()'d.  For an output archive, symdefs do.  */
@@ -40,9 +44,18 @@ struct artdata {
   carsym *symdefs;             /* the symdef entries */
   symindex symdef_count;             /* how many there are */
   char *extended_names;                /* clever intel extension */
   carsym *symdefs;             /* the symdef entries */
   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.
+                                  This is used for BSD archives to check
+                                  that the timestamp is recent enough
+                                  for the BSD linker to not complain,
+                                  just before we finish writing an
+                                  archive.  */
+  file_ptr armap_datepos;      /* Position within archive to seek to
+                                  rewrite the date field.  */
 };
 
 };
 
-#define bfd_ardata(bfd) ((struct artdata *) ((bfd)->tdata))
+#define bfd_ardata(bfd) ((bfd)->tdata.aout_ar_data)
 
 /* Goes in bfd's arelt_data slot */
 struct areltdata {
 
 /* Goes in bfd's arelt_data slot */
 struct areltdata {
@@ -53,94 +66,90 @@ struct areltdata {
 
 #define arelt_size(bfd) (((struct areltdata *)((bfd)->arelt_data))->parsed_size)
 
 
 #define arelt_size(bfd) (((struct areltdata *)((bfd)->arelt_data))->parsed_size)
 
-/* FIXME -- a lot of my code allocates a large block and subdivides it.
-   This can't always work, because of alignment restrictions.  We should change
-   it before it becomes a problem -- Gumby */
-
-PROTO (char *, zalloc, (bfd_size_type size));
+char *zalloc PARAMS ((bfd_size_type size));
 
 /* These routines allocate and free things on the BFD's obstack.  Note
    that realloc can never occur in place.  */
 
 
 /* These routines allocate and free things on the BFD's obstack.  Note
    that realloc can never occur in place.  */
 
-PROTO(PTR, bfd_alloc, (bfd *abfd, bfd_size_type size));
-PROTO(PTR, bfd_zalloc,(bfd *abfd, bfd_size_type size));
-PROTO(PTR, bfd_realloc,(bfd *abfd, PTR orig, bfd_size_type new));
-PROTO(void, bfd_alloc_grow,(bfd *abfd, PTR thing, bfd_size_type size));
-PROTO(PTR, bfd_alloc_finish,(bfd *abfd));
-
-#define bfd_release(x,y) (void) obstack_free(&(x->memory),y)
-
-
-PROTO (bfd_size_type, bfd_read, (PTR ptr, bfd_size_type size, bfd_size_type nitems, bfd *abfd));
-PROTO (bfd_size_type, bfd_write, (CONST PTR ptr, bfd_size_type size, bfd_size_type nitems, bfd *abfd));
-
-
-
-PROTO (int, bfd_seek,(bfd* abfd, file_ptr fp , int direction));
-PROTO (long, bfd_tell, (bfd *abfd));
-PROTO (bfd *, _bfd_create_empty_archive_element_shell, (bfd *obfd));
-PROTO (bfd *, look_for_bfd_in_cache, (bfd *arch_bfd, file_ptr index));
-PROTO (boolean, _bfd_generic_mkarchive, (bfd *abfd));
-PROTO (struct areltdata *, snarf_ar_hdr, (bfd *abfd));
-PROTO (bfd_target *, bfd_generic_archive_p, (bfd *abfd));
-PROTO (boolean, bfd_slurp_bsd_armap, (bfd *abfd));
-PROTO (boolean, bfd_slurp_coff_armap, (bfd *abfd));
-PROTO (boolean, _bfd_slurp_extended_name_table, (bfd *abfd));
-PROTO (boolean, _bfd_write_archive_contents, (bfd *abfd));
-PROTO (bfd *, new_bfd, ());
+PTR    bfd_alloc PARAMS ((bfd *abfd, size_t size));
+PTR    bfd_zalloc PARAMS ((bfd *abfd, size_t size));
+PTR    bfd_realloc PARAMS ((bfd *abfd, PTR orig, size_t new));
+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)
+
+
+bfd_size_type  bfd_read  PARAMS ((PTR ptr, bfd_size_type size,
+                                  bfd_size_type nitems, bfd *abfd));
+bfd_size_type  bfd_write PARAMS ((CONST PTR ptr, bfd_size_type size,
+                                  bfd_size_type nitems, bfd *abfd));
+int            bfd_seek  PARAMS ((bfd* CONST abfd, CONST file_ptr fp,
+                                  CONST int direction));
+long           bfd_tell  PARAMS ((bfd *abfd));
+
+int            bfd_flush PARAMS ((bfd *abfd));
+int            bfd_stat  PARAMS ((bfd *abfd, struct stat *));
+
+bfd *  _bfd_create_empty_archive_element_shell PARAMS ((bfd *obfd));
+bfd *  look_for_bfd_in_cache PARAMS ((bfd *arch_bfd, file_ptr index));
+boolean        _bfd_generic_mkarchive PARAMS ((bfd *abfd));
+struct areltdata *     snarf_ar_hdr PARAMS ((bfd *abfd));
+bfd_target *           bfd_generic_archive_p PARAMS ((bfd *abfd));
+boolean        bfd_slurp_armap PARAMS ((bfd *abfd));
+boolean bfd_slurp_bsd_armap_f2 PARAMS ((bfd *abfd));
+#define bfd_slurp_bsd_armap bfd_slurp_armap
+#define bfd_slurp_coff_armap bfd_slurp_armap
+boolean        _bfd_slurp_extended_name_table PARAMS ((bfd *abfd));
+boolean        _bfd_write_archive_contents PARAMS ((bfd *abfd));
+bfd *  new_bfd PARAMS (());
 
 #define DEFAULT_STRING_SPACE_SIZE 0x2000
 
 #define DEFAULT_STRING_SPACE_SIZE 0x2000
-PROTO (boolean, bfd_add_to_string_table, (char **table, char *new_string,
-                                         unsigned int *table_length,
-                                         char **free_ptr));
-PROTO (bfd_vma, _do_getb64, (unsigned char *addr));     
-PROTO (bfd_vma, _do_getl64, (unsigned char *addr));     
-PROTO (bfd_vma, _do_getb32, (unsigned char *addr));
-PROTO (bfd_vma, _do_getl32, (unsigned char *addr));
-PROTO (bfd_vma, _do_getb16, (unsigned char *addr));
-PROTO (bfd_vma, _do_getl16, (unsigned char *addr));
-PROTO (void, _do_putb64, (bfd_vma data, unsigned char *addr));
-PROTO (void, _do_putl64, (bfd_vma data, unsigned char *addr));
-PROTO (void, _do_putb32, (bfd_vma data, unsigned char *addr));
-PROTO (void, _do_putl32, (bfd_vma data, unsigned char *addr));
-PROTO (void, _do_putb16, (bfd_vma data, unsigned char *addr));
-PROTO (void, _do_putl16, (bfd_vma data, unsigned char *addr));
-
-PROTO (boolean, bfd_false, (bfd *ignore));
-PROTO (boolean, bfd_true, (bfd *ignore));
-PROTO (PTR, bfd_nullvoidptr, (bfd *ignore));
-PROTO (int, bfd_0, (bfd *ignore));
-PROTO (unsigned int, bfd_0u, (bfd *ignore));
-PROTO (void, bfd_void, (bfd *ignore));
-
-PROTO (bfd *,new_bfd_contained_in,(bfd *));
-PROTO (boolean, _bfd_dummy_new_section_hook, (bfd *ignore, asection *newsect));
-PROTO (char *, _bfd_dummy_core_file_failing_command, (bfd *abfd));
-PROTO (int, _bfd_dummy_core_file_failing_signal, (bfd *abfd));
-PROTO (boolean, _bfd_dummy_core_file_matches_executable_p, (bfd *core_bfd,
+boolean        bfd_add_to_string_table PARAMS ((char **table, char *new_string,
+                                        unsigned int *table_length,
+                                        char **free_ptr));
+
+boolean        bfd_false PARAMS ((bfd *ignore));
+boolean        bfd_true PARAMS ((bfd *ignore));
+PTR    bfd_nullvoidptr PARAMS ((bfd *ignore));
+int    bfd_0 PARAMS ((bfd *ignore));
+unsigned int   bfd_0u PARAMS ((bfd *ignore));
+void   bfd_void PARAMS ((bfd *ignore));
+
+bfd *  new_bfd_contained_in PARAMS ((bfd *));
+boolean         _bfd_dummy_new_section_hook PARAMS ((bfd *ignore, asection *newsect));
+char *  _bfd_dummy_core_file_failing_command PARAMS ((bfd *abfd));
+int     _bfd_dummy_core_file_failing_signal PARAMS ((bfd *abfd));
+boolean         _bfd_dummy_core_file_matches_executable_p PARAMS ((bfd *core_bfd,
                                                            bfd *exec_bfd));
                                                            bfd *exec_bfd));
-PROTO (bfd_target *, _bfd_dummy_target, (bfd *abfd));
+bfd_target *   _bfd_dummy_target PARAMS ((bfd *abfd));
 
 
-PROTO (void, bfd_dont_truncate_arname, (bfd *abfd, CONST char *filename,
+void   bfd_dont_truncate_arname PARAMS ((bfd *abfd, CONST char *filename,
                                        char *hdr));
                                        char *hdr));
-PROTO (void, bfd_bsd_truncate_arname, (bfd *abfd, CONST char *filename,
+void   bfd_bsd_truncate_arname PARAMS ((bfd *abfd, CONST char *filename,
                                        char *hdr));
                                        char *hdr));
-PROTO (void, bfd_gnu_truncate_arname, (bfd *abfd, CONST char *filename,
+void   bfd_gnu_truncate_arname PARAMS ((bfd *abfd, CONST char *filename,
                                        char *hdr));
 
                                        char *hdr));
 
-PROTO (boolean, bsd_write_armap, (bfd *arch, unsigned int elength,
-                                 struct orl *map, int orl_count, int stridx));
+boolean        bsd_write_armap PARAMS ((bfd *arch, unsigned int elength,
+                                 struct orl *map, unsigned int orl_count, int stridx));
 
 
-PROTO (boolean, coff_write_armap, (bfd *arch, unsigned int elength,
-                                  struct orl *map, int orl_count, int stridx));
+boolean        coff_write_armap PARAMS ((bfd *arch, unsigned int elength,
+                                  struct orl *map, unsigned int orl_count, int stridx));
 
 
-PROTO (bfd *, bfd_generic_openr_next_archived_file, (bfd *archive,
+bfd *  bfd_generic_openr_next_archived_file PARAMS ((bfd *archive,
                                                     bfd *last_file));
 
                                                     bfd *last_file));
 
-PROTO(int, bfd_generic_stat_arch_elt, (bfd *, struct stat *));
+int    bfd_generic_stat_arch_elt PARAMS ((bfd *, struct stat *));
 
 
-PROTO(boolean, bfd_generic_get_section_contents,
-      (bfd *abfd, sec_ptr section, PTR location, file_ptr offset, bfd_size_type count));
+boolean        bfd_generic_get_section_contents PARAMS ((bfd *abfd, sec_ptr section,
+                                                 PTR location, file_ptr offset,
+                                                 bfd_size_type count));
+
+boolean        bfd_generic_set_section_contents PARAMS ((bfd *abfd, sec_ptr section,
+                                                 PTR location, file_ptr offset,
+                                                 bfd_size_type count));
 
 /* Macros to tell if bfds are read or write enabled.
 
 
 /* Macros to tell if bfds are read or write enabled.
 
@@ -151,17 +160,18 @@ PROTO(boolean, bfd_generic_get_section_contents,
    !bfd_read_p, and only sometimes bfd_write_p.
 */
 
    !bfd_read_p, and only sometimes bfd_write_p.
 */
 
-#define bfd_read_p(abfd) ((abfd)->direction == read_direction || (abfd)->direction == both_direction)
-#define bfd_write_p(abfd) ((abfd)->direction == write_direction || (abfd)->direction == both_direction)
+#define        bfd_read_p(abfd) ((abfd)->direction == read_direction || (abfd)->direction == both_direction)
+#define        bfd_write_p(abfd) ((abfd)->direction == write_direction || (abfd)->direction == both_direction)
+
+void   bfd_assert PARAMS ((char*,int));
 
 
-PROTO (void, bfd_assert,(char*,int));
 #define BFD_ASSERT(x) \
 { if (!(x)) bfd_assert(__FILE__,__LINE__); }
 
 #define BFD_FAIL() \
 { bfd_assert(__FILE__,__LINE__); }
 
 #define BFD_ASSERT(x) \
 { if (!(x)) bfd_assert(__FILE__,__LINE__); }
 
 #define BFD_FAIL() \
 { bfd_assert(__FILE__,__LINE__); }
 
-PROTO (FILE *, bfd_cache_lookup_worker, (bfd *));
+FILE * bfd_cache_lookup_worker PARAMS ((bfd *));
 
 extern bfd *bfd_last_cache;
     
 
 extern bfd *bfd_last_cache;
     
@@ -177,165 +187,88 @@ extern bfd *bfd_last_cache;
 /* Generic routine for close_and_cleanup is really just bfd_true.  */
 #define        bfd_generic_close_and_cleanup   bfd_true
 
 /* Generic routine for close_and_cleanup is really just bfd_true.  */
 #define        bfd_generic_close_and_cleanup   bfd_true
 
-/* THE FOLLOWING IS EXTRACTED FROM THE SOURCE*/
+/* And more follows */
 
 
-/*:init.c*/
-/* bfd_check_init
+void 
+bfd_check_init PARAMS ((void));
 
 
-This routine is called before any other bfd function using initialized
-data is used to ensure that the structures have been initialized.
-Soon this function will go away, and the bfd library will assume that
-bfd_init has been called.
-*/
+PTR  
+bfd_xmalloc PARAMS (( bfd_size_type size));
 
 
- void EXFUN(bfd_check_init,(void));
+PTR 
+bfd_xmalloc_by_size_t  PARAMS (( size_t size));
 
 
-/*
-*/
+void 
+bfd_write_bigendian_4byte_int PARAMS ((bfd *abfd,  int i));
 
 
-/*:libbfd.c*/
-/* *i bfd_log2
-Return the log base 2 of the value supplied, rounded up. eg an arg
-of 1025 would return 11.
-*/
- PROTO(bfd_vma, bfd_log2,(bfd_vma x));
+unsigned int 
+bfd_log2 PARAMS ((bfd_vma x));
 
 
-/*
-*/
-
-/*:cache.c*/
-/* BFD_CACHE_MAX_OPEN
-The maxiumum number of files which the cache will keep open at one
-time.
-*/
 #define BFD_CACHE_MAX_OPEN 10
 #define BFD_CACHE_MAX_OPEN 10
-
-/*
-
-  bfd_last_cache
-Zero, or a pointer to the topmost BFD on the chain.  This is used by
-the @code{bfd_cache_lookup} macro in @file{libbfd.h} to determine when
-it can avoid a function call.
-*/
 extern bfd *bfd_last_cache;
 
 extern bfd *bfd_last_cache;
 
-/*
-
-  bfd_cache_lookup
-Checks to see if the required BFD is the same as the last one looked
-up. If so then it can use the iostream in the BFD with impunity, since
-it can't have changed since the last lookup, otherwise it has to
-perform the complicated lookup function
-*/
 #define bfd_cache_lookup(x) \
 #define bfd_cache_lookup(x) \
-     ((x)==bfd_last_cache? \
-        (FILE*)(bfd_last_cache->iostream): \
-         bfd_cache_lookup_worker(x))
-
-/*
-
-*i bfd_cache_init
-Initialize a BFD by putting it on the cache LRU.
-*/
- PROTO(void, bfd_cache_init, (bfd *));
-
-/*
-
-*i bfd_cache_close
-Remove the BFD from the cache. If the attached file is open, then close it too.
-*/
- PROTO(void, bfd_cache_close, (bfd *));
-
-/*
-
-*i bfd_open_file
-Call the OS to open a file for this BFD.  Returns the FILE *
-(possibly null) that results from this operation.  Sets up the
-BFD so that future accesses know the file is open. If the FILE *
-returned is null, then there is won't have been put in the cache, so
-it won't have to be removed from it.
-*/
- PROTO(FILE *, bfd_open_file, (bfd *));
-
-/*
-
-*i bfd_cache_lookup_worker
-Called when the macro @code{bfd_cache_lookup} fails to find a quick
-answer. Finds a file descriptor for this BFD.  If necessary, it open it.
-If there are already more than BFD_CACHE_MAX_OPEN files open, it trys to close
-one first, to avoid running out of file descriptors. 
-*/
- PROTO(FILE *, bfd_cache_lookup_worker, (bfd *));
-
-/*
-*/
-
-
-/*:reloc.c*/
-
-/*:cpu-h8300.c*/
-
-/*:cpu-i960.c*/
-
-/*:cpu-empty.c*/
-
-/*:archures.c*/
-/* bfd_default_arch_struct
-
-What bfds are seeded with 
-*/
-
-extern bfd_arch_info_struct_type bfd_default_arch_struct;
-
-/*
- bfd_default_set_arch_mach
-
-Set the architecture and machine type in a bfd. This finds the correct
-pointer to structure and inserts it into the arch_info pointer. 
-*/
-
-  boolean EXFUN(bfd_default_set_arch_mach,(bfd *abfd,
-          enum bfd_architecture arch,
-        unsigned long mach));
-
-/*
-
-This routine initializes the architecture dispatch table by calling
-all installed architecture packages and getting them to poke around.
-*/
-
- PROTO(void, bfd_arch_init,(void));
-
-/*
-
- bfd_arch_linkin
-
-Link the provided arch info structure into the list
-*/
-
- void EXFUN(bfd_arch_linkin,(bfd_arch_info_struct_type *));
-
-/*
-
- bfd_default_compatible
-
-The default function for testing for compatibility 
-*/
-
- CONST bfd_arch_info_struct_type *EXFUN(bfd_default_compatible,
-     (CONST bfd_arch_info_struct_type *a,
-     CONST bfd_arch_info_struct_type *b));
-
-/*
-
- bfd_default_scan
-The default function for working out whether this is an architecture
-hit and a machine hit 
-*/
-
- boolean EXFUN(bfd_default_scan,(CONST struct bfd_arch_info_struct *, CONST char *));
-
-/*
-*/
-
+    ((x)==bfd_last_cache? \
+      (FILE*)(bfd_last_cache->iostream): \
+       bfd_cache_lookup_worker(x))
+boolean 
+bfd_cache_close  PARAMS ((bfd *abfd));
+
+FILE* 
+bfd_open_file PARAMS ((bfd *abfd));
+
+FILE *
+bfd_cache_lookup_worker PARAMS ((bfd *abfd));
+
+void 
+bfd_constructor_entry PARAMS ((bfd *abfd, 
+    asymbol **symbol_ptr_ptr,
+    CONST char*type));
+
+CONST struct reloc_howto_struct *
+bfd_default_reloc_type_lookup
+ PARAMS ((bfd *abfd AND
+    bfd_reloc_code_real_type  code));
+
+boolean 
+bfd_generic_relax_section
+ PARAMS ((bfd *abfd,
+    asection *section,
+    asymbol **symbols));
+
+bfd_byte *
+
+bfd_generic_get_relocated_section_contents  PARAMS ((bfd *abfd,
+    struct bfd_seclet *seclet,
+    bfd_byte *data,
+    boolean relocateable));
+
+boolean 
+bfd_generic_seclet_link
+ PARAMS ((bfd *abfd,
+    PTR data,
+    boolean relocateable));
+
+extern bfd_arch_info_type bfd_default_arch_struct;
+boolean 
+bfd_default_set_arch_mach PARAMS ((bfd *abfd,
+    enum bfd_architecture arch,
+    unsigned long mach));
+
+void 
+bfd_arch_init PARAMS ((void));
+
+void 
+bfd_arch_linkin PARAMS ((bfd_arch_info_type *ptr));
+
+CONST bfd_arch_info_type *
+bfd_default_compatible
+ PARAMS ((CONST bfd_arch_info_type *a,
+    CONST bfd_arch_info_type *b));
+
+boolean 
+bfd_default_scan PARAMS ((CONST struct bfd_arch_info *info, CONST char *string));
+
+struct elf_internal_shdr *
+bfd_elf_find_section  PARAMS ((bfd *abfd, char *name));
 
 
This page took 0.028599 seconds and 4 git commands to generate.