Mon Sep 25 22:49:32 1995 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
[deliverable/binutils-gdb.git] / bfd / libcoff.h
index ccd42219c87dab8802008b479b31aa1eb35dcc87..4650bfcd5665b30e318af3c8f0c8254422c96b6f 100644 (file)
@@ -82,9 +82,22 @@ typedef struct coff_tdata
   int pe;
   /* Used by the COFF backend linker.  */
   struct coff_link_hash_entry **sym_hashes;
+
   struct bfd_link_info *link_info;
 } coff_data_type;
 
+/* Tdata for pe image files. */
+typedef struct pe_tdata
+{
+  coff_data_type coff;
+  struct internal_extra_pe_aouthdr pe_opthdr;
+  int dll;
+  int has_reloc_section;
+} pe_data_type;
+
+#define pe_data(bfd)           ((bfd)->tdata.pe_obj_data)
+
+
 /* We take the address of the first element of a asymbol to ensure that the
  * macro is only ever applied to an asymbol.  */
 #define coffsymbol(asymbol) ((coff_symbol_type *)(&((asymbol)->the_bfd)))
@@ -102,6 +115,13 @@ struct coff_section_tdata
   bfd_byte *contents;
   /* If this is true, the contents entry may not be freed.  */
   boolean keep_contents;
+  /* Information cached by coff_find_nearest_line.  */
+  bfd_vma offset;
+  unsigned int i;
+  const char *function;
+  int line_base;
+  /* Available for individual backends.  */
+  PTR tdata;
 };
 
 /* An accessor macro for the coff_section_tdata structure.  */
@@ -209,6 +229,8 @@ extern void bfd_perform_slip PARAMS ((bfd *abfd, unsigned int slip,
 
 extern struct bfd_link_hash_table *_bfd_coff_link_hash_table_create
   PARAMS ((bfd *));
+extern const char *_bfd_coff_internal_syment_name
+  PARAMS ((bfd *, const struct internal_syment *, char *));
 extern boolean _bfd_coff_link_add_symbols
   PARAMS ((bfd *, struct bfd_link_info *));
 extern boolean _bfd_coff_final_link
@@ -242,7 +264,7 @@ unsigned int fix_tag : 1;
 unsigned int fix_end : 1;
 
         /* Should the x_csect.x_scnlen field be renumbered.
-          Created by coff_slurp_symbol_table. */
+          Created by coff_pointerize_aux. */
 unsigned int fix_scnlen : 1;
 
         /* The container for the symbol structure as read and translated
@@ -369,9 +391,6 @@ typedef struct
        bfd     *abfd,
        PTR     internal_scnhdr,
        const char *name));
- asection *(*_bfd_make_section_hook) PARAMS ((
-       bfd     *abfd,
-       char    *name));
  void (*_bfd_set_alignment_hook) PARAMS ((
        bfd     *abfd,
        asection *sec,
@@ -381,6 +400,19 @@ typedef struct
  boolean (*_bfd_coff_symname_in_debug) PARAMS ((
        bfd     *abfd,
        struct internal_syment *sym));
+ boolean (*_bfd_coff_pointerize_aux_hook) PARAMS ((
+       bfd *abfd,
+       combined_entry_type *table_base,
+       combined_entry_type *symbol,
+       unsigned int indaux,
+       combined_entry_type *aux));
+ boolean (*_bfd_coff_print_aux) PARAMS ((
+       bfd *abfd,
+       FILE *file,
+       combined_entry_type *table_base,
+       combined_entry_type *symbol,
+       combined_entry_type *aux,
+       unsigned int indaux));
  void (*_bfd_coff_reloc16_extra_cases) PARAMS ((
        bfd     *abfd,
        struct bfd_link_info *link_info,
@@ -400,6 +432,9 @@ typedef struct
        struct internal_syment *));
  void (*_bfd_coff_compute_section_file_positions) PARAMS ((
        bfd *abfd));
+ boolean (*_bfd_coff_start_final_link) PARAMS ((
+       bfd *output_bfd,
+       struct bfd_link_info *info));
  boolean (*_bfd_coff_relocate_section) PARAMS ((
        bfd *output_bfd,
        struct bfd_link_info *info,
@@ -489,9 +524,6 @@ typedef struct
 #define bfd_coff_styp_to_sec_flags_hook(abfd, scnhdr, name)\
         ((coff_backend_info (abfd)->_bfd_styp_to_sec_flags_hook) (abfd, scnhdr, name))
 
-#define bfd_coff_make_section_hook(abfd, name)\
-        ((coff_backend_info (abfd)->_bfd_make_section_hook) (abfd, name))
-
 #define bfd_coff_set_alignment_hook(abfd, sec, scnhdr)\
         ((coff_backend_info (abfd)->_bfd_set_alignment_hook) (abfd, sec, scnhdr))
 
@@ -501,6 +533,10 @@ typedef struct
 #define bfd_coff_symname_in_debug(abfd, sym)\
         ((coff_backend_info (abfd)->_bfd_coff_symname_in_debug) (abfd, sym))
 
+#define bfd_coff_print_aux(abfd, file, base, symbol, aux, indaux)\
+        ((coff_backend_info (abfd)->_bfd_coff_print_aux)\
+         (abfd, file, base, symbol, aux, indaux))
+
 #define bfd_coff_reloc16_extra_cases(abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr)\
         ((coff_backend_info (abfd)->_bfd_coff_reloc16_extra_cases)\
          (abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr))
@@ -517,6 +553,9 @@ typedef struct
         ((coff_backend_info (abfd)->_bfd_coff_compute_section_file_positions)\
          (abfd))
 
+#define bfd_coff_start_final_link(obfd, info)\
+        ((coff_backend_info (obfd)->_bfd_coff_start_final_link)\
+         (obfd, info))
 #define bfd_coff_relocate_section(obfd,info,ibfd,o,con,rel,isyms,secs)\
         ((coff_backend_info (ibfd)->_bfd_coff_relocate_section)\
          (obfd, info, ibfd, o, con, rel, isyms, secs))
This page took 0.024485 seconds and 4 git commands to generate.