Package ghidra.app.util.bin.format.elf
Class ElfDynamicTable
java.lang.Object
ghidra.app.util.bin.format.elf.ElfDynamicTable
- All Implemented Interfaces:
ElfFileSection
,StructConverter
If an object file participates in dynamic linking, its program header table
will have an element of type PT_DYNAMIC. This "segment" contains the ".dynamic" section.
A special symbol, _DYNAMIC, labels the section, which contains an array of the
Elf32_Dyn or Elf64_Dyn structures.
All address entries contained within this table should adjusted for pre-linking
using ElfHeader.adjustAddressForPrelink(long)
. If a pre-link adjustment is not applicable,
this adjustment will have no affect.
-
Field Summary
-
Constructor Summary
ConstructorDescriptionElfDynamicTable
(BinaryReader reader, ElfHeader header, long fileOffset, long addrOffset) Construct an ELF Dynamic data table -
Method Summary
Modifier and TypeMethodDescriptionvoid
addDynamic
(ElfDynamic dyn, int index) Adds the new dynamic at the specified index.boolean
containsDynamicValue
(long type) Returns true if the specified dynamic type has a value.boolean
Returns true if the specified dynamic (enum) type has a value.long
Preferred memory address offset where data should be loaded.Returns an array of the dynamics defined this dynamic header.getDynamics
(long type) Returns an array of the dynamics defined this dynamic header with the specified type.getDynamics
(ElfDynamicType type) Returns an array of the dynamics defined this dynamic header with the specified (enum) type.long
getDynamicValue
(long type) Returns the value of the specified dynamic type.long
Returns the value of the specified dynamic (enum) type.int
Size of each structured entry in byteslong
Offset within file where section bytes are specifiedlong
Length of file section in bytesReturns a structure datatype representing the contents of the implementor of this interface.
-
Constructor Details
-
ElfDynamicTable
public ElfDynamicTable(BinaryReader reader, ElfHeader header, long fileOffset, long addrOffset) throws IOException Construct an ELF Dynamic data table- Parameters:
reader
- byte provider reader (reader is not retained and position is unaffected)header
- elf headerfileOffset
- file offset which will be used to temporarily position readeraddrOffset
- memory address offset- Throws:
IOException
- if IO error occurs during parse
-
-
Method Details
-
addDynamic
Adds the new dynamic at the specified index.- Parameters:
dyn
- the new dynamicindex
- the new index
-
getDynamics
Returns an array of the dynamics defined this dynamic header.- Returns:
- an array of the dynamics defined this dynamic header
-
getDynamics
Returns an array of the dynamics defined this dynamic header with the specified type.- Parameters:
type
- the desired dynamic type, e.g., DT_NEEDED- Returns:
- an array of the dynamics defined this dynamic header
-
getDynamics
Returns an array of the dynamics defined this dynamic header with the specified (enum) type.- Parameters:
type
- the desired dynamic type, e.g., DT_NEEDED- Returns:
- an array of the dynamics defined this dynamic header
-
getDynamicValue
Returns the value of the specified dynamic type.- Parameters:
type
- the dynamic type- Returns:
- the dynamic value
- Throws:
NotFoundException
- if requested value type not found
-
containsDynamicValue
Returns true if the specified dynamic (enum) type has a value.- Parameters:
type
- the dynamic (enum) type- Returns:
- true if dynamic value exists
-
containsDynamicValue
public boolean containsDynamicValue(long type) Returns true if the specified dynamic type has a value.- Parameters:
type
- the dynamic type- Returns:
- true if dynamic value exists
-
getDynamicValue
Returns the value of the specified dynamic (enum) type.- Parameters:
type
- the dynamic (enum) type- Returns:
- the dynamic value
- Throws:
NotFoundException
- if requested value type not found
-
getFileOffset
public long getFileOffset()Description copied from interface:ElfFileSection
Offset within file where section bytes are specified- Specified by:
getFileOffset
in interfaceElfFileSection
- Returns:
- offset within file where section bytes are specified
-
getAddressOffset
public long getAddressOffset()Description copied from interface:ElfFileSection
Preferred memory address offset where data should be loaded. The returned offset will already have the prelink adjustment applied, although will not reflect any change in the image base.- Specified by:
getAddressOffset
in interfaceElfFileSection
- Returns:
- default memory address offset where data should be loaded
-
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.
- Specified by:
toDataType
in interfaceStructConverter
- 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:
-
getLength
public long getLength()Description copied from interface:ElfFileSection
Length of file section in bytes- Specified by:
getLength
in interfaceElfFileSection
- Returns:
- length of file section in bytes
-
getEntrySize
public int getEntrySize()Description copied from interface:ElfFileSection
Size of each structured entry in bytes- Specified by:
getEntrySize
in interfaceElfFileSection
- Returns:
- entry size or -1 if variable
-