Trait ElfFile

Source
pub trait ElfFile {
    // Required methods
    fn content(&self) -> &[u8];
    fn elf_header(&self) -> ElfHeader<'_>;
    fn program_header_nth(&self, index: usize) -> Option<ProgramHeaderEntry<'_>>;
    fn program_header_iter(&self) -> ProgramHeaderIter<'_> ;
    fn section_header_nth(&self, index: usize) -> Option<SectionHeaderEntry<'_>>;
    fn section_header_iter(&self) -> SectionHeaderIter<'_> ;

    // Provided methods
    fn shstr_section(&self) -> Option<SectionHeaderEntry<'_>> { ... }
    fn lookup_section(&self, name: &[u8]) -> Option<SectionHeaderEntry<'_>> { ... }
    fn entry_point(&self) -> u64 { ... }
}

Required Methods§

Provided Methods§

Source

fn shstr_section(&self) -> Option<SectionHeaderEntry<'_>>

Source

fn lookup_section(&self, name: &[u8]) -> Option<SectionHeaderEntry<'_>>

Examples found in repository?
examples/readelf.rs (line 38)
9fn read_elf(filename: &str) -> Result<(), ()> {
10    let mut elf_file = File::open(filename).map_err(|e| {
11        println!("failed to open file {}: {}", filename, e);
12        ()
13    })?;
14    let mut elf_buf = Vec::<u8>::new();
15
16    elf_file.read_to_end(&mut elf_buf).map_err(|e| {
17        println!("failed to read file {}: {}", filename, e);
18        ()
19    })?;
20
21    let elf = Elf::from_bytes(&mut elf_buf).map_err(|e| {
22        println!("failed to extract elf file {}: {:?}", filename, e);
23        ()
24    })?;
25
26    println!("{:#x?}", elf);
27
28    println!("{:#?}", elf.elf_header());
29
30    for p in elf.program_header_iter() {
31        println!("{:#x?}", p);
32    }
33
34    for s in elf.section_header_iter() {
35        println!("{:#x?}", s);
36    }
37
38    if let Some(s) = elf.lookup_section(b".text") {
39        println!(".test section: {:#x?}", s);
40    }
41
42    Ok(())
43}
Source

fn entry_point(&self) -> u64

Implementors§

Source§

impl<'a> ElfFile for Elf<'a>