@@ -279,8 +279,11 @@ void WOLFSSL_TIME(int count)
279279#include <wolfssl/wolfcrypt/mem_track.h>
280280#endif
281281
282- static void wolfssl_log (const int logLevel , const char * const logMessage )
282+ static void wolfssl_log (const int logLevel , const char * const file_name ,
283+ int line_number , const char * const logMessage )
283284{
285+ (void )file_name ;
286+ (void )line_number ;
284287 if (log_function )
285288 log_function (logLevel , logMessage );
286289 else {
@@ -289,46 +292,103 @@ static void wolfssl_log(const int logLevel, const char *const logMessage)
289292#elif defined(ARDUINO )
290293 wolfSSL_Arduino_Serial_Print (logMessage );
291294#elif defined(WOLFSSL_LOG_PRINTF )
292- printf ("%s\n" , logMessage );
295+ if (file_name != NULL )
296+ printf ("[%s L %d] %s\n" , file_name , line_number , logMessage );
297+ else
298+ printf ("%s\n" , logMessage );
293299#elif defined(THREADX ) && !defined(THREADX_NO_DC_PRINTF )
294- dc_log_printf ("%s\n" , logMessage );
300+ if (file_name != NULL )
301+ dc_log_printf ("[%s L %d] %s\n" , file_name , line_number , logMessage );
302+ else
303+ dc_log_printf ("%s\n" , logMessage );
295304#elif defined(WOLFSSL_DEOS )
296- printf ("%s\r\n" , logMessage );
305+ if (file_name != NULL )
306+ printf ("[%s L %d] %s\r\n" , file_name , line_number , logMessage );
307+ else
308+ printf ("%s\r\n" , logMessage );
297309#elif defined(MICRIUM )
298- BSP_Ser_Printf ("%s\r\n" , logMessage );
310+ if (file_name != NULL )
311+ BSP_Ser_Printf ("[%s L %d] %s\r\n" ,
312+ file_name , line_number , logMessage );
313+ else
314+ BSP_Ser_Printf ("%s\r\n" , logMessage );
299315#elif defined(WOLFSSL_MDK_ARM )
300316 fflush (stdout ) ;
301- printf ("%s\n" , logMessage );
317+ if (file_name != NULL )
318+ printf ("[%s L %d] %s\n" , file_name , line_number , logMessage );
319+ else
320+ printf ("%s\n" , logMessage );
302321 fflush (stdout ) ;
303322#elif defined(WOLFSSL_UTASKER )
304323 fnDebugMsg ((char * )logMessage );
305324 fnDebugMsg ("\r\n" );
306325#elif defined(MQX_USE_IO_OLD )
307- fprintf (_mqxio_stderr , "%s\n" , logMessage );
326+ if (file_name != NULL )
327+ fprintf (_mqxio_stderr , "[%s L %d] %s\n" ,
328+ file_name , line_number , logMessage );
329+ else
330+ fprintf (_mqxio_stderr , "%s\n" , logMessage );
308331#elif defined(WOLFSSL_APACHE_MYNEWT )
309- LOG_DEBUG (& mynewt_log , LOG_MODULE_DEFAULT , "%s\n" , logMessage );
332+ if (file_name != NULL )
333+ LOG_DEBUG (& mynewt_log , LOG_MODULE_DEFAULT , "[%s L %d] %s\n" ,
334+ file_name , line_number , logMessage );
335+ else
336+ LOG_DEBUG (& mynewt_log , LOG_MODULE_DEFAULT , "%s\n" , logMessage );
310337#elif defined(WOLFSSL_ESPIDF )
311- ESP_LOGI ("wolfssl" , "%s" , logMessage );
338+ if (file_name != NULL )
339+ ESP_LOGI ("wolfssl" , "[%s L %d] %s" ,
340+ file_name , line_number , logMessage );
341+ else
342+ ESP_LOGI ("wolfssl" , "%s" , logMessage );
312343#elif defined(WOLFSSL_ZEPHYR )
313- printk ("%s\n" , logMessage );
344+ if (file_name != NULL )
345+ printk ("[%s L %d] %s\n" , file_name , line_number , logMessage );
346+ else
347+ printk ("%s\n" , logMessage );
314348#elif defined(WOLFSSL_TELIT_M2MB )
315- M2M_LOG_INFO ("%s\n" , logMessage );
349+ if (file_name != NULL )
350+ M2M_LOG_INFO ("[%s L %d] %s\n" , file_name , line_number , logMessage );
351+ else
352+ M2M_LOG_INFO ("%s\n" , logMessage );
316353#elif defined(WOLFSSL_ANDROID_DEBUG )
317- __android_log_print (ANDROID_LOG_VERBOSE , "[wolfSSL]" , "%s" , logMessage );
354+ if (file_name != NULL )
355+ __android_log_print (ANDROID_LOG_VERBOSE , "[wolfSSL]" , "[%s L %d] %s" ,
356+ file_name , line_number , logMessage );
357+ else
358+ __android_log_print (ANDROID_LOG_VERBOSE , "[wolfSSL]" , "%s" ,
359+ logMessage );
318360#elif defined(WOLFSSL_XILINX )
319- xil_printf ("%s\r\n" , logMessage );
361+ if (file_name != NULL )
362+ xil_printf ("[%s L %d] %s\r\n" , file_name , line_number , logMessage );
363+ else
364+ xil_printf ("%s\r\n" , logMessage );
320365#elif defined(WOLFSSL_LINUXKM )
321- printk ("%s\n" , logMessage );
366+ if (file_name != NULL )
367+ printk ("[%s L %d] %s\n" , file_name , line_number , logMessage );
368+ else
369+ printk ("%s\n" , logMessage );
322370#elif defined(WOLFSSL_RENESAS_RA6M4 )
323- myprintf ("%s\n" , logMessage );
371+ if (file_name != NULL )
372+ myprintf ("[%s L %d] %s\n" , file_name , line_number , logMessage );
373+ else
374+ myprintf ("%s\n" , logMessage );
324375#elif defined(STACK_SIZE_CHECKPOINT_MSG ) && \
325376 defined(HAVE_STACK_SIZE_VERBOSE ) && defined(HAVE_STACK_SIZE_VERBOSE_LOG )
326377 STACK_SIZE_CHECKPOINT_MSG (logMessage );
327378#else
328- if (log_prefix != NULL )
329- fprintf (stderr , "[%s]: %s\n" , log_prefix , logMessage );
330- else
331- fprintf (stderr , "%s\n" , logMessage );
379+ if (log_prefix != NULL ) {
380+ if (file_name != NULL )
381+ fprintf (stderr , "[%s]: [%s L %d] %s\n" ,
382+ log_prefix , file_name , line_number , logMessage );
383+ else
384+ fprintf (stderr , "[%s]: %s\n" , log_prefix , logMessage );
385+ } else {
386+ if (file_name != NULL )
387+ fprintf (stderr , "[%s L %d] %s\n" ,
388+ file_name , line_number , logMessage );
389+ else
390+ fprintf (stderr , "%s\n" , logMessage );
391+ }
332392#endif
333393 }
334394}
@@ -340,6 +400,7 @@ static void wolfssl_log(const int logLevel, const char *const logMessage)
340400#ifndef WOLFSSL_MSG_EX_BUF_SZ
341401#define WOLFSSL_MSG_EX_BUF_SZ 100
342402#endif
403+ #undef WOLFSSL_MSG_EX /* undo WOLFSSL_DEBUG_CODEPOINTS wrapper */
343404#ifdef __clang__
344405/* tell clang argument 1 is format */
345406__attribute__((__format__ (__printf__ , 1 , 0 )))
@@ -354,17 +415,43 @@ void WOLFSSL_MSG_EX(const char* fmt, ...)
354415 written = XVSNPRINTF (msg , sizeof (msg ), fmt , args );
355416 va_end (args );
356417 if (written > 0 )
357- wolfssl_log (INFO_LOG , msg );
418+ wolfssl_log (INFO_LOG , NULL , 0 , msg );
419+ }
420+ }
421+
422+ #ifdef WOLFSSL_DEBUG_CODEPOINTS
423+ void WOLFSSL_MSG_EX2 (const char * file , int line , const char * fmt , ...)
424+ {
425+ if (loggingEnabled ) {
426+ char msg [WOLFSSL_MSG_EX_BUF_SZ ];
427+ int written ;
428+ va_list args ;
429+ va_start (args , fmt );
430+ written = XVSNPRINTF (msg , sizeof (msg ), fmt , args );
431+ va_end (args );
432+ if (written > 0 )
433+ wolfssl_log (INFO_LOG , file , line , msg );
358434 }
359435}
360436#endif
361437
438+ #endif
439+
440+ #undef WOLFSSL_MSG /* undo WOLFSSL_DEBUG_CODEPOINTS wrapper */
362441void WOLFSSL_MSG (const char * msg )
363442{
364443 if (loggingEnabled )
365- wolfssl_log (INFO_LOG , msg );
444+ wolfssl_log (INFO_LOG , NULL , 0 , msg );
366445}
367446
447+ #ifdef WOLFSSL_DEBUG_CODEPOINTS
448+ void WOLFSSL_MSG2 (const char * file , int line , const char * msg )
449+ {
450+ if (loggingEnabled )
451+ wolfssl_log (INFO_LOG , file , line , msg );
452+ }
453+ #endif
454+
368455#ifndef LINE_LEN
369456#define LINE_LEN 16
370457#endif
@@ -378,7 +465,7 @@ void WOLFSSL_BUFFER(const byte* buffer, word32 length)
378465 }
379466
380467 if (!buffer ) {
381- wolfssl_log (INFO_LOG , "\tNULL" );
468+ wolfssl_log (INFO_LOG , NULL , 0 , "\tNULL" );
382469 return ;
383470 }
384471
@@ -408,33 +495,67 @@ void WOLFSSL_BUFFER(const byte* buffer, word32 length)
408495 }
409496 }
410497
411- wolfssl_log (INFO_LOG , line );
498+ wolfssl_log (INFO_LOG , NULL , 0 , line );
412499 buffer += LINE_LEN ;
413500 buflen -= LINE_LEN ;
414501 }
415502}
416503
417-
504+ #undef WOLFSSL_ENTER /* undo WOLFSSL_DEBUG_CODEPOINTS wrapper */
418505void WOLFSSL_ENTER (const char * msg )
419506{
420507 if (loggingEnabled ) {
421508 char buffer [WOLFSSL_MAX_ERROR_SZ ];
422509 XSNPRINTF (buffer , sizeof (buffer ), "wolfSSL Entering %s" , msg );
423- wolfssl_log (ENTER_LOG , buffer );
510+ wolfssl_log (ENTER_LOG , NULL , 0 , buffer );
424511 }
425512}
426513
514+ #ifdef WOLFSSL_DEBUG_CODEPOINTS
515+ void WOLFSSL_ENTER2 (const char * file , int line , const char * msg )
516+ {
517+ if (loggingEnabled ) {
518+ char buffer [WOLFSSL_MAX_ERROR_SZ ];
519+ XSNPRINTF (buffer , sizeof (buffer ), "wolfSSL Entering %s" , msg );
520+ wolfssl_log (ENTER_LOG , file , line , buffer );
521+ }
522+ }
523+ #endif
427524
525+ #undef WOLFSSL_LEAVE /* undo WOLFSSL_DEBUG_CODEPOINTS wrapper */
428526void WOLFSSL_LEAVE (const char * msg , int ret )
429527{
430528 if (loggingEnabled ) {
431529 char buffer [WOLFSSL_MAX_ERROR_SZ ];
432530 XSNPRINTF (buffer , sizeof (buffer ), "wolfSSL Leaving %s, return %d" ,
433531 msg , ret );
434- wolfssl_log (LEAVE_LOG , buffer );
532+ wolfssl_log (LEAVE_LOG , NULL , 0 , buffer );
435533 }
436534}
437535
536+ #ifdef WOLFSSL_DEBUG_CODEPOINTS
537+ void WOLFSSL_LEAVE2 (const char * file , int line , const char * msg , int ret )
538+ {
539+ if (loggingEnabled ) {
540+ char buffer [WOLFSSL_MAX_ERROR_SZ ];
541+ XSNPRINTF (buffer , sizeof (buffer ), "wolfSSL Leaving %s, return %d" ,
542+ msg , ret );
543+ wolfssl_log (LEAVE_LOG , file , line , buffer );
544+ }
545+ }
546+ #endif
547+
548+ #ifdef WOLFSSL_DEBUG_CODEPOINTS
549+ /* restore the wrappers */
550+ #define WOLFSSL_MSG (msg ) WOLFSSL_MSG2(__FILE__, __LINE__, msg)
551+ #define WOLFSSL_ENTER (msg ) WOLFSSL_ENTER2(__FILE__, __LINE__, msg)
552+ #define WOLFSSL_LEAVE (msg , ret ) WOLFSSL_LEAVE2(__FILE__, __LINE__, msg, ret)
553+ #ifdef XVSNPRINTF
554+ #define WOLFSSL_MSG_EX (fmt , args ...) \
555+ WOLFSSL_MSG_EX2(__FILE__, __LINE__, fmt, ## args)
556+ #endif
557+ #endif
558+
438559WOLFSSL_API int WOLFSSL_IS_DEBUG_ON (void )
439560{
440561 return loggingEnabled ;
@@ -1537,7 +1658,7 @@ void WOLFSSL_ERROR(int error)
15371658
15381659 #ifdef DEBUG_WOLFSSL
15391660 if (loggingEnabled )
1540- wolfssl_log (ERROR_LOG , buffer );
1661+ wolfssl_log (ERROR_LOG , NULL , 0 , buffer );
15411662 #endif
15421663 }
15431664}
@@ -1546,7 +1667,7 @@ void WOLFSSL_ERROR_MSG(const char* msg)
15461667{
15471668#ifdef DEBUG_WOLFSSL
15481669 if (loggingEnabled )
1549- wolfssl_log (ERROR_LOG , msg );
1670+ wolfssl_log (ERROR_LOG , NULL , 0 , msg );
15501671#else
15511672 (void )msg ;
15521673#endif
0 commit comments