Offset in elf_read_u{16,32,64} should be 64-bit even when ltrace is 32-bit
diff --git a/ltrace-elf.c b/ltrace-elf.c
index 810e29a..3f0c636 100644
--- a/ltrace-elf.c
+++ b/ltrace-elf.c
@@ -144,7 +144,7 @@
}
static int
-need_data(Elf_Data *data, size_t offset, size_t size)
+need_data(Elf_Data *data, GElf_Xword offset, GElf_Xword size)
{
assert(data != NULL);
if (data->d_size < size || offset > data->d_size - size) {
@@ -157,7 +157,7 @@
#define DEF_READER(NAME, SIZE) \
int \
- NAME(Elf_Data *data, size_t offset, uint##SIZE##_t *retp) \
+ NAME(Elf_Data *data, GElf_Xword offset, uint##SIZE##_t *retp) \
{ \
if (!need_data(data, offset, SIZE / 8) < 0) \
return -1; \
diff --git a/ltrace-elf.h b/ltrace-elf.h
index dec072b..54a5386 100644
--- a/ltrace-elf.h
+++ b/ltrace-elf.h
@@ -67,9 +67,9 @@
/* Read, respectively, 2, 4, or 8 bytes from Elf data at given OFFSET,
* and store it in *RETP. Returns 0 on success or a negative value if
* there's not enough data. */
-int elf_read_u16(Elf_Data *data, size_t offset, uint16_t *retp);
-int elf_read_u32(Elf_Data *data, size_t offset, uint32_t *retp);
-int elf_read_u64(Elf_Data *data, size_t offset, uint64_t *retp);
+int elf_read_u16(Elf_Data *data, GElf_Xword offset, uint16_t *retp);
+int elf_read_u32(Elf_Data *data, GElf_Xword offset, uint32_t *retp);
+int elf_read_u64(Elf_Data *data, GElf_Xword offset, uint64_t *retp);
int default_elf_add_plt_entry(struct Process *proc, struct ltelf *lte,
const char *a_name, GElf_Rela *rela, size_t ndx,