From cbf0e24e6734ceb52bbefdb02fb9f35f180dad11 Mon Sep 17 00:00:00 2001 From: Stewart Smith Date: Wed, 11 Feb 2015 12:17:21 +1100 Subject: Make abort() update sp attn area (like assert does) Gives better diagnostics in error logs/dumps Signed-off-by: Stewart Smith --- core/utils.c | 4 ++-- libc/include/stdlib.h | 8 +++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/core/utils.c b/core/utils.c index 1a81ae2c..9c94ecca 100644 --- a/core/utils.c +++ b/core/utils.c @@ -26,10 +26,10 @@ unsigned long __stack_chk_guard = 0xdeadf00dbaad300d; void __noreturn assert_fail(const char *msg) { prlog(PR_EMERG, "Assert fail: %s\n", msg); - abort(); + _abort(); } -void __noreturn abort(void) +void __noreturn _abort(void) { static bool in_abort = false; unsigned long hid0; diff --git a/libc/include/stdlib.h b/libc/include/stdlib.h index 4ab2825a..68ca386c 100644 --- a/libc/include/stdlib.h +++ b/libc/include/stdlib.h @@ -25,6 +25,12 @@ unsigned long int strtoul(const char *nptr, char **endptr, int base); long int strtol(const char *nptr, char **endptr, int base); int rand(void); -void __attribute__((noreturn)) abort(void); +void __attribute__((noreturn)) _abort(void); +#define abort() do { \ + update_sp_attn_area("abort():" __FILE__ \ + ":" stringify(__LINE__)); \ + _abort(); \ + } while(0) + #endif -- cgit v1.2.1