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);