Skip to content

Update Ghidra HEAD to commit 52aed0a72#431

Merged
ekilmer merged 2 commits into
masterfrom
cron/update-ghidra-52aed0a72
Jun 30, 2026
Merged

Update Ghidra HEAD to commit 52aed0a72#431
ekilmer merged 2 commits into
masterfrom
cron/update-ghidra-52aed0a72

Conversation

@auto-updater

@auto-updater auto-updater Bot commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

⚠️ Manual Intervention Required

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 (.slaspec files are auto-generated; other types may need manual updates):

  • Ghidra/Processors/V850/data/languages/V850.sinc
  • Ghidra/Processors/V850/data/languages/V850_instructions.sinc
  • Ghidra/Processors/V850/data/languages/V850e3.pspec
  • Ghidra/Processors/V850/data/languages/V850e3.sinc
  • Ghidra/Processors/V850/data/languages/V850e3.slaspec

Deleted Spec Files

Verify these files are no longer referenced:

  • Ghidra/Processors/V850/data/languages/Helpers/Conditions.sinc
  • Ghidra/Processors/V850/data/languages/Helpers/Extras.sinc
  • Ghidra/Processors/V850/data/languages/Helpers/Macros.sinc
  • Ghidra/Processors/V850/data/languages/Helpers/Register.sinc
  • Ghidra/Processors/V850/data/languages/Helpers/Tokens.sinc
  • Ghidra/Processors/V850/data/languages/Helpers/Variables.sinc
  • Ghidra/Processors/V850/data/languages/Instructions/Arithmetic.sinc
  • Ghidra/Processors/V850/data/languages/Instructions/Float.sinc
  • Ghidra/Processors/V850/data/languages/Instructions/Load_Store.sinc
  • Ghidra/Processors/V850/data/languages/Instructions/Logic.sinc
  • Ghidra/Processors/V850/data/languages/Instructions/Special.sinc

Instructions

  • New C++ sources: Add to appropriate list in src/setup-ghidra-source.cmake
  • Deleted C++ sources: Remove from src/setup-ghidra-source.cmake
  • New spec files: Review if .slaspec files are auto-generated; other types may need manual updates
  • Deleted spec files: Verify no longer referenced

---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: https://github.com/NationalSecurityAgency/ghidra/issues/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

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
```
@auto-updater
auto-updater Bot requested a review from ekilmer as a code owner June 29, 2026 01:02
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>
@ekilmer
ekilmer merged commit 13e0c6b into master Jun 30, 2026
18 checks passed
@ekilmer
ekilmer deleted the cron/update-ghidra-52aed0a72 branch June 30, 2026 01:51
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.

1 participant