summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvisa <visa@openbsd.org>2019-09-06 16:22:40 +0000
committervisa <visa@openbsd.org>2019-09-06 16:22:40 +0000
commitfb1a62f99ae435fd9526f0f35b2693ed581cfbdf (patch)
tree3865d7f24407dc25d278df0917c41cf422a755b8
parentStop stack trace saving if the current subroutine is u_general or u_intr (diff)
downloadwireguard-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.c5
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);