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