36 lines
2.4 KiB
Markdown
36 lines
2.4 KiB
Markdown
# 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 with `ComputeDiffAsync` and `AssessAbiCompatibility`
|
|
- `SymbolTableDiff` (`src/BinaryIndex/__Libraries/StellaOps.BinaryIndex.Builders/SymbolDiff/SymbolTableDiff.cs`) - diff result model with added/removed/changed symbols
|
|
- `VersionMapDiff` (`src/BinaryIndex/__Libraries/StellaOps.BinaryIndex.Builders/SymbolDiff/VersionMapDiff.cs`) - tracks changes in ELF version maps
|
|
- `AbiCompatibility` (`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 tracking
|
|
- `NameDemangler` (`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**: `SymbolDiffServiceExtensions` for DI setup
|
|
|
|
## E2E Test Plan
|
|
- [ ] Compute diff between two ELF binaries with known symbol changes and verify added/removed symbols are correctly identified
|
|
- [ ] Verify `AssessAbiCompatibility` returns `FullyCompatible` when only symbols are added
|
|
- [ ] Verify `AssessAbiCompatibility` returns `Incompatible` when 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-001` on 2026-02-11.
|
|
- Evidence: `docs/qa/feature-checks/runs/binaryindex/binary-symbol-table-diff-engine/run-001/` (Tier 0/1/2 artifacts).
|
|
|