diff --git a/include/common/debug.h b/include/common/debug.h index ee25af1..ab3e15a 100644 --- a/include/common/debug.h +++ b/include/common/debug.h @@ -27,7 +27,9 @@ #ifndef __ASSEMBLY__ #include +#include #include +#include #include /* @@ -90,7 +92,13 @@ #endif void __dead2 do_panic(void); -#define panic() do_panic() + +#define panic() \ + do { \ + backtrace(__func__); \ + (void)console_flush(); \ + do_panic(); \ + } while (false) /* Function called when stack protection check code detects a corrupted stack */ void __dead2 __stack_chk_fail(void); diff --git a/lib/libc/assert.c b/lib/libc/assert.c index fa12cb6..8fa8f72 100644 --- a/lib/libc/assert.c +++ b/lib/libc/assert.c @@ -20,19 +20,23 @@ void __assert(const char *file, unsigned int line, const char *assertion) { printf("ASSERT: %s:%d:%s\n", file, line, assertion); - console_flush(); + backtrace("assert"); + (void)console_flush(); plat_panic_handler(); } #elif PLAT_LOG_LEVEL_ASSERT >= LOG_LEVEL_INFO void __assert(const char *file, unsigned int line) { printf("ASSERT: %s:%d\n", file, line); - console_flush(); + backtrace("assert"); + (void)console_flush(); plat_panic_handler(); } #else void __assert(void) { + backtrace("assert"); + (void)console_flush(); plat_panic_handler(); } #endif