aboutsummaryrefslogtreecommitdiff
path: root/ltrace-elf.c
diff options
context:
space:
mode:
Diffstat (limited to 'ltrace-elf.c')
-rw-r--r--ltrace-elf.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/ltrace-elf.c b/ltrace-elf.c
index d9dac5e..b2e6e07 100644
--- a/ltrace-elf.c
+++ b/ltrace-elf.c
@@ -244,6 +244,24 @@ DEF_READER(elf_read_u64, 64)
#undef DEF_READER
+#define DEF_READER(NAME, SIZE) \
+ int \
+ NAME(Elf_Data *data, GElf_Xword *offset, uint##SIZE##_t *retp) \
+ { \
+ int rc = elf_read_u##SIZE(data, *offset, retp); \
+ if (rc < 0) \
+ return rc; \
+ *offset += SIZE / 8; \
+ return 0; \
+ }
+
+DEF_READER(elf_read_next_u8, 8)
+DEF_READER(elf_read_next_u16, 16)
+DEF_READER(elf_read_next_u32, 32)
+DEF_READER(elf_read_next_u64, 64)
+
+#undef DEF_READER
+
int
open_elf(struct ltelf *lte, const char *filename)
{