sdlprocdump: become C90 compatible
This commit is contained in:
@@ -41,6 +41,7 @@ file(GLOB RESOURCE_FILES *.bmp *.wav *.hex moose.dat utf8.txt)
|
|||||||
if(WIN32 AND NOT WINDOWS_STORE)
|
if(WIN32 AND NOT WINDOWS_STORE)
|
||||||
option(SDLTEST_PROCDUMP "Run tests using sdlprocdump for minidump generation" OFF)
|
option(SDLTEST_PROCDUMP "Run tests using sdlprocdump for minidump generation" OFF)
|
||||||
add_executable(sdlprocdump win32/sdlprocdump.c)
|
add_executable(sdlprocdump win32/sdlprocdump.c)
|
||||||
|
set_property(TARGET sdlprocdump PROPERTY C_STANDARD "90")
|
||||||
SDL_AddCommonCompilerFlags(sdlprocdump)
|
SDL_AddCommonCompilerFlags(sdlprocdump)
|
||||||
if(SDLTEST_PROCDUMP)
|
if(SDLTEST_PROCDUMP)
|
||||||
set(CMAKE_TEST_LAUNCHER "$<TARGET_FILE:sdlprocdump>")
|
set(CMAKE_TEST_LAUNCHER "$<TARGET_FILE:sdlprocdump>")
|
||||||
|
|||||||
@@ -37,6 +37,8 @@ static void printf_message(const char *format, ...) {
|
|||||||
static void printf_windows_message(const char *format, ...) {
|
static void printf_windows_message(const char *format, ...) {
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char win_msg[512];
|
char win_msg[512];
|
||||||
|
size_t win_msg_len;
|
||||||
|
|
||||||
FormatMessageA(
|
FormatMessageA(
|
||||||
FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
|
FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
|
||||||
NULL,
|
NULL,
|
||||||
@@ -44,7 +46,7 @@ static void printf_windows_message(const char *format, ...) {
|
|||||||
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
|
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
|
||||||
win_msg, sizeof(win_msg)/sizeof(*win_msg),
|
win_msg, sizeof(win_msg)/sizeof(*win_msg),
|
||||||
NULL);
|
NULL);
|
||||||
size_t win_msg_len = strlen(win_msg);
|
win_msg_len = strlen(win_msg);
|
||||||
while (win_msg[win_msg_len-1] == '\r' || win_msg[win_msg_len-1] == '\n' || win_msg[win_msg_len-1] == ' ') {
|
while (win_msg[win_msg_len-1] == '\r' || win_msg[win_msg_len-1] == '\n' || win_msg[win_msg_len-1] == ' ') {
|
||||||
win_msg[win_msg_len-1] = '\0';
|
win_msg[win_msg_len-1] = '\0';
|
||||||
win_msg_len--;
|
win_msg_len--;
|
||||||
@@ -250,6 +252,7 @@ post_dump:
|
|||||||
|
|
||||||
static void print_stacktrace(const LPPROCESS_INFORMATION process_information, PCONTEXT context, LPVOID address) {
|
static void print_stacktrace(const LPPROCESS_INFORMATION process_information, PCONTEXT context, LPVOID address) {
|
||||||
STACKFRAME64 stack_frame;
|
STACKFRAME64 stack_frame;
|
||||||
|
DWORD machine_type;
|
||||||
|
|
||||||
if (!context) {
|
if (!context) {
|
||||||
printf_message("Cannot create a stacktrace without a context");
|
printf_message("Cannot create a stacktrace without a context");
|
||||||
@@ -291,22 +294,22 @@ static void print_stacktrace(const LPPROCESS_INFORMATION process_information, PC
|
|||||||
stack_frame.AddrStack.Mode = AddrModeFlat;
|
stack_frame.AddrStack.Mode = AddrModeFlat;
|
||||||
|
|
||||||
#if defined(SDLPROCDUMP_CPU_X86)
|
#if defined(SDLPROCDUMP_CPU_X86)
|
||||||
DWORD machine_type = IMAGE_FILE_MACHINE_I386;
|
machine_type = IMAGE_FILE_MACHINE_I386;
|
||||||
stack_frame.AddrFrame.Offset = context->Ebp;
|
stack_frame.AddrFrame.Offset = context->Ebp;
|
||||||
stack_frame.AddrStack.Offset = context->Esp;
|
stack_frame.AddrStack.Offset = context->Esp;
|
||||||
stack_frame.AddrPC.Offset = context->Eip;
|
stack_frame.AddrPC.Offset = context->Eip;
|
||||||
#elif defined(SDLPROCDUMP_CPU_X64)
|
#elif defined(SDLPROCDUMP_CPU_X64)
|
||||||
DWORD machine_type = IMAGE_FILE_MACHINE_AMD64;
|
machine_type = IMAGE_FILE_MACHINE_AMD64;
|
||||||
stack_frame.AddrFrame.Offset = context->Rbp;
|
stack_frame.AddrFrame.Offset = context->Rbp;
|
||||||
stack_frame.AddrStack.Offset = context->Rsp;
|
stack_frame.AddrStack.Offset = context->Rsp;
|
||||||
stack_frame.AddrPC.Offset = context->Rip;
|
stack_frame.AddrPC.Offset = context->Rip;
|
||||||
#elif defined(SDLPROCDUMP_CPU_ARM32)
|
#elif defined(SDLPROCDUMP_CPU_ARM32)
|
||||||
DWORD machine_type = IMAGE_FILE_MACHINE_ARM;
|
machine_type = IMAGE_FILE_MACHINE_ARM;
|
||||||
stack_frame.AddrFrame.Offset = context->Lr;
|
stack_frame.AddrFrame.Offset = context->Lr;
|
||||||
stack_frame.AddrStack.Offset = context->Sp;
|
stack_frame.AddrStack.Offset = context->Sp;
|
||||||
stack_frame.AddrPC.Offset = context->Pc;
|
stack_frame.AddrPC.Offset = context->Pc;
|
||||||
#elif defined(SDLPROCDUMP_CPU_ARM64)
|
#elif defined(SDLPROCDUMP_CPU_ARM64)
|
||||||
DWORD machine_type = IMAGE_FILE_MACHINE_ARM64;
|
machine_type = IMAGE_FILE_MACHINE_ARM64;
|
||||||
stack_frame.AddrFrame.Offset = context->Fp;
|
stack_frame.AddrFrame.Offset = context->Fp;
|
||||||
stack_frame.AddrStack.Offset = context->Sp;
|
stack_frame.AddrStack.Offset = context->Sp;
|
||||||
stack_frame.AddrPC.Offset = context->Pc;
|
stack_frame.AddrPC.Offset = context->Pc;
|
||||||
|
|||||||
Reference in New Issue
Block a user