pub struct HashTable<'data, Elf: FileHeader> {
buckets: &'data [U32<Elf::Endian>],
chains: &'data [U32<Elf::Endian>],
}
Expand description
A SysV symbol hash table in an ELF file.
Returned by SectionHeader::hash
.
Fields§
§buckets: &'data [U32<Elf::Endian>]
§chains: &'data [U32<Elf::Endian>]
Implementations§
source§impl<'data, Elf: FileHeader> HashTable<'data, Elf>
impl<'data, Elf: FileHeader> HashTable<'data, Elf>
sourcepub fn parse(endian: Elf::Endian, data: &'data [u8]) -> Result<Self>
pub fn parse(endian: Elf::Endian, data: &'data [u8]) -> Result<Self>
Parse a SysV hash table.
data
should be from an elf::SHT_HASH
section, or from a
segment pointed to via the elf::DT_HASH
entry.
The header is read at offset 0 in the given data
.
sourcepub fn symbol_table_length(&self) -> u32
pub fn symbol_table_length(&self) -> u32
Return the symbol table length.
fn bucket(&self, endian: Elf::Endian, hash: u32) -> SymbolIndex
fn chain(&self, endian: Elf::Endian, index: SymbolIndex) -> SymbolIndex
sourcepub fn find<R: ReadRef<'data>>(
&self,
endian: Elf::Endian,
name: &[u8],
hash: u32,
version: Option<&Version<'_>>,
symbols: &SymbolTable<'data, Elf, R>,
versions: &VersionTable<'data, Elf>,
) -> Option<(SymbolIndex, &'data Elf::Sym)>
pub fn find<R: ReadRef<'data>>( &self, endian: Elf::Endian, name: &[u8], hash: u32, version: Option<&Version<'_>>, symbols: &SymbolTable<'data, Elf, R>, versions: &VersionTable<'data, Elf>, ) -> Option<(SymbolIndex, &'data Elf::Sym)>
Use the hash table to find the symbol table entry with the given name, hash and version.
Trait Implementations§
Auto Trait Implementations§
impl<'data, Elf> Freeze for HashTable<'data, Elf>
impl<'data, Elf> RefUnwindSafe for HashTable<'data, Elf>
impl<'data, Elf> Send for HashTable<'data, Elf>
impl<'data, Elf> Sync for HashTable<'data, Elf>
impl<'data, Elf> Unpin for HashTable<'data, Elf>
impl<'data, Elf> UnwindSafe for HashTable<'data, Elf>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more