Files
git.stella-ops.org/docs/features/checked/binaryindex/binary-symbol-table-diff-engine.md
2026-02-12 10:27:23 +02:00

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 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).