From: Taras Kondratiuk <taras.kondratiuk@xxxxxxxxxx> Currently little-endian ELFDATA is hard-coded in crashdump header. This lead to a wrong header format if crashdump is generated on BE system. Set native endianness into ELFDATA field. Signed-off-by: Taras Kondratiuk <taras.kondratiuk at linaro.org> --- Based on commit 027413d "kexec: Add m68k support" kexec/arch/arm/crashdump-arm.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/kexec/arch/arm/crashdump-arm.c b/kexec/arch/arm/crashdump-arm.c index 01973b1..0cd6935 100644 --- a/kexec/arch/arm/crashdump-arm.c +++ b/kexec/arch/arm/crashdump-arm.c @@ -31,6 +31,13 @@ #include "../../crashdump.h" #include "crashdump-arm.h" +#if __BYTE_ORDER == __LITTLE_ENDIAN +#define ELFDATANATIVE ELFDATA2LSB +#elif __BYTE_ORDER == __BIG_ENDIAN +#define ELFDATANATIVE ELFDATA2MSB +#else +#error "Unknown machine endian" +#endif /* * Used to save various memory ranges/regions needed for the captured @@ -47,7 +54,7 @@ static struct memory_range crash_reserved_mem; static struct crash_elf_info elf_info = { .class = ELFCLASS32, - .data = ELFDATA2LSB, + .data = ELFDATANATIVE, .machine = EM_ARM, .page_offset = PAGE_OFFSET, }; -- 1.7.9.5