Class SymbolTableCommand
java.lang.Object
ghidra.app.util.bin.format.macho.commands.LoadCommand
ghidra.app.util.bin.format.macho.commands.SymbolTableCommand
- All Implemented Interfaces:
StructConverter
Represents a symtab_command structure
-
Field Summary
-
Constructor Summary
ConstructorDescriptionSymbolTableCommand
(BinaryReader loadCommandReader, BinaryReader dataReader, MachHeader header) Creates and parses a newSymbolTableCommand
-
Method Summary
Modifier and TypeMethodDescriptionvoid
addSymbols
(List<NList> list) Gets the name of this load commandint
Gets the file offset of this load command's "linker data".int
Gets the file size of this load command's "linker data".int
An integer indicating the number of entries in the symbol table.int
An integer containing the byte offset from the start of the image to the location of the string table.int
An integer indicating the size (in bytes) of the string table.getSymbolAt
(int index) int
An integer containing the byte offset from the start of the file to the location of the symbol table entries.void
markup
(Program program, MachHeader header, String source, TaskMonitor monitor, MessageLog log) Marks up thisLoadCommand
data with data structures and comments.void
markupRawBinary
(MachHeader header, FlatProgramAPI api, Address baseAddress, ProgramModule parentModule, TaskMonitor monitor, MessageLog log) Marks-up thisLoadCommand
with data structures and comments.Returns a structure datatype representing the contents of the implementor of this interface.Methods inherited from class ghidra.app.util.bin.format.macho.commands.LoadCommand
createFragment, createPlateComment, fileOffsetToAddress, getCommandSize, getCommandType, getContextualName, getStartIndex, markupPlateComment, setEndian, updateMonitor
-
Constructor Details
-
SymbolTableCommand
public SymbolTableCommand(BinaryReader loadCommandReader, BinaryReader dataReader, MachHeader header) throws IOException Creates and parses a newSymbolTableCommand
- Parameters:
loadCommandReader
- Areader
that points to the start of the load commanddataReader
- Areader
that can read the data that the load command references. Note that this might be in a different underlying provider.header
- Theheader
associated with this load command- Throws:
IOException
- if an IO-related error occurs while parsing
-
-
Method Details
-
getSymbolOffset
public int getSymbolOffset()An integer containing the byte offset from the start of the file to the location of the symbol table entries. The symbol table is an array of nlist data structures.- Returns:
- symbol table offset
-
getNumberOfSymbols
public int getNumberOfSymbols()An integer indicating the number of entries in the symbol table.- Returns:
- the number of entries in the symbol table
-
getStringTableOffset
public int getStringTableOffset()An integer containing the byte offset from the start of the image to the location of the string table.- Returns:
- string table offset
-
getStringTableSize
public int getStringTableSize()An integer indicating the size (in bytes) of the string table.- Returns:
- string table size in bytes
-
getSymbols
-
addSymbols
-
getSymbolAt
-
toDataType
Description copied from interface:StructConverter
Returns a structure datatype representing the contents of the implementor of this interface.For example, given:
class A { int foo; double bar; }
The return value should be a structure data type with two data type components; an INT and a DOUBLE. The structure should contain field names and, if possible, field comments.
- Returns:
- returns a structure datatype representing the implementor of this interface
- Throws:
DuplicateNameException
- when a datatype of the same name already existsIOException
- if an IO-related error occurs- See Also:
-
getCommandName
Description copied from class:LoadCommand
Gets the name of this load command- Specified by:
getCommandName
in classLoadCommand
- Returns:
- The name of this load command
-
getLinkerDataOffset
public int getLinkerDataOffset()Description copied from class:LoadCommand
Gets the file offset of this load command's "linker data". Not all load commands with data will have linker data. Linker data typically resides in the __LINKEDIT segment.- Overrides:
getLinkerDataOffset
in classLoadCommand
- Returns:
- The file offset of this load command's "linker data", or 0 if it has no linker data
-
getLinkerDataSize
public int getLinkerDataSize()Description copied from class:LoadCommand
Gets the file size of this load command's "linker data". Not all load commands with data will have linker data. Linker data typically resides in the __LINKEDIT segment.- Overrides:
getLinkerDataSize
in classLoadCommand
- Returns:
- The file size of this load command's "linker data", or 0 if it has no linker data
-
markup
public void markup(Program program, MachHeader header, String source, TaskMonitor monitor, MessageLog log) throws CancelledException Description copied from class:LoadCommand
Marks up thisLoadCommand
data with data structures and comments. Assumes the program was imported as a Mach-O.- Overrides:
markup
in classLoadCommand
- Parameters:
program
- TheProgram
to mark upheader
- The Mach-O headersource
- A name that represents where the header came from (could be null)monitor
- A cancellable task monitorlog
- The log- Throws:
CancelledException
- if the user cancelled the operation
-
markupRawBinary
public void markupRawBinary(MachHeader header, FlatProgramAPI api, Address baseAddress, ProgramModule parentModule, TaskMonitor monitor, MessageLog log) Description copied from class:LoadCommand
Marks-up thisLoadCommand
with data structures and comments. Assumes the program was imported as a Raw Binary.- Overrides:
markupRawBinary
in classLoadCommand
- Parameters:
header
- The Mach-O headerapi
- AFlatProgramAPI
baseAddress
- The base address of the programparentModule
- The parentmodule
to create fragmentsmonitor
- A cancellable task monitorlog
- The log- See Also:
-