72 lines
1.7 KiB
Markdown
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/`
|