From 533518c7dddf75c62afaec29ff8678128ea60eea Mon Sep 17 00:00:00 2001 From: Anonymous Maarten Date: Tue, 23 Dec 2025 15:43:22 +0100 Subject: [PATCH] Disable traceback for Tiny C Compiler since it cannot include (#510) * Disable traceback for Tiny C Compiler since it cannot include * Tiny C Compiler does not have header --- docs/CONFIGURATION.md | 2 +- src/harness/CMakeLists.txt | 4 ++++ src/harness/os/linux.c | 20 ++++++++++++++++---- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/docs/CONFIGURATION.md b/docs/CONFIGURATION.md index ac1b97c9..6ecee628 100644 --- a/docs/CONFIGURATION.md +++ b/docs/CONFIGURATION.md @@ -37,7 +37,7 @@ Cutscenes = 0 ; "hires" mode is 640x480, otherwise default 320x200 Hires = 1 -; Only used in 'demo' mode. Default demo time out is 240s (5 mins) +; Only used in 'demo' mode. Default demo time out is 240s (4 mins) DemoTimeout = 240 ; Which directory in the [Games] section to run diff --git a/src/harness/CMakeLists.txt b/src/harness/CMakeLists.txt index 52d11057..25990846 100644 --- a/src/harness/CMakeLists.txt +++ b/src/harness/CMakeLists.txt @@ -110,6 +110,10 @@ if(DETHRACE_PLATFORM_SDL2) else() target_link_libraries(harness PRIVATE SDL2::SDL2) endif() + + if(CMAKE_C_COMPILER_ID MATCHES "TinyCC") + set_property(SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/platforms/sdl2.c" APPEND PROPERTY COMPILE_DEFINITIONS "SDL_DISABLE_IMMINTRIN_H") + endif() endif() if(DETHRACE_PLATFORM_SDL3) diff --git a/src/harness/os/linux.c b/src/harness/os/linux.c index 4a9190d7..f5e63d96 100644 --- a/src/harness/os/linux.c +++ b/src/harness/os/linux.c @@ -1,5 +1,12 @@ // Based on https://gist.github.com/jvranish/4441299 +#ifdef __TINYC__ +/* tcc does potentially not have __int128_t, used in /usr/include/bits/link.h:99 */ +#define SUPPORT_TRACEBACK 0 +#else +#define SUPPORT_TRACEBACK 1 +#endif + #define _GNU_SOURCE #include "harness/config.h" #include "harness/os.h" @@ -9,12 +16,10 @@ #include #include #include -#include #include #include #include #include -#include #include #include #include @@ -28,10 +33,13 @@ #include #include +#if SUPPORT_TRACEBACK +#include +#include +#endif + #define ARRAY_SIZE(A) (sizeof(A) / sizeof(A[0])) #define MAX_STACK_FRAMES 64 -#define TRACER_PID_STRING "TracerPid:" - static int stack_nbr = 0; static char _program_name[1024]; @@ -44,6 +52,7 @@ struct dl_iterate_callback_data { intptr_t start; } dethrace_dl_data; +#if SUPPORT_TRACEBACK static int dl_iterate_callback(struct dl_phdr_info* info, size_t size, void* data) { struct dl_iterate_callback_data* callback_data = data; @@ -92,6 +101,7 @@ static void print_stack_trace(void) { free(messages); } } +#endif static void signal_handler(int sig, siginfo_t* siginfo, void* context) { (void)context; @@ -176,7 +186,9 @@ static void signal_handler(int sig, siginfo_t* siginfo, void* context) { break; } fputs("******************\n", stderr); +#if SUPPORT_TRACEBACK print_stack_trace(); +#endif exit(1); }