Skip to content

Commit 23421be

Browse files
committed
Disallow exact-name pairups for compiler-generated symbols
1 parent cb62544 commit 23421be

2 files changed

Lines changed: 4 additions & 11 deletions

File tree

objdiff-core/src/diff/data.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,11 @@ pub fn symbol_name_matches(left_name: &str, right_name: &str) -> bool {
5050
} else {
5151
false
5252
}
53-
} else if let Some((prefix, suffix)) = left_name.split_once(['$', '.']) {
53+
} else if let Some((prefix, suffix)) = left_name.split_once(['$', '.'])
54+
&& suffix.chars().all(char::is_numeric)
55+
{
5456
// Match Metrowerks symbol$1234 against symbol$2345
5557
// and GCC symbol.1234 against symbol.2345
56-
if !suffix.chars().all(char::is_numeric) {
57-
return false;
58-
}
5958
right_name
6059
.split_once(['$', '.'])
6160
.is_some_and(|(p, s)| p == prefix && s.chars().all(char::is_numeric))

objdiff-core/src/diff/mod.rs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -760,13 +760,7 @@ fn find_symbol(
760760
return closest_match_symbol_idx;
761761
}
762762

763-
// Try to find an exact name match
764-
if let Some((symbol_idx, _)) = unmatched_symbols(obj, used).find(|(_, symbol)| {
765-
symbol.name == in_symbol.name && symbol_section_kind(obj, symbol) == section_kind
766-
}) {
767-
return Some(symbol_idx);
768-
}
769-
763+
// Try to find a symbol with a matching name
770764
if let Some((symbol_idx, _)) = unmatched_symbols(obj, used)
771765
.filter(|&(_, symbol)| {
772766
symbol_name_matches(&in_symbol.name, &symbol.name)

0 commit comments

Comments
 (0)