mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-27 15:41:46 +00:00
Changes to support running tests for Windows arm64 asan (#66973)
1. Differentiate SANITIZER_WINDOWS64 for x64 and arm64 2. turn off interception tests that expect x86 assembly --------- Co-authored-by: Farzon Lotfi <farzon@farzon.com>
This commit is contained in:
parent
623cd75105
commit
d79aee9f73
@ -431,7 +431,8 @@ static uptr AllocateMemoryForTrampoline(uptr image_address, size_t size) {
|
||||
// The following prologues cannot be patched because of the short jump
|
||||
// jumping to the patching region.
|
||||
|
||||
#if SANITIZER_WINDOWS64
|
||||
// Short jump patterns below are only for x86_64.
|
||||
# if SANITIZER_WINDOWS_x64
|
||||
// ntdll!wcslen in Win11
|
||||
// 488bc1 mov rax,rcx
|
||||
// 0fb710 movzx edx,word ptr [rax]
|
||||
@ -462,7 +463,7 @@ static size_t GetInstructionSize(uptr address, size_t* rel_offset = nullptr) {
|
||||
return 4;
|
||||
#endif
|
||||
|
||||
#if SANITIZER_WINDOWS64
|
||||
# if SANITIZER_WINDOWS_x64
|
||||
if (memcmp((u8*)address, kPrologueWithShortJump1,
|
||||
sizeof(kPrologueWithShortJump1)) == 0 ||
|
||||
memcmp((u8*)address, kPrologueWithShortJump2,
|
||||
@ -544,7 +545,7 @@ static size_t GetInstructionSize(uptr address, size_t* rel_offset = nullptr) {
|
||||
return 7;
|
||||
}
|
||||
|
||||
#if SANITIZER_WINDOWS64
|
||||
# if SANITIZER_WINDOWS_x64
|
||||
switch (*(u8*)address) {
|
||||
case 0xA1: // A1 XX XX XX XX XX XX XX XX :
|
||||
// movabs eax, dword ptr ds:[XXXXXXXX]
|
||||
|
@ -15,13 +15,15 @@
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
// Too slow for debug build
|
||||
// Disabling for ARM64 since testcases are x86/x64 assembly.
|
||||
#if !SANITIZER_DEBUG
|
||||
#if SANITIZER_WINDOWS
|
||||
# if !SANITIZER_WINDOWS_ARM64
|
||||
|
||||
#include <stdarg.h>
|
||||
# include <stdarg.h>
|
||||
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
# define WIN32_LEAN_AND_MEAN
|
||||
# include <windows.h>
|
||||
|
||||
namespace __interception {
|
||||
namespace {
|
||||
@ -793,5 +795,6 @@ TEST(Interception, EmptyExportTable) {
|
||||
|
||||
} // namespace __interception
|
||||
|
||||
# endif // !SANITIZER_WINDOWS_ARM64
|
||||
#endif // SANITIZER_WINDOWS
|
||||
#endif // #if !SANITIZER_DEBUG
|
||||
|
@ -260,6 +260,14 @@
|
||||
# define SANITIZER_ARM64 0
|
||||
#endif
|
||||
|
||||
#if SANITIZER_WINDOWS64 && SANITIZER_ARM64
|
||||
# define SANITIZER_WINDOWS_ARM64 1
|
||||
# define SANITIZER_WINDOWS_x64 0
|
||||
#else
|
||||
# define SANITIZER_WINDOWS_ARM64 0
|
||||
# define SANITIZER_WINDOWS_x64 1
|
||||
#endif
|
||||
|
||||
#if SANITIZER_SOLARIS && SANITIZER_WORDSIZE == 32
|
||||
# define SANITIZER_SOLARIS32 1
|
||||
#else
|
||||
|
Loading…
Reference in New Issue
Block a user