From f7bd0c89a3fe9bc30ecb1420d6f7fd1e7e533c2b Mon Sep 17 00:00:00 2001 From: Wunkolo Date: Thu, 16 May 2024 09:39:49 -0700 Subject: [PATCH] [a64] Implement guest-debugger stalk-walks --- src/xenia/cpu/stack_walker_win.cc | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/xenia/cpu/stack_walker_win.cc b/src/xenia/cpu/stack_walker_win.cc index 2fe8470c4..d1bfac7d1 100644 --- a/src/xenia/cpu/stack_walker_win.cc +++ b/src/xenia/cpu/stack_walker_win.cc @@ -58,6 +58,12 @@ LPSYMFUNCTIONTABLEACCESS64 sym_function_table_access_64_ = nullptr; LPSYMGETMODULEBASE64 sym_get_module_base_64_ = nullptr; LPSYMGETSYMFROMADDR64 sym_get_sym_from_addr_64_ = nullptr; +#if XE_ARCH_AMD64 +static const DWORD kMachineType = IMAGE_FILE_MACHINE_AMD64; +#elif XE_ARCH_ARM64 +static const DWORD kMachineType = IMAGE_FILE_MACHINE_ARM64; +#endif + namespace xe { namespace cpu { @@ -235,8 +241,8 @@ class Win32StackWalker : public StackWalker { // not. size_t frame_index = 0; while (frame_index < frame_count && - stack_walk_64_(IMAGE_FILE_MACHINE_AMD64, GetCurrentProcess(), - thread_handle, &stack_frame, &thread_context, nullptr, + stack_walk_64_(kMachineType, GetCurrentProcess(), thread_handle, + &stack_frame, &thread_context, nullptr, XSymFunctionTableAccess64, XSymGetModuleBase64, nullptr) == TRUE) { if (frame_index >= frame_offset) {