Module Iplt
Intermediate PLT (Procedure Linkage Table) for the dissector.
The intermediate PLT provides local PLT entries that are within range of PC-relative call/jump instructions from the code in a partition. Each entry contains a jump instruction through the corresponding IGOT entry.
Each PLT entry is 8 bytes:
- ff 25 XX XX XX XX : jmp
rip + displacement(6 bytes)
- 90 90 : 2-byte nop padding (two single-byte nops)
The 4-byte displacement at offset +2 is filled by a PC32 relocation pointing to the corresponding IGOT entry.
module Entry : sig ... endAn entry in the intermediate PLT.
build ~prefix ~igot symbols builds an intermediate PLT from a list of symbols that need PLT entries.
Each PLT entry requires a corresponding IGOT entry, which must exist in the provided igot.
val entries : Iplt.t -> Iplt.Entry.t listReturns the list of entries in the IPLT.
val section_data : Iplt.t -> bytesReturns the section data (machine code).
val section_size : Iplt.t -> intReturns the size of the section in bytes.
val find_entry : Iplt.t -> symbol:string -> Iplt.Entry.t optionfind_entry t ~symbol returns the entry for symbol, or None if not found.
iplt_symbol_name ~prefix ~symbol returns the IPLT symbol name for the given original symbol.
module Relocation : sig ... endA relocation for an IPLT entry.
val relocations : Iplt.t -> Iplt.Relocation.t listrelocations t returns the list of R_X86_64_PC32 relocations needed to fill the IPLT entries with displacements to their IGOT entries.