Skip to content

Commit 82a5f6b

Browse files
committed
Fix bug where PPC pool references weren't ignoring section symbols
1 parent 758ec33 commit 82a5f6b

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed

objdiff-cli/src/cmd/report.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ use objdiff_core::{
88
Report, ReportCategory, ReportItem, ReportItemMetadata, ReportUnit, ReportUnitMetadata,
99
},
1010
config::path::platform_path,
11-
diff, obj,
12-
obj::{SectionKind, SymbolFlag},
11+
diff,
12+
obj::{self, SectionKind, SymbolFlag, SymbolKind},
1313
};
1414
use prost::Message;
1515
use rayon::iter::{IntoParallelRefIterator, ParallelIterator};
@@ -245,6 +245,7 @@ fn report_object(
245245
|| symbol.size == 0
246246
|| symbol.flags.contains(SymbolFlag::Hidden)
247247
|| symbol.flags.contains(SymbolFlag::Ignored)
248+
|| symbol.kind == SymbolKind::Section
248249
{
249250
continue;
250251
}

objdiff-core/src/arch/ppc/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ use crate::{
2121
obj::{
2222
FlowAnalysisResult, InstructionRef, Object, Relocation, RelocationFlags,
2323
ResolvedInstructionRef, ResolvedRelocation, Section, Symbol, SymbolFlag, SymbolFlagSet,
24+
SymbolKind,
2425
},
2526
};
2627

@@ -794,6 +795,7 @@ fn make_fake_pool_reloc(
794795
&& s.size > 0
795796
&& !s.flags.contains(SymbolFlag::Hidden)
796797
&& !s.flags.contains(SymbolFlag::Ignored)
798+
&& s.kind != SymbolKind::Section
797799
&& (s.address..s.address + s.size).contains(&target_address)
798800
})?;
799801
addend = target_address.checked_sub(symbols[target_symbol].address)? as i64;

0 commit comments

Comments
 (0)