diff options
author | Taras Kondratiuk <taras.kondratiuk@linaro.org> | 2013-10-04 15:26:31 +0300 |
---|---|---|
committer | Taras Kondratiuk <taras.kondratiuk@linaro.org> | 2014-01-11 02:12:37 +0200 |
commit | 5859c139200d474679a6ec07d46596ff55eb0a8e (patch) | |
tree | 52d55c0be746266568f2dea795d9f0a52b0c6546 /meta-bigendian | |
parent | bf62ffc415502c1f18b3d0a03a9166d35288cfcb (diff) |
meta-bigendian: kexec-tools: arm: Fix endianness in crashdump header
Change-Id: Ic0ae08a66e91c7855c521d95ea831183b5ef73a8
Signed-off-by: Taras Kondratiuk <taras.kondratiuk@linaro.org>
Diffstat (limited to 'meta-bigendian')
-rw-r--r-- | meta-bigendian/recipes-kernel/kexec/kexec-tools/arm-Fix-endianness-in-crashdump-header.patch | 45 | ||||
-rw-r--r-- | meta-bigendian/recipes-kernel/kexec/kexec-tools_2.0.4.bbappend | 3 |
2 files changed, 48 insertions, 0 deletions
diff --git a/meta-bigendian/recipes-kernel/kexec/kexec-tools/arm-Fix-endianness-in-crashdump-header.patch b/meta-bigendian/recipes-kernel/kexec/kexec-tools/arm-Fix-endianness-in-crashdump-header.patch new file mode 100644 index 00000000..e9cb46fb --- /dev/null +++ b/meta-bigendian/recipes-kernel/kexec/kexec-tools/arm-Fix-endianness-in-crashdump-header.patch @@ -0,0 +1,45 @@ +From 0ead5372ca72493844111b256567b6c8e5e9d9be Mon Sep 17 00:00:00 2001 +From: Taras Kondratiuk <taras.kondratiuk@linaro.org> +Date: Thu, 3 Oct 2013 18:09:31 +0300 +Subject: [PATCH] kexec: arm: Fix endianness in crashdump header + +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@linaro.org> +--- + 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 + diff --git a/meta-bigendian/recipes-kernel/kexec/kexec-tools_2.0.4.bbappend b/meta-bigendian/recipes-kernel/kexec/kexec-tools_2.0.4.bbappend new file mode 100644 index 00000000..8c25d259 --- /dev/null +++ b/meta-bigendian/recipes-kernel/kexec/kexec-tools_2.0.4.bbappend @@ -0,0 +1,3 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" + +SRC_URI += "file://arm-Fix-endianness-in-crashdump-header.patch" |