summaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorArtem Bityutskiy <dedekind1@gmail.com>2009-10-13 08:54:30 +0100
committerRussell King <rmk+kernel@arm.linux.org.uk>2009-10-14 10:33:05 +0100
commitcde3f8607350666c4dd120dbbdbd9c70ffb2ea61 (patch)
tree6d4eb66c895f94b922bd2cf6885bae3cf9d843b4 /arch/arm
parenta771fe6e4e3e58f2056823ef9c30a554ec48f453 (diff)
downloadkernel-crypto-cde3f8607350666c4dd120dbbdbd9c70ffb2ea61.tar.gz
kernel-crypto-cde3f8607350666c4dd120dbbdbd9c70ffb2ea61.tar.xz
kernel-crypto-cde3f8607350666c4dd120dbbdbd9c70ffb2ea61.zip
ARM: 5759/1: Add register information of threads to coredump
Defines ELF_CORE_COPY_TASK_REGS so that CPU register information of every thread is included in coredump. Without this, only the faulting thread is coredumped. Cc: Roger Quadros <ext-roger.quadros@nokia.com> Cc: linux-arm-kernel@lists.infradead.org Signed-off-by: Mika Westerberg <mika.westerberg@iki.fi> Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/include/asm/elf.h3
-rw-r--r--arch/arm/kernel/process.c9
2 files changed, 12 insertions, 0 deletions
diff --git a/arch/arm/include/asm/elf.h b/arch/arm/include/asm/elf.h
index c3b911ee915..6aac3f5bb2f 100644
--- a/arch/arm/include/asm/elf.h
+++ b/arch/arm/include/asm/elf.h
@@ -98,6 +98,9 @@ extern int elf_check_arch(const struct elf32_hdr *);
extern int arm_elf_read_implies_exec(const struct elf32_hdr *, int);
#define elf_read_implies_exec(ex,stk) arm_elf_read_implies_exec(&(ex), stk)
+int dump_task_regs(struct task_struct *t, elf_gregset_t *elfregs);
+#define ELF_CORE_COPY_TASK_REGS dump_task_regs
+
#define USE_ELF_CORE_DUMP
#define ELF_EXEC_PAGESIZE 4096
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c
index 790fbee92ec..0d96d0171c0 100644
--- a/arch/arm/kernel/process.c
+++ b/arch/arm/kernel/process.c
@@ -328,6 +328,15 @@ copy_thread(unsigned long clone_flags, unsigned long stack_start,
}
/*
+ * Fill in the task's elfregs structure for a core dump.
+ */
+int dump_task_regs(struct task_struct *t, elf_gregset_t *elfregs)
+{
+ elf_core_copy_regs(elfregs, task_pt_regs(t));
+ return 1;
+}
+
+/*
* fill in the fpe structure for a core dump...
*/
int dump_fpu (struct pt_regs *regs, struct user_fp *fp)