* Add symbol kind to diff proto output
Expose SymbolKind (Function, Object, Section, Unknown) in the
DiffSymbol proto message, allowing CLI oneshot diff consumers to
distinguish symbol types without inferring from instruction/data
presence.
* Stop filtering symbols from diff output, replace flags bitmask with message
Remove the symbol filter (size == 0 / Ignored) from DiffObject so all
symbols are emitted. This fixes target_symbol indices being invalid
after filtering.
Replace the DiffSymbolFlag bitmask enum + uint32 field with a
DiffSymbolFlags message of booleans, adding ignored and size_inferred
flags so consumers can filter on their end.
* Better COFF and Big Endian Strings
* Cargo Check and Format Fixes
* Rework DataType::String in display_literals
---------
Co-authored-by: Luke Street <luke@street.dev>
* Move symbol name processing from diff step to read step
* Use min_by_key instead of sorted_unstable_by_key
* Sort all symbols by address when reading the object
This fixes an underreport bug in diff_bss_section.
* More symbol sorting logic on read
* Move is_name_compiler_generated into SymbolFlag & filter out File symbols
---------
Co-authored-by: Luke Street <luke@street.dev>
* Fix `__arraydtor$1234`s sometimes being swapped
The list of symbols is not necessarily sorted by address, so if there are multiple `__arraydtor$1234` functions it's possible that they're in reverse order on the right, which would cause them to be paired up incorrectly.
To fix this we sort by section index and symbol address after filtering down the list of symbols to ones that have matching names.
* Support pairing up symbols for anonymous classes
* Disallow exact-name pairups for compiler-generated symbols