]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Make origin tracking work on arm64.
authorJulian Seward <jseward@acm.org>
Tue, 8 Apr 2014 15:26:12 +0000 (15:26 +0000)
committerJulian Seward <jseward@acm.org>
Tue, 8 Apr 2014 15:26:12 +0000 (15:26 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13893

memcheck/mc_machine.c

index 06807cc4b43dfa6ea5f4cc99c3c638a6da00a0b1..e38531048b07defdc680f2bd209b1137cbadd297 100644 (file)
@@ -982,6 +982,78 @@ static Int get_otrack_shadow_offset_wrk ( Int offset, Int szB )
    if (o == GOF(X1)  && is48) return o;
    if (o == GOF(X2)  && is48) return o;
    if (o == GOF(X3)  && is48) return o;
+   if (o == GOF(X4)  && is48) return o;
+   if (o == GOF(X5)  && is48) return o;
+   if (o == GOF(X6)  && is48) return o;
+   if (o == GOF(X7)  && is48) return o;
+   if (o == GOF(X8)  && is48) return o;
+   if (o == GOF(X9)  && is48) return o;
+   if (o == GOF(X10) && is48) return o;
+   if (o == GOF(X11) && is48) return o;
+   if (o == GOF(X12) && is48) return o;
+   if (o == GOF(X13) && is48) return o;
+   if (o == GOF(X14) && is48) return o;
+   if (o == GOF(X15) && is48) return o;
+   if (o == GOF(X16) && is48) return o;
+   if (o == GOF(X17) && is48) return o;
+   if (o == GOF(X18) && is48) return o;
+   if (o == GOF(X19) && is48) return o;
+   if (o == GOF(X20) && is48) return o;
+   if (o == GOF(X21) && is48) return o;
+   if (o == GOF(X22) && is48) return o;
+   if (o == GOF(X23) && is48) return o;
+   if (o == GOF(X24) && is48) return o;
+   if (o == GOF(X25) && is48) return o;
+   if (o == GOF(X26) && is48) return o;
+   if (o == GOF(X27) && is48) return o;
+   if (o == GOF(X28) && is48) return o;
+   if (o == GOF(X29) && is48) return o;
+   if (o == GOF(X30) && is48) return o;
+   if (o == GOF(XSP) && is48) return o;
+
+   if (o == GOF(PC)  && is48) return -1; // untracked
+   if (o == GOF(CC_DEP1) && sz == 8) return o;
+   if (o == GOF(CC_DEP2) && sz == 8) return o;
+
+   if (o == GOF(CC_OP)     && sz == 8) return -1; // untracked
+   if (o == GOF(CC_NDEP)   && sz == 8) return -1; // untracked
+   if (o == GOF(TPIDR_EL0) && sz == 8) return -1; // untracked
+
+   if (o >= GOF(Q0)   && o+sz <= GOF(Q0) +SZB(Q0))  return GOF(Q0);
+   if (o >= GOF(Q1)   && o+sz <= GOF(Q1) +SZB(Q1))  return GOF(Q1);
+   if (o >= GOF(Q2)   && o+sz <= GOF(Q2) +SZB(Q2))  return GOF(Q2);
+   if (o >= GOF(Q3)   && o+sz <= GOF(Q3) +SZB(Q3))  return GOF(Q3);
+   if (o >= GOF(Q4)   && o+sz <= GOF(Q4) +SZB(Q4))  return GOF(Q4);
+   if (o >= GOF(Q5)   && o+sz <= GOF(Q5) +SZB(Q5))  return GOF(Q5);
+   if (o >= GOF(Q6)   && o+sz <= GOF(Q6) +SZB(Q6))  return GOF(Q6);
+   if (o >= GOF(Q7)   && o+sz <= GOF(Q7) +SZB(Q7))  return GOF(Q7);
+   if (o >= GOF(Q8)   && o+sz <= GOF(Q8) +SZB(Q8))  return GOF(Q8);
+   if (o >= GOF(Q9)   && o+sz <= GOF(Q9) +SZB(Q9))  return GOF(Q9);
+   if (o >= GOF(Q10)  && o+sz <= GOF(Q10)+SZB(Q10)) return GOF(Q10);
+   if (o >= GOF(Q11)  && o+sz <= GOF(Q11)+SZB(Q11)) return GOF(Q11);
+   if (o >= GOF(Q12)  && o+sz <= GOF(Q12)+SZB(Q12)) return GOF(Q12);
+   if (o >= GOF(Q13)  && o+sz <= GOF(Q13)+SZB(Q13)) return GOF(Q13);
+   if (o >= GOF(Q14)  && o+sz <= GOF(Q14)+SZB(Q14)) return GOF(Q14);
+   if (o >= GOF(Q15)  && o+sz <= GOF(Q15)+SZB(Q15)) return GOF(Q15);
+   if (o >= GOF(Q16)  && o+sz <= GOF(Q16)+SZB(Q16)) return GOF(Q16);
+   if (o >= GOF(Q17)  && o+sz <= GOF(Q17)+SZB(Q17)) return GOF(Q17);
+   if (o >= GOF(Q18)  && o+sz <= GOF(Q18)+SZB(Q18)) return GOF(Q18);
+   if (o >= GOF(Q19)  && o+sz <= GOF(Q19)+SZB(Q19)) return GOF(Q19);
+   if (o >= GOF(Q20)  && o+sz <= GOF(Q20)+SZB(Q20)) return GOF(Q20);
+   if (o >= GOF(Q21)  && o+sz <= GOF(Q21)+SZB(Q21)) return GOF(Q21);
+   if (o >= GOF(Q22)  && o+sz <= GOF(Q22)+SZB(Q22)) return GOF(Q22);
+   if (o >= GOF(Q23)  && o+sz <= GOF(Q23)+SZB(Q23)) return GOF(Q23);
+   if (o >= GOF(Q24)  && o+sz <= GOF(Q24)+SZB(Q24)) return GOF(Q24);
+   if (o >= GOF(Q25)  && o+sz <= GOF(Q25)+SZB(Q25)) return GOF(Q25);
+   if (o >= GOF(Q26)  && o+sz <= GOF(Q26)+SZB(Q26)) return GOF(Q26);
+   if (o >= GOF(Q27)  && o+sz <= GOF(Q27)+SZB(Q27)) return GOF(Q27);
+   if (o >= GOF(Q28)  && o+sz <= GOF(Q28)+SZB(Q28)) return GOF(Q28);
+   if (o >= GOF(Q29)  && o+sz <= GOF(Q29)+SZB(Q29)) return GOF(Q29);
+   if (o >= GOF(Q30)  && o+sz <= GOF(Q30)+SZB(Q30)) return GOF(Q30);
+   if (o >= GOF(Q31)  && o+sz <= GOF(Q31)+SZB(Q31)) return GOF(Q31);
+
+   if (o == GOF(FPCR) && sz == 4) return -1; // untracked
+   if (o == GOF(FPSR) && sz == 4) return -1; // untracked
 
    VG_(printf)("MC_(get_otrack_shadow_offset)(arm64)(off=%d,sz=%d)\n",
                offset,szB);