diff options
author | Petr Machata <pmachata@redhat.com> | 2013-10-25 16:26:22 +0200 |
---|---|---|
committer | Petr Machata <pmachata@redhat.com> | 2013-10-25 16:27:44 +0200 |
commit | 481a1eb415945720c0e1c545bd7679fd4cdb48ff (patch) | |
tree | fe72a75af2e0872059a9cab1fa8efeff8ce9bd4b /sysdeps | |
parent | 693cd2882c9592f9bfca2fc3c14d62eae00f7475 (diff) | |
download | ltrace-481a1eb415945720c0e1c545bd7679fd4cdb48ff.tar.gz |
OPD-transate the address that comes back from IFUNC resolver
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/linux-gnu/hooks.c | 5 |
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); |