ROSE  0.11.145.0
Public Types | Public Member Functions | Static Public Member Functions | List of all members
Rose::BinaryAnalysis::Partitioner2::ModulesLinux::LibcStartMain Class Reference

Description

Basic block callback to add "main" address as a function.

If the last instruction of a basic block is a call to __libc_start_main in a shared library, then one of its arguments is the address of the C "main" function.

Definition at line 41 of file ModulesLinux.h.

#include <Rose/BinaryAnalysis/Partitioner2/ModulesLinux.h>

Inheritance diagram for Rose::BinaryAnalysis::Partitioner2::ModulesLinux::LibcStartMain:
Inheritance graph
[legend]
Collaboration diagram for Rose::BinaryAnalysis::Partitioner2::ModulesLinux::LibcStartMain:
Collaboration graph
[legend]

Public Types

typedef Sawyer::SharedPointer< LibcStartMainPtr
 Shared ownership pointer to LibcStartMain callback. More...
 
- Public Types inherited from Rose::BinaryAnalysis::Partitioner2::BasicBlockCallback
enum  Termination {
  CONTINUE_DISCOVERY,
  TERMINATE_NOW,
  TERMINATE_PRIOR
}
 Whether to terminate a basic block. More...
 
using Ptr = BasicBlockCallbackPtr
 Shared-ownership pointer to a BasicBlockCallback. More...
 

Public Member Functions

virtual bool operator() (bool chain, const Args &) override
 Callback method. More...
 
void nameMainFunction (const PartitionerConstPtr &) const
 Give the name "main" to the main function if it has no name yet. More...
 
- Public Member Functions inherited from Sawyer::SharedObject
 SharedObject ()
 Default constructor. More...
 
 SharedObject (const SharedObject &)
 Copy constructor. More...
 
virtual ~SharedObject ()
 Virtual destructor. More...
 
SharedObjectoperator= (const SharedObject &)
 Assignment. More...
 

Static Public Member Functions

static Ptr instance ()
 Allocating constructor. More...
 

Member Typedef Documentation

Shared ownership pointer to LibcStartMain callback.

Definition at line 45 of file ModulesLinux.h.

Member Function Documentation

static Ptr Rose::BinaryAnalysis::Partitioner2::ModulesLinux::LibcStartMain::instance ( )
inlinestatic

Allocating constructor.

Definition at line 47 of file ModulesLinux.h.

virtual bool Rose::BinaryAnalysis::Partitioner2::ModulesLinux::LibcStartMain::operator() ( bool  chain,
const Args  
)
overridevirtual

Callback method.

This is the method invoked for the callback. The chain argument is the return value from the previous callback in the list (true for the first callback). The successor callbacks use chain to indicate whether subsequent callbacks should do anything.

Implements Rose::BinaryAnalysis::Partitioner2::BasicBlockCallback.

void Rose::BinaryAnalysis::Partitioner2::ModulesLinux::LibcStartMain::nameMainFunction ( const PartitionerConstPtr ) const

Give the name "main" to the main function if it has no name yet.


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