Skip to content

Commit a927de9

Browse files
committed
[win/asan] GetInstructionSize: Support some more 2 or 3 byte instructions
These instructions are seen after asan added new interceptor for wcscpy/wcsncpy/wcscat/wcsncat functions.
1 parent 260f9e9 commit a927de9

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-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 edx, 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
@@ -802,6 +804,7 @@ static size_t GetInstructionSize(uptr address, size_t* rel_offset = nullptr) {
802804
case 0xca2b48: // 48 2b ca : sub rcx, rdx
803805
case 0xca3b48: // 48 3b ca : cmp rcx, rdx
804806
case 0xd12b48: // 48 2b d1 : sub rdx, rcx
807+
case 0xc22b4c: // 4c 2b c2 : sub r8, rdx
805808
case 0xd18b48: // 48 8b d1 : mov rdx, rcx
806809
case 0xd18b4c: // 4c 8b d1 : mov r10, rcx
807810
case 0xd28548: // 48 85 d2 : test rdx, rdx
@@ -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

0 commit comments

Comments
 (0)