@@ -1870,6 +1870,33 @@ int wc_backtrace_render(void) {
18701870
18711871#include <backtrace.h>
18721872
1873+ #ifdef XFILE
1874+
1875+ static XFILE wolfssl_backtrace_file = XBADFILE ;
1876+
1877+ XFILE wc_backtrace_set_fp (XFILE new_fp ) {
1878+ XFILE old_fp = wolfssl_backtrace_file ;
1879+ if (new_fp == NULL )
1880+ wolfssl_backtrace_file = XBADFILE ;
1881+ else
1882+ wolfssl_backtrace_file = new_fp ;
1883+ return old_fp ;
1884+ }
1885+
1886+ #define WOLFSSL_BACKTRACE_PRINTF (...) ( \
1887+ (wolfssl_backtrace_file == XBADFILE) ? \
1888+ WOLFSSL_DEBUG_PRINTF(__VA_ARGS__) : \
1889+ WOLFSSL_DEBUG_PRINTF_FN(wolfssl_backtrace_file, __VA_ARGS__))
1890+
1891+ #else /* !XFILE */
1892+
1893+ /* libbacktrace doesn't support any targets with no XFILE, but keep it buildable
1894+ * just in case.
1895+ */
1896+ #define WOLFSSL_BACKTRACE_PRINTF (...) WOLFSSL_DEBUG_PRINTF(__VA_ARGS__)
1897+
1898+ #endif /* !XFILE */
1899+
18731900static int backtrace_callback (void * data , uintptr_t pc , const char * filename ,
18741901 int lineno , const char * function )
18751902{
@@ -1880,20 +1907,20 @@ static int backtrace_callback(void *data, uintptr_t pc, const char *filename,
18801907 * (int * )data = 1 ;
18811908 return 0 ;
18821909 }
1883- WOLFSSL_DEBUG_PRINTF (" #%d %p in %s %s:%d\n" , (* (int * )data )++ ,
1910+ WOLFSSL_BACKTRACE_PRINTF (" #%d %p in %s %s:%d\n" , (* (int * )data )++ ,
18841911 (void * )pc , function , filename , lineno );
18851912 return 0 ;
18861913}
18871914
18881915static void backtrace_error (void * data , const char * msg , int errnum ) {
18891916 (void )data ;
1890- WOLFSSL_DEBUG_PRINTF ("ERR TRACE: error %d while backtracing: %s" ,
1917+ WOLFSSL_BACKTRACE_PRINTF ("ERR TRACE: error %d while backtracing: %s" ,
18911918 errnum , msg );
18921919}
18931920
18941921static void backtrace_creation_error (void * data , const char * msg , int errnum ) {
18951922 (void )data ;
1896- WOLFSSL_DEBUG_PRINTF ("ERR TRACE: internal error %d "
1923+ WOLFSSL_BACKTRACE_PRINTF ("ERR TRACE: internal error %d "
18971924 "while initializing backtrace facility: %s" , errnum , msg );
18981925}
18991926
0 commit comments