Re: [PATCH] perf jit: genelf makes assumptions about endian
From: Arnaldo Carvalho de Melo <hidden>
Date: 2016-03-30 21:15:26
Also in:
lkml
Em Wed, Mar 30, 2016 at 01:38:20PM +1100, Michael Ellerman escreveu:
On Tue, 2016-03-29 at 17:59 +1100, Anton Blanchard wrote:quoted
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:
Yeah, I'm taking this patch, but would be better next time to break it down in two, one doing the reorg, the other doing the actual fix... Thanks, - Arnaldo
quoted
#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" #endifWhich looks correct to me. And the consolidation of the endian logic is "obviously correct", so: Acked-by: Michael Ellerman <mpe@ellerman.id.au> cheers