From: Josef Weidendorfer Date: Fri, 4 Mar 2011 10:53:12 +0000 (+0000) Subject: Fix for bug 265771. X-Git-Tag: svn/VALGRIND_3_7_0~650 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2edd73cad9b1d1be76ba3b0d95ffc11fed767ca0;p=thirdparty%2Fvalgrind.git Fix for bug 265771. For calls (structure jCC), Callgrind maintains for the source both the BBCC (counter array for the source context of the call, which includes the BB of the source call position), as well as a jump number in the source BB to reconstruct the guest instruction address of the call. In setup_bbcc, this jump number is stored in , and used when creating a new jCC on a call. The value of got out of sync when we simulate a real jump between different functions as return/call pair: the call source was reset for the popped jCC, but not . git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11579 --- diff --git a/callgrind/bbcc.c b/callgrind/bbcc.c index bab4858544..4b01b97b91 100644 --- a/callgrind/bbcc.c +++ b/callgrind/bbcc.c @@ -693,6 +693,7 @@ void CLG_(setup_bbcc)(BB* bb) /* change source for delayed push */ CLG_(current_state).bbcc = top_ce->jcc->from; sp = top_ce->sp; + passed = top_ce->jcc->jmp; CLG_(pop_call_stack)(); } else {