Skip to content
/ elf_rs Public
forked from vincenthouyi/elf_rs

A no_std lib for elf fille loading

License

Notifications You must be signed in to change notification settings

erikjv/elf_rs

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

elf_rs Build Status

This is a no_std library for ELF file handling. It supports ELF32 and ELF64 format.

Usage

To read an elf file, supply elf_rs::Elf with a &[u8] memory:

extern crate elf_rs;

use std::io::Read;
use std::fs::File;
use std::env;

use elf_rs::*;

fn read_elf(filename: &String) {
    let mut elf_file = File::open(filename).unwrap();
    let mut elf_buf = Vec::<u8>::new();
    elf_file.read_to_end(&mut elf_buf).unwrap();

    let elf = Elf::from_bytes(&elf_buf).unwrap();

    if let Elf::Elf64(e) = elf {
        println!("{:?} header: {:?}", e, e.header());

        for p in e.program_header_iter() {
            println!("{:x?}", p);
        }

        for s in e.section_header_iter() {
            println!("{:x?}", s);
        }

        let s = e.lookup_section(b".text");
        println!("s {:?}", s);
    }
}

Under example directory there is a demo readelf to read an ELF file.

$ cargo run --example readelf <path_to_elf_file>

License

it is distributed under the terms of the MIT license.

Please see LICENSE file for details.

About

A no_std lib for elf fille loading

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 100.0%