Report TRAP_BRKPT for breakpoint traps on sparc64.

Reviewed by:	marius
MFC after:	2 weeks
Differential Revision:	https://reviews.freebsd.org/D15190
This commit is contained in:
John Baldwin 2018-05-09 15:25:26 +00:00
parent 806b3bbe97
commit 485415ec47
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=333416

View File

@ -257,7 +257,7 @@ trap(struct trapframe *tf)
struct thread *td;
struct proc *p;
int error;
int sig;
int sig, ucode;
register_t addr;
ksiginfo_t ksi;
@ -277,6 +277,7 @@ trap(struct trapframe *tf)
td->td_pticks = 0;
td->td_frame = tf;
addr = tf->tf_tpc;
ucode = (int)tf->tf_type; /* XXX not POSIX */
if (td->td_cowgen != p->p_cowgen)
thread_cow_update(td);
@ -300,6 +301,10 @@ trap(struct trapframe *tf)
case T_CORRECTED_ECC_ERROR:
sig = trap_cecc();
break;
case T_BREAKPOINT:
sig = SIGTRAP;
ucode = TRAP_BRKPT;
break;
default:
if (tf->tf_type > T_MAX)
panic("trap: bad trap type %#lx (user)",
@ -322,7 +327,7 @@ trap(struct trapframe *tf)
kdb_enter(KDB_WHY_TRAPSIG, "trapsig");
ksiginfo_init_trap(&ksi);
ksi.ksi_signo = sig;
ksi.ksi_code = (int)tf->tf_type; /* XXX not POSIX */
ksi.ksi_code = ucode;
ksi.ksi_addr = (void *)addr;
ksi.ksi_trapno = (int)tf->tf_type;
trapsignal(td, &ksi);