/* 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
+ Free Software Foundation, Inc.
This file is part of GDB.
#include "symtab.h"
/* Opaque declarations. */
-struct section_table;
+struct target_section;
struct objfile;
struct obj_section;
struct obstack;
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);
/* #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,
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 *bfd, int symfile_flags,
+ struct objfile *objfile);
+
+extern char *find_separate_debug_file_by_debuglink (struct objfile *objfile);
/* Create a new section_addr_info, with room for NUM_SECTIONS. */
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
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 **);
/* Variables */
-/* If non-zero, gdb will notify the user when it is loading symbols
- from a file. This is almost always what users will want to have happen;
- but for programs with lots of dynamically linked libraries, the output
- can be more noise than signal. */
-
-extern int print_symbol_loading;
-
/* If non-zero, shared library symbols will be added automatically
when the inferior is created, new libraries are loaded, or when
attaching to the inferior. This is almost always what users will
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 *);
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: */
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 *);