Commit Graph
4 Commits
Author SHA1 Message Date
Ole André Vadla Ravnås bcac18515a core: Resolve address facts and gate actions
Resolve whether an address is executable, a function start,
data, or unmapped — from page protection and the disassembler,
cached per process identity. Gate the tracer hook actions on
it. Skip resolution while detached; invalidate the cache when
re-attaching to a different process.
2026-06-23 10:51:48 +02:00
Ole André Vadla Ravnås bd454a0525 core: Carry an anchor hint through address actions
AddressContext gains an optional anchorHint so callers that
already know the precise anchor (a module export, an Objective-C
selector, etc.) can pass it through instead of falling back to
node.anchor(for:), which always produces a module+offset pair.

addTracerHook accepts a preferredAnchor and uses it both for the
hook's addressAnchor and for the displayName, so the generated
log stub now interpolates "libsystem_c.dylib!puts" rather than
"libsystem_c.dylib+0x2d638". The function also folds the
new-tracer path into a single addInstrument call with the hook
already in place — no second compile/push round-trip.
2026-05-07 19:34:32 +02:00
Ole André Vadla Ravnås 582c00d1d2 core: Extend action providers with context
AddressContext lets address-action providers branch on whether the
site is code/function/data; the tracer offers a function vs
instruction hook accordingly. ThreadActionProvider mirrors the
pattern for thread targets so UI code stays oblivious to which
instrument owns a given action.
2026-05-07 16:38:21 +02:00
Ole André Vadla Ravnås 0e669be3dc Move the rest of business logic into LumaCore
Workspace is now a thin host adapter. Engine owns sessions and
notebook entries (via store observation), GitHub auth + OAuth
device flow, hook-pack discovery, address annotations and address
actions, the disassembler cache, and all instrument lifecycle.
EventLog is @Observable so SwiftUI tracks it directly; the host
no longer mirrors event arrays or version counters.

R2 (live disassembly + trace inspection) lives entirely in
LumaCore as concrete Disassembler / TraceDisassembler classes
returning portable StyledText spans. ProcessNodeViewModel and
InstrumentRuntime are gone; views read engine.processNodes /
node.instruments / engine.descriptor(for:) directly.

Reorganize Luma/Models/ — instrument UI dispatch lives under
Luma/Instruments/, Monaco editor glue under Luma/Editor/, and the
remaining UI types sit at the top of Luma/.
2026-04-07 10:11:31 +02:00