* bfd.h: Update to get hppa_core_struct from bfd.c.
[deliverable/binutils-gdb.git] / include / bfd.h
index 01136a3a5b6a5305c03840931c5ed16aac651ed0..dd3ede9edfbf088b0e3e10865c2168acc0151ae2 100644 (file)
@@ -45,15 +45,6 @@ here.  */
 #include "ansidecl.h"
 #include "obstack.h"
 
-/* Make it easier to declare prototypes (puts conditional here) */
-#ifndef PROTO
-#      if __STDC__
-#              define PROTO(type, name, arglist) type name arglist
-#      else
-#              define PROTO(type, name, arglist) type name ()
-#      endif
-#endif
-
 #define BFD_VERSION "2.0"
 
 /* forward declaration */
@@ -220,26 +211,25 @@ typedef enum bfd_error {
 
 extern bfd_ec bfd_error;
 struct reloc_cache_entry;
-struct bfd_seclet_struct ;
+struct bfd_seclet;
 
 
 typedef struct bfd_error_vector {
-  PROTO(void,(* nonrepresentable_section ),(CONST bfd  *CONST abfd,
-                                           CONST char *CONST name));
-  PROTO(void,(* undefined_symbol),(CONST struct reloc_cache_entry *rel,
-                                  CONST struct bfd_seclet_struct *sec
-                                  ));
-  PROTO(void, (* reloc_value_truncated),(CONST struct
+  void (* nonrepresentable_section ) PARAMS ((CONST bfd  *CONST abfd,
+                                             CONST char *CONST name));
+  void (* undefined_symbol) PARAMS ((CONST struct reloc_cache_entry *rel,
+                                    CONST struct bfd_seclet *sec));
+  void (* reloc_value_truncated) PARAMS ((CONST struct
                                          reloc_cache_entry *rel,
-                                         struct bfd_seclet_struct *sec));
+                                         struct bfd_seclet *sec));
 
-  PROTO(void, (* reloc_dangerous),(CONST struct reloc_cache_entry *rel,
-                                  CONST struct bfd_seclet_struct *sec));
+  void (* reloc_dangerous) PARAMS ((CONST struct reloc_cache_entry *rel,
+                                   CONST struct bfd_seclet *sec));
   
 } bfd_error_vector_type;
 
-PROTO (CONST char *, bfd_errmsg, (bfd_ec error_tag));
-PROTO (void, bfd_perror, (CONST char *message));
+CONST char *bfd_errmsg PARAMS ((bfd_ec error_tag));
+void bfd_perror PARAMS ((CONST char *message));
 \f
 
 typedef enum bfd_print_symbol
@@ -296,13 +286,7 @@ CAT(NAME,_bfd_debug_info_accumulate),\
 CAT(NAME,_bfd_get_relocated_section_contents),\
 CAT(NAME,_bfd_relax_section)
 
-#define COFF_SWAP_TABLE \
- coff_swap_aux_in, coff_swap_sym_in, coff_swap_lineno_in, \
- coff_swap_aux_out, coff_swap_sym_out, \
- coff_swap_lineno_out, coff_swap_reloc_out, \
- coff_swap_filehdr_out, coff_swap_aouthdr_out, \
- coff_swap_scnhdr_out
-
+#define COFF_SWAP_TABLE (PTR) &bfd_coff_std_swap_table
 
 \f
 /* User program access to BFD facilities */
@@ -494,6 +478,11 @@ typedef struct sec
 
 #define SEC_NEVER_LOAD 0x400
 
+         /* The section is a shared library section.  The linker must leave
+           these completely alone, as the vma and size are used when
+           the executable is loaded. */
+
+#define SEC_SHARED_LIBRARY 0x800
 
        
    bfd_vma vma;
@@ -594,8 +583,8 @@ typedef struct sec
          /* A symbol which points at this section only */
    struct symbol_cache_entry *symbol;  
    struct symbol_cache_entry **symbol_ptr_ptr;
-   struct bfd_seclet_struct *seclets_head;
-   struct bfd_seclet_struct *seclets_tail;
+   struct bfd_seclet *seclets_head;
+   struct bfd_seclet *seclets_tail;
 } asection ;
 
 
@@ -712,6 +701,11 @@ typedef struct bfd_arch_info
                 CONST struct bfd_arch_info *b));
 
   boolean (*scan) PARAMS ((CONST struct bfd_arch_info *, CONST char *));
+   /* How to disassemble an instruction, producing a printable
+     representation on a specified stdio stream.  This isn't
+     defined for most processors at present, because of the size
+     of the additional tables it would drag in, and because gdb
+     wants to use a different interface.  */
   unsigned int (*disassemble) PARAMS ((bfd_vma addr, CONST char *data,
                                        PTR stream));
 
@@ -822,7 +816,7 @@ typedef CONST struct reloc_howto_struct
            result is to be subtracted from the data*/
   int size;
 
-        /*  Now obsolete */
+        /*  Now obsolete.  But m68k-coff still uses it. */
   unsigned int bitsize;
 
         /*  Notes that the relocation is relative to the location in the
@@ -831,11 +825,12 @@ typedef CONST struct reloc_howto_struct
            being relocated. */
   boolean pc_relative;
 
-        /*  Now obsolete */
   unsigned int bitpos;
 
+#if 1
         /*  Now obsolete */
   boolean absolute;
+#endif
 
         /* Causes the relocation routine to return an error if overflow
           is detected when relocating. */
@@ -986,7 +981,7 @@ typedef struct symbol_cache_entry
 {
         /* A pointer to the BFD which owns the symbol. This information
           is necessary so that a back end can work out what additional
-          (invisible to the application writer) information is carried
+          information (invisible to the application writer) is carried
           with the symbol.  */
 
   struct _bfd *the_bfd;
@@ -1010,7 +1005,7 @@ typedef struct symbol_cache_entry
           value is the offset into the section of the data. */
 #define BSF_GLOBAL     0x02
 
-        /* Obsolete */
+        /* Obsolete; should be deleted? */
 #define BSF_IMPORT     0x04
 
         /* The symbol has global scope, and is exported. The value is
@@ -1018,7 +1013,7 @@ typedef struct symbol_cache_entry
 #define BSF_EXPORT     0x08
 
         /* The symbol is undefined. <<extern>> in <<C>>. The value has
-          no meaning. */
+          no meaning.  Obsolete; should be deleted? */
 #define BSF_UNDEFINED_OBS 0x10 
 
         /* The symbol is common, initialized to zero; default in
@@ -1033,11 +1028,11 @@ typedef struct symbol_cache_entry
           meaning. */
 #define BSF_DEBUGGING  0x40
 
-        /* Used by the linker */
+        /* Used by the linker.  Should be part of app_data now. */
 #define BSF_KEEP        0x10000
 #define BSF_KEEP_G      0x80000
 
-        /* Unused */
+        /* Unused; should be deleted? */
 #define BSF_WEAK        0x100000
 #define BSF_CTOR        0x200000 
 
@@ -1087,7 +1082,10 @@ typedef struct symbol_cache_entry
 
         /* Back end special data. This is being phased out in favour
           of making this a union. */
-  PTR udata;   
+  PTR udata;
+
+        /* Application data. */
+  union { unsigned long aflags; PTR aptr; } app_data;
 
 } asymbol;
 #define get_symtab_upper_bound(abfd) \
@@ -1224,12 +1222,13 @@ struct _bfd
       struct ieee_data_struct *ieee_data;
       struct ieee_ar_data_struct *ieee_ar_data;
       struct srec_data_struct *srec_data;
-      struct srec_data_struct *tekhex_data;
+      struct tekhex_data_struct *tekhex_data;
       struct elf_obj_tdata *elf_obj_data;
       struct bout_data_struct *bout_data;
       struct sun_core_struct *sun_core_data;
       struct trad_core_struct *trad_core_data;
       struct hppa_data_struct *hppa_data;
+      struct hppa_core_struct *hppa_core_data;
       PTR any;
       } tdata;
   
@@ -1288,39 +1287,9 @@ bfd_get_mtime PARAMS ((bfd *));
 #define bfd_stat_arch_elt(abfd, stat) \
         BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
 
-#define bfd_coff_swap_aux_in(a,e,t,c,i) \
-        BFD_SEND (a, _bfd_coff_swap_aux_in, (a,e,t,c,i))
-
-#define bfd_coff_swap_sym_in(a,e,i) \
-        BFD_SEND (a, _bfd_coff_swap_sym_in, (a,e,i))
-
-#define bfd_coff_swap_lineno_in(a,e,i) \
-        BFD_SEND ( a, _bfd_coff_swap_lineno_in, (a,e,i))
-
 #define bfd_set_arch_mach(abfd, arch, mach)\
         BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
 
-#define bfd_coff_swap_reloc_out(abfd, i, o) \
-        BFD_SEND (abfd, _bfd_coff_swap_reloc_out, (abfd, i, o))
-
-#define bfd_coff_swap_lineno_out(abfd, i, o) \
-        BFD_SEND (abfd, _bfd_coff_swap_lineno_out, (abfd, i, o))
-
-#define bfd_coff_swap_aux_out(abfd, i, t,c,o) \
-        BFD_SEND (abfd, _bfd_coff_swap_aux_out, (abfd, i,t,c, o))
-
-#define bfd_coff_swap_sym_out(abfd, i,o) \
-        BFD_SEND (abfd, _bfd_coff_swap_sym_out, (abfd, i, o))
-
-#define bfd_coff_swap_scnhdr_out(abfd, i,o) \
-        BFD_SEND (abfd, _bfd_coff_swap_scnhdr_out, (abfd, i, o))
-
-#define bfd_coff_swap_filehdr_out(abfd, i,o) \
-        BFD_SEND (abfd, _bfd_coff_swap_filehdr_out, (abfd, i, o))
-
-#define bfd_coff_swap_aouthdr_out(abfd, i,o) \
-        BFD_SEND (abfd, _bfd_coff_swap_aouthdr_out, (abfd, i, o))
-
 #define bfd_get_relocated_section_contents(abfd, seclet, data) \
        BFD_SEND (abfd, _bfd_get_relocated_section_contents, (abfd, seclet, data))
  
@@ -1348,10 +1317,6 @@ boolean
 core_file_matches_executable_p
  PARAMS ((bfd *core_bfd, bfd *exec_bfd));
 
-#define SDEF(ret, name, arglist) \
-                PROTO(ret,(*name),arglist)
-#define SDEF_FMT(ret, name, arglist) \
-                PROTO(ret,(*name[bfd_type_end]),arglist)
 #define BFD_SEND(bfd, message, arglist) \
                ((*((bfd)->xvec->message)) arglist)
 #define BFD_SEND_FMT(bfd, message, arglist) \
@@ -1375,131 +1340,86 @@ typedef struct bfd_target
   flagword section_flags;
   char symbol_leading_char;
   char ar_pad_char;            
- unsigned short ar_max_namelen;
 unsigned short ar_max_namelen;
   unsigned int align_power_min;
-  SDEF (bfd_vma,      bfd_getx64, (bfd_byte *));
-  SDEF (void,         bfd_putx64, (bfd_vma, bfd_byte *));
-  SDEF (bfd_vma, bfd_getx32, (bfd_byte *));
-  SDEF (void,         bfd_putx32, (bfd_vma, bfd_byte *));
-  SDEF (bfd_vma, bfd_getx16, (bfd_byte *));
-  SDEF (void,         bfd_putx16, (bfd_vma, bfd_byte *));
-  SDEF (bfd_vma,   bfd_h_getx64, (bfd_byte *));
-  SDEF (void,          bfd_h_putx64, (bfd_vma, bfd_byte *));
-  SDEF (bfd_vma,  bfd_h_getx32, (bfd_byte *));
-  SDEF (void,          bfd_h_putx32, (bfd_vma, bfd_byte *));
-  SDEF (bfd_vma,  bfd_h_getx16, (bfd_byte *));
-  SDEF (void,          bfd_h_putx16, (bfd_vma, bfd_byte *));
-  SDEF_FMT (struct bfd_target *, _bfd_check_format, (bfd *));
-  SDEF_FMT (boolean,            _bfd_set_format, (bfd *));
-  SDEF_FMT (boolean,            _bfd_write_contents, (bfd *));
-  SDEF (char *, _core_file_failing_command, (bfd *));
-  SDEF (int,    _core_file_failing_signal, (bfd *));
-  SDEF (boolean, _core_file_matches_executable_p, (bfd *, bfd *));
SDEF (boolean, _bfd_slurp_armap, (bfd *));
SDEF (boolean, _bfd_slurp_extended_name_table, (bfd *));
SDEF (void,   _bfd_truncate_arname, (bfd *, CONST char *, char *));
SDEF (boolean, write_armap, (bfd *arch, 
+  bfd_vma      (*bfd_getx64) PARAMS ((bfd_byte *));
+  void         (*bfd_putx64) PARAMS ((bfd_vma, bfd_byte *));
+  bfd_vma      (*bfd_getx32) PARAMS ((bfd_byte *));
+  void         (*bfd_putx32) PARAMS ((bfd_vma, bfd_byte *));
+  bfd_vma      (*bfd_getx16) PARAMS ((bfd_byte *));
+  void         (*bfd_putx16) PARAMS ((bfd_vma, bfd_byte *));
+  bfd_vma      (*bfd_h_getx64) PARAMS ((bfd_byte *));
+  void         (*bfd_h_putx64) PARAMS ((bfd_vma, bfd_byte *));
+  bfd_vma      (*bfd_h_getx32) PARAMS ((bfd_byte *));
+  void         (*bfd_h_putx32) PARAMS ((bfd_vma, bfd_byte *));
+  bfd_vma      (*bfd_h_getx16) PARAMS ((bfd_byte *));
+  void         (*bfd_h_putx16) PARAMS ((bfd_vma, bfd_byte *));
+  struct bfd_target * (*_bfd_check_format[bfd_type_end]) PARAMS ((bfd *));
+  boolean             (*_bfd_set_format[bfd_type_end]) PARAMS ((bfd *));
+  boolean             (*_bfd_write_contents[bfd_type_end]) PARAMS ((bfd *));
+  char *   (*_core_file_failing_command) PARAMS ((bfd *));
+  int      (*_core_file_failing_signal) PARAMS ((bfd *));
+  boolean  (*_core_file_matches_executable_p) PARAMS ((bfd *, bfd *));
 boolean  (*_bfd_slurp_armap) PARAMS ((bfd *));
 boolean  (*_bfd_slurp_extended_name_table) PARAMS ((bfd *));
 void     (*_bfd_truncate_arname) PARAMS ((bfd *, CONST char *, char *));
 boolean  (*write_armap) PARAMS ((bfd *arch, 
                               unsigned int elength,
                               struct orl *map,
                               unsigned int orl_count, 
                               int stridx));
-  SDEF (boolean, _close_and_cleanup, (bfd *));
-  SDEF (boolean, _bfd_set_section_contents, (bfd *, sec_ptr, PTR,
+  boolean       (*_close_and_cleanup) PARAMS ((bfd *));
+  boolean       (*_bfd_set_section_contents) PARAMS ((bfd *, sec_ptr, PTR,
                                             file_ptr, bfd_size_type));
-  SDEF (boolean, _bfd_get_section_contents, (bfd *, sec_ptr, PTR, 
+  boolean       (*_bfd_get_section_contents) PARAMS ((bfd *, sec_ptr, PTR, 
                                             file_ptr, bfd_size_type));
-  SDEF (boolean, _new_section_hook, (bfd *, sec_ptr));
-  SDEF (unsigned int, _get_symtab_upper_bound, (bfd *));
-  SDEF (unsigned int, _bfd_canonicalize_symtab,
-           (bfd *, struct symbol_cache_entry **));
-  SDEF (unsigned int, _get_reloc_upper_bound, (bfd *, sec_ptr));
-  SDEF (unsigned int, _bfd_canonicalize_reloc, (bfd *, sec_ptr, arelent **,
-                                               struct symbol_cache_entry**));
-  SDEF (struct symbol_cache_entry  *, _bfd_make_empty_symbol, (bfd *));
-  SDEF (void,     _bfd_print_symbol, (bfd *, PTR, struct symbol_cache_entry  *,
+  boolean       (*_new_section_hook) PARAMS ((bfd *, sec_ptr));
+  unsigned int  (*_get_symtab_upper_bound) PARAMS ((bfd *));
+  unsigned int  (*_bfd_canonicalize_symtab) PARAMS ((bfd *,
+                                              struct symbol_cache_entry **));
+  unsigned int  (*_get_reloc_upper_bound) PARAMS ((bfd *, sec_ptr));
+  unsigned int  (*_bfd_canonicalize_reloc) PARAMS ((bfd *, sec_ptr, arelent **,
+                                              struct symbol_cache_entry **));
+  struct symbol_cache_entry  *
+                (*_bfd_make_empty_symbol) PARAMS ((bfd *));
+  void          (*_bfd_print_symbol) PARAMS ((bfd *, PTR,
+                                      struct symbol_cache_entry *,
                                       bfd_print_symbol_type));
 #define bfd_print_symbol(b,p,s,e) BFD_SEND(b, _bfd_print_symbol, (b,p,s,e))
-  SDEF (alent *,   _get_lineno, (bfd *, struct symbol_cache_entry  *));
-
-  SDEF (boolean,   _bfd_set_arch_mach, (bfd *, enum bfd_architecture,
-                                       unsigned long));
-
-  SDEF (bfd *,  openr_next_archived_file, (bfd *arch, bfd *prev));
-  SDEF (boolean, _bfd_find_nearest_line,
-        (bfd *abfd, struct sec  *section,
-         struct symbol_cache_entry  **symbols,bfd_vma offset,
-        CONST char **file, CONST char **func, unsigned int *line));
-  SDEF (int,    _bfd_stat_arch_elt, (bfd *, struct stat *));
-
-  SDEF (int,    _bfd_sizeof_headers, (bfd *, boolean));
-
-  SDEF (void, _bfd_debug_info_start, (bfd *));
-  SDEF (void, _bfd_debug_info_end, (bfd *));
-  SDEF (void, _bfd_debug_info_accumulate, (bfd *, struct sec  *));
-  SDEF (bfd_byte *, _bfd_get_relocated_section_contents, (bfd*,struct bfd_seclet_struct *, bfd_byte *data));
-  SDEF (boolean,_bfd_relax_section,(bfd *, struct sec *, struct symbol_cache_entry **));
-  SDEF(void, _bfd_coff_swap_aux_in,(
-       bfd            *abfd ,
-       PTR             ext,
-       int             type,
-       int             class ,
-       PTR             in));
-
-  SDEF(void, _bfd_coff_swap_sym_in,(
-       bfd            *abfd ,
-       PTR             ext,
-       PTR             in));
-
-  SDEF(void, _bfd_coff_swap_lineno_in,  (
-       bfd            *abfd,
-       PTR            ext,
-       PTR             in));
-
- SDEF(unsigned int, _bfd_coff_swap_aux_out,(
-       bfd     *abfd,
-       PTR     in,
-       int     type,
-       int     class,
-       PTR     ext));
-
- SDEF(unsigned int, _bfd_coff_swap_sym_out,(
-      bfd      *abfd,
-      PTR      in,
-      PTR      ext));
-
- SDEF(unsigned int, _bfd_coff_swap_lineno_out,(
-       bfd     *abfd,
-       PTR     in,
-       PTR     ext));
-
- SDEF(unsigned int, _bfd_coff_swap_reloc_out,(
-       bfd     *abfd,
-       PTR     src,
-       PTR     dst));
-
- SDEF(unsigned int, _bfd_coff_swap_filehdr_out,(
-       bfd     *abfd,
-       PTR     in,
-       PTR     out));
-
- SDEF(unsigned int, _bfd_coff_swap_aouthdr_out,(
-       bfd     *abfd,
-       PTR     in,
-       PTR     out));
-
- SDEF(unsigned int, _bfd_coff_swap_scnhdr_out,(
-       bfd     *abfd,
-       PTR     in,
-       PTR     out));
+  alent *    (*_get_lineno) PARAMS ((bfd *, struct symbol_cache_entry *));
+
+  boolean    (*_bfd_set_arch_mach) PARAMS ((bfd *, enum bfd_architecture,
+                    unsigned long));
+
+  bfd *      (*openr_next_archived_file) PARAMS ((bfd *arch, bfd *prev));
+  boolean    (*_bfd_find_nearest_line) PARAMS ((bfd *abfd,
+                    struct sec *section, struct symbol_cache_entry **symbols,
+                    bfd_vma offset, CONST char **file, CONST char **func,
+                    unsigned int *line));
+  int        (*_bfd_stat_arch_elt) PARAMS ((bfd *, struct stat *));
+
+  int        (*_bfd_sizeof_headers) PARAMS ((bfd *, boolean));
+
+  void       (*_bfd_debug_info_start) PARAMS ((bfd *));
+  void       (*_bfd_debug_info_end) PARAMS ((bfd *));
+  void       (*_bfd_debug_info_accumulate) PARAMS ((bfd *, struct sec *));
+
+  bfd_byte * (*_bfd_get_relocated_section_contents) PARAMS ((bfd *,
+                    struct bfd_seclet *, bfd_byte *data));
 
+  boolean    (*_bfd_relax_section) PARAMS ((bfd *, struct sec *,
+                    struct symbol_cache_entry **));
   /* See documentation on reloc types.  */
- SDEF (CONST struct reloc_howto_struct *,
-       reloc_type_lookup,
-       (bfd *abfd, bfd_reloc_code_real_type code));
+ CONST struct reloc_howto_struct *
+       (*reloc_type_lookup) PARAMS ((bfd *abfd,
+                                     bfd_reloc_code_real_type code));
 
-  /* Complete and utter crock, currently used for the assembler
+  /* Back-door to allow format-aware applications to create debug symbols
+    while using BFD for everything else.  Currently used by the assembler
     when creating COFF files.  */
SDEF (asymbol *, _bfd_make_debug_symbol, (
asymbol *  (*_bfd_make_debug_symbol) PARAMS ((
        bfd *abfd,
        void *ptr,
        unsigned long size));
This page took 0.033756 seconds and 4 git commands to generate.