summaryrefslogtreecommitdiffstats
path: root/server/patch_server.py
diff options
context:
space:
mode:
authorblasty <peter@haxx.in>2026-07-22 23:21:16 +0200
committerblasty <peter@haxx.in>2026-07-22 23:21:16 +0200
commitcae586b36cd15549bc8110120ef2ae92db40f159 (patch)
treee72108f453cdd7086d81f982535ca8875c5df162 /server/patch_server.py
parentpane: reap leaked idalib workers; drive: friendlier name resolution (fixes sp... (diff)
downloadida-tui-cae586b36cd15549bc8110120ef2ae92db40f159.tar.gz
ida-tui-cae586b36cd15549bc8110120ef2ae92db40f159.tar.xz
ida-tui-cae586b36cd15549bc8110120ef2ae92db40f159.zip
app: non-function regions — open a flat listing + c/p/u edit verbs (M0)
Navigating to an address not inside a function no longer refuses ("no function contains X"): _do_navigate now opens a region view (flat listing anchored at the EA, forced to disasm since there's no pseudocode). The server's no-function disasm already walks heads to the segment end, so DisasmModel is reused as-is; NavEntry gains is_region. Adds the IDA c/p/u structure-edit verbs on the disasm view: c = define_code (undefine-first, since create_insn won't carve a live item) p = define_func u = undefine wired via EditItemRequested -> _do_edit_item worker -> Program.define_code/ define_func/undefine. define_func upgrades the region to a real function view in place. New Program.bump_items() invalidates the item/function structure caches (disasm blocks, decomp, function indices + name gen) — broader than bump_names(), which only covers renames. Pilot: new `region_define` scenario undefines a small function, navigates to the bare region via the 'g' prompt (asserts it opens, not refused), then 'p' recreates the function and upgrades the view; restores the IDB in a finally. 107 passed / 1 pre-existing flaky (filter, fails on baseline).
Diffstat (limited to '')
0 files changed, 0 insertions, 0 deletions