MIPS: elfcore: add correct copy_regs implementations
authorMarcin Nowakowski <marcin.nowakowski@imgtec.com>
Mon, 21 Nov 2016 10:23:39 +0000 (11:23 +0100)
committerRalf Baechle <ralf@linux-mips.org>
Tue, 3 Jan 2017 15:34:44 +0000 (16:34 +0100)
MIPS does not currently define ELF_CORE_COPY_REGS macros and as a result
the generic implementation is used. The generic version attempts to do
directly map (struct pt_regs) into (elf_gregset_t), which isn't correct
for MIPS platforms and also triggers a BUG() at runtime in
include/linux/elfcore.h:16 (BUG_ON(sizeof(*elfregs) != sizeof(*regs)))

[ralf@linux-mips.org: Add semicolons to the macro definitions as I do not
apply https://patchwork.linux-mips.org/patch/14588/ for now.]

Signed-off-by: Marcin Nowakowski <marcin.nowakowski@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/14586/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/include/asm/elf.h

index f61a4a14bb565647451076b79de1ceaaf49d789a..7a6c466e5f2a01669b0685288980ab20362da553 100644 (file)
@@ -224,6 +224,9 @@ void mips_dump_regs64(u64 *uregs, const struct pt_regs *regs);
  */
 #define ELF_CLASS      ELFCLASS32
 
+#define ELF_CORE_COPY_REGS(dest, regs) \
+       mips_dump_regs32((u32 *)&(dest), (regs));
+
 #endif /* CONFIG_32BIT */
 
 #ifdef CONFIG_64BIT
@@ -237,6 +240,9 @@ void mips_dump_regs64(u64 *uregs, const struct pt_regs *regs);
  */
 #define ELF_CLASS      ELFCLASS64
 
+#define ELF_CORE_COPY_REGS(dest, regs) \
+       mips_dump_regs64((u64 *)&(dest), (regs));
+
 #endif /* CONFIG_64BIT */
 
 /*