Commit 4cc20e23f5262fdeb667bbc6bd4ba57c92aac8e4

James Cowgill 2017-06-19T21:37:14

Fix ELF definitions for PowerPC in local-elf.h * ppc64el defines both __powerpc__ and __powerpc64__ but since the __powerpc64__ #elif is below the __powerpc__ one, it will never be hit. * Both assumed that powerpc* was big-endian. Fixes: https://bugs.debian.org/865091 Signed-off-by: Guillem Jover <guillem@hadrons.org>

diff --git a/src/local-elf.h b/src/local-elf.h
index 84a6540..3abbe70 100644
--- a/src/local-elf.h
+++ b/src/local-elf.h
@@ -140,17 +140,29 @@
 #define ELF_TARG_CLASS	ELFCLASS32
 #define ELF_TARG_DATA	ELFDATA2LSB
 
-#elif defined(__powerpc__)
-
-#define ELF_TARG_MACH	EM_PPC
-#define ELF_TARG_CLASS	ELFCLASS32
-#define ELF_TARG_DATA	ELFDATA2MSB
-
 #elif defined(__powerpc64__)
 
 #define ELF_TARG_MACH	EM_PPC64
 #define ELF_TARG_CLASS	ELFCLASS64
+#if defined(__LITTLE_ENDIAN__)
+#define ELF_TARG_DATA	ELFDATA2LSB
+#elif defined(__BIG_ENDIAN__)
+#define ELF_TARG_DATA	ELFDATA2MSB
+#else
+#error Unknown PowerPC64 endianness
+#endif
+
+#elif defined(__powerpc__)
+
+#define ELF_TARG_MACH	EM_PPC
+#define ELF_TARG_CLASS	ELFCLASS32
+#if defined(__LITTLE_ENDIAN__)
+#define ELF_TARG_DATA	ELFDATA2LSB
+#elif defined(__BIG_ENDIAN__)
 #define ELF_TARG_DATA	ELFDATA2MSB
+#else
+#error Unknown PowerPC endianness
+#endif
 
 #elif defined(__riscv)