[compiler-rt] [compiler-rt] Hardcode uptr/sptr typedefs on Mips/Linux (PR #141201)

via llvm-commits llvm-commits at lists.llvm.org
Thu May 22 23:16:58 PDT 2025


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-compiler-rt-sanitizer

Author: Khem Raj (kraj)

<details>
<summary>Changes</summary>

Sanitizer build on Mips/Linux faills to build due to assertion errors mismatched definitions. This is due to inconsistent definitions of `uptr` of either `unsigned long` or `unsigned int` in compiler-rt. This is caused by clang defining

__UINTPTR_TYPE__ long unsigned int where as gcc defines it as unsigned int

As a workaround, this hardcodes `uptr`/`sptr` in compiler-rt to `unsigned int`/`int` on Linux Mips, matching gcc.

---
Full diff: https://github.com/llvm/llvm-project/pull/141201.diff


1 Files Affected:

- (modified) compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h (+1-1) 


``````````diff
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h b/compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h
index fff60c96f632f..511ee8fe49ccd 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h
@@ -139,7 +139,7 @@
 namespace __sanitizer {
 
 #if defined(__UINTPTR_TYPE__)
-#  if defined(__arm__) && defined(__linux__)
+#  if (defined(__arm__) || _ABIO32 == 1) && defined(__linux__)
 // Linux Arm headers redefine __UINTPTR_TYPE__ and disagree with clang/gcc.
 typedef unsigned int uptr;
 typedef int sptr;

``````````

</details>


https://github.com/llvm/llvm-project/pull/141201


More information about the llvm-commits mailing list