IDA 9.4 Beta

IDA 9.4 Beta
Welcome to the IDA 9.4 Beta Release, and thank you to all our beta testers for joining us! Below are the key highlights and changes introduced in this beta version. Prefer a quick overview? Watch the IDA 9.4 Beta Highlights video.
Share your feedback
Spotted a bug or have a suggestion for the beta? Let us know and contribute to IDA evolution through one of the following channels:
Hex-Rays Support (Early access feedback form),
Email: support@hex-rays.com, or
Slack: Join the discussion in our dedicated beta channel. If you didn’t receive the invitation link, contact us.
What's in this release
Already running Beta 1? Jump straight to everything that changed since: more Swift recovery, DSC fixes for iOS 27, and a large batch of decompiler and UI fixes.
The marquee features: new Dyld Shared Cache infrastructure, Swift ABI recognition, SVE2, Hexagon & MCore processors, the Pathfinder widget, deep links, and Git-based Teams.
Better Rust and Go analysis, plus Objective-C ARC handling.
New actions and many pseudocode/microcode output-quality improvements.
New and improved processor support: ARM SVE2/SME, TriCore, RISC-V, and MCore.
ELF/COFF/OMF/PSX improvements, compilation-unit grouping, and Linux kernel modules.
A broadly modernized GDB remote backend, Win32/WinDbg fixes, and RISC-V debugging.
A new IDA Domain API release, IDAPython enhancements, and a large set of new (EA-based) SDK APIs.
Pathfinder, the redesigned Xrefs Graph, the unified Scripts window, and Jump Anywhere as the default jump action.
Faster loading and lower memory use for DWARF and large databases.
Comprehensive fixes across every subsystem.
New in Beta 2 (RC1)
Beta 2 (build 9.4.20260701, RC1) builds on Beta 1 with continued Swift work, fixes for the latest iOS 27 dyld shared caches, and a broad round of decompiler and UI polish. The list below covers everything new since Beta 1; the rest of this page describes the full 9.4 Beta.
Apple Dyld Shared Cache
dsc: fixed crash when loading a module from a filtered list
dsc: recognize and rename iOS 27 selector stubs coming from the new
libobjcMsgSend*modulesdsc: objc: method prototypes that were missing in recent dyld shared caches
dsc: no more spurious "is already loaded" prompt during analysis
Swift
swift: recover throwing calls and functions on stripped binaries
swift: recover stack-spilled arguments at swiftcall sites
swift: recover
__swiftcallon stripped functionsswift: pin the
__swiftselfargument to the frontswift: type Swift runtime enum parameters as enums, not
void *swift: report Swift as the compiler in the output header
Higher Level Languages
golang: dwarf: fix wrong prototypes for Go functions returning a function or tuple
Decompiler
vd: fixed a crash in the 'Display chains' microcode view action
vd: fixed an empty stkvar du-ud chooser in the microcode view
vd: fix the 'Edit type' action for types from a TIL
vd: opaque Windows types were not replaced by their typedefs (like
HWND)vd: renaming a structure field accessed through a typedef had no effect
vd: garbage pseudocode restored from the database for functions with try/catch
vd: function roles were not serialized
vd: write
-dump/-cdump2files next to the IDB whenIDA_DUMPDIRis unsetvd: fixed an endless loop in
multimove.cppvd: fixed an endless loop
vd: always align the argument area by double slot size
vd: spoiled
VARNUMin chain allocationvd: polished the MIPS decompiler
vd: swift: fix INTERR 30734 when decompiling functions whose return is wider than one register
vd: fix INTERR 473 when correcting pointer arithmetic into a union field
vd: fix INTERR 50215
vd: fix INTERR 50312 on switches with a sign/zero-extended index
vd: fix INTERR 50318 when a callee prototype's argument type could not be applied to a caller stack variable
vd: fix INTERR 50342 caused by
break_phi_arm_mergesvd: fix INTERR 50342 after switch improving
vd: fix INTERR 50531 (inlined external insn was missing from extinsns)
vd: fix INTERR 50629 when a switch preserves a wide vector register
vd: fix INTERR 50707
vd: fix INTERR 50708 on storing a floating-point constant
vd: fix INTERR 50757 when decompiling large structure copies
vd: fix INTERR 50757 on propagating a struct-returning indirect call
vd: fix INTERR 50877
vd: fix INTERR 50920 (3-operand ARM
STREXDleft implicit Rt2=PC untranslated)vd: fix INTERR 51719
vd: fix INTERR 51926
vd: fix INTERR 52086
vd: fix INTERR 52137
vd: fix INTERR 52368 on x64 switches inside exception regions
vd: fix INTERR 52599
vd: fix INTERR 52696
vd: fix INTERR 52724 caused by int3 traps in x64 code
vd: fix INTERR 52870 in chain lvar allocation
vd: fix INTERR 53023
eh34: hardened the prologue validation introduced for INTERR 52724
Type System
parser: instantiate the enumeration declared within a template
parser: do not duplicate the name for a typedef
parser: honor the Microsoft ABI for member pointers
Disassembler
tricore: improved register def/use analysis for register pairs and 16-bit sub-registers
tricore: add tc45x, tc48x, tc49xN and tc4Dx register maps
riscv: fix alternative extension comments
riscv: fix bug with
auipcgetting merged too eagerly
Loaders
Mach-O: keep the entry-point segment visible even when it has no sections
Mach-O: decrypt Apple-protected segments located past the unprotected header
Debuggers
gdb: do not time out when running monitor commands (matches GDB)
gdb: derive segment bitness from the image when possible
gdb: use
fs_base/gs_baseregisters for navigation when availablecore: fix bug with duplicate debugger names
Debug Info
dwarf: also treat ELF/Mach-O magic at
low_pc=0as a tombstone
Plugins, SDK & API
installer: fix the idalib activation page for IDA Home and when Python is already installed
installer: package idalib with IDA Home
installer: bundle
analysis.idcwith IDA Home (enables -B switch)installer: fixed the Linux desktop entry
installer: idapython: mac:
idapyswitch -anow keeps the currently-selected Pythonidapython: add proper ownership handling for cif and cloop
idapython: fix
gen_microcode()memory leak (mba_t.release)idalib: print to stderr in
verror_implidalib: tests: improve utils
idalib: bring
gen_disasm_textback to lifekernel: let processor modules mark outlined functions (
FUNC_OUTLINE)sdk: added
get_segment_ea_by_num()to look up a segment's start address by numbersdk:
set_segment_info()acceptsADDSEG_*flagssdk: forbid an ordinal name as argument for
copy_named_type()
UI & UX
ui: adaptive (theme-aware) "Scripts" icons and palette-driven theming
ui: dark theme fixes for the Windows 11 style
ui: assorted UI fixes and small improvements
graph view: a hint no longer reappears over empty space after clicking a name
links: add icons for the "Copy link" and "Jump to link" menu actions
jump anywhere: the expression-evaluation language is now selectable
jump anywhere: highlight matched text in name/data/string results
jump anywhere: highlight all query matches, also on selected rows
jump anywhere: replace the hex preview with the real hex view
jump anywhere: option to restore the last query results on reopen
pathfinder: waypoint names now recolor on OS theme change
pathfinder: allow non-function addresses as waypoints and exclusions
pathfinder: Pathfinder and forms UX polish
ui: bookmarks from databases created before 7.0 showed garbage addresses after upgrade
licensing: fixed "error retrieving user info" in the IDA View header
Performance
kdata: faster
get_db_byteanalysis hotpathperformance: skip the upper-32 flag fetch on hot paths
swift: mark swiftcall callers incrementally instead of rescanning per analysis wave
eh: speed up loading MSVC PE binaries with heavy use of C++ exception handling
Teams
teams: "git ida" now works in terminals via an automatically managed global git configuration
teams: enable or disable the Teams status-bar info from settings (on by default)
teams: don't show the status bar or enable actions on non-
git-idaGit reposteams: enhanced the Git account settings dialog with credential fields
Other
objc: type
_objc_{retain,release}_x<N>ARC stubs as__usercalldemangler: fixed INTERR 1223 on deeply nested mangled names
fixed INTERR 640 caused by a corrupt argument location in the database
fixed INTERR 2765 that could occur while analyzing 32-bit x86 PE files
eh_parse: MS C++ cleanup handlers created spurious try blocks outside their scope
Highlights
New Apple Dyld Shared Cache Infrastructure
IDA 9.4 completely overhauls the approach to analyzing Dyld Shared Cache's:
dedicated widgets
specialized workflows & actions
seamless navigation between shared cache components
improved (& correct) analysis
Apple ecosystem reversers should have a much easier time with the new system. See the documentation on the general concepts & workflows!

Swift ABI Recognition
The decompiler and type system now understand the Swift calling convention. Add __swiftself to a function argument to declare it being passed in x20 (arm64) / r13 (x86-64). The function-level attributes __swiftasync and __swiftthrows cause the decompiler to rewrite accesses to/from the designated registers as intrinsics.
Example 1 — Throwing method: BankAccount.withdraw(_:)
BankAccount.withdraw(_:)Showcases __swiftself, __swiftthrows, the swift error-register (x19) plumbing, and more runtime types (Swift::BoxPair). (Also notice how the undefined variable warnings disappear.)
Before
After
Example 2 — Async function: actorSampler continuation at 0x100002374
actorSampler continuation at 0x100002374Showcases __swiftasync, the typed async_context (x22) and removed PAC check.
Before
After
SVE2 Support
ARM SVE2 and SME extensions are now fully disassembled.


Decompiler Strings
Strings recovered during decompilation now automatically show up in the list of strings. Note that the list is filled lazily and only contains strings of functions that were previously decompiled.

Qualcomm Hexagon Disassembler & Loader
A brand-new Hexagon (QDSP6) processor module brings Qualcomm DSP firmware into reach, paired with a Qualcomm MBN boot-image loader (SBL/XBL containers, multi-ELF, hash validation).




See the Hexagon disassembler reference for details on packet-based execution, ISA coverage, processor-specific display options, and loading Hexagon binaries.
MCore/CSkyV1 Disassembler
A new processor module for the MCore aka CSky V1 architecture.


New Pathfinder Widget
How does execution get from here to there? IDA 9.4 can now answer that directly: the new Pathfinder widget (View > Open subviews > Pathfinder, Shift-F9) finds call paths between functions:
pick two or more waypoints - paths are found segment by segment, visiting them in order
add the function under the cursor as a waypoint with
Ctrl-Shift-F9, straight from a disassembly or pseudocode viewexclude functions to keep known noise (logging helpers, generic wrappers) out of the results
tune the search: include data xrefs, shortest path only, maximum depth
view the results as a pre-expanded cross-references tree, or as an Xrefs Graph with the path highlighted
Pathfinder graphs are regular Xrefs Graphs: they are saved with your database and organized in the new graph manager (see the Xrefs Graph section). Find out what it can answer about your binary!
IDB Deep Links & Snippet Sharing
Share work without shipping files around. Deep links navigate to a specific location in a database and can be opened in an already-running IDA through a new local IPC channel (also usable by external tooling such as HCLI).


Git-Based Teams Server
The “Teams” add-on for IDA Pro can now run with Git servers too… Share IDB files with your team using the Git provider you already use e.g. GitHub, GitLab, Bitbucket, or self-hosted. No server to deploy. No new credentials to issue. Just clone, analyze, commit, push.

A few guides to help you get started or migrate:
Migrating from Vault? See the Vault to Git Migration tutorial.
Need a self-hosted Git server? See our recommended Gitea setup.
Already have a Git repository? See the setup guide and the everyday tasks walkthrough.
Jump Anywhere Becomes the Default Jump Action
Jump Anywhere is now bound to the default g shortcut, replacing the legacy jump-to-address dialog with a unified, type-ahead navigator:
index and jump to function comments
accept IDC/Python expressions like
cpu.EIPlive previews as disassembly, pseudocode, or hex
jump history with previews

IDA Domain API: new release
A new version of the IDA Domain API is available. The latest release (v0.5.0) adds microcode and pseudocode access along with object store/retrieve APIs. See What's new in the IDA Domain API for details.
ARM64 Windows Build of IDA
IDA is now available as a native ARM64 build for Windows-on-ARM.
Compilation Units Folders
Functions can now be grouped in the Functions list by the compilation unit they came from. The compilation-unit structure is reconstructed from COFF, PSX, OMF, TDS, DWARF, PDB and GO, mirroring the original source-file layout of the binary. It's also reconstructed from any user's loader that calls add_sourcefile().


Unified "Scripts" Window
Replaces the old "Execute script" / "Snippets" dialog with a single dockable "Scripts" window. The window hosts four vertical tabs, each backed by an independent tree widget:
"Execute script"/"Snippets" - IDB-resident snippets, now exposed as a tree
"Recent scripts" - externally-loaded scripts (filesystem paths), with single-child folder chains coalesced and per-row extlang icons.
"Examples" (NEW) - IDAPython-shipped examples.
"Search" (NEW) - allows searches across the three sources above
Xrefs Graph: UI Improvement
Xrefs Graph can now display call paths found by the new Pathfinder (see above): the path spine and waypoints are highlighted with dedicated colors, and a path-aware aligned layout keeps the route readable.
The xrefs graph interface has been significantly redesigned in IDA 9.4:
A new graph manager for managing graphs, following the same paradigm as the other views
Headers have been added to nodes, containing quickly readable information about comments, bookmarks, breakpoints, and missing references
Redesigned widgets: some of them have been moved out of the overlay for improved usability
The settings have been redesigned so that they are now less cluttered and organized more logically
See the Xref Graph reference for the full picture.
Xrefs Graph is now more consistent with the rest of IDA and easier to use - try it!
Watch what's new in IDA 9.4 Beta
Excited about what’s coming in IDA 9.4? Watch the feature overview based on the 9.4 Beta release on the All Things IDA channel.
Courtesy of Elias Bachaalany (@allthingsida)
Higher Level Language Support
rust: display the detected rust version and used crates in the header
rust: type panic locations, detect rustc version and crate list
rust: add
CM_CC_RUSTcalling conventiongolang: add configutation var
GOLANG_MAX_ANON_NAME_SIZEgolang: parse
buildinfomodule dependencies for Go 1.18+golang: improve
pclntabdiscovery for PIE ELF binariesgolang: remove zero-sized fields from Go struct types
golang: derive return type for
runtime.newobjectfromRTYPEarggolang: dwarf: inject hidden dictionary parameter for Go generic functions
golang: improve detection of stack arguments (vs spill space)
golang: improve detection of standard go arguments and return types
improve transforming of duffcopy/duffzero calls
objc: add possibility to show / hide objective-C ARC functions and recognize iOS16+ ARC helpers

Decompiler
vd: introduce
Edit type...action (hotkeye) to edit a type from the decompilerui: render argument names at the callsite (
Edit->Plugins->Hex-Rays Decompiler Options->Options 3->Argument name hintsto configure/disable)ui: add possibility to collapse code blocks in the interactive ui (chevrons on the left)
ui: add possibility to invert then-else for if statement"
stkvars: more aggressive array detection
x64: dereference references to read-only memory
vd: add
Add castaction for decompiler expressionsvd: convert
0/1totrue/falsein bool contexts and0tonullptrwhenHO_CPP_CONSTANTSis enabledvd: collapse trailing
v = x; return v;inside try/catch bodiesvd: recognize
fabs/negation from IEEE 754 sign-bit manipulationvd: fold constant
rol/ror/bswapoperationsvd: prefer explicit comparison against zero for non-bool conditions
vd: structure phi-arm diamond merges as if-then-else instead of gotos
mbui: support for microcode xrefs to registers, stack/local variables, and blocks
mbui: hints describe the subinsn under the cursor
cbui: add a (very basic) c-tree viewer
vd: invert short
if (cond) goto L; ...; L:forward jumpsvd: transform
memcpy()calls to simple assignments when possiblevd: more aggressive application of scattered variables
vd: better recognition of big function arguments (UDTs, arrays in golang/rust)
Disassembler
arm:
SVE2/SMEsupportarm: add
SVE/SMEarchitecture detection and UI support for optionsarm: recognize more switch case constructs observed in modern console SDKs
arm: add
SVE/SMEarchitecture detection and UI support for optionstricore: integrate new regfinder
tricore: better switch table recognition
tricore: full type system support
tricore: support byte- and word-sized registers in
tricore.cfgtricore: add relocations support
tricore: respect memory mapping during switch handling
riscv: support harzard3 (RP2350) extensions
riscv: support compressed instructions
Zcmp/Zcmt/Zclsdriscv: support Soteria extensions
v850: recognize more switch patterns
mcore: add stack pointer tracking and automatic stack variable creation
mcore: improve disassembly output quality and fix the decoding of various instructions
Loaders
elf: compact relative-relocation support (
DT_RELR)coff: omf: psx: group functions in dirtree according to compilation units
elf: recognize and improve loading of Linux kernel modules, add modinfo to listing header
elf: arm: infer hardfloat ABI from ELF
.ARM.attributesTag_ABI_VFP_args
Debuggers
win32/windbg: fix incorrect TEB segment labeling and add PEB segment
gdb: general modernization of gdb remote protocol implementation
gdb: retrieve loaded libraries from remote on startup
riscv: add riscv debugging support for GDB backend
Plugins, SDK & API
ida-domain: new release (v0.5.0) adds microcode and pseudocode access plus object store/retrieve APIs
idapython: detect/support pythons managed by uv/anaconda/homebrew
idapython: warn on libpython/venv version mismatch
idapython: expose
ida_loader.import_module()idapython: expose
ida_lines.add_sourcefilesbatch APIidapython: expose
ida_indexerAPI (backend of "Jump Anywhere")idalib: automatically activate idalib during installation
idalib: add support for async event processing and
execute_sync()sdk: new header
dscu.h(and corresponding moduleida_dscu) for programmatic access to the new dyld shared cache infrastructuresdk: add color codes used in
tiplace_tsdk: add support for extlang custom icons
sdk: idapython: publish api for idb indexer
sdk: expose user-defined microinstruction in the api (
user_minsn_t,user_minsn_action_t,minsn_locator_t)sdk: new events:
ev_sanitize_name,ev_query_unmapped_address,ev_load_unmapped_addresssdk: add new events
ev_query_unmapped_address,ev_load_unmapped_address,ev_sanitize_name,ev_should_handle_switchsdk: new
codegen_t::should_handle_switch()hook for processor modulessdk: new methods
mba_t::get_numform/set_numform/clr_numformsdk: add new struct field
string_info_t::decompiler_stringsdk: add EA-based method
tinfo_t::get_func_frame()sdk: new ea-based APIs avoiding ida-allocated pointers -- see the porting guide (segments, funcs/frames, decompiler
decompile_function/decomp_ranges_t,hidden_range_info_t,get_sourcefile_by_ea(),qflow_chart_ea_t)sdk: new event
ev_get_stkarg_partsfor multi-slot stkarg storessdk: add
set_func_flag()to set/clear individual function flagssdk: add
is_name_defined_locally_ea()ea-based APIsdk: add
qflow_chart_ea_tea-based flow chart APIsdk: add
get_prev_function_addr()/get_next_function_addr()ea-based APIsdk: add
set_function_name_if_jumpfunc()ea-based APIsdk: add read-only accessors for
func_tinternal array fieldssdk: add
outctx_t::gen_function_header/gen_function_footersdk: add
ev_out_function_header/ev_out_function_footereventssdk: add new API function
add_regarg_ea()sdk: add new API class
function_item_iterator_tsdk: add new API class
function_parent_iterator_tsdk: add new API class
function_tail_iterator_tsdk: ea-based migration: the porting guide covers the deprecations, but it also adds many new APIs
UI & UX
pathfinder: new widget to find call paths between functions (
Shift-F9)pathfinder: multi-waypoint paths, function exclusions, data-xref/shortest-path/depth options
pathfinder: view results as a cross-references tree or a path-highlighted Xrefs Graph
xref-graph: Sugiyama-style layered graph
xref-graph: visual cues on nodes (xrefs, bookmarks, breakpoints, comments)
xref-graph: new graph management widget
xref-graph: display and highlight call paths found by Pathfinder
xref-graph: improve UI
ui: show release notes on first launch
scripts: new "export headless" action for exporting script snippet as idalib standalone script
ldr: modernize image base/segment ux in initial load dialog
ldr: render referenced shared object for imported symbol names
licensing: improve worfklows when using borrowed floating licenses
Performance
dwarf: speed up loading and reduce memory usage on large DWARF files
kernel: speed up loading of files which added a large amount of names (e.g. DYLD shared caches)
btree: reduce cache and free-page cleanup overhead
pc: speed up frame analysis
pc: add write xref cache
Deprecations
idaclang: migrated to tilib with the new clang parser
Bugfixes
Higher Level Languages
vd: wrong argument optimization in golang functions
golang: some Go types were not recognized in certain databases
golang: fix
itablinksprocessing for Go 1.18+vd: fix a hang in
duffcopy/duffzerohandling
Decompiler
mbui: structural analysis action did not show intermediate reduction steps in non-debug builds
mbui: xref-to chooser could jump to block header instead of instruction line
mbui: double-click in graph mode failed to follow the entity under the cursor
mbui: failed decompilation when opening mbui would result in the viewer being leaked
mbui: graph rendering mode was lost across desktop save/restore
mbui: cached microcode could remain stale after edits to other functions
mbui: comments could be duplicated if neighboring minsns had the same ea
vd: "create new struct type" was not working in ILP32 binaries
vd: use correct operand size for division when split optimization shrunk subtraction
vd: reject FP comparisons in 64-bit subtraction carry pattern
vd: the field offset displayed in the hint could be wrong
vd: skip corrupted user microinstructions during deserialization
vd: missing return statement for functions using
push raxfor stack allocationvd: arm: fix INTERR 50920 for ARM64
NGCSinstructionvd: pc: fix INTERR 50708 for pointer-to-array dereference in assignments
vd: pc: fix INTERR 52368/53023 on x64 chained switches sharing a default
vd: arm: fix INTERR 50920 for ARM64 SME
MOVAinstructionsvd: arm:
PCreference inside an unsupported insn could trigger INTERR 50920vd: arm:
PCreference insideSMLAL-family insn could trigger INTERR 50920vd: arm:
MOVT PCcould trigger INTERR 50920vd: arm:
STRDstoring theLR,PCregister pair could trigger INTERR 50920vd: fix INTERR 51264 on functions with conditional add of side-effecting value
vd: fix wrong decompilation when user splits a call's return value
vd: fix INTERR 50757 on deep low/high slicing of UDT scatters
vd:
-Ohexrayscould not handle Windows paths with drive lettersvd: fix INTERR 50757 on
m_low/m_highslicing memfunc mov into non-power-of-2 sizevd: fix INTERR 50709 on wide-mop high-half access with
cot_castlvaluevd: fix INTERR 50708 on
memcpyrestored from a call sourcevd: fix INTERR 53023 in
combine_sar_sarwith intermediate uses of low halfvd: avoid INTERR 52368 when a plugin injects edges into a
kregjtblvd: reject
memcpywhen source is any non-addressablemop_dvd: preserve udt flag when replacing scattered operand
vd: refuse 64-bit add/sub/mul combine when
cins's def is used betweencinsanddinsvd: do not propagate
fpinsnfrom embedded sub-insns to the combined struct copyvd: do not unpack scattered packing when
kregdestination has uncovered bytesvd: convert array=array assignment to
memcpyto avoid INTERR 50708vd: outlined code that accesses the caller's stack frame was inlined at the wrong stack offset
vd: fix error message printing for invalid deserealisation
vd: fix wrong
OPROP_UDTflag in operandsvd: fix
resolve_pair()breaking 64-bit multiplication patternsvd: ppc spe: wrong handling of helper args wider than 4 bytes
vd: permit propagation of void-returning
memcpycallsvd: INTERR 50710 (casting to array is forbidden) for usercall functions
vd: conflict between scattered local var and arguments
vd: risc-v: fix minor spec mismatches in the microcode
vd: reset decompilation failures if config is changed
Disassembler
pc: also apply ds-segreg flatten rule in the switch-detector path
pc: don't shift
[imm32]by auto-trackeddsin 32-bit codearm: recognize
STM SPas a stkarg storearm: fix INTERR 51312 when decompiling SVE-encoded
XARarm: fix
SVE/MVEsetting for metarm;arm: fix analyzing
UDFfor AArch64ppc: fix interr 2765 which could happen in SPE files with sign extended addresses
ppc: VLE displacement operands with
r0base were incorrectly converted to direct address accessesppc: fix wrong data offsets on register-based displacements
analysis: stack args' types or comments could be wrong when sequential calls reused stack slots
80196: fix handling of indirect and indexed addressing modes
arc, mips: fix indirect register being modified in the delay slot
arc: fix decomding of
dbnzandxbfurisc-v: fix a bunch of decoding bugs
risc-v: improve fence instruction printing
risc-v: fix
c.addiwwithrd=x0being decodedrisc-v: fix buggy 'alternative name' for every symbol
risc-v: handle pair operands correctly
risc-v: support
shXaddfor jump table detectionrisc-v: print
c.prefix for compressed instructionsrisc-v: fix bug with sign extension on RV64
ADDIWarm: fix infinite loop with self-referential frame pointer
Debug Info
dwarf: import C++ classes that reuse base-class tail padding
dwarf: import SIMD vector types as struct/union members
dwarf: ignore post-prolog spill locations for arglocs
dwarf: fix handling of duplicated Go formal parameters
dwarf: render AArch64 reg 31 as canonical
SP, not literalXSPdwarf: fix handling of 0-address symbols
dwarf: skip line numbers with out-of-range addresses
dwarf: line-number import was very slow on large binaries
dwarf: incorrect handling of
DW_OP_bit_piecedwarf: incorrect parsing of
xmmregister locations on x86_64
Type System
tinfo: guard
unpack_typestragainstNULLfromunpack_strtypes: removing a
__shiftedtype's parent could crash IDAtypes: structure xrefs to stack variables with dotted member names showed raw netnode keys
tinfo: stale frame cache hit tripped INTERR 955
tinfo: do not save empty tinfo
tinfo:
PRTYPE_DEFneed to be reset after usageframe: function return address frame slot should not be overlapped
Core
network: Windows TLS: 'Failed to load baked-in Root Certificate'
analysis: opening a large database could hang while propagating function argument names
idb: fix a crash at the database closing time
funcs dirtree: Windows source paths were not properly supported
idb: in a corrupted database, a function may contain another function as a tail
eh_parse: optimized xref traversal in
get_xref_info_for_ea()kernel: take into account a flow cref for function tail
Plugins, API & SDK
idc.py: trailing commas turned constants into tuples
idapython: don't crash on launch when Python is not configured
idapython: prevent crash when IDAPython initialization fails halfway
idapython: replace old contact email with github link
idapython: fix
idc.get_min_spd_ea()implementationkernel: duplicate warning when a fixed plugin failed to init
idalib:
parse_tagged_line_sections()was not availableidalib: flush database on process exit
idalib: honor
-Olicense:...when passed viaopen_database(args=...)idalib: suppress spurious "bad hotkey" warning in headless/text mode
idapython: a failed
ida_*module import made all of IDAPython unusableidapython: declare lines range SWIG dep so
sourcefile_tinheritsstart_ea/end_eacli: fix completion crash, redundant hints, and hint placement on multi-screen wayland
ui: fix IDA crash at exit when a plugin held PySide6 widgets in Python globals
idat: support
-Ohexrays:-Dname=valuein parse_options
UI & UX
ui: jumping to a structure from the pseudocode, could fail to place the cursor at the right type/offset
ui: IDA could UAF accessing freed out
line_data_tinstancesui: restore Dalvik chooser widgets when applying desktop
ui: snippets:
get_cur_snippet()returns a pointer, null when cur idx is staleui: status bar analysis indicator now updates synchronously when toggled
ui: fix possible wrong matches and internal error when quick-filtering a list whose item is filed under several folders
ui: xref graph: minimap froze IDA when two graphs were visible
ui: xref graph: zooming could get stuck when fit-to-view left the graph beyond the zoom limits
ui: xref graph: fix color for dark mode on MacOS
ui: in the License Manager dialog, retrying a failed borrow could crash IDA
ui: crash when using chooser actions dispatched via command palette
ui: jump to stack memory on dbl-click of stack var under debugger
ui: navbar click on data did not switch from pseudocode to IDA-View
ui: fix interr 40567 when switching from graph to flat view
ui: jump anywhere: restore focus around Jump Anywhere modal
exec()ui: jump anywhere: stop the Jump Anywhere preview from being picked as a jump fallback
ui: jump anywhere: clamp negative-underflow offsets in JumpAnywhere local-type expr
ui: jump anywhere: a trailing space in the query no longer clears the result list
ui: jump anywhere: result list no longer flickers when refining a query
ui: jump anywhere: drive history mirror from explicit gestures
ui: jump anywhere: improve history list contrast across themes
ui: jump anywhere: only select the mirrored input at dialog open
ui: jump anywhere: keep history selection across an empty-input round trip
ui: hint popup title was unreadable on macOS in dark mode with the default theme
ui: about dialog: show the version / build-type line without bold
ui: about dialog: bottom groupbox border was clipped by the buttons and artwork on some platforms
Licensing
licensing: a local borrowed license still produced a connection attempt to the license server
licensing: don't INTERR on borrowed license with an unsigned hexlic
licensing: borrowed license stuck in License Manager when Return failed
licensing: switching the license server silently kept using a borrow from the previous one
licensing: remove license as a requirement for update check
Debugger
pin: fix appcalls and exception handling
pin: improve exception handling in the pintool
dbg: elf: make executable libs runnable
dbg: gdb: auto-resume threads that hit breakpoints during a step
dbg: gdb: fix memory reads where the first byte is
0xE0-0xEFdbg: gdb: log unexpected
SIGTRAPfrom threads not resumed by clientdbg: gdb: prefer wildcard
vContto avoid common stub bugdbg: gdb: fix gdb test listing and disable
pc_gdb_notepad_replaydbg: gdb: fallback step packets for older stubs
dbg: gdb: avoid redundant
vCont;Cxx;ccontinue packets for bad serversdbg: gdb: perform multiple
qSupportedprobes for bad serversdbg: gdb: fix broken
X-write fallback toMwritesdbg: gdb: fix error handling in
qGetTIBAddrprobedbg: gdb: properly handle
swbreakandhwbreakin gdb serverdbg: gdb: fix crashing gdbserver on Windows
dbg: gdb: refactor the way pausing and stepping is handled
dbg: gdb: fix duplicate/empty modules
dbg: gdb: send default continue action for other threads
dbg: gdb: handle library stop reason
dbg: gdb: get the image base from the TIB in
setup_exeimgdbg: gdb: attempt
qGetTIBAddrfor every threaddbg: gdb: fix missing multiprocess gdb feature
Share your feedback
Spotted a bug or have a suggestion for the beta? Let us know and contribute to IDA evolution through one of the following channels:
Hex-Rays Support (Early access feedback form),
Email: support@hex-rays.com, or
Slack: Join the discussion in our dedicated beta channel. If you didn’t receive the invitation link, contact us.
Last updated
Was this helpful?
