From 2b13e9886a7a81f24ad8c3b2e2287a8e82f337ea Mon Sep 17 00:00:00 2001 From: Luke Street Date: Tue, 13 May 2025 21:37:29 -0600 Subject: [PATCH] Fix hidden symbol regression The flagset .contains check doesn't work like this. Fixes #199 --- objdiff-cli/src/cmd/report.rs | 6 ++++-- objdiff-core/src/diff/display.rs | 4 +++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/objdiff-cli/src/cmd/report.rs b/objdiff-cli/src/cmd/report.rs index c6cc8fd..3a5f218 100644 --- a/objdiff-cli/src/cmd/report.rs +++ b/objdiff-cli/src/cmd/report.rs @@ -245,12 +245,14 @@ fn report_object( for (symbol, symbol_diff) in obj.symbols.iter().zip(&obj_diff.symbols) { if symbol.section != Some(section_idx) || symbol.size == 0 - || symbol.flags.contains(SymbolFlag::Hidden | SymbolFlag::Ignored) + || symbol.flags.contains(SymbolFlag::Hidden) + || symbol.flags.contains(SymbolFlag::Ignored) { continue; } if let Some(existing_functions) = &mut existing_functions { - if symbol.flags.contains(SymbolFlag::Global | SymbolFlag::Weak) + if (symbol.flags.contains(SymbolFlag::Global) + || symbol.flags.contains(SymbolFlag::Weak)) && !existing_functions.insert(symbol.name.clone()) { continue; diff --git a/objdiff-core/src/diff/display.rs b/objdiff-core/src/diff/display.rs index cc7a723..7f928e3 100644 --- a/objdiff-core/src/diff/display.rs +++ b/objdiff-core/src/diff/display.rs @@ -616,7 +616,9 @@ fn symbol_matches_filter( return false; } if !show_hidden_symbols - && (symbol.size == 0 || symbol.flags.contains(SymbolFlag::Hidden | SymbolFlag::Ignored)) + && (symbol.size == 0 + || symbol.flags.contains(SymbolFlag::Hidden) + || symbol.flags.contains(SymbolFlag::Ignored)) { return false; }