2000-05-04 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
[deliverable/binutils-gdb.git] / gdb / symfile.h
index 7287c8f05df37a7e9e30d15917c5d8c88d7c48d7..35913c08cd8cea2a089127ac178bdcc15a68d9ca 100644 (file)
@@ -54,6 +54,25 @@ struct psymbol_allocation_list
     int size;
   };
 
+/* Define an array of addresses to accommodate non-contiguous dynamic
+   loading of modules.  This is for use when entering commands, so we
+   can keep track of the section names until we read the file and
+   can map them to bfd sections.  This structure is also used by
+   solib.c to communicate the section addresses in shared objects to
+   symbol_file_add (). */
+#define MAX_SECTIONS 40
+struct section_addr_info 
+{
+  /* Sections whose names are file format dependant. */
+  struct other_sections
+  {
+    CORE_ADDR addr;
+    char *name;
+    int sectindex;
+  } other[MAX_SECTIONS];
+};
+
 /* Structure to keep track of symbol reading functions for various
    object file types.  */
 
@@ -99,7 +118,7 @@ struct sym_fns
        a string, where NULL means the default, and others are parsed in a file
        dependent way. */
 
-    void (*sym_offsets) PARAMS ((struct objfile *, CORE_ADDR));
+    void (*sym_offsets) PARAMS ((struct objfile *, struct section_addr_info *));
 
     /* Finds the next struct sym_fns.  They are allocated and initialized
        in whatever module implements the functions pointed to; an 
@@ -113,7 +132,7 @@ struct sym_fns
    do anything special.  */
 
 extern void
-default_symfile_offsets PARAMS ((struct objfile * objfile, CORE_ADDR addr));
+default_symfile_offsets PARAMS ((struct objfile * objfile, struct section_addr_info *));
 
 
 extern void
@@ -158,11 +177,28 @@ extern void
 init_entry_point_info PARAMS ((struct objfile *));
 
 extern void
-syms_from_objfile PARAMS ((struct objfile *, CORE_ADDR, int, int));
+syms_from_objfile PARAMS ((struct objfile *, struct section_addr_info *, int, int));
 
 extern void
 new_symfile_objfile PARAMS ((struct objfile *, int, int));
 
+extern struct objfile *
+symbol_file_add PARAMS ((char *, int, struct section_addr_info *, int, int));
+
+/* Build (allocate and populate) a section_addr_info struct from
+   an existing section table. */
+
+struct section_table;
+extern struct section_addr_info *
+build_section_addr_info_from_section_table (const struct section_table *start,
+                                            const struct section_table *end);
+
+/* Free all memory allocated by build_section_addr_info_from_section_table. */
+
+extern void
+free_section_addr_info (struct section_addr_info *);
+
+
 extern struct partial_symtab *
   start_psymtab_common PARAMS ((struct objfile *, struct section_offsets *,
                                char *, CORE_ADDR,
@@ -221,9 +257,6 @@ extern void find_lowest_section PARAMS ((bfd *, asection *, PTR));
 
 extern bfd *symfile_bfd_open PARAMS ((char *));
 
-/* Remote targets may wish to use this as their load function.  */
-extern void generic_load PARAMS ((char *name, int from_tty));
-
 /* Utility functions for overlay sections: */
 extern int overlay_debugging;
 extern int overlay_cache_invalid;
This page took 0.034297 seconds and 4 git commands to generate.