Add IDA 9.4 support - #13
Open
Xevion wants to merge 8 commits into
Open
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. 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
☔ View full report in Codecov by Harness. |
Xevion
force-pushed
the
feat/ida-9.4
branch
2 times, most recently
from
August 24, 2026 14:30
2443720 to
c72fc4c
Compare
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds 9.4 (build 260714) alongside 9.3 rather than replacing it.
Ida::runnow closes the database when its job pump ends. Leaving one opendeadlocks 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
Databasetracks open stateand
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-arm64is the first arm64 Windows runner used here and 9.4 is thefirst release shipping that platform, so expect it to need work.