Move quick_symbol_functions to a new header
This introduces a new header, quick-symbol.h, and moves quick_symbol_functions and related typedefs into it. gdb/ChangeLog 2021-03-20 Tom Tromey <tom@tromey.com> * symfile.h (symbol_compare_ftype, symbol_filename_ftype) (expand_symtabs_file_matcher_ftype) (expand_symtabs_symbol_matcher_ftype) (expand_symtabs_exp_notify_ftype, struct quick_symbol_functions): Move to quick-symbol.h. * quick-symbol.h: New file.
This commit is contained in:
parent
4d080b4687
commit
9b99dcc8db
@ -1,3 +1,12 @@
|
|||||||
|
2021-03-20 Tom Tromey <tom@tromey.com>
|
||||||
|
|
||||||
|
* symfile.h (symbol_compare_ftype, symbol_filename_ftype)
|
||||||
|
(expand_symtabs_file_matcher_ftype)
|
||||||
|
(expand_symtabs_symbol_matcher_ftype)
|
||||||
|
(expand_symtabs_exp_notify_ftype, struct quick_symbol_functions):
|
||||||
|
Move to quick-symbol.h.
|
||||||
|
* quick-symbol.h: New file.
|
||||||
|
|
||||||
2021-03-20 Tom Tromey <tom@tromey.com>
|
2021-03-20 Tom Tromey <tom@tromey.com>
|
||||||
|
|
||||||
* symtab.c (iterate_over_symtabs, expand_symtab_containing_pc)
|
* symtab.c (iterate_over_symtabs, expand_symtab_containing_pc)
|
||||||
|
228
gdb/quick-symbol.h
Normal file
228
gdb/quick-symbol.h
Normal file
@ -0,0 +1,228 @@
|
|||||||
|
/* "Quick" symbol functions
|
||||||
|
|
||||||
|
Copyright (C) 2021 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This file is part of GDB.
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
#ifndef GDB_QUICK_SYMBOL_H
|
||||||
|
#define GDB_QUICK_SYMBOL_H
|
||||||
|
|
||||||
|
/* Comparison function for symbol look ups. */
|
||||||
|
|
||||||
|
typedef int (symbol_compare_ftype) (const char *string1,
|
||||||
|
const char *string2);
|
||||||
|
|
||||||
|
/* Callback for quick_symbol_functions->map_symbol_filenames. */
|
||||||
|
|
||||||
|
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 bool (expand_symtabs_file_matcher_ftype) (const char *filename,
|
||||||
|
bool basenames);
|
||||||
|
|
||||||
|
/* Callback for quick_symbol_functions->expand_symtabs_matching
|
||||||
|
to match a symbol name. */
|
||||||
|
|
||||||
|
typedef bool (expand_symtabs_symbol_matcher_ftype) (const char *name);
|
||||||
|
|
||||||
|
/* Callback for quick_symbol_functions->expand_symtabs_matching
|
||||||
|
to be called after a symtab has been expanded. */
|
||||||
|
|
||||||
|
typedef void (expand_symtabs_exp_notify_ftype) (compunit_symtab *symtab);
|
||||||
|
|
||||||
|
/* 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,
|
||||||
|
which is one implementation of the quick symbol functions.
|
||||||
|
|
||||||
|
The quick symbol functions are generally opaque: the underlying
|
||||||
|
representation is hidden from the caller.
|
||||||
|
|
||||||
|
In general, these functions should only look at whatever special
|
||||||
|
index the symbol reader creates -- looking through the symbol
|
||||||
|
tables themselves is handled by generic code. If a function is
|
||||||
|
defined as returning a "symbol table", this means that the function
|
||||||
|
should only return a newly-created symbol table; it should not
|
||||||
|
examine pre-existing ones.
|
||||||
|
|
||||||
|
The exact list of functions here was determined in an ad hoc way
|
||||||
|
based on gdb's history. */
|
||||||
|
|
||||||
|
struct quick_symbol_functions
|
||||||
|
{
|
||||||
|
/* Return true if this objfile has any "partial" symbols
|
||||||
|
available. */
|
||||||
|
bool (*has_symbols) (struct objfile *objfile);
|
||||||
|
|
||||||
|
/* Return the symbol table for the "last" file appearing in
|
||||||
|
OBJFILE. */
|
||||||
|
struct symtab *(*find_last_source_symtab) (struct objfile *objfile);
|
||||||
|
|
||||||
|
/* Forget all cached full file names for OBJFILE. */
|
||||||
|
void (*forget_cached_source_info) (struct objfile *objfile);
|
||||||
|
|
||||||
|
/* 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, 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
|
||||||
|
all newly-created symbol tables, passing CALLBACK to it.
|
||||||
|
The result of this call is returned. */
|
||||||
|
bool (*map_symtabs_matching_filename)
|
||||||
|
(struct objfile *objfile, const char *name, const char *real_path,
|
||||||
|
gdb::function_view<bool (symtab *)> callback);
|
||||||
|
|
||||||
|
/* Check to see if the symbol is defined in a "partial" symbol table
|
||||||
|
of OBJFILE. BLOCK_INDEX should be either GLOBAL_BLOCK or STATIC_BLOCK,
|
||||||
|
depending on whether we want to search global symbols or static
|
||||||
|
symbols. NAME is the name of the symbol to look for. DOMAIN
|
||||||
|
indicates what sort of symbol to search for.
|
||||||
|
|
||||||
|
Returns the newly-expanded compunit in which the symbol is
|
||||||
|
defined, or NULL if no such symbol table exists. If OBJFILE
|
||||||
|
contains !TYPE_OPAQUE symbol prefer its compunit. If it contains
|
||||||
|
only TYPE_OPAQUE symbol(s), return at least that compunit. */
|
||||||
|
struct compunit_symtab *(*lookup_symbol) (struct objfile *objfile,
|
||||||
|
block_enum block_index,
|
||||||
|
const char *name,
|
||||||
|
domain_enum domain);
|
||||||
|
|
||||||
|
/* Check to see if the global symbol is defined in a "partial" symbol table
|
||||||
|
of OBJFILE. NAME is the name of the symbol to look for. DOMAIN
|
||||||
|
indicates what sort of symbol to search for.
|
||||||
|
|
||||||
|
If found, sets *symbol_found_p to true and returns the symbol language.
|
||||||
|
defined, or NULL if no such symbol table exists. */
|
||||||
|
enum language (*lookup_global_symbol_language) (struct objfile *objfile,
|
||||||
|
const char *name,
|
||||||
|
domain_enum domain,
|
||||||
|
bool *symbol_found_p);
|
||||||
|
|
||||||
|
/* Print statistics about any indices loaded for OBJFILE. The
|
||||||
|
statistics should be printed to gdb_stdout. This is used for
|
||||||
|
"maint print statistics". */
|
||||||
|
void (*print_stats) (struct objfile *objfile);
|
||||||
|
|
||||||
|
/* Dump any indices loaded for OBJFILE. The dump should go to
|
||||||
|
gdb_stdout. This is used for "maint print objfiles". */
|
||||||
|
void (*dump) (struct objfile *objfile);
|
||||||
|
|
||||||
|
/* Find all the symbols in OBJFILE named FUNC_NAME, and ensure that
|
||||||
|
the corresponding symbol tables are loaded. */
|
||||||
|
void (*expand_symtabs_for_function) (struct objfile *objfile,
|
||||||
|
const char *func_name);
|
||||||
|
|
||||||
|
/* Read all symbol tables associated with OBJFILE. */
|
||||||
|
void (*expand_all_symtabs) (struct objfile *objfile);
|
||||||
|
|
||||||
|
/* 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_fullname) (struct objfile *objfile,
|
||||||
|
const char *fullname);
|
||||||
|
|
||||||
|
/* Find global or static symbols in all tables that are in DOMAIN
|
||||||
|
and for which MATCH (symbol name, NAME) == 0, passing each to
|
||||||
|
CALLBACK, reading in partial symbol tables as needed. Look
|
||||||
|
through global symbols if GLOBAL and otherwise static symbols.
|
||||||
|
Passes NAME and NAMESPACE to CALLBACK with each symbol
|
||||||
|
found. After each block is processed, passes NULL to CALLBACK.
|
||||||
|
MATCH must be weaker than strcmp_iw_ordered in the sense that
|
||||||
|
strcmp_iw_ordered(x,y) == 0 --> MATCH(x,y) == 0. ORDERED_COMPARE,
|
||||||
|
if non-null, must be an ordering relation compatible with
|
||||||
|
strcmp_iw_ordered in the sense that
|
||||||
|
strcmp_iw_ordered(x,y) == 0 --> ORDERED_COMPARE(x,y) == 0
|
||||||
|
and
|
||||||
|
strcmp_iw_ordered(x,y) <= 0 --> ORDERED_COMPARE(x,y) <= 0
|
||||||
|
(allowing strcmp_iw_ordered(x,y) < 0 while ORDERED_COMPARE(x, y) == 0).
|
||||||
|
CALLBACK returns true to indicate that the scan should continue, or
|
||||||
|
false to indicate that the scan should be terminated. */
|
||||||
|
|
||||||
|
void (*map_matching_symbols)
|
||||||
|
(struct objfile *,
|
||||||
|
const lookup_name_info &lookup_name,
|
||||||
|
domain_enum domain,
|
||||||
|
int global,
|
||||||
|
gdb::function_view<symbol_found_callback_ftype> callback,
|
||||||
|
symbol_compare_ftype *ordered_compare);
|
||||||
|
|
||||||
|
/* Expand all symbol tables in OBJFILE matching some criteria.
|
||||||
|
|
||||||
|
FILE_MATCHER is called for each file in OBJFILE. The file name
|
||||||
|
is passed to it. If the matcher returns false, the file is
|
||||||
|
skipped. If FILE_MATCHER is NULL the file is not skipped. If
|
||||||
|
BASENAMES is true the matcher should consider only file base
|
||||||
|
names (the passed file name is already only the lbasename'd
|
||||||
|
part).
|
||||||
|
|
||||||
|
If the file is not skipped, and SYMBOL_MATCHER and LOOKUP_NAME are NULL,
|
||||||
|
the symbol table is expanded.
|
||||||
|
|
||||||
|
Otherwise, individual symbols are considered.
|
||||||
|
|
||||||
|
If KIND does not match, the symbol is skipped.
|
||||||
|
|
||||||
|
If the symbol name does not match LOOKUP_NAME, the symbol is skipped.
|
||||||
|
|
||||||
|
If SYMBOL_MATCHER returns false, then the symbol is skipped.
|
||||||
|
|
||||||
|
Otherwise, the symbol's symbol table is expanded. */
|
||||||
|
void (*expand_symtabs_matching)
|
||||||
|
(struct objfile *objfile,
|
||||||
|
gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
|
||||||
|
const lookup_name_info *lookup_name,
|
||||||
|
gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
|
||||||
|
gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
|
||||||
|
enum search_domain kind);
|
||||||
|
|
||||||
|
/* Return the comp unit from OBJFILE that contains PC and
|
||||||
|
SECTION. Return NULL if there is no such compunit. This
|
||||||
|
should return the compunit that contains a symbol whose
|
||||||
|
address exactly matches PC, or, if there is no exact match, the
|
||||||
|
compunit that contains a symbol whose address is closest to
|
||||||
|
PC. */
|
||||||
|
struct compunit_symtab *(*find_pc_sect_compunit_symtab)
|
||||||
|
(struct objfile *objfile, struct bound_minimal_symbol msymbol,
|
||||||
|
CORE_ADDR pc, struct obj_section *section, int warn_if_readin);
|
||||||
|
|
||||||
|
/* Return the comp unit from OBJFILE that contains a symbol at
|
||||||
|
ADDRESS. Return NULL if there is no such comp unit. Unlike
|
||||||
|
find_pc_sect_compunit_symtab, any sort of symbol (not just text
|
||||||
|
symbols) can be considered, and only exact address matches are
|
||||||
|
considered. This pointer may be NULL. */
|
||||||
|
struct compunit_symtab *(*find_compunit_symtab_by_address)
|
||||||
|
(struct objfile *objfile, CORE_ADDR address);
|
||||||
|
|
||||||
|
/* Call a callback for every file defined in OBJFILE whose symtab is
|
||||||
|
not already read in. FUN is the callback. It is passed the file's
|
||||||
|
FILENAME, the file's FULLNAME (if need_fullname is non-zero), and
|
||||||
|
the DATA passed to this function. */
|
||||||
|
void (*map_symbol_filenames) (struct objfile *objfile,
|
||||||
|
symbol_filename_ftype *fun, void *data,
|
||||||
|
int need_fullname);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* GDB_QUICK_SYMBOL_H */
|
206
gdb/symfile.h
206
gdb/symfile.h
@ -28,6 +28,7 @@
|
|||||||
#include "gdb_bfd.h"
|
#include "gdb_bfd.h"
|
||||||
#include "gdbsupport/function-view.h"
|
#include "gdbsupport/function-view.h"
|
||||||
#include "target-section.h"
|
#include "target-section.h"
|
||||||
|
#include "quick-symbol.h"
|
||||||
|
|
||||||
/* Opaque declarations. */
|
/* Opaque declarations. */
|
||||||
struct target_section;
|
struct target_section;
|
||||||
@ -41,11 +42,6 @@ struct agent_expr;
|
|||||||
struct axs_value;
|
struct axs_value;
|
||||||
class probe;
|
class probe;
|
||||||
|
|
||||||
/* Comparison function for symbol look ups. */
|
|
||||||
|
|
||||||
typedef int (symbol_compare_ftype) (const char *string1,
|
|
||||||
const char *string2);
|
|
||||||
|
|
||||||
struct other_sections
|
struct other_sections
|
||||||
{
|
{
|
||||||
other_sections (CORE_ADDR addr_, std::string &&name_, int sectindex_)
|
other_sections (CORE_ADDR addr_, std::string &&name_, int sectindex_)
|
||||||
@ -107,206 +103,6 @@ struct symfile_segment_data
|
|||||||
|
|
||||||
using symfile_segment_data_up = std::unique_ptr<symfile_segment_data>;
|
using symfile_segment_data_up = std::unique_ptr<symfile_segment_data>;
|
||||||
|
|
||||||
/* Callback for quick_symbol_functions->map_symbol_filenames. */
|
|
||||||
|
|
||||||
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 bool (expand_symtabs_file_matcher_ftype) (const char *filename,
|
|
||||||
bool basenames);
|
|
||||||
|
|
||||||
/* Callback for quick_symbol_functions->expand_symtabs_matching
|
|
||||||
to match a symbol name. */
|
|
||||||
|
|
||||||
typedef bool (expand_symtabs_symbol_matcher_ftype) (const char *name);
|
|
||||||
|
|
||||||
/* Callback for quick_symbol_functions->expand_symtabs_matching
|
|
||||||
to be called after a symtab has been expanded. */
|
|
||||||
|
|
||||||
typedef void (expand_symtabs_exp_notify_ftype) (compunit_symtab *symtab);
|
|
||||||
|
|
||||||
/* 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,
|
|
||||||
which is one implementation of the quick symbol functions.
|
|
||||||
|
|
||||||
The quick symbol functions are generally opaque: the underlying
|
|
||||||
representation is hidden from the caller.
|
|
||||||
|
|
||||||
In general, these functions should only look at whatever special
|
|
||||||
index the symbol reader creates -- looking through the symbol
|
|
||||||
tables themselves is handled by generic code. If a function is
|
|
||||||
defined as returning a "symbol table", this means that the function
|
|
||||||
should only return a newly-created symbol table; it should not
|
|
||||||
examine pre-existing ones.
|
|
||||||
|
|
||||||
The exact list of functions here was determined in an ad hoc way
|
|
||||||
based on gdb's history. */
|
|
||||||
|
|
||||||
struct quick_symbol_functions
|
|
||||||
{
|
|
||||||
/* Return true if this objfile has any "partial" symbols
|
|
||||||
available. */
|
|
||||||
bool (*has_symbols) (struct objfile *objfile);
|
|
||||||
|
|
||||||
/* Return the symbol table for the "last" file appearing in
|
|
||||||
OBJFILE. */
|
|
||||||
struct symtab *(*find_last_source_symtab) (struct objfile *objfile);
|
|
||||||
|
|
||||||
/* Forget all cached full file names for OBJFILE. */
|
|
||||||
void (*forget_cached_source_info) (struct objfile *objfile);
|
|
||||||
|
|
||||||
/* 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, 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
|
|
||||||
all newly-created symbol tables, passing CALLBACK to it.
|
|
||||||
The result of this call is returned. */
|
|
||||||
bool (*map_symtabs_matching_filename)
|
|
||||||
(struct objfile *objfile, const char *name, const char *real_path,
|
|
||||||
gdb::function_view<bool (symtab *)> callback);
|
|
||||||
|
|
||||||
/* Check to see if the symbol is defined in a "partial" symbol table
|
|
||||||
of OBJFILE. BLOCK_INDEX should be either GLOBAL_BLOCK or STATIC_BLOCK,
|
|
||||||
depending on whether we want to search global symbols or static
|
|
||||||
symbols. NAME is the name of the symbol to look for. DOMAIN
|
|
||||||
indicates what sort of symbol to search for.
|
|
||||||
|
|
||||||
Returns the newly-expanded compunit in which the symbol is
|
|
||||||
defined, or NULL if no such symbol table exists. If OBJFILE
|
|
||||||
contains !TYPE_OPAQUE symbol prefer its compunit. If it contains
|
|
||||||
only TYPE_OPAQUE symbol(s), return at least that compunit. */
|
|
||||||
struct compunit_symtab *(*lookup_symbol) (struct objfile *objfile,
|
|
||||||
block_enum block_index,
|
|
||||||
const char *name,
|
|
||||||
domain_enum domain);
|
|
||||||
|
|
||||||
/* Check to see if the global symbol is defined in a "partial" symbol table
|
|
||||||
of OBJFILE. NAME is the name of the symbol to look for. DOMAIN
|
|
||||||
indicates what sort of symbol to search for.
|
|
||||||
|
|
||||||
If found, sets *symbol_found_p to true and returns the symbol language.
|
|
||||||
defined, or NULL if no such symbol table exists. */
|
|
||||||
enum language (*lookup_global_symbol_language) (struct objfile *objfile,
|
|
||||||
const char *name,
|
|
||||||
domain_enum domain,
|
|
||||||
bool *symbol_found_p);
|
|
||||||
|
|
||||||
/* Print statistics about any indices loaded for OBJFILE. The
|
|
||||||
statistics should be printed to gdb_stdout. This is used for
|
|
||||||
"maint print statistics". */
|
|
||||||
void (*print_stats) (struct objfile *objfile);
|
|
||||||
|
|
||||||
/* Dump any indices loaded for OBJFILE. The dump should go to
|
|
||||||
gdb_stdout. This is used for "maint print objfiles". */
|
|
||||||
void (*dump) (struct objfile *objfile);
|
|
||||||
|
|
||||||
/* Find all the symbols in OBJFILE named FUNC_NAME, and ensure that
|
|
||||||
the corresponding symbol tables are loaded. */
|
|
||||||
void (*expand_symtabs_for_function) (struct objfile *objfile,
|
|
||||||
const char *func_name);
|
|
||||||
|
|
||||||
/* Read all symbol tables associated with OBJFILE. */
|
|
||||||
void (*expand_all_symtabs) (struct objfile *objfile);
|
|
||||||
|
|
||||||
/* 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_fullname) (struct objfile *objfile,
|
|
||||||
const char *fullname);
|
|
||||||
|
|
||||||
/* Find global or static symbols in all tables that are in DOMAIN
|
|
||||||
and for which MATCH (symbol name, NAME) == 0, passing each to
|
|
||||||
CALLBACK, reading in partial symbol tables as needed. Look
|
|
||||||
through global symbols if GLOBAL and otherwise static symbols.
|
|
||||||
Passes NAME and NAMESPACE to CALLBACK with each symbol
|
|
||||||
found. After each block is processed, passes NULL to CALLBACK.
|
|
||||||
MATCH must be weaker than strcmp_iw_ordered in the sense that
|
|
||||||
strcmp_iw_ordered(x,y) == 0 --> MATCH(x,y) == 0. ORDERED_COMPARE,
|
|
||||||
if non-null, must be an ordering relation compatible with
|
|
||||||
strcmp_iw_ordered in the sense that
|
|
||||||
strcmp_iw_ordered(x,y) == 0 --> ORDERED_COMPARE(x,y) == 0
|
|
||||||
and
|
|
||||||
strcmp_iw_ordered(x,y) <= 0 --> ORDERED_COMPARE(x,y) <= 0
|
|
||||||
(allowing strcmp_iw_ordered(x,y) < 0 while ORDERED_COMPARE(x, y) == 0).
|
|
||||||
CALLBACK returns true to indicate that the scan should continue, or
|
|
||||||
false to indicate that the scan should be terminated. */
|
|
||||||
|
|
||||||
void (*map_matching_symbols)
|
|
||||||
(struct objfile *,
|
|
||||||
const lookup_name_info &lookup_name,
|
|
||||||
domain_enum domain,
|
|
||||||
int global,
|
|
||||||
gdb::function_view<symbol_found_callback_ftype> callback,
|
|
||||||
symbol_compare_ftype *ordered_compare);
|
|
||||||
|
|
||||||
/* Expand all symbol tables in OBJFILE matching some criteria.
|
|
||||||
|
|
||||||
FILE_MATCHER is called for each file in OBJFILE. The file name
|
|
||||||
is passed to it. If the matcher returns false, the file is
|
|
||||||
skipped. If FILE_MATCHER is NULL the file is not skipped. If
|
|
||||||
BASENAMES is true the matcher should consider only file base
|
|
||||||
names (the passed file name is already only the lbasename'd
|
|
||||||
part).
|
|
||||||
|
|
||||||
If the file is not skipped, and SYMBOL_MATCHER and LOOKUP_NAME are NULL,
|
|
||||||
the symbol table is expanded.
|
|
||||||
|
|
||||||
Otherwise, individual symbols are considered.
|
|
||||||
|
|
||||||
If KIND does not match, the symbol is skipped.
|
|
||||||
|
|
||||||
If the symbol name does not match LOOKUP_NAME, the symbol is skipped.
|
|
||||||
|
|
||||||
If SYMBOL_MATCHER returns false, then the symbol is skipped.
|
|
||||||
|
|
||||||
Otherwise, the symbol's symbol table is expanded. */
|
|
||||||
void (*expand_symtabs_matching)
|
|
||||||
(struct objfile *objfile,
|
|
||||||
gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
|
|
||||||
const lookup_name_info *lookup_name,
|
|
||||||
gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
|
|
||||||
gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
|
|
||||||
enum search_domain kind);
|
|
||||||
|
|
||||||
/* Return the comp unit from OBJFILE that contains PC and
|
|
||||||
SECTION. Return NULL if there is no such compunit. This
|
|
||||||
should return the compunit that contains a symbol whose
|
|
||||||
address exactly matches PC, or, if there is no exact match, the
|
|
||||||
compunit that contains a symbol whose address is closest to
|
|
||||||
PC. */
|
|
||||||
struct compunit_symtab *(*find_pc_sect_compunit_symtab)
|
|
||||||
(struct objfile *objfile, struct bound_minimal_symbol msymbol,
|
|
||||||
CORE_ADDR pc, struct obj_section *section, int warn_if_readin);
|
|
||||||
|
|
||||||
/* Return the comp unit from OBJFILE that contains a symbol at
|
|
||||||
ADDRESS. Return NULL if there is no such comp unit. Unlike
|
|
||||||
find_pc_sect_compunit_symtab, any sort of symbol (not just text
|
|
||||||
symbols) can be considered, and only exact address matches are
|
|
||||||
considered. This pointer may be NULL. */
|
|
||||||
struct compunit_symtab *(*find_compunit_symtab_by_address)
|
|
||||||
(struct objfile *objfile, CORE_ADDR address);
|
|
||||||
|
|
||||||
/* Call a callback for every file defined in OBJFILE whose symtab is
|
|
||||||
not already read in. FUN is the callback. It is passed the file's
|
|
||||||
FILENAME, the file's FULLNAME (if need_fullname is non-zero), and
|
|
||||||
the DATA passed to this function. */
|
|
||||||
void (*map_symbol_filenames) (struct objfile *objfile,
|
|
||||||
symbol_filename_ftype *fun, void *data,
|
|
||||||
int need_fullname);
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Structure of functions used for probe support. If one of these functions
|
/* Structure of functions used for probe support. If one of these functions
|
||||||
is provided, all must be. */
|
is provided, all must be. */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user