aboutsummaryrefslogtreecommitdiffstats
path: root/docs/RPC.md
diff options
context:
space:
mode:
authorblasty <blasty@local>2026-07-22 23:29:26 +0200
committerblasty <blasty@local>2026-07-22 23:29:26 +0200
commit5878bc98590335190cd0e9a82400b3acae8ffad3 (patch)
tree89c070add9a560186c7254efd7d31287e1ae8c82 /docs/RPC.md
parentapp: non-function regions — open a flat listing + c/p/u edit verbs (M0) (diff)
downloadida-tui-5878bc98590335190cd0e9a82400b3acae8ffad3.tar.gz
ida-tui-5878bc98590335190cd0e9a82400b3acae8ffad3.tar.xz
ida-tui-5878bc98590335190cd0e9a82400b3acae8ffad3.zip
server+domain: heads walker + ListingModel — flat code/data listing (M1)
The keystone for a real disassembly-listing view (unlike DisasmModel, which is one function, code-only). Two pieces: server/patch_server.py: inject a `heads` tool. It walks item heads over a segment with next_head/prev_head and renders each via generate_disasm_line, so it returns a flat listing where code, data (db/dw/dd, strings, jump tables) and undefined bytes all appear as typed rows {ea,kind,size,text,name}. Unlike `disasm` (code-only, bails at the first data byte) it shows the whole segment. Address-paged: chain forward via cursor.next, page up with back=true (returns the N heads ending before addr, in forward order, + cursor.prev). domain.py: ListingModel — a lazily-grown, segment-scoped head index (FunctionIndex-style forward paging via cursor.next; line index == position in the walked list). ensure_ea() gives random access to an address (resolving a mid-item byte to its containing head). New Head dataclass, Program.listing() (cached per segment) + segment_bounds(); section_of() now derives from it; bump_items() clears the listing cache too. Verified live: heads renders strings/jump-tables/unknown correctly, forward chaining + back-paging work; ListingModel walks echo .text (5036 heads, ~276ms) with cached windows and mid-item address resolution. tests/test_domain gains a [listing] section (27 passed). Pilot hex/region_define/disasm_nav green. Note: adding a server tool needs a supervisor restart (workers respawn).
Diffstat (limited to 'docs/RPC.md')
0 files changed, 0 insertions, 0 deletions