ROSE 0.11.145.147
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
9namespace Rose {
10namespace BinaryAnalysis {
11namespace Partitioner2 {
12
14namespace ModulesPowerpc {
15
18protected:
19 FunctionPtr function_;
20protected:
22public:
24
25public:
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
37
40
44boost::logic::tribool isFunctionReturn(const PartitionerConstPtr&, const BasicBlockPtr&);
45
46} // namespace
47} // namespace
48} // namespace
49} // namespace
50
51#endif
52#endif
Base class for matching function prologues.
Definition Modules.h:108
virtual bool match(const PartitionerConstPtr &, rose_addr_t anchor) override
Attempt to match an instruction pattern.
virtual std::vector< FunctionPtr > functions() const override
Returns the function(s) for the previous successful match.
Holds a value or nothing.
Definition Optional.h:56
Represents an interpretation of a binary container.
boost::logic::tribool isFunctionReturn(const PartitionerConstPtr &, const BasicBlockPtr &)
Determines whether basic block is a function return.
void nameImportThunks(const PartitionerConstPtr &, SgAsmInterpretation *)
Give names to thunks for dynamically linked functions.
Sawyer::Optional< rose_addr_t > matchElfDynamicStub(const PartitionerConstPtr &, const FunctionPtr &, const AddressIntervalSet &pltAddresses)
Matches a PowerPC ELF dynamic function stub.
The ROSE library.