Compare commits

...

25 Commits

Author SHA1 Message Date
dependabot[bot] f4fe9a9c46 build(deps): bump actions/checkout from 6 to 7 (#427)
Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-20 15:43:03 -04:00
auto-updater[bot] 6f71b8bb38 Update Ghidra HEAD to commit 74d498f8d (#425)
Bump Ghidra HEAD commit 74d498f8d

Changed files:

```
M	Ghidra/Features/Decompiler/src/decompile/cpp/Makefile
M	Ghidra/Features/Decompiler/src/decompile/cpp/address.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/funcdata_varnode.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/space.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/translate.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/translate.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/type.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/type.hh
M	Ghidra/Processors/68000/certification.manifest
M	Ghidra/Processors/68000/data/languages/68000.ldefs
M	Ghidra/Processors/68000/data/languages/68000.sinc
A	Ghidra/Processors/68000/data/languages/CPU32.slaspec
M	Ghidra/Processors/ARM/data/languages/ARMTHUMBinstructions.sinc
M	Ghidra/Processors/HCS12/data/languages/HCS_HC12.sinc
M	Ghidra/Processors/x86/certification.manifest
M	Ghidra/Processors/x86/data/languages/avx.sinc
M	Ghidra/Processors/x86/data/languages/avx2.sinc
M	Ghidra/Processors/x86/data/languages/avx2_manual.sinc
M	Ghidra/Processors/x86/data/languages/avx512.sinc
M	Ghidra/Processors/x86/data/languages/avx512_manual.sinc
M	Ghidra/Processors/x86/data/languages/avx_manual.sinc
A	Ghidra/Processors/x86/data/languages/cmpccxadd.sinc
M	Ghidra/Processors/x86/data/languages/fma.sinc
M	Ghidra/Processors/x86/data/languages/ia.sinc
A	Ghidra/Processors/x86/data/languages/rao.sinc
M	Ghidra/Processors/x86/data/languages/sgx.sinc
M	Ghidra/Processors/x86/data/languages/x86-64.slaspec
M	Ghidra/Processors/x86/data/languages/x86.slaspec
```

Commit details:

```
[Commit 1/8]
Hash: 6dd07f90ffcfc4136005e5e6c439b76f572bfdd8
Date: 2026-06-08 21:37:27 +0000
Message: GP-6936 Support for wrapped memory ranges

Files changed:
  M	Ghidra/Features/Decompiler/src/decompile/cpp/address.hh
  M	Ghidra/Features/Decompiler/src/decompile/cpp/funcdata_varnode.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/space.hh
  M	Ghidra/Features/Decompiler/src/decompile/cpp/translate.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/translate.hh
  M	Ghidra/Features/Decompiler/src/decompile/cpp/type.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/type.hh

[Commit 2/8]
Hash: 70b7ec590ad646ebe767e099a88309fad37035cc
Date: 2026-06-10 07:25:22 -0400
Message: GP-6061: Implemented several x86 AVX instructions

Files changed:
  M	Ghidra/Processors/x86/data/languages/avx.sinc
  M	Ghidra/Processors/x86/data/languages/avx2.sinc
  M	Ghidra/Processors/x86/data/languages/avx2_manual.sinc
  M	Ghidra/Processors/x86/data/languages/avx512.sinc
  M	Ghidra/Processors/x86/data/languages/avx512_manual.sinc
  M	Ghidra/Processors/x86/data/languages/avx_manual.sinc
  M	Ghidra/Processors/x86/data/languages/fma.sinc

[Commit 3/8]
Hash: a3167f7bd774f6482e193dcffebf72d6adccf1bf
Date: 2026-06-09 15:53:44 +0000
Message: GP-0: Refactor x86 jcc bh change to reduce impact on existing code

Files changed:
  M	Ghidra/Processors/x86/data/languages/ia.sinc

[Commit 4/8]
Hash: 21a825a05d7a24848a36758861898abaad9a1ca5
Date: 2026-06-08 15:11:29 -0400
Message: GP-6642: Corrected disassembly of HCS-H12 BRN instruction

Files changed:
  M	Ghidra/Processors/HCS12/data/languages/HCS_HC12.sinc

[Commit 5/8]
Hash: 2c3ca6df4cd24ca0d809a93450b78d9e7ff2ee7a
Date: 2026-06-08 15:10:05 -0400
Message: GP-5780: Added several missing x86 instructions

Files changed:
  M	Ghidra/Processors/x86/certification.manifest
  A	Ghidra/Processors/x86/data/languages/cmpccxadd.sinc
  M	Ghidra/Processors/x86/data/languages/ia.sinc
  A	Ghidra/Processors/x86/data/languages/rao.sinc
  M	Ghidra/Processors/x86/data/languages/sgx.sinc
  M	Ghidra/Processors/x86/data/languages/x86-64.slaspec
  M	Ghidra/Processors/x86/data/languages/x86.slaspec

[Commit 6/8]
Hash: 5194daa9e57a213f233ed122160a101a1131acce
Date: 2026-06-06 13:34:24 +0200
Message: ARM M-profile: fix mrsipsr ISR_NUMBER mask (0x1f -> 0x1ff)

Files changed:
  M	Ghidra/Processors/ARM/data/languages/ARMTHUMBinstructions.sinc

[Commit 7/8]
Hash: e02b069461b5795cad9df948c909965e8f9a15e3
Date: 2026-02-16 19:17:42 -0500
Message: Add OpenBSD support for x86_64 and arm_64.

Files changed:
  M	Ghidra/Features/Decompiler/src/decompile/cpp/Makefile

[Commit 8/8]
Hash: e50f27d6b683c7c781f78e296ec3d66f4f1637a6
Date: 2026-03-28 15:31:09 +0000
Message: #1244 Add CPU32 processor variant with full instruction set support
Details:
Add Motorola CPU32 processor variant to the 68000 processor module.
CPU32 is based on the 68020 with some instructions removed and table
lookup/interpolation instructions added. Used in MC68330, MC68340,
MC68360 and similar microcontrollers.

Changes:
- 68000.sinc: @ifdef/@ifndef CPU32 conditionals
  - Added: TBL instructions, LPSTOP, BGND
  - Excluded: BFxxx, CALLM, CAS, CAS2, PACK, RTM, UNPK
- CPU32.slaspec: new language specification
- 68000.ldefs: CPU32 variant definition
- certification.manifest: CPU32.slaspec entry
- Emulator test classes and pcode_defs.py configuration

All 79 CPU32 instructions verified against CPU32 Reference Manual
(Rev 1, Dec 1990). Pcode emulator tests pass: 16/16 O0, 16/16 O3.

Files changed:
  M	Ghidra/Processors/68000/certification.manifest
  M	Ghidra/Processors/68000/data/languages/68000.ldefs
  M	Ghidra/Processors/68000/data/languages/68000.sinc
  A	Ghidra/Processors/68000/data/languages/CPU32.slaspec
```

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Eric Kilmer <eric.kilmer@trailofbits.com>
2026-06-15 10:17:01 -04:00
Eric Kilmer df4e0ff075 Default to Visual Studio 18 2026 in CMakePresets (#426)
CI updated and now installs this new version
2026-06-15 09:57:30 -04:00
auto-updater[bot] 5fa7adbd2d Update Ghidra HEAD to commit 134f5394f (#423)
Bump Ghidra HEAD commit 134f5394f

Changed files:

```
M	Ghidra/Features/Decompiler/src/decompile/cpp/bitfield.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/bitfield.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/ruleaction.cc
```

Commit details:

```
[Commit 1/2]
Hash: e1a1dc14e98dc8db0f30b0602fd4ce1301361f2e
Date: 2026-05-27 22:20:55 +0000
Message: GP-6882 Check for free varnode in RuleDoubleSub

Files changed:
  M	Ghidra/Features/Decompiler/src/decompile/cpp/ruleaction.cc

[Commit 2/2]
Hash: 6e88715d8be92ebea52f297cf839127037d7f626
Date: 2026-05-19 22:17:50 +0000
Message: GP-6850 adjust handling of INDIRECT in BitFieldInsertTransform

Files changed:
  M	Ghidra/Features/Decompiler/src/decompile/cpp/bitfield.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/bitfield.hh
```

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-06-08 11:57:06 -04:00
Eric Kilmer bfd38a983b Ghidra 12.1.2 (#424) 2026-06-08 09:40:23 -04:00
auto-updater[bot] c83e3ec4d8 Update Ghidra HEAD to commit 6e8d599d5 (#422)
Bump Ghidra HEAD commit 6e8d599d5

Changed files:

```
M	Ghidra/Processors/RISCV/data/languages/riscv.csr.sinc
M	Ghidra/Processors/RISCV/data/languages/riscv.table.sinc
```

Commit details:

```
[Commit 1/1]
Hash: 6a40c607cd38f77ee95bb2c8276eb750749279fd
Date: 2026-05-27 09:35:06 -0400
Message: GP-6849: Fixed RISC-V writing to constant and a few register operands

Files changed:
  M	Ghidra/Processors/RISCV/data/languages/riscv.csr.sinc
  M	Ghidra/Processors/RISCV/data/languages/riscv.table.sinc
```

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-06-01 09:14:47 -04:00
auto-updater[bot] eeee4453c8 Update Ghidra HEAD to commit 94164bd6e (#421)
* Bump Ghidra HEAD commit 94164bd6e

Changed files:

```
M	Ghidra/Features/Decompiler/src/decompile/cpp/architecture.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/bfd_arch.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/block.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/block.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/blockaction.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/blockaction.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/coreaction.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/cpool.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/cpool.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/database.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/error.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/flow.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/funcdata.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/funcdata.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/funcdata_block.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/funcdata_op.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/funcdata_varnode.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/ifacedecomp.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/ifaceterm.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/interface.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/jumptable.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/loadimage.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/marshal.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/marshal.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/modelrules.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/multiprecision.cc
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/override.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/pcoderaw.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/raw_arch.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/ruleaction.cc
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.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/slgh_compile.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/slgh_compile.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/slghparse.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/slghparse.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/slghparse.y
M	Ghidra/Features/Decompiler/src/decompile/cpp/slghpatexpress.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/slghpattern.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/slghscan.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/slghsymbol.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/slghsymbol.hh
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/type.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/userop.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/variable.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/variable.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/varnode.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/varnode.hh
A	Ghidra/Features/Decompiler/src/decompile/unittests/testmultiprec.cc
M	Ghidra/Processors/8051/certification.manifest
M	Ghidra/Processors/8051/data/languages/8051.ldefs
A	Ghidra/Processors/8051/data/languages/cip-51.pspec
M	Ghidra/Processors/8051/data/languages/keil-cx51.cspec
M	Ghidra/Processors/AARCH64/certification.manifest
M	Ghidra/Processors/AARCH64/data/languages/AARCH64.ldefs
M	Ghidra/Processors/AARCH64/data/languages/AARCH64.opinion
D	Ghidra/Processors/AARCH64/data/languages/AARCH64_swift.cspec
M	Ghidra/Processors/AARCH64/data/languages/AppleSilicon.ldefs
M	Ghidra/Processors/MIPS/certification.manifest
M	Ghidra/Processors/MIPS/data/languages/mips.ldefs
M	Ghidra/Processors/MIPS/data/languages/mips.sinc
A	Ghidra/Processors/MIPS/data/languages/mips32_16e.pspec
A	Ghidra/Processors/MIPS/data/languages/mips64_16e.pspec
M	Ghidra/Processors/MIPS/data/languages/mips_dsp.sinc
M	Ghidra/Processors/TI_MSP430/data/languages/TI_MSP430.cspec
M	Ghidra/Processors/x86/certification.manifest
M	Ghidra/Processors/x86/data/languages/avx.sinc
M	Ghidra/Processors/x86/data/languages/avx512.sinc
M	Ghidra/Processors/x86/data/languages/cet.sinc
M	Ghidra/Processors/x86/data/languages/fma.sinc
M	Ghidra/Processors/x86/data/languages/ia.sinc
D	Ghidra/Processors/x86/data/languages/x86-64-swift.cspec
M	Ghidra/Processors/x86/data/languages/x86.ldefs
M	Ghidra/Processors/x86/data/languages/x86.opinion
```

Commit details:

```
[Commit 1/14]
Hash: 6fe164d65107354f22314fd0db8b894b8b1c2fdf
Date: 2026-05-19 14:14:19 +0000
Message: GP-6847 fix musl issue with _exit function for Decompiler

Files changed:
  M	Ghidra/Features/Decompiler/src/decompile/cpp/ghidra_process.cc

[Commit 2/14]
Hash: 47b4d28cb0fdffdceea659a1e8d465c74fdb9e98
Date: 2026-05-18 13:45:39 -0400
Message: GP-6697: Fixed MIPS signed immediates

Files changed:
  M	Ghidra/Processors/MIPS/data/languages/mips.sinc
  M	Ghidra/Processors/MIPS/data/languages/mips_dsp.sinc

[Commit 3/14]
Hash: 3a479c9f7ebee2f8dd91e01b1dca9b04cae1b992
Date: 2026-05-17 19:48:41 -0400
Message: GP-6347: SourceLanguage modules and new extension points

Files changed:
  M	Ghidra/Processors/AARCH64/certification.manifest
  M	Ghidra/Processors/AARCH64/data/languages/AARCH64.ldefs
  M	Ghidra/Processors/AARCH64/data/languages/AARCH64.opinion
  D	Ghidra/Processors/AARCH64/data/languages/AARCH64_swift.cspec
  M	Ghidra/Processors/AARCH64/data/languages/AppleSilicon.ldefs
  M	Ghidra/Processors/x86/certification.manifest
  D	Ghidra/Processors/x86/data/languages/x86-64-swift.cspec
  M	Ghidra/Processors/x86/data/languages/x86.ldefs
  M	Ghidra/Processors/x86/data/languages/x86.opinion

[Commit 4/14]
Hash: 4661fc0bed1a46096a462a1d39f07674fb931c32
Date: 2026-05-04 21:48:44 +0000
Message: GP-6788 Keep track of immediate COPY propagation

Files changed:
  M	Ghidra/Features/Decompiler/src/decompile/cpp/block.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/block.hh
  M	Ghidra/Features/Decompiler/src/decompile/cpp/blockaction.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/blockaction.hh
  M	Ghidra/Features/Decompiler/src/decompile/cpp/coreaction.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/coreaction.hh
  M	Ghidra/Features/Decompiler/src/decompile/cpp/funcdata.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/funcdata.hh
  M	Ghidra/Features/Decompiler/src/decompile/cpp/funcdata_block.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/funcdata_op.cc
  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/ruleaction.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/variable.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/variable.hh
  M	Ghidra/Features/Decompiler/src/decompile/cpp/varnode.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/varnode.hh

[Commit 5/14]
Hash: 4e6ba952eacbf27143edb324a343172de9bc1533
Date: 2026-04-24 20:54:00 +0000
Message: GP-6757 Additional memory fixes

Files changed:
  M	Ghidra/Features/Decompiler/src/decompile/cpp/architecture.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/cpool.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/cpool.hh
  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/marshal.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/multiprecision.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/pcoderaw.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/slgh_compile.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/slgh_compile.hh
  M	Ghidra/Features/Decompiler/src/decompile/cpp/slghparse.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/slghparse.hh
  M	Ghidra/Features/Decompiler/src/decompile/cpp/slghparse.y
  M	Ghidra/Features/Decompiler/src/decompile/cpp/slghpattern.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/slghscan.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/slghsymbol.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/slghsymbol.hh
  M	Ghidra/Features/Decompiler/src/decompile/cpp/translate.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/userop.cc
  A	Ghidra/Features/Decompiler/src/decompile/unittests/testmultiprec.cc

[Commit 6/14]
Hash: 10029bf53d01b0d8af61c6e0c270cc0281650b31
Date: 2026-04-28 16:34:16 +0000
Message: GP-6675: Fixed up some instruction definitions

Files changed:
  M	Ghidra/Processors/x86/data/languages/ia.sinc
  M	Ghidra/Processors/x86/data/languages/x86.ldefs

[Commit 7/14]
Hash: cfaee5f04f142e54f5d6d772a1c07019beaab0b0
Date: 2025-09-02 12:06:29 -0700
Message: Sleigh engine memory fixes

Files changed:
  M	Ghidra/Features/Decompiler/src/decompile/cpp/marshal.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/marshal.hh
  M	Ghidra/Features/Decompiler/src/decompile/cpp/semantics.hh
  M	Ghidra/Features/Decompiler/src/decompile/cpp/slghpatexpress.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/slghsymbol.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/slghsymbol.hh

[Commit 8/14]
Hash: dc38904b1627b83b2ed9064ec44ed8c11d956c1f
Date: 2026-04-20 21:52:06 +0000
Message: GP-6757 unique_ptr protections

Files changed:
  M	Ghidra/Features/Decompiler/src/decompile/cpp/architecture.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/bfd_arch.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/block.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/consolemain.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/database.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/error.hh
  M	Ghidra/Features/Decompiler/src/decompile/cpp/flow.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/funcdata.cc
  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/interface.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/jumptable.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/loadimage.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/modelrules.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/override.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/raw_arch.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/semantics.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/sleigh.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/slghpatexpress.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/slghpattern.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/slghsymbol.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/translate.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/userop.cc

[Commit 9/14]
Hash: 67e0516f62f33bfa833bdc883bb8ea63d64c79e9
Date: 2026-05-07 17:16:49 +0000
Message: GP-6655: Create ldefs for 16e mode, so it appears in Dynamic Listing - Disassemble As

Files changed:
  M	Ghidra/Processors/MIPS/certification.manifest
  M	Ghidra/Processors/MIPS/data/languages/mips.ldefs
  A	Ghidra/Processors/MIPS/data/languages/mips32_16e.pspec
  A	Ghidra/Processors/MIPS/data/languages/mips64_16e.pspec

[Commit 10/14]
Hash: 8a09a052583f60432b68bcadcdc5adfb5fbf16e5
Date: 2026-05-07 16:37:12 +0000
Message: GP-6798: Corrected CIP-51 language definition

Files changed:
  M	Ghidra/Processors/8051/certification.manifest
  M	Ghidra/Processors/8051/data/languages/8051.ldefs
  A	Ghidra/Processors/8051/data/languages/cip-51.pspec
  M	Ghidra/Processors/8051/data/languages/keil-cx51.cspec

[Commit 11/14]
Hash: 4fac3553a866ade6c280cd33c9cfc58497a27be6
Date: 2026-05-05 15:37:34 -0400
Message: GP-6776 additional fixes

Files changed:
  M	Ghidra/Processors/TI_MSP430/data/languages/TI_MSP430.cspec

[Commit 12/14]
Hash: 9e547d2b51a04dad3a4f102d416ceab1fb79e3f9
Date: 2026-04-28 22:47:16 +0000
Message: GP-5525 More targeted data-type warnings

Files changed:
  M	Ghidra/Features/Decompiler/src/decompile/cpp/funcdata.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/funcdata.hh
  M	Ghidra/Features/Decompiler/src/decompile/cpp/funcdata_varnode.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/type.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/type.hh

[Commit 13/14]
Hash: 329d7bae86061e106c64044dce3637fd6ba0646f
Date: 2026-04-06 17:17:48 -0700
Message: address PR feedback
Details:
Fixes issues raised by @GhidorahRex. Adds new bug fx for MASKMOVQ.

Files changed:
  M	Ghidra/Processors/x86/data/languages/ia.sinc

[Commit 14/14]
Hash: b16f1556d26163d6fdc28bfe9dbac3c010b68ba9
Date: 2026-04-01 10:47:29 -0700
Message: fix various bugs in the x86 processor spec
Details:
Specifically:

 * ARPL uses CF instead of ZF for conditional RPL adjustment
 * DAA/DAS incorrect CF computation and missing result flags
 * SHR by-1 OF flag unconditionally set to 0
 * RDTSCP incorrectly restricted to 64-bit mode only
 * SYSEXIT uses wrong register mapping
 * FCMOVNBE condition logic error
 * FYL2X/FYL2XP1 missing log2 computation
 * CVTPD2DQ uses trunc() instead of round()
 * SUBB MMX missing byte lane [8,8]
 * PSLLD/PSLLQ XMM use per-element shift count
 * PCMPxSTRx missing implicit EAX/EDX inputs and EFLAGS outputs
 * CET WRSSQ/WRUSSQ duplicate 0x0F byte in encoding
 * FMA VEX_W0 missing on PS YMM 231-form constructors
 * VTESTPS YMM sign bit offset errors
 * AVX-512 VANDPS YMM dead variable
 * AVX-512 VMOVHLPS copies src2 to both halves
 * AVX-512 VMOVHPD load form dead variable
 * VPSUBSW ZMM form multiple errors
 * CVTPD2PI uses trunc() instead of round()
 * PSRAD XMM uses full 128-bit shift count
 * VMULPS YMM missing 8th element
 * FPREM/FPREM1 broken remainder computation
 * FDECSTP clears wrong condition code bit
 * VMCLEAR incorrectly restricted to 64-bit mode
 * SYSCALL does not model RCX and R11 clobber
 * VRANGESS missing imm8 operand
 * VFPCLASSSD/VFPCLASSSS missing imm8 operand
 * AVX-512 VUCOMISD/VUCOMISS missing EFLAGS computation
 * MASKMOVDQU incorrectly assigns to XmmReg1
 * DAS has same CF computation and missing flags issues as DAA
 * XGETBV/XSETBV ignore ECX selector

Files changed:
  M	Ghidra/Processors/x86/data/languages/avx.sinc
  M	Ghidra/Processors/x86/data/languages/avx512.sinc
  M	Ghidra/Processors/x86/data/languages/cet.sinc
  M	Ghidra/Processors/x86/data/languages/fma.sinc
  M	Ghidra/Processors/x86/data/languages/ia.sinc
```

* Add new unittest file

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Eric Kilmer <eric.kilmer@trailofbits.com>
2026-05-25 17:14:03 -04:00
Eric Kilmer d6d9b4c483 Add skill support for other coding agents and add new release skill 2026-05-15 16:39:48 -04:00
Eric Kilmer 7b4f1bce5e Update stable Ghidra to 12.1 (#420)
Regenerate stable patches against Ghidra_12.1_build and update
the stable source and spec lists for new 12.1 files.
2026-05-15 16:26:28 -04:00
auto-updater[bot] fa806a45c7 Update Ghidra HEAD to commit 3d92a003f (#419)
Bump Ghidra HEAD commit 3d92a003f

Changed files:

```
M	Ghidra/Processors/MIPS/data/languages/mips16.sinc
```

Commit details:

```
[Commit 1/1]
Hash: d29a605572866c2e564a537295e836c310af17f2
Date: 2026-04-29 20:15:19 +0000
Message: GP-6766: Corrected operand ordering for MIPS16e movz and movn

Files changed:
  M	Ghidra/Processors/MIPS/data/languages/mips16.sinc
```

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-05-11 10:17:08 -04:00
auto-updater[bot] c1aec71e40 Update Ghidra HEAD to commit b3eef5912 (#418)
Changed files:

```
M	Ghidra/Features/Decompiler/src/decompile/cpp/condexe.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/constseq.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/constseq.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/coreaction.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/coreaction.hh
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/float.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/float.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/flow.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/flow.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/funcdata.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/funcdata.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/funcdata_block.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/funcdata_varnode.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/merge.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/ruleaction.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/subflow.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/subflow.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/translate.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/translate.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/type.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/type.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/unionresolve.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/unionresolve.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/variable.cc
M	Ghidra/Processors/8051/certification.manifest
M	Ghidra/Processors/8051/data/languages/8051_main.sinc
A	Ghidra/Processors/8051/data/languages/cip-51.slaspec
A	Ghidra/Processors/8051/data/languages/keil-cx51.cspec
M	Ghidra/Processors/ARM/data/languages/ARM.sinc
M	Ghidra/Processors/ARM/data/languages/ARMTHUMBinstructions.sinc
M	Ghidra/Processors/ARM/data/languages/ARMneon.sinc
M	Ghidra/Processors/PIC/data/languages/pic18_instructions.sinc
M	Ghidra/Processors/PowerPC/data/languages/ppc_common.sinc
M	Ghidra/Processors/PowerPC/data/languages/ppc_isa.sinc
```

Commit details:

```
[Commit 1/15]
Hash: 9e18f9439e54f13d31c9fb2b7de373415849150b
Date: 2026-04-29 12:40:29 +0000
Message: GP-0: Fixed missing define statement

Files changed:
  M	Ghidra/Processors/8051/data/languages/8051_main.sinc

[Commit 2/15]
Hash: e12d821d861ec31266367d37ee7ed0aabaaf02ec
Date: 2026-02-26 19:53:42 +0000
Message: GP-6492 Adjustments to union scoring

Files changed:
  M	Ghidra/Features/Decompiler/src/decompile/cpp/constseq.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/constseq.hh
  M	Ghidra/Features/Decompiler/src/decompile/cpp/coreaction.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/coreaction.hh
  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/float.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/float.hh
  M	Ghidra/Features/Decompiler/src/decompile/cpp/funcdata.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/funcdata.hh
  M	Ghidra/Features/Decompiler/src/decompile/cpp/funcdata_varnode.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/merge.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/ruleaction.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/subflow.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/subflow.hh
  M	Ghidra/Features/Decompiler/src/decompile/cpp/type.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/type.hh
  M	Ghidra/Features/Decompiler/src/decompile/cpp/unionresolve.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/unionresolve.hh
  M	Ghidra/Features/Decompiler/src/decompile/cpp/variable.cc

[Commit 3/15]
Hash: d2279118771dd1b503a5efaaaffe772405136290
Date: 2026-04-27 14:04:48 -0400
Message: GP-6333: Fix for ARM Thumb to prevent misaligned branches

Files changed:
  M	Ghidra/Processors/ARM/data/languages/ARM.sinc
  M	Ghidra/Processors/ARM/data/languages/ARMTHUMBinstructions.sinc

[Commit 4/15]
Hash: 741b69d9090262eb0031d92c79cd19bd6b618b93
Date: 2026-03-05 18:55:32 +0000
Message: GP-6538 Don't assume slot == 1 in for RETURN

Files changed:
  M	Ghidra/Features/Decompiler/src/decompile/cpp/condexe.cc

[Commit 5/15]
Hash: 4bec0d1809f80c2231d51def60ee334bdec91dba
Date: 2026-04-24 15:49:42 +0000
Message: GP-6610 Add count of jumptable recover stages

Files changed:
  M	Ghidra/Features/Decompiler/src/decompile/cpp/flow.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/flow.hh
  M	Ghidra/Features/Decompiler/src/decompile/cpp/funcdata_block.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/jumptable.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/jumptable.hh

[Commit 6/15]
Hash: 2b4efbfd681a79a4cd1cd8a962c78beba9b9e2ea
Date: 2026-04-22 18:12:49 +0000
Message: GP-6750: Fixed disassembly error for ARM neon simdExpImm_16

Files changed:
  M	Ghidra/Processors/ARM/data/languages/ARMneon.sinc

[Commit 7/15]
Hash: def6a8d4f962028826446503dd37d333c284cba8
Date: 2026-03-23 16:01:25 +0000
Message: GP-6000: Updated certification for Processor 8051

Files changed:
  M	Ghidra/Processors/8051/certification.manifest

[Commit 8/15]
Hash: 3f5b0be75d7ef8e1956e371f47f0e623dd6e56a0
Date: 2026-01-06 17:39:36 -0500
Message: Add 8051 CIP-51 (Silicon Labs) processor support and Keil C51 compiler specification
Details:
- Add CIP51 variant support to 8051_main.sinc with extended SFR addressing (2-byte)
- Add IFLASH and XRAM address spaces for CIP-51 memory model
- Add cip-51.slaspec for CIP-51 processor definition
- Add keil-cx51.cspec for Keil C51 compiler calling conventions

Files changed:
  M	Ghidra/Processors/8051/data/languages/8051_main.sinc
  A	Ghidra/Processors/8051/data/languages/cip-51.slaspec
  A	Ghidra/Processors/8051/data/languages/keil-cx51.cspec

[Commit 9/15]
Hash: aeba87cceeecbb09257a20da606f92f3b5dbd844
Date: 2026-03-19 16:07:09 +0000
Message: GP-6591: PIC-18 destReg banked register disassembly fix

Files changed:
  M	Ghidra/Processors/PIC/data/languages/pic18_instructions.sinc

[Commit 10/15]
Hash: ac09f8638339d431f339c5a024b779c15e463a94
Date: 2026-03-04 12:05:06 +0000
Message: GP-5508: Remove unused token pieces

Files changed:
  M	Ghidra/Processors/PowerPC/data/languages/ppc_isa.sinc

[Commit 11/15]
Hash: ab08578711be63ccac23a2824caa3b9987544322
Date: 2024-11-24 14:55:06 +0100
Message: Fix PPC STQ negative offsets

Files changed:
  M	Ghidra/Processors/PowerPC/data/languages/ppc_isa.sinc

[Commit 12/15]
Hash: 65a848c4d1956c64a0910b4a85bfcd16c8c9b3ed
Date: 2024-11-24 14:44:21 +0100
Message: Reusing dqPlusRaOrZeroAddress for EA calculation

Files changed:
  M	Ghidra/Processors/PowerPC/data/languages/ppc_isa.sinc

[Commit 13/15]
Hash: 86c31bb5d8e0552ab19948515ba0acdd230fbbbe
Date: 2024-11-24 14:27:16 +0100
Message: Removed PPCAS-specific decoding

Files changed:
  M	Ghidra/Processors/PowerPC/data/languages/ppc_isa.sinc

[Commit 14/15]
Hash: 2037480b4e2da8812b7734f0c9111f38b6c9b8a8
Date: 2024-08-19 10:22:07 +0100
Message: Fix LQ instruction to support signed offsets
Details:
Based on the Power ISA manual sign extended DQ<<4 is added to RA to
get source EA.

Files changed:
  M	Ghidra/Processors/PowerPC/data/languages/ppc_common.sinc
  M	Ghidra/Processors/PowerPC/data/languages/ppc_isa.sinc

[Commit 15/15]
Hash: a1e0d3cd81a75e3648381cd7c1d816dabf4e5c57
Date: 2025-09-08 17:58:32 +0000
Message: GP-3330 Add support stack storage in joined varnodes

Files changed:
  M	Ghidra/Features/Decompiler/src/decompile/cpp/coreaction.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/translate.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/translate.hh
```

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-05-04 09:21:43 -04:00
Duncan Ogilvie d860b53fa9 Set core.longpaths while patching (#417)
The Ghidra source code has very long paths and without this setting you get error messages and the patching fails if you do not clone it very high up the tree.
2026-05-02 14:43:15 -04:00
auto-updater[bot] 532aa25e8a Update Ghidra HEAD to commit aa094ab25 (#416)
Bump Ghidra HEAD commit aa094ab25

Changed files:

```
M	Ghidra/Features/Decompiler/src/decompile/cpp/variable.cc
```

Commit details:

```
[Commit 1/1]
Hash: d4cdef264eb7d87a645ceedcb0b1e22a1078999c
Date: 2026-04-22 17:56:33 +0000
Message: GP-6734 Keep HighEdge map symmetric

Files changed:
  M	Ghidra/Features/Decompiler/src/decompile/cpp/variable.cc
```

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-04-27 08:57:34 -04:00
auto-updater[bot] 121c65a08b Update Ghidra HEAD to commit b211a07b5 and patch (#415)
* Bump Ghidra HEAD commit b211a07b5

Changed files:

```
M	Ghidra/Features/Decompiler/src/decompile/cpp/slghscan.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/slghscan.l
```

Commit details:

```
[Commit 1/1]
Hash: 827ebe6a0529b6ed8c52b7186be43b55c57da48b
Date: 2026-03-20 21:34:41 +0000
Message: GP-6608 Use std::stoul to unify to do all integer parsing

Files changed:
  M	Ghidra/Features/Decompiler/src/decompile/cpp/slghscan.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/slghscan.l
```

* Patch Ghidra HEAD scan_number to use std::stoull for MSVC

Upstream GP-6608 (Ghidra 827ebe6a0) replaced the hand-rolled integer
parser in slghscan.l with std::stoul. std::stoul returns unsigned long,
which is 64 bits on LP64 (Linux/macOS) but 32 bits on MSVC (LLP64), so
any .slaspec integer literal wider than 0xFFFFFFFF throws out_of_range
and sleigh rejects the spec. This broke the Windows HEAD CI job on the
b211a07b5 bump (68000/PowerPC/Loongarch/coldfire/avr32a specs all have
64-bit immediates).

Swap to std::stoull, which returns unsigned long long (64 bits on all
platforms) and matches the uintb target in scan_number.

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Eric Kilmer <eric.kilmer@trailofbits.com>
2026-04-21 17:39:51 -04:00
dependabot[bot] 8852ca2b09 build(deps): bump actions/upload-pages-artifact from 4 to 5 (#414)
Bumps [actions/upload-pages-artifact](https://github.com/actions/upload-pages-artifact) from 4 to 5.
- [Release notes](https://github.com/actions/upload-pages-artifact/releases)
- [Commits](https://github.com/actions/upload-pages-artifact/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/upload-pages-artifact
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-14 09:16:29 -04:00
dependabot[bot] 8400ecc4ef build(deps): bump softprops/action-gh-release from 2.6.1 to 3.0.0 (#413)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.6.1 to 3.0.0.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](https://github.com/softprops/action-gh-release/compare/v2.6.1...v3.0.0)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-version: 3.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-13 09:12:43 -04:00
auto-updater[bot] 0bf9bc4334 Update Ghidra HEAD to commit 43f4fcf95 (#412)
Bump Ghidra HEAD commit 43f4fcf95

Changed files:

```
M	Ghidra/Processors/68000/data/languages/68000.pspec
M	Ghidra/Processors/ARM/data/languages/ARM.cspec
M	Ghidra/Processors/ARM/data/languages/ARM.sinc
M	Ghidra/Processors/ARM/data/languages/ARM8m_be.slaspec
M	Ghidra/Processors/ARM/data/languages/ARM8m_le.slaspec
M	Ghidra/Processors/ARM/data/languages/ARMCortex.pspec
M	Ghidra/Processors/ARM/data/languages/ARMTHUMBinstructions.sinc
M	Ghidra/Processors/ARM/data/languages/ARM_apcs.cspec
M	Ghidra/Processors/ARM/data/languages/ARM_v45.cspec
M	Ghidra/Processors/ARM/data/languages/ARM_v45.pspec
M	Ghidra/Processors/ARM/data/languages/ARM_win.cspec
M	Ghidra/Processors/ARM/data/languages/ARMinstructions.sinc
M	Ghidra/Processors/ARM/data/languages/ARMneon.sinc
M	Ghidra/Processors/ARM/data/languages/ARMt.pspec
M	Ghidra/Processors/ARM/data/languages/ARMtTHUMB.pspec
M	Ghidra/Processors/ARM/data/languages/ARMt_v45.pspec
M	Ghidra/Processors/ARM/data/languages/ARMt_v6.pspec
M	Ghidra/Processors/ARM/data/languages/ARMv8.sinc
A	Ghidra/Processors/Hexagon/Module.manifest
A	Ghidra/Processors/Hexagon/certification.manifest
A	Ghidra/Processors/Hexagon/data/languages/Hexagon.opinion
A	Ghidra/Processors/Hexagon/data/languages/hexagon.cspec
A	Ghidra/Processors/Hexagon/data/languages/hexagon.dwarf
A	Ghidra/Processors/Hexagon/data/languages/hexagon.ldefs
A	Ghidra/Processors/Hexagon/data/languages/hexagon.pspec
A	Ghidra/Processors/Hexagon/data/languages/hexagon.sinc
A	Ghidra/Processors/Hexagon/data/languages/hexagon.slaspec
A	Ghidra/Processors/Hexagon/data/languages/hexagon_float.sinc
A	Ghidra/Processors/Hexagon/data/languages/hexagon_hvx.sinc
A	Ghidra/Processors/Hexagon/data/languages/hexagon_left.sinc
A	Ghidra/Processors/Hexagon/data/languages/hexagon_right.sinc
M	Ghidra/Processors/MIPS/data/languages/mips.sinc
M	Ghidra/Processors/MIPS/data/languages/mips16.sinc
M	Ghidra/Processors/MIPS/data/languages/mips32.pspec
M	Ghidra/Processors/MIPS/data/languages/mips32Instructions.sinc
M	Ghidra/Processors/MIPS/data/languages/mips32R6.pspec
M	Ghidra/Processors/MIPS/data/languages/mips32_eabi.cspec
M	Ghidra/Processors/MIPS/data/languages/mips32_fp64.cspec
M	Ghidra/Processors/MIPS/data/languages/mips32be.cspec
M	Ghidra/Processors/MIPS/data/languages/mips32le.cspec
M	Ghidra/Processors/MIPS/data/languages/mips32micro.pspec
M	Ghidra/Processors/MIPS/data/languages/mips64.pspec
M	Ghidra/Processors/MIPS/data/languages/mips64R6.pspec
M	Ghidra/Processors/MIPS/data/languages/mips64_32_n32.cspec
M	Ghidra/Processors/MIPS/data/languages/mips64_32_o32.cspec
M	Ghidra/Processors/MIPS/data/languages/mips64_32_o64.cspec
M	Ghidra/Processors/MIPS/data/languages/mips64be.cspec
M	Ghidra/Processors/MIPS/data/languages/mips64le.cspec
M	Ghidra/Processors/MIPS/data/languages/mips64micro.pspec
M	Ghidra/Processors/MIPS/data/languages/mipsmicro.sinc
M	Ghidra/Processors/PowerPC/data/languages/ppc_32.pspec
M	Ghidra/Processors/PowerPC/data/languages/ppc_32_mpc8270.pspec
M	Ghidra/Processors/PowerPC/data/languages/ppc_64.pspec
M	Ghidra/Processors/Xtensa/data/languages/xtensa.pspec
M	Ghidra/Processors/tricore/data/languages/tc172x.pspec
M	Ghidra/Processors/tricore/data/languages/tc176x.pspec
M	Ghidra/Processors/tricore/data/languages/tc29x.pspec
M	Ghidra/Processors/tricore/data/languages/tricore.pspec
M	Ghidra/Processors/x86/data/languages/x86-16-real.pspec
M	Ghidra/Processors/x86/data/languages/x86-16.pspec
M	Ghidra/Processors/x86/data/languages/x86-64-compat32.pspec
M	Ghidra/Processors/x86/data/languages/x86-64.pspec
M	Ghidra/Processors/x86/data/languages/x86.pspec
```

Commit details:

```
[Commit 1/7]
Hash: 84fb9e72f8065c6d27804209199631e5931cf743
Date: 2026-03-24 17:51:27 +0000
Message: GP-0: Fixed ARM disassembly test regressions

Files changed:
  M	Ghidra/Processors/ARM/data/languages/ARMTHUMBinstructions.sinc
  M	Ghidra/Processors/ARM/data/languages/ARMinstructions.sinc

[Commit 2/7]
Hash: 51471ef7737643fad7fe7eecd7a6e83236b245d0
Date: 2026-03-24 13:20:29 +0000
Message: GP-0: Corrected separator regression in PseudoDisassemblerTest

Files changed:
  M	Ghidra/Processors/ARM/data/languages/ARMTHUMBinstructions.sinc

[Commit 3/7]
Hash: 5636392395b9975c3dde72eb3246ba28a55cbcc0
Date: 2026-03-23 15:30:23 -0400
Message: GP-6621 Add Hexagon processor

Files changed:
  A	Ghidra/Processors/Hexagon/Module.manifest
  A	Ghidra/Processors/Hexagon/certification.manifest
  A	Ghidra/Processors/Hexagon/data/languages/Hexagon.opinion
  A	Ghidra/Processors/Hexagon/data/languages/hexagon.cspec
  A	Ghidra/Processors/Hexagon/data/languages/hexagon.dwarf
  A	Ghidra/Processors/Hexagon/data/languages/hexagon.ldefs
  A	Ghidra/Processors/Hexagon/data/languages/hexagon.pspec
  A	Ghidra/Processors/Hexagon/data/languages/hexagon.sinc
  A	Ghidra/Processors/Hexagon/data/languages/hexagon.slaspec
  A	Ghidra/Processors/Hexagon/data/languages/hexagon_float.sinc
  A	Ghidra/Processors/Hexagon/data/languages/hexagon_hvx.sinc
  A	Ghidra/Processors/Hexagon/data/languages/hexagon_left.sinc
  A	Ghidra/Processors/Hexagon/data/languages/hexagon_right.sinc

[Commit 4/7]
Hash: e0638c831f6ac271d663893c9d26f9f823fc6c2f
Date: 2026-03-20 17:44:03 +0000
Message: GP-0: Corrected ARMAssemblyTest failures

Files changed:
  M	Ghidra/Processors/ARM/data/languages/ARMneon.sinc

[Commit 5/7]
Hash: 5fbbc155a8b08c2711a8b0ef6d59a3c5ef3cf3c9
Date: 2026-03-19 09:23:37 -0400
Message: GP-5849: Fixed ARM Neon instuction collisions with vmov (immediate)

Files changed:
  M	Ghidra/Processors/ARM/data/languages/ARMinstructions.sinc
  M	Ghidra/Processors/ARM/data/languages/ARMneon.sinc

[Commit 6/7]
Hash: 44504c77804cc8aed03f6a21ada6100379cb812a
Date: 2026-03-18 09:59:22 -0400
Message: GP-6145: added missing ARM v8-m instructions

Files changed:
  M	Ghidra/Processors/ARM/data/languages/ARM.sinc
  M	Ghidra/Processors/ARM/data/languages/ARM8m_be.slaspec
  M	Ghidra/Processors/ARM/data/languages/ARM8m_le.slaspec
  M	Ghidra/Processors/ARM/data/languages/ARMTHUMBinstructions.sinc
  M	Ghidra/Processors/ARM/data/languages/ARMinstructions.sinc
  M	Ghidra/Processors/ARM/data/languages/ARMneon.sinc
  M	Ghidra/Processors/ARM/data/languages/ARMv8.sinc

[Commit 7/7]
Hash: fa23479747d6ae439c1bdfce16f248fa99beadaf
Date: 2026-03-18 12:09:45 +0000
Message: GP-4241: Port EmulateInstructionStateModifiers to PcodeUseropLibraryFactories.

Files changed:
  M	Ghidra/Processors/68000/data/languages/68000.pspec
  M	Ghidra/Processors/ARM/data/languages/ARM.cspec
  M	Ghidra/Processors/ARM/data/languages/ARM.sinc
  M	Ghidra/Processors/ARM/data/languages/ARMCortex.pspec
  M	Ghidra/Processors/ARM/data/languages/ARM_apcs.cspec
  M	Ghidra/Processors/ARM/data/languages/ARM_v45.cspec
  M	Ghidra/Processors/ARM/data/languages/ARM_v45.pspec
  M	Ghidra/Processors/ARM/data/languages/ARM_win.cspec
  M	Ghidra/Processors/ARM/data/languages/ARMinstructions.sinc
  M	Ghidra/Processors/ARM/data/languages/ARMt.pspec
  M	Ghidra/Processors/ARM/data/languages/ARMtTHUMB.pspec
  M	Ghidra/Processors/ARM/data/languages/ARMt_v45.pspec
  M	Ghidra/Processors/ARM/data/languages/ARMt_v6.pspec
  M	Ghidra/Processors/MIPS/data/languages/mips.sinc
  M	Ghidra/Processors/MIPS/data/languages/mips16.sinc
  M	Ghidra/Processors/MIPS/data/languages/mips32.pspec
  M	Ghidra/Processors/MIPS/data/languages/mips32Instructions.sinc
  M	Ghidra/Processors/MIPS/data/languages/mips32R6.pspec
  M	Ghidra/Processors/MIPS/data/languages/mips32_eabi.cspec
  M	Ghidra/Processors/MIPS/data/languages/mips32_fp64.cspec
  M	Ghidra/Processors/MIPS/data/languages/mips32be.cspec
  M	Ghidra/Processors/MIPS/data/languages/mips32le.cspec
  M	Ghidra/Processors/MIPS/data/languages/mips32micro.pspec
  M	Ghidra/Processors/MIPS/data/languages/mips64.pspec
  M	Ghidra/Processors/MIPS/data/languages/mips64R6.pspec
  M	Ghidra/Processors/MIPS/data/languages/mips64_32_n32.cspec
  M	Ghidra/Processors/MIPS/data/languages/mips64_32_o32.cspec
  M	Ghidra/Processors/MIPS/data/languages/mips64_32_o64.cspec
  M	Ghidra/Processors/MIPS/data/languages/mips64be.cspec
  M	Ghidra/Processors/MIPS/data/languages/mips64le.cspec
  M	Ghidra/Processors/MIPS/data/languages/mips64micro.pspec
  M	Ghidra/Processors/MIPS/data/languages/mipsmicro.sinc
  M	Ghidra/Processors/PowerPC/data/languages/ppc_32.pspec
  M	Ghidra/Processors/PowerPC/data/languages/ppc_32_mpc8270.pspec
  M	Ghidra/Processors/PowerPC/data/languages/ppc_64.pspec
  M	Ghidra/Processors/Xtensa/data/languages/xtensa.pspec
  M	Ghidra/Processors/tricore/data/languages/tc172x.pspec
  M	Ghidra/Processors/tricore/data/languages/tc176x.pspec
  M	Ghidra/Processors/tricore/data/languages/tc29x.pspec
  M	Ghidra/Processors/tricore/data/languages/tricore.pspec
  M	Ghidra/Processors/x86/data/languages/x86-16-real.pspec
  M	Ghidra/Processors/x86/data/languages/x86-16.pspec
  M	Ghidra/Processors/x86/data/languages/x86-64-compat32.pspec
  M	Ghidra/Processors/x86/data/languages/x86-64.pspec
  M	Ghidra/Processors/x86/data/languages/x86.pspec
```

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-30 09:52:52 -04:00
dependabot[bot] b9c7dcda40 build(deps): bump actions/deploy-pages from 4 to 5 (#411)
Bumps [actions/deploy-pages](https://github.com/actions/deploy-pages) from 4 to 5.
- [Release notes](https://github.com/actions/deploy-pages/releases)
- [Commits](https://github.com/actions/deploy-pages/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/deploy-pages
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-30 09:52:32 -04:00
Eric Kilmer 3c525cd665 CI: Create draft release by default (#410)
* CI: Create draft release by default

Handles immutable releases when uploading from multiple builds

* CI: Add publish-release job to undraft release after builds

After all build matrix jobs upload artifacts as draft releases,
this job runs to publish the release by removing the draft flag.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 17:30:14 -04:00
auto-updater[bot] 68e14b713c Update Ghidra HEAD to commit 2ef20c4f4 (#409)
Bump Ghidra HEAD commit 2ef20c4f4

Changed files:

```
M	Ghidra/Processors/MIPS/data/languages/mips.sinc
M	Ghidra/Processors/MIPS/data/languages/mips16.sinc
M	Ghidra/Processors/MIPS/data/languages/mips32Instructions.sinc
```

Commit details:

```
[Commit 1/1]
Hash: 6b73572604f58ce3c050b3e7651e1d7fb887ee5c
Date: 2026-03-10 19:07:32 +0000
Message: Fixed regression with MIPS disassembly

Files changed:
  M	Ghidra/Processors/MIPS/data/languages/mips.sinc
  M	Ghidra/Processors/MIPS/data/languages/mips16.sinc
  M	Ghidra/Processors/MIPS/data/languages/mips32Instructions.sinc
```

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-23 09:39:07 -04:00
dependabot[bot] 099ccea772 build(deps): bump nick-fields/retry from 3 to 4 (#408)
Bumps [nick-fields/retry](https://github.com/nick-fields/retry) from 3 to 4.
- [Release notes](https://github.com/nick-fields/retry/releases)
- [Commits](https://github.com/nick-fields/retry/compare/v3...v4)

---
updated-dependencies:
- dependency-name: nick-fields/retry
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-20 08:40:39 -04:00
dependabot[bot] 7887f25eee build(deps): bump softprops/action-gh-release from 2.5.0 to 2.6.1 (#406)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.5.0 to 2.6.1.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](https://github.com/softprops/action-gh-release/compare/v2.5.0...v2.6.1)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-version: 2.6.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-16 09:43:03 -04:00
dependabot[bot] 7d93971e5d build(deps): bump actions/create-github-app-token from 2 to 3 (#407)
Bumps [actions/create-github-app-token](https://github.com/actions/create-github-app-token) from 2 to 3.
- [Release notes](https://github.com/actions/create-github-app-token/releases)
- [Commits](https://github.com/actions/create-github-app-token/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/create-github-app-token
  dependency-version: '3'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-16 09:42:21 -04:00
auto-updater[bot] ddb507d83e Update Ghidra HEAD to commit a2d77cbbb (#405)
Bump Ghidra HEAD commit a2d77cbbb

Changed files:

```
M	Ghidra/Features/Decompiler/src/decompile/cpp/Doxyfile
M	Ghidra/Features/Decompiler/src/decompile/cpp/context.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/context.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/error.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/inject_sleigh.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/sleigh.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/sleigh.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/slgh_compile.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/slgh_compile.hh
M	Ghidra/Processors/PowerPC/data/languages/ppc_isa.sinc
```

Commit details:

```
[Commit 1/3]
Hash: e5ee5ed77359266c5c84d54ce8ed4ae20d69b2a8
Date: 2026-03-09 21:34:46 +0000
Message: GP-6545 Switch to using deque for PcodeCacher::issued

Files changed:
  M	Ghidra/Features/Decompiler/src/decompile/cpp/error.hh
  M	Ghidra/Features/Decompiler/src/decompile/cpp/sleigh.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/sleigh.hh

[Commit 2/3]
Hash: 5328fa2c6dbfbba7cc95f232f3a9635d9bd8abcb
Date: 2026-03-06 23:37:48 +0000
Message: GP-6554 Refactor ConstructState allocation in ParserContext

Files changed:
  M	Ghidra/Features/Decompiler/src/decompile/cpp/Doxyfile
  M	Ghidra/Features/Decompiler/src/decompile/cpp/context.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/context.hh
  M	Ghidra/Features/Decompiler/src/decompile/cpp/inject_sleigh.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/sleigh.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/sleigh.hh
  M	Ghidra/Features/Decompiler/src/decompile/cpp/slgh_compile.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/slgh_compile.hh

[Commit 3/3]
Hash: be9b45ce9e3e7e7b3123a5be18b25a521d745152
Date: 2026-03-08 19:28:21 +0000
Message: PowerPC: s/DataCaseBlockSetToZero/DataCacheBlockSetToZero/
Details:
This is pretty obvious typo, the actual name of the operation is "data
cache block set to zero".

Signed-off-by: Mate Kukri <km@mkukri.xyz>

Files changed:
  M	Ghidra/Processors/PowerPC/data/languages/ppc_isa.sinc
```

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-16 09:41:38 -04:00
auto-updater[bot] 1360014bf3 Update Ghidra HEAD to commit 8e0fc9bc6 (#404)
Bump Ghidra HEAD commit 8e0fc9bc6

Changed files:

```
M	Ghidra/Features/Decompiler/src/decompile/cpp/ruleaction.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/type.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/type.hh
M	Ghidra/Processors/AARCH64/certification.manifest
M	Ghidra/Processors/MIPS/data/languages/mips.sinc
M	Ghidra/Processors/MIPS/data/languages/mips16.sinc
M	Ghidra/Processors/MIPS/data/languages/mips32Instructions.sinc
M	Ghidra/Processors/MIPS/data/languages/mipsmicro.sinc
M	Ghidra/Processors/Xtensa/data/languages/flix.sinc
M	Ghidra/Processors/Xtensa/data/languages/xtensaArch.sinc
M	Ghidra/Processors/Xtensa/data/languages/xtensaInstructions.sinc
M	Ghidra/Processors/Xtensa/data/languages/xtensaMain.sinc
M	Ghidra/Processors/Xtensa/data/languages/xtensa_depbits.sinc
```

Commit details:

```
[Commit 1/6]
Hash: b90adfdfdd9893802408b943b4266e4990cd63e3
Date: 2026-03-06 04:53:12 -0500
Message: GP-6327: Improving Objective-C msgSend() support

Files changed:
  M	Ghidra/Processors/AARCH64/certification.manifest

[Commit 2/6]
Hash: cbc000b2a017f1f5cf96cf095f9cf0c026082b4c
Date: 2026-02-27 23:01:19 +0000
Message: GP-6501: Fixed up mfc0/mtc0 semantics. Added MIPS32 save/restore instructions

Files changed:
  M	Ghidra/Processors/MIPS/data/languages/mips.sinc
  M	Ghidra/Processors/MIPS/data/languages/mips16.sinc
  M	Ghidra/Processors/MIPS/data/languages/mips32Instructions.sinc
  M	Ghidra/Processors/MIPS/data/languages/mipsmicro.sinc

[Commit 3/6]
Hash: 5f35986024907e891c5e86f566506c81964a1b92
Date: 2026-02-25 19:25:16 +0000
Message: GP-6495 Assign pointer submeta based on needsResolution

Files changed:
  M	Ghidra/Features/Decompiler/src/decompile/cpp/type.cc

[Commit 4/6]
Hash: 2ad8259a29884ded954f23a1a4d92c8124dd1654
Date: 2026-02-25 13:24:42 +0000
Message: GP-6489: Fixed opcode for MIPS sdbbp16 instruction

Files changed:
  M	Ghidra/Processors/MIPS/data/languages/mipsmicro.sinc

[Commit 5/6]
Hash: c81657d2ae45c8c4978114f3d2e6bcd361ce54ef
Date: 2026-02-20 22:55:14 +0000
Message: GP-6486 Correct distance calculation in nearestArrayedComponent methods

Files changed:
  M	Ghidra/Features/Decompiler/src/decompile/cpp/ruleaction.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/type.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/type.hh

[Commit 6/6]
Hash: 10f2cd12db3f857280e3b01e4a5c65ace3a4d6a0
Date: 2025-10-24 19:58:31 +0000
Message: GP-6050: Renamed most Xtensa token fields to satisfy BE numbering

Files changed:
  M	Ghidra/Processors/Xtensa/data/languages/flix.sinc
  M	Ghidra/Processors/Xtensa/data/languages/xtensaArch.sinc
  M	Ghidra/Processors/Xtensa/data/languages/xtensaInstructions.sinc
  M	Ghidra/Processors/Xtensa/data/languages/xtensaMain.sinc
  M	Ghidra/Processors/Xtensa/data/languages/xtensa_depbits.sinc
```

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-09 09:29:49 -04:00
26 changed files with 329 additions and 72 deletions
@@ -0,0 +1,67 @@
---
name: sleigh-ghidra-release
description: Update the lifting-bits/sleigh repository for a new upstream Ghidra stable release. Use when bumping Ghidra stable tags or versions, porting or regenerating src/patches/stable from HEAD patches, updating Ghidra source or spec file lists, moving HEAD-only source/header entries into stable, validating local Ghidra builds, or preparing release-update commits and PRs.
---
# Sleigh Ghidra Release
## Overview
Update this repository after NSA publishes a new Ghidra release. Prefer the repo's existing release-update shape: verify the upstream tag, reuse `src/ghidra-stable`, regenerate stable patches mechanically from HEAD patches where possible, update CMake lists, and validate with a local build.
Read [references/release-checklist.md](references/release-checklist.md) when doing the update; it contains the detailed checklist and decision points.
## Workflow
1. Inspect state before changing anything:
- Run `git status --short`.
- Treat existing edits and untracked files as user-owned unless the task clearly says otherwise.
- Keep unrelated files out of release-update commits.
2. Verify the target release:
- Use official upstream sources for release and tag facts.
- Prefer Exa MCP tools for web lookup when available.
- Confirm the tag format, usually `Ghidra_<version>_build`.
3. Prepare `src/ghidra-stable`:
- Use the existing checkout when present.
- If a clone is needed, clone under `src/`.
- Normalize `origin` to HTTPS if the remote uses a local SSH alias:
```bash
git -C src/ghidra-stable remote set-url origin https://github.com/NationalSecurityAgency/ghidra.git
```
- Fetch and check out the release tag:
```bash
git -C src/ghidra-stable fetch origin tag Ghidra_<version>_build --depth=1
git -C src/ghidra-stable checkout --detach Ghidra_<version>_build
git -C src/ghidra-stable config user.name "github-actions[bot]"
git -C src/ghidra-stable config user.email "41898282+github-actions[bot]@users.noreply.github.com"
```
4. Regenerate stable patches mechanically:
- Start from a clean `Ghidra_<version>_build` checkout.
- Try applying HEAD patches in order.
- If a HEAD patch fails, inspect whether it is already upstreamed, still needed with adjusted context, or only applies to HEAD-only code. Abort and retry with the applicable subset when needed.
- Use `format-patch` from `Ghidra_<version>_build..HEAD` to create the new stable patch files.
- Update `src/setup-ghidra-source.cmake` patch ordering to match the regenerated files.
5. Update release metadata and lists:
- Set `ghidra_version` in `src/setup-ghidra-source.cmake`.
- Search for `sleigh_RELEASE_IS_HEAD`; move entries into stable when the release now contains those sources or headers.
- Update `src/spec_files_stable.cmake` from the release checkout's `.slaspec` inventory.
- Check `cmake/packaging.cmake` and reset `PACKAGE_VERSION` to `1` when the release cycle requires it.
6. Validate the exact files CMake will use:
- Re-checkout the release tag in `src/ghidra-stable`.
- Apply `src/patches/stable/*.patch`.
- Configure with `FETCHCONTENT_SOURCE_DIR_GHIDRASOURCE` pointing at the local checkout.
- Build with `cmake --build ... --parallel`.
- Run `ctest`; if no developer-mode configure was used, `No tests were found` may be expected.
7. Review and commit only when asked:
- Use `git diff --cached --stat`, `git diff --cached --name-status`, and `git diff --cached --check`.
- `git diff --check` may flag generated `git format-patch` signature lines; inspect before changing generated patch files.
- Commit messages must follow the repo's 50/72 rule.
@@ -0,0 +1,4 @@
interface:
display_name: "Sleigh Ghidra Release"
short_description: "Update Sleigh for new Ghidra releases"
default_prompt: "Use $sleigh-ghidra-release to update this repo for a new upstream Ghidra release."
@@ -0,0 +1,78 @@
# Release Update Checklist
This checklist is based on the repository wiki page:
https://github.com/lifting-bits/sleigh/wiki/New-Ghidra-Release-Update-Checklist
## Files To Check
- `src/setup-ghidra-source.cmake`: stable version, stable patch list, HEAD pin, source lists.
- `src/patches/stable/`: regenerated patches for the stable Ghidra tag.
- `src/patches/HEAD/`: source patches to port to the new stable release.
- `src/spec_files_stable.cmake`: stable `.slaspec` inventory.
- `src/spec_files_HEAD.cmake`: comparison point for new spec files.
- `CMakeLists.txt`: public Ghidra headers copied into the build include directory.
- `cmake/packaging.cmake`: package version reset when relevant.
## Patch Regeneration
Preferred pattern:
```bash
git -C src/ghidra-stable checkout --detach Ghidra_<version>_build
git -C src/ghidra-stable am --ignore-space-change --ignore-whitespace --no-gpg-sign \
/absolute/path/to/src/patches/HEAD/*.patch
git -C src/ghidra-stable format-patch -o /private/tmp/sleigh-ghidra-stable-patches \
Ghidra_<version>_build..HEAD
```
If a patch fails:
- Run `git -C src/ghidra-stable am --abort`.
- Inspect the failed patch and the target source.
- Decide whether the patch is already upstreamed, still needed with refreshed context, or only applicable to HEAD-only code.
- Reapply the exact applicable patch sequence or subset.
- Regenerate stable patches from the resulting commits; avoid hand-editing patch bodies unless conflict resolution requires it.
## Source And Header Lists
Find HEAD-only gates:
```bash
rg -n "sleigh_RELEASE_IS_HEAD|sleigh_RELEASE_TYPE.*HEAD" \
CMakeLists.txt src cmake support tests
```
When a previously HEAD-only file exists in the new stable release, move it to the normal stable list and leave no dead conditional branch unless the branch still has a purpose.
## Spec Files
Build the stable inventory from the release checkout:
```bash
fd -e slaspec . src/ghidra-stable/Ghidra/Processors
```
Update `src/spec_files_stable.cmake` with sorted
`${ghidrasource_SOURCE_DIR}/...` entries. Compare against both the old stable
list and `src/spec_files_HEAD.cmake`.
## Validation
Verify the generated stable patch files directly:
```bash
git -C src/ghidra-stable checkout --detach Ghidra_<version>_build
git -C src/ghidra-stable am --ignore-space-change --ignore-whitespace --no-gpg-sign \
/absolute/path/to/src/patches/stable/*.patch
```
Then configure and build Sleigh against the local checkout:
```bash
cmake -B build/ghidra-<version>-local -S . \
-DFETCHCONTENT_SOURCE_DIR_GHIDRASOURCE=/absolute/path/to/src/ghidra-stable
cmake --build build/ghidra-<version>-local --parallel
ctest --test-dir build/ghidra-<version>-local --output-on-failure
```
If tests matter for the update, use a developer-mode preset or option. A plain configure may not register tests.
+1
View File
@@ -0,0 +1 @@
../.agents/skills
+3 -3
View File
@@ -26,7 +26,7 @@ jobs:
url: ${{ steps.deployment.outputs.page_url }}
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7
- name: Setup Git User for Applying Patches
# See this thread for more details https://github.community/t/github-actions-bot-email-address/17204/5
@@ -152,10 +152,10 @@ jobs:
EOF
- name: Upload Pages artifact
uses: actions/upload-pages-artifact@v4
uses: actions/upload-pages-artifact@v5
with:
path: docs-site
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
uses: actions/deploy-pages@v5
+21 -7
View File
@@ -33,7 +33,7 @@ jobs:
build_type: Debug
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7
- name: Setup Git User for Applying Patches
# See this thread for more details https://github.community/t/github-actions-bot-email-address/17204/5
@@ -58,7 +58,7 @@ jobs:
- name: Install Windows system dependencies
if: runner.os == 'Windows'
uses: nick-fields/retry@v3
uses: nick-fields/retry@v4
with:
timeout_minutes: 10
max_attempts: 3
@@ -229,10 +229,11 @@ jobs:
archive: false
- name: Release DEB package artifact (RelWithDebInfo only)
uses: softprops/action-gh-release@v2.5.0
uses: softprops/action-gh-release@v3.0.0
if: matrix.build_type == 'RelWithDebInfo' && runner.os == 'Linux' && startsWith(github.ref, 'refs/tags/') && matrix.release == 'stable'
with:
files: ${{ env.DEB_PACKAGE_PATH }}
draft: true
# RPM Package
- name: Upload the RPM package artifact (RelWithDebInfo only)
@@ -243,10 +244,11 @@ jobs:
path: ${{ env.RPM_PACKAGE_PATH }}
archive: false
- name: Release RPM package artifact (RelWithDebInfo only)
uses: softprops/action-gh-release@v2.5.0
uses: softprops/action-gh-release@v3.0.0
if: matrix.build_type == 'RelWithDebInfo' && runner.os == 'Linux' && startsWith(github.ref, 'refs/tags/') && matrix.release == 'stable'
with:
files: ${{ env.RPM_PACKAGE_PATH }}
draft: true
# TGZ Package
- name: Upload the TGZ package artifact (RelWithDebInfo only)
@@ -258,14 +260,26 @@ jobs:
archive: false
- name: Release TGZ package artifact (RelWithDebInfo only)
uses: softprops/action-gh-release@v2.5.0
uses: softprops/action-gh-release@v3.0.0
if: matrix.build_type == 'RelWithDebInfo' && startsWith(github.ref, 'refs/tags/') && matrix.release == 'stable'
with:
files: ${{ env.TGZ_PACKAGE_PATH }}
draft: true
- name: ccache stats
run: ccache -s
publish-release:
needs: [build]
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- run: gh release edit "${{ github.ref_name }}" --draft=false --repo "${{ github.repository }}"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
sanitizer:
runs-on: ubuntu-latest
permissions:
@@ -281,7 +295,7 @@ jobs:
release: [stable, HEAD]
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7
- name: Setup Git User for Applying Patches
run: |
@@ -374,7 +388,7 @@ jobs:
release: [stable, HEAD]
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7
- name: Setup Git User for Applying Patches
run: |
+2 -2
View File
@@ -12,7 +12,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7
- uses: actions/setup-python@v6
with:
@@ -27,7 +27,7 @@ jobs:
# Need this to run further Actions on the newly created PR
# See here for more details https://github.com/peter-evans/create-pull-request/blob/main/docs/concepts-guidelines.md#authenticating-with-github-app-generated-tokens
- uses: actions/create-github-app-token@v2
- uses: actions/create-github-app-token@v3
if: steps.head_update.outputs.did_update
id: generate-token
with:
+6 -5
View File
@@ -147,12 +147,13 @@ set(public_include_header_list
"${library_root}/slaformat.hh"
"${library_root}/constseq.hh"
"${library_root}/expression.hh"
"${library_root}/bitfield.hh"
)
if(sleigh_RELEASE_IS_HEAD)
list(APPEND public_include_header_list
"${library_root}/bitfield.hh"
)
endif()
# if(sleigh_RELEASE_IS_HEAD)
# list(APPEND public_include_header_list
# )
# endif()
# Create custom target so that IDEs know these files are part of the sources
add_custom_target(sleigh_all_headers SOURCES ${public_include_header_list})
set(public_headers_dir ${CMAKE_CURRENT_BINARY_DIR}/include)
+1 -1
View File
@@ -77,7 +77,7 @@
{
"name": "ci-win64",
"inherits": ["flags-windows", "ci-std"],
"generator": "Visual Studio 17 2022",
"generator": "Visual Studio 18 2026",
"architecture": "x64",
"cacheVariables": {
"CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_INSTALLATION_ROOT}/scripts/buildsystems/vcpkg.cmake",
@@ -0,0 +1,49 @@
From eee198c1cc17bfc8b10609ddc8e03e254d0bac9a Mon Sep 17 00:00:00 2001
From: Eric Kilmer <eric.kilmer@trailofbits.com>
Date: Tue, 21 Apr 2026 10:32:17 -0400
Subject: [PATCH] Use std::stoull instead of std::stoul in scan_number for MSVC
std::stoul returns `unsigned long`, which is 32 bits on MSVC (LLP64) but 64
bits on POSIX LP64. scan_number assigns the result into a `uintb` (uint64_t),
so on Windows any integer literal in a .slaspec file that exceeds 0xFFFFFFFF
throws std::out_of_range, the catch-all returns BADINTEGER, and the sleigh
compiler rejects the spec. Affected specs include 68000/PowerPC/Loongarch/
coldfire/avr32a and others that use 64-bit immediates.
std::stoull returns `unsigned long long` (64 bits on all platforms), matching
the uintb target and the pre-GP-6608 behavior. This mirrors the earlier fix
applied to AddrSpace::read in space.cc.
---
Ghidra/Features/Decompiler/src/decompile/cpp/slghscan.cc | 2 +-
Ghidra/Features/Decompiler/src/decompile/cpp/slghscan.l | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/slghscan.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/slghscan.cc
index f3c1e361..d0217389 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/slghscan.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/slghscan.cc
@@ -1582,7 +1582,7 @@ int4 scan_number(char *numtext,SLEIGHSTYPE *lval,int4 radix,bool signednum)
{
uintb val;
try {
- val = std::stoul(numtext,(size_t *)0,radix);
+ val = std::stoull(numtext,(size_t *)0,radix);
}
catch(...) {
return BADINTEGER;
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/slghscan.l b/Ghidra/Features/Decompiler/src/decompile/cpp/slghscan.l
index 1c25962a..29db987b 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/slghscan.l
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/slghscan.l
@@ -461,7 +461,7 @@ int4 scan_number(char *numtext,SLEIGHSTYPE *lval,int4 radix,bool signednum)
{
uintb val;
try {
- val = std::stoul(numtext,(size_t *)0,radix);
+ val = std::stoull(numtext,(size_t *)0,radix);
}
catch(...) {
return BADINTEGER;
--
2.54.0
@@ -1,7 +1,7 @@
From 9d1e7b00e8f5dca987038a78fbac400c835a78be Mon Sep 17 00:00:00 2001
From 31a52c1f29a0fe67956bbefc1b1b01d6c0ccd5b1 Mon Sep 17 00:00:00 2001
From: Eric Kilmer <eric.d.kilmer@gmail.com>
Date: Mon, 12 Aug 2024 12:02:35 -0400
Subject: [PATCH 1/5] Fix UBSAN errors in decompiler
Subject: [PATCH 1/8] Fix UBSAN errors in decompiler
Co-authored-by: Alex Cameron <asc@tetsuo.sh>
---
@@ -13,10 +13,10 @@ Co-authored-by: Alex Cameron <asc@tetsuo.sh>
5 files changed, 16 insertions(+), 10 deletions(-)
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/pcodecompile.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/pcodecompile.cc
index ca9d71ab99..85d4dd281d 100644
index a67a3de849..37ba4930e6 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/pcodecompile.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/pcodecompile.cc
@@ -621,8 +621,10 @@ vector<OpTpl *> *PcodeCompile::assignBitRange(VarnodeTpl *vn,uint4 bitoffset,uin
@@ -618,8 +618,10 @@ vector<OpTpl *> *PcodeCompile::assignBitRange(VarnodeTpl *vn,uint4 bitoffset,uin
uint4 smallsize = (numbits+7)/8; // Size of input (output of rhs)
bool shiftneeded = (bitoffset != 0);
bool zextneeded = true;
@@ -29,7 +29,7 @@ index ca9d71ab99..85d4dd281d 100644
if (vn->getSize().getType()==ConstTpl::real) {
// If we know the size of the bitranged varnode, we can
@@ -726,9 +728,6 @@ ExprTree *PcodeCompile::createBitRange(SpecificSymbol *sym,uint4 bitoffset,uint4
@@ -723,9 +725,6 @@ ExprTree *PcodeCompile::createBitRange(SpecificSymbol *sym,uint4 bitoffset,uint4
}
}
@@ -39,7 +39,7 @@ index ca9d71ab99..85d4dd281d 100644
if (truncneeded && ((bitoffset % 8)==0)) {
truncshift = bitoffset/8;
bitoffset = 0;
@@ -751,8 +750,13 @@ ExprTree *PcodeCompile::createBitRange(SpecificSymbol *sym,uint4 bitoffset,uint4
@@ -748,8 +747,13 @@ ExprTree *PcodeCompile::createBitRange(SpecificSymbol *sym,uint4 bitoffset,uint4
appendOp(CPUI_INT_RIGHT,res,bitoffset,4);
if (truncneeded)
appendOp(CPUI_SUBPIECE,res,truncshift,4);
@@ -56,7 +56,7 @@ index ca9d71ab99..85d4dd281d 100644
return res;
}
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/semantics.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/semantics.cc
index cd9b9835b1..8a4616c3b9 100644
index 18e2ff8ba1..3bfe29f2ef 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/semantics.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/semantics.cc
@@ -22,6 +22,7 @@ ConstTpl::ConstTpl(const_type tp)
@@ -76,7 +76,7 @@ index cd9b9835b1..8a4616c3b9 100644
bool ConstTpl::isConstSpace(void) const
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/semantics.hh b/Ghidra/Features/Decompiler/src/decompile/cpp/semantics.hh
index e0b069959d..9117a45c75 100644
index b53b18797d..b2f043e32d 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/semantics.hh
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/semantics.hh
@@ -47,7 +47,7 @@ class ConstTpl {
@@ -89,10 +89,10 @@ index e0b069959d..9117a45c75 100644
type=op2.type; value=op2.value; value_real=op2.value_real; select=op2.select; }
ConstTpl(const_type tp,uintb val);
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/slgh_compile.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/slgh_compile.cc
index 50d85e22ba..9f3b456229 100644
index 75bebffcb0..bf5e7ce681 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/slgh_compile.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/slgh_compile.cc
@@ -2164,8 +2164,8 @@ string SleighCompile::checkSymbols(SymbolScope *scope)
@@ -2323,8 +2323,8 @@ string SleighCompile::checkSymbols(SymbolScope *scope)
ostringstream msg;
SymbolTree::const_iterator iter;
for(iter=scope->begin();iter!=scope->end();++iter) {
@@ -116,5 +116,5 @@ index 2571f55f1a..fe40e22b1b 100644
uintb true_result = ((uintb)(int32_t)f) & 0xffffffff;
uintb encoding = format.getEncoding(f);
--
2.50.1
2.54.0
@@ -1,7 +1,7 @@
From 729f72060849dc4f29e89b1c76a980563ffd3e2a Mon Sep 17 00:00:00 2001
From 0928d2c8e97646042265cee1d2752514d02d3d4f Mon Sep 17 00:00:00 2001
From: Alex Cameron <asc@tetsuo.sh>
Date: Wed, 3 Aug 2022 20:01:18 +1000
Subject: [PATCH 2/5] Use `stroull` instead of `stroul` to parse address
Subject: [PATCH 2/8] Use `stroull` instead of `stroul` to parse address
offsets
---
@@ -34,5 +34,5 @@ index dbaa2e775f..72927bf379 100644
enddata = (const char *) tmpdata;
if (enddata - s.c_str() == s.size()) { // If no size or offset override
--
2.50.1
2.54.0
@@ -1,7 +1,7 @@
From 39cfff6f08dad8a85f992e09b3e26716c9173bf7 Mon Sep 17 00:00:00 2001
From e08c2cb8c6f49a2127b14ba081f1a5ec600c3cea Mon Sep 17 00:00:00 2001
From: Eric Kilmer <eric.d.kilmer@gmail.com>
Date: Tue, 29 Oct 2024 17:51:09 -0400
Subject: [PATCH 3/5] Ignore floating point test due to compilation differences
Subject: [PATCH 3/8] Ignore floating point test due to compilation differences
This test fails on macOS and Windows. I'm unsure whether it's an OS or
compiler issue.
@@ -24,5 +24,5 @@ index fe40e22b1b..91440e2510 100644
ASSERT_EQUALS(ff.printDecimal(f2, false), "0.33333334");
double f3 = doubleFromRawBits(0x3fd0000000000000);
--
2.50.1
2.54.0
@@ -1,7 +1,7 @@
From 2aa4395ef8874ee9890126f4bdad0d71adf9eacc Mon Sep 17 00:00:00 2001
From b5500258acdee1b2f5dfe603b1da33a7eebf699f Mon Sep 17 00:00:00 2001
From: Eric Kilmer <eric.d.kilmer@gmail.com>
Date: Wed, 30 Oct 2024 14:26:57 -0400
Subject: [PATCH 4/5] Allow positive or negative NAN in decompiler floating
Subject: [PATCH 4/8] Allow positive or negative NAN in decompiler floating
point test
At least on Apple Silicon, this test reports positive NAN.
@@ -33,5 +33,5 @@ index f8108d3d32..1060a3e193 100644
<stringmatch name="Float print #14" min="1" max="1">double7 = 3.1415926535897933e-06;</stringmatch>
</decompilertest>
--
2.50.1
2.54.0
@@ -1,7 +1,7 @@
From 2a6bd0a0ad7797160db887bba7137b77aa148ba5 Mon Sep 17 00:00:00 2001
From 6d5dbe6ffcfc31468ebbf2299ea72f5ef8abcf15 Mon Sep 17 00:00:00 2001
From: Eric Kilmer <eric.d.kilmer@gmail.com>
Date: Sat, 8 Feb 2025 17:59:57 -0500
Subject: [PATCH 5/5] decompiler: Fix strict weak ordering TypePartialEnum
Subject: [PATCH 5/8] decompiler: Fix strict weak ordering TypePartialEnum
This fixes Windows Debug error encountered in testing where it was
complaining about lack of strict weak ordering.
@@ -10,10 +10,10 @@ complaining about lack of strict weak ordering.
1 file changed, 1 insertion(+)
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/type.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/type.cc
index 962c525b7f..7db5024b54 100644
index e3601d3a99..fcc7b3f250 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/type.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/type.cc
@@ -2303,6 +2303,7 @@ int4 TypePartialEnum::compareDependency(const Datatype &op) const
@@ -2704,6 +2704,7 @@ int4 TypePartialEnum::compareDependency(const Datatype &op) const
{
if (submeta != op.getSubMeta()) return (submeta < op.getSubMeta()) ? -1 : 1;
@@ -22,5 +22,5 @@ index 962c525b7f..7db5024b54 100644
if (parent != tp->parent) return (parent < tp->parent) ? -1 : 1; // Compare absolute pointers
if (offset != tp->offset) return (offset < tp->offset) ? -1 : 1;
--
2.50.1
2.54.0
@@ -0,0 +1,29 @@
From 4fba77dafc00c6a359b21b94be1be8d24db37d39 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Wed, 25 Feb 2026 02:29:10 +0000
Subject: [PATCH 6/8] decompiler: Fix strict weak ordering PullRecord
When both readOp pointers are null, PullRecord::operator< incorrectly
returns true, violating strict weak ordering (irreflexivity). This is
caught by libc++ debug mode hardening assertions at pullList.sort().
---
Ghidra/Features/Decompiler/src/decompile/cpp/bitfield.cc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/bitfield.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/bitfield.cc
index add61c741b..3e01d2e045 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/bitfield.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/bitfield.cc
@@ -1058,7 +1058,7 @@ bool BitFieldPullTransform::PullRecord::operator<(const PullRecord &op2) const
return (readOp->getSeqNum() < op2.readOp->getSeqNum());
}
else if (readOp == (PcodeOp *)0)
- return true;
+ return (op2.readOp != (PcodeOp *)0);
else if (op2.readOp == (PcodeOp *)0)
return false;
return false;
--
2.54.0
@@ -1,8 +1,8 @@
From c435df4c0dbab80d8ff85e364cea9b59bf7010a1 Mon Sep 17 00:00:00 2001
From 60f88f2a93a5b9c7a5a2d6b73b100cf353a6982c Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Wed, 25 Feb 2026 22:22:05 +0000
Subject: [PATCH] decompiler: Fix strict weak ordering compareFinalOrder
Date: Wed, 25 Feb 2026 02:43:17 +0000
Subject: [PATCH 7/8] decompiler: Fix strict weak ordering compareFinalOrder
FlowBlock::compareFinalOrder returns true when both blocks have index 0,
violating strict weak ordering (irreflexivity). This is caught by libc++
@@ -12,7 +12,7 @@ debug mode hardening assertions during BlockGraph::orderBlocks sort.
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/block.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/block.cc
index bf7103d91..2e495d9c3 100644
index bf7103d916..2e495d9c3f 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/block.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/block.cc
@@ -709,7 +709,7 @@ string FlowBlock::typeToName(FlowBlock::block_type bt)
@@ -25,5 +25,5 @@ index bf7103d91..2e495d9c3 100644
PcodeOp *op1 = bl1->lastOp();
PcodeOp *op2 = bl2->lastOp();
--
2.51.1
2.54.0
@@ -1,8 +1,8 @@
From 8afa7d89a368b358a5493b87804985ed9ac70a2f Mon Sep 17 00:00:00 2001
From 7da7356c3093390b99172a4adb1422e057243903 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Wed, 25 Feb 2026 20:41:10 +0000
Subject: [PATCH] Fix UBSAN signed left shift errors
Subject: [PATCH 8/8] Fix UBSAN signed left shift errors
Cast signed values to unsigned before left shifting to avoid undefined
behavior when the signed value is negative or when the result cannot be
@@ -18,10 +18,10 @@ Fixes runtime errors detected by UndefinedBehaviorSanitizer:
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/address.hh b/Ghidra/Features/Decompiler/src/decompile/cpp/address.hh
index 45144daf3..0e75c68b8 100644
index 510432e5a2..0aaddea035 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/address.hh
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/address.hh
@@ -544,7 +544,7 @@ inline intb sign_extend(intb val,int4 bit)
@@ -587,7 +587,7 @@ inline intb sign_extend(intb val,int4 bit)
{
int4 sa = 8*sizeof(intb) - (bit+1);
@@ -31,7 +31,7 @@ index 45144daf3..0e75c68b8 100644
}
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/slghpatexpress.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/slghpatexpress.cc
index 941097859..93cce378a 100644
index 9410978595..93cce378af 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/slghpatexpress.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/slghpatexpress.cc
@@ -969,7 +969,7 @@ intb LeftShiftExpression::getValue(ParserWalker &walker) const
@@ -53,5 +53,5 @@ index 941097859..93cce378a 100644
void LeftShiftExpression::encode(Encoder &encoder) const
--
2.51.1
2.54.0
+22 -14
View File
@@ -22,7 +22,7 @@ set_property(CACHE sleigh_RELEASE_TYPE PROPERTY STRINGS "stable" "HEAD")
find_package(Git REQUIRED)
# Ghidra pinned stable version commit
set(ghidra_version "12.0.4")
set(ghidra_version "12.1.2")
set(ghidra_git_tag "Ghidra_${ghidra_version}_build")
set(ghidra_shallow TRUE)
@@ -37,23 +37,25 @@ set(ghidra_patch_email "41898282+github-actions[bot]@users.noreply.github.com")
set(ghidra_patches
PATCH_COMMAND "${GIT_EXECUTABLE}" config user.name "${ghidra_patch_user}" &&
"${GIT_EXECUTABLE}" config user.email "${ghidra_patch_email}" &&
"${GIT_EXECUTABLE}" config core.longpaths true &&
"${GIT_EXECUTABLE}" am --ignore-space-change --ignore-whitespace --no-gpg-sign
"${CMAKE_CURRENT_LIST_DIR}/patches/stable/0001-Fix-UBSAN-errors-in-decompiler.patch"
"${CMAKE_CURRENT_LIST_DIR}/patches/stable/0002-Use-stroull-instead-of-stroul-to-parse-address-offse.patch"
"${CMAKE_CURRENT_LIST_DIR}/patches/stable/0003-Ignore-floating-point-test-due-to-compilation-differ.patch"
"${CMAKE_CURRENT_LIST_DIR}/patches/stable/0004-Allow-positive-or-negative-NAN-in-decompiler-floatin.patch"
"${CMAKE_CURRENT_LIST_DIR}/patches/stable/0005-decompiler-Fix-strict-weak-ordering-TypePartialEnum.patch"
"${CMAKE_CURRENT_LIST_DIR}/patches/stable/0006-decompiler-Fix-strict-weak-ordering-compareFinalOrde.patch"
"${CMAKE_CURRENT_LIST_DIR}/patches/stable/0007-Fix-UBSAN-signed-left-shift-errors.patch"
"${CMAKE_CURRENT_LIST_DIR}/patches/stable/0006-decompiler-Fix-strict-weak-ordering-PullRecord.patch"
"${CMAKE_CURRENT_LIST_DIR}/patches/stable/0007-decompiler-Fix-strict-weak-ordering-compareFinalOrde.patch"
"${CMAKE_CURRENT_LIST_DIR}/patches/stable/0008-Fix-UBSAN-signed-left-shift-errors.patch"
)
# Ghidra pinned commits used for pinning last known working HEAD commit
if("${sleigh_RELEASE_TYPE}" STREQUAL "HEAD")
# TODO: Try to remember to look at Ghidra/application.properties
# TODO: CMake only likes numeric characters in the version string....
set(ghidra_head_version "12.1")
set(ghidra_head_version "12.2")
set(ghidra_version "${ghidra_head_version}")
set(ghidra_head_git_tag "fc73f70b9cb4523329b1629b2753f87ae734521d")
set(ghidra_head_git_tag "74d498f8da7d13f84604f531d59cb0cac028d6b2")
set(ghidra_git_tag "${ghidra_head_git_tag}")
set(ghidra_shallow FALSE)
set(ghidra_patches
@@ -68,6 +70,7 @@ if("${sleigh_RELEASE_TYPE}" STREQUAL "HEAD")
"${CMAKE_CURRENT_LIST_DIR}/patches/HEAD/0006-decompiler-Fix-strict-weak-ordering-PullRecord.patch"
"${CMAKE_CURRENT_LIST_DIR}/patches/HEAD/0007-decompiler-Fix-strict-weak-ordering-compareFinalOrde.patch"
"${CMAKE_CURRENT_LIST_DIR}/patches/HEAD/0008-Fix-UBSAN-signed-left-shift-errors.patch"
"${CMAKE_CURRENT_LIST_DIR}/patches/HEAD/0009-Use-std-stoull-instead-of-std-stoul-in-scan_number-f.patch"
)
string(SUBSTRING "${ghidra_git_tag}" 0 7 ghidra_short_commit)
else()
@@ -114,10 +117,10 @@ set(sleigh_core_source_list
"${library_root}/globalcontext.cc"
"${library_root}/marshal.cc"
)
#if("${sleigh_RELEASE_TYPE}" STREQUAL "HEAD")
# list(APPEND sleigh_core_source_list
# )
#endif()
# if("${sleigh_RELEASE_TYPE}" STREQUAL "HEAD")
# list(APPEND sleigh_core_source_list
# )
# endif()
set(sleigh_deccore_source_list
"${library_root}/capability.cc"
@@ -178,12 +181,13 @@ set(sleigh_deccore_source_list
"${library_root}/multiprecision.cc"
"${library_root}/constseq.cc"
"${library_root}/expression.cc"
"${library_root}/bitfield.cc"
)
if("${sleigh_RELEASE_TYPE}" STREQUAL "HEAD")
list(APPEND sleigh_deccore_source_list
"${library_root}/bitfield.cc"
)
endif()
# if("${sleigh_RELEASE_TYPE}" STREQUAL "HEAD")
# list(APPEND sleigh_deccore_source_list
# )
# endif()
set(sleigh_extra_source_list
"${library_root}/callgraph.cc"
@@ -200,6 +204,10 @@ set(sleigh_extra_source_list
"${library_root}/unify.cc"
"${library_root}/xml_arch.cc"
)
# if("${sleigh_RELEASE_TYPE}" STREQUAL "HEAD")
# list(APPEND sleigh_extra_source_list
# )
# endif()
set(sleigh_source_list
"${library_root}/sleigh.cc"
+3
View File
@@ -4,11 +4,13 @@ set(spec_file_list
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/68000/data/languages/68020.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/68000/data/languages/68030.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/68000/data/languages/68040.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/68000/data/languages/CPU32.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/68000/data/languages/coldfire.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/8048/data/languages/8048.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/8051/data/languages/80251.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/8051/data/languages/80390.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/8051/data/languages/8051.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/8051/data/languages/cip-51.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/8051/data/languages/mx51.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/8085/data/languages/8085.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/AARCH64/data/languages/AARCH64.slaspec"
@@ -58,6 +60,7 @@ set(spec_file_list
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/HCS12/data/languages/HC12.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/HCS12/data/languages/HCS12.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/HCS12/data/languages/HCS12X.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Hexagon/data/languages/hexagon.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/JVM/data/languages/JVM.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Loongarch/data/languages/loongarch32_f32.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Loongarch/data/languages/loongarch32_f64.slaspec"
+2
View File
@@ -9,6 +9,7 @@ set(spec_file_list
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/8051/data/languages/80251.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/8051/data/languages/80390.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/8051/data/languages/8051.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/8051/data/languages/cip-51.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/8051/data/languages/mx51.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/8085/data/languages/8085.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/AARCH64/data/languages/AARCH64.slaspec"
@@ -58,6 +59,7 @@ set(spec_file_list
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/HCS12/data/languages/HC12.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/HCS12/data/languages/HCS12.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/HCS12/data/languages/HCS12X.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Hexagon/data/languages/hexagon.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/JVM/data/languages/JVM.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Loongarch/data/languages/loongarch32_f32.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Loongarch/data/languages/loongarch32_f64.slaspec"
+5 -4
View File
@@ -26,10 +26,11 @@ add_executable(sleigh_decomp_test
"${library_root}/../unittests/testparamstore.cc"
)
# if(sleigh_RELEASE_IS_HEAD)
# target_sources(sleigh_decomp_test PRIVATE
# )
# endif()
if(sleigh_RELEASE_IS_HEAD)
target_sources(sleigh_decomp_test PRIVATE
"${library_root}/../unittests/testmultiprec.cc"
)
endif()
target_compile_features(sleigh_decomp_test PRIVATE cxx_std_11)
target_include_directories(sleigh_decomp_test PRIVATE "${library_root}")