From 87c5bdf3298e3042a8a9a92404b53e59dc6c36cb Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Tue, 6 Apr 2021 01:18:01 +0200 Subject: [PATCH] assert: Use printf_sync() to ensure printing of assert / panic Change-Id: Icc202e60445d9be1cdcd61176db5ed1704d583e7 --- firmware/libcommon/include/assert.h | 2 +- firmware/libosmocore/source/panic.c | 2 +- firmware/test/card_emu_tests.c | 14 ++++++++++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/firmware/libcommon/include/assert.h b/firmware/libcommon/include/assert.h index 22bb101d..dc6b1b52 100644 --- a/firmware/libcommon/include/assert.h +++ b/firmware/libcommon/include/assert.h @@ -89,7 +89,7 @@ /// \param condition Condition to verify. #define ASSERT(condition) { \ if (!(condition)) { \ - printf("-F- ASSERT: %s %s:%d\n\r", #condition, __BASE_FILE__, __LINE__); \ + printf_sync("-F- ASSERT: %s %s:%d\n\r", #condition, __BASE_FILE__, __LINE__); \ while (1); \ } \ } diff --git a/firmware/libosmocore/source/panic.c b/firmware/libosmocore/source/panic.c index 74243b00..db5c26a4 100644 --- a/firmware/libosmocore/source/panic.c +++ b/firmware/libosmocore/source/panic.c @@ -46,7 +46,7 @@ static osmo_panic_handler_t osmo_panic_handler = (void*)0; __attribute__ ((format (printf, 1, 0))) static void osmo_panic_default(const char *fmt, va_list args) { - vfprintf(stderr, fmt, args); + vfprintf_sync(stderr, fmt, args); osmo_generate_backtrace(); assert(0); } diff --git a/firmware/test/card_emu_tests.c b/firmware/test/card_emu_tests.c index 69159a83..5d5bd3e8 100644 --- a/firmware/test/card_emu_tests.c +++ b/firmware/test/card_emu_tests.c @@ -13,6 +13,20 @@ #define PHONE_INT 2 #define PHONE_DATAOUT 3 +/* stub for stdio */ +signed int printf_sync(const char *pFormat, ...) +{ + va_list ap; + signed int result; + + va_start(ap, pFormat); + result = vprintf(pFormat, ap); + va_end(ap); + + return result; +} + + /*********************************************************************** * stub functions required by card_emu.c ***********************************************************************/