retdec
Public Member Functions | Static Public Member Functions | Private Member Functions | List of all members
retdec::bin2llvmir::ReachableFuncsAnalysis Class Reference

Analysis for finding out which defined functions are directly and indirectly reachable from some function. More...

#include <reachable_funcs_analysis.h>

Public Member Functions

std::string getName () const
 

Static Public Member Functions

static std::set< llvm::Function * > getReachableDefinedFuncsFor (llvm::Function &func, llvm::Module &module, llvm::CallGraph &callGraph)
 Returns defined functions that are reachable directly and indirectly from function func. More...
 
static std::set< llvm::Function * > getGloballyReachableFuncsFor (llvm::Module &module)
 Returns functions that are referenced from global variables, such as virtual function tables. More...
 

Private Member Functions

std::set< llvm::Function * > getDirectlyReachableDefinedFuncsFor (const std::set< llvm::Function * > &funcs, llvm::CallGraph &callGraph) const
 Returns defined functions that are directly reachable from funcs. More...
 
std::set< llvm::Function * > getDirectlyReachableDefinedFuncsFor (llvm::CallGraphNode &reachableFrom) const
 Returns defined functions that are directly reachable from function in reachableFrom. More...
 
std::set< llvm::Function * > getIndirectlyReachableDefinedFuncsFor (const std::set< llvm::Function * > &funcs, llvm::Module &module) const
 Returns indirectly reachable functions from funcs that are in module. More...
 

Detailed Description

Analysis for finding out which defined functions are directly and indirectly reachable from some function.

Member Function Documentation

◆ getDirectlyReachableDefinedFuncsFor() [1/2]

std::set< llvm::Function * > retdec::bin2llvmir::ReachableFuncsAnalysis::getDirectlyReachableDefinedFuncsFor ( const std::set< llvm::Function * > &  funcs,
llvm::CallGraph &  callGraph 
) const
private

Returns defined functions that are directly reachable from funcs.

Parameters
[in]funcsWe are finding defined functions that are reachable from this functions.
[in]callGraphWe are finding in this call graph.

◆ getDirectlyReachableDefinedFuncsFor() [2/2]

std::set< llvm::Function * > retdec::bin2llvmir::ReachableFuncsAnalysis::getDirectlyReachableDefinedFuncsFor ( llvm::CallGraphNode &  reachableFrom) const
private

Returns defined functions that are directly reachable from function in reachableFrom.

◆ getGloballyReachableFuncsFor()

std::set< llvm::Function * > retdec::bin2llvmir::ReachableFuncsAnalysis::getGloballyReachableFuncsFor ( llvm::Module &  module)
static

Returns functions that are referenced from global variables, such as virtual function tables.

Parameters
[in]moduleWe are considering only globals and functions in this module.

◆ getIndirectlyReachableDefinedFuncsFor()

std::set< llvm::Function * > retdec::bin2llvmir::ReachableFuncsAnalysis::getIndirectlyReachableDefinedFuncsFor ( const std::set< llvm::Function * > &  funcs,
llvm::Module &  module 
) const
private

Returns indirectly reachable functions from funcs that are in module.

◆ getName()

std::string retdec::bin2llvmir::ReachableFuncsAnalysis::getName ( ) const
inline

◆ getReachableDefinedFuncsFor()

std::set< llvm::Function * > retdec::bin2llvmir::ReachableFuncsAnalysis::getReachableDefinedFuncsFor ( llvm::Function &  func,
llvm::Module &  module,
llvm::CallGraph &  callGraph 
)
static

Returns defined functions that are reachable directly and indirectly from function func.

Parameters
[in]funcWe are finding defined functions that are reachable from this function.
[in]moduleWe are considering only functions in this module.
[in]callGraphWe are finding in this call graph.

The documentation for this class was generated from the following files: