summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-cfi-verify/lib/GraphBuilder.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Remove redundant includes from tools.Michael Zolotukhin2017-12-131-2/+0
| | | | llvm-svn: 320631
* [cfi-verify] Validate there are no register clobbers between CFI-check and ↵Mitch Phillips2017-11-151-0/+1
| | | | | | | | | | | | | | | | | | | instruction execution. Summary: This patch adds another failure mode for `validateCFIProtection(..)`, wherein any register that affects the indirect control flow instruction is clobbered to between the CFI-check and the instruction's execution. Also includes a modification to make MCInstrDesc::hasDefOfPhysReg public. Reviewers: vlad.tsyrklevich Reviewed By: vlad.tsyrklevich Subscribers: llvm-commits, pcc, kcc Differential Revision: https://reviews.llvm.org/D39820 llvm-svn: 318238
* [cfi-verify] Add DOT graph printing for GraphResult objects.Mitch Phillips2017-11-141-0/+24
| | | | | | | | | | | | | | Allows users to view GraphResult objects in a DOT directed-graph format. This feature can be turned on through the --print-graphs flag. Also enabled pretty-printing of instructions in output. Together these features make analysis of unprotected CF instructions much easier by providing a visual control flow graph. Reviewers: pcc Subscribers: llvm-commits, kcc, vlad.tsyrklevich Differential Revision: https://reviews.llvm.org/D39819 llvm-svn: 318211
* Update cl::opt<uint64_t> instances to cl::opt<unsigned long long>Mitch Phillips2017-11-011-4/+4
| | | | | | | | | | | | | | cl::opt<uint64_t> fails when parsing command line arguments. See https://bugs.llvm.org/show_bug.cgi?id=19665. Reviewers: pcc Subscribers: mgorny, llvm-commits, kcc Differential Revision: https://reviews.llvm.org/D38657 llvm-svn: 317141
* Parse DWARF information to reduce false positives.Mitch Phillips2017-10-311-0/+7
| | | | | | | | | | | | | | Summary: Help differentiate code and data by parsing DWARF information. This will reduce false positive rates where data is placed in executable sections and is mistakenly parsed as code, resulting in an inflation in the number of indirect CF instructions (and hence an inflation of the number of unprotected). Also prints the DWARF line data around the region of each indirect CF instruction. Reviewers: pcc Subscribers: probinson, llvm-commits, vlad.tsyrklevich, mgorny, aprantl, kcc Differential Revision: https://reviews.llvm.org/D38654 llvm-svn: 317050
* Graph builder implementation.Mitch Phillips2017-10-231-0/+291
Implement a localised graph builder for indirect control flow instructions. Main interface is through GraphBuilder::buildFlowGraph, which will build a flow graph around an indirect CF instruction. Various modifications to FileVerifier are also made to const-expose some members needed for machine code analysis done by the graph builder. Reviewers: vlad.tsyrklevich Reviewed By: vlad.tsyrklevich Subscribers: llvm-commits, kcc, pcc Differential Revision: https://reviews.llvm.org/D38427 llvm-svn: 316372
OpenPOWER on IntegriCloud