-
Notifications
You must be signed in to change notification settings - Fork 156
Path Tracing #640
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
Merged
Merged
Path Tracing #640
Changes from all commits
Commits
Show all changes
83 commits
Select commit
Hold shift + click to select a range
73ae1b6
Add explicit ExplodedSuperGraph and a version of the IDESolver that f…
fabianbs96 b868728
Add more TODOs
fabianbs96 709405e
Add GraphTraits
fabianbs96 3d9df06
Add pathsDagTo (not tested yet)
fabianbs96 e35d04f
Add Z3 submodule
fabianbs96 ddef578
Set Z3 version
fabianbs96 e90df7b
Add Z3-related stuff (WIP)
fabianbs96 2c5c0d4
Added now basic functionality for path sensitivity (compiles, but not…
fabianbs96 91fa523
Implement LLVMPathConstraints
fabianbs96 cada9f1
Add unittest for PathTracking (C/C++ test files are still missing) an…
fabianbs96 a332b6d
Make a lot of the unittests work (still not completed)
fabianbs96 21d4cba
Fix Config propagation
fabianbs96 b898204
Finally, fix all unittests
fabianbs96 2a286bf
minor
fabianbs96 a9642e2
redirect z3 submodule
fabianbs96 848ba9b
Checkout the right z3 branch
fabianbs96 71891e6
bump z3
fabianbs96 c70b7ef
add bulk dag-generation (not tested yet)
fabianbs96 04e27d1
Merge branch 'f-PathTracingNew' of git.cs.uni-paderborn.de:pdschbrt/s…
fabianbs96 25bdbb7
Some more fixes
fabianbs96 3850866
Add filters to PSM
fabianbs96 d4de032
Better integrate filter into PSM
fabianbs96 d90415d
minor
fabianbs96 cc649e4
Improve on reverseDAG
fabianbs96 2b5de39
minor improvements in reverseDAG
fabianbs96 86b135b
Bump z3
fabianbs96 eb16d36
Fix depdendency issue with utils->config
fabianbs96 1bc75d1
Merge branch 'development' into f-PathTracingNew
fabianbs96 aaca44f
Fix bugs indiced by reverse merging from development + bump z3
fabianbs96 e6556c1
Make Z3 optional
fabianbs96 77370df
Workaround weird cmake behavior
fabianbs96 5508615
Fix seeds in exploded supergraph
fabianbs96 82792d9
Add forward minimize graph
fabianbs96 a9fb9da
Add one Test for forward minimize DAG
fabianbs96 dc2a8d4
Fix in createEquivalentGraphFrom
fabianbs96 2de5592
Fix filterOutUnreachableNodes
fabianbs96 6a5a777
Fix: DFAMinimizer edge comparison
fabianbs a68886a
Fix compilation on ubuntu22
fabianbs96 7d5f9ed
Improve createEquivalentGraphFrom
fabianbs96 a5a70ad
Merge remote-tracking branch 'mainline-phasar/development' into f-Pat…
fabianbs96 96caeac
Resolve errors due to merging
fabianbs96 327aa97
Fix z3 dependency
fabianbs96 fa1f243
Fix UAF when copying an ExplicitESG
fabianbs96 0449984
Get rid of NodeRef::DSI
fabianbs96 628552b
Merge branch 'development' into f-PathTracingNew
boehmseb 58454de
Fix compile error due to merge
fabianbs96 3f4031e
minor
fabianbs96 657c51f
More const in Table
fabianbs96 27acc99
Give the PathTracing Filters more power
fabianbs96 e39dec8
Fix null error
fabianbs96 0d51cc1
Merge branch 'development' into f-PathTracingNew
fabianbs96 a916416
Fix Path Tracing with chaotic edge saving due to new Worklist structu…
fabianbs96 0494607
Some cleanup
fabianbs96 35c3eff
pre-commit
fabianbs96 bd0a758
Merge branch 'development' into f-PathTracingNew
fabianbs96 ef4b179
Merge branch 'development' into f-PathTracingNew
fabianbs96 74f8432
Apply some review comments
fabianbs96 2d90c08
Merge branch 'development' into f-PathTracingNew
fabianbs96 ea76bc1
Write ESG to temp file instead of hard-coded file
fabianbs96 58a8d35
minor
fabianbs96 2aa2099
Merge branch 'development' into f-PathTracingNew
fabianbs96 e0735d8
pre-commitIDESolver.h
fabianbs96 9136cad
pre-commit Utilities.h
fabianbs96 a2ab5fa
trailing whitespace IDESolver.h
fabianbs96 c130b40
Merge branch 'development' into f-PathTracingNew
MMory d491f6f
Fix errors due to merge
fabianbs96 df3511d
Merge branch 'development' into f-PathTracingNew
fabianbs96 5cdca10
Integrate free-functions NToString and DToString into ExplicitESG
fabianbs96 7d3d9a8
Adapt invariants due to chaotic solving (worklist vs recursion)
fabianbs96 6d08380
Merge branch 'development' into f-PathTracingNew
fabianbs96 f3666e9
Merge branch 'development' into f-PathTracingNew
fabianbs96 8072869
Merge branch 'development' into f-PathTracingNew
fabianbs96 56ec0a6
Add LLVMSSA version of pathsDagTo as temporary solution until f-IDESo…
fabianbs96 917bd83
Merge branch 'development' into f-PathTracingNew
fabianbs96 b947c1e
minor
fabianbs96 1a15261
Use system z3
fabianbs96 1d51399
Merge branch 'development' into f-PathTracingNew
fabianbs96 57b0f81
Find z3 from psr installation
fabianbs96 f7402d3
Assert size overflow
fabianbs96 d9a0fee
Enable Z3 in CI
fabianbs96 a478f9b
fix naming issue
fabianbs96 ad9d08e
Merge branch 'development' into f-PathTracingNew
fabianbs96 566adcc
Merge branch 'development' into f-PathTracingNew
fabianbs96 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| /****************************************************************************** | ||
| * Copyright (c) 2022 Philipp Schubert. | ||
| * All rights reserved. This program and the accompanying materials are made | ||
| * available under the terms of LICENSE.txt. | ||
| * | ||
| * Contributors: | ||
| * Fabian Schiebel and others | ||
| *****************************************************************************/ | ||
|
|
||
| #ifndef PHASAR_DATAFLOW_IFDSIDE_SOLVER_ESGEDGEKIND_H | ||
| #define PHASAR_DATAFLOW_IFDSIDE_SOLVER_ESGEDGEKIND_H | ||
|
|
||
| namespace psr { | ||
| enum class ESGEdgeKind { Normal, Call, CallToRet, SkipUnknownFn, Ret, Summary }; | ||
|
|
||
| constexpr bool isInterProc(ESGEdgeKind Kind) noexcept { | ||
| return Kind == ESGEdgeKind::Call || Kind == ESGEdgeKind::Ret; | ||
| } | ||
|
|
||
| } // namespace psr | ||
|
|
||
| #endif // PHASAR_DATAFLOW_IFDSIDE_SOLVER_ESGEDGEKIND_H |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
69 changes: 69 additions & 0 deletions
69
include/phasar/DataFlow/IfdsIde/Solver/PathAwareIDESolver.h
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,69 @@ | ||
| /****************************************************************************** | ||
| * Copyright (c) 2022 Philipp Schubert. | ||
| * All rights reserved. This program and the accompanying materials are made | ||
| * available under the terms of LICENSE.txt. | ||
| * | ||
| * Contributors: | ||
| * Fabian Schiebel and others | ||
| *****************************************************************************/ | ||
|
|
||
| #ifndef PHASAR_DATAFLOW_IFDSIDE_SOLVER_PATHAWAREIDESOLVER_H | ||
| #define PHASAR_DATAFLOW_IFDSIDE_SOLVER_PATHAWAREIDESOLVER_H | ||
|
|
||
| #include "phasar/DataFlow/IfdsIde/IDETabulationProblem.h" | ||
| #include "phasar/DataFlow/IfdsIde/Solver/ESGEdgeKind.h" | ||
| #include "phasar/DataFlow/IfdsIde/Solver/IDESolver.h" | ||
| #include "phasar/DataFlow/PathSensitivity/ExplodedSuperGraph.h" | ||
| #include "phasar/Utils/Logger.h" | ||
|
|
||
| namespace psr { | ||
| template <typename AnalysisDomainTy, | ||
| typename Container = std::set<typename AnalysisDomainTy::d_t>> | ||
| class PathAwareIDESolver : public IDESolver<AnalysisDomainTy, Container> { | ||
| using base_t = IDESolver<AnalysisDomainTy, Container>; | ||
|
|
||
| public: | ||
| using domain_t = AnalysisDomainTy; | ||
| using n_t = typename base_t::n_t; | ||
| using d_t = typename base_t::d_t; | ||
| using i_t = typename base_t::i_t; | ||
| using container_type = typename base_t::container_type; | ||
|
|
||
| explicit PathAwareIDESolver( | ||
| IDETabulationProblem<domain_t, container_type> &Problem, const i_t *ICF) | ||
| : base_t(Problem, ICF), ESG(Problem.getZeroValue()) { | ||
|
|
||
| if (Problem.getIFDSIDESolverConfig().autoAddZero()) { | ||
| PHASAR_LOG_LEVEL( | ||
| WARNING, | ||
| "The PathAwareIDESolver is initialized with the option 'autoAddZero' " | ||
| "being set. This might degrade the quality of the computed paths!"); | ||
| } | ||
| } | ||
|
|
||
| [[nodiscard]] const ExplodedSuperGraph<domain_t> & | ||
| getExplicitESG() const &noexcept { | ||
| return ESG; | ||
| } | ||
|
|
||
| [[nodiscard]] ExplodedSuperGraph<domain_t> &&getExplicitESG() &&noexcept { | ||
| return std::move(ESG); | ||
| } | ||
|
|
||
| private: | ||
| void saveEdges(n_t Curr, n_t Succ, d_t CurrNode, | ||
| const container_type &SuccNodes, ESGEdgeKind Kind) override { | ||
| ESG.saveEdges(std::move(Curr), std::move(CurrNode), std::move(Succ), | ||
| SuccNodes, Kind); | ||
| } | ||
|
|
||
| ExplodedSuperGraph<domain_t> ESG; | ||
| }; | ||
|
|
||
| template <typename ProblemTy> | ||
| PathAwareIDESolver(ProblemTy &) | ||
| -> PathAwareIDESolver<typename ProblemTy::ProblemAnalysisDomain>; | ||
|
|
||
| } // namespace psr | ||
|
|
||
| #endif // PHASAR_DATAFLOW_IFDSIDE_SOLVER_PATHAWAREIDESOLVER_H |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.