Opts.Recover = CodeGenOpts.SanitizeRecover.has(Mask);
Opts.UseAfterScope = CodeGenOpts.SanitizeAddressUseAfterScope;
Opts.UseAfterReturn = CodeGenOpts.getSanitizeAddressUseAfterReturn();
- MPM.addPass(ModuleAddressSanitizerPass(
- Opts, UseGlobalGC, UseOdrIndicator, DestructorKind));
+ MPM.addPass(AddressSanitizerPass(Opts, UseGlobalGC, UseOdrIndicator,
+ DestructorKind));
}
};
ASanPass(SanitizerKind::Address, false);
///
/// This adds 'asan.module_ctor' to 'llvm.global_ctors'. This pass may also
/// run intependently of the function address sanitizer.
-class ModuleAddressSanitizerPass
- : public PassInfoMixin<ModuleAddressSanitizerPass> {
+class AddressSanitizerPass : public PassInfoMixin<AddressSanitizerPass> {
public:
- ModuleAddressSanitizerPass(
- const AddressSanitizerOptions &Options, bool UseGlobalGC = true,
- bool UseOdrIndicator = false,
- AsanDtorKind DestructorKind = AsanDtorKind::Global);
+ AddressSanitizerPass(const AddressSanitizerOptions &Options,
+ bool UseGlobalGC = true, bool UseOdrIndicator = false,
+ AsanDtorKind DestructorKind = AsanDtorKind::Global);
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM);
void printPipeline(raw_ostream &OS,
function_ref<StringRef(StringRef)> MapClassName2PassName);
},
parseHWASanPassOptions,
"kernel;recover")
-MODULE_PASS_WITH_PARAMS("asan-module",
- "ModuleAddressSanitizerPass",
+MODULE_PASS_WITH_PARAMS("asan",
+ "AddressSanitizerPass",
[](AddressSanitizerOptions Opts) {
- return ModuleAddressSanitizerPass(Opts);
+ return AddressSanitizerPass(Opts);
},
parseASanPassOptions,
"kernel")
} // end anonymous namespace
-void ModuleAddressSanitizerPass::printPipeline(
+void AddressSanitizerPass::printPipeline(
raw_ostream &OS, function_ref<StringRef(StringRef)> MapClassName2PassName) {
- static_cast<PassInfoMixin<ModuleAddressSanitizerPass> *>(this)->printPipeline(
+ static_cast<PassInfoMixin<AddressSanitizerPass> *>(this)->printPipeline(
OS, MapClassName2PassName);
OS << "<";
if (Options.CompileKernel)
OS << ">";
}
-ModuleAddressSanitizerPass::ModuleAddressSanitizerPass(
+AddressSanitizerPass::AddressSanitizerPass(
const AddressSanitizerOptions &Options, bool UseGlobalGC,
bool UseOdrIndicator, AsanDtorKind DestructorKind)
: Options(Options), UseGlobalGC(UseGlobalGC),
UseOdrIndicator(UseOdrIndicator), DestructorKind(DestructorKind) {}
-PreservedAnalyses ModuleAddressSanitizerPass::run(Module &M,
- ModuleAnalysisManager &MAM) {
+PreservedAnalyses AddressSanitizerPass::run(Module &M,
+ ModuleAnalysisManager &MAM) {
ModuleAddressSanitizer ModuleSanitizer(M, Options.CompileKernel,
Options.Recover, UseGlobalGC,
UseOdrIndicator, DestructorKind);
; Make sure asan does not instrument __sancov_gen_
; RUN: opt < %s -passes='module(sancov-module)' -sanitizer-coverage-level=3 -sanitizer-coverage-trace-pc-guard -S | FileCheck %s
-; RUN: opt < %s -passes='module(sancov-module,asan-module)' -sanitizer-coverage-level=3 -sanitizer-coverage-trace-pc-guard -S | FileCheck %s
+; RUN: opt < %s -passes='module(sancov-module,asan)' -sanitizer-coverage-level=3 -sanitizer-coverage-trace-pc-guard -S | FileCheck %s
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
$Foo = comdat any
ArrayRef<PassBuilder::PipelineElement>) {
AddressSanitizerOptions Opts;
if (Name == "asan-pipeline") {
- MPM.addPass(ModuleAddressSanitizerPass(Opts));
+ MPM.addPass(AddressSanitizerPass(Opts));
return true;
}
return false;