powerpc/fadump: Set core e_flags using kernel's ELF ABI version
authorDaniel Axtens <dja@axtens.net>
Tue, 6 Sep 2016 05:32:42 +0000 (15:32 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Tue, 13 Sep 2016 07:36:01 +0000 (17:36 +1000)
Firmware Assisted Dump is a facility to dump kernel core with assistance
from firmware. As part of this process the kernel ELF ABI version is
stored in the core file.

Currently fadump.h defines this to 0 if it is not already defined. This
clashes with a define in elf.h which sets it based on the current task -
not based on the kernel's ELF ABI version.

Use the compiler-provided #define _CALL_ELF which tells us the ELF ABI
version of the kernel to set e_flags, this matches what binutils does.

Remove the definition in fadump.h, which becomes unused.

Signed-off-by: Daniel Axtens <dja@axtens.net>
Reviewed-by: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/include/asm/fadump.h
arch/powerpc/kernel/fadump.c

index b4407d0add27733fba4d97c027ec820b799f42a7..0031806475f0f1b22645336d427bfee9fd9b0462 100644 (file)
 
 #define memblock_num_regions(memblock_type)    (memblock.memblock_type.cnt)
 
-#ifndef ELF_CORE_EFLAGS
-#define ELF_CORE_EFLAGS 0
-#endif
-
 /* Firmware provided dump sections */
 #define FADUMP_CPU_STATE_DATA  0x0001
 #define FADUMP_HPTE_REGION     0x0002
index b3a663333d362eaddc97d5f73f4a9aa2a0fc249a..624ddcf728e02ab031ffbb029d4bd78c6bf8e15b 100644 (file)
@@ -778,7 +778,11 @@ static int fadump_init_elfcore_header(char *bufp)
        elf->e_entry = 0;
        elf->e_phoff = sizeof(struct elfhdr);
        elf->e_shoff = 0;
-       elf->e_flags = ELF_CORE_EFLAGS;
+#if defined(_CALL_ELF)
+       elf->e_flags = _CALL_ELF;
+#else
+       elf->e_flags = 0;
+#endif
        elf->e_ehsize = sizeof(struct elfhdr);
        elf->e_phentsize = sizeof(struct elf_phdr);
        elf->e_phnum = 0;