Skip to content

Commit 2a7b9e7

Browse files
Allow detection of CPU arch for GNU/CLang tools (#879)
1 parent df16f7d commit 2a7b9e7

1 file changed

Lines changed: 10 additions & 4 deletions

File tree

lib/edd-dbg/src/windows/frames.cpp

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,13 @@
1212

1313
#include <windows.h>
1414

15-
#if !defined(_M_AMD64) && !defined(_M_IX86) && !defined(_M_ARM64)
15+
#if defined(_M_AMD64) || defined(__amd64__) || defined(__x86_64__)
16+
# define EDD_DBG_X86_64 1
17+
#elif defined(_M_IX86) || defined(__i386__)
18+
# define EDD_DBG_X86 1
19+
#elif defined(_M_ARM64) || defined(__aarch64__)
20+
# define EDD_DBG_ARM64 1
21+
#else
1622
# error "unsupported architecture :("
1723
#endif
1824

@@ -30,7 +36,7 @@ namespace dbg
3036
context.ContextFlags = CONTEXT_FULL;
3137

3238
// RtlCaptureContext() crashes with heavy optimizations on MinGW 4.7.
33-
#if defined(__MINGW32__) && !defined(_M_AMD64) && !defined(_M_ARM64)
39+
#if defined(__MINGW32__) && defined(EDD_DBG_X86)
3440
DWORD eip_val = 0;
3541
DWORD esp_val = 0;
3642
DWORD ebp_val = 0;
@@ -53,7 +59,7 @@ namespace dbg
5359
RtlCaptureContext_(&context);
5460
#endif
5561

56-
#if defined(_M_AMD64)
62+
#if defined(EDD_DBG_X86_64)
5763
frame.AddrPC.Offset = context.Rip;
5864
frame.AddrPC.Mode = AddrModeFlat;
5965
frame.AddrStack.Offset = context.Rsp;
@@ -62,7 +68,7 @@ namespace dbg
6268
frame.AddrFrame.Mode = AddrModeFlat;
6369

6470
const DWORD machine = 0x8664; // IMAGE_FILE_MACHINE_AMD64;
65-
#elif defined(_M_ARM64)
71+
#elif defined(EDD_DBG_ARM64)
6672
frame.AddrPC.Offset = context.Pc;
6773
frame.AddrPC.Mode = AddrModeFlat;
6874
frame.AddrStack.Offset = context.Sp;

0 commit comments

Comments
 (0)