Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for clang 7.0.0 #55

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 8 additions & 38 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,38 +1,8 @@
## News

* <b>SVF now supports [LLVM-6.0.0](https://github.com/svf-tools/SVF/pull/38) (Contributed by [Jack Anthony](https://github.com/jackanth)). </b>
* <b>SVF now supports [LLVM-4.0.0](https://github.com/svf-tools/SVF/pull/23) (Contributed by Jared Carlson. Thank [Jared](https://github.com/jcarlson23) and [Will](https://github.com/dtzWill) for their in-depth [discussions](https://github.com/svf-tools/SVF/pull/18) about updating SVF!) </b>
* <b>SVF now supports analysis for C++ programs.</b>
<br />



<br />
<br />
<br />
SVF is a static tool that enables scalable and precise interprocedural dependence analysis for C and C++ programs. SVF allows value-flow construction and pointer analysis to be performed iteratively, thereby providing increasingly improved precision for both.

SVF accepts the points-to information generated by any pointer analysis (e.g., Andersen’s analysis) and constructs an interprocedural memory SSA form so that the def-use chains of both top-level and address-taken variables are captured. SVF is implemented on top of an industry-strength compiler [LLVM](http://llvm.org) (version 6.0.0). SVF contains a third party software package [CUDD-2.5.0](http://vlsi.colorado.edu/~fabio/CUDD/) (Binary Decision Diagrams (BDDs)), which is used to encode path conditions.

<br />

| About SVF | Setup Guide | User Guide | Developer Guide |
| ------------- |:-------------:| -----:|-----:|
| ![About](https://github.com/svf-tools/SVF/blob/gh-pages/images/help.png?raw=true)| ![Setup](https://github.com/svf-tools/SVF/blob/gh-pages/images/tools.png?raw=true) | ![User](https://github.com/svf-tools/SVF/blob/gh-pages/images/users.png?raw=true) | ![Developer](https://github.com/svf-tools/SVF/blob/gh-pages/images/database.png?raw=true)
| Introducing SVF -- [what it does](https://github.com/svf-tools/SVF/wiki/About#what-is-svf) and [how we design it](https://github.com/svf-tools/SVF/wiki/SVF-Design#svf-design) | A step by step [setup guide](https://github.com/svf-tools/SVF/wiki/Setup-Guide#getting-started) to build SVF | Command-line options to [run SVF](https://github.com/svf-tools/SVF/wiki/User-Guide#quick-start), get [analysis outputs](https://github.com/svf-tools/SVF/wiki/User-Guide#analysis-outputs), and test SVF with [an example](https://github.com/svf-tools/SVF/wiki/Analyze-a-Simple-C-Program) or [PTABen](https://github.com/SVF-tools/PTABen) | Detailed [technical documentation](https://github.com/svf-tools/SVF/wiki/Technical-documentation) and how to [write your own analyses](https://github.com/svf-tools/SVF/wiki/Write-your-own-analysis-in-SVF) on top of SVF |


<br />
<br />
<p>We release SVF source code in the hope of benefiting others. You are kindly asked to acknowledge usage of the tool by citing some of our publications listed http://svf-tools.github.io/SVF, especially the following two: </p>

Yulei Sui and Jingling Xue. [SVF: Interprocedural Static Value-Flow Analysis in LLVM](https://yuleisui.github.io/publications/cc16.pdf) Compiler Construction (CC '16)

Yulei Sui, Ding Ye, and Jingling Xue. [Detecting Memory Leaks Statically with Full-Sparse Value-Flow Analysis](https://yuleisui.github.io/publications/tse14.pdf) , IEEE Transactions on Software Engineering (TSE'14)

<br />





# Pointer Analysis and Program Dependence Analysis for C and C++ Programs, Forked from http://svf-tools.github.io/SVF/

Made compatible with llvm-7.
Updates to the following files:
- lib/Util/Analysis.cpp
- lib/Util/SVFModule.cpp
- build.sh
- setup.sh
2 changes: 1 addition & 1 deletion lib/Util/AnalysisUtil.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@

#include "Util/AnalysisUtil.h"

#include <llvm/Transforms/Utils/Local.h> // for FindDbgAddrUses
#include <llvm/Analysis/Utils/Local.h> // for FindDbgAddrUses
#include <llvm/IR/GlobalVariable.h> // for GlobalVariable
#include <llvm/IR/Module.h> // for Module
#include <llvm/IR/InstrTypes.h> // for TerminatorInst
Expand Down
2 changes: 1 addition & 1 deletion lib/Util/SVFModule.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -270,7 +270,7 @@ void LLVMModuleSet::dumpModulesToFile(const std::string suffix) {

std::error_code EC;
llvm::raw_fd_ostream OS(OutputFilename.c_str(), EC, llvm::sys::fs::F_None);
WriteBitcodeToFile(mod, OS);
WriteBitcodeToFile(*mod, OS);
OS.flush();
}
}