Skip to content

Commit 2c69e4a

Browse files
committed
add --debug-code-points and WOLFSSL_DEBUG_CODEPOINTS,
add file_name and line_number args to wolfssl_log(), and inside WOLFSSL_DEBUG_CODEPOINTS gates, add WOLFSSL_MSG_EX2(), WOLFSSL_MSG2(), WOLFSSL_ENTER2(), and WOLFSSL_LEAVE2(), each with file and line args, and add wrapper macros for WOLFSSL_MSG, WOLFSSL_MSG_EX, WOLFSSL_ENTER, and WOLFSSL_LEAVE, that pass in file and line.
1 parent 5df5720 commit 2c69e4a

3 files changed

Lines changed: 183 additions & 29 deletions

File tree

configure.ac

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,17 @@ AS_IF([test "$ax_enable_debug" = "yes"],
200200
[AM_CCASFLAGS="$DEBUG_CFLAGS $AM_CCASFLAGS"],
201201
[AM_CCASFLAGS="$AM_CCASFLAGS -DNDEBUG"])
202202

203+
AC_ARG_ENABLE([debug-code-points],
204+
[ AS_HELP_STRING([--enable-debug-code-points],[Include source file and line number in --enable-verbose messages.]) ],
205+
[ ENABLED_DEBUG_CODEPOINTS=$enableval ],
206+
[ ENABLED_DEBUG_CODEPOINTS=no ]
207+
)
208+
209+
if test "$ENABLED_DEBUG_CODEPOINTS" = "yes"
210+
then
211+
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_DEBUG_CODEPOINTS"
212+
fi
213+
203214
AC_ARG_ENABLE([debug-trace-errcodes],
204215
[ AS_HELP_STRING([--enable-debug-trace-errcodes],[Print trace messages when library errors are thrown.]) ],
205216
[ ENABLED_DEBUG_TRACE_ERRCODES=$enableval ],

wolfcrypt/src/logging.c

Lines changed: 153 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -279,8 +279,14 @@ 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)
283-
{
282+
static void wolfssl_log(
283+
const int logLevel,
284+
const char *file_name,
285+
int line_number,
286+
const char *const logMessage)
287+
{
288+
(void)file_name;
289+
(void)line_number;
284290
if (log_function)
285291
log_function(logLevel, logMessage);
286292
else {
@@ -289,46 +295,103 @@ static void wolfssl_log(const int logLevel, const char *const logMessage)
289295
#elif defined(ARDUINO)
290296
wolfSSL_Arduino_Serial_Print(logMessage);
291297
#elif defined(WOLFSSL_LOG_PRINTF)
292-
printf("%s\n", logMessage);
298+
if (file_name != NULL)
299+
printf("[%s L %d] %s\n", file_name, line_number, logMessage);
300+
else
301+
printf("%s\n", logMessage);
293302
#elif defined(THREADX) && !defined(THREADX_NO_DC_PRINTF)
294-
dc_log_printf("%s\n", logMessage);
303+
if (file_name != NULL)
304+
dc_log_printf("[%s L %d] %s\n", file_name, line_number, logMessage);
305+
else
306+
dc_log_printf("%s\n", logMessage);
295307
#elif defined(WOLFSSL_DEOS)
296-
printf("%s\r\n", logMessage);
308+
if (file_name != NULL)
309+
printf("[%s L %d] %s\r\n", file_name, line_number, logMessage);
310+
else
311+
printf("%s\r\n", logMessage);
297312
#elif defined(MICRIUM)
298-
BSP_Ser_Printf("%s\r\n", logMessage);
313+
if (file_name != NULL)
314+
BSP_Ser_Printf("[%s L %d] %s\r\n",
315+
file_name, line_number, logMessage);
316+
else
317+
BSP_Ser_Printf("%s\r\n", logMessage);
299318
#elif defined(WOLFSSL_MDK_ARM)
300319
fflush(stdout) ;
301-
printf("%s\n", logMessage);
320+
if (file_name != NULL)
321+
printf("[%s L %d] %s\n", file_name, line_number, logMessage);
322+
else
323+
printf("%s\n", logMessage);
302324
fflush(stdout) ;
303325
#elif defined(WOLFSSL_UTASKER)
304326
fnDebugMsg((char*)logMessage);
305327
fnDebugMsg("\r\n");
306328
#elif defined(MQX_USE_IO_OLD)
307-
fprintf(_mqxio_stderr, "%s\n", logMessage);
329+
if (file_name != NULL)
330+
fprintf(_mqxio_stderr, "[%s L %d] %s\n",
331+
file_name, line_number, logMessage);
332+
else
333+
fprintf(_mqxio_stderr, "%s\n", logMessage);
308334
#elif defined(WOLFSSL_APACHE_MYNEWT)
309-
LOG_DEBUG(&mynewt_log, LOG_MODULE_DEFAULT, "%s\n", logMessage);
335+
if (file_name != NULL)
336+
LOG_DEBUG(&mynewt_log, LOG_MODULE_DEFAULT, "[%s L %d] %s\n",
337+
file_name, line_number, logMessage);
338+
else
339+
LOG_DEBUG(&mynewt_log, LOG_MODULE_DEFAULT, "%s\n", logMessage);
310340
#elif defined(WOLFSSL_ESPIDF)
311-
ESP_LOGI("wolfssl", "%s", logMessage);
341+
if (file_name != NULL)
342+
ESP_LOGI("wolfssl", "[%s L %d] %s",
343+
file_name, line_number, logMessage);
344+
else
345+
ESP_LOGI("wolfssl", "%s", logMessage);
312346
#elif defined(WOLFSSL_ZEPHYR)
313-
printk("%s\n", logMessage);
347+
if (file_name != NULL)
348+
printk("[%s L %d] %s\n", file_name, line_number, logMessage);
349+
else
350+
printk("%s\n", logMessage);
314351
#elif defined(WOLFSSL_TELIT_M2MB)
315-
M2M_LOG_INFO("%s\n", logMessage);
352+
if (file_name != NULL)
353+
M2M_LOG_INFO("[%s L %d] %s\n", file_name, line_number, logMessage);
354+
else
355+
M2M_LOG_INFO("%s\n", logMessage);
316356
#elif defined(WOLFSSL_ANDROID_DEBUG)
317-
__android_log_print(ANDROID_LOG_VERBOSE, "[wolfSSL]", "%s", logMessage);
357+
if (file_name != NULL)
358+
__android_log_print(ANDROID_LOG_VERBOSE, "[wolfSSL]", "[%s L %d] %s",
359+
file_name, line_number, logMessage);
360+
else
361+
__android_log_print(ANDROID_LOG_VERBOSE, "[wolfSSL]", "%s",
362+
logMessage);
318363
#elif defined(WOLFSSL_XILINX)
319-
xil_printf("%s\r\n", logMessage);
364+
if (file_name != NULL)
365+
xil_printf("[%s L %d] %s\r\n", file_name, line_number, logMessage);
366+
else
367+
xil_printf("%s\r\n", logMessage);
320368
#elif defined(WOLFSSL_LINUXKM)
321-
printk("%s\n", logMessage);
369+
if (file_name != NULL)
370+
printk("[%s L %d] %s\n", file_name, line_number, logMessage);
371+
else
372+
printk("%s\n", logMessage);
322373
#elif defined(WOLFSSL_RENESAS_RA6M4)
323-
myprintf("%s\n", logMessage);
374+
if (file_name != NULL)
375+
myprintf("[%s L %d] %s\n", file_name, line_number, logMessage);
376+
else
377+
myprintf("%s\n", logMessage);
324378
#elif defined(STACK_SIZE_CHECKPOINT_MSG) && \
325379
defined(HAVE_STACK_SIZE_VERBOSE) && defined(HAVE_STACK_SIZE_VERBOSE_LOG)
326380
STACK_SIZE_CHECKPOINT_MSG(logMessage);
327381
#else
328-
if (log_prefix != NULL)
329-
fprintf(stderr, "[%s]: %s\n", log_prefix, logMessage);
330-
else
331-
fprintf(stderr, "%s\n", logMessage);
382+
if (log_prefix != NULL) {
383+
if (file_name != NULL)
384+
fprintf(stderr, "[%s]: [%s L %d] %s\n",
385+
log_prefix, file_name, line_number, logMessage);
386+
else
387+
fprintf(stderr, "[%s]: %s\n", log_prefix, logMessage);
388+
} else {
389+
if (file_name != NULL)
390+
fprintf(stderr, "[%s L %d] %s\n",
391+
file_name, line_number, logMessage);
392+
else
393+
fprintf(stderr, "%s\n", logMessage);
394+
}
332395
#endif
333396
}
334397
}
@@ -340,6 +403,7 @@ static void wolfssl_log(const int logLevel, const char *const logMessage)
340403
#ifndef WOLFSSL_MSG_EX_BUF_SZ
341404
#define WOLFSSL_MSG_EX_BUF_SZ 100
342405
#endif
406+
#undef WOLFSSL_MSG_EX /* undo WOLFSSL_DEBUG_CODEPOINTS wrapper */
343407
#ifdef __clang__
344408
/* tell clang argument 1 is format */
345409
__attribute__((__format__ (__printf__, 1, 0)))
@@ -354,16 +418,42 @@ void WOLFSSL_MSG_EX(const char* fmt, ...)
354418
written = XVSNPRINTF(msg, sizeof(msg), fmt, args);
355419
va_end(args);
356420
if (written > 0)
357-
wolfssl_log(INFO_LOG , msg);
421+
wolfssl_log(INFO_LOG, NULL, 0, msg);
422+
}
423+
}
424+
425+
#ifdef WOLFSSL_DEBUG_CODEPOINTS
426+
void WOLFSSL_MSG_EX2(const char *file, int line, const char* fmt, ...)
427+
{
428+
if (loggingEnabled) {
429+
char msg[WOLFSSL_MSG_EX_BUF_SZ];
430+
int written;
431+
va_list args;
432+
va_start(args, fmt);
433+
written = XVSNPRINTF(msg, sizeof(msg), fmt, args);
434+
va_end(args);
435+
if (written > 0)
436+
wolfssl_log(INFO_LOG, file, line, msg);
358437
}
359438
}
360439
#endif
361440

441+
#endif
442+
443+
#undef WOLFSSL_MSG /* undo WOLFSSL_DEBUG_CODEPOINTS wrapper */
362444
void WOLFSSL_MSG(const char* msg)
363445
{
364446
if (loggingEnabled)
365-
wolfssl_log(INFO_LOG , msg);
447+
wolfssl_log(INFO_LOG, NULL, 0, msg);
448+
}
449+
450+
#ifdef WOLFSSL_DEBUG_CODEPOINTS
451+
void WOLFSSL_MSG2(const char *file, int line, const char* msg)
452+
{
453+
if (loggingEnabled)
454+
wolfssl_log(INFO_LOG, file, line, msg);
366455
}
456+
#endif
367457

368458
#ifndef LINE_LEN
369459
#define LINE_LEN 16
@@ -378,7 +468,7 @@ void WOLFSSL_BUFFER(const byte* buffer, word32 length)
378468
}
379469

380470
if (!buffer) {
381-
wolfssl_log(INFO_LOG, "\tNULL");
471+
wolfssl_log(INFO_LOG, NULL, 0, "\tNULL");
382472
return;
383473
}
384474

@@ -408,32 +498,66 @@ void WOLFSSL_BUFFER(const byte* buffer, word32 length)
408498
}
409499
}
410500

411-
wolfssl_log(INFO_LOG, line);
501+
wolfssl_log(INFO_LOG, NULL, 0, line);
412502
buffer += LINE_LEN;
413503
buflen -= LINE_LEN;
414504
}
415505
}
416506

417-
507+
#undef WOLFSSL_ENTER /* undo WOLFSSL_DEBUG_CODEPOINTS wrapper */
418508
void WOLFSSL_ENTER(const char* msg)
419509
{
420510
if (loggingEnabled) {
421511
char buffer[WOLFSSL_MAX_ERROR_SZ];
422512
XSNPRINTF(buffer, sizeof(buffer), "wolfSSL Entering %s", msg);
423-
wolfssl_log(ENTER_LOG , buffer);
513+
wolfssl_log(ENTER_LOG, NULL, 0, buffer);
424514
}
425515
}
426516

517+
#ifdef WOLFSSL_DEBUG_CODEPOINTS
518+
void WOLFSSL_ENTER2(const char *file, int line, const char* msg)
519+
{
520+
if (loggingEnabled) {
521+
char buffer[WOLFSSL_MAX_ERROR_SZ];
522+
XSNPRINTF(buffer, sizeof(buffer), "wolfSSL Entering %s", msg);
523+
wolfssl_log(ENTER_LOG, file, line, buffer);
524+
}
525+
}
526+
#endif
427527

528+
#undef WOLFSSL_LEAVE /* undo WOLFSSL_DEBUG_CODEPOINTS wrapper */
428529
void WOLFSSL_LEAVE(const char* msg, int ret)
429530
{
430531
if (loggingEnabled) {
431532
char buffer[WOLFSSL_MAX_ERROR_SZ];
432533
XSNPRINTF(buffer, sizeof(buffer), "wolfSSL Leaving %s, return %d",
433534
msg, ret);
434-
wolfssl_log(LEAVE_LOG , buffer);
535+
wolfssl_log(LEAVE_LOG, NULL, 0, buffer);
536+
}
537+
}
538+
539+
#ifdef WOLFSSL_DEBUG_CODEPOINTS
540+
void WOLFSSL_LEAVE2(const char *file, int line, const char* msg, int ret)
541+
{
542+
if (loggingEnabled) {
543+
char buffer[WOLFSSL_MAX_ERROR_SZ];
544+
XSNPRINTF(buffer, sizeof(buffer), "wolfSSL Leaving %s, return %d",
545+
msg, ret);
546+
wolfssl_log(LEAVE_LOG, file, line, buffer);
435547
}
436548
}
549+
#endif
550+
551+
#ifdef WOLFSSL_DEBUG_CODEPOINTS
552+
/* restore the wrappers */
553+
#define WOLFSSL_MSG(msg) WOLFSSL_MSG2(__FILE__, __LINE__, msg)
554+
#define WOLFSSL_ENTER(msg) WOLFSSL_ENTER2(__FILE__, __LINE__, msg)
555+
#define WOLFSSL_LEAVE(msg, ret) WOLFSSL_LEAVE2(__FILE__, __LINE__, msg, ret)
556+
#ifdef XVSNPRINTF
557+
#define WOLFSSL_MSG_EX(fmt, args...) \
558+
WOLFSSL_MSG_EX2(__FILE__, __LINE__, fmt, ## args)
559+
#endif
560+
#endif
437561

438562
WOLFSSL_API int WOLFSSL_IS_DEBUG_ON(void)
439563
{
@@ -1537,7 +1661,7 @@ void WOLFSSL_ERROR(int error)
15371661

15381662
#ifdef DEBUG_WOLFSSL
15391663
if (loggingEnabled)
1540-
wolfssl_log(ERROR_LOG , buffer);
1664+
wolfssl_log(ERROR_LOG, NULL, 0, buffer);
15411665
#endif
15421666
}
15431667
}
@@ -1546,7 +1670,7 @@ void WOLFSSL_ERROR_MSG(const char* msg)
15461670
{
15471671
#ifdef DEBUG_WOLFSSL
15481672
if (loggingEnabled)
1549-
wolfssl_log(ERROR_LOG , msg);
1673+
wolfssl_log(ERROR_LOG, NULL, 0, msg);
15501674
#else
15511675
(void)msg;
15521676
#endif

wolfssl/wolfcrypt/logging.h

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,25 @@ WOLFSSL_API void wolfSSL_SetLoggingPrefix(const char* prefix);
181181
#define WOLFSSL_MSG_EX(...) WC_DO_NOTHING
182182
#endif
183183
WOLFSSL_API void WOLFSSL_MSG(const char* msg);
184+
#ifdef WOLFSSL_DEBUG_CODEPOINTS
185+
WOLFSSL_API void WOLFSSL_MSG2(
186+
const char *file, int line, const char* msg);
187+
WOLFSSL_API void WOLFSSL_ENTER2(
188+
const char *file, int line, const char* msg);
189+
WOLFSSL_API void WOLFSSL_LEAVE2(
190+
const char *file, int line, const char* msg, int ret);
191+
#define WOLFSSL_MSG(msg) WOLFSSL_MSG2(__FILE__, __LINE__, msg)
192+
#define WOLFSSL_ENTER(msg) WOLFSSL_ENTER2(__FILE__, __LINE__, msg)
193+
#define WOLFSSL_LEAVE(msg, ret) WOLFSSL_LEAVE2(__FILE__, __LINE__, msg, ret)
194+
#ifdef XVSNPRINTF
195+
WOLFSSL_API void WOLFSSL_MSG_EX2(
196+
const char *file, int line, const char* fmt, ...);
197+
#define WOLFSSL_MSG_EX(fmt, args...) \
198+
WOLFSSL_MSG_EX2(__FILE__, __LINE__, fmt, ## args)
199+
#else
200+
#define WOLFSSL_MSG_EX2(...) WC_DO_NOTHING
201+
#endif
202+
#endif
184203
WOLFSSL_API void WOLFSSL_BUFFER(const byte* buffer, word32 length);
185204

186205
#else

0 commit comments

Comments
 (0)