Skip to content

Add IDA 9.4 support - #13

Open
Xevion wants to merge 8 commits into
masterfrom
feat/ida-9.4
Open

Add IDA 9.4 support#13
Xevion wants to merge 8 commits into
masterfrom
feat/ida-9.4

Conversation

@Xevion

@Xevion Xevion commented Aug 24, 2026

Copy link
Copy Markdown
Owner

Adds 9.4 (build 260714) alongside 9.3 rather than replacing it.

Ida::run now closes the database when its job pump ends. Leaving one open
deadlocks 9.4 at exit inside libida's atexit flush; 9.3 tolerated it. Closing
with no database open aborts on 9.4 as well, so Database tracks open state
and close() no-ops otherwise.

Six 9.4 legs added to the check matrix. Only linux-x64 can be run locally,
where the full suite passes; the rest is what these legs are for.
windows-arm64 is the first arm64 Windows runner used here and 9.4 is the
first release shipping that platform, so expect it to need work.

@codecov-commenter

codecov-commenter commented Aug 24, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 93.25%. Comparing base (b979bf0) to head (8e6f566).
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@           Coverage Diff           @@
##           master      #13   +/-   ##
=======================================
  Coverage   93.25%   93.25%           
=======================================
  Files          68       68           
  Lines       12259    12267    +8     
=======================================
+ Hits        11432    11440    +8     
  Misses        827      827           
Components Coverage Δ
Ctree & Types 96.39% <ø> (ø)
Netnode 97.71% <ø> (ø)
Instructions 98.69% <ø> (ø)
Functions & Frames 92.04% <ø> (ø)
Read Surface 90.70% <ø> (ø)
Kernel Thread 88.01% <100.00%> (+0.24%) ⬆️
FFI Facade 47.67% <ø> (ø)

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

@Xevion
Xevion force-pushed the feat/ida-9.4 branch 2 times, most recently from 2443720 to c72fc4c Compare August 24, 2026 14:30
Xevion added 8 commits August 24, 2026 11:57
Leaving one open deadlocks 9.4's atexit flush, which waits on a semaphore
nothing posts. Closing with none open aborts there too, so Database tracks
whether one is open and close() is a no-op otherwise.
Only linux-x64 can be exercised locally, so these legs are what actually
covers the others. windows-arm64 is new; 9.4 is the first release to ship it.
9.4 deprecates the pointer-based func/segment API the facade calls. The SDK's own opt-out keeps a single source tree building against both 9.3 and 9.4, and is a no-op on 9.3. Stopgap until a version-gated compat layer replaces the calls outright.
clang-tidy publishes no win_arm64 wheel and its sdist won't build, which fails toolchain provisioning on the windows-11-arm leg. The tidy and fmt steps already skip Windows.
The x86-64 decoder already resolves the Windows import thunk, but the aarch64 one read the thunk itself, so it returned the address of the import slot rather than g_main and the re-claim wrote through the wrong pointer. Factors the adrp/ldr address math out so the thunk and the prologue scan share it.
The facade's exit trap only arms inside guarded calls, so a fatal during init is silent on every platform, and output capture is a no-op on Windows besides. IDALOG is written by the runtime itself and survives a fatal exit. Explicit bash and no -q so the real exit code and cargo's diagnostics both survive.
The x86-64 path already dumps the bytes it could not decode; the aarch64 one reported only that it failed, which says nothing about what the prologue actually held.
MSVC splits the address across adrp+add and loads through the sum, so the load's base register is not the adrp's destination and the pair-only match found nothing. Verified against the real Windows ARM64 is_main_thread, whose prologue decodes to the pointer it lazily initializes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants