24 lines
720 B
Diff
24 lines
720 B
Diff
diff -urp ltrace-0.5/elf.c ltrace-0.5-pm/elf.c
|
|
--- ltrace-0.5/elf.c 2006-08-23 17:45:47.000000000 +0200
|
|
+++ ltrace-0.5-pm/elf.c 2006-08-23 17:47:58.000000000 +0200
|
|
@@ -342,12 +342,18 @@ static GElf_Addr opd2addr(struct ltelf *
|
|
if (!lte->opd)
|
|
return (GElf_Addr) (long) addr;
|
|
|
|
+#ifdef __ia64__
|
|
+ /* XXX: On Itaniums, gelf seems to return function address
|
|
+ instead of address of function descriptor. */
|
|
+ ret_val = (GElf_Addr)addr;
|
|
+#else
|
|
base = (long)lte->opd->d_buf;
|
|
offset = (long)addr - (long)lte->opd_addr;
|
|
if (offset > lte->opd_size)
|
|
error(EXIT_FAILURE, 0, "static plt not in .opd");
|
|
|
|
ret_val = (GElf_Addr) * (long *)(base + offset);
|
|
+#endif
|
|
return ret_val;
|
|
}
|
|
|
|
Only in ltrace-0.5-pm: elf.c~
|