X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fsymfile.h;h=7ae819c5e5b22418b5025989c58a28d942968c87;hb=567995e103055787c86c42096397015a55e02fd4;hp=5ff53f8aefc3b22516e27e523abb5fd7d1ed4975;hpb=8b60591b5d040469131bb6a64301df2207039ee5;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/symfile.h b/gdb/symfile.h index 5ff53f8aef..7ae819c5e5 100644 --- a/gdb/symfile.h +++ b/gdb/symfile.h @@ -1,7 +1,8 @@ /* Definitions for reading symbol files into GDB. Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2007, 2008 Free Software Foundation, Inc. + 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. @@ -25,7 +26,7 @@ #include "symtab.h" /* Opaque declarations. */ -struct section_table; +struct target_section; struct objfile; struct obj_section; struct obstack; @@ -131,11 +132,10 @@ struct sym_fns void (*sym_init) (struct objfile *); - /* sym_read (objfile, mainline) Reads a symbol file into a psymtab + /* sym_read (objfile, symfile_flags) Reads a symbol file into a psymtab (or possibly a symtab). OBJFILE is the objfile struct for the - file we are reading. MAINLINE is 1 if this is the main symbol - table being read, and 0 if a secondary symbol file (e.g. shared - library or dynamically loaded file) is being read. */ + file we are reading. SYMFILE_FLAGS are the flags passed to + symbol_file_add & co. */ void (*sym_read) (struct objfile *, int); @@ -174,6 +174,16 @@ struct sym_fns }; +extern struct section_addr_info * + build_section_addr_info_from_objfile (const struct objfile *objfile); + +extern void relative_addr_info_to_section_offsets + (struct section_offsets *section_offsets, int num_sections, + struct section_addr_info *addrs); + +extern void addr_info_make_relative (struct section_addr_info *addrs, + bfd *abfd); + /* The default version of sym_fns.sym_offsets for readers that don't do anything special. */ @@ -193,7 +203,7 @@ extern void extend_psymbol_list (struct psymbol_allocation_list *, /* #include "demangle.h" */ extern const -struct partial_symbol *add_psymbol_to_list (char *, int, domain_enum, +struct partial_symbol *add_psymbol_to_list (char *, int, int, domain_enum, enum address_class, struct psymbol_allocation_list *, long, CORE_ADDR, @@ -207,40 +217,53 @@ extern struct symtab *allocate_symtab (char *, struct objfile *); extern int free_named_symtabs (char *); -extern void fill_in_vptr_fieldno (struct type *); - extern void add_symtab_fns (struct sym_fns *); +/* This enum encodes bit-flags passed as ADD_FLAGS parameter to + syms_from_objfile, symbol_file_add, etc. */ + +enum symfile_add_flags + { + /* Be chatty about what you are doing. */ + SYMFILE_VERBOSE = 1 << 1, + + /* This is the main symbol file (as opposed to symbol file for dynamically + loaded code). */ + SYMFILE_MAINLINE = 1 << 2, + + /* Do not call breakpoint_re_set when adding this symbol file. */ + SYMFILE_DEFER_BP_RESET = 1 << 3 + }; + extern void syms_from_objfile (struct objfile *, struct section_addr_info *, - struct section_offsets *, int, int, int); + struct section_offsets *, int, int); -extern void new_symfile_objfile (struct objfile *, int, int); +extern void new_symfile_objfile (struct objfile *, int); extern struct objfile *symbol_file_add (char *, int, - struct section_addr_info *, int, int); + struct section_addr_info *, int); extern struct objfile *symbol_file_add_from_bfd (bfd *, int, struct section_addr_info *, - int, int); + int); + +extern void symbol_file_add_separate (bfd *, int, struct objfile *); + +extern char *find_separate_debug_file_by_debuglink (struct objfile *); /* Create a new section_addr_info, with room for NUM_SECTIONS. */ extern struct section_addr_info *alloc_section_addr_info (size_t num_sections); -/* Return a freshly allocated copy of ADDRS. The section names, if - any, are also freshly allocated copies of those in ADDRS. */ -extern struct section_addr_info *(copy_section_addr_info - (struct section_addr_info *addrs)); - /* Build (allocate and populate) a section_addr_info struct from an existing section table. */ extern struct section_addr_info - *build_section_addr_info_from_section_table (const struct section_table + *build_section_addr_info_from_section_table (const struct target_section *start, - const struct section_table + const struct target_section *end); /* Free all memory allocated by @@ -251,7 +274,7 @@ extern void free_section_addr_info (struct section_addr_info *); extern struct partial_symtab *start_psymtab_common (struct objfile *, struct section_offsets *, - char *, CORE_ADDR, + const char *, CORE_ADDR, struct partial_symbol **, struct partial_symbol **); @@ -294,7 +317,8 @@ extern int auto_solib_limit; extern void set_initial_language (void); -extern struct partial_symtab *allocate_psymtab (char *, struct objfile *); +extern struct partial_symtab *allocate_psymtab (const char *, + struct objfile *); extern void discard_psymtab (struct partial_symtab *); @@ -302,6 +326,8 @@ extern void find_lowest_section (bfd *, asection *, void *); extern bfd *symfile_bfd_open (char *); +extern bfd *bfd_open_maybe_remote (const char *); + extern int get_section_index (struct objfile *, char *); /* Utility functions for overlay sections: */ @@ -314,32 +340,32 @@ extern enum overlay_debugging_state extern int overlay_cache_invalid; /* Return the "mapped" overlay section containing the PC. */ -extern asection *find_pc_mapped_section (CORE_ADDR); +extern struct obj_section *find_pc_mapped_section (CORE_ADDR); /* Return any overlay section containing the PC (even in its LMA region). */ -extern asection *find_pc_overlay (CORE_ADDR); +extern struct obj_section *find_pc_overlay (CORE_ADDR); /* Return true if the section is an overlay. */ -extern int section_is_overlay (asection *); +extern int section_is_overlay (struct obj_section *); /* Return true if the overlay section is currently "mapped". */ -extern int section_is_mapped (asection *); +extern int section_is_mapped (struct obj_section *); /* Return true if pc belongs to section's VMA. */ -extern CORE_ADDR pc_in_mapped_range (CORE_ADDR, asection *); +extern CORE_ADDR pc_in_mapped_range (CORE_ADDR, struct obj_section *); /* Return true if pc belongs to section's LMA. */ -extern CORE_ADDR pc_in_unmapped_range (CORE_ADDR, asection *); +extern CORE_ADDR pc_in_unmapped_range (CORE_ADDR, struct obj_section *); /* Map an address from a section's LMA to its VMA. */ -extern CORE_ADDR overlay_mapped_address (CORE_ADDR, asection *); +extern CORE_ADDR overlay_mapped_address (CORE_ADDR, struct obj_section *); /* Map an address from a section's VMA to its LMA. */ -extern CORE_ADDR overlay_unmapped_address (CORE_ADDR, asection *); +extern CORE_ADDR overlay_unmapped_address (CORE_ADDR, struct obj_section *); /* Convert an address in an overlay section (force into VMA range). */ -extern CORE_ADDR symbol_overlayed_address (CORE_ADDR, asection *); +extern CORE_ADDR symbol_overlayed_address (CORE_ADDR, struct obj_section *); /* Load symbols from a file. */ extern void symbol_file_add_main (char *args, int from_tty); @@ -364,7 +390,7 @@ void free_symfile_segment_data (struct symfile_segment_data *data); extern int dwarf2_has_info (struct objfile *); -extern void dwarf2_build_psymtabs (struct objfile *, int); +extern void dwarf2_build_psymtabs (struct objfile *); extern void dwarf2_build_frame_info (struct objfile *); void dwarf2_free_objfile (struct objfile *);