/* Definitions for reading symbol files into GDB.
- Copyright (C) 1990, 1991, 1992, 1993, 1994, 1996
+ Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+ 2000, 2001, 2002, 2003
Free Software Foundation, Inc.
This file is part of GDB.
/* This file requires that you first include "bfd.h". */
+/* Opaque declarations. */
+struct objfile;
+struct obstack;
+struct block;
+
/* Partial symbols are stored in the psymbol_cache and pointers to them
are kept in a dynamically grown array that is obtained from malloc and
grown as necessary via realloc. Each objfile typically has two of these,
solib.c to communicate the section addresses in shared objects to
symbol_file_add (). */
-#define MAX_SECTIONS 40
+#define MAX_SECTIONS 64
struct section_addr_info
{
- /* Sections whose names are file format dependant. */
+ /* Sections whose names are file format dependent. */
struct other_sections
{
CORE_ADDR addr;
/* The default version of sym_fns.sym_offsets for readers that don't
do anything special. */
-extern void
-default_symfile_offsets (struct objfile *objfile, struct section_addr_info *);
+extern void default_symfile_offsets (struct objfile *objfile,
+ struct section_addr_info *);
-extern void
-extend_psymbol_list (struct psymbol_allocation_list *, struct objfile *);
+extern void extend_psymbol_list (struct psymbol_allocation_list *,
+ struct objfile *);
/* Add any kind of symbol to a psymbol_allocation_list. */
/* #include "demangle.h" */
extern void
-add_psymbol_to_list (char *, int, namespace_enum, enum address_class,
+add_psymbol_to_list (char *, int, domain_enum, enum address_class,
struct psymbol_allocation_list *, long, CORE_ADDR,
enum language, struct objfile *);
extern void
-add_psymbol_with_dem_name_to_list (char *, int, char *, int, namespace_enum,
+add_psymbol_with_dem_name_to_list (char *, int, char *, int, domain_enum,
enum address_class,
struct psymbol_allocation_list *,
long, CORE_ADDR,
extern void init_entry_point_info (struct objfile *);
-extern void
-syms_from_objfile (struct objfile *, struct section_addr_info *, int, int);
+extern void syms_from_objfile (struct objfile *,
+ struct section_addr_info *,
+ struct section_offsets *, int,
+ int, int);
extern void new_symfile_objfile (struct objfile *, int, int);
/* Free all memory allocated by build_section_addr_info_from_section_table. */
-extern void
-free_section_addr_info (struct section_addr_info *);
+extern void free_section_addr_info (struct section_addr_info *);
extern struct partial_symtab *start_psymtab_common (struct objfile *,
(and add a null character at the end in the copy).
Returns the address of the copy. */
-extern char *obsavestring (char *, int, struct obstack *);
+extern char *obsavestring (const char *, int, struct obstack *);
/* Concatenate strings S1, S2 and S3; return the new string.
Space is found in the symbol_obstack. */
/* Variables */
-/* whether to auto load solibs at startup time: 0/1.
-
- On all platforms, 0 means "don't auto load".
+/* 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
+ want to have happen; but for very large programs, the startup time
+ will be excessive, and so if this is a problem, the user can clear
+ this flag and then add the shared library symbols as needed. Note
+ that there is a potential for confusion, since if the shared
+ library symbols are not loaded, commands like "info fun" will *not*
+ report all the functions that are actually present. */
- On HP-UX, > 0 means a threshhold, in megabytes, of symbol table which will
- be auto loaded. When the cumulative size of solib symbol table exceeds
- this threshhold, solibs' symbol tables will not be loaded.
+extern int auto_solib_add;
- On other platforms, > 0 means, "always auto load".
- */
+/* For systems that support it, a threshold size in megabytes. If
+ automatically adding a new library's symbol table to those already
+ known to the debugger would cause the total shared library symbol
+ size to exceed this threshhold, then the shlib's symbols are not
+ added. The threshold is ignored if the user explicitly asks for a
+ shlib to be added, such as when using the "sharedlibrary"
+ command. */
-extern int auto_solib_add;
+extern int auto_solib_limit;
/* From symfile.c */
extern void discard_psymtab (struct partial_symtab *);
-extern void find_lowest_section (bfd *, asection *, PTR);
+extern void find_lowest_section (bfd *, asection *, void *);
extern bfd *symfile_bfd_open (char *);
+extern int get_section_index (struct objfile *, char *);
+
/* Utility functions for overlay sections: */
-extern int overlay_debugging;
+extern enum overlay_debugging_state {
+ ovly_off,
+ ovly_on,
+ ovly_auto
+} overlay_debugging;
extern int overlay_cache_invalid;
/* return the "mapped" overlay section containing the PC */
/* convert an address in an overlay section (force into VMA range) */
extern CORE_ADDR symbol_overlayed_address (CORE_ADDR, asection *);
+/* Load symbols from a file. */
+extern void symbol_file_add_main (char *args, int from_tty);
+
+/* Clear GDB symbol tables. */
+extern void symbol_file_clear (int from_tty);
+
+extern bfd_byte *symfile_relocate_debug_section (bfd *abfd, asection *sectp,
+ bfd_byte *buf);
+
/* From dwarfread.c */
extern void
extern int dwarf2_has_info (bfd * abfd);
extern void dwarf2_build_psymtabs (struct objfile *, int);
+extern void dwarf2_build_frame_info (struct objfile *);
/* From mdebugread.c */