Skip to content

Commit 141c2bf

Browse files
[ASan][Windows] Add new instruction sizes (llvm#167734)
These instructions show up when building asan in the premerge container and do not on other bots, likely due to different standard library versions.
1 parent fa417d7 commit 141c2bf

File tree

2 files changed

+8
-0
lines changed

2 files changed

+8
-0
lines changed

compiler-rt/lib/interception/interception_win.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -646,6 +646,7 @@ static size_t GetInstructionSize(uptr address, size_t* rel_offset = nullptr) {
646646
case 0xC033: // 33 C0 : xor eax, eax
647647
case 0xC933: // 33 C9 : xor ecx, ecx
648648
case 0xD233: // 33 D2 : xor edx, edx
649+
case 0xFF33: // 33 FF : xor edi, edi
649650
case 0x9066: // 66 90 : xchg %ax,%ax (Two-byte NOP)
650651
case 0xDB84: // 84 DB : test bl,bl
651652
case 0xC084: // 84 C0 : test al,al
@@ -764,6 +765,7 @@ static size_t GetInstructionSize(uptr address, size_t* rel_offset = nullptr) {
764765

765766
switch (0x00FFFFFF & *(u32 *)address) {
766767
case 0x10b70f: // 0f b7 10 : movzx edx, WORD PTR [rax]
768+
case 0x02b70f: // 0f b7 02 : movzx eax, WORD PTR [rdx]
767769
case 0xc00b4d: // 4d 0b c0 : or r8, r8
768770
case 0xc03345: // 45 33 c0 : xor r8d, r8d
769771
case 0xc08548: // 48 85 c0 : test rax, rax
@@ -799,6 +801,7 @@ static size_t GetInstructionSize(uptr address, size_t* rel_offset = nullptr) {
799801
case 0xc9854d: // 4d 85 c9 : test r9, r9
800802
case 0xc98b4c: // 4c 8b c9 : mov r9, rcx
801803
case 0xd12948: // 48 29 d1 : sub rcx, rdx
804+
case 0xc22b4c: // 4c 2b c2 : sub r8, rdx
802805
case 0xca2b48: // 48 2b ca : sub rcx, rdx
803806
case 0xca3b48: // 48 3b ca : cmp rcx, rdx
804807
case 0xd12b48: // 48 2b d1 : sub rdx, rcx
@@ -813,6 +816,7 @@ static size_t GetInstructionSize(uptr address, size_t* rel_offset = nullptr) {
813816
case 0xd9f748: // 48 f7 d9 : neg rcx
814817
case 0xc03145: // 45 31 c0 : xor r8d,r8d
815818
case 0xc93145: // 45 31 c9 : xor r9d,r9d
819+
case 0xd23345: // 45 33 d2 : xor r10d, r10d
816820
case 0xdb3345: // 45 33 db : xor r11d, r11d
817821
case 0xc08445: // 45 84 c0 : test r8b,r8b
818822
case 0xd28445: // 45 84 d2 : test r10b,r10b

compiler-rt/lib/interception/tests/interception_win_test.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -841,6 +841,7 @@ const struct InstructionSizeData {
841841
{ 1, {0xCC}, 0, "CC : int 3 i.e. registering weak functions)"},
842842
{ 2, {0x31, 0xC0}, 0, "31 C0 : xor eax, eax"},
843843
{ 2, {0x31, 0xC9}, 0, "31 C9 : xor ecx, ecx"},
844+
{ 2, {0x33, 0xFF}, 0, "33 FF : xor edi, edi"},
844845
{ 2, {0x31, 0xD2}, 0, "31 D2 : xor edx, edx"},
845846
{ 2, {0x33, 0xC0}, 0, "33 C0 : xor eax, eax"},
846847
{ 2, {0x33, 0xC9}, 0, "33 C9 : xor ecx, ecx"},
@@ -895,6 +896,7 @@ const struct InstructionSizeData {
895896
{ 3, {0x0f, 0xb6, 0x11}, 0, "0f b6 11 : movzx edx, BYTE PTR [rcx]"},
896897
{ 3, {0x0f, 0xb6, 0xc2}, 0, "0f b6 c2 : movzx eax, dl"},
897898
{ 3, {0x0f, 0xb6, 0xd2}, 0, "0f b6 d2 : movzx edx, dl"},
899+
{ 3, (0x0f, 0xb7, 0x02), 0, "0f b7 02 : movzx eax, WORD PTR [rdx]"}.
898900
{ 3, {0x0f, 0xb7, 0x10}, 0, "0f b7 10 : movzx edx, WORD PTR [rax]"},
899901
{ 3, {0x0f, 0xbe, 0xd2}, 0, "0f be d2 : movsx edx, dl"},
900902
{ 3, {0x41, 0x8b, 0xc0}, 0, "41 8b c0 : mov eax, r8d"},
@@ -906,6 +908,7 @@ const struct InstructionSizeData {
906908
{ 3, {0x45, 0x31, 0xc9}, 0, "45 31 c9 : xor r9d,r9d"},
907909
{ 3, {0x45, 0x33, 0xc0}, 0, "45 33 c0 : xor r8d, r8d"},
908910
{ 3, {0x45, 0x33, 0xc9}, 0, "45 33 c9 : xor r9d, r9d"},
911+
{ 3, (0x45, 0x33, 0xd2), 0, "45 33 d2 : xor r10d, r10d"},
909912
{ 3, {0x45, 0x33, 0xdb}, 0, "45 33 db : xor r11d, r11d"},
910913
{ 3, {0x45, 0x84, 0xc0}, 0, "45 84 c0 : test r8b,r8b"},
911914
{ 3, {0x45, 0x84, 0xd2}, 0, "45 84 d2 : test r10b,r10b"},
@@ -950,6 +953,7 @@ const struct InstructionSizeData {
950953
{ 3, {0x49, 0xff, 0xc5}, 0, "49 ff c5 : inc r13"},
951954
{ 3, {0x49, 0xff, 0xc6}, 0, "49 ff c6 : inc r14"},
952955
{ 3, {0x49, 0xff, 0xc7}, 0, "49 ff c7 : inc r15"},
956+
{ 3, {0x4c, 0x2b, 0xc2}, 0, "4c 2b c2 : sub r8, rdx"},
953957
{ 3, {0x4c, 0x8b, 0xc1}, 0, "4c 8b c1 : mov r8, rcx"},
954958
{ 3, {0x4c, 0x8b, 0xc9}, 0, "4c 8b c9 : mov r9, rcx"},
955959
{ 3, {0x4c, 0x8b, 0xd1}, 0, "4c 8b d1 : mov r10, rcx"},

0 commit comments

Comments
 (0)