summaryrefslogtreecommitdiff
path: root/libjava/stacktrace.cc
diff options
context:
space:
mode:
authorbryce <bryce@138bc75d-0d04-0410-961f-82ee72b054a4>2006-07-12 13:56:25 +0000
committerbryce <bryce@138bc75d-0d04-0410-961f-82ee72b054a4>2006-07-12 13:56:25 +0000
commit4868aa104f14437d0130c67a27bc6493923fb1b5 (patch)
tree933ac902043a3af3c37dda811a00b2a5758d91a4 /libjava/stacktrace.cc
parent77617136472b9fb91976eab7167f550b94b8ea9b (diff)
downloadgcc-4868aa104f14437d0130c67a27bc6493923fb1b5.tar.gz
2006-07-12 Bryce McKinlay <mckinlay@redhat.com>
PR libgcj/28352 * stacktrace.cc (getLineNumberForFrame): Roll back PC by 1 when looking up line number for interpreted frame. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@115370 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/stacktrace.cc')
-rw-r--r--libjava/stacktrace.cc4
1 files changed, 3 insertions, 1 deletions
diff --git a/libjava/stacktrace.cc b/libjava/stacktrace.cc
index 2ace9abc232..ed0700bd629 100644
--- a/libjava/stacktrace.cc
+++ b/libjava/stacktrace.cc
@@ -182,7 +182,9 @@ _Jv_StackTrace::getLineNumberForFrame(_Jv_StackFrame *frame, NameFinder *finder,
_Jv_InterpClass *interp_class =
(_Jv_InterpClass *) interp_meth->defining_class->aux_info;
*sourceFileName = interp_class->source_file_name;
- *lineNum = interp_meth->get_source_line(frame->interp.pc);
+ // The interpreter advances the PC before executing an instruction,
+ // so roll-back 1 byte to ensure the line number is accurate.
+ *lineNum = interp_meth->get_source_line(frame->interp.pc - 1);
return;
}
#endif