summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJames Cowgill <jcowgill@debian.org>2017-06-19 21:37:14 +0200
committerGuillem Jover <guillem@hadrons.org>2017-06-24 16:08:14 +0200
commit4cc20e23f5262fdeb667bbc6bd4ba57c92aac8e4 (patch)
treefb5465fe6b42703a048a332c717a0108dcfdb8d8 /src
parentc4e58c09508453624268f70ea1ab90850cd7411b (diff)
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>
Diffstat (limited to 'src')
-rw-r--r--src/local-elf.h24
1 files changed, 18 insertions, 6 deletions
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)