Crashpad
|
A reader for symbol tables in Mach-O images mapped into another process. More...
#include "snapshot/mac/mach_o_image_symbol_table_reader.h"
Classes | |
struct | SymbolInformation |
Information about a symbol in a module’s symbol table. More... | |
Public Types | |
using | SymbolInformationMap = std::map< std::string, SymbolInformation > |
Public Member Functions | |
bool | Initialize (ProcessReaderMac *process_reader, const process_types::symtab_command *symtab_command, const process_types::dysymtab_command *dysymtab_command, const MachOImageSegmentReader *linkedit_segment, const std::string &module_info) |
Reads the symbol table from another process. More... | |
const SymbolInformation * | LookUpExternalDefinedSymbol (const std::string &name) const |
Looks up a symbol in the image’s symbol table. More... | |
A reader for symbol tables in Mach-O images mapped into another process.
bool crashpad::MachOImageSymbolTableReader::Initialize | ( | ProcessReaderMac * | process_reader, |
const process_types::symtab_command * | symtab_command, | ||
const process_types::dysymtab_command * | dysymtab_command, | ||
const MachOImageSegmentReader * | linkedit_segment, | ||
const std::string & | module_info | ||
) |
Reads the symbol table from another process.
This method must only be called once on an object. This method must be called successfully before any other method in this class may be called.
[in] | process_reader | The reader for the remote process. |
[in] | symtab_command | The LC_SYMTAB load command that identifies the symbol table. |
[in] | dysymtab_command | The LC_DYSYMTAB load command that identifies dynamic symbol information within the symbol table. This load command is not present in all modules, and this parameter may be nullptr for modules that do not have this information. When present, dysymtab_command is an optimization that allows the symbol table reader to only examine symbol table entries known to be relevant for its purposes. |
[in] | linkedit_segment | The __LINKEDIT segment. This segment should contain the data referenced by symtab_command and dysymtab_command. This may be any segment in the module, but by convention, the name __LINKEDIT is used for this purpose. |
[in] | module_info | A string to be used in logged messages. This string is for diagnostic purposes only, and may be empty. |
true
if the symbol table was read successfully. false
otherwise, with an appropriate message logged. const MachOImageSymbolTableReader::SymbolInformation * crashpad::MachOImageSymbolTableReader::LookUpExternalDefinedSymbol | ( | const std::string & | name | ) | const |
Looks up a symbol in the image’s symbol table.
The returned information captures the symbol as it exists in the image’s symbol table, not adjusted for any “slide.”
[in] | name | The name of the symbol to look up, “mangled” or “decorated” appropriately. For example, use "_main" to look up the symbol for the C main() function, and use "__Z4Funcv" to look up the symbol for the C++ Func() function. |
nullptr
if the symbol was not found or if an error occurred. On error, a warning message will also be logged. The caller does not take ownership; the lifetime of the returned object is scoped to the lifetime of this MachOImageSymbolTableReader object.