Fill in a (very) few cases for get_otrack_shadow_offset_wrk on arm64.
Apparently needed for generating some kinds of error messages, even
when not doing origin tracking, strangely enough.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13841 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/memcheck/mc_machine.c b/memcheck/mc_machine.c
index d04d542..06807cc 100644
--- a/memcheck/mc_machine.c
+++ b/memcheck/mc_machine.c
@@ -971,11 +971,17 @@
# define SZB(_fieldname) \
(sizeof(((VexGuestARM64State*)0)->guest_##_fieldname))
- Int o = offset;
- Int sz = szB;
+ Int o = offset;
+ Int sz = szB;
+ Bool is48 = sz == 8 || sz == 4;
+
tl_assert(sz > 0);
tl_assert(host_is_little_endian());
- (void)o; // RMME -- just to stop gcc warning that o is unused
+
+ if (o == GOF(X0) && is48) return o;
+ if (o == GOF(X1) && is48) return o;
+ if (o == GOF(X2) && is48) return o;
+ if (o == GOF(X3) && is48) return o;
VG_(printf)("MC_(get_otrack_shadow_offset)(arm64)(off=%d,sz=%d)\n",
offset,szB);