diff options
Diffstat (limited to 'compiler-rt/lib/interception/interception_win.cc')
| -rw-r--r-- | compiler-rt/lib/interception/interception_win.cc | 7 | 
1 files changed, 6 insertions, 1 deletions
diff --git a/compiler-rt/lib/interception/interception_win.cc b/compiler-rt/lib/interception/interception_win.cc index e4f3d358f40..b2902d57f54 100644 --- a/compiler-rt/lib/interception/interception_win.cc +++ b/compiler-rt/lib/interception/interception_win.cc @@ -477,7 +477,7 @@ static size_t GetInstructionSize(uptr address, size_t* rel_offset = nullptr) {    switch (*(u8*)address) {      case 0xA1:  // A1 XX XX XX XX XX XX XX XX :                  //   movabs eax, dword ptr ds:[XXXXXXXX] -      return 8; +      return 9;    }    switch (*(u16*)address) { @@ -495,6 +495,11 @@ static size_t GetInstructionSize(uptr address, size_t* rel_offset = nullptr) {      case 0x5741:  // push r15      case 0x9066:  // Two-byte NOP        return 2; + +    case 0x058B:  // 8B 05 XX XX XX XX : mov eax, dword ptr [XX XX XX XX] +      if (rel_offset) +        *rel_offset = 2; +      return 6;    }    switch (0x00FFFFFF & *(u32*)address) {  | 

