backtrace: Print backtrace in assert() and panic()
When any of these functions is called the backtrace will be printed to the console. Change-Id: Id60842df824b320c485a9323ed6b80600f4ebe35 Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
This commit is contained in:
parent
0c62883f7e
commit
3e530d8ea8
|
@ -27,7 +27,9 @@
|
|||
|
||||
#ifndef __ASSEMBLY__
|
||||
#include <cdefs.h>
|
||||
#include <console.h>
|
||||
#include <stdarg.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdio.h>
|
||||
|
||||
/*
|
||||
|
@ -90,7 +92,13 @@ void backtrace(const char *cookie);
|
|||
#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);
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue