1 #ifndef ROSE_Partitioner2_ModulesLinux_H
2 #define ROSE_Partitioner2_ModulesLinux_H
4 #include <featureTests.h>
5 #ifdef ROSE_ENABLE_BINARY_ANALYSIS
6 #include <Partitioner2/Modules.h>
8 #include <BinarySystemCall.h>
9 #include <BaseSemanticsDispatcher.h>
13 namespace Partitioner2 {
16 namespace ModulesLinux {
49 virtual bool operator()(
bool chain,
const Args&) ROSE_OVERRIDE;
57 readStack(const
Partitioner &partitioner, const InstructionSemantics2::
BaseSemantics::DispatcherPtr &cpu,
int byteOffset,
virtual bool operator()(bool chain, const Args &) ROSE_OVERRIDE
Callback method.
Base class for adjusting basic blocks during discovery.
Basic block callback to detect system calls that don't return.
Basic block callback to add "main" address as a function.
virtual bool operator()(bool chain, const Args &) ROSE_OVERRIDE
Callback method.
Sawyer::SharedPointer< LibcStartMain > Ptr
Shared ownership pointer to LibcStartMain callback.
Main namespace for the ROSE library.
SystemCall systemCallAnalyzer(const Partitioner &, const boost::filesystem::path &syscallHeader="")
Create a system call analyzer suitable for this architecture.
static Ptr instance(const Partitioner &, const boost::filesystem::path &syscallHeader="")
Allocating constructor.
Reference-counting intrusive smart pointer.
Analyzes basic blocks to get system call names.
void nameMainFunction(const Partitioner &) const
Give the name "main" to the main function if it has no name yet.
void nameSystemCalls(const Partitioner &, const boost::filesystem::path &syscallHeader="")
Adds comments to system call instructions.
Base classes for instruction semantics.
Describes (part of) a physical CPU register.
static Ptr instance()
Allocating constructor.
Arguments passed to the callback.
Partitions instructions into basic blocks and functions.