SuccessChanges

Summary

  1. ARM MTE stack sanitizer. Add "memtag" sanitizer that detects and mitigates stack memory issues using armv8.5 Memory Tagging Extension. It is similar in principle to HWASan, which is a software implementation of the same idea, but there are enough differencies to warrant a new sanitizer type IMHO. It is also expected to have very different performance properties. The new sanitizer does not have a runtime library (it may grow one later, along with a "debugging" mode). Similar to SafeStack and StackProtector, the instrumentation pass (in a follow up change) will be inserted in all cases, but will only affect functions marked with the new sanitize_memtag attribute. Reviewers: pcc, hctim, vitalybuka, ostannard Subscribers: srhines, mehdi_amini, javed.absar, kristof.beyls, hiraditya, cryptoad, steven_wu, dexonsmith, cfe-commits, llvm-commits Tags: #clang, #llvm Differential Revision: https://reviews.llvm.org/D64169
Revision 366123 by eugenis:
ARM MTE stack sanitizer.

Add "memtag" sanitizer that detects and mitigates stack memory issues
using armv8.5 Memory Tagging Extension.

It is similar in principle to HWASan, which is a software implementation
of the same idea, but there are enough differencies to warrant a new
sanitizer type IMHO. It is also expected to have very different
performance properties.

The new sanitizer does not have a runtime library (it may grow one
later, along with a "debugging" mode). Similar to SafeStack and
StackProtector, the instrumentation pass (in a follow up change) will be
inserted in all cases, but will only affect functions marked with the
new sanitize_memtag attribute.

Reviewers: pcc, hctim, vitalybuka, ostannard

Subscribers: srhines, mehdi_amini, javed.absar, kristof.beyls, hiraditya, cryptoad, steven_wu, dexonsmith, cfe-commits, llvm-commits

Tags: #clang, #llvm

Differential Revision: https://reviews.llvm.org/D64169
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/include/clang/Basic/Features.def (diff)clang.src/include/clang/Basic/Features.def
The file was modified/cfe/trunk/include/clang/Basic/Sanitizers.def (diff)clang.src/include/clang/Basic/Sanitizers.def
The file was modified/cfe/trunk/lib/CodeGen/CGDeclCXX.cpp (diff)clang.src/lib/CodeGen/CGDeclCXX.cpp
The file was modified/cfe/trunk/lib/CodeGen/CodeGenFunction.cpp (diff)clang.src/lib/CodeGen/CodeGenFunction.cpp
The file was modified/cfe/trunk/lib/CodeGen/CodeGenModule.cpp (diff)clang.src/lib/CodeGen/CodeGenModule.cpp
The file was modified/cfe/trunk/lib/CodeGen/SanitizerMetadata.cpp (diff)clang.src/lib/CodeGen/SanitizerMetadata.cpp
The file was modified/cfe/trunk/lib/Driver/SanitizerArgs.cpp (diff)clang.src/lib/Driver/SanitizerArgs.cpp
The file was modified/cfe/trunk/lib/Driver/ToolChains/Linux.cpp (diff)clang.src/lib/Driver/ToolChains/Linux.cpp
The file was added/cfe/trunk/test/CodeGen/memtag-attr.cppclang.src/test/CodeGen/memtag-attr.cpp
The file was modified/cfe/trunk/test/Driver/fsanitize.c (diff)clang.src/test/Driver/fsanitize.c
The file was added/cfe/trunk/test/Lexer/has_feature_memtag_sanitizer.cppclang.src/test/Lexer/has_feature_memtag_sanitizer.cpp
The file was modified/cfe/trunk/test/SemaCXX/attr-no-sanitize.cpp (diff)clang.src/test/SemaCXX/attr-no-sanitize.cpp
The file was modified/llvm/trunk/docs/BitCodeFormat.rst (diff)llvm.src/docs/BitCodeFormat.rst
The file was modified/llvm/trunk/docs/LangRef.rst (diff)llvm.src/docs/LangRef.rst
The file was modified/llvm/trunk/include/llvm/Bitcode/LLVMBitCodes.h (diff)llvm.src/include/llvm/Bitcode/LLVMBitCodes.h
The file was modified/llvm/trunk/include/llvm/IR/Attributes.td (diff)llvm.src/include/llvm/IR/Attributes.td
The file was modified/llvm/trunk/lib/AsmParser/LLLexer.cpp (diff)llvm.src/lib/AsmParser/LLLexer.cpp
The file was modified/llvm/trunk/lib/AsmParser/LLParser.cpp (diff)llvm.src/lib/AsmParser/LLParser.cpp
The file was modified/llvm/trunk/lib/AsmParser/LLToken.h (diff)llvm.src/lib/AsmParser/LLToken.h
The file was modified/llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp (diff)llvm.src/lib/Bitcode/Reader/BitcodeReader.cpp
The file was modified/llvm/trunk/lib/Bitcode/Writer/BitcodeWriter.cpp (diff)llvm.src/lib/Bitcode/Writer/BitcodeWriter.cpp
The file was modified/llvm/trunk/lib/IR/Attributes.cpp (diff)llvm.src/lib/IR/Attributes.cpp
The file was modified/llvm/trunk/lib/IR/Verifier.cpp (diff)llvm.src/lib/IR/Verifier.cpp
The file was modified/llvm/trunk/lib/Transforms/IPO/ForceFunctionAttrs.cpp (diff)llvm.src/lib/Transforms/IPO/ForceFunctionAttrs.cpp
The file was modified/llvm/trunk/lib/Transforms/Utils/CodeExtractor.cpp (diff)llvm.src/lib/Transforms/Utils/CodeExtractor.cpp
The file was modified/llvm/trunk/test/Bitcode/attributes.ll (diff)llvm.src/test/Bitcode/attributes.ll
The file was modified/llvm/trunk/test/Transforms/Inline/attributes.ll (diff)llvm.src/test/Transforms/Inline/attributes.ll
The file was modified/llvm/trunk/utils/emacs/llvm-mode.el (diff)llvm.src/utils/emacs/llvm-mode.el