ROSE  0.11.145.0
ModulesPowerpc.h
1 #ifndef ROSE_BinaryAnalysis_Partitioner2_ModulesPowerpc_H
2 #define ROSE_BinaryAnalysis_Partitioner2_ModulesPowerpc_H
3 #include <featureTests.h>
4 #ifdef ROSE_ENABLE_BINARY_ANALYSIS
5 #include <Rose/BinaryAnalysis/Partitioner2/Modules.h>
6 
7 #include <boost/logic/tribool.hpp>
8 
9 namespace Rose {
10 namespace BinaryAnalysis {
11 namespace Partitioner2 {
12 
14 namespace ModulesPowerpc {
15 
18 protected:
19  FunctionPtr function_;
20 protected:
22 public:
24 
25 public:
26  static Ptr instance();
27  virtual std::vector<FunctionPtr> functions() const override;
28  virtual bool match(const PartitionerConstPtr&, rose_addr_t anchor) override;
29 };
30 
36 matchElfDynamicStub(const PartitionerConstPtr&, const FunctionPtr&, const AddressIntervalSet &pltAddresses);
37 
40 
44 boost::logic::tribool isFunctionReturn(const PartitionerConstPtr&, const BasicBlockPtr&);
45 
46 } // namespace
47 } // namespace
48 } // namespace
49 } // namespace
50 
51 #endif
52 #endif
Sawyer::Optional< rose_addr_t > matchElfDynamicStub(const PartitionerConstPtr &, const FunctionPtr &, const AddressIntervalSet &pltAddresses)
Matches a PowerPC ELF dynamic function stub.
Base class for matching function prologues.
Definition: Modules.h:108
virtual std::vector< FunctionPtr > functions() const override
Returns the function(s) for the previous successful match.
void nameImportThunks(const PartitionerConstPtr &, SgAsmInterpretation *)
Give names to thunks for dynamically linked functions.
Main namespace for the ROSE library.
boost::logic::tribool isFunctionReturn(const PartitionerConstPtr &, const BasicBlockPtr &)
Determines whether basic block is a function return.
virtual bool match(const PartitionerConstPtr &, rose_addr_t anchor) override
Attempt to match an instruction pattern.
Represents an interpretation of a binary container.