aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/elfread.c8
2 files changed, 10 insertions, 3 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 67e1bab..9de1b10 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,10 @@
2018-04-26 Pedro Alves <palves@redhat.com>
+ * elfread.c (elf_gnu_ifunc_resolve_by_got): Don't write to *ADDR_P
+ unless we actually resolved the ifunc.
+
+2018-04-26 Pedro Alves <palves@redhat.com>
+
* c-exp.y (variable production): Prefer ifunc minsyms over
regular function symbols.
* symtab.c (find_gnu_ifunc): New function.
diff --git a/gdb/elfread.c b/gdb/elfread.c
index 16a692d..42a2c92 100644
--- a/gdb/elfread.c
+++ b/gdb/elfread.c
@@ -833,10 +833,12 @@ elf_gnu_ifunc_resolve_by_got (const char *name, CORE_ADDR *addr_p)
&current_target);
addr = gdbarch_addr_bits_remove (gdbarch, addr);
- if (addr_p)
- *addr_p = addr;
if (elf_gnu_ifunc_record_cache (name, addr))
- return 1;
+ {
+ if (addr_p != NULL)
+ *addr_p = addr;
+ return 1;
+ }
}
return 0;