Files
git.stella-ops.org/docs/modules/symbols/architecture.md
StellaOps Bot e6c47c8f50 save progress
2025-12-28 23:49:56 +02:00

1.7 KiB

component_architecture_symbols.md - Stella Ops Symbols (2025Q4)

Symbol resolution and debug information management.

Scope. Library and service architecture for Symbols: managing debug symbols, build IDs, and symbol-to-package mappings for reachability analysis.


0) Mission & boundaries

Mission. Provide symbol resolution infrastructure for native binary analysis. Map symbols to packages, manage debug information, and support stripped binary analysis.

Boundaries.

  • Symbols resolves and maps symbols; execution is handled by Scanner.
  • Debug symbols are optional; stripped binaries use heuristics.
  • Supports offline symbol stores for air-gapped operation.

1) Solution & project layout

src/Symbols/
 ├─ StellaOps.Symbols/                     # Core symbol resolution
 │   ├─ Services/
 │   │   ├─ ISymbolResolver.cs
 │   │   └─ BuildIdResolver.cs
 │   └─ Models/
 │       ├─ SymbolInfo.cs
 │       └─ BuildIdMapping.cs
 │
 └─ Integration with Scanner:
     └─ src/Scanner/__Libraries/StellaOps.Scanner.Symbols.Native/

2) Contracts & data model

2.1 Symbol Info

{
  "symbolId": "sha256:abc123",
  "name": "_ZN3foo3barEv",
  "demangledName": "foo::bar()",
  "sourceFile": "src/foo.cpp",
  "lineNumber": 42,
  "buildId": "abc123def456",
  "packagePurl": "pkg:deb/debian/libfoo@1.2.3"
}

2.2 Build ID Mapping

{
  "buildId": "abc123def456",
  "path": "/usr/lib/libfoo.so.1",
  "packagePurl": "pkg:deb/debian/libfoo@1.2.3",
  "debugPath": "/usr/lib/debug/.build-id/ab/c123def456.debug"
}

  • Scanner native analysis: ../scanner/architecture.md
  • Reachability: ../../reachability/