]> granicus.if.org Git - clang/commitdiff
[hwasan] Implement -fsanitize-recover=hwaddress.
authorEvgeniy Stepanov <eugeni.stepanov@gmail.com>
Wed, 20 Dec 2017 19:05:44 +0000 (19:05 +0000)
committerEvgeniy Stepanov <eugeni.stepanov@gmail.com>
Wed, 20 Dec 2017 19:05:44 +0000 (19:05 +0000)
Summary: Very similar to AddressSanitizer, with the exception of the error type encoding.

Reviewers: kcc, alekseyshl

Subscribers: cfe-commits, kubamracek, llvm-commits, hiraditya

Differential Revision: https://reviews.llvm.org/D41417

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@321203 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/BackendUtil.cpp

index 2c033e0f7c02691789183e29588711b78548234d..e2349da5f0a46427a313ca51521c758240d96e2c 100644 (file)
@@ -239,7 +239,11 @@ static void addKernelAddressSanitizerPasses(const PassManagerBuilder &Builder,
 
 static void addHWAddressSanitizerPasses(const PassManagerBuilder &Builder,
                                             legacy::PassManagerBase &PM) {
-  PM.add(createHWAddressSanitizerPass());
+  const PassManagerBuilderWrapper &BuilderWrapper =
+      static_cast<const PassManagerBuilderWrapper &>(Builder);
+  const CodeGenOptions &CGOpts = BuilderWrapper.getCGOpts();
+  bool Recover = CGOpts.SanitizeRecover.has(SanitizerKind::HWAddress);
+  PM.add(createHWAddressSanitizerPass(Recover));
 }
 
 static void addMemorySanitizerPass(const PassManagerBuilder &Builder,