diff options
| author | Artem Bityutskiy <dedekind1@gmail.com> | 2009-10-13 03:54:30 -0400 |
|---|---|---|
| committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2009-10-14 05:33:05 -0400 |
| commit | cde3f8607350666c4dd120dbbdbd9c70ffb2ea61 (patch) | |
| tree | 6d4eb66c895f94b922bd2cf6885bae3cf9d843b4 | |
| parent | a771fe6e4e3e58f2056823ef9c30a554ec48f453 (diff) | |
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>
| -rw-r--r-- | arch/arm/include/asm/elf.h | 3 | ||||
| -rw-r--r-- | arch/arm/kernel/process.c | 9 |
2 files changed, 12 insertions, 0 deletions
diff --git a/arch/arm/include/asm/elf.h b/arch/arm/include/asm/elf.h index c3b911ee9151..6aac3f5bb2f3 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 *); | |||
| 98 | extern int arm_elf_read_implies_exec(const struct elf32_hdr *, int); | 98 | extern int arm_elf_read_implies_exec(const struct elf32_hdr *, int); |
| 99 | #define elf_read_implies_exec(ex,stk) arm_elf_read_implies_exec(&(ex), stk) | 99 | #define elf_read_implies_exec(ex,stk) arm_elf_read_implies_exec(&(ex), stk) |
| 100 | 100 | ||
| 101 | int dump_task_regs(struct task_struct *t, elf_gregset_t *elfregs); | ||
| 102 | #define ELF_CORE_COPY_TASK_REGS dump_task_regs | ||
| 103 | |||
| 101 | #define USE_ELF_CORE_DUMP | 104 | #define USE_ELF_CORE_DUMP |
| 102 | #define ELF_EXEC_PAGESIZE 4096 | 105 | #define ELF_EXEC_PAGESIZE 4096 |
| 103 | 106 | ||
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c index 790fbee92ec5..0d96d0171c05 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, | |||
| 328 | } | 328 | } |
| 329 | 329 | ||
| 330 | /* | 330 | /* |
| 331 | * Fill in the task's elfregs structure for a core dump. | ||
| 332 | */ | ||
| 333 | int dump_task_regs(struct task_struct *t, elf_gregset_t *elfregs) | ||
| 334 | { | ||
| 335 | elf_core_copy_regs(elfregs, task_pt_regs(t)); | ||
| 336 | return 1; | ||
| 337 | } | ||
| 338 | |||
| 339 | /* | ||
| 331 | * fill in the fpe structure for a core dump... | 340 | * fill in the fpe structure for a core dump... |
| 332 | */ | 341 | */ |
| 333 | int dump_fpu (struct pt_regs *regs, struct user_fp *fp) | 342 | int dump_fpu (struct pt_regs *regs, struct user_fp *fp) |
