Index: gdb/symfile.h |
diff --git a/gdb/symfile.h b/gdb/symfile.h |
index aca73594d7ebdb1a7e289c7a2c985aa191e29a29..106a9d9affa33dd59f7b8f6da7c2fd15c6e0650f 100644 |
--- a/gdb/symfile.h |
+++ b/gdb/symfile.h |
@@ -1,6 +1,6 @@ |
/* Definitions for reading symbol files into GDB. |
- Copyright (C) 1990-2004, 2007-2012 Free Software Foundation, Inc. |
+ Copyright (C) 1990-2013 Free Software Foundation, Inc. |
This file is part of GDB. |
@@ -22,7 +22,7 @@ |
/* This file requires that you first include "bfd.h". */ |
#include "symtab.h" |
-#include "gdb_vecs.h" |
+#include "probe.h" |
/* Opaque declarations. */ |
struct target_section; |
@@ -159,9 +159,10 @@ struct quick_symbol_functions |
/* Expand and iterate over each "partial" symbol table in OBJFILE |
where the source file is named NAME. |
- If NAME is not absolute, a match after a '/' in the symbol |
- table's file name will also work. FULL_PATH is the absolute file |
- name, and REAL_PATH is the same, run through gdb_realpath. |
+ If NAME is not absolute, a match after a '/' in the symbol table's |
+ file name will also work, REAL_PATH is NULL then. If NAME is |
+ absolute then REAL_PATH is non-NULL absolute file name as resolved |
+ via gdb_realpath from NAME. |
If a match is found, the "partial" symbol table is expanded. |
Then, this calls iterate_over_some_symtabs (or equivalent) over |
@@ -169,7 +170,6 @@ struct quick_symbol_functions |
The result of this call is returned. */ |
int (*map_symtabs_matching_filename) (struct objfile *objfile, |
const char *name, |
- const char *full_path, |
const char *real_path, |
int (*callback) (struct symtab *, |
void *), |
@@ -189,16 +189,6 @@ struct quick_symbol_functions |
int kind, const char *name, |
domain_enum domain); |
- /* This is called to expand symbol tables before looking up a |
- symbol. A backend can choose to implement this and then have its |
- `lookup_symbol' hook always return NULL, or the reverse. (It |
- doesn't make sense to implement both.) The arguments are as for |
- `lookup_symbol'. */ |
- void (*pre_expand_symtabs_matching) (struct objfile *objfile, |
- enum block_enum block_kind, |
- const char *name, |
- domain_enum domain); |
- |
/* Print statistics about any indices loaded for OBJFILE. The |
statistics should be printed to gdb_stdout. This is used for |
"maint print statistics". */ |
@@ -211,8 +201,8 @@ struct quick_symbol_functions |
/* This is called by objfile_relocate to relocate any indices loaded |
for OBJFILE. */ |
void (*relocate) (struct objfile *objfile, |
- struct section_offsets *new_offsets, |
- struct section_offsets *delta); |
+ const struct section_offsets *new_offsets, |
+ const struct section_offsets *delta); |
/* Find all the symbols in OBJFILE named FUNC_NAME, and ensure that |
the corresponding symbol tables are loaded. */ |
@@ -222,17 +212,13 @@ struct quick_symbol_functions |
/* Read all symbol tables associated with OBJFILE. */ |
void (*expand_all_symtabs) (struct objfile *objfile); |
- /* Read all symbol tables associated with OBJFILE which have the |
- file name FILENAME. |
+ /* Read all symbol tables associated with OBJFILE which have |
+ symtab_to_fullname equal to FULLNAME. |
This is for the purposes of examining code only, e.g., expand_line_sal. |
The routine may ignore debug info that is known to not be useful with |
code, e.g., DW_TAG_type_unit for dwarf debug info. */ |
- void (*expand_symtabs_with_filename) (struct objfile *objfile, |
- const char *filename); |
- |
- /* Return the file name of the file holding the global symbol in OBJFILE |
- named NAME. If no such symbol exists in OBJFILE, return NULL. */ |
- const char *(*find_symbol_file) (struct objfile *objfile, const char *name); |
+ void (*expand_symtabs_with_fullname) (struct objfile *objfile, |
+ const char *fullname); |
/* Find global or static symbols in all tables that are in NAMESPACE |
and for which MATCH (symbol name, NAME) == 0, passing each to |
@@ -251,8 +237,9 @@ struct quick_symbol_functions |
CALLBACK returns 0 to indicate that the scan should continue, or |
non-zero to indicate that the scan should be terminated. */ |
- void (*map_matching_symbols) (const char *name, domain_enum namespace, |
- struct objfile *, int global, |
+ void (*map_matching_symbols) (struct objfile *, |
+ const char *name, domain_enum namespace, |
+ int global, |
int (*callback) (struct block *, |
struct symbol *, void *), |
void *data, |
@@ -264,6 +251,8 @@ struct quick_symbol_functions |
FILE_MATCHER is called for each file in OBJFILE. The file name |
and the DATA argument are passed to it. If it returns zero, this |
file is skipped. If FILE_MATCHER is NULL such file is not skipped. |
+ If BASENAMES is non-zero the function should consider only base name of |
+ DATA (passed file name is already only the lbasename part). |
Otherwise, if KIND does not match this symbol is skipped. |
@@ -279,7 +268,7 @@ struct quick_symbol_functions |
functions. */ |
void (*expand_symtabs_matching) |
(struct objfile *objfile, |
- int (*file_matcher) (const char *, void *), |
+ int (*file_matcher) (const char *, void *, int basenames), |
int (*name_matcher) (const char *, void *), |
enum search_domain kind, |
void *data); |
@@ -316,39 +305,10 @@ struct sym_probe_fns |
OBJFILE. */ |
VEC (probe_p) *(*sym_get_probes) (struct objfile *); |
- /* Return the number of arguments available to PROBE. PROBE will |
- have come from a call to this objfile's sym_get_probes method. |
- If you provide an implementation of sym_get_probes, you must |
- implement this method as well. */ |
- unsigned (*sym_get_probe_argument_count) (struct objfile *objfile, |
- struct probe *probe); |
- |
- /* Evaluate the Nth argument available to PROBE. PROBE will have |
- come from a call to this objfile's sym_get_probes method. N will |
- be between 0 and the number of arguments available to this probe. |
- FRAME is the frame in which the evaluation is done; the frame's |
- PC will match the address of the probe. If you provide an |
- implementation of sym_get_probes, you must implement this method |
- as well. */ |
- struct value *(*sym_evaluate_probe_argument) (struct objfile *objfile, |
- struct probe *probe, |
- unsigned n); |
- |
- /* Compile the Nth probe argument to an agent expression. PROBE |
- will have come from a call to this objfile's sym_get_probes |
- method. N will be between 0 and the number of arguments |
- available to this probe. EXPR and VALUE are the agent expression |
- that is being updated. */ |
- void (*sym_compile_to_ax) (struct objfile *objfile, |
- struct probe *probe, |
- struct agent_expr *expr, |
- struct axs_value *value, |
- unsigned n); |
- |
/* Relocate the probe section of OBJFILE. */ |
void (*sym_relocate_probe) (struct objfile *objfile, |
- struct section_offsets *new_offsets, |
- struct section_offsets *delta); |
+ const struct section_offsets *new_offsets, |
+ const struct section_offsets *delta); |
}; |
/* Structure to keep track of symbol reading functions for various |
@@ -356,12 +316,6 @@ struct sym_probe_fns |
struct sym_fns |
{ |
- |
- /* BFD flavour that we handle, or (as a special kludge, see |
- xcoffread.c, (enum bfd_flavour)-1 for xcoff). */ |
- |
- enum bfd_flavour sym_flavour; |
- |
/* Initializes anything that is global to the entire symbol table. |
It is called during symbol_file_add, when we begin debugging an |
entirely new program. */ |
@@ -401,7 +355,7 @@ struct sym_fns |
probably be changed to a string, where NULL means the default, |
and others are parsed in a file dependent way. */ |
- void (*sym_offsets) (struct objfile *, struct section_addr_info *); |
+ void (*sym_offsets) (struct objfile *, const struct section_addr_info *); |
/* This function produces a format-independent description of |
the segments of ABFD. Each segment is a unit of the file |
@@ -413,7 +367,7 @@ struct sym_fns |
the line table cannot be read while processing the debugging |
information. */ |
- void (*sym_read_linetable) (void); |
+ void (*sym_read_linetable) (struct objfile *); |
/* Relocate the contents of a debug section SECTP. The |
contents are stored in BUF if it is non-NULL, or returned in a |
@@ -435,7 +389,7 @@ extern struct section_addr_info * |
extern void relative_addr_info_to_section_offsets |
(struct section_offsets *section_offsets, int num_sections, |
- struct section_addr_info *addrs); |
+ const struct section_addr_info *addrs); |
extern void addr_info_make_relative (struct section_addr_info *addrs, |
bfd *abfd); |
@@ -444,7 +398,7 @@ extern void addr_info_make_relative (struct section_addr_info *addrs, |
do anything special. */ |
extern void default_symfile_offsets (struct objfile *objfile, |
- struct section_addr_info *); |
+ const struct section_addr_info *); |
/* The default version of sym_fns.sym_segments for readers that don't |
do anything special. */ |
@@ -457,12 +411,13 @@ extern struct symfile_segment_data *default_symfile_segments (bfd *abfd); |
extern bfd_byte *default_symfile_relocate (struct objfile *objfile, |
asection *sectp, bfd_byte *buf); |
-extern struct symtab *allocate_symtab (const char *, struct objfile *); |
+extern struct symtab *allocate_symtab (const char *, struct objfile *) |
+ ATTRIBUTE_NONNULL (1); |
-extern void add_symtab_fns (const struct sym_fns *); |
+extern void add_symtab_fns (enum bfd_flavour flavour, const struct sym_fns *); |
/* This enum encodes bit-flags passed as ADD_FLAGS parameter to |
- syms_from_objfile, symbol_file_add, etc. */ |
+ symbol_file_add, etc. */ |
enum symfile_add_flags |
{ |
@@ -481,20 +436,17 @@ enum symfile_add_flags |
SYMFILE_NO_READ = 1 << 4 |
}; |
-extern void syms_from_objfile (struct objfile *, |
- struct section_addr_info *, |
- struct section_offsets *, int, int); |
- |
extern void new_symfile_objfile (struct objfile *, int); |
-extern struct objfile *symbol_file_add (char *, int, |
+extern struct objfile *symbol_file_add (const char *, int, |
struct section_addr_info *, int); |
-extern struct objfile *symbol_file_add_from_bfd (bfd *, int, |
+extern struct objfile *symbol_file_add_from_bfd (bfd *, const char *, int, |
struct section_addr_info *, |
int, struct objfile *parent); |
-extern void symbol_file_add_separate (bfd *, int, struct objfile *); |
+extern void symbol_file_add_separate (bfd *, const char *, int, |
+ struct objfile *); |
extern char *find_separate_debug_file_by_debuglink (struct objfile *); |
@@ -518,19 +470,6 @@ extern struct section_addr_info |
extern void free_section_addr_info (struct section_addr_info *); |
-/* Make a copy of the string at PTR with SIZE characters in the symbol |
- obstack (and add a null character at the end in the copy). Returns |
- the address of the copy. */ |
- |
-extern char *obsavestring (const char *, int, struct obstack *); |
- |
-/* Concatenate NULL terminated variable argument list of `const char |
- *' strings; return the new string. Space is found in the OBSTACKP. |
- Argument list must be terminated by a sentinel expression `(char *) |
- NULL'. */ |
- |
-extern char *obconcat (struct obstack *obstackp, ...) ATTRIBUTE_SENTINEL; |
- |
/* Variables */ |
/* If non-zero, shared library symbols will be added automatically |
@@ -551,9 +490,9 @@ extern void set_initial_language (void); |
extern void find_lowest_section (bfd *, asection *, void *); |
-extern bfd *symfile_bfd_open (char *); |
+extern bfd *symfile_bfd_open (const char *); |
-extern bfd *bfd_open_maybe_remote (const char *); |
+extern bfd *gdb_bfd_open_maybe_remote (const char *); |
extern int get_section_index (struct objfile *, char *); |
@@ -595,7 +534,7 @@ extern CORE_ADDR overlay_unmapped_address (CORE_ADDR, struct obj_section *); |
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); |
+extern void symbol_file_add_main (const char *args, int from_tty); |
/* Clear GDB symbol tables. */ |
extern void symbol_file_clear (int from_tty); |
@@ -607,7 +546,7 @@ extern bfd_byte *symfile_relocate_debug_section (struct objfile *, asection *, |
bfd_byte *); |
extern int symfile_map_offsets_to_segments (bfd *, |
- struct symfile_segment_data *, |
+ const struct symfile_segment_data *, |
struct section_offsets *, |
int, const CORE_ADDR *); |
struct symfile_segment_data *get_symfile_segment_data (bfd *abfd); |
@@ -667,7 +606,7 @@ enum dwarf2_section_enum { |
extern void dwarf2_get_section_info (struct objfile *, |
enum dwarf2_section_enum, |
- asection **, gdb_byte **, |
+ asection **, const gdb_byte **, |
bfd_size_type *); |
extern int dwarf2_initialize_objfile (struct objfile *); |
@@ -678,13 +617,6 @@ void dwarf2_free_objfile (struct objfile *); |
/* From mdebugread.c */ |
-/* Hack to force structures to exist before use in parameter list. */ |
-struct ecoff_debug_hack |
-{ |
- struct ecoff_debug_swap *a; |
- struct ecoff_debug_info *b; |
-}; |
- |
extern void mdebug_build_psymtabs (struct objfile *, |
const struct ecoff_debug_swap *, |
struct ecoff_debug_info *); |
@@ -693,4 +625,8 @@ extern void elfmdebug_build_psymtabs (struct objfile *, |
const struct ecoff_debug_swap *, |
asection *); |
+/* From minidebug.c. */ |
+ |
+extern bfd *find_separate_debug_file_in_section (struct objfile *); |
+ |
#endif /* !defined(SYMFILE_H) */ |