diff options
author | Paul Pluzhnikov <ppluzhnikov@google.com> | 2008-11-18 21:31:27 +0000 |
---|---|---|
committer | Paul Pluzhnikov <ppluzhnikov@google.com> | 2008-11-18 21:31:27 +0000 |
commit | c14c28ba117dee9fd0bf17fc3437e808221a7829 (patch) | |
tree | f325e191374bc352f84e4194fe2dbfc521e7133d /gdb/maint.c | |
parent | 00a0b122cf3b524243c3cea05101bacd5a1595ba (diff) | |
download | gdb-c14c28ba117dee9fd0bf17fc3437e808221a7829.zip gdb-c14c28ba117dee9fd0bf17fc3437e808221a7829.tar.gz gdb-c14c28ba117dee9fd0bf17fc3437e808221a7829.tar.bz2 |
2008-11-18 Paul Pluzhnikov <ppluzhnikov@google.com>
* objfiles.h: New MULTI_OBJFILE_P macro.
* printcmd.c (sym_info): Print object name.
* maint.c (maintenance_translate_address): Likewise.
Diffstat (limited to 'gdb/maint.c')
-rw-r--r-- | gdb/maint.c | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/gdb/maint.c b/gdb/maint.c index 365e374..c3a70c1 100644 --- a/gdb/maint.c +++ b/gdb/maint.c @@ -35,6 +35,7 @@ #include "symfile.h" #include "objfiles.h" #include "value.h" +#include "gdb_assert.h" #include "cli/cli-decode.h" @@ -484,9 +485,32 @@ maintenance_translate_address (char *arg, int from_tty) sym = lookup_minimal_symbol_by_pc (address); if (sym) - printf_filtered ("%s+%s\n", - SYMBOL_PRINT_NAME (sym), - pulongest (address - SYMBOL_VALUE_ADDRESS (sym))); + { + const char *symbol_name = SYMBOL_PRINT_NAME (sym); + const char *symbol_offset = pulongest (address - SYMBOL_VALUE_ADDRESS (sym)); + + sect = SYMBOL_OBJ_SECTION(sym); + if (sect != NULL) + { + const char *section_name; + const char *obj_name; + + gdb_assert (sect->the_bfd_section && sect->the_bfd_section->name); + section_name = sect->the_bfd_section->name; + + gdb_assert (sect->objfile && sect->objfile->name); + obj_name = sect->objfile->name; + + if (MULTI_OBJFILE_P ()) + printf_filtered (_("%s + %s in section %s of %s\n"), + symbol_name, symbol_offset, section_name, obj_name); + else + printf_filtered (_("%s + %s in section %s\n"), + symbol_name, symbol_offset, section_name); + } + else + printf_filtered (_("%s + %s\n"), symbol_name, symbol_offset); + } else if (sect) printf_filtered (_("no symbol at %s:0x%s\n"), sect->the_bfd_section->name, paddr (address)); |