diff options
author | 2009-06-04 22:56:13 +0000 | |
---|---|---|
committer | 2009-06-04 22:56:13 +0000 | |
commit | 29f4b8646a166052f8b76de5c5a019c39326ea11 (patch) | |
tree | a213b9f0c007f50b34f95f7ff1065bfdf6391d0c /sys | |
parent | turn ipvcrap on on the interface in question. sake bottle pushed by theo, (diff) | |
download | wireguard-openbsd-29f4b8646a166052f8b76de5c5a019c39326ea11.tar.xz wireguard-openbsd-29f4b8646a166052f8b76de5c5a019c39326ea11.zip |
Make backtraces through interrupts work.
Diffstat (limited to 'sys')
-rw-r--r-- | sys/arch/amd64/amd64/db_trace.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/sys/arch/amd64/amd64/db_trace.c b/sys/arch/amd64/amd64/db_trace.c index c41b9a79142..a790cf9a110 100644 --- a/sys/arch/amd64/amd64/db_trace.c +++ b/sys/arch/amd64/amd64/db_trace.c @@ -1,4 +1,4 @@ -/* $OpenBSD: db_trace.c,v 1.5 2009/06/04 19:42:22 kettenis Exp $ */ +/* $OpenBSD: db_trace.c,v 1.6 2009/06/04 22:56:13 kettenis Exp $ */ /* $NetBSD: db_trace.c,v 1.1 2003/04/26 18:39:27 fvdl Exp $ */ /* @@ -110,6 +110,7 @@ struct x86_64_frame { struct x86_64_frame *f_frame; long f_retaddr; long f_arg0; + long f_arg1; }; #define NONE 0 @@ -344,8 +345,12 @@ db_stack_trace_print(db_expr_t addr, boolean_t have_addr, db_expr_t count, continue; } + if (is_trap == INTERRUPT) + argp = &lastframe->f_arg1; + else + argp = &frame->f_arg0; lastframe = frame; - db_nextframe(&frame, &callpc, &frame->f_arg0, is_trap, pr); + db_nextframe(&frame, &callpc, argp, is_trap, pr); if (frame == 0) { /* end of chain */ |