Skip to content

Commit 6c9f241

Browse files
committed
Address review
1 parent 7e3619e commit 6c9f241

File tree

3 files changed

+13
-9
lines changed

3 files changed

+13
-9
lines changed

objdiff-core/Cargo.toml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -150,19 +150,15 @@ gimli = { git = "https://github.com/gimli-rs/gimli", rev = "7335f00e7c39fd501511
150150
typed-arena = { version = "2.0", default-features = false, optional = true }
151151

152152
# ppc
153-
cwdemangle = { version = "1.0", optional = true }
154153
cwextab = { version = "1.1", optional = true }
155154
powerpc = { version = "0.4", optional = true }
156155
rlwinmdec = { version = "1.1", optional = true }
157156

158157
# mips
159158
rabbitizer = { version = "2.0.0-alpha.4", default-features = false, features = ["all_extensions"], optional = true }
160-
gnuv2_demangle ={ version = "0.1.0", optional = true }
161159

162160
# x86
163-
cpp_demangle = { version = "0.4", default-features = false, features = ["alloc"], optional = true }
164161
iced-x86 = { version = "1.21", default-features = false, features = ["decoder", "intel", "gas", "masm", "nasm", "exhaustive_enums", "no_std"], optional = true }
165-
msvc-demangler = { version = "0.11", optional = true }
166162

167163
# arm
168164
unarm = { version = "1.9", optional = true }
@@ -180,6 +176,12 @@ tempfile = { version = "3.20", optional = true }
180176
time = { version = "0.3", optional = true }
181177
encoding_rs = { version = "0.8.35", optional = true }
182178

179+
# demangler
180+
cpp_demangle = { version = "0.4", optional = true, default-features = false, features = ["alloc"] }
181+
cwdemangle = { version = "1.0", optional = true }
182+
gnuv2_demangle = { version = "0.1.0", optional = true }
183+
msvc-demangler = { version = "0.11", optional = true }
184+
183185
[target.'cfg(windows)'.dependencies]
184186
winapi = { version = "0.3", optional = true, features = ["winbase"] }
185187

objdiff-core/config-schema.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@
5050
"name": "Itanium"
5151
},
5252
{
53-
"value": "gnu_v2",
54-
"name": "GNU g++ (V2)",
53+
"value": "gnu_legacy",
54+
"name": "GNU g++ (Legacy)",
5555
"description": "Use the old GNU mangling ABI. Used up to g++ 2.9.x"
5656
}
5757
]

objdiff-core/src/diff/demangler.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,14 @@ impl Demangler {
99
Demangler::Codewarrior => Self::demangle_codewarrior(name),
1010
Demangler::Msvc => Self::demangle_msvc(name),
1111
Demangler::Itanium => Self::demangle_itanium(name),
12-
Demangler::GnuV2 => Self::demangle_gnu_v2(name),
12+
Demangler::GnuLegacy => Self::demangle_gnu_legacy(name),
1313
Demangler::Auto => {
1414
// Try to guess
1515
if name.starts_with('?') {
1616
Self::demangle_msvc(name)
1717
} else {
1818
Self::demangle_codewarrior(name)
19-
.or_else(|| Self::demangle_gnu_v2(name))
19+
.or_else(|| Self::demangle_gnu_legacy(name))
2020
.or_else(|| Self::demangle_itanium(name))
2121
}
2222
}
@@ -32,12 +32,14 @@ impl Demangler {
3232
}
3333

3434
fn demangle_itanium(name: &str) -> Option<String> {
35+
let name = name.trim_start_matches('.');
3536
cpp_demangle::Symbol::new(name)
3637
.ok()
3738
.and_then(|s| s.demangle(&cpp_demangle::DemangleOptions::default()).ok())
3839
}
3940

40-
fn demangle_gnu_v2(name: &str) -> Option<String> {
41+
fn demangle_gnu_legacy(name: &str) -> Option<String> {
42+
let name = name.trim_start_matches('.');
4143
gnuv2_demangle::demangle(name, &gnuv2_demangle::DemangleConfig::new_no_cfilt_mimics()).ok()
4244
}
4345
}

0 commit comments

Comments
 (0)