2.4 KiB
2.4 KiB
Binary Symbol Table Diff Engine
Module
BinaryIndex
Status
VERIFIED
Description
Symbol table comparison between binary versions tracking exported/imported symbol changes, version map diffs, GOT/PLT table modifications, and ABI compatibility assessment. Produces content-addressed diff IDs for deterministic reporting.
Implementation Details
- Modules:
src/BinaryIndex/__Libraries/StellaOps.BinaryIndex.Builders/SymbolDiff/ - Key Classes:
SymbolTableDiffAnalyzer(src/BinaryIndex/__Libraries/StellaOps.BinaryIndex.Builders/SymbolDiff/SymbolTableDiffAnalyzer.cs) - computes diffs between symbol tables withComputeDiffAsyncandAssessAbiCompatibilitySymbolTableDiff(src/BinaryIndex/__Libraries/StellaOps.BinaryIndex.Builders/SymbolDiff/SymbolTableDiff.cs) - diff result model with added/removed/changed symbolsVersionMapDiff(src/BinaryIndex/__Libraries/StellaOps.BinaryIndex.Builders/SymbolDiff/VersionMapDiff.cs) - tracks changes in ELF version mapsAbiCompatibility(src/BinaryIndex/__Libraries/StellaOps.BinaryIndex.Builders/SymbolDiff/AbiCompatibility.cs) - ABI compatibility assessment (FullyCompatible, Warnings, Incompatible)DynamicLinkingDiff(src/BinaryIndex/__Libraries/StellaOps.BinaryIndex.Builders/SymbolDiff/DynamicLinkingDiff.cs) - GOT/PLT table modification trackingNameDemangler(src/BinaryIndex/__Libraries/StellaOps.BinaryIndex.Builders/SymbolDiff/NameDemangler.cs) - C++ symbol name demangling
- Interfaces:
ISymbolTableDiffAnalyzer(src/BinaryIndex/__Libraries/StellaOps.BinaryIndex.Builders/SymbolDiff/ISymbolTableDiffAnalyzer.cs) - Registration:
SymbolDiffServiceExtensionsfor DI setup
E2E Test Plan
- Compute diff between two ELF binaries with known symbol changes and verify added/removed symbols are correctly identified
- Verify
AssessAbiCompatibilityreturnsFullyCompatiblewhen only symbols are added - Verify
AssessAbiCompatibilityreturnsIncompatiblewhen exported symbols are removed - Verify version map diff detection for ELF version script changes
- Verify C++ symbol demangling produces human-readable names via
NameDemangler - Verify content-addressed diff IDs are deterministic for identical inputs
Verification
- Verified by QA FLOW run
run-001on 2026-02-11. - Evidence:
docs/qa/feature-checks/runs/binaryindex/binary-symbol-table-diff-engine/run-001/(Tier 0/1/2 artifacts).