|
From: <sv...@va...> - 2010-09-29 21:37:05
|
Author: sewardj
Date: 2010-09-29 22:36:56 +0100 (Wed, 29 Sep 2010)
New Revision: 2052
Log:
On ARM, request precise exceptions for R7. This is needed to
get sane stack traces in Thumb code.
Modified:
trunk/priv/guest_arm_helpers.c
Modified: trunk/priv/guest_arm_helpers.c
===================================================================
--- trunk/priv/guest_arm_helpers.c 2010-09-28 19:56:32 UTC (rev 2051)
+++ trunk/priv/guest_arm_helpers.c 2010-09-29 21:36:56 UTC (rev 2052)
@@ -635,11 +635,22 @@
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;
+ }
+
return False;
}
|