diff options
author | James Cowgill <jcowgill@debian.org> | 2017-06-19 21:37:14 +0200 |
---|---|---|
committer | Guillem Jover <guillem@hadrons.org> | 2017-06-24 16:08:14 +0200 |
commit | 4cc20e23f5262fdeb667bbc6bd4ba57c92aac8e4 (patch) | |
tree | fb5465fe6b42703a048a332c717a0108dcfdb8d8 /src | |
parent | c4e58c09508453624268f70ea1ab90850cd7411b (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.h | 24 |
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) |