Skip to content

Commit 06053ff

Browse files
committed
[MIPS] Use gnuv2_demangle for better demangling
1 parent e2c7034 commit 06053ff

File tree

3 files changed

+16
-3
lines changed

3 files changed

+16
-3
lines changed

Cargo.lock

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

objdiff-core/Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ mips = [
9191
"dep:cpp_demangle",
9292
"dep:cwdemangle",
9393
"dep:rabbitizer",
94+
"dep:gnuv2_demangle",
9495
]
9596
ppc = [
9697
"any-arch",
@@ -157,6 +158,7 @@ rlwinmdec = { version = "1.1", optional = true }
157158

158159
# mips
159160
rabbitizer = { version = "2.0.0-alpha.4", default-features = false, features = ["all_extensions"], optional = true }
161+
gnuv2_demangle ={ version = "0.1.0", optional = true }
160162

161163
# x86
162164
cpp_demangle = { version = "0.4", default-features = false, features = ["alloc"], optional = true }

objdiff-core/src/arch/mips.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -305,10 +305,14 @@ impl Arch for ArchMips {
305305
}
306306

307307
fn demangle(&self, name: &str) -> Option<String> {
308-
cpp_demangle::Symbol::new(name)
308+
gnuv2_demangle::demangle(name, &gnuv2_demangle::DemangleConfig::new_no_cfilt_mimics())
309309
.ok()
310-
.and_then(|s| s.demangle(&cpp_demangle::DemangleOptions::default()).ok())
311-
.or_else(|| cwdemangle::demangle(name, &cwdemangle::DemangleOptions::default()))
310+
.or_else(|| {
311+
cpp_demangle::Symbol::new(name)
312+
.ok()
313+
.and_then(|s| s.demangle(&cpp_demangle::DemangleOptions::default()).ok())
314+
.or_else(|| cwdemangle::demangle(name, &cwdemangle::DemangleOptions::default()))
315+
})
312316
}
313317

314318
fn reloc_name(&self, flags: RelocationFlags) -> Option<&'static str> {

0 commit comments

Comments
 (0)