[compiler-rt] Fix interception_win.cpp arm64 instruction lengths
Updates GetInstructionSize to account for arm64 instruction sizes. ARM64 instruction are always 4 bytes long but GetInstructionSize in interception_win.cpp assumes x86_64 which has mixed sizes. Fix is for: https://github.com/llvm/llvm-project/issues/64319 Before the changeclang_rt.asan_dynamic-aarch64.dll would crash at: OverrideFunction -> OverrideFunctionWithHotPatch -> GetInstructionSize:825 After the change: dllthunkintercept -> dllthunkgetrealaddressordie -> InternalGetProcAddress
This commit is contained in:
committed by
Puyan Lotfi
parent
c730e3c2a5
commit
5a48a824aa
@@ -457,6 +457,11 @@ static const u8 kPrologueWithShortJump2[] = {
|
||||
|
||||
// Returns 0 on error.
|
||||
static size_t GetInstructionSize(uptr address, size_t* rel_offset = nullptr) {
|
||||
#if SANITIZER_ARM64
|
||||
// An ARM64 instruction is 4 bytes long.
|
||||
return 4;
|
||||
#endif
|
||||
|
||||
#if SANITIZER_WINDOWS64
|
||||
if (memcmp((u8*)address, kPrologueWithShortJump1,
|
||||
sizeof(kPrologueWithShortJump1)) == 0 ||
|
||||
|
||||
Reference in New Issue
Block a user