diff options
author | Stewart Smith <stewart@linux.vnet.ibm.com> | 2015-02-11 12:17:21 +1100 |
---|---|---|
committer | Stewart Smith <stewart@linux.vnet.ibm.com> | 2015-02-11 12:17:21 +1100 |
commit | cbf0e24e6734ceb52bbefdb02fb9f35f180dad11 (patch) | |
tree | f3224f69887385434d24a6ab6275d66fbc62e727 | |
parent | 4681ed91c704768b7e1d7ae97a03e693096235ec (diff) | |
download | blackbird-skiboot-cbf0e24e6734ceb52bbefdb02fb9f35f180dad11.tar.gz blackbird-skiboot-cbf0e24e6734ceb52bbefdb02fb9f35f180dad11.zip |
Make abort() update sp attn area (like assert does)
Gives better diagnostics in error logs/dumps
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
-rw-r--r-- | core/utils.c | 4 | ||||
-rw-r--r-- | 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 |