-
Notifications
You must be signed in to change notification settings - Fork 15.4k
[TySan] Fix build failure because of missing kPtrShift #169746
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
Conversation
|
@llvm/pr-subscribers-clang-driver @llvm/pr-subscribers-compiler-rt-sanitizer Author: None (anoopkg6) ChangesFix build failure due to newly introduced PtrShift(), seems to scale to the size of shadow memory, which is 8 bytes for each byte in application. These changes are applied to sizes shifted left by 3. I am not sure if it affects anything related to ShadowAddr, AppAddr, and AppMask. Full diff: https://github.com/llvm/llvm-project/pull/169746.diff 3 Files Affected:
diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp
index 2c741a38fce1a..cdbf21fb90263 100644
--- a/clang/lib/Driver/ToolChains/Linux.cpp
+++ b/clang/lib/Driver/ToolChains/Linux.cpp
@@ -922,7 +922,7 @@ SanitizerMask Linux::getSupportedSanitizers() const {
if (IsX86_64 || IsMIPS64 || IsAArch64 || IsPowerPC64 || IsSystemZ ||
IsLoongArch64 || IsRISCV64)
Res |= SanitizerKind::Thread;
- if (IsX86_64 || IsAArch64)
+ if (IsX86_64 || IsAArch64 || IsSystemZ)
Res |= SanitizerKind::Type;
if (IsX86_64 || IsSystemZ || IsPowerPC64)
Res |= SanitizerKind::KernelMemory;
diff --git a/compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake b/compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake
index c10367715396e..f2317de8916e9 100644
--- a/compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake
+++ b/compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake
@@ -89,7 +89,7 @@ else()
set(ALL_TSAN_SUPPORTED_ARCH ${X86_64} ${MIPS64} ${ARM64} ${PPC64} ${S390X}
${LOONGARCH64} ${RISCV64})
endif()
-set(ALL_TYSAN_SUPPORTED_ARCH ${X86_64} ${ARM64})
+set(ALL_TYSAN_SUPPORTED_ARCH ${X86_64} ${ARM64} ${S390X})
set(ALL_UBSAN_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${RISCV64}
${MIPS32} ${MIPS64} ${PPC64} ${S390X} ${SPARC} ${SPARCV9} ${HEXAGON}
${LOONGARCH64})
diff --git a/compiler-rt/lib/tysan/tysan_platform.h b/compiler-rt/lib/tysan/tysan_platform.h
index 19f77f0cace6b..96049c8d1c9a2 100644
--- a/compiler-rt/lib/tysan/tysan_platform.h
+++ b/compiler-rt/lib/tysan/tysan_platform.h
@@ -45,6 +45,13 @@ struct Mapping48 {
static const uptr kPtrShift = 3;
};
#define TYSAN_RUNTIME_VMA 1
+#elif defined(__s390x__)
+struct Mapping {
+ static const uptr kShadowAddr = 0x080000000000ULL;
+ static const uptr kAppAddr = 0x460000000000ULL;
+ static const uptr kAppMemMsk = ~0xC00000000000ULL;
+ static const uptr kPtrShift = 3;
+};
#else
#error "TySan not supported for this platform!"
#endif
|
|
Since this patch isn't only a fix-forward, but also re-applying a patch, please include in the commit message which patch is being re-applied (#162396) and what that patch does. Likewise, the title should also allude to its effect of adding Type Sanitizer support for SystemZ. |
gbMattN
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm! Can be merged when all tests pass
…long with build failure fix llvm#169746
…96 (#169850) This is a re-submission of original reverted patch [(#162396) ](https://github.com/llvm/llvm-project/pull/162396url)for adding TySan support for systemzZ along with build failure patch [#169746](#169746). See conversations in #169746. Co-authored-by: anoopkg6 <[email protected]>
…nal pr#162396 (#169850) This is a re-submission of original reverted patch [(#162396) ](https://github.com/llvm/llvm-project/pull/162396url)for adding TySan support for systemzZ along with build failure patch [#169746](llvm/llvm-project#169746). See conversations in #169746. Co-authored-by: anoopkg6 <[email protected]>
…96 (llvm#169850) This is a re-submission of original reverted patch [(llvm#162396) ](https://github.com/llvm/llvm-project/pull/162396url)for adding TySan support for systemzZ along with build failure patch [llvm#169746](llvm#169746). See conversations in llvm#169746. Co-authored-by: anoopkg6 <[email protected]>
…96 (llvm#169850) This is a re-submission of original reverted patch [(llvm#162396) ](https://github.com/llvm/llvm-project/pull/162396url)for adding TySan support for systemzZ along with build failure patch [llvm#169746](llvm#169746). See conversations in llvm#169746. Co-authored-by: anoopkg6 <[email protected]>
…96 (llvm#169850) This is a re-submission of original reverted patch [(llvm#162396) ](https://github.com/llvm/llvm-project/pull/162396url)for adding TySan support for systemzZ along with build failure patch [llvm#169746](llvm#169746). See conversations in llvm#169746. Co-authored-by: anoopkg6 <[email protected]>
Fix build failure due to newly introduced PtrShift(), seems to scale to the size of shadow memory, which is 8 bytes for each byte in application. These changes are applied to sizes shifted left by 3. I am not sure if it affects anything related to ShadowAddr, AppAddr, and AppMask.
Choosing kPtrShift to be 3 like other architectures. Tests pass.
@gbMattN