Fix `getTargetOfCall` for ARM.
authorPat Gavlin <pagavlin@microsoft.com>
Thu, 27 Jul 2017 19:32:07 +0000 (12:32 -0700)
committerPat Gavlin <pagavlin@microsoft.com>
Thu, 27 Jul 2017 19:32:07 +0000 (12:32 -0700)
If the instruction we're decoding is not a call, don't attempt to decode
it as if it were an x86 instruction. Instead, just return 0 as on ARM64.

src/vm/gccover.cpp

index 15ce761..895c176 100644 (file)
@@ -1035,6 +1035,10 @@ static SLOT getTargetOfCall(SLOT instrPtr, PCONTEXT regs, SLOT*nextInstr) {
         unsigned int regnum = (instrPtr[0] & 0x78) >> 3;
         return (BYTE *)getRegVal(regnum, regs);
     }
+    else
+    {
+        return 0; // Not a call.
+    }
 #elif defined(_TARGET_ARM64_)
    if (((*reinterpret_cast<DWORD*>(instrPtr)) & 0xFC000000) == 0x94000000)
    {