Crate symbolic_demangle
source ·Expand description
Demangling support for various languages and compilers.
Currently supported languages are:
- C++ (GCC-style compilers and MSVC) (
features = ["cpp", "msvc"]
) - Rust (both
legacy
andv0
) (features = ["rust"]
) - Swift (up to Swift 5.3) (
features = ["swift"]
) - ObjC (only symbol detection)
As the demangling schemes for the languages are different, the supported demangling features are inconsistent. For example, argument types were not encoded in legacy Rust mangling and thus not available in demangled names. The demangling results should not be considered stable, and may change over time as more demangling features are added.
This module is part of the symbolic
crate and can be enabled via the demangle
feature.
Examples
use symbolic_common::{Language, Name};
use symbolic_demangle::{Demangle, DemangleOptions};
let name = Name::from("__ZN3std2io4Read11read_to_end17hb85a0f6802e14499E");
assert_eq!(name.detect_language(), Language::Rust);
assert_eq!(
name.try_demangle(DemangleOptions::complete()),
"std::io::Read::read_to_end"
);
Structs
Options for
Demangle::demangle
.Traits
An extension trait on
Name
for demangling names.Functions
Demangles an identifier and falls back to the original symbol.