Static Value-Flow Analysis
Loading...
Searching...
No Matches
Classes | Functions | Variables
ae.cpp File Reference
#include "SVF-LLVM/SVFIRBuilder.h"
#include "WPA/WPAPass.h"
#include "Util/CommandLine.h"
#include "Util/Options.h"
#include "WPA/Andersen.h"
#include "AE/Core/RelExeState.h"
#include "AE/Core/RelationSolver.h"
#include "AE/Svfexe/AbstractInterpretation.h"
#include <chrono>

Go to the source code of this file.

Classes

class  SymblicAbstractionTest
 
class  AETest
 

Functions

int main (int argc, char **argv)
 

Variables

static Option< bool > SYMABS ("symabs", "symbolic abstraction test", false)
 
static Option< bool > AETEST ("aetest", "abstract execution basic function test", false)
 

Function Documentation

◆ main()

int main ( int  argc,
char **  argv 
)

Definition at line 849 of file ae.cpp.

850{
851 int arg_num = 0;
852 int extraArgc = 3;
853 char **arg_value = new char *[argc + extraArgc];
854 for (; arg_num < argc; ++arg_num)
855 {
857 }
858 // add extra options
859 arg_value[arg_num++] = (char*) "-model-consts=true";
860 arg_value[arg_num++] = (char*) "-model-arrays=true";
861 arg_value[arg_num++] = (char*) "-pre-field-sensitive=false";
862 assert(arg_num == (argc + extraArgc) && "more extra arguments? Change the value of extraArgc");
863
864 std::vector<std::string> moduleNameVec;
866 arg_num, arg_value, "Static Symbolic Execution", "[options] <input-bitcode...>"
867 );
868 delete[] arg_value;
869 if (SYMABS())
870 {
873 return 0;
874 }
875
876 if (AETEST())
877 {
880 aeTest.testAbsState();
881 return 0;
882 }
883
886 SVFIR* pag = builder.build();
887 // Run Andersen's to resolve indirect calls, then update SVFIR with resolved targets.
888 // The Andersen singleton will be reused inside AbstractInterpretation::runOnModule().
890 builder.updateCallGraph(ander->getCallGraph());
893 ae.addDetector(std::make_unique<BufOverflowDetector>());
895 ae.addDetector(std::make_unique<NullptrDerefDetector>());
896 ae.runOnModule();
897
900
901 return 0;
902}
static Option< bool > SYMABS("symabs", "symbolic abstraction test", false)
static Option< bool > AETEST("aetest", "abstract execution basic function test", false)
Definition ae.cpp:627
void testBinaryOpStmt()
Definition ae.cpp:633
static std::vector< std::string > parseOptions(int argc, char *argv[], std::string description, std::string callFormat)
Definition CommandLine.h:75
void addDetector(std::unique_ptr< AEDetector > detector)
static AbstractInterpretation & getAEInstance()
static AndersenWaveDiff * createAndersenWaveDiff(SVFIR *_pag)
Create an singleton instance directly instead of invoking llvm pass manager.
Definition Andersen.h:420
static void releaseAndersenWaveDiff()
Definition Andersen.h:430
static LLVMModuleSet * getLLVMModuleSet()
Definition LLVMModule.h:133
static void releaseLLVMModuleSet()
Definition LLVMModule.h:140
static void buildSVFModule(Module &mod)
static const Option< bool > NullDerefCheck
nullptr dereference checker, Default: false
Definition Options.h:248
static const Option< bool > BufferOverflowCheck
buffer overflow checker, Default: false
Definition Options.h:246
CallGraph * getCallGraph() const
Return call graph.
void testsValidation()
Definition ae.cpp:604
llvm::IRBuilder IRBuilder
Definition BasicTypes.h:76

Variable Documentation

◆ AETEST

Option< bool > AETEST("aetest", "abstract execution basic function test", false) ( "aetest"  ,
"abstract execution basic function test"  ,
false   
)
static

◆ SYMABS

Option< bool > SYMABS("symabs", "symbolic abstraction test", false) ( "symabs"  ,
"symbolic abstraction test"  ,
false   
)
static