rustc/vendor/object
2021-10-08 13:53:48 +01:00
..
examples New upstream version 1.55.0+dfsg1 2021-10-08 13:53:48 +01:00
src New upstream version 1.55.0+dfsg1 2021-10-08 13:53:48 +01:00
tests New upstream version 1.54.0+dfsg1 2021-10-05 23:23:53 +01:00
.cargo-checksum.json New upstream version 1.55.0+dfsg1 2021-10-08 13:53:48 +01:00
Cargo.lock New upstream version 1.55.0+dfsg1 2021-10-08 13:53:48 +01:00
Cargo.toml New upstream version 1.55.0+dfsg1 2021-10-08 13:53:48 +01:00
CHANGELOG.md New upstream version 1.55.0+dfsg1 2021-10-08 13:53:48 +01:00
clippy.toml New upstream version 1.54.0+dfsg1 2021-10-05 23:23:53 +01:00
LICENSE-APACHE New upstream version 1.54.0+dfsg1 2021-10-05 23:23:53 +01:00
LICENSE-MIT New upstream version 1.54.0+dfsg1 2021-10-05 23:23:53 +01:00
README.md New upstream version 1.55.0+dfsg1 2021-10-08 13:53:48 +01:00

object

The object crate provides a unified interface to working with object files across platforms. It supports reading object files and executable files, and writing object files.

For reading files, it provides multiple levels of support:

  • raw struct definitions suitable for zero copy access
  • low level APIs for accessing the raw structs
  • a higher level unified API for accessing common features of object files, such as sections and symbols

Supported file formats: ELF, Mach-O, Windows PE/COFF, Wasm, and Unix archive.

Example for unified read API

use object::{Object, ObjectSection};
use std::error::Error;
use std::fs;

/// Reads a file and displays the content of the ".boot" section.
fn main() -> Result<(), Box<dyn Error>> {
  let bin_data = fs::read("./multiboot2-binary.elf")?;
  let obj_file = object::File::parse(&*bin_data)?;
  if let Some(section) = obj_file.section_by_name(".boot") {
    println!("{:#x?}", section.data()?);
  } else {
    eprintln!("section not available");
  }
  Ok(())
}

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.