|
| 1 | +# Ghidra 12.0.1 Change History (January 2026) |
| 2 | + |
| 3 | +### Improvements |
| 4 | +* _Build_. Upgraded Ghidra's local copies of the `packaging`, `setuptools`, and `wheel` Python wheels. (GP-6284, Issue #8852) |
| 5 | +* _CodeBrowser_. Fixed an issue with stack depth following across indirect function calls which would occur in windows external indirect calls. (GP-6315, Issue #8837) |
| 6 | +* _Debugger:Emulator_. The emulator will now use the nearest snapshot, allowing it to resume more quickly after restarting Ghidra. (GP-6236, Issue #8767) |
| 7 | +* _Debugger:Time_. Invalidated rows in Time Panel are now displayed in gray. This is to indicate that navigating to it will require re-emulation. (GP-6244) |
| 8 | +* _Decompiler_. Added abstract interpretation via the Software and System Verification (SSV) group @ Università Ca' Foscari's Library for Static Analysis (LiSA). This capability was meant for the previous release, as noted in the 12.0 Change History. (GP-6225) |
| 9 | + |
| 10 | +### Bugs |
| 11 | +* _Assembler_. Fixed issue preventing some PPC VLE instructions from assembling. (GP-6109, Issue #8624) |
| 12 | +* _Assembler_. Fixed an issue with Assembler corrupting instructions that followed, especially when ISA mode is involved. (GP-6295, Issue #8826) |
| 13 | +* _Debugger:Emulator_. Fixed some crash cases in Taint emulator regarding mismatched op sizes. (GP-6287) |
| 14 | +* _Debugger:Emulator_. Fixed issues in P-code Stepper: Uniques table crashed if unique was not yet written. Stepping backward emptied p-code listing and uniques table. (GP-6294) |
| 15 | +* _Debugger:Emulator_. Fixed a `NullPointerException` in the emulation service when forking from a live target. (GP-6298) |
| 16 | +* _Decompiler_. Fixed a Decompiler bug that caused _"Deleting op with descendants"_ exceptions. (GP-6090, Issue #8594) |
| 17 | +* _Decompiler_. Fixed Decompiler bug that occurred when splitting LOAD and STORE operations of laned registers. (GP-6130, Issue #8620) |
| 18 | +* _Decompiler_. Fixed bug preventing the display of a nested field access when using an offset pointer. (GP-6133, Issue #8630) |
| 19 | +* _Decompiler_. Fixed a Decompiler regression that caused _"Free varnode has multiple descendants"_ exceptions. (GP-6201, Issue #8743) |
| 20 | +* _Decompiler_. Fixed a bug in the Decompiler producing _"PTRSUB off of non structured pointer type"_ exceptions. (GP-6224, Issue #8745) |
| 21 | +* _Emulator_. Corrected regression error to pcode emulation for cases where named pcodeops were used (i.e., CALLOTHER pcodeop) and argument indexing within the java pcode implementation was incorrect. (GP-6229) |
| 22 | +* _Emulator_. Fixed crash seen in P-code Stepper when reading a unique varnode before it is written. (GP-6253) |
| 23 | +* _GUI_. Fixed a `NullPointerException` in function graph middle-mouse highlighter. (GP-6254, Issue #8798) |
| 24 | +* _Importer:ELF_. Corrected improper ELF relocation processing for PowerPC-32 types `R_PPC_ADDR16_HA(6)` and `R_PPC_ADDR16_LO(4)`. (GP-6329) |
| 25 | +* _Listing_. Fixed a Listing bug that caused text, copied from the memory block header, to be off by one character. (GP-6263, Issue #8797) |
| 26 | +* _Processors_. Fixed operand consistency issue in M68000 processor. (GP-5334, Issue #4358) |
| 27 | +* _Scripting_. Fixed issue in `RecoverClassesFromRTTIScript` where it could get into an infinite loop if the option to shorten template names in structures is set and there are exact template names in multiple parent namespaces. (GP-6183, Issue #8199) |
| 28 | +* _Scripting_. Fixed a PyGhidra `AttributeError` when performing a `from pyghidra import *`. (GP-6241, Issue #8789) |
| 29 | +* _Scripting_. Released PyGhidra 3.0.2, which contains fixes to `pyghidra.analysis_properties()` and exceptions being inadvertently squashed by some API functions. (GP-6283, Issue #8018) |
| 30 | +* _Scripting_. PyGhidra should now always exit the Python processes cleanly, no longer being kept alive by a potentially running task monitor timer. (GP-6301, Issue #8858) |
| 31 | +* _Sleigh_. Corrected Sleigh compiler regression error affecting unique subpiece semantics for certain cases which produced invalid unique varnode offsets. (GP-6237, Issue #8784) |
| 32 | +* _Terminal_. Implemented `repeat the preceding graphics character (REP)` (`CSI Ps b`) terminal code logic, as such sequences were breaking the Terminal. (GP-6191) |
| 33 | + |
| 34 | +### Notable API Changes |
| 35 | +* _BSim_. (GP-6250) The `ghidra.net.ApplicationSSLSocketFactory` has been replaced by `ghidra.net.DefaultSSLSocketFactory`. This is currently used by BSim when communicating with a <I>postgresql</I> server. |
| 36 | +* _Debugger:Emulator_. (GP-6236) Added `TraceTimeManager.findSnapshotWithNearestPrefix()`. Several new methods in `TraceSchedule`, including: `hasPSteps`, `stepCount`, `dropLastStep`, `lastStep`, `truncateToSteps`. |
| 37 | +* _Debugger:Emulator_. (GP-6298) Added `TraceSnapshot.isSnapOnly()` and `.isStale()`. |
| 38 | +* _Emulator_. (GP-6229) The emulation support method for CALLOTHER `OpBehaviorOther.evaluate` implementations has dropped the first input varnode which was used to identify the `OpBehaviorOther` implementation. Only the inputs which are specified by the arguments passed to the named pcodeop within the slapsec are now passed to this method. NOTE: The actual API change occurred within Ghidra 11.3 with GP-4643 change. |
| 39 | + |
1 | 40 | # Ghidra 12.0 Change History (December 2025) |
2 | 41 |
|
3 | 42 | ### New Features |
|
0 commit comments