Please sign in to comment.
Callgrind: use jmpkind from VEX for side exits.
To detect calls and returns, Callgrind's heuristic starts with using the jumpkind got from VEX for a control flow change instruction. However, for side exits, it always assumed a (conditional) jump, which holds true for x86, but e.g. not for ARM. This fixes Callgrind to use the jumpkind found by VEX for all exits, which should help making Callgrind work for ARM. It also moves the check whether a boring jump is actually a fall-through to instrumentation time. This changes (fixes) the result for indirect jumps to the next instruction, which should not be classified as fall-through (anyway, this case is probably very rare). This patch introduces an own enum for jump kinds in Callgrind. This is less confusing than misusing the VEX jump kind type, as Callgrinds wants to distinguish BB fall-throughs from real jumps (which both are Ijk_Boring in VEX). Also, setup_bbcc now stores separately whether the jump kind is conditional or not. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12269 a5019735-40e9-0310-863c-91ae7b9d1cf9
- Loading branch information...
Showing with 113 additions and 62 deletions.