32 lines
723 B
Sed
Executable file
32 lines
723 B
Sed
Executable file
#!/usr/bin/env -S sed -rf
|
|
# Unmangle Rust symbols
|
|
# See https://git.kernel.org/cgit/linux/kernel/git/tip/tip.git/commit/?id=cae15db74999edb96dd9f5bbd4d55849391dd92b
|
|
# Example, with [FlameGraph](https://github.com/brendangregg/FlameGraph):
|
|
# perf record -g target/debug/bin
|
|
# perf script | stackcollapse-perf | rust-unmangle | flamegraph > perf.svg
|
|
|
|
# Remove hash and address offset
|
|
s/::h[0-9a-f]{16}//g
|
|
s/\+0x[0-9a-f]+//g
|
|
|
|
# Convert special characters
|
|
s/\$C\$/,/g
|
|
s/\$SP\$/@/g
|
|
s/\$BP\$/*/g
|
|
s/\$RF\$/\&/g
|
|
s/\$LT\$/</g
|
|
s/\$GT\$/>/g
|
|
s/\$LP\$/(/g
|
|
s/\$RP\$/)/g
|
|
s/\$u20\$/ /g
|
|
s/\$u27\$/'/g
|
|
s/\$u5b\$/[/g
|
|
s/\$u5d\$/]/g
|
|
s/\$u7b\$/{/g
|
|
s/\$u7d\$/}/g
|
|
s/\$u7e\$/~/g
|
|
|
|
# Fix . and _
|
|
s/\.\./::/g
|
|
s/[^\.]\.[^\.]/./g
|
|
s/([;:])_/\1/g
|