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
This commit is contained in:
Elliott Hughes 2014-05-06 20:40:15 -07:00
parent b52a48affc
commit 26864bf9cb
2 changed files with 14 additions and 12 deletions

View File

@ -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 */
}

View File

@ -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 */
}