diff --git a/README.md b/README.md index 589ef9e..16052c8 100644 --- a/README.md +++ b/README.md @@ -139,6 +139,18 @@ section size addr Total 0x531a ``` +### `strip` + +``` console +$ stat --printf="%s\n" target/release/hello +2120128 + +$ cargo-strip -- target/release/hello + +$ stat --printf="%s\n" target/release/hello +408048 +``` + ## License Licensed under either of diff --git a/ci/script.sh b/ci/script.sh index 17792f1..74a9eed 100644 --- a/ci/script.sh +++ b/ci/script.sh @@ -8,6 +8,7 @@ main() { cargo objdump -v -- -d target/release/cargo-objdump > /dev/null cargo objcopy -v -- -O binary target/release/cargo-objdump objdump.bin > /dev/null cargo size -v -- target/release/cargo-size + cargo strip -v -- target/release/cargo-strip } main diff --git a/src/bin/cargo-strip.rs b/src/bin/cargo-strip.rs new file mode 100644 index 0000000..4a06b43 --- /dev/null +++ b/src/bin/cargo-strip.rs @@ -0,0 +1,10 @@ +extern crate cargo_binutils as cbu; + +use std::process; + +fn main() { + match cbu::run(false, |ctxt| ctxt.strip(), |_ctxt, stdout| stdout.into()) { + Err(e) => eprintln!("error: {}", e), + Ok(ec) => process::exit(ec), + } +} diff --git a/src/lib.rs b/src/lib.rs index 456178e..1668e66 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -163,6 +163,10 @@ impl Context { self.tool("llvm-size") } + pub fn strip(&self) -> Command { + self.tool("llvm-strip") + } + pub fn tool_args(&self) -> &[String] { &self.tool_args }