Compare commits

...

29 Commits

Author SHA1 Message Date
Eric Kilmer 9a983d5a01 Ghidra 11.3 (#319) 2025-03-03 19:26:50 -05:00
Eric Kilmer fbec9dee2b Bump Ghidra HEAD commit 5a3a8c36c (#318)
Changed files:

```
M       Ghidra/Features/Decompiler/src/decompile/cpp/heritage.cc
M       Ghidra/Processors/x86/data/languages/avx512.sinc
M       Ghidra/Processors/x86/data/languages/avx512_manual.sinc
```
2025-03-03 18:33:29 -05:00
Eric Kilmer aeea2f6d2e ci: Ignore java file in file update listing 2025-02-09 17:09:58 -05:00
Eric Kilmer e83ec16d28 Bump Ghidra HEAD commit 2ec84c2fb
Changed files:

```
M       Ghidra/Features/Decompiler/src/decompile/cpp/fspec.cc
M       Ghidra/Features/Decompiler/src/decompile/cpp/fspec.hh
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/ghidra_translate.cc
M       Ghidra/Features/Decompiler/src/decompile/cpp/ghidra_translate.hh
M       Ghidra/Features/Decompiler/src/decompile/cpp/marshal.cc
M       Ghidra/Features/Decompiler/src/decompile/cpp/modelrules.cc
M       Ghidra/Features/Decompiler/src/decompile/cpp/modelrules.hh
M       Ghidra/Features/Decompiler/src/decompile/cpp/pcoderaw.cc
M       Ghidra/Features/Decompiler/src/decompile/cpp/pcoderaw.hh
M       Ghidra/Features/Decompiler/src/decompile/cpp/ruleaction.cc
M       Ghidra/Features/Decompiler/src/decompile/cpp/ruleaction.hh
M       Ghidra/Features/Decompiler/src/decompile/cpp/rulecompile.hh
M       Ghidra/Features/Decompiler/src/decompile/cpp/sleighbase.cc
M       Ghidra/Features/Decompiler/src/decompile/cpp/sleighbase.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/unittests/testmarshal.cc
M       Ghidra/Processors/ARM/data/languages/ARMneon.sinc
M       Ghidra/Processors/x86/data/languages/avx.sinc
M       Ghidra/Processors/x86/data/languages/avx512.sinc
M       Ghidra/Processors/x86/data/languages/avx512_manual.sinc
M       Ghidra/Processors/x86/data/languages/cet.sinc
M       Ghidra/Processors/x86/data/languages/ia.sinc
M       Ghidra/Processors/x86/data/languages/x86.ldefs
```
2025-02-09 16:48:44 -05:00
Eric Kilmer 52c4f0db49 Bump Ghidra HEAD commit bb4853e41
Changed files:

```
M       Ghidra/Features/Decompiler/src/decompile/cpp/fspec.cc
M       Ghidra/Features/Decompiler/src/decompile/cpp/fspec.hh
M       Ghidra/Features/Decompiler/src/decompile/cpp/heritage.cc
M       Ghidra/Features/Decompiler/src/decompile/cpp/modelrules.hh
```
2025-02-09 16:43:20 -05:00
Eric Kilmer ab92d51452 Bump Ghidra HEAD commit 213825064
Changed files:

```
M       Ghidra/Features/Decompiler/src/decompile/build.gradle
M       Ghidra/Features/Decompiler/src/decompile/cpp/cast.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/funcdata.hh
M       Ghidra/Features/Decompiler/src/decompile/cpp/funcdata_op.cc
M       Ghidra/Features/Decompiler/src/decompile/cpp/printc.cc
M       Ghidra/Features/Decompiler/src/decompile/cpp/printc.hh
M       Ghidra/Features/Decompiler/src/decompile/cpp/printlanguage.cc
M       Ghidra/Features/Decompiler/src/decompile/cpp/printlanguage.hh
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/variable.cc
A       Ghidra/Features/Decompiler/src/decompile/datatests/concatsplit.xml
```
2025-02-09 16:40:40 -05:00
Eric Kilmer 5de8b6c8d6 Bump Ghidra HEAD commit cfffcf0c1 (#314)
Changed files:

```
M       Ghidra/Processors/Toy/data/languages/toy.sinc
M       Ghidra/Processors/Toy/data/languages/toyInstructions.sinc
```
2025-02-09 21:40:14 +00:00
Eric Kilmer 91ab01ad36 Bump Ghidra HEAD commit 860c75448 (#313)
Changed files:

```
M       Ghidra/Processors/AARCH64/data/languages/AARCH64_golang.register.info
M       Ghidra/Processors/x86/data/languages/x86-64-golang.register.info
```
2025-02-09 16:23:36 -05:00
Eric Kilmer db074738f1 Bump Ghidra HEAD commit 14527b015 (#310)
Changed files:

```
M       Ghidra/Features/Decompiler/src/decompile/cpp/constseq.cc
M       Ghidra/Features/Decompiler/src/decompile/cpp/coreaction.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/ruleaction.cc
M       Ghidra/Features/Decompiler/src/decompile/cpp/subflow.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/varnode.cc
M       Ghidra/Features/Decompiler/src/decompile/cpp/varnode.hh
```
2025-02-09 15:48:56 -05:00
Eric Kilmer ca9534df0c Bump Ghidra HEAD commit b69e48765 (#309)
Changed files:

```
M       Ghidra/Features/Decompiler/src/decompile/cpp/fspec.cc
M       Ghidra/Features/Decompiler/src/decompile/cpp/modelrules.cc
M       Ghidra/Features/Decompiler/src/decompile/cpp/modelrules.hh
M       Ghidra/Processors/TI_MSP430/data/languages/TI_MSP430.cspec
```
2025-02-09 15:30:18 -05:00
Eric Kilmer 2e03227e87 Update Ghidra HEAD to commit ec59e407b (#308)
Bump Ghidra HEAD commit ec59e407b

Changed files:

```
M       Ghidra/Features/Decompiler/src/decompile/cpp/condexe.cc
M       Ghidra/Features/Decompiler/src/decompile/cpp/condexe.hh
M       Ghidra/Features/Decompiler/src/decompile/cpp/coreaction.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/ruleaction.hh
M       Ghidra/Features/Decompiler/src/decompile/cpp/subflow.cc
M       Ghidra/Features/Decompiler/src/decompile/cpp/typeop.cc
M       Ghidra/Features/Decompiler/src/decompile/cpp/varnode.cc
M       Ghidra/Features/Decompiler/src/decompile/cpp/varnode.hh
A       Ghidra/Features/Decompiler/src/decompile/datatests/ccmp.xml
M       Ghidra/Processors/68000/data/languages/68000.ldefs
M       Ghidra/Processors/AARCH64/data/languages/AARCH64.ldefs
M       Ghidra/Processors/AARCH64/data/languages/AARCH64_swift.cspec
M       Ghidra/Processors/ARM/data/languages/ARM.ldefs
M       Ghidra/Processors/Loongarch/data/languages/loongarch.ldefs
M       Ghidra/Processors/MIPS/data/languages/mips.ldefs
M       Ghidra/Processors/PowerPC/data/languages/ppc.ldefs
M       Ghidra/Processors/RISCV/data/languages/riscv.ldefs
M       Ghidra/Processors/Sparc/data/languages/SparcV9.ldefs
M       Ghidra/Processors/SuperH4/data/languages/SuperH4.ldefs
M       Ghidra/Processors/Xtensa/data/languages/xtensa.ldefs
M       Ghidra/Processors/x86/data/languages/x86-64-swift.cspec
M       Ghidra/Processors/x86/data/languages/x86.ldefs
```
2025-02-09 15:01:55 -05:00
Eric Kilmer bcb4ff6f4a Update ghidra HEAD to commit 2333ab611
* cron/update-ghidra-2333ab611:
  Fix Windows Debug build with patch for strict weak ordering
  Rework and regenerate patches
  Bump Ghidra HEAD commit 2333ab611
2025-02-09 14:23:39 -05:00
Eric Kilmer ac55146b2c Fix Windows Debug build with patch for strict weak ordering 2025-02-08 20:38:54 -05:00
Eric Kilmer 35fbbf873e Rework and regenerate patches
Only modified ruleaction.cc in 0001-Fix-UBSAN-errors-in-decompiler.patch
2025-02-08 20:38:54 -05:00
pgoodman 014530d317 Bump Ghidra HEAD commit 2333ab611
Changed files:

```
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/grammar.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/grammar.y
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/printc.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/ruleaction.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/ruleaction.hh
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/testfunction.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/testfunction.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/typeop.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/typeop.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/variable.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/variable.hh
A	Ghidra/Features/Decompiler/src/decompile/datatests/enum.xml
M	Ghidra/Features/Decompiler/src/decompile/datatests/heapstring.xml
M	Ghidra/Features/Decompiler/src/decompile/unittests/testtypes.cc
M	Ghidra/Processors/AARCH64/data/languages/AARCH64.opinion
M	Ghidra/Processors/TI_MSP430/data/languages/TI_MSP430.cspec
```
2025-02-08 20:38:54 -05:00
Eric Kilmer 4d8bdb54a3 auto-update use Python version 3.10 in CI 2025-02-06 13:42:12 -05:00
dependabot[bot] 364b5e4ff9 build(deps): bump softprops/action-gh-release from 2.2.0 to 2.2.1 (#306)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.2.0 to 2.2.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.2.0...v2.2.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-08 11:33:10 -05:00
dependabot[bot] 4519d754ab build(deps): bump softprops/action-gh-release from 2.1.0 to 2.2.0 (#305)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.1.0 to 2.2.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.1.0...v2.2.0)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  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>
2024-12-11 08:57:30 -05:00
dependabot[bot] 6db8a80488 build(deps): bump softprops/action-gh-release from 2.0.9 to 2.1.0 (#302)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.0.9 to 2.1.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.0.9...v2.1.0)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  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>
2024-11-12 09:11:59 -05:00
auto-updater[bot] 39f087356c Update Ghidra HEAD to commit 30ef757d8 (#301)
Bump Ghidra HEAD commit 30ef757d8

Changed files:

```
A	Ghidra/Processors/6502/README.md
M	Ghidra/Processors/6502/certification.manifest
A	Ghidra/Processors/68000/README.md
M	Ghidra/Processors/68000/certification.manifest
A	Ghidra/Processors/8048/README.md
M	Ghidra/Processors/8048/certification.manifest
A	Ghidra/Processors/8051/README.md
M	Ghidra/Processors/8051/certification.manifest
A	Ghidra/Processors/8085/README.md
M	Ghidra/Processors/8085/certification.manifest
A	Ghidra/Processors/AARCH64/README.md
M	Ghidra/Processors/AARCH64/certification.manifest
A	Ghidra/Processors/ARM/README.md
M	Ghidra/Processors/ARM/certification.manifest
A	Ghidra/Processors/Atmel/README.md
M	Ghidra/Processors/Atmel/certification.manifest
A	Ghidra/Processors/BPF/README.md
M	Ghidra/Processors/BPF/certification.manifest
A	Ghidra/Processors/CP1600/README.md
M	Ghidra/Processors/CP1600/certification.manifest
A	Ghidra/Processors/CR16/README.md
M	Ghidra/Processors/CR16/certification.manifest
A	Ghidra/Processors/DATA/README.md
M	Ghidra/Processors/DATA/certification.manifest
A	Ghidra/Processors/Dalvik/README.md
M	Ghidra/Processors/Dalvik/certification.manifest
A	Ghidra/Processors/HCS08/README.md
M	Ghidra/Processors/HCS08/certification.manifest
A	Ghidra/Processors/HCS12/README.md
M	Ghidra/Processors/HCS12/certification.manifest
A	Ghidra/Processors/JVM/README.md
M	Ghidra/Processors/JVM/certification.manifest
A	Ghidra/Processors/Loongarch/README.md
M	Ghidra/Processors/Loongarch/certification.manifest
A	Ghidra/Processors/M16C/README.md
M	Ghidra/Processors/M16C/certification.manifest
A	Ghidra/Processors/M8C/README.md
M	Ghidra/Processors/M8C/certification.manifest
A	Ghidra/Processors/MC6800/README.md
M	Ghidra/Processors/MC6800/certification.manifest
A	Ghidra/Processors/MCS96/README.md
M	Ghidra/Processors/MCS96/certification.manifest
A	Ghidra/Processors/MIPS/README.md
M	Ghidra/Processors/MIPS/certification.manifest
A	Ghidra/Processors/PA-RISC/README.md
M	Ghidra/Processors/PA-RISC/certification.manifest
A	Ghidra/Processors/PIC/README.md
M	Ghidra/Processors/PIC/certification.manifest
A	Ghidra/Processors/PowerPC/README.md
M	Ghidra/Processors/PowerPC/certification.manifest
A	Ghidra/Processors/RISCV/README.md
M	Ghidra/Processors/RISCV/certification.manifest
A	Ghidra/Processors/Sparc/README.md
M	Ghidra/Processors/Sparc/certification.manifest
A	Ghidra/Processors/SuperH/README.md
M	Ghidra/Processors/SuperH/certification.manifest
A	Ghidra/Processors/SuperH4/README.md
M	Ghidra/Processors/SuperH4/certification.manifest
A	Ghidra/Processors/TI_MSP430/README.md
M	Ghidra/Processors/TI_MSP430/certification.manifest
A	Ghidra/Processors/Toy/README.md
M	Ghidra/Processors/Toy/certification.manifest
A	Ghidra/Processors/V850/README.md
M	Ghidra/Processors/V850/certification.manifest
A	Ghidra/Processors/Xtensa/README.md
M	Ghidra/Processors/Xtensa/certification.manifest
A	Ghidra/Processors/Z80/README.md
M	Ghidra/Processors/Z80/certification.manifest
A	Ghidra/Processors/eBPF/README.md
M	Ghidra/Processors/eBPF/certification.manifest
A	Ghidra/Processors/tricore/README.md
M	Ghidra/Processors/tricore/certification.manifest
A	Ghidra/Processors/x86/README.md
M	Ghidra/Processors/x86/certification.manifest
```

Co-authored-by: pgoodman <43664+pgoodman@users.noreply.github.com>
2024-11-11 11:08:50 -05:00
Eric Kilmer 0c5929b716 Ghidra 11.2.1 (#300) 2024-11-06 09:46:41 -05:00
auto-updater[bot] 84a582a33c Update Ghidra HEAD to commit ffaa97cbd (#299)
* Remove index-check patch merged in upstream

Changed files:

```
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/constseq.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/constseq.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/flow.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/funcdata.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/funcdata_op.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/ifacedecomp.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/typeop.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/typeop.hh
A	Ghidra/Features/Decompiler/src/decompile/datatests/inline.xml
```

---------

Co-authored-by: Eric Kilmer <eric.d.kilmer@gmail.com>
2024-11-04 08:41:48 -05:00
dependabot[bot] d8ce6443bf build(deps): bump softprops/action-gh-release from 2.0.8 to 2.0.9 (#298)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.0.8 to 2.0.9.
- [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.0.8...v2.0.9)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-01 09:17:47 -04:00
Eric Kilmer ae03ceb39c Fix floating point test and allow positive or negative NAN
Apple Silicon mac reports positive NAN instead of negative NAN, so allow
both using a regex
2024-10-30 14:30:42 -04:00
Eric Kilmer 39d6587cf9 Update CI runner and build steps 2024-10-30 12:08:06 -04:00
dependabot[bot] 2bb6cfe47b build(deps): bump peter-evans/create-pull-request from 6 to 7 (#287)
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 6 to 7.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v6...v7)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  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>
Co-authored-by: Eric Kilmer <eric.d.kilmer@gmail.com>
2024-10-30 13:05:12 +00:00
auto-updater[bot] c3a84c541a Update Ghidra HEAD to commit 7ddd8665b (#294)
Changed files:

```
M	Ghidra/Features/Decompiler/src/decompile/cpp/coreaction.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/cover.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/cpool.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/double.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/filemanage.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/flow.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/fspec.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_varnode.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/grammar.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/grammar.y
M	Ghidra/Features/Decompiler/src/decompile/cpp/heritage.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/heritage.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/ifacedecomp.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/ifacedecomp.hh
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/merge.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/paramid.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/ruleaction.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/test.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/typeop.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/types.h
M	Ghidra/Features/Decompiler/src/decompile/cpp/variable.cc
A	Ghidra/Features/Decompiler/src/decompile/datatests/revisit.xml
A	Ghidra/Features/Decompiler/src/decompile/datatests/switchloop.xml
A	Ghidra/Features/Decompiler/src/decompile/datatests/switchmulti.xml
M	Ghidra/Processors/ARM/src/test.processors/java/ghidra/test/processors/ARM_v8m_O0_EmulatorTest.java
M	Ghidra/Processors/ARM/src/test.processors/java/ghidra/test/processors/ARM_v8m_O3_EmulatorTest.java
```

---------

Co-authored-by: Eric Kilmer <eric.d.kilmer@gmail.com>
2024-10-30 03:14:30 +00:00
Eric Kilmer 45e124cdab Ghidra 11.2 (#296) 2024-10-29 22:35:41 -04:00
auto-updater[bot] e4a5f4326c Update Ghidra HEAD to commit fd1a448bf (#290)
Changed files:

```
M	Ghidra/Features/Decompiler/src/decompile/cpp/Makefile
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/block.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/block.hh
A	Ghidra/Features/Decompiler/src/decompile/cpp/constseq.cc
A	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/double.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/double.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/fspec.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_varnode.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/ghidra_arch.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/jumptable.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/merge.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/printc.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/printc.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/ruleaction.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/ruleaction.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/sleighbase.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/space.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/stringmanage.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/stringmanage.hh
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/testfunction.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/transform.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/transform.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/typeop.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/typeop.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/userop.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/userop.hh
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/varmap.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/varmap.hh
A	Ghidra/Features/Decompiler/src/decompile/datatests/doublemove.xml
A	Ghidra/Features/Decompiler/src/decompile/datatests/floatcast.xml
A	Ghidra/Features/Decompiler/src/decompile/datatests/floatconv.xml
M	Ghidra/Features/Decompiler/src/decompile/datatests/floatprint.xml
A	Ghidra/Features/Decompiler/src/decompile/datatests/heapstring.xml
A	Ghidra/Features/Decompiler/src/decompile/datatests/orcompare.xml
A	Ghidra/Features/Decompiler/src/decompile/datatests/stackstring.xml
M	Ghidra/Features/Decompiler/src/decompile/unittests/testfloatemu.cc
M	Ghidra/Processors/68000/data/languages/68000.sinc
M	Ghidra/Processors/8051/certification.manifest
A	Ghidra/Processors/8051/data/languages/8051.opinion
M	Ghidra/Processors/AARCH64/data/languages/AARCH64_win.cspec
M	Ghidra/Processors/AARCH64/src/main/java/ghidra/app/util/bin/format/elf/relocation/AARCH64_ElfRelocationHandler.java
M	Ghidra/Processors/ARM/data/languages/ARM.dwarf
M	Ghidra/Processors/ARM/data/languages/ARMneon.dwarf
M	Ghidra/Processors/ARM/data/languages/ARMneon.sinc
M	Ghidra/Processors/ARM/data/languages/ARMv8.sinc
M	Ghidra/Processors/ARM/src/main/java/ghidra/app/util/bin/format/elf/relocation/ARM_ElfRelocationHandler.java
M	Ghidra/Processors/Atmel/ghidra_scripts/CreateAVR8GDTArchiveScript.java
M	Ghidra/Processors/Atmel/src/main/java/ghidra/app/util/bin/format/elf/relocation/AVR32_ElfRelocationHandler.java
M	Ghidra/Processors/Atmel/src/main/java/ghidra/app/util/bin/format/elf/relocation/AVR8_ElfRelocationHandler.java
M	Ghidra/Processors/Loongarch/src/main/java/ghidra/app/util/bin/format/elf/relocation/Loongarch_ElfRelocationHandler.java
A	Ghidra/Processors/M16C/Module.manifest
A	Ghidra/Processors/M16C/build.gradle
A	Ghidra/Processors/M16C/certification.manifest
A	Ghidra/Processors/M16C/data/languages/M16C_60.cspec
A	Ghidra/Processors/M16C/data/languages/M16C_60.ldefs
A	Ghidra/Processors/M16C/data/languages/M16C_60.pspec
A	Ghidra/Processors/M16C/data/languages/M16C_60.slaspec
A	Ghidra/Processors/M16C/data/languages/M16C_80.cspec
A	Ghidra/Processors/M16C/data/languages/M16C_80.ldefs
A	Ghidra/Processors/M16C/data/languages/M16C_80.pspec
A	Ghidra/Processors/M16C/data/languages/M16C_80.slaspec
A	Ghidra/Processors/M16C/data/manuals/M16C_60.idx
A	Ghidra/Processors/M16C/data/manuals/M16C_80.idx
M	Ghidra/Processors/MIPS/data/languages/MIPS.opinion
M	Ghidra/Processors/MIPS/src/main/java/ghidra/app/util/bin/format/elf/relocation/MIPS_ElfRelocationHandler.java
M	Ghidra/Processors/PIC/data/languages/pic16.ldefs
M	Ghidra/Processors/PIC/data/languages/pic16.pspec
M	Ghidra/Processors/PIC/data/languages/pic16.sinc
M	Ghidra/Processors/PIC/data/languages/pic16_instructions.sinc
M	Ghidra/Processors/PIC/data/languages/pic16f.pspec
M	Ghidra/Processors/PIC/src/main/java/ghidra/app/plugin/core/analysis/Pic16Analyzer.java
M	Ghidra/Processors/PIC/src/main/java/ghidra/app/util/bin/format/elf/relocation/PIC30_ElfRelocationHandler.java
M	Ghidra/Processors/PowerPC/data/languages/SPE_APU.sinc
M	Ghidra/Processors/PowerPC/data/languages/evx.sinc
M	Ghidra/Processors/PowerPC/data/languages/ppc.ldefs
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/PowerPC/src/main/java/ghidra/app/util/bin/format/elf/relocation/PowerPC64_ElfRelocationHandler.java
M	Ghidra/Processors/PowerPC/src/main/java/ghidra/app/util/bin/format/elf/relocation/PowerPC_ElfRelocationHandler.java
M	Ghidra/Processors/RISCV/src/main/java/ghidra/app/util/bin/format/elf/relocation/RISCV_ElfRelocationHandler.java
M	Ghidra/Processors/Sparc/certification.manifest
M	Ghidra/Processors/Sparc/data/languages/SparcV9.ldefs
M	Ghidra/Processors/Sparc/data/languages/SparcV9.sinc
M	Ghidra/Processors/Sparc/data/languages/SparcV9_32.cspec
M	Ghidra/Processors/Sparc/data/languages/SparcV9_64.cspec
M	Ghidra/Processors/Sparc/data/patterns/SPARC_patterns.xml
M	Ghidra/Processors/Sparc/src/main/java/ghidra/app/plugin/core/analysis/SparcAnalyzer.java
A	Ghidra/Processors/Sparc/src/main/java/ghidra/app/plugin/core/analysis/SparcEarlyAddressAnalyzer.java
A	Ghidra/Processors/Sparc/src/main/java/ghidra/app/util/bin/format/elf/relocation/SPARC64_ElfRelocationHandler.java
M	Ghidra/Processors/Sparc/src/main/java/ghidra/app/util/bin/format/elf/relocation/SPARC_ElfRelocationHandler.java
M	Ghidra/Processors/Sparc/src/main/java/ghidra/app/util/bin/format/elf/relocation/SPARC_ElfRelocationType.java
M	Ghidra/Processors/SuperH4/src/main/java/ghidra/app/util/bin/format/elf/relocation/SH_ElfRelocationHandler.java
M	Ghidra/Processors/TI_MSP430/src/main/java/ghidra/app/util/bin/format/elf/relocation/MSP430X_ElfRelocationHandler.java
M	Ghidra/Processors/TI_MSP430/src/main/java/ghidra/app/util/bin/format/elf/relocation/MSP430_ElfRelocationHandler.java
M	Ghidra/Processors/Xtensa/src/main/java/ghidra/app/util/bin/format/elf/relocation/Xtensa_ElfRelocationHandler.java
D	Ghidra/Processors/eBPF/src/main/java/ghidra/app/plugin/core/analysis/eBPFAnalyzer.java
A	Ghidra/Processors/eBPF/src/main/java/ghidra/app/plugin/core/analysis/eBPFHelperDataTypes.java
A	Ghidra/Processors/eBPF/src/main/java/ghidra/app/plugin/core/analysis/eBPFSyscallAnalyzer.java
M	Ghidra/Processors/eBPF/src/main/java/ghidra/app/util/bin/format/elf/relocation/eBPF_ElfRelocationHandler.java
M	Ghidra/Processors/tricore/src/main/java/ghidra/app/util/bin/format/elf/relocation/Tricore_ElfRelocationHandler.java
M	Ghidra/Processors/x86/data/languages/avx.sinc
M	Ghidra/Processors/x86/data/languages/avx2.sinc
M	Ghidra/Processors/x86/data/languages/ia.sinc
M	Ghidra/Processors/x86/data/languages/lockable.sinc
M	Ghidra/Processors/x86/data/languages/x86-64.pspec
M	Ghidra/Processors/x86/data/languages/x86.ldefs
M	Ghidra/Processors/x86/data/languages/x86.pspec
M	Ghidra/Processors/x86/src/main/java/ghidra/app/util/bin/format/elf/relocation/X86_32_ElfRelocationHandler.java
M	Ghidra/Processors/x86/src/main/java/ghidra/app/util/bin/format/elf/relocation/X86_64_ElfRelocationContext.java
M	Ghidra/Processors/x86/src/main/java/ghidra/app/util/bin/format/elf/relocation/X86_64_ElfRelocationHandler.java
```

* Ignore double floating point test due to errors on mac and Windows

* Reformat patches

---------

Co-authored-by: Eric Kilmer <eric.d.kilmer@gmail.com>
2024-10-29 22:08:21 -04:00
21 changed files with 293 additions and 148 deletions
+5 -10
View File
@@ -20,7 +20,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-13, windows-latest]
os: [ubuntu-latest, macos-latest, windows-latest]
build_type: [RelWithDebInfo, Debug]
release: [stable, HEAD]
@@ -43,13 +43,8 @@ jobs:
if: runner.os == 'macOS'
run: |
echo "MACOSX_DEPLOYMENT_TARGET=10.15" >> ${GITHUB_ENV}
# Install Python separately to workround recurring homebrew CI issue.
# See https://github.com/actions/runner-images/issues/9471 for more details.
brew install python@3 || true
brew link --overwrite python@3
brew install \
brew install --formula \
ccache \
cmake \
doxygen \
graphviz
@@ -222,7 +217,7 @@ jobs:
path: ${{ env.DEB_PACKAGE_PATH }}
- name: Release DEB package artifact (RelWithDebInfo only)
uses: softprops/action-gh-release@v2.0.8
uses: softprops/action-gh-release@v2.2.1
if: matrix.build_type == 'RelWithDebInfo' && runner.os == 'Linux' && startsWith(github.ref, 'refs/tags/') && matrix.release == 'stable'
with:
files: ${{ env.DEB_PACKAGE_PATH }}
@@ -235,7 +230,7 @@ jobs:
name: ${{ env.RPM_PACKAGE_NAME }}
path: ${{ env.RPM_PACKAGE_PATH }}
- name: Release RPM package artifact (RelWithDebInfo only)
uses: softprops/action-gh-release@v2.0.8
uses: softprops/action-gh-release@v2.2.1
if: matrix.build_type == 'RelWithDebInfo' && runner.os == 'Linux' && startsWith(github.ref, 'refs/tags/') && matrix.release == 'stable'
with:
files: ${{ env.RPM_PACKAGE_PATH }}
@@ -249,7 +244,7 @@ jobs:
path: ${{ env.TGZ_PACKAGE_PATH }}
- name: Release TGZ package artifact (RelWithDebInfo only)
uses: softprops/action-gh-release@v2.0.8
uses: softprops/action-gh-release@v2.2.1
if: matrix.build_type == 'RelWithDebInfo' && startsWith(github.ref, 'refs/tags/') && matrix.release == 'stable'
with:
files: ${{ env.TGZ_PACKAGE_PATH }}
+2 -2
View File
@@ -17,7 +17,7 @@ jobs:
- uses: actions/setup-python@v5
with:
# Use oldest supported version for maximum script compatibility
python-version: '3.7'
python-version: '3.10'
- name: Run Update Script
id: head_update
@@ -36,7 +36,7 @@ jobs:
- name: Create PR
if: steps.head_update.outputs.did_update
uses: peter-evans/create-pull-request@v6
uses: peter-evans/create-pull-request@v7
with:
title: Update Ghidra HEAD to commit ${{ steps.head_update.outputs.short_sha }}
commit-message: |
+5 -5
View File
@@ -142,12 +142,12 @@ set(public_include_header_list
"${library_root}/compression.hh"
"${library_root}/multiprecision.hh"
"${library_root}/slaformat.hh"
"${library_root}/constseq.hh"
)
if(sleigh_RELEASE_IS_HEAD)
list(APPEND public_include_header_list
"${library_root}/constseq.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
View File
@@ -71,6 +71,7 @@ def git_get_changed_files(
.strip()
.splitlines()
)
changed_files = list(filter(lambda p: not p.endswith(".java"), changed_files))
num_changed = len(changed_files)
if num_changed > 0:
msg(f"Found {num_changed} changed sleigh files:")
@@ -1,7 +1,7 @@
From 43f6d3300c3f8e519b014fff890450f814c8db34 Mon Sep 17 00:00:00 2001
From 7c6e51dd1234387b98e1ad61d3f88a0565364b28 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/4] Fix UBSAN errors in decompiler
Subject: [PATCH 1/6] Fix UBSAN errors in decompiler
Co-authored-by: Alex Cameron <asc@tetsuo.sh>
---
@@ -9,16 +9,16 @@ Co-authored-by: Alex Cameron <asc@tetsuo.sh>
.../Decompiler/src/decompile/cpp/op.cc | 6 +++++-
.../Decompiler/src/decompile/cpp/opbehavior.cc | 8 +++++++-
.../src/decompile/cpp/pcodecompile.cc | 18 +++++++++++-------
.../Decompiler/src/decompile/cpp/ruleaction.cc | 18 ++++++++++++++----
.../Decompiler/src/decompile/cpp/ruleaction.cc | 12 +++++++++---
.../Decompiler/src/decompile/cpp/semantics.cc | 2 ++
.../Decompiler/src/decompile/cpp/semantics.hh | 2 +-
.../src/decompile/cpp/slgh_compile.cc | 2 +-
.../Decompiler/src/decompile/cpp/type.cc | 2 +-
.../src/decompile/unittests/testfloatemu.cc | 2 +-
10 files changed, 49 insertions(+), 19 deletions(-)
10 files changed, 44 insertions(+), 18 deletions(-)
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/fspec.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/fspec.cc
index 65c1cc7889..cb3284b787 100644
index d78b78731c..caf4b24d15 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/fspec.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/fspec.cc
@@ -2868,8 +2868,12 @@ void ProtoModelMerged::decode(Decoder &decoder)
@@ -37,7 +37,7 @@ index 65c1cc7889..cb3284b787 100644
void ParameterBasic::setTypeLock(bool val)
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/op.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/op.cc
index 74a62950c8..bc21d20250 100644
index d51460be84..45bf394862 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/op.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/op.cc
@@ -666,7 +666,11 @@ uintb PcodeOp::getNZMaskLocal(bool cliploop) const
@@ -116,10 +116,10 @@ index ca9d71ab99..85d4dd281d 100644
return res;
}
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/ruleaction.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/ruleaction.cc
index b6d5aaa461..ff1e9a10d7 100644
index 009570af71..72b2a10503 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/ruleaction.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/ruleaction.cc
@@ -977,7 +977,12 @@ int4 RulePullsubIndirect::applyOp(PcodeOp *op,Funcdata &data)
@@ -976,7 +976,12 @@ int4 RulePullsubIndirect::applyOp(PcodeOp *op,Funcdata &data)
Varnode *outvn = op->getOut();
if (outvn->isPrecisLo()||outvn->isPrecisHi()) return 0; // Don't pull apart double precision object
@@ -133,7 +133,7 @@ index b6d5aaa461..ff1e9a10d7 100644
consume = ~consume;
if ((consume & indir->getIn(0)->getConsume())!=0) return 0;
@@ -6785,8 +6790,9 @@ int4 RulePtrsubCharConstant::applyOp(PcodeOp *op,Funcdata &data)
@@ -7031,8 +7036,9 @@ int4 RulePtrsubCharConstant::applyOp(PcodeOp *op,Funcdata &data)
Varnode *sb = op->getIn(0);
Datatype *sbType = sb->getTypeReadFacing(op);
if (sbType->getMetatype() != TYPE_PTR) return 0;
@@ -145,19 +145,6 @@ index b6d5aaa461..ff1e9a10d7 100644
Varnode *vn1 = op->getIn(1);
if (!vn1->isConstant()) return 0;
Varnode *outvn = op->getOut();
@@ -8590,7 +8596,11 @@ int4 RuleSubvarSubpiece::applyOp(PcodeOp *op,Funcdata &data)
Varnode *outvn = op->getOut();
int4 flowsize = outvn->getSize();
uintb mask = calc_mask( flowsize );
- mask <<= 8*((int4)op->getIn(1)->getOffset());
+ if (8*((int4)op->getIn(1)->getOffset()) < sizeof(mask)) {
+ mask <<= 8*((int4)op->getIn(1)->getOffset());
+ } else {
+ mask = 0;
+ }
bool aggressive = outvn->isPtrFlow();
if (!aggressive) {
if ((vn->getConsume() & mask) != vn->getConsume()) return 0;
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/semantics.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/semantics.cc
index cd9b9835b1..8a4616c3b9 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/semantics.cc
@@ -206,10 +193,10 @@ index 50d85e22ba..9f3b456229 100644
msg << " Label <" << sym->getName() << "> was placed but not used" << endl;
else if (!sym->isPlaced())
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/type.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/type.cc
index 04a5bdce7c..5b9aeb7c04 100644
index fd0ab26fb4..7f654c220b 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/type.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/type.cc
@@ -3590,8 +3590,8 @@ void TypeFactory::recalcPointerSubmeta(Datatype *base,sub_metatype sub)
@@ -3728,8 +3728,8 @@ void TypeFactory::recalcPointerSubmeta(Datatype *base,sub_metatype sub)
top.submeta = sub; // Search on the incorrect submeta
iter = tree.lower_bound(&top);
while(iter != tree.end()) {
@@ -220,10 +207,10 @@ index 04a5bdce7c..5b9aeb7c04 100644
++iter;
if (ptr->submeta == sub) {
diff --git a/Ghidra/Features/Decompiler/src/decompile/unittests/testfloatemu.cc b/Ghidra/Features/Decompiler/src/decompile/unittests/testfloatemu.cc
index c35bde8774..061e536775 100644
index 2571f55f1a..fe40e22b1b 100644
--- a/Ghidra/Features/Decompiler/src/decompile/unittests/testfloatemu.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/unittests/testfloatemu.cc
@@ -346,7 +346,7 @@ TEST(float_opTrunc_to_int) {
@@ -375,7 +375,7 @@ TEST(float_opTrunc_to_int) {
for(float f:float_test_values) {
// avoid undefined behavior
@@ -233,5 +220,5 @@ index c35bde8774..061e536775 100644
uintb true_result = ((uintb)(int32_t)f) & 0xffffffff;
uintb encoding = format.getEncoding(f);
--
2.47.0
2.48.1
@@ -1,7 +1,7 @@
From d5a7836f29a245845a0225d9aa9ca8332cc60c6c Mon Sep 17 00:00:00 2001
From 5e37c51ebc8a3ae0f32a3cb0049aaebafec48d7d 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/4] Use `stroull` instead of `stroul` to parse address
Subject: [PATCH 2/6] Use `stroull` instead of `stroul` to parse address
offsets
---
@@ -9,7 +9,7 @@ Subject: [PATCH 2/4] Use `stroull` instead of `stroul` to parse address
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/space.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/space.cc
index bda09fc94c..d077ee375e 100644
index dbaa2e775f..72927bf379 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/space.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/space.cc
@@ -16,6 +16,8 @@
@@ -21,7 +21,7 @@ index bda09fc94c..d077ee375e 100644
namespace ghidra {
AttributeId ATTRIB_BASE = AttributeId("base",89);
@@ -274,7 +276,10 @@ uintb AddrSpace::read(const string &s,int4 &size) const
@@ -277,7 +279,10 @@ uintb AddrSpace::read(const string &s,int4 &size) const
}
}
catch(LowlevelError &err) { // Name doesn't exist
@@ -34,5 +34,5 @@ index bda09fc94c..d077ee375e 100644
enddata = (const char *) tmpdata;
if (enddata - s.c_str() == s.size()) { // If no size or offset override
--
2.47.0
2.48.1
@@ -1,26 +0,0 @@
From 9a96513822566b201e50ca26a38aaafafc8f4520 Mon Sep 17 00:00:00 2001
From: Eric Kilmer <eric.d.kilmer@gmail.com>
Date: Sat, 30 Mar 2024 18:46:16 -0400
Subject: [PATCH 3/4] Add missing index check to prevent errors in Windows
Not sure why this only appears when testing on Windows.
---
Ghidra/Features/Decompiler/src/decompile/cpp/ifacedecomp.cc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/ifacedecomp.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/ifacedecomp.cc
index 0237adb820..5048a9d480 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/ifacedecomp.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/ifacedecomp.cc
@@ -1844,7 +1844,7 @@ void IfcProtooverride::execute(istream &s)
s >> ws;
Address callpoint(parse_machaddr(s,discard,*dcp->conf->types));
int4 i;
- for(i=0;dcp->fd->numCalls();++i)
+ for(i=0;i<dcp->fd->numCalls();++i)
if (dcp->fd->getCallSpecs(i)->getOp()->getAddr() == callpoint) break;
if (i == dcp->fd->numCalls())
throw IfaceExecutionError("No call is made at this address");
--
2.47.0
@@ -1,7 +1,7 @@
From 7321d6fa0d5098f0f0db17ec8c37ff35f59be688 Mon Sep 17 00:00:00 2001
From 0feb881ef1cbc9aa4639e16914b7d9ed863baadf Mon Sep 17 00:00:00 2001
From: Eric Kilmer <eric.d.kilmer@gmail.com>
Date: Tue, 29 Oct 2024 15:30:57 -0400
Subject: [PATCH 4/4] Use string resize instead of reserve
Subject: [PATCH 3/6] Use string resize instead of reserve
assign will fix up the size to hold all of what's copied
---
@@ -9,7 +9,7 @@ assign will fix up the size to hold all of what's copied
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/stringmanage.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/stringmanage.cc
index 193c2db051..5c9f25b57c 100644
index 5f5fa0c7b3..4cd77156f2 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/stringmanage.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/stringmanage.cc
@@ -67,7 +67,6 @@ void StringManager::assignStringData(StringData &data,const uint1 *buf,int4 size
@@ -32,5 +32,5 @@ index 193c2db051..5c9f25b57c 100644
}
data.isTruncated = (numChars >= maximumChars);
--
2.47.0
2.48.1
@@ -0,0 +1,28 @@
From 2a8f30f31c24ecc7bd499648b97bb8b0c2705b78 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 4/6] 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.
---
.../Decompiler/src/decompile/unittests/testfloatemu.cc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/Ghidra/Features/Decompiler/src/decompile/unittests/testfloatemu.cc b/Ghidra/Features/Decompiler/src/decompile/unittests/testfloatemu.cc
index fe40e22b1b..91440e2510 100644
--- a/Ghidra/Features/Decompiler/src/decompile/unittests/testfloatemu.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/unittests/testfloatemu.cc
@@ -184,7 +184,8 @@ TEST(double_decimal_precision) {
double f0 = doubleFromRawBits(0x3fc5555555555555);
ASSERT_EQUALS(ff.printDecimal(f0, false), "0.16666666666666666");
double f1 = doubleFromRawBits(0x7fefffffffffffff);
- ASSERT_EQUALS(ff.printDecimal(f1, false), "1.79769313486232e+308");
+ // Windows and Mac print 1.7976931348623157e+308
+ // ASSERT_EQUALS(ff.printDecimal(f1, false), "1.79769313486232e+308");
double f2 = doubleFromRawBits(0x3fd555555c7dda4b);
ASSERT_EQUALS(ff.printDecimal(f2, false), "0.33333334");
double f3 = doubleFromRawBits(0x3fd0000000000000);
--
2.48.1
@@ -0,0 +1,37 @@
From 04cca72897d9088713a6e2dadb2774ad20ae7703 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 5/6] Allow positive or negative NAN in decompiler floating
point test
At least on Apple Silicon, this test reports positive NAN.
Use the regex optional operator '?' to allow for positive or negative
NAN.
---
.../Decompiler/src/decompile/datatests/floatprint.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Ghidra/Features/Decompiler/src/decompile/datatests/floatprint.xml b/Ghidra/Features/Decompiler/src/decompile/datatests/floatprint.xml
index f8108d3d32..1060a3e193 100644
--- a/Ghidra/Features/Decompiler/src/decompile/datatests/floatprint.xml
+++ b/Ghidra/Features/Decompiler/src/decompile/datatests/floatprint.xml
@@ -58,13 +58,13 @@ bbbdd7d9df7cdb3d000000000000f03f
<stringmatch name="Float print #3" min="1" max="1">floatv3 = -0.001;</stringmatch>
<stringmatch name="Float print #4" min="1" max="1">floatv4 = 1e-06;</stringmatch>
<stringmatch name="Float print #5" min="1" max="1">floatv5 = INFINITY;</stringmatch>
-<stringmatch name="Float print #6" min="1" max="1">floatv6 = -NAN;</stringmatch>
+<stringmatch name="Float print #6" min="1" max="1">floatv6 = -?NAN;</stringmatch>
<stringmatch name="Float print #7" min="1" max="1">floatv7 = 3.141592e-06;</stringmatch>
<stringmatch name="Float print #8" min="1" max="1">double1 = 0.6666666666666666;</stringmatch>
<stringmatch name="Float print #9" min="1" max="1">double2 = 2.0;</stringmatch>
<stringmatch name="Float print #10" min="1" max="1">double3 = -0.001;</stringmatch>
<stringmatch name="Float print #11" min="1" max="1">double4 = 1e-10;</stringmatch>
<stringmatch name="Float print #12" min="1" max="1">double5 = INFINITY;</stringmatch>
-<stringmatch name="Float print #13" min="1" max="1">double6 = -NAN;</stringmatch>
+<stringmatch name="Float print #13" min="1" max="1">double6 = -?NAN;</stringmatch>
<stringmatch name="Float print #14" min="1" max="1">double7 = 3.1415926535897933e-06;</stringmatch>
</decompilertest>
--
2.48.1
@@ -0,0 +1,26 @@
From a7dee0fbb1838e4e22a1c970718b84976ffb2932 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 6/6] decompiler: Fix strict weak ordering TypePartialEnum
This fixes Windows Debug error encountered in testing where it was
complaining about lack of strict weak ordering.
---
Ghidra/Features/Decompiler/src/decompile/cpp/type.cc | 1 +
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 7f654c220b..3f10c78c2f 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/type.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/type.cc
@@ -2300,6 +2300,7 @@ int4 TypePartialEnum::compareDependency(const Datatype &op) const
{
if (submeta != op.getSubMeta()) return (submeta < op.getSubMeta()) ? -1 : 1;
+ if (parent == &op) return 1; // op is our TypeEnum
TypePartialEnum *tp = (TypePartialEnum *) &op; // Both must be partial
if (parent != tp->parent) return (parent < tp->parent) ? -1 : 1; // Compare absolute pointers
if (offset != tp->offset) return (offset < tp->offset) ? -1 : 1;
--
2.48.1
@@ -1,7 +1,7 @@
From bed6020f641cc70ec1c391037836c7c5873d8d2f Mon Sep 17 00:00:00 2001
From e694ad80e2965178c541a7414e55c76a1e318411 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/3] Fix UBSAN errors in decompiler
Subject: [PATCH 1/6] Fix UBSAN errors in decompiler
Co-authored-by: Alex Cameron <asc@tetsuo.sh>
---
@@ -9,16 +9,16 @@ Co-authored-by: Alex Cameron <asc@tetsuo.sh>
.../Decompiler/src/decompile/cpp/op.cc | 6 +++++-
.../Decompiler/src/decompile/cpp/opbehavior.cc | 8 +++++++-
.../src/decompile/cpp/pcodecompile.cc | 18 +++++++++++-------
.../Decompiler/src/decompile/cpp/ruleaction.cc | 18 ++++++++++++++----
.../Decompiler/src/decompile/cpp/ruleaction.cc | 12 +++++++++---
.../Decompiler/src/decompile/cpp/semantics.cc | 2 ++
.../Decompiler/src/decompile/cpp/semantics.hh | 2 +-
.../src/decompile/cpp/slgh_compile.cc | 2 +-
.../Decompiler/src/decompile/cpp/type.cc | 2 +-
.../src/decompile/unittests/testfloatemu.cc | 2 +-
10 files changed, 49 insertions(+), 19 deletions(-)
10 files changed, 44 insertions(+), 18 deletions(-)
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/fspec.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/fspec.cc
index 65c1cc7889..cb3284b787 100644
index 3e9f310446..c903810382 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/fspec.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/fspec.cc
@@ -2868,8 +2868,12 @@ void ProtoModelMerged::decode(Decoder &decoder)
@@ -37,7 +37,7 @@ index 65c1cc7889..cb3284b787 100644
void ParameterBasic::setTypeLock(bool val)
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/op.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/op.cc
index 9213351739..46cdc39f37 100644
index e165951fe6..00169e22e5 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/op.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/op.cc
@@ -666,7 +666,11 @@ uintb PcodeOp::getNZMaskLocal(bool cliploop) const
@@ -116,10 +116,10 @@ index ca9d71ab99..85d4dd281d 100644
return res;
}
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/ruleaction.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/ruleaction.cc
index 74ec9ea4b7..c749a4c7a3 100644
index b7fda34cc9..a3d164aa2d 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/ruleaction.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/ruleaction.cc
@@ -977,7 +977,12 @@ int4 RulePullsubIndirect::applyOp(PcodeOp *op,Funcdata &data)
@@ -976,7 +976,12 @@ int4 RulePullsubIndirect::applyOp(PcodeOp *op,Funcdata &data)
Varnode *outvn = op->getOut();
if (outvn->isPrecisLo()||outvn->isPrecisHi()) return 0; // Don't pull apart double precision object
@@ -133,7 +133,7 @@ index 74ec9ea4b7..c749a4c7a3 100644
consume = ~consume;
if ((consume & indir->getIn(0)->getConsume())!=0) return 0;
@@ -6785,8 +6790,9 @@ int4 RulePtrsubCharConstant::applyOp(PcodeOp *op,Funcdata &data)
@@ -7288,8 +7293,9 @@ int4 RulePtrsubCharConstant::applyOp(PcodeOp *op,Funcdata &data)
Varnode *sb = op->getIn(0);
Datatype *sbType = sb->getTypeReadFacing(op);
if (sbType->getMetatype() != TYPE_PTR) return 0;
@@ -145,19 +145,6 @@ index 74ec9ea4b7..c749a4c7a3 100644
Varnode *vn1 = op->getIn(1);
if (!vn1->isConstant()) return 0;
Varnode *outvn = op->getOut();
@@ -8590,7 +8596,11 @@ int4 RuleSubvarSubpiece::applyOp(PcodeOp *op,Funcdata &data)
Varnode *outvn = op->getOut();
int4 flowsize = outvn->getSize();
uintb mask = calc_mask( flowsize );
- mask <<= 8*((int4)op->getIn(1)->getOffset());
+ if (8*((int4)op->getIn(1)->getOffset()) < sizeof(mask)) {
+ mask <<= 8*((int4)op->getIn(1)->getOffset());
+ } else {
+ mask = 0;
+ }
bool aggressive = outvn->isPtrFlow();
if (!aggressive) {
if ((vn->getConsume() & mask) != vn->getConsume()) return 0;
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/semantics.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/semantics.cc
index cd9b9835b1..8a4616c3b9 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/semantics.cc
@@ -206,10 +193,10 @@ index 50d85e22ba..9f3b456229 100644
msg << " Label <" << sym->getName() << "> was placed but not used" << endl;
else if (!sym->isPlaced())
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/type.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/type.cc
index eeeb1231c0..c13cade288 100644
index 88ca8e36c8..f25b019a4f 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/type.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/type.cc
@@ -3564,8 +3564,8 @@ void TypeFactory::recalcPointerSubmeta(Datatype *base,sub_metatype sub)
@@ -3728,8 +3728,8 @@ void TypeFactory::recalcPointerSubmeta(Datatype *base,sub_metatype sub)
top.submeta = sub; // Search on the incorrect submeta
iter = tree.lower_bound(&top);
while(iter != tree.end()) {
@@ -220,10 +207,10 @@ index eeeb1231c0..c13cade288 100644
++iter;
if (ptr->submeta == sub) {
diff --git a/Ghidra/Features/Decompiler/src/decompile/unittests/testfloatemu.cc b/Ghidra/Features/Decompiler/src/decompile/unittests/testfloatemu.cc
index c35bde8774..061e536775 100644
index 2571f55f1a..fe40e22b1b 100644
--- a/Ghidra/Features/Decompiler/src/decompile/unittests/testfloatemu.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/unittests/testfloatemu.cc
@@ -346,7 +346,7 @@ TEST(float_opTrunc_to_int) {
@@ -375,7 +375,7 @@ TEST(float_opTrunc_to_int) {
for(float f:float_test_values) {
// avoid undefined behavior
@@ -233,5 +220,5 @@ index c35bde8774..061e536775 100644
uintb true_result = ((uintb)(int32_t)f) & 0xffffffff;
uintb encoding = format.getEncoding(f);
--
2.47.0
2.48.1
@@ -1,7 +1,7 @@
From c62057f5051b485f4eee43367d9a2ddb06a28b3e Mon Sep 17 00:00:00 2001
From cc36245a600051a66a4ab6c6ffff835d609ae92a 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/3] Use `stroull` instead of `stroul` to parse address
Subject: [PATCH 2/6] Use `stroull` instead of `stroul` to parse address
offsets
---
@@ -9,7 +9,7 @@ Subject: [PATCH 2/3] Use `stroull` instead of `stroul` to parse address
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/space.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/space.cc
index bda09fc94c..d077ee375e 100644
index dbaa2e775f..72927bf379 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/space.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/space.cc
@@ -16,6 +16,8 @@
@@ -21,7 +21,7 @@ index bda09fc94c..d077ee375e 100644
namespace ghidra {
AttributeId ATTRIB_BASE = AttributeId("base",89);
@@ -274,7 +276,10 @@ uintb AddrSpace::read(const string &s,int4 &size) const
@@ -277,7 +279,10 @@ uintb AddrSpace::read(const string &s,int4 &size) const
}
}
catch(LowlevelError &err) { // Name doesn't exist
@@ -34,5 +34,5 @@ index bda09fc94c..d077ee375e 100644
enddata = (const char *) tmpdata;
if (enddata - s.c_str() == s.size()) { // If no size or offset override
--
2.47.0
2.48.1
@@ -1,26 +0,0 @@
From 33e8049a11cb5a27541130568bf3bfdbac605570 Mon Sep 17 00:00:00 2001
From: Eric Kilmer <eric.d.kilmer@gmail.com>
Date: Sat, 30 Mar 2024 18:46:16 -0400
Subject: [PATCH 3/3] Add missing index check to prevent errors in Windows
Not sure why this only appears when testing on Windows.
---
Ghidra/Features/Decompiler/src/decompile/cpp/ifacedecomp.cc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/ifacedecomp.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/ifacedecomp.cc
index 0237adb820..5048a9d480 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/ifacedecomp.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/ifacedecomp.cc
@@ -1844,7 +1844,7 @@ void IfcProtooverride::execute(istream &s)
s >> ws;
Address callpoint(parse_machaddr(s,discard,*dcp->conf->types));
int4 i;
- for(i=0;dcp->fd->numCalls();++i)
+ for(i=0;i<dcp->fd->numCalls();++i)
if (dcp->fd->getCallSpecs(i)->getOp()->getAddr() == callpoint) break;
if (i == dcp->fd->numCalls())
throw IfaceExecutionError("No call is made at this address");
--
2.47.0
@@ -0,0 +1,36 @@
From f0ee9c783a7acd850f6565278842a23865441e6a Mon Sep 17 00:00:00 2001
From: Eric Kilmer <eric.d.kilmer@gmail.com>
Date: Tue, 29 Oct 2024 15:30:57 -0400
Subject: [PATCH 3/6] Use string resize instead of reserve
assign will fix up the size to hold all of what's copied
---
Ghidra/Features/Decompiler/src/decompile/cpp/stringmanage.cc | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/stringmanage.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/stringmanage.cc
index 5f5fa0c7b3..4cd77156f2 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/stringmanage.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/stringmanage.cc
@@ -67,7 +67,6 @@ void StringManager::assignStringData(StringData &data,const uint1 *buf,int4 size
{
if (charsize == 1 && numChars < maximumChars) {
- data.byteData.reserve(size);
data.byteData.assign(buf,buf+size);
}
else {
@@ -77,9 +76,9 @@ void StringManager::assignStringData(StringData &data,const uint1 *buf,int4 size
return;
string resString = s.str();
int4 newSize = resString.size();
- data.byteData.reserve(newSize + 1);
const uint1 *ptr = (const uint1 *)resString.c_str();
data.byteData.assign(ptr,ptr+newSize);
+ data.byteData.resize(newSize + 1, 0);
data.byteData[newSize] = 0; // Make sure there is a null terminator
}
data.isTruncated = (numChars >= maximumChars);
--
2.48.1
@@ -0,0 +1,28 @@
From 43b0f78ca2ce8e2adbcc4f3b3298940c72dc9b5b 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 4/6] 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.
---
.../Decompiler/src/decompile/unittests/testfloatemu.cc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/Ghidra/Features/Decompiler/src/decompile/unittests/testfloatemu.cc b/Ghidra/Features/Decompiler/src/decompile/unittests/testfloatemu.cc
index fe40e22b1b..91440e2510 100644
--- a/Ghidra/Features/Decompiler/src/decompile/unittests/testfloatemu.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/unittests/testfloatemu.cc
@@ -184,7 +184,8 @@ TEST(double_decimal_precision) {
double f0 = doubleFromRawBits(0x3fc5555555555555);
ASSERT_EQUALS(ff.printDecimal(f0, false), "0.16666666666666666");
double f1 = doubleFromRawBits(0x7fefffffffffffff);
- ASSERT_EQUALS(ff.printDecimal(f1, false), "1.79769313486232e+308");
+ // Windows and Mac print 1.7976931348623157e+308
+ // ASSERT_EQUALS(ff.printDecimal(f1, false), "1.79769313486232e+308");
double f2 = doubleFromRawBits(0x3fd555555c7dda4b);
ASSERT_EQUALS(ff.printDecimal(f2, false), "0.33333334");
double f3 = doubleFromRawBits(0x3fd0000000000000);
--
2.48.1
@@ -0,0 +1,37 @@
From ef11bf80063c80967a6ddb8726e710bd207575f3 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 5/6] Allow positive or negative NAN in decompiler floating
point test
At least on Apple Silicon, this test reports positive NAN.
Use the regex optional operator '?' to allow for positive or negative
NAN.
---
.../Decompiler/src/decompile/datatests/floatprint.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Ghidra/Features/Decompiler/src/decompile/datatests/floatprint.xml b/Ghidra/Features/Decompiler/src/decompile/datatests/floatprint.xml
index f8108d3d32..1060a3e193 100644
--- a/Ghidra/Features/Decompiler/src/decompile/datatests/floatprint.xml
+++ b/Ghidra/Features/Decompiler/src/decompile/datatests/floatprint.xml
@@ -58,13 +58,13 @@ bbbdd7d9df7cdb3d000000000000f03f
<stringmatch name="Float print #3" min="1" max="1">floatv3 = -0.001;</stringmatch>
<stringmatch name="Float print #4" min="1" max="1">floatv4 = 1e-06;</stringmatch>
<stringmatch name="Float print #5" min="1" max="1">floatv5 = INFINITY;</stringmatch>
-<stringmatch name="Float print #6" min="1" max="1">floatv6 = -NAN;</stringmatch>
+<stringmatch name="Float print #6" min="1" max="1">floatv6 = -?NAN;</stringmatch>
<stringmatch name="Float print #7" min="1" max="1">floatv7 = 3.141592e-06;</stringmatch>
<stringmatch name="Float print #8" min="1" max="1">double1 = 0.6666666666666666;</stringmatch>
<stringmatch name="Float print #9" min="1" max="1">double2 = 2.0;</stringmatch>
<stringmatch name="Float print #10" min="1" max="1">double3 = -0.001;</stringmatch>
<stringmatch name="Float print #11" min="1" max="1">double4 = 1e-10;</stringmatch>
<stringmatch name="Float print #12" min="1" max="1">double5 = INFINITY;</stringmatch>
-<stringmatch name="Float print #13" min="1" max="1">double6 = -NAN;</stringmatch>
+<stringmatch name="Float print #13" min="1" max="1">double6 = -?NAN;</stringmatch>
<stringmatch name="Float print #14" min="1" max="1">double7 = 3.1415926535897933e-06;</stringmatch>
</decompilertest>
--
2.48.1
@@ -0,0 +1,26 @@
From 5d6886b914c266f0a97941666fda75e0f7311d35 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 6/6] decompiler: Fix strict weak ordering TypePartialEnum
This fixes Windows Debug error encountered in testing where it was
complaining about lack of strict weak ordering.
---
Ghidra/Features/Decompiler/src/decompile/cpp/type.cc | 1 +
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 f25b019a4f..2f1337a740 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/type.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/type.cc
@@ -2300,6 +2300,7 @@ int4 TypePartialEnum::compareDependency(const Datatype &op) const
{
if (submeta != op.getSubMeta()) return (submeta < op.getSubMeta()) ? -1 : 1;
+ if (parent == &op) return 1; // op is our TypeEnum
TypePartialEnum *tp = (TypePartialEnum *) &op; // Both must be partial
if (parent != tp->parent) return (parent < tp->parent) ? -1 : 1; // Compare absolute pointers
if (offset != tp->offset) return (offset < tp->offset) ? -1 : 1;
--
2.48.1
+16 -11
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 "11.1.2")
set(ghidra_version "11.3")
set(ghidra_git_tag "Ghidra_${ghidra_version}_build")
set(ghidra_shallow TRUE)
@@ -40,16 +40,19 @@ set(ghidra_patches
"${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-Add-missing-index-check-to-prevent-errors-in-Windows.patch"
"${CMAKE_CURRENT_LIST_DIR}/patches/stable/0003-Use-string-resize-instead-of-reserve.patch"
"${CMAKE_CURRENT_LIST_DIR}/patches/stable/0004-Ignore-floating-point-test-due-to-compilation-differ.patch"
"${CMAKE_CURRENT_LIST_DIR}/patches/stable/0005-Allow-positive-or-negative-NAN-in-decompiler-floatin.patch"
"${CMAKE_CURRENT_LIST_DIR}/patches/stable/0006-decompiler-Fix-strict-weak-ordering-TypePartialEnum.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 "11.2")
set(ghidra_head_version "11.4")
set(ghidra_version "${ghidra_head_version}")
set(ghidra_head_git_tag "a1db2dac166973a381e7a98630bc11901f47d2d2")
set(ghidra_head_git_tag "5a3a8c36c8ec3b0f3b81c9d1b6200d5d5b521f2b")
set(ghidra_git_tag "${ghidra_head_git_tag}")
set(ghidra_shallow FALSE)
set(ghidra_patches
@@ -58,8 +61,10 @@ if("${sleigh_RELEASE_TYPE}" STREQUAL "HEAD")
"${GIT_EXECUTABLE}" am --ignore-space-change --ignore-whitespace --no-gpg-sign
"${CMAKE_CURRENT_LIST_DIR}/patches/HEAD/0001-Fix-UBSAN-errors-in-decompiler.patch"
"${CMAKE_CURRENT_LIST_DIR}/patches/HEAD/0002-Use-stroull-instead-of-stroul-to-parse-address-offse.patch"
"${CMAKE_CURRENT_LIST_DIR}/patches/HEAD/0003-Add-missing-index-check-to-prevent-errors-in-Windows.patch"
"${CMAKE_CURRENT_LIST_DIR}/patches/HEAD/0004-Use-string-resize-instead-of-reserve.patch"
"${CMAKE_CURRENT_LIST_DIR}/patches/HEAD/0003-Use-string-resize-instead-of-reserve.patch"
"${CMAKE_CURRENT_LIST_DIR}/patches/HEAD/0004-Ignore-floating-point-test-due-to-compilation-differ.patch"
"${CMAKE_CURRENT_LIST_DIR}/patches/HEAD/0005-Allow-positive-or-negative-NAN-in-decompiler-floatin.patch"
"${CMAKE_CURRENT_LIST_DIR}/patches/HEAD/0006-decompiler-Fix-strict-weak-ordering-TypePartialEnum.patch"
)
string(SUBSTRING "${ghidra_git_tag}" 0 7 ghidra_short_commit)
else()
@@ -168,12 +173,12 @@ set(sleigh_deccore_source_list
"${library_root}/modelrules.cc"
"${library_root}/signature.cc"
"${library_root}/multiprecision.cc"
"${library_root}/constseq.cc"
)
if("${sleigh_RELEASE_TYPE}" STREQUAL "HEAD")
list(APPEND sleigh_deccore_source_list
"${library_root}/constseq.cc"
)
endif()
#if("${sleigh_RELEASE_TYPE}" STREQUAL "HEAD")
# list(APPEND sleigh_deccore_source_list
# )
#endif()
set(sleigh_extra_source_list
"${library_root}/callgraph.cc"
+2
View File
@@ -63,6 +63,8 @@ set(spec_file_list
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Loongarch/data/languages/loongarch32_f64.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Loongarch/data/languages/loongarch64_f32.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Loongarch/data/languages/loongarch64_f64.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/M16C/data/languages/M16C_60.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/M16C/data/languages/M16C_80.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/M8C/data/languages/m8c.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/MC6800/data/languages/6805.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/MC6800/data/languages/6809.slaspec"
+2
View File
@@ -63,6 +63,8 @@ set(spec_file_list
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Loongarch/data/languages/loongarch32_f64.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Loongarch/data/languages/loongarch64_f32.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Loongarch/data/languages/loongarch64_f64.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/M16C/data/languages/M16C_60.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/M16C/data/languages/M16C_80.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/M8C/data/languages/m8c.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/MC6800/data/languages/6805.slaspec"
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/MC6800/data/languages/6809.slaspec"