From 05e44b96445f17b43b5ab717fcb5521de17b183f Mon Sep 17 00:00:00 2001 From: "Markus F.X.J. Oberhumer" Date: Fri, 19 Jan 2018 14:33:31 +0100 Subject: [PATCH] Fix powerpc64 cross build. --- src/file.cpp | 2 ++ src/p_elf_enum.h | 9 +++++++-- src/p_lx_elf.cpp | 1 - 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/file.cpp b/src/file.cpp index 4b130fc0..dcadf9f6 100644 --- a/src/file.cpp +++ b/src/file.cpp @@ -140,6 +140,7 @@ int FileBase::read(void *buf, int len) { if (!isOpen() || len < 0) throwIOException("bad read"); + mem_size_assert(1, len); // sanity check errno = 0; long l = acc_safe_hread(_fd, buf, len); if (errno) @@ -161,6 +162,7 @@ void FileBase::write(const void *buf, int len) { if (!isOpen() || len < 0) throwIOException("bad write"); + mem_size_assert(1, len); // sanity check errno = 0; long l = acc_safe_hwrite(_fd, buf, len); if (l != len) diff --git a/src/p_elf_enum.h b/src/p_elf_enum.h index 8725bef2..2707b962 100644 --- a/src/p_elf_enum.h +++ b/src/p_elf_enum.h @@ -215,9 +215,14 @@ #ifdef WANT_REL_ENUM //{ -static unsigned ELF32_R_TYPE(unsigned x) { return 0xff & x; } -static unsigned ELF64_R_TYPE(upx_uint64_t x) { return 0xffffffff & x; } +#undef WANT_REL_ENUM + static inline unsigned ELF32_R_TYPE(unsigned x) { return 0xff & x; } + static inline unsigned ELF64_R_TYPE(upx_uint64_t x) { return 0xffffffff & (unsigned)x; } +# undef R_PPC_RELATIVE +# undef R_PPC64_RELATIVE +# undef R_PPC_JMP_SLOT +# undef R_PPC64_JMP_SLOT enum { // relocation types R_386_RELATIVE = 8, R_AARCH64_RELATIVE = 1027, diff --git a/src/p_lx_elf.cpp b/src/p_lx_elf.cpp index 35a69dee..839e459c 100644 --- a/src/p_lx_elf.cpp +++ b/src/p_lx_elf.cpp @@ -2507,7 +2507,6 @@ PackLinuxElf64::generateElfHdr( #define WANT_REL_ENUM #include "p_elf_enum.h" -#undef WANT_REL_ENUM void PackLinuxElf32::pack1(OutputFile *fo, Filter & /*ft*/) {