[ubsan_minimal] Add address argument to Android's abort message function (#152419)
https://github.com/llvm/llvm-project/pull/152192 forgot to make the argument changes to Android code in UBsan minimal causing a build error for Android LLVM: ``` /b/f/w/src/git/out/llvm-project/compiler-rt/lib/ubsan_minimal/ubsan_minimal_handlers.cpp:102:3: error: no matching function for call to 'format_msg' 102 | format_msg(kind, caller, msg_buf, msg_buf + sizeof(msg_buf)); | ^~~~~~~~~~ /b/f/w/src/git/out/llvm-project/compiler-rt/lib/ubsan_minimal/ubsan_minimal_handlers.cpp:37:13: note: candidate function not viable: requires 5 arguments, but 4 were provided 37 | static void format_msg(const char *kind, uintptr_t caller, | ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 38 | const uintptr_t *address, char *buf, const char *end) { ``` This change adds the address argument to abort_with_message just like __ubsan_report_error_fatal so it can be passed to format_msg.
This commit is contained in:
parent
44af26ea2e
commit
d9f9064cfa
@ -97,15 +97,19 @@ SANITIZER_INTERFACE_WEAK_DEF(void, __ubsan_report_error_fatal, const char *kind,
|
||||
|
||||
#if defined(__ANDROID__)
|
||||
extern "C" __attribute__((weak)) void android_set_abort_message(const char *);
|
||||
static void abort_with_message(const char *kind, uintptr_t caller) {
|
||||
static void abort_with_message(const char *kind, uintptr_t caller,
|
||||
const uintptr_t *address) {
|
||||
char msg_buf[128];
|
||||
format_msg(kind, caller, msg_buf, msg_buf + sizeof(msg_buf));
|
||||
format_msg(kind, caller, address, msg_buf, msg_buf + sizeof(msg_buf));
|
||||
if (&android_set_abort_message)
|
||||
android_set_abort_message(msg_buf);
|
||||
abort();
|
||||
}
|
||||
#else
|
||||
static void abort_with_message(const char *kind, uintptr_t caller) { abort(); }
|
||||
static void abort_with_message(const char *kind, uintptr_t caller,
|
||||
const uintptr_t *address) {
|
||||
abort();
|
||||
}
|
||||
#endif
|
||||
|
||||
#if SANITIZER_DEBUG
|
||||
@ -132,7 +136,7 @@ void NORETURN CheckFailed(const char *file, int, const char *cond, u64, u64) {
|
||||
INTERFACE void __ubsan_handle_##name##_minimal_abort() { \
|
||||
uintptr_t caller = GET_CALLER_PC(); \
|
||||
__ubsan_report_error_fatal(kind, caller, nullptr); \
|
||||
abort_with_message(kind, caller); \
|
||||
abort_with_message(kind, caller, nullptr); \
|
||||
}
|
||||
|
||||
#define HANDLER(name, kind) \
|
||||
@ -149,7 +153,7 @@ void NORETURN CheckFailed(const char *file, int, const char *cond, u64, u64) {
|
||||
const uintptr_t address) { \
|
||||
uintptr_t caller = GET_CALLER_PC(); \
|
||||
__ubsan_report_error_fatal(kind, caller, &address); \
|
||||
abort_with_message(kind, caller); \
|
||||
abort_with_message(kind, caller, &address); \
|
||||
}
|
||||
|
||||
// A version of a handler that takes a pointer to a value.
|
||||
|
Loading…
x
Reference in New Issue
Block a user