Fix stackwalk64 architecture detection
This commit is contained in:
parent
262f024332
commit
4324901cd1
@ -64,7 +64,7 @@ namespace detail {
|
|||||||
STACKFRAME64 frame;
|
STACKFRAME64 frame;
|
||||||
ZeroMemory(&frame, sizeof(STACKFRAME64));
|
ZeroMemory(&frame, sizeof(STACKFRAME64));
|
||||||
DWORD machine_type;
|
DWORD machine_type;
|
||||||
#ifdef _M_IX86
|
#if defined(_M_IX86) || defined(__i386__)
|
||||||
machine_type = IMAGE_FILE_MACHINE_I386;
|
machine_type = IMAGE_FILE_MACHINE_I386;
|
||||||
frame.AddrPC.Offset = context.Eip;
|
frame.AddrPC.Offset = context.Eip;
|
||||||
frame.AddrPC.Mode = AddrModeFlat;
|
frame.AddrPC.Mode = AddrModeFlat;
|
||||||
@ -72,7 +72,7 @@ namespace detail {
|
|||||||
frame.AddrFrame.Mode = AddrModeFlat;
|
frame.AddrFrame.Mode = AddrModeFlat;
|
||||||
frame.AddrStack.Offset = context.Esp;
|
frame.AddrStack.Offset = context.Esp;
|
||||||
frame.AddrStack.Mode = AddrModeFlat;
|
frame.AddrStack.Mode = AddrModeFlat;
|
||||||
#elif _M_X64
|
#elif defined(_M_X64) || defined(__x86_64__)
|
||||||
machine_type = IMAGE_FILE_MACHINE_AMD64;
|
machine_type = IMAGE_FILE_MACHINE_AMD64;
|
||||||
frame.AddrPC.Offset = context.Rip;
|
frame.AddrPC.Offset = context.Rip;
|
||||||
frame.AddrPC.Mode = AddrModeFlat;
|
frame.AddrPC.Mode = AddrModeFlat;
|
||||||
@ -80,7 +80,7 @@ namespace detail {
|
|||||||
frame.AddrFrame.Mode = AddrModeFlat;
|
frame.AddrFrame.Mode = AddrModeFlat;
|
||||||
frame.AddrStack.Offset = context.Rsp;
|
frame.AddrStack.Offset = context.Rsp;
|
||||||
frame.AddrStack.Mode = AddrModeFlat;
|
frame.AddrStack.Mode = AddrModeFlat;
|
||||||
#elif _M_IA64
|
#elif defined(_M_IA64) || defined(__aarch64__)
|
||||||
machine_type = IMAGE_FILE_MACHINE_IA64;
|
machine_type = IMAGE_FILE_MACHINE_IA64;
|
||||||
frame.AddrPC.Offset = context.StIIP;
|
frame.AddrPC.Offset = context.StIIP;
|
||||||
frame.AddrPC.Mode = AddrModeFlat;
|
frame.AddrPC.Mode = AddrModeFlat;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user