Sha256: f2e83094c790fee1543503a19763c80afbfc35ab3bcf9e273e0efef0646ca181

Contents?: true

Size: 1.93 KB

Versions: 14

Compression:

Stored size: 1.93 KB

Contents

# `object`

The `object` crate provides a unified interface to working with object files
across platforms. It supports reading relocatable object files and executable files,
and writing COFF/ELF/Mach-O/XCOFF relocatable object files and ELF/PE executable 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 ([example](crates/examples/src/readobj/))
* a higher level unified API for accessing common features of object files, such
  as sections and symbols ([example](crates/examples/src/objdump.rs))

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

## Example for unified read API
```rust
use object::{Object, ObjectSection};
use std::error::Error;
use std::fs;

/// Reads a file and displays the name of each section.
fn main() -> Result<(), Box<dyn Error>> {
    let binary_data = fs::read("path/to/binary")?;
    let file = object::File::parse(&*binary_data)?;
    for section in file.sections() {
        println!("{}", section.name()?);
    }
    Ok(())
}
```

See [`crates/examples`](crates/examples) for more examples.

## Minimum Supported Rust Version (MSRV)

Changes to MSRV are considered breaking changes. We are conservative about changing the MSRV,
but sometimes are required to due to dependencies. The MSRV is:

  * 1.60.0 for the `read` feature and its dependencies.
  * 1.65.0 for other features.

## License

Licensed under either of

  * Apache License, Version 2.0 ([`LICENSE-APACHE`](./LICENSE-APACHE) or https://www.apache.org/licenses/LICENSE-2.0)
  * MIT license ([`LICENSE-MIT`](./LICENSE-MIT) or https://opensource.org/licenses/MIT)

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.

Version data entries

14 entries across 11 versions & 1 rubygems

Version Path
wasmtime-23.0.2 ./ext/cargo-vendor/object-0.32.2/README.md
wasmtime-22.0.0 ./ext/cargo-vendor/object-0.32.2/README.md
wasmtime-21.0.1 ./ext/cargo-vendor/object-0.33.0/README.md
wasmtime-21.0.1 ./ext/cargo-vendor/object-0.32.2/README.md
wasmtime-20.0.2 ./ext/cargo-vendor/object-0.32.2/README.md
wasmtime-20.0.2 ./ext/cargo-vendor/object-0.33.0/README.md
wasmtime-20.0.0 ./ext/cargo-vendor/object-0.33.0/README.md
wasmtime-20.0.0 ./ext/cargo-vendor/object-0.32.2/README.md
wasmtime-18.0.3 ./ext/cargo-vendor/object-0.32.2/README.md
wasmtime-17.0.1 ./ext/cargo-vendor/object-0.32.2/README.md
wasmtime-17.0.0 ./ext/cargo-vendor/object-0.32.2/README.md
wasmtime-16.0.0 ./ext/cargo-vendor/object-0.32.2/README.md
wasmtime-15.0.1 ./ext/cargo-vendor/object-0.32.2/README.md
wasmtime-15.0.0 ./ext/cargo-vendor/object-0.32.2/README.md