Compare commits

...

12 Commits

Author SHA1 Message Date
Eric Kilmer 8243a7b4b4 Fix ccache for Windows in GitHub Actions
- Add TrackFileAccess=false to CMAKE_VS_GLOBALS in ccache-msvc.cmake
  to prevent MSBuild from tracking ccache files as build outputs
- Move Windows ccache directory to %TEMP% to avoid Visual Studio's
  file tracking triggering unnecessary rebuilds
- Update cache action path to use platform-specific locations

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 09:26:48 -05:00
Eric Kilmer 0664b5c545 Dark-mode for index.html 2026-01-23 17:51:57 -05:00
Eric Kilmer cd6078bb22 Publish both stable and HEAD docs to GitHub Pages 2026-01-23 17:44:19 -05:00
Eric Kilmer fc49d2340e Deploy Doxygen docs to GitHub Pages
https://lifting-bits.github.io/sleigh
2026-01-23 17:26:42 -05:00
auto-updater[bot] 1df5e051d3 Update Ghidra HEAD to commit 549735683 (#387)
Bump Ghidra HEAD commit 549735683

Changed files:

```
M	Ghidra/Features/Decompiler/src/decompile/cpp/ruleaction.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/sleighbase.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/slgh_compile.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/slgh_compile.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/slghparse.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/slghparse.y
M	Ghidra/Features/Decompiler/src/decompile/cpp/subflow.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/subflow.hh
M	Ghidra/Processors/RISCV/data/languages/riscv.opinion
```

Commit details:

```
[Commit 1/7]
Hash: 6208df2d50d716b4faf87d3a0c0603d45aac4cb3
Date: 2026-01-13 10:44:59 -0500
Message: GP-1 Corrected RISCV import opinion file

Files changed:
  M	Ghidra/Processors/RISCV/data/languages/riscv.opinion

[Commit 2/7]
Hash: 1789bb9c5e66cb1e5ad2072b73c4bf7fbc713f67
Date: 2026-01-12 21:00:06 -0500
Message: GP-1 minor doc fix

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

[Commit 3/7]
Hash: 7828f235d315807d18ecb873fad34b209a02ce65
Date: 2026-01-12 21:51:54 +0000
Message: GP-6316 Increase maximum temporary size for SLEIGH to 256 bytes

Files changed:
  M	Ghidra/Features/Decompiler/src/decompile/cpp/sleighbase.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/slgh_compile.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/slgh_compile.hh

[Commit 4/7]
Hash: 4830a7ab99548aa898e861b967f48c92dd741f48
Date: 2026-01-12 19:33:12 +0000
Message: GP-6314 Reset label counter for every named section

Files changed:
  M	Ghidra/Features/Decompiler/src/decompile/cpp/slgh_compile.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/slgh_compile.hh
  M	Ghidra/Features/Decompiler/src/decompile/cpp/slghparse.cc
  M	Ghidra/Features/Decompiler/src/decompile/cpp/slghparse.y

[Commit 5/7]
Hash: 123bd5cbe6d54105c96bb8a0b5c1b81f84b29e97
Date: 2026-01-09 20:37:38 +0000
Message: GP-6310 Apply extension patch if consumption is beyond small variable

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

[Commit 6/7]
Hash: 451334568f3200f453b6b3985b5949f72747f1c6
Date: 2026-01-09 20:15:16 +0000
Message: Let RuleShiftAnd apply in more situations

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

[Commit 7/7]
Hash: 92091a7a2ad59309514d808c7eb890492f5c49e8
Date: 2025-12-02 10:59:10 +0100
Message: decompiler: fix bit extractions with RuleShiftAnd and RuleShiftCompare
Details:
Fixes https://github.com/NationalSecurityAgency/ghidra/issues/8717

RuleShiftAnd previously replaced the AND opcode with COPY. This,
however doesn't update the NZMask of the Varnode. As a result, following
rules may assume the NZMask after the AND operation also applies to the
Varnode being copied.

In combination with RuleShiftCompare, an expression of the form
(a & bitmask) >> const != 0, wrongfully is reduced to a != 0.
Instead of replacing the AND with COPY, we now replace the input
of the shift operation instead. This way, future rules will see
the correct NZMask.

Files changed:
  M	Ghidra/Features/Decompiler/src/decompile/cpp/ruleaction.cc
```
2026-01-19 08:56:30 -05:00
Eric Kilmer edc5fabd3a Ghidra 12.0.1 (#386) 2026-01-15 15:52:35 +00:00
auto-updater[bot] 9316045354 Update Ghidra HEAD to commit 6ef256cef (#385)
Bump Ghidra HEAD commit 6ef256cef

Changed files:

```
M	Ghidra/Processors/AARCH64/data/languages/AARCH64.ldefs
M	Ghidra/Processors/AARCH64/data/languages/AARCH64.opinion
M	Ghidra/Processors/x86/data/languages/x86.opinion
```

Commit details:

```
[Commit 1/1]
Hash: ad00d5734f82266e7d58624a36075da33d8e3005
Date: 2025-12-23 19:04:43 -0500
Message: GP-3960: ElfLoader can now recognize Swift and golang

Files changed:
  M	Ghidra/Processors/AARCH64/data/languages/AARCH64.ldefs
  M	Ghidra/Processors/AARCH64/data/languages/AARCH64.opinion
  M	Ghidra/Processors/x86/data/languages/x86.opinion
```
2026-01-05 09:40:32 -05:00
auto-updater[bot] ec98f45ecf Update Ghidra HEAD to commit dc5836119 (#384)
Bump Ghidra HEAD commit dc5836119

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/expression.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/sleigh.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/slgh_compile.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/slgh_compile.hh
M	Ghidra/Features/Decompiler/src/decompile/cpp/type.cc
```

Commit details:

```
[Commit 1/4]
Hash: 19836741896fd7664c9de9519a8841f9b593ae9f
Date: 2025-12-17 19:52:07 +0000
Message: GP-6237 Move the unique crossbuild region to more significant bits

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

[Commit 2/4]
Hash: b8e698d97804de62a7dbf6664b0e3f264725c3d9
Date: 2025-09-12 20:10:43 +0000
Message: GP-3834 Allow 256 case switch, if a LOAD is present

Files changed:
  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/type.cc

[Commit 3/4]
Hash: 6451d3d3135ba72a4c50f40667ad893b2c944de6
Date: 2025-12-12 00:17:12 +0000
Message: GP-6224 Don't resolve pointer if cast still required

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

[Commit 4/4]
Hash: 9692dd064064ee712d8a724984f1b6b2bec4bc75
Date: 2025-12-10 19:26:03 +0000
Message: GP-6201 Check for free varnodes in functionalEqualityLevel0

Files changed:
  M	Ghidra/Features/Decompiler/src/decompile/cpp/expression.cc
```
2025-12-22 08:48:25 -05:00
dependabot[bot] e4b6ddb926 build(deps): bump actions/upload-artifact from 5 to 6 (#383)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 6.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '6'
  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>
2025-12-15 12:28:09 -05:00
auto-updater[bot] 9248e9114b Update Ghidra HEAD to commit 7bed72e38 (#382)
Bump Ghidra HEAD commit 7bed72e38

Changed files:

```
M	Ghidra/Features/Decompiler/src/decompile/cpp/funcdata_block.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/ruleaction.cc
M	Ghidra/Features/Decompiler/src/decompile/cpp/subflow.cc
M	Ghidra/Processors/68000/data/languages/68000.sinc
M	Ghidra/Processors/PowerPC/data/languages/ppc_vle.sinc
```

Commit details:

```
[Commit 1/5]
Hash: 0e658ae5b6a48fbd688ada2303ad7257f75370ea
Date: 2025-11-18 17:19:57 +0000
Message: GP-6133 INT_ADD correction for RuleStructOffset0 applied to offset pointer

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

[Commit 2/5]
Hash: 35ac4cf37cd1e10b14e0e758124dcc5a5741df1f
Date: 2025-11-17 22:23:38 +0000
Message: GP-6130 Correct pointer offsets for buildStore and buildLoad

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

[Commit 3/5]
Hash: f8d7b704df457fe5a10e6bb9766e7bb34db3e98e
Date: 2025-11-04 20:44:18 +0000
Message: GP-6090 Adjustment for duplicate inputs in pushMultiequal

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

[Commit 4/5]
Hash: 27b06c83a6c3ee05bebe2c60df2cc8b59a16b842
Date: 2025-02-03 17:36:04 +0000
Message: GP-5334: Corrected operand count for m68k addressing modes

Files changed:
  M	Ghidra/Processors/68000/data/languages/68000.sinc

[Commit 5/5]
Hash: b54347759775a2b9a8bb50afe4ed3a6c082a1bfb
Date: 2025-11-13 18:59:44 +0000
Message: GP-6109: Fixed issue with PPC assembler not assembling some instructions

Files changed:
  M	Ghidra/Processors/PowerPC/data/languages/ppc_vle.sinc
```
2025-12-15 12:27:40 -05:00
dependabot[bot] a020faccb5 build(deps): bump actions/cache from 4 to 5 (#381)
Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v4...v5)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-12 09:08:45 -05:00
dependabot[bot] d74e8e9414 build(deps): bump peter-evans/create-pull-request from 7 to 8 (#380)
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 7 to 8.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v7...v8)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-version: '8'
  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>
2025-12-10 09:18:54 -05:00
5 changed files with 177 additions and 13 deletions
+161
View File
@@ -0,0 +1,161 @@
name: Documentation
on:
release:
types: [published]
workflow_dispatch: # manual trigger
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: pages
cancel-in-progress: false
jobs:
deploy:
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- uses: actions/checkout@v6
- name: Setup Git User for Applying Patches
# See this thread for more details https://github.community/t/github-actions-bot-email-address/17204/5
run: |
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
git config --global user.name "github-actions[bot]"
- name: Install dependencies
run: sudo apt-get update && sudo apt-get install -y doxygen graphviz
# Build stable documentation
- name: Configure (stable)
run: cmake --preset=ci-ubuntu -Dsleigh_RELEASE_TYPE=stable
- name: Build documentation (stable)
run: cmake --build build --target docs
- name: Copy stable docs
run: |
mkdir -p docs-site/stable
cp -r build/docs/html/* docs-site/stable/
# Clean and build HEAD documentation
- name: Clean build directory
run: rm -rf build
- name: Configure (HEAD)
run: cmake --preset=ci-ubuntu -Dsleigh_RELEASE_TYPE=HEAD
- name: Build documentation (HEAD)
run: cmake --build build --target docs
- name: Copy HEAD docs
run: |
mkdir -p docs-site/HEAD
cp -r build/docs/html/* docs-site/HEAD/
# Create landing page
- name: Create landing page
run: |
cat > docs-site/index.html << 'EOF'
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Sleigh Documentation</title>
<style>
:root {
--bg-color: #f5f5f5;
--text-color: #333;
--text-muted: #666;
--card-bg: white;
--card-shadow: rgba(0,0,0,0.1);
--card-shadow-hover: rgba(0,0,0,0.15);
--link-color: #0066cc;
}
@media (prefers-color-scheme: dark) {
:root {
--bg-color: #1a1a1a;
--text-color: #e0e0e0;
--text-muted: #a0a0a0;
--card-bg: #2d2d2d;
--card-shadow: rgba(0,0,0,0.3);
--card-shadow-hover: rgba(0,0,0,0.4);
--link-color: #4da6ff;
}
}
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
max-width: 800px;
margin: 0 auto;
padding: 2rem;
background: var(--bg-color);
color: var(--text-color);
}
h1 {
color: var(--text-color);
}
.cards {
display: flex;
gap: 1rem;
margin-top: 2rem;
}
.card {
flex: 1;
background: var(--card-bg);
border-radius: 8px;
padding: 1.5rem;
text-decoration: none;
color: inherit;
box-shadow: 0 2px 4px var(--card-shadow);
transition: box-shadow 0.2s;
}
.card:hover {
box-shadow: 0 4px 8px var(--card-shadow-hover);
}
.card h2 {
margin-top: 0;
color: var(--link-color);
}
.card p {
color: var(--text-muted);
margin-bottom: 0;
}
</style>
</head>
<body>
<h1>Sleigh Documentation</h1>
<p>Select a documentation version:</p>
<div class="cards">
<a href="stable/" class="card">
<h2>Stable</h2>
<p>Documentation for the latest stable release.</p>
</a>
<a href="HEAD/" class="card">
<h2>HEAD</h2>
<p>Documentation for the latest Ghidra HEAD development version.</p>
</a>
</div>
</body>
</html>
EOF
- name: Upload Pages artifact
uses: actions/upload-pages-artifact@v3
with:
path: docs-site
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
+12 -10
View File
@@ -67,9 +67,9 @@ jobs:
file(APPEND "$ENV{GITHUB_ENV}" "CACHE_TIMESTAMP=${current_date}\n")
- name: Update the cache (ccache)
uses: actions/cache@v4
uses: actions/cache@v5
with:
path: "${{ github.workspace }}/ccache"
path: ${{ runner.os == 'Windows' && env.TEMP || github.workspace }}/ccache
key: ${{ env.CACHE_KEY }}_ccache_${{ env.CACHE_TIMESTAMP }}
restore-keys: |
${{ env.CACHE_KEY }}_ccache_
@@ -80,14 +80,16 @@ jobs:
run: |
file(MAKE_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/ccache")
file(APPEND "$ENV{GITHUB_ENV}" "CCACHE_BASEDIR=${CMAKE_CURRENT_SOURCE_DIR}\n")
file(APPEND "$ENV{GITHUB_ENV}" "CCACHE_DIR=${CMAKE_CURRENT_SOURCE_DIR}/ccache\n")
if(WIN32)
file(APPEND "$ENV{GITHUB_ENV}" "CCACHE_DIR=$ENV{TEMP}/ccache\n")
else()
file(APPEND "$ENV{GITHUB_ENV}" "CCACHE_DIR=${CMAKE_CURRENT_SOURCE_DIR}/ccache\n")
endif()
file(APPEND "$ENV{GITHUB_ENV}" "CCACHE_COMPRESS=true\n")
# Trial and error to get all files in here
file(APPEND "$ENV{GITHUB_ENV}" "CCACHE_COMPRESSLEVEL=10\n")
# This should be multiplied by the number of compilation jobs and be no
# larger than 5G, which is the cache max size
file(APPEND "$ENV{GITHUB_ENV}" "CCACHE_MAXSIZE=400M\n")
# Tell CMake to use ccache
# These only work for Ninja/Makefiles, not VS generators
# But harmless to set for all platforms
file(APPEND "$ENV{GITHUB_ENV}" "CMAKE_CXX_COMPILER_LAUNCHER=ccache\n")
file(APPEND "$ENV{GITHUB_ENV}" "CMAKE_C_COMPILER_LAUNCHER=ccache\n")
# Clear stats before every build
@@ -214,7 +216,7 @@ jobs:
# DEB Package
- name: Upload the DEB package artifact (RelWithDebInfo only)
if: matrix.build_type == 'RelWithDebInfo' && runner.os == 'Linux'
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v6
with:
name: ${{ env.DEB_PACKAGE_NAME }}
path: ${{ env.DEB_PACKAGE_PATH }}
@@ -228,7 +230,7 @@ jobs:
# RPM Package
- name: Upload the RPM package artifact (RelWithDebInfo only)
if: matrix.build_type == 'RelWithDebInfo' && runner.os == 'Linux'
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v6
with:
name: ${{ env.RPM_PACKAGE_NAME }}
path: ${{ env.RPM_PACKAGE_PATH }}
@@ -241,7 +243,7 @@ jobs:
# TGZ Package
- name: Upload the TGZ package artifact (RelWithDebInfo only)
if: matrix.build_type == 'RelWithDebInfo'
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v6
with:
name: ${{ env.TGZ_PACKAGE_NAME }}
path: ${{ env.TGZ_PACKAGE_PATH }}
+1 -1
View File
@@ -36,7 +36,7 @@ jobs:
- name: Create PR
if: steps.head_update.outputs.did_update
uses: peter-evans/create-pull-request@v7
uses: peter-evans/create-pull-request@v8
with:
title: Update Ghidra HEAD to commit ${{ steps.head_update.outputs.short_sha }}
commit-message: |
+1
View File
@@ -29,6 +29,7 @@ set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<$<CONFIG:Debug,RelWithDebInfo>:Embedd
set(CMAKE_VS_GLOBALS
"CLToolExe=cl.exe"
"CLToolPath=${CMAKE_BINARY_DIR}"
"TrackFileAccess=false"
"UseMultiToolTask=true"
"DebugInformationFormat=OldStyle"
)
+2 -2
View File
@@ -22,7 +22,7 @@ set_property(CACHE sleigh_RELEASE_TYPE PROPERTY STRINGS "stable" "HEAD")
find_package(Git REQUIRED)
# Ghidra pinned stable version commit
set(ghidra_version "12.0")
set(ghidra_version "12.0.1")
set(ghidra_git_tag "Ghidra_${ghidra_version}_build")
set(ghidra_shallow TRUE)
@@ -51,7 +51,7 @@ if("${sleigh_RELEASE_TYPE}" STREQUAL "HEAD")
# TODO: CMake only likes numeric characters in the version string....
set(ghidra_head_version "12.1")
set(ghidra_version "${ghidra_head_version}")
set(ghidra_head_git_tag "d83ea17544690518554cdab2c0d8dd4ee1a3e229")
set(ghidra_head_git_tag "549735683cce5bd6220a4355de123a825ebff328")
set(ghidra_git_tag "${ghidra_head_git_tag}")
set(ghidra_shallow FALSE)
set(ghidra_patches