Compare commits

...

13 Commits

Author SHA1 Message Date
Eric Kilmer 69e080e45a Ghidra 11.1 (#268)
ZLIB is now a requirement for compressed sleigh files
2024-06-12 07:22:03 -04:00
auto-updater[bot] 4110ce82e0 Update Ghidra HEAD to commit 195abea7e (#267)
Bump Ghidra HEAD commit 195abea7e

Changed files:

```
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
A	Ghidra/Processors/x86/data/languages/avx512.sinc
A	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
M	Ghidra/Processors/x86/data/languages/ia.sinc
M	Ghidra/Processors/x86/data/languages/lockable.sinc
A	Ghidra/Processors/x86/data/languages/old/x86RealV3.lang
A	Ghidra/Processors/x86/data/languages/old/x86RealV3.trans
A	Ghidra/Processors/x86/data/languages/old/x86V3.lang
A	Ghidra/Processors/x86/data/languages/old/x86V3.trans
A	Ghidra/Processors/x86/data/languages/old/x86_64bit_compat32_v3.lang
A	Ghidra/Processors/x86/data/languages/old/x86_64bit_compat32_v3.trans
A	Ghidra/Processors/x86/data/languages/old/x86_64bit_v3.lang
A	Ghidra/Processors/x86/data/languages/old/x86_64bit_v3.trans
A	Ghidra/Processors/x86/data/languages/old/x86_ProtV3.lang
A	Ghidra/Processors/x86/data/languages/old/x86_ProtV3.trans
A	Ghidra/Processors/x86/data/languages/old/x86smmV3.lang
A	Ghidra/Processors/x86/data/languages/old/x86smmV3.trans
M	Ghidra/Processors/x86/data/languages/x86.ldefs
M	Ghidra/Processors/x86/data/languages/x86.slaspec
M	Ghidra/Processors/x86/src/main/java/ghidra/app/util/bin/format/elf/extend/X86_32_ElfExtension.java
```

Co-authored-by: pgoodman <43664+pgoodman@users.noreply.github.com>
2024-06-10 04:39:50 -04:00
auto-updater[bot] 1464c57bad Update Ghidra HEAD to commit 22b1b485b (#266)
Bump Ghidra HEAD commit 22b1b485b

Changed files:

```
M	Ghidra/Processors/AARCH64/data/languages/AARCH64.ldefs
M	Ghidra/Processors/AARCH64/data/languages/AARCH64_golang.cspec
M	Ghidra/Processors/AARCH64/data/languages/AARCH64_golang.register.info
M	Ghidra/Processors/SuperH/data/languages/superh.sinc
M	Ghidra/Processors/x86/data/languages/x86-32-golang.register.info
M	Ghidra/Processors/x86/data/languages/x86-64-golang.cspec
M	Ghidra/Processors/x86/data/languages/x86-64-golang.register.info
```

Co-authored-by: pgoodman <43664+pgoodman@users.noreply.github.com>
2024-06-03 11:21:28 -04:00
auto-updater[bot] bddd3b2342 Update Ghidra HEAD to commit fb844be1f (#265)
Bump Ghidra HEAD commit fb844be1f

Changed files:

```
M	Ghidra/Features/Decompiler/src/decompile/cpp/filemanage.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/filemanage.hh
M	Ghidra/Processors/tricore/data/languages/tricore.sinc
```

Co-authored-by: pgoodman <43664+pgoodman@users.noreply.github.com>
2024-05-28 08:29:05 -04:00
auto-updater[bot] 5e84d25f0e Update Ghidra HEAD to commit ef3e74b6d (#264)
Bump Ghidra HEAD commit ef3e74b6d

Changed files:

```
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/fspec.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/fspec.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/funcdata_varnode.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/marshal.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/varmap.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/gp.xml
A	Ghidra/Features/Decompiler/src/decompile/datatests/switchhide.xml
M	Ghidra/Processors/68000/data/languages/68000.cspec
M	Ghidra/Processors/68000/data/languages/68000.sinc
M	Ghidra/Processors/68000/src/main/java/ghidra/program/emulation/m68kEmulateInstructionStateModifier.java
M	Ghidra/Processors/AARCH64/data/languages/AARCH64.dwarf
M	Ghidra/Processors/AARCH64/data/languages/AARCH64_golang.register.info
M	Ghidra/Processors/MCS96/data/languages/MCS96.sinc
M	Ghidra/Processors/MIPS/data/languages/mips32be.cspec
M	Ghidra/Processors/MIPS/data/languages/mips32le.cspec
M	Ghidra/Processors/PIC/data/languages/pic16_instructions.sinc
M	Ghidra/Processors/x86/data/languages/ia.sinc
M	Ghidra/Processors/x86/data/languages/x86-64-golang.register.info
```

Co-authored-by: pgoodman <43664+pgoodman@users.noreply.github.com>
2024-05-19 07:25:33 -04:00
dependabot[bot] 9ebd0d7dbb build(deps): bump softprops/action-gh-release from 2.0.4 to 2.0.5 (#263)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.0.4 to 2.0.5.
- [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.4...v2.0.5)

---
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-05-08 09:09:40 -04:00
Eric Kilmer 92470fe795 CI: Specifically use macos-13 image (#262)
macos-latest now points to Apple Silicon macos-14 image, which is
causing some tests to fail, and macos-13 is the latest that support x86
2024-04-29 13:00:08 -04:00
auto-updater[bot] 39c1230211 Update Ghidra HEAD to commit e6c8f5b53 (#260)
Bump Ghidra HEAD commit e6c8f5b53

Changed files:

```
M	Ghidra/Processors/AARCH64/certification.manifest
M	Ghidra/Processors/AARCH64/data/languages/AARCH64.ldefs
M	Ghidra/Processors/AARCH64/data/languages/AARCH64.opinion
A	Ghidra/Processors/AARCH64/data/languages/AARCH64_golang.cspec
A	Ghidra/Processors/AARCH64/data/languages/AARCH64_golang.register.info
M	Ghidra/Processors/AARCH64/data/languages/AppleSilicon.ldefs
```

Co-authored-by: pgoodman <43664+pgoodman@users.noreply.github.com>
2024-04-29 11:17:17 -04:00
Eric Kilmer ebaea7183a CI: Specifically use macos-12 image (#261)
macos-latest now points to Apple Silicon macos-14 image, which is
causing some tests to fail.
2024-04-29 10:48:00 -04:00
auto-updater[bot] 95e45d8dd9 Update Ghidra HEAD to commit 9abfa3da8 (#259)
* Bump Ghidra HEAD commit 9abfa3da8

Changed files:

```
M	Ghidra/Features/Decompiler/src/decompile/cpp/Makefile
M	Ghidra/Features/Decompiler/src/decompile/cpp/address.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/address.hh
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/fspec.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/jumptable.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/jumptable.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/modelrules.hh
A	Ghidra/Features/Decompiler/src/decompile/cpp/multiprecision.cc
A	Ghidra/Features/Decompiler/src/decompile/cpp/multiprecision.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/slgh_compile.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/divopt.xml
A	Ghidra/Features/Decompiler/src/decompile/datatests/ifswitch.xml
M	Ghidra/Processors/AARCH64/data/languages/AARCH64_win.cspec
M	Ghidra/Processors/AARCH64/data/languages/AARCH64ldst.sinc
M	Ghidra/Processors/PowerPC/certification.manifest
M	Ghidra/Processors/PowerPC/data/languages/ppc_32_be.cspec
M	Ghidra/Processors/PowerPC/data/languages/ppc_32_e500_be.cspec
M	Ghidra/Processors/PowerPC/data/languages/ppc_32_e500_le.cspec
M	Ghidra/Processors/PowerPC/data/languages/ppc_32_e500mc_be.cspec
M	Ghidra/Processors/PowerPC/data/languages/ppc_32_e500mc_le.cspec
M	Ghidra/Processors/PowerPC/data/languages/ppc_32_le.cspec
M	Ghidra/Processors/PowerPC/data/languages/ppc_64_32.cspec
M	Ghidra/Processors/PowerPC/data/patterns/PPC_BE_patterns.xml
A	Ghidra/Processors/PowerPC/data/patterns/PPC_LE_patterns.xml
M	Ghidra/Processors/PowerPC/data/patterns/patternconstraints.xml
```

* Add new files

---------

Co-authored-by: Eric Kilmer <eric.d.kilmer@gmail.com>
2024-04-22 10:02:27 -04:00
auto-updater[bot] f05a833db4 Update Ghidra HEAD to commit 6c60bd031 (#258)
Bump Ghidra HEAD commit 6c60bd031

Changed files:

```
M	Ghidra/Processors/tricore/data/languages/tricore.cspec
```

Co-authored-by: pgoodman <43664+pgoodman@users.noreply.github.com>
2024-04-15 08:39:16 -04:00
Eric Kilmer 231a28b524 Ghidra 11.0.3 (#257) 2024-04-12 10:17:08 -04:00
auto-updater[bot] 33ac2ef4f6 Update Ghidra HEAD to commit cae9190c1 (#256)
* Bump Ghidra HEAD commit cae9190c1

Changed files:

```
M	Ghidra/Features/Decompiler/src/decompile/cpp/emulate.cc
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/jumptable.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/jumptable.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/printc.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/printc.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/sleigh.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/sleighexample.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/test.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/test.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/type.cc
M	Ghidra/Features/Decompiler/src/decompile/datatests/partialsplit.xml
M	Ghidra/Features/Decompiler/src/decompile/datatests/readvolatile.xml
M	Ghidra/Features/Decompiler/src/decompile/unittests/testparamstore.cc
M	Ghidra/Processors/AARCH64/data/patterns/AARCH64_LE_patterns.xml
M	Ghidra/Processors/AARCH64/src/main/java/ghidra/app/util/bin/format/elf/relocation/AARCH64_ElfRelocationHandler.java
M	Ghidra/Processors/ARM/src/main/java/ghidra/app/util/bin/format/elf/relocation/ARM_ElfRelocationHandler.java
M	Ghidra/Processors/Loongarch/src/main/java/ghidra/app/util/bin/format/elf/relocation/Loongarch_ElfRelocationHandler.java
M	Ghidra/Processors/MIPS/src/main/java/ghidra/app/util/bin/format/elf/relocation/MIPS_ElfRelocationHandler.java
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/src/main/java/ghidra/app/util/bin/format/elf/relocation/SPARC_ElfRelocationHandler.java
M	Ghidra/Processors/SuperH4/src/main/java/ghidra/app/util/bin/format/elf/relocation/SH_ElfRelocationHandler.java
M	Ghidra/Processors/V850/data/languages/V850.cspec
M	Ghidra/Processors/tricore/data/languages/tricore.cspec
M	Ghidra/Processors/tricore/src/main/java/ghidra/app/util/bin/format/elf/relocation/Tricore_ElfRelocationHandler.java
M	Ghidra/Processors/x86/data/languages/x86-64-gcc.cspec
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_ElfRelocationHandler.java
```

* Remove patches merged upstream
2024-04-08 08:27:01 -04:00
15 changed files with 98 additions and 161 deletions
+4 -4
View File
@@ -20,7 +20,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
os: [ubuntu-latest, macos-13, windows-latest]
build_type: [RelWithDebInfo, Debug]
release: [stable, HEAD]
@@ -218,7 +218,7 @@ jobs:
path: ${{ env.DEB_PACKAGE_PATH }}
- name: Release DEB package artifact (RelWithDebInfo only)
uses: softprops/action-gh-release@v2.0.4
uses: softprops/action-gh-release@v2.0.5
if: matrix.build_type == 'RelWithDebInfo' && runner.os == 'Linux' && startsWith(github.ref, 'refs/tags/') && matrix.release == 'stable'
with:
files: ${{ env.DEB_PACKAGE_PATH }}
@@ -231,7 +231,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.4
uses: softprops/action-gh-release@v2.0.5
if: matrix.build_type == 'RelWithDebInfo' && runner.os == 'Linux' && startsWith(github.ref, 'refs/tags/') && matrix.release == 'stable'
with:
files: ${{ env.RPM_PACKAGE_PATH }}
@@ -245,7 +245,7 @@ jobs:
path: ${{ env.TGZ_PACKAGE_PATH }}
- name: Release TGZ package artifact (RelWithDebInfo only)
uses: softprops/action-gh-release@v2.0.4
uses: softprops/action-gh-release@v2.0.5
if: matrix.build_type == 'RelWithDebInfo' && startsWith(github.ref, 'refs/tags/') && matrix.release == 'stable'
with:
files: ${{ env.TGZ_PACKAGE_PATH }}
+10 -15
View File
@@ -139,13 +139,14 @@ set(public_include_header_list
"${library_root}/modelrules.hh"
"${library_root}/signature.hh"
"${library_root}/signature_ghidra.hh"
"${library_root}/compression.hh"
"${library_root}/multiprecision.hh"
"${library_root}/slaformat.hh"
)
if(sleigh_RELEASE_IS_HEAD)
list(APPEND public_include_header_list
"${library_root}/compression.hh"
"${library_root}/slaformat.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)
@@ -161,9 +162,7 @@ endforeach()
configure_file(cmake/libconfig.h.in "${public_headers_dir}/sleigh/libconfig.h")
# External Dependencies
if(sleigh_RELEASE_IS_HEAD)
find_package(ZLIB REQUIRED)
endif()
find_package(ZLIB REQUIRED)
#
# sla
@@ -197,9 +196,7 @@ set_target_properties(sleigh_sla PROPERTIES
OUTPUT_NAME_DEBUG sla_dbg
)
if(sleigh_RELEASE_IS_HEAD)
target_link_libraries(sleigh_sla PUBLIC ZLIB::ZLIB)
endif()
target_link_libraries(sleigh_sla PUBLIC ZLIB::ZLIB)
#
# decomp
@@ -228,9 +225,7 @@ set_target_properties(sleigh_decomp PROPERTIES
OUTPUT_NAME_DEBUG decomp_dbg
)
if(sleigh_RELEASE_IS_HEAD)
target_link_libraries(sleigh_decomp PUBLIC ZLIB::ZLIB)
endif()
target_link_libraries(sleigh_decomp PUBLIC ZLIB::ZLIB)
# This is the root directory where all individual processor spec file directories will be created.
# NOTE: Needs to be defined here before the install rules
+3 -4
View File
@@ -17,10 +17,9 @@
# Extra version details. Either 'stable' or 'HEAD'
set(sleigh_RELEASE_IS_HEAD "@sleigh_RELEASE_IS_HEAD@")
if(sleigh_RELEASE_IS_HEAD)
include(CMakeFindDependencyMacro)
find_dependency(ZLIB)
endif()
include(CMakeFindDependencyMacro)
find_dependency(ZLIB)
include("${CMAKE_CURRENT_LIST_DIR}/sleighTargets.cmake")
-5
View File
@@ -265,14 +265,9 @@ int main(int argc, char *argv[]) {
ghidra::ContextInternal ctx;
ghidra::Sleigh engine(&load_image, &ctx);
ghidra::DocumentStorage storage;
#ifdef sleigh_RELEASE_IS_HEAD
std::istringstream sla("<sleigh>" + sla_file_path->string() + "</sleigh>");
ghidra::Element *root =
storage.parseDocument(sla)->getRoot();
#else
ghidra::Element *root =
storage.openDocument(sla_file_path->string())->getRoot();
#endif
storage.registerTag(root);
std::optional<std::filesystem::path> pspec_file_path;
if (args->pspec_file_name) {
@@ -1,31 +0,0 @@
From 73d6f5a2a9a39dba3117947b3e27fe112c7d7074 Mon Sep 17 00:00:00 2001
From: Eric Kilmer <eric.d.kilmer@gmail.com>
Date: Mon, 4 Mar 2024 11:18:57 -0500
Subject: [PATCH 3/5] Fix sleighexample
---
Ghidra/Features/Decompiler/src/decompile/cpp/sleighexample.cc | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/sleighexample.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/sleighexample.cc
index f356825c9..5cab3f85c 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/sleighexample.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/sleighexample.cc
@@ -315,12 +315,12 @@ int main(int argc,char **argv)
ContextInternal context;
// Set up the assembler/pcode-translator
- string sleighfilename = "specfiles/x86.sla";
+ istringstream sleighfilename("<sleigh>specfiles/x86.sla</sleigh>");
Sleigh trans(&loader,&context);
// Read sleigh file into DOM
DocumentStorage docstorage;
- Element *sleighroot = docstorage.openDocument(sleighfilename)->getRoot();
+ Element *sleighroot = docstorage.parseDocument(sleighfilename)->getRoot();
docstorage.registerTag(sleighroot);
trans.initialize(docstorage); // Initialize the translator
--
2.44.0
@@ -1,26 +0,0 @@
From 2b6f5b2a70158503c844e8259717b7168ced9bc0 Mon Sep 17 00:00:00 2001
From: Eric Kilmer <eric.d.kilmer@gmail.com>
Date: Sat, 30 Mar 2024 18:26:27 -0400
Subject: [PATCH 4/5] Fix opening sla files on Windows
Compressed files need to be opened as binaries when reading.
---
Ghidra/Features/Decompiler/src/decompile/cpp/sleigh.cc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/sleigh.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/sleigh.cc
index 471b99199..ba1a3b22c 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/sleigh.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/sleigh.cc
@@ -560,7 +560,7 @@ void Sleigh::initialize(DocumentStorage &store)
if (el == (const Element *)0)
throw LowlevelError("Could not find sleigh tag");
sla::FormatDecode decoder(this);
- ifstream s(el->getContent());
+ ifstream s(el->getContent(), std::ios_base::binary);
if (!s)
throw LowlevelError("Could not open .sla file: " + el->getContent());
decoder.ingestStream(s);
--
2.44.0
@@ -1,8 +1,7 @@
From 0e437cb96249306d17f26ff6614871ecd9b37359 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Wed, 2 Aug 2023 23:19:42 +1000
Subject: [PATCH 1/2] Fix UBSAN errors in decompiler
From 6c36965500d26d5a35dfbc91725956ae1d51e394 Mon Sep 17 00:00:00 2001
From: Alex Cameron <asc@tetsuo.sh>
Date: Mon, 5 Jun 2023 16:45:04 +1200
Subject: [PATCH 1/5] Fix UBSAN errors in decompiler
---
.../Decompiler/src/decompile/cpp/fspec.cc | 8 ++++++--
@@ -14,16 +13,15 @@ Subject: [PATCH 1/2] Fix UBSAN errors in decompiler
.../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/slghsymbol.cc | 2 +-
.../Decompiler/src/decompile/cpp/type.cc | 2 +-
.../src/decompile/unittests/testfloatemu.cc | 2 +-
12 files changed, 57 insertions(+), 21 deletions(-)
11 files changed, 56 insertions(+), 20 deletions(-)
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/fspec.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/fspec.cc
index 8380d3cd..a18d5007 100644
index dc96f0c19..3482cf17c 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/fspec.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/fspec.cc
@@ -2661,8 +2661,12 @@ void ProtoModelMerged::decode(Decoder &decoder)
@@ -2727,8 +2727,12 @@ void ProtoModelMerged::decode(Decoder &decoder)
modellist.push_back(mymodel);
}
decoder.closeElement(elemId);
@@ -39,7 +37,7 @@ index 8380d3cd..a18d5007 100644
void ParameterBasic::setTypeLock(bool val)
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/funcdata_varnode.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/funcdata_varnode.cc
index f7781707..283d81c3 100644
index fc094ee96..1f7e53ebe 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/funcdata_varnode.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/funcdata_varnode.cc
@@ -503,7 +503,13 @@ void Funcdata::setHighLevel(void)
@@ -58,10 +56,10 @@ index f7781707..283d81c3 100644
uint4 vnFlags = vn->getFlags() & (Varnode::directwrite|Varnode::addrforce);
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/op.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/op.cc
index 0e3decc8..403ec35a 100644
index 921335173..46cdc39f3 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/op.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/op.cc
@@ -672,7 +672,11 @@ uintb PcodeOp::getNZMaskLocal(bool cliploop) const
@@ -666,7 +666,11 @@ uintb PcodeOp::getNZMaskLocal(bool cliploop) const
break;
case CPUI_PIECE:
resmask = getIn(0)->getNZMask();
@@ -75,10 +73,10 @@ index 0e3decc8..403ec35a 100644
break;
case CPUI_INT_MULT:
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/opbehavior.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/opbehavior.cc
index fcd75cc7..ed0e005a 100644
index aebcfd910..6c47e6eb1 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/opbehavior.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/opbehavior.cc
@@ -750,7 +750,13 @@ uintb OpBehaviorPiece::evaluateBinary(int4 sizeout,int4 sizein,uintb in1,uintb i
@@ -746,7 +746,13 @@ uintb OpBehaviorPiece::evaluateBinary(int4 sizeout,int4 sizein,uintb in1,uintb i
uintb OpBehaviorSubpiece::evaluateBinary(int4 sizeout,int4 sizein,uintb in1,uintb in2) const
{
@@ -94,7 +92,7 @@ index fcd75cc7..ed0e005a 100644
}
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/pcodecompile.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/pcodecompile.cc
index ca9d71ab..85d4dd28 100644
index ca9d71ab9..85d4dd281 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
@@ -137,7 +135,7 @@ index ca9d71ab..85d4dd28 100644
return res;
}
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/ruleaction.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/ruleaction.cc
index 4851365d..d069d1c9 100644
index 3703c8ef5..ac6e21c00 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/ruleaction.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/ruleaction.cc
@@ -976,7 +976,12 @@ int4 RulePullsubIndirect::applyOp(PcodeOp *op,Funcdata &data)
@@ -154,7 +152,7 @@ index 4851365d..d069d1c9 100644
consume = ~consume;
if ((consume & indir->getIn(0)->getConsume())!=0) return 0;
@@ -6782,8 +6787,9 @@ int4 RulePtrsubCharConstant::applyOp(PcodeOp *op,Funcdata &data)
@@ -6803,8 +6808,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;
@@ -166,7 +164,7 @@ index 4851365d..d069d1c9 100644
Varnode *vn1 = op->getIn(1);
if (!vn1->isConstant()) return 0;
Varnode *outvn = op->getOut();
@@ -8593,7 +8599,11 @@ int4 RuleSubvarSubpiece::applyOp(PcodeOp *op,Funcdata &data)
@@ -8616,7 +8622,11 @@ int4 RuleSubvarSubpiece::applyOp(PcodeOp *op,Funcdata &data)
Varnode *outvn = op->getOut();
int4 flowsize = outvn->getSize();
uintb mask = calc_mask( flowsize );
@@ -180,7 +178,7 @@ index 4851365d..d069d1c9 100644
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 2e3531ea..42482be7 100644
index cd9b9835b..8a4616c3b 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)
@@ -200,12 +198,12 @@ index 2e3531ea..42482be7 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 8e283dca..652600c1 100644
index e0b069959..9117a45c7 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/semantics.hh
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/semantics.hh
@@ -48,7 +48,7 @@ private:
static void printHandleSelector(ostream &s,v_field val);
static v_field readHandleSelector(const string &name);
@@ -47,7 +47,7 @@ class ConstTpl {
uintb value_real;
v_field select; // Which part of handle to use as constant
public:
- ConstTpl(void) { type = real; value_real = 0; }
+ ConstTpl(void) { type = real; value_real = 0; select = v_space; }
@@ -213,10 +211,10 @@ index 8e283dca..652600c1 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 b40f7438..3c37958d 100644
index c060053bf..c9004023c 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/slgh_compile.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/slgh_compile.cc
@@ -2163,8 +2163,8 @@ string SleighCompile::checkSymbols(SymbolScope *scope)
@@ -2164,8 +2164,8 @@ string SleighCompile::checkSymbols(SymbolScope *scope)
ostringstream msg;
SymbolTree::const_iterator iter;
for(iter=scope->begin();iter!=scope->end();++iter) {
@@ -226,24 +224,11 @@ index b40f7438..3c37958d 100644
if (sym->getRefCount() == 0)
msg << " Label <" << sym->getName() << "> was placed but not used" << endl;
else if (!sym->isPlaced())
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/slghsymbol.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/slghsymbol.cc
index b308e1b7..af2982ae 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/slghsymbol.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/slghsymbol.cc
@@ -2569,7 +2569,7 @@ void ContextOp::restoreXml(const Element *el,SleighBase *trans)
const List &list(el->getChildren());
List::const_iterator iter;
iter = list.begin();
- patexp = (PatternValue *)PatternExpression::restoreExpression(*iter,trans);
+ patexp = PatternExpression::restoreExpression(*iter,trans);
patexp->layClaim();
}
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/type.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/type.cc
index 30faf0b6..e76a0619 100644
index e6292e138..bd31b7470 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/type.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/type.cc
@@ -3359,8 +3359,8 @@ void TypeFactory::recalcPointerSubmeta(Datatype *base,sub_metatype sub)
@@ -3561,8 +3561,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()) {
@@ -254,7 +239,7 @@ index 30faf0b6..e76a0619 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 c35bde87..061e5367 100644
index c35bde877..061e53677 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) {
@@ -267,5 +252,5 @@ index c35bde87..061e5367 100644
uintb true_result = ((uintb)(int32_t)f) & 0xffffffff;
uintb encoding = format.getEncoding(f);
--
2.39.2 (Apple Git-143)
2.44.0
@@ -1,8 +1,7 @@
From 95f230f46bdb95aa4aab7f5d320691f87107fb36 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Wed, 2 Aug 2023 23:20:14 +1000
Subject: [PATCH 2/2] Use `stroull` instead of `stroul` to parse address
From 290b06621c7a8c32c1470d16dbd8740876d57640 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
offsets
---
@@ -10,7 +9,7 @@ Subject: [PATCH 2/2] 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 bf4e1dc9..594b4583 100644
index bda09fc94..d077ee375 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/space.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/space.cc
@@ -16,6 +16,8 @@
@@ -22,7 +21,7 @@ index bf4e1dc9..594b4583 100644
namespace ghidra {
AttributeId ATTRIB_BASE = AttributeId("base",89);
@@ -290,7 +292,10 @@ uintb AddrSpace::read(const string &s,int4 &size) const
@@ -274,7 +276,10 @@ uintb AddrSpace::read(const string &s,int4 &size) const
}
}
catch(LowlevelError &err) { // Name doesn't exist
@@ -35,5 +34,5 @@ index bf4e1dc9..594b4583 100644
enddata = (const char *) tmpdata;
if (enddata - s.c_str() == s.size()) { // If no size or offset override
--
2.39.2 (Apple Git-143)
2.44.0
@@ -0,0 +1,26 @@
From a7fc8b440ab58cb377460e11c7449488ff5abc96 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 5/5] 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 ac94d261c..a76ad389b 100644
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/ifacedecomp.cc
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/ifacedecomp.cc
@@ -1842,7 +1842,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.44.0
+11 -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.0.2")
set(ghidra_version "11.1")
set(ghidra_git_tag "Ghidra_${ghidra_version}_build")
set(ghidra_shallow TRUE)
@@ -40,15 +40,16 @@ 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/0005-Add-missing-index-check-to-prevent-errors-in-Windows.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.1")
set(ghidra_head_version "11.2")
set(ghidra_version "${ghidra_head_version}")
set(ghidra_head_git_tag "2a7897c3661e03db2e6c1e0e42d2362b654790a2")
set(ghidra_head_git_tag "195abea7e4a4a81a31077e90026e2f4ea0c30c40")
set(ghidra_git_tag "${ghidra_head_git_tag}")
set(ghidra_shallow FALSE)
set(ghidra_patches
@@ -57,8 +58,6 @@ 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-Fix-sleighexample.patch"
"${CMAKE_CURRENT_LIST_DIR}/patches/HEAD/0004-Fix-opening-sla-files-on-Windows.patch"
"${CMAKE_CURRENT_LIST_DIR}/patches/HEAD/0005-Add-missing-index-check-to-prevent-errors-in-Windows.patch"
)
string(SUBSTRING "${ghidra_git_tag}" 0 7 ghidra_short_commit)
@@ -167,6 +166,7 @@ set(sleigh_deccore_source_list
"${library_root}/unionresolve.cc"
"${library_root}/modelrules.cc"
"${library_root}/signature.cc"
"${library_root}/multiprecision.cc"
)
# if("${sleigh_RELEASE_TYPE}" STREQUAL "HEAD")
# list(APPEND sleigh_deccore_source_list
@@ -200,13 +200,13 @@ set(sleigh_source_list
"${library_root}/semantics.cc"
"${library_root}/context.cc"
"${library_root}/filemanage.cc"
"${library_root}/slaformat.cc"
"${library_root}/compression.cc"
)
if("${sleigh_RELEASE_TYPE}" STREQUAL "HEAD")
list(APPEND sleigh_source_list
"${library_root}/slaformat.cc"
"${library_root}/compression.cc"
)
endif()
# if("${sleigh_RELEASE_TYPE}" STREQUAL "HEAD")
# list(APPEND sleigh_source_list
# )
# endif()
set(sleigh_ghidra_source_list
"${library_root}/ghidra_arch.cc"
+3
View File
@@ -124,6 +124,9 @@ namespace ghidra {
#include <ghidra/modelrules.hh>
#include <ghidra/signature.hh>
#include <ghidra/signature_ghidra.hh>
#include <ghidra/compression.hh>
#include <ghidra/multiprecision.hh>
#include <ghidra/slaformat.hh>
// #ifdef sleigh_RELEASE_IS_HEAD
// #endif
+1 -3
View File
@@ -42,9 +42,7 @@ if(HAVE_TERMIOS_H)
endif()
sleigh_add_optional_defines(sleigh_ghidra_test PRIVATE)
if(sleigh_RELEASE_IS_HEAD)
target_link_libraries(sleigh_ghidra_test PRIVATE ZLIB::ZLIB)
endif()
target_link_libraries(sleigh_ghidra_test PRIVATE ZLIB::ZLIB)
add_test(
NAME sleigh_ghidra_unittest
+2 -4
View File
@@ -50,10 +50,8 @@ set_target_properties(sleigh_decompiler PROPERTIES
OUTPUT_NAME_DEBUG decomp_dbg
)
if(sleigh_RELEASE_IS_HEAD)
find_package(ZLIB REQUIRED)
target_link_libraries(sleigh_decompiler PRIVATE ZLIB::ZLIB)
endif()
find_package(ZLIB REQUIRED)
target_link_libraries(sleigh_decompiler PRIVATE ZLIB::ZLIB)
if(NOT CMAKE_SKIP_INSTALL_RULES)
include("GNUInstallDirs")
+2 -4
View File
@@ -46,10 +46,8 @@ set_target_properties(sleigh_ghidra PROPERTIES
OUTPUT_NAME_DEBUG ghidra_dbg
)
if(sleigh_RELEASE_IS_HEAD)
find_package(ZLIB REQUIRED)
target_link_libraries(sleigh_ghidra PRIVATE ZLIB::ZLIB)
endif()
find_package(ZLIB REQUIRED)
target_link_libraries(sleigh_ghidra PRIVATE ZLIB::ZLIB)
if(NOT CMAKE_SKIP_INSTALL_RULES)
include("GNUInstallDirs")
+2 -4
View File
@@ -36,10 +36,8 @@ set_target_properties(sleigh_sleigh PROPERTIES
OUTPUT_NAME_DEBUG sleigh_dbg
)
if(sleigh_RELEASE_IS_HEAD)
find_package(ZLIB REQUIRED)
target_link_libraries(sleigh_sleigh PRIVATE ZLIB::ZLIB)
endif()
find_package(ZLIB REQUIRED)
target_link_libraries(sleigh_sleigh PRIVATE ZLIB::ZLIB)
if(NOT CMAKE_SKIP_INSTALL_RULES)
include("GNUInstallDirs")