Skip to content

Commit ad47719

Browse files
committed
Fix reloc_eq not ignoring compiler-generated names
1 parent e3829ec commit ad47719

2 files changed

Lines changed: 17 additions & 3 deletions

File tree

objdiff-core/src/diff/code.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ use crate::{
1616
diff::{address_eq, section_name_eq, symbol_name_matches},
1717
obj::{
1818
InstructionArg, InstructionArgValue, InstructionRef, Object, ResolvedInstructionRef,
19-
ResolvedRelocation, ResolvedSymbol, SymbolKind,
19+
ResolvedRelocation, ResolvedSymbol, SymbolFlag, SymbolKind,
2020
},
2121
};
2222

@@ -322,6 +322,11 @@ fn reloc_eq(
322322
if diff_config.function_reloc_diffs == FunctionRelocDiffs::DataValue {
323323
// Ignore names entirely
324324
name_ok = true;
325+
} else if left_reloc.symbol.flags.contains(SymbolFlag::CompilerGenerated)
326+
&& right_reloc.symbol.flags.contains(SymbolFlag::CompilerGenerated)
327+
{
328+
// Match if both symbol names are fully compiler-generated
329+
name_ok = true;
325330
} else if symbol_name_addend_matches || address_eq(left_reloc, right_reloc) {
326331
// Match if name+addend or address match
327332
name_ok = true;

objdiff-core/src/diff/data.rs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,17 @@ fn reloc_eq(
5454
if !section_name_eq(left_obj, right_obj, sl, sr) {
5555
return false;
5656
};
57-
// Match if name+addend or address match
58-
symbol_name_addend_matches || address_eq(left_reloc, right_reloc)
57+
let mut name_ok = false;
58+
if left_reloc.symbol.flags.contains(SymbolFlag::CompilerGenerated)
59+
&& right_reloc.symbol.flags.contains(SymbolFlag::CompilerGenerated)
60+
{
61+
// Match if both symbol names are fully compiler-generated
62+
name_ok = true;
63+
} else if symbol_name_addend_matches || address_eq(left_reloc, right_reloc) {
64+
// Match if name+addend or address match
65+
name_ok = true;
66+
}
67+
name_ok
5968
}
6069
(Some(_), None) | (None, Some(_)) | (None, None) => symbol_name_addend_matches,
6170
}

0 commit comments

Comments
 (0)