aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDoug Evans <dje@google.com>2014-01-14 18:30:31 -0800
committerDoug Evans <dje@google.com>2014-01-14 18:30:31 -0800
commit206f2a5777679e6d1ad21ce435f6e7af92e2d41a (patch)
treea4fa8416d471b8b535238214a70235df78c4022e
parent540c2971fa25a14ae16a9bb14ba2f424b5f1ea96 (diff)
downloadgdb-206f2a5777679e6d1ad21ce435f6e7af92e2d41a.zip
gdb-206f2a5777679e6d1ad21ce435f6e7af92e2d41a.tar.gz
gdb-206f2a5777679e6d1ad21ce435f6e7af92e2d41a.tar.bz2
psymtab cleanup patch 2/3
This patch adds two typedefs: expand_symtabs_file_matcher_ftype expand_symtabs_symbol_matcher_ftype It also renames the NAME_MATCHER argument in expand_symtabs_matching. The function is named expand_symtabs_matching and it takes a name_matcher argument. Name of what? The symtab? A symbol? I made it SYMBOL_MATCHER to make it clearer. * symfile.h (expand_symtabs_file_matcher_ftype): New typedef. (expand_symtabs_symbol_matcher_ftype): New typedef. (quick_symbol_functions.expand_symtabs_matching): Update to use. expand_symtabs_file_matcher_ftype, expand_symtabs_symbol_matcher_ftype. * symfile.c (expand_partial_symbol_names): Update to use expand_symtabs_symbol_matcher_ftype. * dwarf2read.c (dw2_expand_symtabs_matching): Update to use expand_symtabs_file_matcher_ftype, expand_symtabs_symbol_matcher_ftype. Arg name_matcher renamed to symbol_matcher. * psymtab.c (recursively_search_psymtabs): Update to use expand_symtabs_symbol_matcher_ftype. Arg name_matcher renamed to sym_matcher. (expand_symtabs_matching_via_partial): Update to use expand_symtabs_file_matcher_ftype, expand_symtabs_symbol_matcher_ftype. Arg name_matcher renamed to symbol_matcher.
-rw-r--r--gdb/ChangeLog18
-rw-r--r--gdb/dwarf2read.c6
-rw-r--r--gdb/psymtab.c12
-rw-r--r--gdb/symfile.c2
-rw-r--r--gdb/symfile.h22
5 files changed, 45 insertions, 15 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 015e4cc..1ea6dac 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,23 @@
2014-01-14 Doug Evans <dje@google.com>
+ * symfile.h (expand_symtabs_file_matcher_ftype): New typedef.
+ (expand_symtabs_symbol_matcher_ftype): New typedef.
+ (quick_symbol_functions.expand_symtabs_matching): Update to use.
+ expand_symtabs_file_matcher_ftype, expand_symtabs_symbol_matcher_ftype.
+ * symfile.c (expand_partial_symbol_names): Update to use
+ expand_symtabs_symbol_matcher_ftype.
+ * dwarf2read.c (dw2_expand_symtabs_matching): Update to use
+ expand_symtabs_file_matcher_ftype, expand_symtabs_symbol_matcher_ftype.
+ Arg name_matcher renamed to symbol_matcher.
+ * psymtab.c (recursively_search_psymtabs): Update to use
+ expand_symtabs_symbol_matcher_ftype. Arg name_matcher renamed to
+ sym_matcher.
+ (expand_symtabs_matching_via_partial): Update to use
+ expand_symtabs_file_matcher_ftype, expand_symtabs_symbol_matcher_ftype.
+ Arg name_matcher renamed to symbol_matcher.
+
+2014-01-14 Doug Evans <dje@google.com>
+
* psymtab.c (expand_partial_symbol_names): Delete, moved to symfile.c.
(map_partial_symbol_filenames): Ditto.
* psymtab.h (expand_partial_symbol_names): Delete, moved to symfile.h.
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index 36e8a62..609698b 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -3771,8 +3771,8 @@ dw2_map_matching_symbols (struct objfile *objfile,
static void
dw2_expand_symtabs_matching
(struct objfile *objfile,
- int (*file_matcher) (const char *, void *, int basenames),
- int (*name_matcher) (const char *, void *),
+ expand_symtabs_file_matcher_ftype *file_matcher,
+ expand_symtabs_symbol_matcher_ftype *symbol_matcher,
enum search_domain kind,
void *data)
{
@@ -3876,7 +3876,7 @@ dw2_expand_symtabs_matching
name = index->constant_pool + MAYBE_SWAP (index->symbol_table[idx]);
- if (! (*name_matcher) (name, data))
+ if (! (*symbol_matcher) (name, data))
continue;
/* The name was matched, now expand corresponding CUs that were
diff --git a/gdb/psymtab.c b/gdb/psymtab.c
index ce45589..457b91a 100644
--- a/gdb/psymtab.c
+++ b/gdb/psymtab.c
@@ -1281,7 +1281,7 @@ static int
recursively_search_psymtabs (struct partial_symtab *ps,
struct objfile *objfile,
enum search_domain kind,
- int (*name_matcher) (const char *, void *),
+ expand_symtabs_symbol_matcher_ftype *sym_matcher,
void *data)
{
struct partial_symbol **psym;
@@ -1304,7 +1304,7 @@ recursively_search_psymtabs (struct partial_symtab *ps,
continue;
r = recursively_search_psymtabs (ps->dependencies[i],
- objfile, kind, name_matcher, data);
+ objfile, kind, sym_matcher, data);
if (r != 0)
{
ps->searched_flag = PST_SEARCHED_AND_FOUND;
@@ -1346,7 +1346,7 @@ recursively_search_psymtabs (struct partial_symtab *ps,
&& PSYMBOL_CLASS (*psym) == LOC_BLOCK)
|| (kind == TYPES_DOMAIN
&& PSYMBOL_CLASS (*psym) == LOC_TYPEDEF))
- && (*name_matcher) (SYMBOL_SEARCH_NAME (*psym), data))
+ && (*sym_matcher) (SYMBOL_SEARCH_NAME (*psym), data))
{
/* Found a match, so notify our caller. */
result = PST_SEARCHED_AND_FOUND;
@@ -1363,8 +1363,8 @@ recursively_search_psymtabs (struct partial_symtab *ps,
static void
expand_symtabs_matching_via_partial
(struct objfile *objfile,
- int (*file_matcher) (const char *, void *, int basenames),
- int (*name_matcher) (const char *, void *),
+ expand_symtabs_file_matcher_ftype *file_matcher,
+ expand_symtabs_symbol_matcher_ftype *symbol_matcher,
enum search_domain kind,
void *data)
{
@@ -1406,7 +1406,7 @@ expand_symtabs_matching_via_partial
continue;
}
- if (recursively_search_psymtabs (ps, objfile, kind, name_matcher, data))
+ if (recursively_search_psymtabs (ps, objfile, kind, symbol_matcher, data))
psymtab_to_symtab (objfile, ps);
}
}
diff --git a/gdb/symfile.c b/gdb/symfile.c
index 607a648..89ed34c 100644
--- a/gdb/symfile.c
+++ b/gdb/symfile.c
@@ -3843,7 +3843,7 @@ symfile_free_objfile (struct objfile *objfile)
See quick_symbol_functions.expand_symtabs_matching for details. */
void
-expand_partial_symbol_names (int (*fun) (const char *, void *),
+expand_partial_symbol_names (expand_symtabs_symbol_matcher_ftype *fun,
void *data)
{
struct objfile *objfile;
diff --git a/gdb/symfile.h b/gdb/symfile.h
index 380c8cd..c48b368 100644
--- a/gdb/symfile.h
+++ b/gdb/symfile.h
@@ -125,6 +125,18 @@ struct symfile_segment_data
typedef void (symbol_filename_ftype) (const char *filename,
const char *fullname, void *data);
+/* Callback for quick_symbol_functions->expand_symtabs_matching
+ to match a file name. */
+
+typedef int (expand_symtabs_file_matcher_ftype) (const char *filename,
+ void *data, int basenames);
+
+/* Callback for quick_symbol_functions->expand_symtabs_matching
+ to match a symbol name. */
+
+typedef int (expand_symtabs_symbol_matcher_ftype) (const char *name,
+ void *data);
+
/* The "quick" symbol functions exist so that symbol readers can
avoiding an initial read of all the symbols. For example, symbol
readers might choose to use the "partial symbol table" utilities,
@@ -256,11 +268,11 @@ struct quick_symbol_functions
Otherwise, if KIND does not match this symbol is skipped.
- If even KIND matches, then NAME_MATCHER is called for each symbol
+ If even KIND matches, then SYMBOL_MATCHER is called for each symbol
defined in the file. The symbol "search" name and DATA are passed
- to NAME_MATCHER.
+ to SYMBOL_MATCHER.
- If NAME_MATCHER returns zero, then this symbol is skipped.
+ If SYMBOL_MATCHER returns zero, then this symbol is skipped.
Otherwise, this symbol's symbol table is expanded.
@@ -268,8 +280,8 @@ struct quick_symbol_functions
functions. */
void (*expand_symtabs_matching)
(struct objfile *objfile,
- int (*file_matcher) (const char *, void *, int basenames),
- int (*name_matcher) (const char *, void *),
+ expand_symtabs_file_matcher_ftype *file_matcher,
+ expand_symtabs_symbol_matcher_ftype *symbol_matcher,
enum search_domain kind,
void *data);