Skip to content

Commit

Permalink
build/elf: add Builder (#618)
Browse files Browse the repository at this point in the history
The Builder can be created from an existing ELF file, modified,
and then written out again.

Also add the `object-rewrite` crate which provides higher
level operations for modification. Use this to replace
the elfcopy example.
  • Loading branch information
philipc committed Mar 1, 2024
1 parent 3b626af commit 1119a2a
Show file tree
Hide file tree
Showing 45 changed files with 16,706 additions and 1,163 deletions.
10 changes: 7 additions & 3 deletions Cargo.toml
Expand Up @@ -41,6 +41,10 @@ write_core = ["dep:crc32fast", "dep:indexmap", "dep:hashbrown"]
write_std = ["write_core", "std", "indexmap?/std", "crc32fast?/std"]
# Write support for all file formats, including libstd features.
write = ["write_std", "coff", "elf", "macho", "pe", "xcoff"]
# Core builder support. You will need to enable some file formats too.
build_core = ["read_core", "write_core"]
# Builder support for all file formats.
build = ["build_core", "write_std", "elf"]

#=======================================
# Misc features.
Expand Down Expand Up @@ -75,7 +79,7 @@ default = ["read", "compression"]
#=======================================
# Umbrella feature for enabling all user-facing features of this crate. Does not
# enable internal features like `rustc-dep-of-std`.
all = ["read", "write", "std", "compression", "wasm"]
all = ["read", "write", "build", "std", "compression", "wasm"]

# Use of --all-features is not supported.
# This is a dummy feature to detect when --all-features is used.
Expand All @@ -84,7 +88,7 @@ cargo-all = []
#=======================================
# Documentation should be generated with everything in "all" except for "unaligned".
doc = [
"read_core", "write_std",
"read_core", "write_std", "build_core",
"std", "compression",
"archive", "coff", "elf", "macho", "pe", "wasm", "xcoff",
]
Expand All @@ -100,6 +104,6 @@ unstable-all = ["all", "unstable"]
rustc-dep-of-std = ['core', 'compiler_builtins', 'alloc', 'memchr/rustc-dep-of-std']

[workspace]
members = ["crates/examples"]
members = ["crates/*"]
default-members = [".", "crates/examples"]
resolver = "2"
6 changes: 1 addition & 5 deletions crates/examples/Cargo.toml
Expand Up @@ -5,7 +5,7 @@ edition = "2018"

[dependencies]
clap = "4.3.24"
memmap2 = "0.7.1"
memmap2 = "0.9.4"
object = { path = "../..", default-features = false }

[dev-dependencies]
Expand All @@ -28,10 +28,6 @@ required-features = ["object/read_core", "object/archive"]
name = "dyldcachedump"
required-features = ["object/read"]

[[bin]]
name = "elfcopy"
required-features = ["object/read_core", "object/write_core", "object/elf", "object/std"]

[[bin]]
name = "elftoefi"
required-features = ["object/read_core", "object/write_core", "object/elf", "object/pe", "object/std"]
Expand Down

0 comments on commit 1119a2a

Please sign in to comment.