[llvm] cc400d4 - [HWASan][bugfix] Fix kernel check in ShadowMapping::init (#142226)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 2 10:39:19 PDT 2025
Author: Usama Hameed
Date: 2025-06-02T10:39:15-07:00
New Revision: cc400d4417e840fe67314ac4915eb4341535bbfa
URL: https://github.com/llvm/llvm-project/commit/cc400d4417e840fe67314ac4915eb4341535bbfa
DIFF: https://github.com/llvm/llvm-project/commit/cc400d4417e840fe67314ac4915eb4341535bbfa.diff
LOG: [HWASan][bugfix] Fix kernel check in ShadowMapping::init (#142226)
The function currently checks for the command line argument only to
check if compiling for kernel. This is incorrect as the setting can also
be passed programatically.
Added:
Modified:
llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp b/llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp
index e81a725c62ead..77db686f8229c 100644
--- a/llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp
+++ b/llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp
@@ -419,7 +419,8 @@ class HWAddressSanitizer {
}
public:
- void init(Triple &TargetTriple, bool InstrumentWithCalls);
+ void init(Triple &TargetTriple, bool InstrumentWithCalls,
+ bool CompileKernel);
Align getObjectAlignment() const { return Align(1ULL << Scale); }
bool isInGlobal() const { return Kind == OffsetKind::kGlobal; }
bool isInIfunc() const { return Kind == OffsetKind::kIfunc; }
@@ -642,7 +643,7 @@ void HWAddressSanitizer::initializeModule() {
PointerTagShift = IsX86_64 ? 57 : 56;
TagMaskByte = IsX86_64 ? 0x3F : 0xFF;
- Mapping.init(TargetTriple, InstrumentWithCalls);
+ Mapping.init(TargetTriple, InstrumentWithCalls, CompileKernel);
C = &(M.getContext());
IRBuilder<> IRB(*C);
@@ -1874,7 +1875,8 @@ void HWAddressSanitizer::instrumentPersonalityFunctions() {
}
void HWAddressSanitizer::ShadowMapping::init(Triple &TargetTriple,
- bool InstrumentWithCalls) {
+ bool InstrumentWithCalls,
+ bool CompileKernel) {
// Start with defaults.
Scale = kDefaultShadowScale;
Kind = OffsetKind::kTls;
@@ -1885,7 +1887,7 @@ void HWAddressSanitizer::ShadowMapping::init(Triple &TargetTriple,
// Fuchsia is always PIE, which means that the beginning of the address
// space is always available.
SetFixed(0);
- } else if (ClEnableKhwasan || InstrumentWithCalls) {
+ } else if (CompileKernel || InstrumentWithCalls) {
SetFixed(0);
WithFrameRecord = false;
}
More information about the llvm-commits
mailing list