]> git.ipfire.org Git - thirdparty/libbsd.git/commitdiff
Fix ELF definitions for PowerPC in local-elf.h
authorJames Cowgill <jcowgill@debian.org>
Mon, 19 Jun 2017 19:37:14 +0000 (21:37 +0200)
committerGuillem Jover <guillem@hadrons.org>
Sat, 24 Jun 2017 14:08:14 +0000 (16:08 +0200)
* 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>
src/local-elf.h

index 84a654044a67ad41816faae752bbd0a93a44d4ab..3abbe700d50cd800fd93459295f811fb25e30931 100644 (file)
 #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)