Files
lifting-bits-sleigh/src/setup-ghidra-source.cmake
T
auto-updater[bot] 0bf9bc4334 Update Ghidra HEAD to commit 43f4fcf95 (#412)
Bump Ghidra HEAD commit 43f4fcf95

Changed files:

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

Commit details:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-30 09:52:52 -04:00

258 lines
9.2 KiB
CMake

#
# Copyright (c) 2022-present, Trail of Bits, Inc.
# All rights reserved.
#
# This source code is licensed in accordance with the terms specified in
# the LICENSE file found in the root directory of this source tree.
#
# ---- Setup Ghidra Source code ----
include_guard(GLOBAL)
# Set up Ghidra repo human-readable version settings
set(sleigh_RELEASE_TYPE "stable" CACHE
STRING "Release type to use. 'HEAD' is used for active development purposes."
)
# This is just helper for CMake UIs. CMake does not enforce that the value matches one of those listed.
set_property(CACHE sleigh_RELEASE_TYPE PROPERTY STRINGS "stable" "HEAD")
# **** Setup pinned git info ****
find_package(Git REQUIRED)
# Ghidra pinned stable version commit
set(ghidra_version "12.0.4")
set(ghidra_git_tag "Ghidra_${ghidra_version}_build")
set(ghidra_shallow TRUE)
set(sleigh_ADDITIONAL_PATCHES "" CACHE STRING
"The accepted patch format is git patch files, to be applied via git am. The format of the list is a CMake semicolon separated list.")
# See this thread for more details https://github.community/t/github-actions-bot-email-address/17204/5
set(ghidra_patch_user "github-actions[bot]")
set(ghidra_patch_email "41898282+github-actions[bot]@users.noreply.github.com")
# pinned stable patches list
set(ghidra_patches
PATCH_COMMAND "${GIT_EXECUTABLE}" config user.name "${ghidra_patch_user}" &&
"${GIT_EXECUTABLE}" config user.email "${ghidra_patch_email}" &&
"${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"
)
# 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.2")
set(ghidra_version "${ghidra_head_version}")
set(ghidra_head_git_tag "43f4fcf954fb847714d769c5d4d1657204cb8cd8")
set(ghidra_git_tag "${ghidra_head_git_tag}")
set(ghidra_shallow FALSE)
set(ghidra_patches
PATCH_COMMAND "${GIT_EXECUTABLE}" config user.name "${ghidra_patch_user}" &&
"${GIT_EXECUTABLE}" config user.email "${ghidra_patch_email}" &&
"${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-Ignore-floating-point-test-due-to-compilation-differ.patch"
"${CMAKE_CURRENT_LIST_DIR}/patches/HEAD/0004-Allow-positive-or-negative-NAN-in-decompiler-floatin.patch"
"${CMAKE_CURRENT_LIST_DIR}/patches/HEAD/0005-decompiler-Fix-strict-weak-ordering-TypePartialEnum.patch"
"${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"
)
string(SUBSTRING "${ghidra_git_tag}" 0 7 ghidra_short_commit)
else()
set(ghidra_short_commit "${ghidra_git_tag}")
endif()
list(APPEND ghidra_patches ${sleigh_ADDITIONAL_PATCHES})
message(STATUS "Using Ghidra version ${ghidra_version} at git ref ${ghidra_short_commit}")
include(FetchContent)
# Verbose fetch content updates
set(FETCHCONTENT_QUIET OFF)
# Write out source directory with identifiable version info
FetchContent_Declare(GhidraSource
GIT_REPOSITORY https://github.com/NationalSecurityAgency/ghidra
GIT_TAG ${ghidra_git_tag}
GIT_PROGRESS TRUE
GIT_SHALLOW ${ghidra_shallow}
${ghidra_patches}
)
FetchContent_MakeAvailable(GhidraSource)
message(STATUS "Ghidra source located at '${ghidrasource_SOURCE_DIR}'")
# Sanity check on Ghidra source code checkout
set(library_root "${ghidrasource_SOURCE_DIR}/Ghidra/Features/Decompiler/src/decompile/cpp")
if(NOT EXISTS "${library_root}/sleigh.hh")
message(FATAL_ERROR "The Ghidra source directory has not been initialized correctly. Could not find '${library_root}'")
endif()
# Source collection variables
set(sleigh_core_source_list
"${library_root}/xml.cc"
"${library_root}/space.cc"
"${library_root}/float.cc"
"${library_root}/address.cc"
"${library_root}/pcoderaw.cc"
"${library_root}/translate.cc"
"${library_root}/opcodes.cc"
"${library_root}/globalcontext.cc"
"${library_root}/marshal.cc"
)
#if("${sleigh_RELEASE_TYPE}" STREQUAL "HEAD")
# list(APPEND sleigh_core_source_list
# )
#endif()
set(sleigh_deccore_source_list
"${library_root}/capability.cc"
"${library_root}/architecture.cc"
"${library_root}/options.cc"
"${library_root}/graph.cc"
"${library_root}/cover.cc"
"${library_root}/block.cc"
"${library_root}/cast.cc"
"${library_root}/typeop.cc"
"${library_root}/database.cc"
"${library_root}/cpool.cc"
"${library_root}/comment.cc"
"${library_root}/stringmanage.cc"
"${library_root}/fspec.cc"
"${library_root}/action.cc"
"${library_root}/loadimage.cc"
"${library_root}/grammar.cc"
"${library_root}/varnode.cc"
"${library_root}/op.cc"
"${library_root}/type.cc"
"${library_root}/variable.cc"
"${library_root}/varmap.cc"
"${library_root}/jumptable.cc"
"${library_root}/emulate.cc"
"${library_root}/emulateutil.cc"
"${library_root}/flow.cc"
"${library_root}/userop.cc"
"${library_root}/funcdata.cc"
"${library_root}/funcdata_block.cc"
"${library_root}/funcdata_op.cc"
"${library_root}/funcdata_varnode.cc"
"${library_root}/pcodeinject.cc"
"${library_root}/heritage.cc"
"${library_root}/prefersplit.cc"
"${library_root}/rangeutil.cc"
"${library_root}/ruleaction.cc"
"${library_root}/subflow.cc"
"${library_root}/blockaction.cc"
"${library_root}/merge.cc"
"${library_root}/double.cc"
"${library_root}/transform.cc"
"${library_root}/coreaction.cc"
"${library_root}/condexe.cc"
"${library_root}/override.cc"
"${library_root}/dynamic.cc"
"${library_root}/crc32.cc"
"${library_root}/prettyprint.cc"
"${library_root}/printlanguage.cc"
"${library_root}/printc.cc"
"${library_root}/printjava.cc"
"${library_root}/memstate.cc"
"${library_root}/opbehavior.cc"
"${library_root}/paramid.cc"
"${library_root}/unionresolve.cc"
"${library_root}/modelrules.cc"
"${library_root}/signature.cc"
"${library_root}/multiprecision.cc"
"${library_root}/constseq.cc"
"${library_root}/expression.cc"
)
if("${sleigh_RELEASE_TYPE}" STREQUAL "HEAD")
list(APPEND sleigh_deccore_source_list
"${library_root}/bitfield.cc"
)
endif()
set(sleigh_extra_source_list
"${library_root}/callgraph.cc"
"${library_root}/ifacedecomp.cc"
"${library_root}/ifaceterm.cc"
"${library_root}/inject_sleigh.cc"
"${library_root}/interface.cc"
"${library_root}/libdecomp.cc"
"${library_root}/loadimage_xml.cc"
"${library_root}/raw_arch.cc"
"${library_root}/rulecompile.cc"
"${library_root}/sleigh_arch.cc"
"${library_root}/testfunction.cc"
"${library_root}/unify.cc"
"${library_root}/xml_arch.cc"
)
set(sleigh_source_list
"${library_root}/sleigh.cc"
"${library_root}/pcodeparse.cc"
"${library_root}/pcodecompile.cc"
"${library_root}/sleighbase.cc"
"${library_root}/slghsymbol.cc"
"${library_root}/slghpatexpress.cc"
"${library_root}/slghpattern.cc"
"${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
# )
# endif()
set(sleigh_ghidra_source_list
"${library_root}/ghidra_arch.cc"
"${library_root}/inject_ghidra.cc"
"${library_root}/ghidra_translate.cc"
"${library_root}/loadimage_ghidra.cc"
"${library_root}/typegrp_ghidra.cc"
"${library_root}/database_ghidra.cc"
"${library_root}/ghidra_context.cc"
"${library_root}/cpool_ghidra.cc"
"${library_root}/ghidra_process.cc"
"${library_root}/comment_ghidra.cc"
"${library_root}/string_ghidra.cc"
"${library_root}/signature_ghidra.cc"
)
# if("${sleigh_RELEASE_TYPE}" STREQUAL "HEAD")
# list(APPEND sleigh_ghidra_source_list
# )
# endif()
set(sleigh_slacomp_source_list
"${library_root}/slgh_compile.cc"
"${library_root}/slghparse.cc"
"${library_root}/slghscan.cc"
)
# Include separate file to make it easier to find user-specified compile
# options
include("${CMAKE_CURRENT_LIST_DIR}/compile_options.cmake")
# Sets 'spec_file_list' variable
if(sleigh_RELEASE_IS_HEAD)
include("${CMAKE_CURRENT_LIST_DIR}/spec_files_HEAD.cmake")
else()
include("${CMAKE_CURRENT_LIST_DIR}/spec_files_stable.cmake")
endif()