Commit b610d11d authored by sagnowski's avatar sagnowski
Browse files

Align call stack printout on Windows to that on Linux

parent 5d51b50f
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -181,7 +181,9 @@ static Word16 saturate (Word32 L_var1);
    void *call_stack[200];                                                     \
    int i;                                                                     \
    int num_frames;                                                            \
    DWORD64 offset;                                                            \
    SYMBOL_INFO *symbol;                                                       \
    IMAGEHLP_MODULE module;                                                    \
    HANDLE process;                                                            \
                                                                               \
    process = GetCurrentProcess();                                             \
@@ -190,14 +192,15 @@ static Word16 saturate (Word32 L_var1);
        (SYMBOL_INFO *)calloc(sizeof(SYMBOL_INFO) + 256 * sizeof(char), 1);    \
    symbol->MaxNameLen = 255;                                                  \
    symbol->SizeOfStruct = sizeof(SYMBOL_INFO);                                \
    module.SizeOfStruct = sizeof(IMAGEHLP_MODULE64);                           \
                                                                               \
    num_frames = CaptureStackBackTrace(0, 100, call_stack, NULL);              \
                                                                               \
    for (i = 0; i < num_frames; ++i) {                                         \
      SymFromAddr(process, (DWORD64)(call_stack[i]), 0, symbol);               \
      printf("[BASOP] %i %s - 0x%llX\n", i, symbol->Name, symbol->Address);    \
      SymFromAddr(process, (DWORD64)(call_stack[i]), &offset, symbol);         \
      SymGetModuleInfo(process, (DWORD)symbol->ModBase, &module);              \
      printf("[BASOP] %i\t%s(%s+0x%llX) [0x%llX]\n", i, module.ModuleName,     \
             symbol->Name, offset, symbol->Address);                           \
    }                                                                          \
                                                                               \
    free(symbol);                                                              \
  } while (0)
#else