diff options
-rw-r--r-- | board/ryu/board.h | 1 | ||||
-rw-r--r-- | common/panic_output.c | 9 | ||||
-rw-r--r-- | include/config.h | 9 | ||||
-rw-r--r-- | include/panic.h | 4 | ||||
-rw-r--r-- | include/util.h | 8 |
5 files changed, 31 insertions, 0 deletions
diff --git a/board/ryu/board.h b/board/ryu/board.h index 04bf5e4d94..9f14ef1d1d 100644 --- a/board/ryu/board.h +++ b/board/ryu/board.h @@ -36,6 +36,7 @@ #undef CONFIG_CONSOLE_CMDHELP #define CONFIG_INDUCTIVE_CHARGING #undef CONFIG_HIBERNATE +#define CONFIG_DEBUG_ASSERT_BRIEF /* Disable unused console command to save flash space */ #undef CONFIG_CMD_POWERINDEBUG diff --git a/common/panic_output.c b/common/panic_output.c index f77277ab33..4f0f22d00d 100644 --- a/common/panic_output.c +++ b/common/panic_output.c @@ -78,6 +78,14 @@ void panic_reboot(void) } #ifdef CONFIG_DEBUG_ASSERT_REBOOTS +#ifdef CONFIG_DEBUG_ASSERT_BRIEF +void panic_assert_fail(const char *fname, int linenum) +{ + panic_printf("\nASSERTION FAILURE at %s:%d\n", fname, linenum); + + panic_reboot(); +} +#else void panic_assert_fail(const char *msg, const char *func, const char *fname, int linenum) { @@ -87,6 +95,7 @@ void panic_assert_fail(const char *msg, const char *func, const char *fname, panic_reboot(); } #endif +#endif void panic(const char *msg) { diff --git a/include/config.h b/include/config.h index cfd7a5f97d..b119823601 100644 --- a/include/config.h +++ b/include/config.h @@ -414,6 +414,15 @@ #define CONFIG_DEBUG_ASSERT_REBOOTS /* + * On assertion failure, prints only the file name and the line number. + * + * Ignored if CONFIG_DEBUG_ASSERT_REBOOTS is not defined. + * + * Boards may define this to reduce image size. + */ +#undef CONFIG_DEBUG_ASSERT_BRIEF + +/* * Disable the write buffer used for default memory map accesses. * This turns "Imprecise data bus errors" into "Precise" errors * in exception traces at the cost of some performance. diff --git a/include/panic.h b/include/panic.h index 40bab2487e..74376554b6 100644 --- a/include/panic.h +++ b/include/panic.h @@ -101,8 +101,12 @@ void panic_data_print(const struct panic_data *pdata); * @param fname File name where assertion happened * @param linenum Line number where assertion happened */ +#ifdef CONFIG_DEBUG_ASSERT_BRIEF +void panic_assert_fail(const char *fname, int linenum); +#else void panic_assert_fail(const char *msg, const char *func, const char *fname, int linenum); +#endif /** * Display a custom panic message and reset diff --git a/include/util.h b/include/util.h index 8b1e51e2c5..e83e2fe05e 100644 --- a/include/util.h +++ b/include/util.h @@ -18,11 +18,19 @@ */ #ifdef CONFIG_DEBUG_ASSERT #ifdef CONFIG_DEBUG_ASSERT_REBOOTS + +#ifdef CONFIG_DEBUG_ASSERT_BRIEF +#define ASSERT(cond) do { \ + if (!(cond)) \ + panic_assert_fail(__FILE__, __LINE__); \ + } while (0) +#else #define ASSERT(cond) do { \ if (!(cond)) \ panic_assert_fail(#cond, __func__, __FILE__, \ __LINE__); \ } while (0) +#endif #else #define ASSERT(cond) do { \ if (!(cond)) \ |