pub struct SymbolSectionAccessor<'a> { /* private fields */ }
Expand description
A section data accessor intended to symbol tables
For example:
use std::fs::File;
use std::io;
use std::io::{BufReader, Error};
use elfio::Elfio;
fn main() -> io::Result<()> {
let elf_file = File::open("tests/files/hello_32")?;
let mut reader = BufReader::new(elf_file);
let mut elf = Elfio::new();
elf.load(&mut reader)?;
let section = match elf.get_section_by_name(&".symtab") {
Some(s) => s,
None => return Err(Error::new(io::ErrorKind::Other, "section not found")),
};
let symtab = elfio::SymbolSectionAccessor::new(&elf, &*section);
assert_eq!(symtab.get_symbols_num(), 0x44);
// Num: Value Size Type Bind Vis Ndx Name
// 30: 08049588 4 OBJECT LOCAL DEFAULT 23 dtor_idx.5805
let sym = symtab.get_symbol(30).unwrap();
assert_eq!(sym.value, 0x08049588);
assert_eq!(sym.size, 4);
assert_eq!(sym.bind, elfio::constant::STB_LOCAL);
assert_eq!(sym.stype, elfio::constant::STT_OBJECT);
assert_eq!(sym.shndx, 23);
assert_eq!(sym.name, "dtor_idx.5805");
Ok(())
}
Implementations§
Source§impl<'a> SymbolSectionAccessor<'a>
impl<'a> SymbolSectionAccessor<'a>
Sourcepub fn new(
elfio: &'a Elfio,
section: &'a dyn ElfSectionTrait,
) -> SymbolSectionAccessor<'a>
pub fn new( elfio: &'a Elfio, section: &'a dyn ElfSectionTrait, ) -> SymbolSectionAccessor<'a>
Creates a new instance of the symbol table accessor
Sourcepub fn get_symbols_num(&self) -> ElfXword
pub fn get_symbols_num(&self) -> ElfXword
Returns number of symbols
Sourcepub fn get_symbol(&self, index: ElfXword) -> Option<Symbol>
pub fn get_symbol(&self, index: ElfXword) -> Option<Symbol>
Get a symbol by its index
Auto Trait Implementations§
impl<'a> Freeze for SymbolSectionAccessor<'a>
impl<'a> !RefUnwindSafe for SymbolSectionAccessor<'a>
impl<'a> !Send for SymbolSectionAccessor<'a>
impl<'a> !Sync for SymbolSectionAccessor<'a>
impl<'a> Unpin for SymbolSectionAccessor<'a>
impl<'a> !UnwindSafe for SymbolSectionAccessor<'a>
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