scripts: decode_stacktrace: demangle Rust symbols
[ Upstream commit 99115db4ecc87af73415939439ec604ea0531e6f ] Recent versions of both Binutils (`c++filt`) and LLVM (`llvm-cxxfilt`) provide Rust v0 mangling support. Reviewed-by: Kees Cook <keescook@chromium.org> Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Co-developed-by: Alex Gaynor <alex.gaynor@gmail.com> Signed-off-by: Alex Gaynor <alex.gaynor@gmail.com> Co-developed-by: Wedson Almeida Filho <wedsonaf@google.com> Signed-off-by: Wedson Almeida Filho <wedsonaf@google.com> Signed-off-by: Miguel Ojeda <ojeda@kernel.org> Stable-dep-of: efbd63983533 ("scripts/decode_stacktrace.sh: optionally use LLVM utilities") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
0e4dd3cfb8
commit
92dc47f1b3
1 changed files with 14 additions and 0 deletions
|
@ -9,6 +9,14 @@ if [[ $# < 1 ]]; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Try to find a Rust demangler
|
||||||
|
if type llvm-cxxfilt >/dev/null 2>&1 ; then
|
||||||
|
cppfilt=llvm-cxxfilt
|
||||||
|
elif type c++filt >/dev/null 2>&1 ; then
|
||||||
|
cppfilt=c++filt
|
||||||
|
cppfilt_opts=-i
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ $1 == "-r" ]] ; then
|
if [[ $1 == "-r" ]] ; then
|
||||||
vmlinux=""
|
vmlinux=""
|
||||||
basepath="auto"
|
basepath="auto"
|
||||||
|
@ -157,6 +165,12 @@ parse_symbol() {
|
||||||
# In the case of inlines, move everything to same line
|
# In the case of inlines, move everything to same line
|
||||||
code=${code//$'\n'/' '}
|
code=${code//$'\n'/' '}
|
||||||
|
|
||||||
|
# Demangle if the name looks like a Rust symbol and if
|
||||||
|
# we got a Rust demangler
|
||||||
|
if [[ $name =~ ^_R && $cppfilt != "" ]] ; then
|
||||||
|
name=$("$cppfilt" "$cppfilt_opts" "$name")
|
||||||
|
fi
|
||||||
|
|
||||||
# Replace old address with pretty line numbers
|
# Replace old address with pretty line numbers
|
||||||
symbol="$segment$name ($code)"
|
symbol="$segment$name ($code)"
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue