From 8c06fec09e3f91436ab58b1536f860d6f1f879c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Gr=C3=A9goire?= Date: Thu, 31 Jul 2025 10:09:55 +0200 Subject: [PATCH] Refactor libbacktrace usage with TRACY_USE_LIBBACKTRACE --- public/TracyClient.cpp | 20 -------------------- public/client/TracyCallstack.cpp | 26 ++++++++++++++++++++++---- public/client/TracyCallstack.h | 4 ++++ 3 files changed, 26 insertions(+), 24 deletions(-) diff --git a/public/TracyClient.cpp b/public/TracyClient.cpp index e9a018485c..8e66975968 100644 --- a/public/TracyClient.cpp +++ b/public/TracyClient.cpp @@ -35,28 +35,8 @@ #ifdef TRACY_ROCPROF # include "client/TracyRocprof.cpp" #endif - -#if defined(TRACY_HAS_CALLSTACK) -# if TRACY_HAS_CALLSTACK == 2 || TRACY_HAS_CALLSTACK == 3 || TRACY_HAS_CALLSTACK == 4 || TRACY_HAS_CALLSTACK == 6 -# include "libbacktrace/alloc.cpp" -# include "libbacktrace/dwarf.cpp" -# include "libbacktrace/fileline.cpp" -# include "libbacktrace/mmapio.cpp" -# include "libbacktrace/posix.cpp" -# include "libbacktrace/sort.cpp" -# include "libbacktrace/state.cpp" -# if TRACY_HAS_CALLSTACK == 4 -# include "libbacktrace/macho.cpp" -# else -# include "libbacktrace/elf.cpp" -# endif -# include "common/TracyStackFrames.cpp" -# endif -#endif - #ifdef _MSC_VER # pragma comment(lib, "ws2_32.lib") -# pragma comment(lib, "dbghelp.lib") # pragma comment(lib, "advapi32.lib") # pragma comment(lib, "user32.lib") # pragma warning(pop) diff --git a/public/client/TracyCallstack.cpp b/public/client/TracyCallstack.cpp index bd3290604f..785cf23f7c 100644 --- a/public/client/TracyCallstack.cpp +++ b/public/client/TracyCallstack.cpp @@ -24,15 +24,33 @@ # pragma warning( disable : 4091 ) # endif # include +# pragma comment( lib, "dbghelp.lib" ) # ifdef _MSC_VER # pragma warning( pop ) # endif -#elif TRACY_HAS_CALLSTACK == 2 || TRACY_HAS_CALLSTACK == 3 || TRACY_HAS_CALLSTACK == 4 || TRACY_HAS_CALLSTACK == 6 +#elif defined(TRACY_USE_LIBBACKTRACE) + # include "../libbacktrace/backtrace.hpp" # include # include # include # include + +// Implementation files +# include "../libbacktrace/alloc.cpp" +# include "../libbacktrace/dwarf.cpp" +# include "../libbacktrace/fileline.cpp" +# include "../libbacktrace/mmapio.cpp" +# include "../libbacktrace/posix.cpp" +# include "../libbacktrace/sort.cpp" +# include "../libbacktrace/state.cpp" +# if TRACY_HAS_CALLSTACK == 4 +# include "../libbacktrace/macho.cpp" +# else +# include "../libbacktrace/elf.cpp" +# endif +# include "../common/TracyStackFrames.cpp" + #elif TRACY_HAS_CALLSTACK == 5 # include # include @@ -53,7 +71,7 @@ extern "C" }; #endif -#if TRACY_HAS_CALLSTACK == 2 || TRACY_HAS_CALLSTACK == 3 || TRACY_HAS_CALLSTACK == 4 || TRACY_HAS_CALLSTACK == 5 || TRACY_HAS_CALLSTACK == 6 +#if defined(TRACY_USE_LIBBACKTRACE) || TRACY_HAS_CALLSTACK == 5 // If you want to use your own demangling functionality (e.g. for another language), // define TRACY_DEMANGLE and provide your own implementation of the __tracy_demangle // function. The input parameter is a function name. The demangle function must @@ -91,7 +109,7 @@ extern "C" const char* ___tracy_demangle( const char* mangled ) #endif #endif -#if TRACY_HAS_CALLSTACK == 3 +#if defined(TRACY_USE_LIBBACKTRACE) && TRACY_HAS_CALLSTACK != 4 // dl_iterate_phdr is required for the current image cache. Need to move it to libbacktrace? # define TRACY_USE_IMAGE_CACHE # include #endif @@ -758,7 +776,7 @@ CallstackEntryData DecodeCallstackPtr( uint64_t ptr ) return { cb_data, uint8_t( cb_num ), moduleNameAndAddress.name }; } -#elif TRACY_HAS_CALLSTACK == 2 || TRACY_HAS_CALLSTACK == 3 || TRACY_HAS_CALLSTACK == 4 || TRACY_HAS_CALLSTACK == 6 +#elif defined(TRACY_USE_LIBBACKTRACE) enum { MaxCbTrace = 64 }; diff --git a/public/client/TracyCallstack.h b/public/client/TracyCallstack.h index 1aca7292a4..2df15420c8 100644 --- a/public/client/TracyCallstack.h +++ b/public/client/TracyCallstack.h @@ -30,6 +30,10 @@ # define TRACY_HAS_CALLSTACK 6 # endif +#if TRACY_HAS_CALLSTACK == 2 || TRACY_HAS_CALLSTACK == 3 || TRACY_HAS_CALLSTACK == 4 || TRACY_HAS_CALLSTACK == 6 +#define TRACY_USE_LIBBACKTRACE +#endif + #endif #endif