From: Julian Seward Date: Wed, 29 Sep 2010 21:36:56 +0000 (+0000) Subject: On ARM, request precise exceptions for R7. This is needed to X-Git-Tag: svn/VALGRIND_3_6_1^2~30 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ffccc62dab8ca6d6411b156cf196747284ef8428;p=thirdparty%2Fvalgrind.git On ARM, request precise exceptions for R7. This is needed to get sane stack traces in Thumb code. git-svn-id: svn://svn.valgrind.org/vex/trunk@2052 --- diff --git a/VEX/priv/guest_arm_helpers.c b/VEX/priv/guest_arm_helpers.c index e90d44e2c6..f6689a0c3d 100644 --- a/VEX/priv/guest_arm_helpers.c +++ b/VEX/priv/guest_arm_helpers.c @@ -635,7 +635,18 @@ Bool guest_arm_state_requires_precise_mem_exns ( Int minoff, Int r11_max = r11_min + 4 - 1; if (maxoff < r11_min || minoff > r11_max) { - /* no overlap with pc */ + /* no overlap with r11 */ + } else { + return True; + } + + /* Ditto R7, particularly needed for proper stacktraces in Thumb + code. */ + Int r7_min = offsetof(VexGuestARMState, guest_R7); + Int r7_max = r7_min + 4 - 1; + + if (maxoff < r7_min || minoff > r7_max) { + /* no overlap with r7 */ } else { return True; }