diff options
author | 2019-09-06 16:22:40 +0000 | |
---|---|---|
committer | 2019-09-06 16:22:40 +0000 | |
commit | fb1a62f99ae435fd9526f0f35b2693ed581cfbdf (patch) | |
tree | 3865d7f24407dc25d278df0917c41cf422a755b8 | |
parent | Stop stack trace saving if the current subroutine is u_general or u_intr (diff) | |
download | wireguard-openbsd-fb1a62f99ae435fd9526f0f35b2693ed581cfbdf.tar.xz wireguard-openbsd-fb1a62f99ae435fd9526f0f35b2693ed581cfbdf.zip |
Do not stop prologue scan at branch instructions. This lets stack trace
saving work with the twisted code that clang occasionally emits; stack
frame setup can happen very late after blocks of conditional code.
-rw-r--r-- | sys/arch/mips64/mips64/trap.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/sys/arch/mips64/mips64/trap.c b/sys/arch/mips64/mips64/trap.c index 1227a5aaf70..e2d59a34c4f 100644 --- a/sys/arch/mips64/mips64/trap.c +++ b/sys/arch/mips64/mips64/trap.c @@ -1,4 +1,4 @@ -/* $OpenBSD: trap.c,v 1.141 2019/09/06 16:06:30 visa Exp $ */ +/* $OpenBSD: trap.c,v 1.142 2019/09/06 16:22:40 visa Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -1531,8 +1531,7 @@ db_save_stack_trace(struct db_stack_trace *st) framesize = 0; for (va = subr; va < pc && !done; va += 4) { inst.word = kdbpeek(va); - if (inst_branch(inst.word) || inst_call(inst.word) || - inst_return(inst.word)) { + if (inst_call(inst.word) || inst_return(inst.word)) { /* Check the delay slot and stop. */ va += 4; inst.word = kdbpeek(va); |