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

Data Structure Analysis #222

Merged
merged 39 commits into from
Oct 14, 2024
Merged

Data Structure Analysis #222

merged 39 commits into from
Oct 14, 2024

Conversation

sadrabt
Copy link
Contributor

@sadrabt sadrabt commented Jul 1, 2024

  • implement DSA with union find
  • implement points-to visualiser functionality
  • Document tests
  • extend DSAUnionFindSolver from the UnionFindSolver
  • replace tuples with case classes
  • single instance of stack symbolic access for each variable violated by indirect_call and malloc_with_local3
  • bu(proc) in DSA throws no such elemenet exception for tests correct/indirect_call/clang_O2:GTIRB and correct/malloc_with_local3/clang_O2:GTIRB
  • storeExitJump(exitToEntry(exit), d1, d2) throws cast error for correct/syscall/gcc_O2:GTIRB and correct/syscall/clang_O2:GTIRB
  • resolve merge conflicts

includes symbolic access analysis and a reaching definitions analysis that works slightly differently from the one already implemented. (registers changed by a procedure call are defined by the call instruction)

@sadrabt sadrabt requested a review from l-kent July 1, 2024 03:17
@l-kent
Copy link
Contributor

l-kent commented Jul 1, 2024

I'm a bit confused by the commit history here - some of Yousif's commits that are not ready to merge in yet have been included, but then later reverted? Is there a neater way to do things than that?

@sadrabt sadrabt force-pushed the points-to-analysis-alternate-merge branch from 90eec8e to 5cda0e9 Compare July 1, 2024 05:30
@l-kent
Copy link
Contributor

l-kent commented Jul 7, 2024

It'll take some time to get across all the details of this, so detailed comments would really help to make it easier to understand.

One thing that makes the code more difficult to follow at the moment is the widespread use of tuples - is it possible that replacing those with case classes would make sense?

@sadrabt sadrabt force-pushed the points-to-analysis-alternate-merge branch from fbcb303 to fe5b3e7 Compare July 8, 2024 04:52
@sadrabt sadrabt force-pushed the points-to-analysis-alternate-merge branch from fe5b3e7 to f600c66 Compare July 8, 2024 04:53
@sadrabt sadrabt mentioned this pull request Sep 30, 2024
sadrabt and others added 11 commits September 30, 2024 11:51
# Conflicts:
#	src/main/scala/analysis/solvers/IDESolver.scala
#	src/main/scala/translating/ReadELFLoader.scala
#	src/main/scala/util/RunUtils.scala
#	src/test/scala/IndirectCallsTests.scala
#	src/test/scala/IrreducibleLoop.scala
#	src/test/scala/LiveVarsAnalysisTests.scala
#	src/test/scala/PointsToTest.scala
#	src/test/scala/ir/InterpreterTests.scala
… which are difficult to follow at a glance
… newer jumptable2 example, DSA test cleanup
@l-kent l-kent merged commit bb9163c into main Oct 14, 2024
2 checks passed
@l-kent
Copy link
Contributor

l-kent commented Oct 14, 2024

I've merged this and from my testing it seemed to be working fine, but please create issues for any problems that occur.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants