aboutsummaryrefslogtreecommitdiff
path: root/sysdeps
diff options
context:
space:
mode:
authorPetr Machata <pmachata@redhat.com>2013-10-25 16:26:22 +0200
committerPetr Machata <pmachata@redhat.com>2013-10-25 16:27:44 +0200
commit481a1eb415945720c0e1c545bd7679fd4cdb48ff (patch)
treefe72a75af2e0872059a9cab1fa8efeff8ce9bd4b /sysdeps
parent693cd2882c9592f9bfca2fc3c14d62eae00f7475 (diff)
downloadltrace-481a1eb415945720c0e1c545bd7679fd4cdb48ff.tar.gz
OPD-transate the address that comes back from IFUNC resolver
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/linux-gnu/hooks.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/sysdeps/linux-gnu/hooks.c b/sysdeps/linux-gnu/hooks.c
index b4ae2c0..10f1a11 100644
--- a/sysdeps/linux-gnu/hooks.c
+++ b/sysdeps/linux-gnu/hooks.c
@@ -335,6 +335,11 @@ ifunc_ret_hit(struct breakpoint *bp, struct process *proc)
u.a = (arch_addr_t)(uintptr_t)u.u32;
else
u.a = (arch_addr_t)(uintptr_t)u.u64;
+ if (arch_translate_address_dyn(proc, u.a, &u.a) < 0) {
+ fprintf(stderr, "Couldn't OPD-translate the address returned"
+ " by the IFUNC resolver.\n");
+ goto done;
+ }
assert(bp->os.ret_libsym != NULL);