GTIRB
v2.2.0
GrammaTech Intermediate Representation for Binaries: C++ API
|
Represents a single binary (library or executable). More...
#include <Module.hpp>
Public Member Functions | |
const std::string & | getBinaryPath () const |
Get the location of the corresponding binary on disk. More... | |
gtirb::ByteOrder | getByteOrder () const |
Get the endianness of the instructions in this Module. More... | |
CodeBlock * | getEntryPoint () |
Get the entry point of this module, or null if not present. More... | |
const CodeBlock * | getEntryPoint () const |
Get the entry point of this module, or null if not present. More... | |
gtirb::FileFormat | getFileFormat () const |
Get the format of the binary pointed to by getBinaryPath(). More... | |
IR * | getIR () |
Get the IR this module belongs to. More... | |
const IR * | getIR () const |
Get the IR this module belongs to. More... | |
gtirb::ISA | getISA () const |
Get the ISA of the instructions in this Module. More... | |
const std::string & | getName () const |
Get the module name. More... | |
gtirb::Addr | getPreferredAddr () const |
Get the preferred address for loading this module. More... | |
int64_t | getRebaseDelta () const |
Get the difference between this module's preferred address and the address where it was actually loaded. More... | |
bool | isRelocated () const |
Has the image been loaded somewhere other than its preferred address? More... | |
void | setBinaryPath (const std::string &X) |
Set the location of the corresponding binary on disk. More... | |
void | setByteOrder (gtirb::ByteOrder X) |
Set the endianness of the instructions in this Module. More... | |
void | setEntryPoint (CodeBlock *CB) |
Set the entry point of this module. More... | |
void | setFileFormat (gtirb::FileFormat X) |
Set the format of the binary pointed to by getBinaryPath(). More... | |
void | setISA (gtirb::ISA X) |
Set the ISA of the instructions in this Module. More... | |
void | setName (const std::string &X) |
Set the module name. More... | |
void | setPreferredAddr (gtirb::Addr X) |
Set the preferred address for loading this module. More... | |
void | setRebaseDelta (int64_t X) |
Set the difference between this module's preferred address and the address where it was actually loaded. More... | |
Public Member Functions inherited from gtirb::AuxDataContainer | |
template<typename Schema > | |
void | addAuxData (typename Schema::Type &&X) |
Add a new AuxData, transferring ownership. More... | |
template<typename Schema > | |
Schema::Type * | getAuxData () |
Get a reference to the underlying type stored in the AuxData by name. More... | |
template<typename Schema > | |
const Schema::Type * | getAuxData () const |
Get a reference to the underlying type stored in the AuxData by name. More... | |
template<typename Schema > | |
bool | removeAuxData () |
Remove an AuxData by schema. More... | |
bool | removeAuxData (std::string Name) |
Remove an AuxData by name. More... | |
const_aux_data_iterator | aux_data_begin () const |
Return a constant iterator to the first AuxData. More... | |
const_aux_data_iterator | aux_data_end () const |
Return a constant iterator to the element following the last AuxData. More... | |
const_aux_data_range | aux_data () const |
Return a constant range of the auxiliary data (AuxData). More... | |
size_t | getAuxDataSize () const |
Get the total number of AuxData objects in this IR. More... | |
bool | getAuxDataEmpty () const |
Check: Is the number of AuxData objects in this IR zero? More... | |
void | clearAuxData () |
Clear all AuxData from the IR. More... | |
Public Member Functions inherited from gtirb::Node | |
Node (const Node &)=delete | |
Copying Nodes is explicitly disabled. More... | |
Node (Node &&)=delete | |
Move-constructing Nodes is explicitly disabled. More... | |
~Node () noexcept | |
Cleans up resources no longer needed by the Node object. More... | |
const UUID & | getUUID () const |
Get the Universally Unique ID (UUID) for this . More... | |
Node & | operator= (const Node &)=delete |
Copying Nodes is explicilty disabled. More... | |
Node & | operator= (Node &&)=delete |
Move-assigning Nodes is explicilty disabled. More... | |
Static Public Member Functions | |
static Module * | Create (Context &C, const std::string &Name) |
Create a Module object. More... | |
Static Public Member Functions inherited from gtirb::AuxDataContainer | |
template<typename Schema > | |
static void | registerAuxDataType () |
Register a type to be used with AuxData of the given name. More... | |
Static Public Member Functions inherited from gtirb::Node | |
static Node * | Create (Context &C) |
Create a Node object in its default state. More... | |
static const Node * | getByUUID (const Context &C, const UUID &Uuid) |
Retrieve a node by its UUID. More... | |
static Node * | getByUUID (Context &C, const UUID &Uuid) |
Retrieve a node by its UUID. More... | |
Friends | |
class | Context |
class | IR |
class | SerializationTestHarness |
template<typename T > | |
T::MessageType | toProtobuf (const T &) |
ProxyBlock-Related Public Types and Functions | |
using | proxy_block_iterator = boost::indirect_iterator< ProxyBlockSet::iterator > |
Iterator over proxy_blocks (ProxyBlock). More... | |
using | proxy_block_range = boost::iterator_range< proxy_block_iterator > |
Range of proxy_blocks (ProxyBlock). More... | |
using | const_proxy_block_iterator = boost::indirect_iterator< ProxyBlockSet::const_iterator, const ProxyBlock > |
Constant iterator over proxy_blocks (ProxyBlock). More... | |
using | const_proxy_block_range = boost::iterator_range< const_proxy_block_iterator > |
Constant range of proxy_blocks (ProxyBlock). More... | |
proxy_block_iterator | proxy_blocks_begin () |
Return an iterator to the first ProxyBlock. More... | |
const_proxy_block_iterator | proxy_blocks_begin () const |
Return a constant iterator to the first ProxyBlock. More... | |
proxy_block_iterator | proxy_blocks_end () |
Return an iterator to the element following the last ProxyBlock. More... | |
const_proxy_block_iterator | proxy_blocks_end () const |
Return a constant iterator to the element following the last ProxyBlock. More... | |
proxy_block_range | proxy_blocks () |
Return a range of the proxy_blocks (ProxyBlock). More... | |
const_proxy_block_range | proxy_blocks () const |
Return a constant range of the proxy_blocks (ProxyBlock). More... | |
ChangeStatus | removeProxyBlock (ProxyBlock *B) |
Remove a ProxyBlock object located in this module. More... | |
ChangeStatus | addProxyBlock (ProxyBlock *PB) |
Adds a new ProxyBlock in this module. More... | |
template<typename... Args> | |
ProxyBlock * | addProxyBlock (Context &C, Args &&... A) |
Creates a new ProxyBlock in this module. More... | |
Symbol-Related Public Types and Functions | |
using | symbol_iterator = boost::indirect_iterator< SymbolSet::index< by_pointer >::type::iterator > |
Iterator over symbols (Symbol). More... | |
using | symbol_range = boost::iterator_range< symbol_iterator > |
Range of symbols (Symbol). More... | |
using | const_symbol_iterator = boost::indirect_iterator< SymbolSet::index< by_pointer >::type::const_iterator, const Symbol > |
Constant iterator over symbols (Symbol). More... | |
using | const_symbol_range = boost::iterator_range< const_symbol_iterator > |
Constant range of symbols (Symbol). More... | |
using | symbol_name_iterator = boost::indirect_iterator< SymbolSet::index< by_name >::type::iterator > |
Iterator over symbols (Symbol). More... | |
using | symbol_name_range = boost::iterator_range< symbol_name_iterator > |
Range of symbols (Symbol). More... | |
using | const_symbol_name_iterator = boost::indirect_iterator< SymbolSet::index< by_name >::type::const_iterator, const Symbol > |
Constant iterator over symbols (Symbol). More... | |
using | const_symbol_name_range = boost::iterator_range< const_symbol_name_iterator > |
Constant range of symbols (Symbol). More... | |
using | symbol_addr_iterator = boost::indirect_iterator< SymbolSet::index< by_address >::type::iterator > |
Iterator over symbols (Symbol). More... | |
using | symbol_addr_range = boost::iterator_range< symbol_addr_iterator > |
Range of symbols (Symbol). More... | |
using | const_symbol_addr_iterator = boost::indirect_iterator< SymbolSet::index< by_address >::type::const_iterator, const Symbol > |
Constant iterator over symbols (Symbol). More... | |
using | const_symbol_addr_range = boost::iterator_range< const_symbol_addr_iterator > |
Constant range of symbols (Symbol). More... | |
using | symbol_ref_iterator = boost::indirect_iterator< SymbolSet::index< by_referent >::type::iterator > |
Iterator over symbols (Symbol). More... | |
using | symbol_ref_range = boost::iterator_range< symbol_ref_iterator > |
Range of symbols (Symbol). More... | |
using | const_symbol_ref_iterator = boost::indirect_iterator< SymbolSet::index< by_referent >::type::const_iterator, const Symbol > |
Constant iterator over symbols (Symbol). More... | |
using | const_symbol_ref_range = boost::iterator_range< const_symbol_ref_iterator > |
Constant range of symbols (Symbol). More... | |
symbol_iterator | symbols_begin () |
Return an iterator to the first Symbol. More... | |
const_symbol_iterator | symbols_begin () const |
Return a constant iterator to the first Symbol. More... | |
symbol_iterator | symbols_end () |
Return an iterator to the element following the last Symbol. More... | |
const_symbol_iterator | symbols_end () const |
Return a constant iterator to the element following the last Symbol. More... | |
symbol_range | symbols () |
Return a range of the symbols (Symbol). More... | |
const_symbol_range | symbols () const |
Return a constant range of the symbols (Symbol). More... | |
symbol_name_iterator | symbols_by_name_begin () |
Return an iterator to the first Symbol, ordered by name. More... | |
const_symbol_name_iterator | symbols_by_name_begin () const |
Return a constant iterator to the first Symbol, ordered by name. More... | |
symbol_name_iterator | symbols_by_name_end () |
Return an iterator to the element following the last Symbol, ordered by name. More... | |
const_symbol_name_iterator | symbols_by_name_end () const |
Return a constant iterator to the element following the last Symbol, ordered by name. More... | |
symbol_name_range | symbols_by_name () |
Return a range of the symbols (Symbol), ordered by name. More... | |
const_symbol_name_range | symbols_by_name () const |
Return a constant range of the symbols (Symbol), ordered by name. More... | |
symbol_addr_iterator | symbols_by_addr_begin () |
Return an iterator to the first Symbol, ordered by address. More... | |
const_symbol_addr_iterator | symbols_by_addr_begin () const |
Return a constant iterator to the first Symbol, ordered by address. More... | |
symbol_addr_iterator | symbols_by_addr_end () |
Return an iterator to the element following the last Symbol, ordered by address. More... | |
const_symbol_addr_iterator | symbols_by_addr_end () const |
Return a constant iterator to the element following the last Symbol, ordered by address. More... | |
symbol_addr_range | symbols_by_addr () |
Return a range of the symbols (Symbol), ordered by address. More... | |
const_symbol_addr_range | symbols_by_addr () const |
Return a constant range of the symbols (Symbol), ordered by address. More... | |
bool | removeSymbol (Symbol *S) |
Remove a Symbol object located in this module. More... | |
Symbol * | addSymbol (Symbol *S) |
Move a Symbol object to be located in this module. More... | |
template<typename... Args> | |
Symbol * | addSymbol (Context &C, Args... A) |
Creates a new Symbol in this module. More... | |
symbol_name_range | findSymbols (const std::string &N) |
Find symbols by name. More... | |
const_symbol_name_range | findSymbols (const std::string &N) const |
Find symbols by name. More... | |
symbol_addr_range | findSymbols (Addr X) |
Find symbols by address. More... | |
const_symbol_addr_range | findSymbols (Addr X) const |
Find symbols by address. More... | |
symbol_addr_range | findSymbols (Addr Lower, Addr Upper) |
Find symbols by a range of addresses. More... | |
const_symbol_addr_range | findSymbols (Addr Lower, Addr Upper) const |
Find symbols by a range of addresses. More... | |
symbol_ref_range | findSymbols (const Node &Referent) |
Find symbols by their referent object. More... | |
const_symbol_ref_range | findSymbols (const Node &Referent) const |
Find symbols by their referent object. More... | |
Section-Related Public Types and Functions | |
using | section_iterator = boost::indirect_iterator< SectionSet::iterator > |
Iterator over sections (Section). More... | |
using | section_range = boost::iterator_range< section_iterator > |
Range of sections (Section). More... | |
using | section_subrange = boost::iterator_range< boost::indirect_iterator< SectionIntMap::codomain_type::iterator > > |
Sub-range of sections overlapping an address (Section). More... | |
using | section_name_iterator = boost::indirect_iterator< SectionSet::index< by_name >::type::iterator > |
Iterator over sections (Section). More... | |
using | section_name_range = boost::iterator_range< section_name_iterator > |
Range of sections (Section). More... | |
using | const_section_iterator = boost::indirect_iterator< SectionSet::const_iterator, const Section & > |
Constant iterator over sections (Section). More... | |
using | const_section_range = boost::iterator_range< const_section_iterator > |
Constant range of sections (Section). More... | |
using | const_section_subrange = boost::iterator_range< boost::indirect_iterator< SectionIntMap::codomain_type::const_iterator, const Section & > > |
Sub-range of sections overlapping an address (Section). More... | |
using | const_section_name_iterator = boost::indirect_iterator< SectionSet::index< by_name >::type::const_iterator, const Section & > |
Constant iterator over sections (Section). More... | |
using | const_section_name_range = boost::iterator_range< const_section_name_iterator > |
Constant range of sections (Section). More... | |
section_iterator | sections_begin () |
Return an iterator to the first Section. More... | |
const_section_iterator | sections_begin () const |
Return a constant iterator to the first Section. More... | |
section_name_iterator | sections_by_name_begin () |
Return an iterator to the first Section. More... | |
const_section_name_iterator | sections_by_name_begin () const |
Return a constant iterator to the first Section. More... | |
section_iterator | sections_end () |
Return an iterator to the element following the last Section. More... | |
const_section_iterator | sections_end () const |
Return a constant iterator to the element following the last Section. More... | |
section_name_iterator | sections_by_name_end () |
Return an iterator to the element following the last Section. More... | |
const_section_name_iterator | sections_by_name_end () const |
Return a constant iterator to the element following the last Section. More... | |
section_range | sections () |
Return a range of the sections (Section). More... | |
const_section_range | sections () const |
Return a constant range of the sections (Section). More... | |
ChangeStatus | removeSection (Section *S) |
Remove a Section object located in this module. More... | |
ChangeStatus | addSection (Section *S) |
Move a Section object to be located in this module. More... | |
template<typename... Args> | |
Section * | addSection (Context &C, Args &&... A) |
Creates a new Section in this module. More... | |
section_subrange | findSectionsOn (Addr X) |
Find a Section containing an address. More... | |
const_section_subrange | findSectionsOn (Addr X) const |
Find a Section containing an address. More... | |
section_range | findSectionsAt (Addr A) |
Find all the sections that start at an address. More... | |
section_range | findSectionsAt (Addr Low, Addr High) |
Find all the sections that start between a range of addresses. More... | |
const_section_range | findSectionsAt (Addr A) const |
Find all the sections that start at an address. More... | |
const_section_range | findSectionsAt (Addr Low, Addr High) const |
Find all the sections that start between a range of addresses. More... | |
section_name_range | findSections (const std::string &X) |
Find a Section by name. More... | |
const_section_name_range | findSections (const std::string &X) const |
Find a Section by name. More... | |
ByteInterval-Related Public Types and Functions | |
using | byte_interval_iterator = MergeSortedIterator< Section::byte_interval_iterator, AddressLess > |
Iterator over ByteInterval objects. More... | |
using | byte_interval_range = boost::iterator_range< byte_interval_iterator > |
Range of ByteInterval objects. More... | |
using | byte_interval_subrange = boost::iterator_range< MergeSortedIterator< Section::byte_interval_subrange::iterator, AddressLess > > |
Sub-range of ByteInterval objects overlapping addresses. More... | |
using | const_byte_interval_iterator = MergeSortedIterator< Section::const_byte_interval_iterator, AddressLess > |
Const iterator over ByteInterval objects. More... | |
using | const_byte_interval_range = boost::iterator_range< const_byte_interval_iterator > |
Const range of ByteInterval objects. More... | |
using | const_byte_interval_subrange = boost::iterator_range< MergeSortedIterator< Section::const_byte_interval_subrange::iterator, AddressLess > > |
Sub-range of ByteInterval objects overlapping addresses. More... | |
byte_interval_iterator | byte_intervals_begin () |
Return an iterator to the first ByteInterval. More... | |
byte_interval_iterator | byte_intervals_end () |
Return an iterator to the element following the last ByteInterval. More... | |
byte_interval_range | byte_intervals () |
Return a range of all the ByteInterval objects. More... | |
const_byte_interval_iterator | byte_intervals_begin () const |
Return an iterator to the first ByteInterval. More... | |
const_byte_interval_iterator | byte_intervals_end () const |
Return an iterator to the element following the last ByteInterval. More... | |
const_byte_interval_range | byte_intervals () const |
Return a range of all the ByteInterval objects. More... | |
byte_interval_subrange | findByteIntervalsOn (Addr A) |
Find all the intervals that contain the address specified. More... | |
const_byte_interval_subrange | findByteIntervalsOn (Addr A) const |
Find all the intervals that contain the address specified. More... | |
byte_interval_range | findByteIntervalsAt (Addr A) |
Find all the intervals that start at an address. More... | |
byte_interval_range | findByteIntervalsAt (Addr Low, Addr High) |
Find all the intervals that start between a range of addresses. More... | |
const_byte_interval_range | findByteIntervalsAt (Addr A) const |
Find all the intervals that start at an address. More... | |
const_byte_interval_range | findByteIntervalsAt (Addr Low, Addr High) const |
Find all the intervals that start between a range of addresses. More... | |
Block-Related Public Types and Functions | |
using | block_iterator = MergeSortedIterator< Section::block_iterator, BlockAddressLess > |
Iterator over blocks. More... | |
using | block_range = boost::iterator_range< block_iterator > |
Range of blocks. More... | |
using | block_subrange = boost::iterator_range< MergeSortedIterator< Section::block_subrange::iterator, BlockAddressLess > > |
Sub-range of blocks overlapping an address or range of addreses. More... | |
using | const_block_iterator = MergeSortedIterator< Section::const_block_iterator, BlockAddressLess > |
Iterator over blocks. More... | |
using | const_block_range = boost::iterator_range< const_block_iterator > |
Range of blocks. More... | |
using | const_block_subrange = boost::iterator_range< MergeSortedIterator< Section::const_block_subrange::iterator, BlockAddressLess > > |
Sub-range of blocks overlapping an address or range of addreses. More... | |
block_iterator | blocks_begin () |
Return an iterator to the first block. More... | |
block_iterator | blocks_end () |
Return an iterator to the element following the last block. More... | |
block_range | blocks () |
Return a range of all the blocks. More... | |
const_block_iterator | blocks_begin () const |
Return an iterator to the first block. More... | |
const_block_iterator | blocks_end () const |
Return an iterator to the element following the last block. More... | |
const_block_range | blocks () const |
Return a range of all the blocks. More... | |
block_subrange | findBlocksOn (Addr A) |
Find all the blocks that have bytes that lie within the address specified. More... | |
const_block_subrange | findBlocksOn (Addr A) const |
Find all the blocks that have bytes that lie within the address specified. More... | |
block_range | findBlocksAt (Addr A) |
Find all the blocks that start at an address. More... | |
block_range | findBlocksAt (Addr Low, Addr High) |
Find all the blocks that start between a range of addresses. More... | |
const_block_range | findBlocksAt (Addr A) const |
Find all the blocks that start at an address. More... | |
const_block_range | findBlocksAt (Addr Low, Addr High) const |
Find all the blocks that start between a range of addresses. More... | |
CodeBlock-Related Public Types and Functions | |
using | code_block_iterator = MergeSortedIterator< Section::code_block_iterator, AddressLess > |
Iterator over CodeBlock objects. More... | |
using | code_block_range = boost::iterator_range< code_block_iterator > |
Range of CodeBlock objects. More... | |
using | code_block_subrange = boost::iterator_range< MergeSortedIterator< Section::code_block_subrange::iterator, AddressLess > > |
Sub-range of CodeBlock objects overlapping an address or range of addreses. More... | |
using | const_code_block_iterator = MergeSortedIterator< Section::const_code_block_iterator, AddressLess > |
Iterator over CodeBlock objects. More... | |
using | const_code_block_range = boost::iterator_range< const_code_block_iterator > |
Range of CodeBlock objects. More... | |
using | const_code_block_subrange = boost::iterator_range< MergeSortedIterator< Section::const_code_block_subrange::iterator, AddressLess > > |
Sub-range of CodeBlock objects overlapping an address or range of addreses. More... | |
code_block_iterator | code_blocks_begin () |
Return an iterator to the first CodeBlock. More... | |
code_block_iterator | code_blocks_end () |
Return an iterator to the element following the last CodeBlock. More... | |
code_block_range | code_blocks () |
Return a range of all the CodeBlock objects. More... | |
const_code_block_iterator | code_blocks_begin () const |
Return an iterator to the first CodeBlock. More... | |
const_code_block_iterator | code_blocks_end () const |
Return an iterator to the element following the last CodeBlock. More... | |
const_code_block_range | code_blocks () const |
Return a range of all the CodeBlock objects. More... | |
code_block_subrange | findCodeBlocksOn (Addr A) |
Find all the code blocks that have bytes that lie within the address specified. More... | |
const_code_block_subrange | findCodeBlocksOn (Addr A) const |
Find all the code blocks that have bytes that lie within the address specified. More... | |
code_block_range | findCodeBlocksAt (Addr A) |
Find all the code blocks that start at an address. More... | |
code_block_range | findCodeBlocksAt (Addr Low, Addr High) |
Find all the code blocks that start between a range of addresses. More... | |
const_code_block_range | findCodeBlocksAt (Addr A) const |
Find all the code blocks that start at an address. More... | |
const_code_block_range | findCodeBlocksAt (Addr Low, Addr High) const |
Find all the code blocks that start between a range of addresses. More... | |
DataBlock-Related Public Types and Functions | |
using | data_block_iterator = MergeSortedIterator< Section::data_block_iterator, AddressLess > |
Iterator over DataBlock objects. More... | |
using | data_block_range = boost::iterator_range< data_block_iterator > |
Range of DataBlock objects. More... | |
using | data_block_subrange = boost::iterator_range< MergeSortedIterator< Section::data_block_subrange::iterator, AddressLess > > |
Sub-range of DataBlock objects overlapping an address or range of addreses. More... | |
using | const_data_block_iterator = MergeSortedIterator< Section::const_data_block_iterator, AddressLess > |
Iterator over DataBlock objects. More... | |
using | const_data_block_range = boost::iterator_range< const_data_block_iterator > |
Range of DataBlock objects. More... | |
using | const_data_block_subrange = boost::iterator_range< MergeSortedIterator< Section::const_data_block_subrange::iterator, AddressLess > > |
Sub-range of DataBlock objects overlapping an address or range of addreses. More... | |
data_block_iterator | data_blocks_begin () |
Return an iterator to the first DataBlock. More... | |
data_block_iterator | data_blocks_end () |
Return an iterator to the element following the last DataBlock. More... | |
data_block_range | data_blocks () |
Return a range of all the DataBlock objects. More... | |
const_data_block_iterator | data_blocks_begin () const |
Return an iterator to the first DataBlock. More... | |
const_data_block_iterator | data_blocks_end () const |
Return an iterator to the element following the last DataBlock. More... | |
const_data_block_range | data_blocks () const |
Return a range of all the DataBlock objects. More... | |
data_block_subrange | findDataBlocksOn (Addr A) |
Find all the data blocks that have bytes that lie within the address specified. More... | |
const_data_block_subrange | findDataBlocksOn (Addr A) const |
Find all the data blocks that have bytes that lie within the address specified. More... | |
data_block_range | findDataBlocksAt (Addr A) |
Find all the data blocks that start at an address. More... | |
data_block_range | findDataBlocksAt (Addr Low, Addr High) |
Find all the data blocks that start between a range of addresses. More... | |
const_data_block_range | findDataBlocksAt (Addr A) const |
Find all the data blocks that start at an address. More... | |
const_data_block_range | findDataBlocksAt (Addr Low, Addr High) const |
Find all the data blocks that start between a range of addresses. More... | |
Additional Inherited Members | |
Public Types inherited from gtirb::AuxDataContainer | |
using | const_aux_data_iterator = boost::transform_iterator< AccessRawData, AuxDataSet::const_iterator > |
An iterator type for traversing the AuxData in this container. More... | |
using | const_aux_data_range = boost::iterator_range< const_aux_data_iterator > |
Represents a single binary (library or executable).
using gtirb::Module::block_iterator = MergeSortedIterator<Section::block_iterator, BlockAddressLess> |
Iterator over blocks.
Blocks are yielded in address order, ascending. For more details, see the documentation on iteration order.
using gtirb::Module::block_range = boost::iterator_range<block_iterator> |
Range of blocks.
Blocks are yielded in address order, ascending. For more details, see the documentation on iteration order.
using gtirb::Module::block_subrange = boost::iterator_range< MergeSortedIterator<Section::block_subrange::iterator, BlockAddressLess> > |
Sub-range of blocks overlapping an address or range of addreses.
Blocks are yielded in address order, ascending. For more details, see the documentation on iteration order.
using gtirb::Module::byte_interval_iterator = MergeSortedIterator<Section::byte_interval_iterator, AddressLess> |
Iterator over ByteInterval objects.
using gtirb::Module::byte_interval_range = boost::iterator_range<byte_interval_iterator> |
Range of ByteInterval objects.
using gtirb::Module::byte_interval_subrange = boost::iterator_range<MergeSortedIterator< Section::byte_interval_subrange::iterator, AddressLess> > |
Sub-range of ByteInterval objects overlapping addresses.
using gtirb::Module::code_block_iterator = MergeSortedIterator<Section::code_block_iterator, AddressLess> |
Iterator over CodeBlock objects.
Blocks are yielded in address order, ascending. For more details, see the documentation on iteration order.
using gtirb::Module::code_block_range = boost::iterator_range<code_block_iterator> |
Range of CodeBlock objects.
Blocks are yielded in address order, ascending. For more details, see the documentation on iteration order.
using gtirb::Module::code_block_subrange = boost::iterator_range< MergeSortedIterator<Section::code_block_subrange::iterator, AddressLess> > |
Sub-range of CodeBlock objects overlapping an address or range of addreses.
Blocks are yielded in address order, ascending. For more details, see the documentation on iteration order.
using gtirb::Module::const_block_iterator = MergeSortedIterator<Section::const_block_iterator, BlockAddressLess> |
Iterator over blocks.
Blocks are yielded in address order, ascending. For more details, see the documentation on iteration order.
using gtirb::Module::const_block_range = boost::iterator_range<const_block_iterator> |
Range of blocks.
Blocks are yielded in address order, ascending. For more details, see the documentation on iteration order.
using gtirb::Module::const_block_subrange = boost::iterator_range<MergeSortedIterator< Section::const_block_subrange::iterator, BlockAddressLess> > |
Sub-range of blocks overlapping an address or range of addreses.
Blocks are yielded in address order, ascending.
using gtirb::Module::const_byte_interval_iterator = MergeSortedIterator<Section::const_byte_interval_iterator, AddressLess> |
Const iterator over ByteInterval objects.
using gtirb::Module::const_byte_interval_range = boost::iterator_range<const_byte_interval_iterator> |
Const range of ByteInterval objects.
using gtirb::Module::const_byte_interval_subrange = boost::iterator_range<MergeSortedIterator< Section::const_byte_interval_subrange::iterator, AddressLess> > |
Sub-range of ByteInterval objects overlapping addresses.
using gtirb::Module::const_code_block_iterator = MergeSortedIterator<Section::const_code_block_iterator, AddressLess> |
Iterator over CodeBlock objects.
Blocks are yielded in address order, ascending. For more details, see the documentation on iteration order.
using gtirb::Module::const_code_block_range = boost::iterator_range<const_code_block_iterator> |
Range of CodeBlock objects.
Blocks are yielded in address order, ascending. For more details, see the documentation on iteration order.
using gtirb::Module::const_code_block_subrange = boost::iterator_range<MergeSortedIterator< Section::const_code_block_subrange::iterator, AddressLess> > |
Sub-range of CodeBlock objects overlapping an address or range of addreses.
Blocks are yielded in address order, ascending. For more details, see the documentation on iteration order.
using gtirb::Module::const_data_block_iterator = MergeSortedIterator<Section::const_data_block_iterator, AddressLess> |
Iterator over DataBlock objects.
Blocks are yielded in address order, ascending. For more details, see the documentation on iteration order.
using gtirb::Module::const_data_block_range = boost::iterator_range<const_data_block_iterator> |
Range of DataBlock objects.
Blocks are yielded in address order, ascending. For more details, see the documentation on iteration order.
using gtirb::Module::const_data_block_subrange = boost::iterator_range<MergeSortedIterator< Section::const_data_block_subrange::iterator, AddressLess> > |
Sub-range of DataBlock objects overlapping an address or range of addreses.
Blocks are yielded in address order, ascending. For more details, see the documentation on iteration order.
using gtirb::Module::const_proxy_block_iterator = boost::indirect_iterator<ProxyBlockSet::const_iterator, const ProxyBlock> |
Constant iterator over proxy_blocks (ProxyBlock).
using gtirb::Module::const_proxy_block_range = boost::iterator_range<const_proxy_block_iterator> |
Constant range of proxy_blocks (ProxyBlock).
using gtirb::Module::const_section_iterator = boost::indirect_iterator<SectionSet::const_iterator, const Section&> |
Constant iterator over sections (Section).
Sections are returned in address order. If two Sections start at the same address, the smaller one is returned first. If two Sections have the same address and the same size, their order is not specified.
using gtirb::Module::const_section_name_iterator = boost::indirect_iterator<SectionSet::index<by_name>::type::const_iterator, const Section&> |
Constant iterator over sections (Section).
Sections are returned in name order. If two Sections have the same name, their order is not specified.
using gtirb::Module::const_section_name_range = boost::iterator_range<const_section_name_iterator> |
Constant range of sections (Section).
Sections are returned in name order. If two Sections have the same name, their order is not specified.
using gtirb::Module::const_section_range = boost::iterator_range<const_section_iterator> |
Constant range of sections (Section).
Sections are returned in address order. If two Sections start at the same address, the smaller one is returned first. If two Sections have the same address and the same size, their order is not specified.
using gtirb::Module::const_section_subrange = boost::iterator_range<boost::indirect_iterator< SectionIntMap::codomain_type::const_iterator, const Section&> > |
Sub-range of sections overlapping an address (Section).
using gtirb::Module::const_symbol_addr_iterator = boost::indirect_iterator< SymbolSet::index<by_address>::type::const_iterator, const Symbol> |
Constant iterator over symbols (Symbol).
This iterator returns symbols in address order. If two Symbols have the same address, their order is unspecified.
using gtirb::Module::const_symbol_addr_range = boost::iterator_range<const_symbol_addr_iterator> |
Constant range of symbols (Symbol).
This range returns symbols in address order. If two Symbols have the same address, their order is unspecified.
using gtirb::Module::const_symbol_iterator = boost::indirect_iterator< SymbolSet::index<by_pointer>::type::const_iterator, const Symbol> |
Constant iterator over symbols (Symbol).
This iterator returns symbols in an arbitrary order.
using gtirb::Module::const_symbol_name_iterator = boost::indirect_iterator<SymbolSet::index<by_name>::type::const_iterator, const Symbol> |
Constant iterator over symbols (Symbol).
This iterator returns symbols in name order. If two Symbols have the same name, their order is unspecified.
using gtirb::Module::const_symbol_name_range = boost::iterator_range<const_symbol_name_iterator> |
Constant range of symbols (Symbol).
This range returns symbols in name order. If two Symbols have the same name, their order is unspecified.
using gtirb::Module::const_symbol_range = boost::iterator_range<const_symbol_iterator> |
Constant range of symbols (Symbol).
This range returns symbols in an arbitrary order.
using gtirb::Module::const_symbol_ref_iterator = boost::indirect_iterator< SymbolSet::index<by_referent>::type::const_iterator, const Symbol> |
Constant iterator over symbols (Symbol).
The order in which this iterator returns symbols is not specified.
using gtirb::Module::const_symbol_ref_range = boost::iterator_range<const_symbol_ref_iterator> |
Constant range of symbols (Symbol).
The order of the symbols in this range is not specified.
using gtirb::Module::const_symbolic_expression_iterator = MergeSortedIterator< Section::const_symbolic_expression_iterator, ByteInterval::ConstSymbolicExpressionElement::AddressLess> |
Iterator over SymbolicExpressionElement objects.
Results are yielded in address order, ascending.
using gtirb::Module::const_symbolic_expression_range = boost::iterator_range<const_symbolic_expression_iterator> |
Range of SymbolicExpressionElement objects.
Results are yielded in address order, ascending.
using gtirb::Module::data_block_iterator = MergeSortedIterator<Section::data_block_iterator, AddressLess> |
Iterator over DataBlock objects.
Blocks are yielded in address order, ascending. For more details, see the documentation on iteration order.
using gtirb::Module::data_block_range = boost::iterator_range<data_block_iterator> |
Range of DataBlock objects.
Blocks are yielded in address order, ascending. For more details, see the documentation on iteration order.
using gtirb::Module::data_block_subrange = boost::iterator_range< MergeSortedIterator<Section::data_block_subrange::iterator, AddressLess> > |
Sub-range of DataBlock objects overlapping an address or range of addreses.
Blocks are yielded in address order, ascending. For more details, see the documentation on iteration order.
using gtirb::Module::proxy_block_iterator = boost::indirect_iterator<ProxyBlockSet::iterator> |
Iterator over proxy_blocks (ProxyBlock).
using gtirb::Module::proxy_block_range = boost::iterator_range<proxy_block_iterator> |
Range of proxy_blocks (ProxyBlock).
using gtirb::Module::section_iterator = boost::indirect_iterator<SectionSet::iterator> |
Iterator over sections (Section).
using gtirb::Module::section_name_iterator = boost::indirect_iterator<SectionSet::index<by_name>::type::iterator> |
Iterator over sections (Section).
Sections are returned in name order. If two Sections have the same name, their order is not specified.
using gtirb::Module::section_name_range = boost::iterator_range<section_name_iterator> |
Range of sections (Section).
Sections are returned in name order. If two Sections have the same name, their order is not specified.
using gtirb::Module::section_range = boost::iterator_range<section_iterator> |
Range of sections (Section).
using gtirb::Module::section_subrange = boost::iterator_range< boost::indirect_iterator<SectionIntMap::codomain_type::iterator> > |
Sub-range of sections overlapping an address (Section).
using gtirb::Module::symbol_addr_iterator = boost::indirect_iterator<SymbolSet::index<by_address>::type::iterator> |
Iterator over symbols (Symbol).
This iterator returns symbols in address order. If two Symbols have the same address, their order is unspecified.
using gtirb::Module::symbol_addr_range = boost::iterator_range<symbol_addr_iterator> |
Range of symbols (Symbol).
This range returns symbols in address order. If two Symbols have the same address, their order is unspecified.
using gtirb::Module::symbol_iterator = boost::indirect_iterator<SymbolSet::index<by_pointer>::type::iterator> |
Iterator over symbols (Symbol).
This iterator returns symbols in an arbitrary order.
using gtirb::Module::symbol_name_iterator = boost::indirect_iterator<SymbolSet::index<by_name>::type::iterator> |
Iterator over symbols (Symbol).
This iterator returns symbols in name order. If two Symbols have the same name, their order is unspecified.
using gtirb::Module::symbol_name_range = boost::iterator_range<symbol_name_iterator> |
Range of symbols (Symbol).
This range returns symbols in name order. If two Symbols have the same name, their order is unspecified.
using gtirb::Module::symbol_range = boost::iterator_range<symbol_iterator> |
Range of symbols (Symbol).
This range returns symbols in an arbitrary order.
using gtirb::Module::symbol_ref_iterator = boost::indirect_iterator<SymbolSet::index<by_referent>::type::iterator> |
Iterator over symbols (Symbol).
The order in which this iterator returns symbols is not specified.
using gtirb::Module::symbol_ref_range = boost::iterator_range<symbol_ref_iterator> |
Range of symbols (Symbol).
The order of the symbols in this range is not specified.
using gtirb::Module::symbolic_expression_iterator = MergeSortedIterator<Section::symbolic_expression_iterator, ByteInterval::SymbolicExpressionElement::AddressLess> |
Iterator over SymbolicExpressionElement objects.
Results are yielded in address order, ascending.
using gtirb::Module::symbolic_expression_range = boost::iterator_range<symbolic_expression_iterator> |
Range of SymbolicExpressionElement objects.
Results are yielded in address order, ascending.
|
inline |
Creates a new ProxyBlock in this module.
Args | The arguments to construct a ProxyBlock. |
C | The Context in which this object will be held. |
A | The arguments to construct a ProxyBlock. |
ChangeStatus gtirb::Module::addProxyBlock | ( | ProxyBlock * | PB | ) |
Adds a new ProxyBlock in this module.
PB | The ProxyBlock object to add. |
Accepted
), was unnecessary because this node already contained the ProxyBlock (NoChange
), or could not be completed (Rejected
). ChangeStatus gtirb::Module::addSection | ( | Section * | S | ) |
|
inline |
Return a range of all the blocks.
|
inline |
Return a range of all the blocks.
|
inline |
Return an iterator to the first block.
|
inline |
Return an iterator to the first block.
|
inline |
Return an iterator to the element following the last block.
|
inline |
Return an iterator to the element following the last block.
|
inline |
Return a range of all the ByteInterval objects.
|
inline |
Return a range of all the ByteInterval objects.
|
inline |
Return an iterator to the first ByteInterval.
|
inline |
Return an iterator to the first ByteInterval.
|
inline |
Return an iterator to the element following the last ByteInterval.
|
inline |
Return an iterator to the element following the last ByteInterval.
|
inline |
Return a range of all the CodeBlock objects.
|
inline |
Return a range of all the CodeBlock objects.
|
inline |
Return an iterator to the first CodeBlock.
|
inline |
Return an iterator to the first CodeBlock.
|
inline |
Return an iterator to the element following the last CodeBlock.
|
inline |
Return an iterator to the element following the last CodeBlock.
|
inline |
Return a range of all the DataBlock objects.
|
inline |
Return a range of all the DataBlock objects.
|
inline |
Return an iterator to the first DataBlock.
|
inline |
Return an iterator to the first DataBlock.
|
inline |
Return an iterator to the element following the last DataBlock.
|
inline |
Return an iterator to the element following the last DataBlock.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Find all the intervals that start at an address.
A | The address to look up. |
A
.
|
inline |
Find all the intervals that start at an address.
A | The address to look up. |
A
.
|
inline |
Find all the intervals that start between a range of addresses.
Low | The low address, inclusive. |
High | The high address, exclusive. |
|
inline |
Find all the intervals that start between a range of addresses.
Low | The low address, inclusive. |
High | The high address, exclusive. |
|
inline |
Find all the intervals that contain the address specified.
A | The address to look up. |
A
.
|
inline |
Find all the intervals that contain the address specified.
A | The address to look up. |
A
.
|
inline |
Find all the code blocks that start at an address.
A | The address to look up. |
A
.
|
inline |
Find all the code blocks that start at an address.
A | The address to look up. |
A
.
|
inline |
Find all the code blocks that start between a range of addresses.
Low | The low address, inclusive. |
High | The high address, exclusive. |
|
inline |
Find all the code blocks that start between a range of addresses.
Low | The low address, inclusive. |
High | The high address, exclusive. |
|
inline |
Find all the code blocks that have bytes that lie within the address specified.
A | The address to look up. |
A
.
|
inline |
Find all the code blocks that have bytes that lie within the address specified.
A | The address to look up. |
A
.
|
inline |
Find all the data blocks that start at an address.
A | The address to look up. |
A
.
|
inline |
Find all the data blocks that start at an address.
A | The address to look up. |
A
.
|
inline |
Find all the data blocks that start between a range of addresses.
Low | The low address, inclusive. |
High | The high address, exclusive. |
|
inline |
Find all the data blocks that start between a range of addresses.
Low | The low address, inclusive. |
High | The high address, exclusive. |
|
inline |
Find all the data blocks that have bytes that lie within the address specified.
A | The address to look up. |
A
.
|
inline |
Find all the data blocks that have bytes that lie within the address specified.
A | The address to look up. |
A
.
|
inline |
|
inline |
|
inline |
Find all the sections that start at an address.
A | The address to look up. |
A
.
|
inline |
Find all the sections that start at an address.
A | The address to look up. |
A
.
|
inline |
Find all the sections that start between a range of addresses.
Low | The low address, inclusive. |
High | The high address, exclusive. |
|
inline |
Find all the sections that start between a range of addresses.
Low | The low address, inclusive. |
High | The high address, exclusive. |
|
inline |
Find a Section containing an address.
X | The address to look up. |
|
inline |
Find a Section containing an address.
X | The address to look up. |
|
inline |
Find all the symbolic expressions that start at an address.
A | The address to look up. |
A
.
|
inline |
Find all the symbolic expressions that start at an address.
A | The address to look up. |
A
.
|
inline |
Find all the symbolic expressions that start between a range of addresses.
Low | The low address, inclusive. |
High | The high address, exclusive. |
|
inline |
Find all the symbolic expressions that start between a range of addresses.
Low | The low address, inclusive. |
High | The high address, exclusive. |
|
inline |
Find symbols by a range of addresses.
Lower | The lower-bounded address to look up. |
Upper | The upper-bounded address to look up. |
|
inline |
Find symbols by a range of addresses.
Lower | The lower-bounded address to look up. |
Upper | The upper-bounded address to look up. |
|
inline |
Find symbols by address.
X | The address to look up. |
|
inline |
Find symbols by address.
X | The address to look up. |
|
inline |
Find symbols by their referent object.
Referent | The object the symbol refers to. |
|
inline |
Find symbols by their referent object.
Referent | The object the symbol refers to. |
|
inline |
Find symbols by name.
N | The name to look up. |
|
inline |
Find symbols by name.
N | The name to look up. |
|
inline |
Get the location of the corresponding binary on disk.
|
inline |
Get the endianness of the instructions in this Module.
|
inline |
Get the entry point of this module, or null if not present.
|
inline |
Get the entry point of this module, or null if not present.
|
inline |
Get the format of the binary pointed to by getBinaryPath().
this
, as a gtirb::FileFormat enumerator.
|
inline |
Get the ISA of the instructions in this Module.
|
inline |
Get the module name.
|
inline |
Get the preferred address for loading this module.
|
inline |
Get the difference between this module's preferred address and the address where it was actually loaded.
|
inline |
Has the image been loaded somewhere other than its preferred address?
true
if the loaded image has been relocated, false
otherwise.
|
inline |
Return a range of the proxy_blocks (ProxyBlock).
|
inline |
Return a constant range of the proxy_blocks (ProxyBlock).
|
inline |
Return an iterator to the first ProxyBlock.
|
inline |
Return a constant iterator to the first ProxyBlock.
|
inline |
Return an iterator to the element following the last ProxyBlock.
|
inline |
Return a constant iterator to the element following the last ProxyBlock.
ChangeStatus gtirb::Module::removeProxyBlock | ( | ProxyBlock * | B | ) |
Remove a ProxyBlock object located in this module.
B | The ProxyBlock object to remove. |
Accepted
), made no change (NoChange
), or could not be completed (Rejected
). In particular, if the node to remove is not actually part of this node to begin with, the result will be NoChange
. ChangeStatus gtirb::Module::removeSection | ( | Section * | S | ) |
Remove a Section object located in this module.
S | The Section object to remove. |
Accepted
), made no change (NoChange
), or could not be completed (Rejected
). In particular, if the node to remove is not actually part of this node to begin with, the result will be NoChange
.
|
inline |
|
inline |
Return a range of the sections (Section).
|
inline |
Return a constant range of the sections (Section).
|
inline |
Return an iterator to the first Section.
|
inline |
Return a constant iterator to the first Section.
|
inline |
Return an iterator to the first Section.
|
inline |
Return a constant iterator to the first Section.
|
inline |
Return an iterator to the element following the last Section.
|
inline |
Return a constant iterator to the element following the last Section.
|
inline |
Return an iterator to the element following the last Section.
|
inline |
Return a constant iterator to the element following the last Section.
|
inline |
Set the location of the corresponding binary on disk.
This is for informational purposes only and will not be used to open the image, so it does not need to be the path of an existing file.
X | The path name to use. |
|
inline |
Set the endianness of the instructions in this Module.
X | The endianness to set. |
|
inline |
Set the entry point of this module.
CB | The entry point of this module, or null if not present. |
|
inline |
Set the format of the binary pointed to by getBinaryPath().
X | The format of the binary associated with this , as a gtirb::FileFormat enumerator. |
|
inline |
Set the ISA of the instructions in this Module.
X | The ISA ID to set. |
|
inline |
Set the module name.
|
inline |
Set the preferred address for loading this module.
X | The address to use. |
|
inline |
Set the difference between this module's preferred address and the address where it was actually loaded.
X | The rebase delta. |
|
inline |
Return a range of all the SymbolicExpression objects.
|
inline |
Return a range of all the SymbolicExpression objects.
|
inline |
Return an iterator to the first SymbolicExpression.
|
inline |
Return an iterator to the first SymbolicExpression.
|
inline |
Return an iterator to the element following the last SymbolicExpression.
|
inline |
Return an iterator to the element following the last SymbolicExpression.
|
inline |
Return a range of the symbols (Symbol).
|
inline |
Return a constant range of the symbols (Symbol).
|
inline |
Return an iterator to the first Symbol.
|
inline |
Return a constant iterator to the first Symbol.
|
inline |
Return a range of the symbols (Symbol), ordered by address.
|
inline |
Return a constant range of the symbols (Symbol), ordered by address.
|
inline |
Return an iterator to the first Symbol, ordered by address.
|
inline |
Return a constant iterator to the first Symbol, ordered by address.
|
inline |
Return an iterator to the element following the last Symbol, ordered by address.
|
inline |
Return a constant iterator to the element following the last Symbol, ordered by address.
|
inline |
Return a range of the symbols (Symbol), ordered by name.
|
inline |
Return a constant range of the symbols (Symbol), ordered by name.
|
inline |
Return an iterator to the first Symbol, ordered by name.
|
inline |
Return a constant iterator to the first Symbol, ordered by name.
|
inline |
Return an iterator to the element following the last Symbol, ordered by name.
|
inline |
Return a constant iterator to the element following the last Symbol, ordered by name.
|
inline |
Return an iterator to the element following the last Symbol.
|
inline |
Return a constant iterator to the element following the last Symbol.
|
friend |
|
friend |
|
friend |
|
friend |