-
Notifications
You must be signed in to change notification settings - Fork 13.6k
[compiler-rt] Hardcode uptr/sptr typedefs on Mips/Linux #141201
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
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. Signed-off-by: Khem Raj <raj.khem@gmail.com>
@llvm/pr-subscribers-compiler-rt-sanitizer Author: Khem Raj (kraj) ChangesSanitizer build on Mips/Linux faills to build due to assertion errors mismatched definitions. This is due to inconsistent definitions of UINTPTR_TYPE long unsigned int where as gcc defines it as unsigned int As a workaround, this hardcodes Full diff: https://github.com/llvm/llvm-project/pull/141201.diff 1 Files Affected:
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;
|
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. Upstream-Status: Submitted [llvm#141201] Signed-off-by: Khem Raj <raj.khem@gmail.com>
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. Upstream-Status: Submitted [llvm#141201] Signed-off-by: Khem Raj <raj.khem@gmail.com>
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. Upstream-Status: Submitted [llvm#141201] Signed-off-by: Khem Raj <raj.khem@gmail.com>
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. Upstream-Status: Submitted [llvm#141201] Signed-off-by: Khem Raj <raj.khem@gmail.com>
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. Upstream-Status: Submitted [llvm#141201] Signed-off-by: Khem Raj <raj.khem@gmail.com>
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. Upstream-Status: Submitted [llvm#141201] Signed-off-by: Khem Raj <raj.khem@gmail.com>
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. Upstream-Status: Submitted [llvm#141201] Signed-off-by: Khem Raj <raj.khem@gmail.com>
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. Upstream-Status: Submitted [llvm#141201] Signed-off-by: Khem Raj <raj.khem@gmail.com>
Sanitizer build on Mips/Linux faills to build due to assertion errors mismatched definitions. This is due to inconsistent definitions of
uptr
of eitherunsigned long
orunsigned int
in compiler-rt. This is caused by clang definingUINTPTR_TYPE long unsigned int where as gcc defines it as unsigned int
As a workaround, this hardcodes
uptr
/sptr
in compiler-rt tounsigned int
/int
on Linux Mips, matching gcc.