secure-software-engineering / phasar

A LLVM-based static analysis framework.
Other
942 stars 142 forks source link

Split LLVMBasedICFG #726

Closed fabianbs96 closed 1 month ago

fabianbs96 commented 6 months ago

The LLVMBasedICFG has too many tasks and is therefore hard to maintain and violates the single responsibility principle.

This PR splits the LLVMBasedICFG into three parts: Callgraph-construction (LLVMBasedCallGraphBuilder), global ctors/dtors handling (GlobalCtorsDtorsModel), and representing the LLVM-based ICFG (LLVMBasedICFG). The current API functions from LLVMBasedICFG are still there for compatibility and convenience.

In addition, the callgraph-construction is enhanced to make use of the Soundness flag that is already passed in, but not used. Also, callgraph-resolvers that do not modify the alias information, can now communicate this information to the callgraph builder in order to reach a faster path in the fixpoint algorithm.