hanchenye-llvm-project/clang/lib/AST
Peter Collingbourne a4ccff3281 Implement Control Flow Integrity for virtual calls.
This patch introduces the -fsanitize=cfi-vptr flag, which enables a control
flow integrity scheme that checks that virtual calls take place using a vptr of
the correct dynamic type. More details in the new docs/ControlFlowIntegrity.rst
file.

It also introduces the -fsanitize=cfi flag, which is currently a synonym for
-fsanitize=cfi-vptr, but will eventually cover all CFI checks implemented
in Clang.

Differential Revision: http://reviews.llvm.org/D7424

llvm-svn: 230055
2015-02-20 20:30:56 +00:00
..
APValue.cpp Simplify creation of a bunch of ArrayRefs by using None, makeArrayRef or just letting them be implicitly created. 2014-08-27 06:28:36 +00:00
ASTConsumer.cpp
ASTContext.cpp Change representation of member function pointers for MIPS targets 2015-02-18 15:21:35 +00:00
ASTDiagnostic.cpp When checking the template argument list, use a copy of that list for changes 2015-01-24 02:48:32 +00:00
ASTDumper.cpp Enhance printing SizeOfPackExpr in dump. 2015-02-16 19:58:41 +00:00
ASTImporter.cpp Rename RefersToCapturedVariable to RefersToEnclosingVariableOrCapture, NFC 2015-01-12 10:17:46 +00:00
ASTTypeTraits.cpp Fix bug in DynTypedMatcher::constructVariadic() that would cause false negatives. 2014-10-06 13:14:30 +00:00
AttrImpl.cpp Refactor the Microsoft inheritance attribute handling so that it no longer has special treatment. Also fixes a minor bug where the attributes were being parsed as though they were GNU-style attributes when they were in fact keyword attributes. 2013-12-18 23:44:18 +00:00
CMakeLists.txt MS ABI: Don't use the Itanium scheme for numbering lambdas 2014-08-22 04:22:50 +00:00
CXXABI.h Header guard canonicalization, clang part. 2014-08-13 16:25:19 +00:00
CXXInheritance.cpp CXXInheritance: Modernize removal of hidden virtual base class decls. 2015-02-11 19:09:16 +00:00
Comment.cpp Use llvm::makeArrayRef instead of explicitly calling ArrayRef constructor and mentioning the type. This works now that we have a conversion from ArrayRef<T*> to ArrayRef<const T*>. 2014-08-30 16:55:39 +00:00
CommentBriefParser.cpp
CommentCommandTraits.cpp Fix for PR21254 - Assertion in comment parser 2014-10-15 16:18:20 +00:00
CommentLexer.cpp Fix some cases where StringRef was being passed by const reference. Remove const from some other StringRefs since its implicitly const already. 2014-08-30 16:55:52 +00:00
CommentParser.cpp [C++11] Use 'nullptr'. AST edition. 2014-05-12 05:36:57 +00:00
CommentSema.cpp [C++11] Use 'nullptr'. AST edition. 2014-05-12 05:36:57 +00:00
Decl.cpp [modules] When determining whether a name from a module replaces a name we 2015-02-10 03:28:10 +00:00
DeclBase.cpp [modules] When determining whether a name from a module replaces a name we 2015-02-10 03:28:10 +00:00
DeclCXX.cpp Update APIs that return a pair of iterators to return an iterator_range instead. 2015-02-06 17:25:10 +00:00
DeclFriend.cpp [C++11] Use 'nullptr'. AST edition. 2014-05-12 05:36:57 +00:00
DeclGroup.cpp
DeclObjC.cpp Prefer SmallVector::append/insert over push_back loops. Clang edition. 2015-02-17 16:48:30 +00:00
DeclOpenMP.cpp [C++11] Use 'nullptr'. AST edition. 2014-05-12 05:36:57 +00:00
DeclPrinter.cpp Objective-C. Assortment of improvements pretty printing 2014-10-03 20:05:33 +00:00
DeclTemplate.cpp Convert some function arguments to use ArrayRef. 2014-06-26 04:58:53 +00:00
DeclarationName.cpp [C++11] Use 'nullptr'. AST edition. 2014-05-12 05:36:57 +00:00
Expr.cpp [Objctive-C sema]. Do not do the unused-getter-return-value 2015-02-16 23:49:44 +00:00
ExprCXX.cpp DR1748: the reserved placement allocation functions have undefined behavior if 2015-02-14 01:52:20 +00:00
ExprClassification.cpp AST: Remove overzealous assertion from IsModifiable 2015-01-04 00:44:32 +00:00
ExprConstant.cpp Removing LLVM_EXPLICIT, as MSVC 2012 was the last reason for requiring the macro. NFC; Clang edition. 2015-02-15 22:00:28 +00:00
ExternalASTSource.cpp Move virtual methods out of line. 2014-05-21 14:19:22 +00:00
InheritViz.cpp Refer to error_code with the std prefix. 2014-06-12 20:37:59 +00:00
ItaniumCXXABI.cpp Fix the issue of mangling of local anonymous unions (Itanium C++ ABI): 2014-12-12 16:17:46 +00:00
ItaniumMangle.cpp Implement Control Flow Integrity for virtual calls. 2015-02-20 20:30:56 +00:00
Makefile
Mangle.cpp This patch fixes a crash involving use of predefined 2014-12-02 18:42:51 +00:00
MicrosoftCXXABI.cpp Adds 'override' to overriding methods. NFC. 2014-10-01 16:56:40 +00:00
MicrosoftMangle.cpp Implement Control Flow Integrity for virtual calls. 2015-02-20 20:30:56 +00:00
NSAPI.cpp Objective-C. revert patch for rdar://17554063. 2014-10-28 18:28:16 +00:00
NestedNameSpecifier.cpp -ms-extensions: Implement __super scope specifier (PR13236). 2014-09-26 00:28:20 +00:00
ParentMap.cpp [C++11] Use 'nullptr'. AST edition. 2014-05-12 05:36:57 +00:00
RawCommentList.cpp Comment parsing: when comment ranges are deserialized from multiple modules, 2014-03-27 15:40:39 +00:00
RecordLayout.cpp CXXInfo memory should be released after calling the destructor 2014-05-24 07:19:25 +00:00
RecordLayoutBuilder.cpp Removing LLVM_DELETED_FUNCTION, as MSVC 2012 was the last reason for requiring the macro. NFC; Clang edition. 2015-02-15 22:54:08 +00:00
SelectorLocationsKind.cpp
Stmt.cpp Various fixes to mangling of list-initialization. 2015-02-05 06:15:50 +00:00
StmtIterator.cpp [C++11] Use 'nullptr'. AST edition. 2014-05-12 05:36:57 +00:00
StmtPrinter.cpp PR22465: when performing list-initialization for a class type C, if we see an 2015-02-05 07:02:11 +00:00
StmtProfile.cpp Preserve numeric literal suffixes during type canonicalization. 2014-11-20 03:37:32 +00:00
StmtViz.cpp
TemplateBase.cpp Use APSInt::isSameValue instead of operator== in a place where two APSInt's 2015-01-09 00:58:16 +00:00
TemplateName.cpp [C++11] Use 'nullptr'. AST edition. 2014-05-12 05:36:57 +00:00
Type.cpp Remove support for pnaclcall attribute 2015-01-28 20:24:52 +00:00
TypeLoc.cpp Fix initializing TypeOfTypeLoc 2014-10-24 13:52:55 +00:00
TypePrinter.cpp Remove support for pnaclcall attribute 2015-01-28 20:24:52 +00:00
VTTBuilder.cpp Update for LLVM API change to make Small(Ptr)Set::insert return pair<iterator, bool> as per the C++ standard's associative container concept. 2014-11-19 07:49:47 +00:00
VTableBuilder.cpp Fix typo. 2014-11-29 23:57:35 +00:00