Skip to content
This repository was archived by the owner on Oct 30, 2025. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
40ff81b
Work
rsas Feb 18, 2018
784980f
Work
rsas Feb 18, 2018
cac3bbe
Remove
Feb 19, 2018
8c63b50
Compile
Feb 19, 2018
207df43
Reshuffle
Feb 19, 2018
ec49f80
Work
rsas Feb 19, 2018
47fe3b1
Foo
Feb 20, 2018
8e9277f
Work
rsas Feb 22, 2018
5490e66
Work
rsas Feb 23, 2018
37ad76e
Refactor Demanded bits condition creation
rsas Feb 24, 2018
d5d67c6
Start UB refactoring
rsas Feb 28, 2018
dc9611e
Work on UB rewrite
rsas Mar 5, 2018
00e0e57
Work
rsas Mar 11, 2018
8975ab8
Add failing tests
rsas Mar 11, 2018
46a4520
Work
rsas Mar 12, 2018
ec8c4fd
Work, again
rsas Mar 12, 2018
17b9273
Use getImpliesInst were possible
rsas Mar 13, 2018
6bdde48
Work
rsas Mar 22, 2018
ec05723
Fix UB instruction gathering
rsas Mar 27, 2018
693a4f5
Comment UB recording
rsas Mar 27, 2018
1eae2d3
More
rsas Mar 27, 2018
4b0cbf9
Work
rsas Mar 27, 2018
dd6e400
Get UB constraints of PCs
rsas Mar 27, 2018
71cf3d9
Minor
rsas Mar 27, 2018
b2737ae
Work
rsas Mar 29, 2018
132ba94
No need of block pcs?
rsas Mar 29, 2018
8d50bdf
Work
rsas Mar 31, 2018
28fb4b9
Work
rsas Apr 1, 2018
a5ed68c
Re-enable extractor tests
rsas Apr 19, 2018
63c9124
Remove ExploitUB option, always exploit UB
rsas Apr 19, 2018
4c0cdbf
Add extractor_tests back to check
rsas Apr 19, 2018
0e51008
Fix assertions
rsas Apr 22, 2018
4bf4c01
Clean-up KLEEBuilder
rsas Apr 22, 2018
c4fdf8b
Remove unnecessary functions
rsas Apr 22, 2018
4f61f56
Clean-up expression builder
rsas Apr 22, 2018
683fdff
Reorder
rsas Apr 22, 2018
364e8bc
Add z3 to build deps
rsas May 7, 2018
92a91f4
Add Z3 to CMake
rsas May 7, 2018
1b70422
Work on Z3 backend
rsas May 7, 2018
5d8bafb
Compiling
rsas May 7, 2018
97c5245
Add ExprBuilder constructor
rsas May 13, 2018
398428b
All KLEE functions replaced with Z3 API calls
rsas May 13, 2018
d4fd8e6
Merge branch 'master' into z3builder
rsas May 14, 2018
d2aa4f2
Work
rsas May 14, 2018
6cc67ac
Work
rsas Aug 12, 2018
dc85fa4
First LGTM query using z3
rsas Aug 13, 2018
66edd46
Work
rsas Aug 21, 2018
c45f05d
Fix test cases
rsas Aug 31, 2018
a6b9fca
Add Inst::Const to BV conversion
rsas Sep 6, 2018
f9f4082
Merge branch 'master' into z3builder
rsas Jan 20, 2019
9f26e47
Merge branch 'master' into z3builder
rsas Jan 20, 2019
afb5658
Merge branch 'master' into z3builder
rsas Feb 3, 2019
2819fed
Foo
rsas Feb 11, 2019
54be0f7
Merge branch 'master' into z3builder
rsas Feb 11, 2019
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
7 changes: 4 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -123,8 +123,6 @@ find_library(HIREDIS_LIBRARY
PATHS
third_party/hiredis/install/lib)

find_library(ALIVE_LIBRARY alive2 PATHS "${ALIVE_DIR}/build")

find_path(Z3_INCLUDE_DIRECTORY
NAMES
z3.h
Expand All @@ -148,6 +146,8 @@ find_program(Z3

set(TEST_SOLVER "-z3-path=${Z3}")

find_library(ALIVE_LIBRARY alive2 PATHS "${ALIVE_DIR}/build")

set(SOUPER_CLANG_TOOL_FILES
lib/ClangTool/Actions.cpp
include/souper/ClangTool/Actions.h
Expand All @@ -162,6 +162,7 @@ set(SOUPER_EXTRACTOR_FILES
lib/Extractor/ExprBuilder.cpp
lib/Extractor/KLEEBuilder.cpp
lib/Extractor/Solver.cpp
lib/Extractor/Z3Builder.cpp
include/souper/Extractor/Candidates.h
include/souper/Extractor/ExprBuilder.h
include/souper/Extractor/Solver.h
Expand Down Expand Up @@ -363,7 +364,7 @@ if(NOT GO_EXECUTABLE STREQUAL "GO_EXECUTABLE-NOTFOUND")
PROPERTIES COMPILE_FLAGS "${LLVM_CXXFLAGS}")
target_include_directories(souperweb-backend PRIVATE "${LLVM_INCLUDEDIR}")

target_link_libraries(souperweb-backend souperTool souperExtractor souperKVStore souperSMTLIB2 souperParser souperInst ${HIREDIS_LIBRARY})
target_link_libraries(souperweb-backend souperTool souperExtractor souperKVStore souperSMTLIB2 souperParser souperInst ${HIREDIS_LIBRARY} ${Z3_LIBRARY})

add_custom_target(souperweb ALL COMMAND ${GO_EXECUTABLE} build -o ${CMAKE_BINARY_DIR}/souperweb ${CMAKE_SOURCE_DIR}/tools/souperweb.go
COMMENT "Building souperweb")
Expand Down
13 changes: 13 additions & 0 deletions failing-test.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
Testing Time: 87.60s
********************
Failing Tests (2):
Souper :: Pass/clang-pass-profile.c
Souper :: Tool/too-many-phis.opt

Expected Passes : 342
Expected Failures : 3
Unexpected Failures: 2

real 1m27.715s
user 4m12.942s
sys 0m15.495s
4 changes: 3 additions & 1 deletion include/souper/Extractor/ExprBuilder.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@ class ExprBuilder {
const unsigned MAX_PHI_DEPTH = 25;
public:
enum Builder {
KLEE
KLEE,
Z3
};

ExprBuilder(InstContext &IC) : LIC(&IC) {}
Expand Down Expand Up @@ -108,6 +109,7 @@ std::string BuildQuery(InstContext &IC, const BlockPCs &BPCs,
std::vector<Inst *> *ModelVars, bool Negate=false);

std::unique_ptr<ExprBuilder> createKLEEBuilder(InstContext &IC);
std::unique_ptr<ExprBuilder> createZ3Builder(InstContext &IC);
}

#endif // SOUPER_EXTRACTOR_EXPRBUILDER_H
7 changes: 6 additions & 1 deletion lib/Extractor/ExprBuilder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,9 @@ static llvm::cl::opt<souper::ExprBuilder::Builder> SMTExprBuilder(
llvm::cl::desc("SMT-LIBv2 expression builder (default=klee)"),
llvm::cl::values(clEnumValN(souper::ExprBuilder::KLEE, "klee",
"Use KLEE's Expr library")),
llvm::cl::init(souper::ExprBuilder::KLEE));
llvm::cl::values(clEnumValN(souper::ExprBuilder::Z3, "z3",
"Use Z3 API")),
llvm::cl::init(souper::ExprBuilder::Z3));

bool ExprBuilder::getUBPaths(Inst *I, UBPath *Current,
std::vector<std::unique_ptr<UBPath>> &Paths,
Expand Down Expand Up @@ -954,6 +956,9 @@ std::string BuildQuery(InstContext &IC, const BlockPCs &BPCs,
case ExprBuilder::KLEE:
EB = createKLEEBuilder(IC);
break;
case ExprBuilder::Z3:
EB = createZ3Builder(IC);
break;
default:
llvm::report_fatal_error("cannot reach here");
break;
Expand Down
Loading