|
From: <sv...@va...> - 2014-04-08 15:26:24
|
Author: sewardj
Date: Tue Apr 8 15:26:12 2014
New Revision: 13893
Log:
Make origin tracking work on arm64.
Modified:
trunk/memcheck/mc_machine.c
Modified: trunk/memcheck/mc_machine.c
==============================================================================
--- trunk/memcheck/mc_machine.c (original)
+++ trunk/memcheck/mc_machine.c Tue Apr 8 15:26:12 2014
@@ -982,6 +982,78 @@
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);
|