diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2015-07-02 08:01:35 +0200 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2015-07-02 08:01:35 +0200 |
commit | b0fd6b3037669534962b1ffe860db178ea7e1239 (patch) | |
tree | 39e5d7a791da0475800cb1239badb876faf9524f | |
parent | 78ab7e9d38585cb939c473812e6a472b8f4fd5b9 (diff) | |
download | gdb-b0fd6b3037669534962b1ffe860db178ea7e1239.zip gdb-b0fd6b3037669534962b1ffe860db178ea7e1239.tar.gz gdb-b0fd6b3037669534962b1ffe860db178ea7e1239.tar.bz2 |
debug compile: Replace confusing debug message
It was found that from
(gdb) set debug compile 1
(gdb) compile code 1
[...]
allocated 0x7f bytes at 0x7ffff7ff9000 prot 5
allocated 0x38 bytes at 0x7ffff7ff8000 prot 1
lookup undefined ELF symbol "_GLOBAL_OFFSET_TABLE_"
allocated 0x10 bytes at 0x7ffff7ff7000 for registers
(gdb) _
the message 'lookup undefined ELF symbol' looks as an error to people,
including to myself once.
Change it to:
allocated 0x7f bytes at 0x7ffff7ff9000 prot 5
allocated 0x38 bytes at 0x7ffff7ff8000 prot 1
ELF symbol "_GLOBAL_OFFSET_TABLE_" relocated to zero
allocated 0x10 bytes at 0x7ffff7ff7000 for registers
(gdb) _
gdb/ChangeLog
2015-07-02 Jan Kratochvil <jan.kratochvil@redhat.com>
* compile/compile-object-load.c (compile_object_load): Replace debug
message "lookup undefined ELF symbol" by 3 more specific messages.
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/compile/compile-object-load.c | 23 |
2 files changed, 24 insertions, 4 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 38a1633..249181d 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2015-07-02 Jan Kratochvil <jan.kratochvil@redhat.com> + + * compile/compile-object-load.c (compile_object_load): Replace debug + message "lookup undefined ELF symbol" by 3 more specific messages. + 2015-07-01 Kevin Buettner <kevinb@redhat.com> * rl78-tdep.c (struct gdbarch_tdep): Add new field, rl78_psw_type. diff --git a/gdb/compile/compile-object-load.c b/gdb/compile/compile-object-load.c index 2b29b8b..8298748 100644 --- a/gdb/compile/compile-object-load.c +++ b/gdb/compile/compile-object-load.c @@ -731,14 +731,18 @@ compile_object_load (const char *object_file, const char *source_file, if (sym->flags != 0) continue; - if (compile_debug) - fprintf_unfiltered (gdb_stdlog, - "lookup undefined ELF symbol \"%s\"\n", - sym->name); sym->flags = BSF_GLOBAL; sym->section = bfd_abs_section_ptr; if (strcmp (sym->name, "_GLOBAL_OFFSET_TABLE_") == 0) { + if (compile_debug) + fprintf_unfiltered (gdb_stdlog, + "ELF symbol \"%s\" relocated to zero\n", + sym->name); + + /* It seems to be a GCC bug, with -mcmodel=large there should be no + need for _GLOBAL_OFFSET_TABLE_. Together with -fPIE the data + remain PC-relative even with _GLOBAL_OFFSET_TABLE_ as zero. */ sym->value = 0; continue; } @@ -748,10 +752,21 @@ compile_object_load (const char *object_file, const char *source_file, { case mst_text: sym->value = BMSYMBOL_VALUE_ADDRESS (bmsym); + if (compile_debug) + fprintf_unfiltered (gdb_stdlog, + "ELF mst_text symbol \"%s\" relocated to %s\n", + sym->name, + paddress (target_gdbarch (), sym->value)); break; case mst_text_gnu_ifunc: sym->value = gnu_ifunc_resolve_addr (target_gdbarch (), BMSYMBOL_VALUE_ADDRESS (bmsym)); + if (compile_debug) + fprintf_unfiltered (gdb_stdlog, + "ELF mst_text_gnu_ifunc symbol \"%s\" " + "relocated to %s\n", + sym->name, + paddress (target_gdbarch (), sym->value)); break; default: warning (_("Could not find symbol \"%s\" " |