aboutsummaryrefslogtreecommitdiff
path: root/gdb/compile
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2015-07-02 08:01:35 +0200
committerJan Kratochvil <jan.kratochvil@redhat.com>2015-07-02 08:01:35 +0200
commitb0fd6b3037669534962b1ffe860db178ea7e1239 (patch)
tree39e5d7a791da0475800cb1239badb876faf9524f /gdb/compile
parent78ab7e9d38585cb939c473812e6a472b8f4fd5b9 (diff)
downloadfsf-binutils-gdb-b0fd6b3037669534962b1ffe860db178ea7e1239.zip
fsf-binutils-gdb-b0fd6b3037669534962b1ffe860db178ea7e1239.tar.gz
fsf-binutils-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.
Diffstat (limited to 'gdb/compile')
-rw-r--r--gdb/compile/compile-object-load.c23
1 files changed, 19 insertions, 4 deletions
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\" "