From cd5ee294397a341ad9e26c6b260d8b61a296e6c1 Mon Sep 17 00:00:00 2001 From: Jim Kingdon Date: Fri, 21 Jan 1994 17:43:32 +0000 Subject: [PATCH] Thu Jan 20 15:04:24 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) * printcmd.c (print_address_symbolic): Unconditionally use msymbol if we did not find a symbol. --- gdb/ChangeLog | 5 +++++ gdb/printcmd.c | 18 ++++++++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 514f578a288..dbb61145ff2 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +Thu Jan 20 15:04:24 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) + + * printcmd.c (print_address_symbolic): Unconditionally use msymbol + if we did not find a symbol. + Fri Jan 21 08:20:18 1994 Jeffrey A. Law (law@snake.cs.utah.edu) * infptrace.c (child_xfer_memory): Only use if CHILD_XFER_MEMORY diff --git a/gdb/printcmd.c b/gdb/printcmd.c index 48bc4fc2d79..95259fb1a88 100644 --- a/gdb/printcmd.c +++ b/gdb/printcmd.c @@ -519,14 +519,22 @@ print_address_symbolic (addr, stream, do_demangle, leadin) struct minimal_symbol *msymbol; struct symbol *symbol; struct symtab *symtab = 0; - CORE_ADDR name_location; + CORE_ADDR name_location = 0; char *name; /* First try to find the address in the symbol table, then in the minsyms. Take the closest one. */ - symbol = fast_symbolic_addr? 0: - find_addr_symbol (addr, &symtab, &name_location); + if (fast_symbolic_addr) + { + /* This is defective in the sense that it only finds text symbols. */ + symbol = find_pc_function (addr); + if (symbol) + name_location = BLOCK_START (SYMBOL_BLOCK_VALUE (symbol)); + } + else + find_addr_symbol (addr, &symtab, &name_location); + if (symbol) { if (do_demangle) @@ -538,7 +546,7 @@ print_address_symbolic (addr, stream, do_demangle, leadin) msymbol = lookup_minimal_symbol_by_pc (addr); if (msymbol != NULL) { - if (SYMBOL_VALUE_ADDRESS (msymbol) > name_location) + if (SYMBOL_VALUE_ADDRESS (msymbol) > name_location || symbol == NULL) { /* The msymbol is closer to the address than the symbol; use the msymbol instead. */ @@ -551,6 +559,8 @@ print_address_symbolic (addr, stream, do_demangle, leadin) name = SYMBOL_LINKAGE_NAME (msymbol); } } + if (symbol == NULL && msymbol == NULL) + return; /* If the nearest symbol is too far away, don't print anything symbolic. */ -- 2.30.2