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