diff options
Diffstat (limited to 'gdb/symtab.c')
-rw-r--r-- | gdb/symtab.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/gdb/symtab.c b/gdb/symtab.c index b09ccae..2ade65fc 100644 --- a/gdb/symtab.c +++ b/gdb/symtab.c @@ -1319,7 +1319,21 @@ lookup_block_symbol (block, name, namespace) PC, then use the main symbol. ?!? Is checking the current pc correct? Is this routine - ever called to look up a symbol from another context? */ + ever called to look up a symbol from another context? + + FIXME: No, it's not correct. If someone sets a + conditional breakpoint at an address, then the + breakpoint's `struct expression' should refer to the + `struct symbol' appropriate for the breakpoint's + address, which may not be the PC. + + Even if it were never called from another context, + it's totally bizarre for lookup_symbol's behavior to + depend on the value of the inferior's current PC. We + should pass in the appropriate PC as well as the + block. The interface to lookup_symbol should change + to require the caller to provide a PC. */ + if (SYMBOL_ALIASES (sym)) sym = find_active_alias (sym, read_pc ()); |