You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
cargo sym will print every debugging symbol it finds in the first valid binary target in target/<target>/debug. This can be, for example:
a.target/debug (this is used if it doesn't find a special target, like the following)
b. target/x86_64-unknown-linux-musl/debug
cargo sym -C will print every debugging symbol demangled
cargo sym -e will print every exported symbol importable by other binaries
cargo sym -Ce will do -C and -e together :]
cargo sym -d will disassemble your binary, objdump style. experimental
cargo sym -d -C /bin/ls will disassemble the binary ls at /bin/ (actually most distros strip /bin/ls so it actually won't)
cargo sym -Cd --target=aarch64-linux-android will disassemble your crates binary at target/aarch64-linux-android/debug/<crate_name>
cargo sym -C --release -x example will print the symbols from the example binary you compiled in release mode (at target/release/examples/example)
cargo sym -Cd --target=debug -x main will disassemble the example binary main in the regular debug location target/debug/examples/main
Try cargo sym --help for more information!
TODO:
Target selector is not. There are a few fixmes to make it nicer. (easy)
ARM 32-byte printer not completely correct when in thumb mode, should reverse second 8 byte block. (easy)
Need to properly print got, plt, and plt.got and iterate through sections in a more principled manner. (not to easy)
When goblin gets a mach and PE backend (which I keep saying will be soon), update the various backends (tedious, hard, requires knowledge of backend formats)