Skip to content

Commit 4b40070

Browse files
Fix #12991 Fix build on Windows for ARM64 (#6668)
1 parent 4e461bd commit 4b40070

1 file changed

Lines changed: 15 additions & 10 deletions

File tree

cli/cppcheckexecutorseh.cpp

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -78,20 +78,23 @@ namespace {
7878
);
7979
CONTEXT context = *(ex->ContextRecord);
8080
STACKFRAME64 stack= {0};
81-
#ifdef _M_IX86
81+
stack.AddrPC.Mode = AddrModeFlat;
82+
stack.AddrStack.Mode = AddrModeFlat;
83+
stack.AddrFrame.Mode = AddrModeFlat;
84+
#if defined(_M_IX86)
8285
stack.AddrPC.Offset = context.Eip;
83-
stack.AddrPC.Mode = AddrModeFlat;
8486
stack.AddrStack.Offset = context.Esp;
85-
stack.AddrStack.Mode = AddrModeFlat;
8687
stack.AddrFrame.Offset = context.Ebp;
87-
stack.AddrFrame.Mode = AddrModeFlat;
88-
#else
88+
#elif defined(_M_AMD64)
8989
stack.AddrPC.Offset = context.Rip;
90-
stack.AddrPC.Mode = AddrModeFlat;
9190
stack.AddrStack.Offset = context.Rsp;
92-
stack.AddrStack.Mode = AddrModeFlat;
9391
stack.AddrFrame.Offset = context.Rsp;
94-
stack.AddrFrame.Mode = AddrModeFlat;
92+
#elif defined(_M_ARM64)
93+
stack.AddrPC.Offset = context.Pc;
94+
stack.AddrStack.Offset = context.Sp;
95+
stack.AddrFrame.Offset = context.Fp;
96+
#else
97+
#error Platform not supported!
9598
#endif
9699
IMAGEHLP_SYMBOL64_EXT symbol;
97100
symbol.SizeOfStruct = sizeof(IMAGEHLP_SYMBOL64);
@@ -101,10 +104,12 @@ namespace {
101104
for (ULONG frame = 0; ; frame++) {
102105
BOOL result = pStackWalk64
103106
(
104-
#ifdef _M_IX86
107+
#if defined(_M_IX86)
105108
IMAGE_FILE_MACHINE_I386,
106-
#else
109+
#elif defined(_M_AMD64)
107110
IMAGE_FILE_MACHINE_AMD64,
111+
#elif defined(_M_ARM64)
112+
IMAGE_FILE_MACHINE_ARM64,
108113
#endif
109114
hProcess,
110115
hThread,

0 commit comments

Comments
 (0)