Update Ghidra HEAD to commit 52aed0a72#431
Merged
Merged
Conversation
Changed files:
```
M Ghidra/Features/Decompiler/src/decompile/cpp/Doxyfile
M Ghidra/Features/Decompiler/src/decompile/cpp/action.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/architecture.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/architecture.hh
M Ghidra/Features/Decompiler/src/decompile/cpp/blockaction.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/consolemain.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/coreaction.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/database.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/database.hh
M Ghidra/Features/Decompiler/src/decompile/cpp/docmain.hh
M Ghidra/Features/Decompiler/src/decompile/cpp/flow.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/ghidra_arch.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/ghidra_arch.hh
M Ghidra/Features/Decompiler/src/decompile/cpp/ghidra_process.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/ghidra_process.hh
M Ghidra/Features/Decompiler/src/decompile/cpp/ifacedecomp.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/ifaceterm.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/jumptable.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/jumptable.hh
M Ghidra/Features/Decompiler/src/decompile/cpp/op.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/op.hh
M Ghidra/Features/Decompiler/src/decompile/cpp/pcodecompile.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/pcodecompile.hh
M Ghidra/Features/Decompiler/src/decompile/cpp/printc.hh
M Ghidra/Features/Decompiler/src/decompile/cpp/printlanguage.hh
M Ghidra/Features/Decompiler/src/decompile/cpp/semantics.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/semantics.hh
M Ghidra/Features/Decompiler/src/decompile/cpp/sleigh_arch.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/sleigh_arch.hh
M Ghidra/Features/Decompiler/src/decompile/cpp/slgh_compile.hh
M Ghidra/Features/Decompiler/src/decompile/cpp/slghsymbol.hh
M Ghidra/Features/Decompiler/src/decompile/cpp/subflow.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/testfunction.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/translate.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/type.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/typeop.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/typeop.hh
M Ghidra/Features/Decompiler/src/decompile/cpp/unionresolve.cc
M Ghidra/Processors/68000/data/languages/68000.sinc
M Ghidra/Processors/PowerPC/data/languages/ppc_32_e500mc_be.cspec
M Ghidra/Processors/PowerPC/data/languages/ppc_32_e500mc_le.cspec
M Ghidra/Processors/RISCV/data/languages/riscv.rv32m.sinc
M Ghidra/Processors/RISCV/data/languages/riscv.rv64m.sinc
M Ghidra/Processors/Sparc/data/languages/SparcV9.sinc
M Ghidra/Processors/V850/certification.manifest
D Ghidra/Processors/V850/data/languages/Helpers/Conditions.sinc
D Ghidra/Processors/V850/data/languages/Helpers/Extras.sinc
D Ghidra/Processors/V850/data/languages/Helpers/Macros.sinc
D Ghidra/Processors/V850/data/languages/Helpers/Register.sinc
D Ghidra/Processors/V850/data/languages/Helpers/Tokens.sinc
D Ghidra/Processors/V850/data/languages/Helpers/Variables.sinc
D Ghidra/Processors/V850/data/languages/Instructions/Arithmetic.sinc
D Ghidra/Processors/V850/data/languages/Instructions/Float.sinc
D Ghidra/Processors/V850/data/languages/Instructions/Load_Store.sinc
D Ghidra/Processors/V850/data/languages/Instructions/Logic.sinc
D Ghidra/Processors/V850/data/languages/Instructions/Special.sinc
A Ghidra/Processors/V850/data/languages/V850.dwarf
M Ghidra/Processors/V850/data/languages/V850.ldefs
M Ghidra/Processors/V850/data/languages/V850.opinion
M Ghidra/Processors/V850/data/languages/V850.pspec
A Ghidra/Processors/V850/data/languages/V850.sinc
M Ghidra/Processors/V850/data/languages/V850.slaspec
A Ghidra/Processors/V850/data/languages/V850_instructions.sinc
A Ghidra/Processors/V850/data/languages/V850e3.pspec
A Ghidra/Processors/V850/data/languages/V850e3.sinc
A Ghidra/Processors/V850/data/languages/V850e3.slaspec
M Ghidra/Processors/V850/data/manuals/v850.idx
M Ghidra/Processors/x86/data/languages/ia.sinc
```
Commit details:
```
[Commit 1/16]
Hash: bab81cb679ca810fcb3279fb87b6c205d754dcf1
Date: 2026-06-08 17:36:39 +0000
Message: GP-941: Correct SparcV9 register operand display to be consistent
Files changed:
M Ghidra/Processors/Sparc/data/languages/SparcV9.sinc
[Commit 2/16]
Hash: db3782947177bd6a65d732db896f99a59c12c49b
Date: 2024-06-26 15:25:49 -0700
Message: decomp_dbg: fix left/right arrow keyboard input decomp_dbg: use keyboard up/down arrow to control history
Files changed:
M Ghidra/Features/Decompiler/src/decompile/cpp/ifaceterm.cc
[Commit 3/16]
Hash: 3c7e4d1503335db589064a08aa633e8bf19faed2
Date: 2023-10-27 16:09:32 +0000
Message: Properly iterate through resolvemap when remove resolve ranges
Files changed:
M Ghidra/Features/Decompiler/src/decompile/cpp/database.cc
[Commit 4/16]
Hash: 376ac1a0a04bfbc0871238b1f019fd0d4353375f
Date: 2026-06-23 17:36:03 +0000
Message: GP-6995 SLEIGH decode checks
Files changed:
M Ghidra/Features/Decompiler/src/decompile/cpp/slghsymbol.hh
M Ghidra/Features/Decompiler/src/decompile/cpp/translate.cc
[Commit 5/16]
Hash: 12806006b5e03fe1583eceeee37494fccb9144de
Date: 2023-03-05 11:33:25 +0100
Message: Add custom printRaw implementation for TypeOps with ambiguous printRaw This adds a `printRaw` implementation to 13 TypeOps, similar in implementation to `TypeOpIntSright::printRaw`.
Files changed:
M Ghidra/Features/Decompiler/src/decompile/cpp/typeop.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/typeop.hh
[Commit 6/16]
Hash: 05c8a9c312db0c3b6c3fcd89dc86cca7f0490e76
Date: 2026-06-22 16:57:08 +0000
Message: GP-6985 Send back consistent function symbol or hole
Files changed:
M Ghidra/Features/Decompiler/src/decompile/cpp/action.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/architecture.hh
M Ghidra/Features/Decompiler/src/decompile/cpp/blockaction.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/database.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/ghidra_arch.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/ghidra_arch.hh
M Ghidra/Features/Decompiler/src/decompile/cpp/ghidra_process.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/ghidra_process.hh
M Ghidra/Features/Decompiler/src/decompile/cpp/sleigh_arch.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/sleigh_arch.hh
[Commit 7/16]
Hash: 6f5fa3192c92996a81955d2183712c62b9e7d477
Date: 2025-01-15 15:21:19 +0000
Message: GP-2907: Added v850e3 language variant instructions
Files changed:
M Ghidra/Processors/V850/certification.manifest
D Ghidra/Processors/V850/data/languages/Helpers/Conditions.sinc
D Ghidra/Processors/V850/data/languages/Helpers/Extras.sinc
D Ghidra/Processors/V850/data/languages/Helpers/Macros.sinc
D Ghidra/Processors/V850/data/languages/Helpers/Register.sinc
D Ghidra/Processors/V850/data/languages/Helpers/Tokens.sinc
D Ghidra/Processors/V850/data/languages/Helpers/Variables.sinc
D Ghidra/Processors/V850/data/languages/Instructions/Arithmetic.sinc
D Ghidra/Processors/V850/data/languages/Instructions/Float.sinc
D Ghidra/Processors/V850/data/languages/Instructions/Load_Store.sinc
D Ghidra/Processors/V850/data/languages/Instructions/Logic.sinc
D Ghidra/Processors/V850/data/languages/Instructions/Special.sinc
A Ghidra/Processors/V850/data/languages/V850.dwarf
M Ghidra/Processors/V850/data/languages/V850.ldefs
M Ghidra/Processors/V850/data/languages/V850.opinion
M Ghidra/Processors/V850/data/languages/V850.pspec
A Ghidra/Processors/V850/data/languages/V850.sinc
M Ghidra/Processors/V850/data/languages/V850.slaspec
A Ghidra/Processors/V850/data/languages/V850_instructions.sinc
A Ghidra/Processors/V850/data/languages/V850e3.pspec
A Ghidra/Processors/V850/data/languages/V850e3.sinc
A Ghidra/Processors/V850/data/languages/V850e3.slaspec
M Ghidra/Processors/V850/data/manuals/v850.idx
[Commit 8/16]
Hash: 891826dbc951afe823f07d26447728a6eb259f82
Date: 2025-12-23 23:06:20 +0100
Message: 68000: movem.w always uses 2 increments
Details:
movem exists in 2 symmetrical variants, register to memory (save to stack) and memory to register (pull from stack).
Per 68000 manual, when in word mode, increment (respectively decrement) is 2, and 4 in long mode.
For word mode, the various registers masks are handled by m2rfw0, r2mbw0, and r2mfw0.
This patch corrects the pointer increment for r2mbw0 to 2, aligning it to m2rfw0 and r2mfw0.
Files changed:
M Ghidra/Processors/68000/data/languages/68000.sinc
[Commit 9/16]
Hash: 86f4daefc594b5df331e2a538150aa678ca6c0d5
Date: 2026-06-18 00:18:15 +0000
Message: Handle TYPE_CODE in isPtrsubMatching
Files changed:
M Ghidra/Features/Decompiler/src/decompile/cpp/type.cc
[Commit 10/16]
Hash: 7cfdb503153c1cd1f5dbbb235e0e0847d63088cc
Date: 2026-02-18 23:47:44 +0100
Message: Do not apply rule ptrsubundo for pointers targeting ARM Thumb functions
Details:
In ARM Thumb, function pointers are used with an offset. For example,
let's consider this C program:
static void fn(void) {}
__attribute__((noinline, optimize("O0")))
static void call_function(void (*callback)(void)) {
callback();
}
void call_fn_through_reference(void) {
call_function(fn);
}
Function call_fn_through_reference actually gives the address fn + 1 in
the first parameter of call_function, when this code is compiled in ARM
Thumb mode. In such a situation, Ghidra's decompiler produced:
void call_fn_through_reference(void)
{
call_function((void *)0x10189);
return;
}
The rules which were applied included both:
- rule constantptr, which converted the constant 0x10189 to
(#0x0 -> #0x10188) + #0x1 (opcodes PTRSUB and INT_ADD) ;
- rule ptrsubundo, which converted this expression to
(#0x0 + #0x10188) + #0x1 (later simplified to #0x10189).
The second rule cancelled the first one. In this case, rule ptrsubundo
should not be applied as the expression involving PTRSUB targets a valid
location.
Nevertheless, TypePointer::isPtrsubMatching(off=0x10188, extra=1, multiplier=0)
returned false. This is due to the fact that even though the size of
symbol fn was adjusted to be 2 (in method DecompileCallback::encodeFunction in
Ghidra/Features/Decompiler/src/main/java/ghidra/app/decompiler/DecompileCallback.java
), the actual type is "pointer to a TypeCode which size is 1", so
extra >= subType->getSize() and the method returned false.
Fix TypePointer::isPtrsubMatching to return true when a pointer to some
code is encountered with extra >= 0. This makes Ghidra's decompiler now
produce:
void call_fn_through_reference(void)
{
call_function(fn + 1);
return;
}
Fixes: NationalSecurityAgency/ghidra#8471
Fixes: 34adcff8308d ("GP-4782 Refactor RulePtrsubUndo")
Files changed:
M Ghidra/Features/Decompiler/src/decompile/cpp/type.cc
[Commit 11/16]
Hash: ff4f0ed1f6a866ce0bea86b921d67ce656e3cc8d
Date: 2026-06-12 15:22:23 +0000
Message: GP-6946 Refactor JumpTable thunk check
Files changed:
M Ghidra/Features/Decompiler/src/decompile/cpp/jumptable.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/jumptable.hh
[Commit 12/16]
Hash: e465f9b3d620b47ad367065fc1f0e4329ffa492a
Date: 2026-06-15 17:59:24 +0000
Message: GP-6967 Add getScopeDelimiter
Files changed:
M Ghidra/Features/Decompiler/src/decompile/cpp/Doxyfile
M Ghidra/Features/Decompiler/src/decompile/cpp/architecture.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/architecture.hh
M Ghidra/Features/Decompiler/src/decompile/cpp/consolemain.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/coreaction.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/database.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/database.hh
M Ghidra/Features/Decompiler/src/decompile/cpp/docmain.hh
M Ghidra/Features/Decompiler/src/decompile/cpp/ifacedecomp.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/pcodecompile.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/pcodecompile.hh
M Ghidra/Features/Decompiler/src/decompile/cpp/printc.hh
M Ghidra/Features/Decompiler/src/decompile/cpp/printlanguage.hh
M Ghidra/Features/Decompiler/src/decompile/cpp/semantics.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/semantics.hh
M Ghidra/Features/Decompiler/src/decompile/cpp/slgh_compile.hh
M Ghidra/Features/Decompiler/src/decompile/cpp/subflow.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/testfunction.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/unionresolve.cc
[Commit 13/16]
Hash: 8cdec9bbf6334fb12a163408f8404c1e3d907e3b
Date: 2026-06-15 20:08:40 +0000
Message: GP-6989 e500mc stack offset adjustment
Files changed:
M Ghidra/Processors/PowerPC/data/languages/ppc_32_e500mc_be.cspec
M Ghidra/Processors/PowerPC/data/languages/ppc_32_e500mc_le.cspec
[Commit 14/16]
Hash: edb05a43b9991fba471eb79433aea01f7e1142c7
Date: 2024-05-15 16:17:17 +0930
Message: riscv: handle divideby0
Files changed:
M Ghidra/Processors/RISCV/data/languages/riscv.rv32m.sinc
M Ghidra/Processors/RISCV/data/languages/riscv.rv64m.sinc
[Commit 15/16]
Hash: 48f4c0b040456b99c3de84685657bed1d4a0f390
Date: 2026-06-11 20:53:01 +0000
Message: GP-6957 Relative branch to next instruction is more flexible
Files changed:
M Ghidra/Features/Decompiler/src/decompile/cpp/flow.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/op.cc
M Ghidra/Features/Decompiler/src/decompile/cpp/op.hh
[Commit 16/16]
Hash: 4f1b1bdefffffbdf4feeadfbc0f32f8da39f33a4
Date: 2026-06-08 18:57:31 +0000
Message: GP-6937: Fixed x86 Xmmreg2 accessing EVEX registers in non-EVEX
Files changed:
M Ghidra/Processors/x86/data/languages/ia.sinc
```
Upstream refactored semantics.cc/semantics.hh, so the context lines in 0001-Fix-UBSAN-errors-in-decompiler.patch no longer matched and git am rejected it. Regenerate the patch against the new source; ConstTpl still initializes select in the constructors that left it uninitialized. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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.
The following files were added or deleted and may require manual CMake configuration updates:
New Spec Files
Review if these files need manual CMake updates (
.slaspecfiles are auto-generated; other types may need manual updates):Ghidra/Processors/V850/data/languages/V850.sincGhidra/Processors/V850/data/languages/V850_instructions.sincGhidra/Processors/V850/data/languages/V850e3.pspecGhidra/Processors/V850/data/languages/V850e3.sincGhidra/Processors/V850/data/languages/V850e3.slaspecDeleted Spec Files
Verify these files are no longer referenced:
Ghidra/Processors/V850/data/languages/Helpers/Conditions.sincGhidra/Processors/V850/data/languages/Helpers/Extras.sincGhidra/Processors/V850/data/languages/Helpers/Macros.sincGhidra/Processors/V850/data/languages/Helpers/Register.sincGhidra/Processors/V850/data/languages/Helpers/Tokens.sincGhidra/Processors/V850/data/languages/Helpers/Variables.sincGhidra/Processors/V850/data/languages/Instructions/Arithmetic.sincGhidra/Processors/V850/data/languages/Instructions/Float.sincGhidra/Processors/V850/data/languages/Instructions/Load_Store.sincGhidra/Processors/V850/data/languages/Instructions/Logic.sincGhidra/Processors/V850/data/languages/Instructions/Special.sincInstructions
src/setup-ghidra-source.cmakesrc/setup-ghidra-source.cmake.slaspecfiles are auto-generated; other types may need manual updates---Changed files:
Commit details: