Files
git.stella-ops.org/docs/modules/symbols/architecture.md

72 lines
1.7 KiB
Markdown

# 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
```json
{
"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
```json
{
"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"
}
```
---
## Related Documentation
* Scanner native analysis: `../scanner/architecture.md`
* Reachability: `../../reachability/`