[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