Re: [PATCH] perf jit: genelf makes assumptions about endian
From: Michael Ellerman <mpe@ellerman.id.au>
Date: 2016-03-30 02:38:23
Also in:
lkml
On Tue, 2016-03-29 at 17:59 +1100, Anton Blanchard wrote:
Commit 9b07e27f88b9 ("perf inject: Add jitdump mmap injection support")
incorrectly assumed that PowerPC is big endian only.
Simplify things by consolidating the define of GEN_ELF_ENDIAN and checking
for __BYTE_ORDER == __BIG_ENDIAN.
The PowerPC checks were also incorrect, they do not match what gcc
emits. We should first look for __powerpc64__, then __powerpc__.
Fixes: 9b07e27f88b9 ("perf inject: Add jitdump mmap injection support")
Signed-off-by: Anton Blanchard <redacted>The diff's a little hard to read because you're pulling the endian logic out, if I remove that I get something like:
#elif defined(__i386__) #define GEN_ELF_ARCH EM_386 #define GEN_ELF_CLASS ELFCLASS32 -#elif defined(__ppcle__) -#define GEN_ELF_ARCH EM_PPC -#define GEN_ELF_CLASS ELFCLASS64 -#elif defined(__powerpc__) -#define GEN_ELF_ARCH EM_PPC64 -#define GEN_ELF_CLASS ELFCLASS64 -#elif defined(__powerpcle__) +#elif defined(__powerpc64__) #define GEN_ELF_ARCH EM_PPC64 #define GEN_ELF_CLASS ELFCLASS64 +#elif defined(__powerpc__) +#define GEN_ELF_ARCH EM_PPC +#define GEN_ELF_CLASS ELFCLASS32 #else #error "unsupported architecture" #endif
Which looks correct to me. And the consolidation of the endian logic is "obviously correct", so: Acked-by: Michael Ellerman <mpe@ellerman.id.au> cheers