mirror of https://github.com/libsdl-org/SDL.git
sdlprocdump: become C90 compatible
This commit is contained in:
parent
4d6b23b68f
commit
18c9bd21b5
|
|
@ -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;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue