mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-15 23:14:31 +08:00
23bfdacf4e
The removal of the single-step emulation from ptrace on ARM means that thread_struct no longer has software breakpoint fields in its debug member. This patch fixes the a.out core dump code so that the debug registers are zeroed rather than trying to copy from non-existent fields. Cc: Nicolas Pitre <nicolas.pitre@linaro.org> Signed-off-by: Bryan Wu <bryan.wu@canonical.com> Signed-off-by: Will Deacon <will.deacon@arm.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
46 lines
1.3 KiB
C
46 lines
1.3 KiB
C
/* a.out coredump register dumper
|
|
*
|
|
* Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
|
|
* Written by David Howells (dhowells@redhat.com)
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public Licence
|
|
* as published by the Free Software Foundation; either version
|
|
* 2 of the Licence, or (at your option) any later version.
|
|
*/
|
|
|
|
#ifndef _ASM_A_OUT_CORE_H
|
|
#define _ASM_A_OUT_CORE_H
|
|
|
|
#ifdef __KERNEL__
|
|
|
|
#include <linux/user.h>
|
|
#include <linux/elfcore.h>
|
|
|
|
/*
|
|
* fill in the user structure for an a.out core dump
|
|
*/
|
|
static inline void aout_dump_thread(struct pt_regs *regs, struct user *dump)
|
|
{
|
|
struct task_struct *tsk = current;
|
|
|
|
dump->magic = CMAGIC;
|
|
dump->start_code = tsk->mm->start_code;
|
|
dump->start_stack = regs->ARM_sp & ~(PAGE_SIZE - 1);
|
|
|
|
dump->u_tsize = (tsk->mm->end_code - tsk->mm->start_code) >> PAGE_SHIFT;
|
|
dump->u_dsize = (tsk->mm->brk - tsk->mm->start_data + PAGE_SIZE - 1) >> PAGE_SHIFT;
|
|
dump->u_ssize = 0;
|
|
|
|
memset(dump->u_debugreg, 0, sizeof(dump->u_debugreg));
|
|
|
|
if (dump->start_stack < 0x04000000)
|
|
dump->u_ssize = (0x04000000 - dump->start_stack) >> PAGE_SHIFT;
|
|
|
|
dump->regs = *regs;
|
|
dump->u_fpvalid = dump_fpu (regs, &dump->u_fp);
|
|
}
|
|
|
|
#endif /* __KERNEL__ */
|
|
#endif /* _ASM_A_OUT_CORE_H */
|