mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-09 04:21:49 +08:00
Don't call decode_line_with_current_source from select_source_symtab
select_source_symtab currently calls decode_line_with_current_source. However, this function iterates over all program spaces, and so it is possible that it will return a "main" from some other program space. This patch changes select_source_symtab to simply use the symbol it already found in the current program space. gdb/ChangeLog 2019-10-02 Tom Tromey <tromey@adacore.com> * source.c (select_source_symtab): Don't call decode_line_with_current_source.
This commit is contained in:
parent
d3d323915c
commit
5c281dbb24
@ -1,3 +1,8 @@
|
||||
2019-10-02 Tom Tromey <tromey@adacore.com>
|
||||
|
||||
* source.c (select_source_symtab): Don't call
|
||||
decode_line_with_current_source.
|
||||
|
||||
2019-10-02 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||
|
||||
* symtab.c (lookup_global_symbol): Search global block.
|
||||
|
11
gdb/source.c
11
gdb/source.c
@ -252,17 +252,14 @@ select_source_symtab (struct symtab *s)
|
||||
|
||||
/* Make the default place to list be the function `main'
|
||||
if one exists. */
|
||||
if (lookup_symbol (main_name (), 0, VAR_DOMAIN, 0).symbol)
|
||||
block_symbol bsym = lookup_symbol (main_name (), 0, VAR_DOMAIN, 0);
|
||||
if (bsym.symbol != nullptr && SYMBOL_CLASS (bsym.symbol) == LOC_BLOCK)
|
||||
{
|
||||
std::vector<symtab_and_line> sals
|
||||
= decode_line_with_current_source (main_name (),
|
||||
DECODE_LINE_FUNFIRSTLINE);
|
||||
const symtab_and_line &sal = sals[0];
|
||||
symtab_and_line sal = find_function_start_sal (bsym.symbol, true);
|
||||
current_source_pspace = sal.pspace;
|
||||
current_source_symtab = sal.symtab;
|
||||
current_source_line = std::max (sal.line - (lines_to_list - 1), 1);
|
||||
if (current_source_symtab)
|
||||
return;
|
||||
return;
|
||||
}
|
||||
|
||||
/* Alright; find the last file in the symtab list (ignoring .h's
|
||||
|
Loading…
Reference in New Issue
Block a user