From 26864bf9cbe49892faa3a4ffd7a3cef00fa8850e Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Tue, 6 May 2014 20:40:15 -0700 Subject: Switch to the new bionic fatal logging interface. This is more general and will work for anyone's custom logging code, as long as they use ANDROID_LOG_FATAL priority. Change-Id: Iaf7fc0858fce04f3af407882a58ee5a827d50ddd --- liblog/logd_write.c | 13 +++++++------ liblog/logd_write_kern.c | 13 +++++++------ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/liblog/logd_write.c b/liblog/logd_write.c index bd36a65..4c47382 100644 --- a/liblog/logd_write.c +++ b/liblog/logd_write.c @@ -323,6 +323,13 @@ int __android_log_write(int prio, const char *tag, const char *msg) tag = tmp_tag; } +#if __BIONIC__ + if (prio == ANDROID_LOG_FATAL) { + extern void __android_set_abort_message(const char*); + __android_set_abort_message(msg); + } +#endif + vec[0].iov_base = (unsigned char *) &prio; vec[0].iov_len = 1; vec[1].iov_base = (void *) tag; @@ -422,14 +429,8 @@ void __android_log_assert(const char *cond, const char *tag, strcpy(buf, "Unspecified assertion failed"); } -#if __BIONIC__ - // Ensure debuggerd gets to see what went wrong by keeping the C library in the loop. - extern __noreturn void __android_fatal(const char* tag, const char* format, ...) __printflike(2, 3); - __android_fatal(tag ? tag : "", "%s", buf); -#else __android_log_write(ANDROID_LOG_FATAL, tag, buf); __builtin_trap(); /* trap so we have a chance to debug the situation */ -#endif /* NOTREACHED */ } diff --git a/liblog/logd_write_kern.c b/liblog/logd_write_kern.c index 8c707ad..982beaa 100644 --- a/liblog/logd_write_kern.c +++ b/liblog/logd_write_kern.c @@ -173,6 +173,13 @@ int __android_log_write(int prio, const char *tag, const char *msg) tag = tmp_tag; } +#if __BIONIC__ + if (prio == ANDROID_LOG_FATAL) { + extern void __android_set_abort_message(const char*); + __android_set_abort_message(msg); + } +#endif + vec[0].iov_base = (unsigned char *) &prio; vec[0].iov_len = 1; vec[1].iov_base = (void *) tag; @@ -272,14 +279,8 @@ void __android_log_assert(const char *cond, const char *tag, strcpy(buf, "Unspecified assertion failed"); } -#if __BIONIC__ - // Ensure debuggerd gets to see what went wrong by keeping the C library in the loop. - extern __noreturn void __android_fatal(const char* tag, const char* format, ...) __printflike(2, 3); - __android_fatal(tag ? tag : "", "%s", buf); -#else __android_log_write(ANDROID_LOG_FATAL, tag, buf); __builtin_trap(); /* trap so we have a chance to debug the situation */ -#endif /* NOTREACHED */ } -- cgit v1.1