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

public class SymbolTableCommand extends LoadCommand
Represents a symtab_command structure
  • Constructor Details

    • SymbolTableCommand

      public SymbolTableCommand(BinaryReader loadCommandReader, BinaryReader dataReader, MachHeader header) throws IOException
      Creates and parses a new SymbolTableCommand
      Parameters:
      loadCommandReader - A reader that points to the start of the load command
      dataReader - A reader that can read the data that the load command references. Note that this might be in a different underlying provider.
      header - The header 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

      public List<NList> getSymbols()
    • addSymbols

      public void addSymbols(List<NList> list)
      Adds the given List of NLists to this symbol/string table, and adjusts the affected symbol table load command fields appropriately
      Parameters:
      list - The List of NLists to add
    • getSymbolAt

      public NList getSymbolAt(int index)
    • toDataType

      public DataType toDataType() throws DuplicateNameException, IOException
      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 exists
      IOException - if an IO-related error occurs
      See Also:
    • getCommandName

      public String getCommandName()
      Description copied from class: LoadCommand
      Gets the name of this load command
      Specified by:
      getCommandName in class LoadCommand
      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 class LoadCommand
      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 class LoadCommand
      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 this LoadCommand data with data structures and comments. Assumes the program was imported as a Mach-O.
      Overrides:
      markup in class LoadCommand
      Parameters:
      program - The Program to mark up
      header - The Mach-O header
      source - A name that represents where the header came from (could be null)
      monitor - A cancellable task monitor
      log - 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 this LoadCommand with data structures and comments. Assumes the program was imported as a Raw Binary.
      Overrides:
      markupRawBinary in class LoadCommand
      Parameters:
      header - The Mach-O header
      api - A FlatProgramAPI
      baseAddress - The base address of the program
      parentModule - The parent module to create fragments
      monitor - A cancellable task monitor
      log - The log
      See Also: