mirror of
https://github.com/motioneye-project/motioneyeos.git
synced 2025-07-28 05:36:32 +00:00
fix cross-compiling for 64bit hosts
This commit is contained in:
parent
126da5f7f0
commit
b2da053b14
65
package/file/file-4.16-fix-array-64bit.patch
Normal file
65
package/file/file-4.16-fix-array-64bit.patch
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
--- 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;
|
Loading…
x
Reference in New Issue
Block a user