[compilter-rt] Try to fix correctly rL277560
authorEtienne Bergeron <etienneb@google.com>
Wed, 3 Aug 2016 05:03:35 +0000 (05:03 +0000)
committerEtienne Bergeron <etienneb@google.com>
Wed, 3 Aug 2016 05:03:35 +0000 (05:03 +0000)
rL277560: [compiler-rt] Fix broken interception unittest
llvm-svn: 277567

compiler-rt/lib/interception/interception_win.cc
compiler-rt/lib/interception/tests/interception_win_test.cc

index 07acedb..c8d67b9 100644 (file)
@@ -462,6 +462,11 @@ static size_t GetInstructionSize(uptr address, size_t* rel_offset = nullptr) {
       return 0;
   }
 
+  switch (0x00FFFFFF & *(u32*)address) {
+    case 0x24A48D:  // 8D A4 24 XX XX XX XX : lea esp, [esp + XX XX XX XX]
+      return 7;
+  }
+
 #if SANITIZER_WINDOWS64
   switch (*(u8*)address) {
     case 0xA1:  // A1 XX XX XX XX XX XX XX XX :
@@ -570,9 +575,6 @@ static size_t GetInstructionSize(uptr address, size_t* rel_offset = nullptr) {
     case 0x24748B:  // 8B 74 24 XX : mov esi, dword ptr [esp + XX]
     case 0x247C8B:  // 8B 7C 24 XX : mov edi, dword ptr [esp + XX]
       return 4;
-
-    case 0x24A48D:  // 8D A4 24 XX XX XX XX : lea esp, [esp + XX XX XX XX]
-      return 7;
   }
 
   switch (*(u32*)address) {
index 7d18ce9..67b40f7 100644 (file)
@@ -481,11 +481,7 @@ TEST(Interception, PatchableFunction) {
   EXPECT_TRUE(TestFunctionPatching(kPatchableCode3, override));
 #endif
   EXPECT_TRUE(TestFunctionPatching(kPatchableCode4, override));
-#if SANITIZER_WINDOWS64
-  EXPECT_FALSE(TestFunctionPatching(kPatchableCode5, override));
-#else
   EXPECT_TRUE(TestFunctionPatching(kPatchableCode5, override));
-#endif
 
   EXPECT_FALSE(TestFunctionPatching(kUnpatchableCode1, override));
   EXPECT_FALSE(TestFunctionPatching(kUnpatchableCode2, override));