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