diff options
author | Bryce McKinlay <mckinlay@redhat.com> | 2006-07-12 13:56:25 +0000 |
---|---|---|
committer | Bryce McKinlay <bryce@gcc.gnu.org> | 2006-07-12 14:56:25 +0100 |
commit | 2bdda702e977dc22a7d83b5e462ecefa381eb1b1 (patch) | |
tree | 933ac902043a3af3c37dda811a00b2a5758d91a4 /libjava/stacktrace.cc | |
parent | 8b907df422779e4e8e8c45c108d977c438596a0a (diff) | |
download | gcc-2bdda702e977dc22a7d83b5e462ecefa381eb1b1.tar.gz |
re PR java/28352 (gcj -C fails to generate line number info for method)
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.
From-SVN: r115370
Diffstat (limited to 'libjava/stacktrace.cc')
-rw-r--r-- | libjava/stacktrace.cc | 4 |
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 |