|
@@ -1,65 +0,0 @@
|
|
|
---- file/src/readelf.h
|
|
|
-+++ file/src/readelf.h
|
|
|
-@@ -50,6 +50,7 @@
|
|
|
- typedef uint32_t Elf64_Off[2];
|
|
|
- typedef uint32_t Elf64_Xword[2];
|
|
|
- #else
|
|
|
-+#undef USE_ARRAY_FOR_64BIT_TYPES
|
|
|
- typedef uint64_t Elf64_Addr;
|
|
|
- typedef uint64_t Elf64_Off;
|
|
|
- typedef uint64_t Elf64_Xword;
|
|
|
---- file/src/readelf.c
|
|
|
-+++ file/src/readelf.c
|
|
|
-@@ -121,6 +121,14 @@
|
|
|
- return value;
|
|
|
- }
|
|
|
-
|
|
|
-+#ifdef USE_ARRAY_FOR_64BIT_TYPES
|
|
|
-+# define elf_getu64(swap, array) \
|
|
|
-+ ((swap ? ((uint64_t)getu32(swap, array[0])) << 32 : getu32(swap, array[0])) + \
|
|
|
-+ (swap ? getu32(swap, array[1]) : ((uint64_t)getu32(swap, array[1]) << 32)))
|
|
|
-+#else
|
|
|
-+# define elf_getu64(swap, value) getu64(swap, value)
|
|
|
-+#endif
|
|
|
-+
|
|
|
- #define xsh_addr (class == ELFCLASS32 \
|
|
|
- ? (void *) &sh32 \
|
|
|
- : (void *) &sh64)
|
|
|
-@@ -913,11 +921,7 @@
|
|
|
- if (getu16(swap, elfhdr.e_type) == ET_CORE) {
|
|
|
- #ifdef ELFCORE
|
|
|
- if (dophn_core(ms, class, swap, fd,
|
|
|
--#ifdef USE_ARRAY_FOR_64BIT_TYPES
|
|
|
-- (off_t)getu32(swap, elfhdr.e_phoff[1]),
|
|
|
--#else
|
|
|
-- (off_t)getu64(swap, elfhdr.e_phoff),
|
|
|
--#endif
|
|
|
-+ (off_t)elf_getu64(swap, elfhdr.e_phoff),
|
|
|
- getu16(swap, elfhdr.e_phnum),
|
|
|
- (size_t)getu16(swap, elfhdr.e_phentsize)) == -1)
|
|
|
- return -1;
|
|
|
-@@ -927,22 +931,14 @@
|
|
|
- } else {
|
|
|
- if (getu16(swap, elfhdr.e_type) == ET_EXEC) {
|
|
|
- if (dophn_exec(ms, class, swap, fd,
|
|
|
--#ifdef USE_ARRAY_FOR_64BIT_TYPES
|
|
|
-- (off_t)getu32(swap, elfhdr.e_phoff[1]),
|
|
|
--#else
|
|
|
-- (off_t)getu64(swap, elfhdr.e_phoff),
|
|
|
--#endif
|
|
|
-+ (off_t)elf_getu64(swap, elfhdr.e_phoff),
|
|
|
- getu16(swap, elfhdr.e_phnum),
|
|
|
- (size_t)getu16(swap, elfhdr.e_phentsize))
|
|
|
- == -1)
|
|
|
- return -1;
|
|
|
- }
|
|
|
- if (doshn(ms, class, swap, fd,
|
|
|
--#ifdef USE_ARRAY_FOR_64BIT_TYPES
|
|
|
-- (off_t)getu32(swap, elfhdr.e_shoff[1]),
|
|
|
--#else
|
|
|
-- (off_t)getu64(swap, elfhdr.e_shoff),
|
|
|
--#endif
|
|
|
-+ (off_t)elf_getu64(swap, elfhdr.e_shoff),
|
|
|
- getu16(swap, elfhdr.e_shnum),
|
|
|
- (size_t)getu16(swap, elfhdr.e_shentsize)) == -1)
|
|
|
- return -1;
|