[compiler-rt] [ubsan_minimal] Add address argument to Android's abort message function (PR #152419)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Aug 6 17:48:19 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-compiler-rt-sanitizer
Author: Sharjeel Khan (Sharjeel-Khan)
<details>
<summary>Changes</summary>
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.
---
Full diff: https://github.com/llvm/llvm-project/pull/152419.diff
1 Files Affected:
- (modified) compiler-rt/lib/ubsan_minimal/ubsan_minimal_handlers.cpp (+5-5)
``````````diff
diff --git a/compiler-rt/lib/ubsan_minimal/ubsan_minimal_handlers.cpp b/compiler-rt/lib/ubsan_minimal/ubsan_minimal_handlers.cpp
index b1f4eab26de0e..2295162021f85 100644
--- a/compiler-rt/lib/ubsan_minimal/ubsan_minimal_handlers.cpp
+++ b/compiler-rt/lib/ubsan_minimal/ubsan_minimal_handlers.cpp
@@ -97,15 +97,15 @@ 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 +132,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 +149,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, nullptr); \
}
// A version of a handler that takes a pointer to a value.
``````````
</details>
https://github.com/llvm/llvm-project/pull/152419
More information about the llvm-commits
mailing list