mirror of
https://github.com/lifting-bits/sleigh
synced 2026-06-21 13:56:12 +00:00
Use CMake FetchContent to support both stable and HEAD ghidra (#15)
Quite a few changes that should be explained in the READMEs Updates to CI actions
This commit is contained in:
+17
-19
@@ -17,28 +17,31 @@ jobs:
|
||||
matrix:
|
||||
os: [ubuntu-latest, macos-latest]
|
||||
build_type: [RelWithDebInfo, Debug]
|
||||
release: [stable, HEAD]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
|
||||
- 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: Generate cache key
|
||||
id: cache_key
|
||||
run: echo ::set-output name=VALUE::build_${{ matrix.os }}_type-${{ matrix.build_type }}
|
||||
run: echo ::set-output name=VALUE::build_${{ matrix.os }}_type-${{ matrix.build_type }}-${{ matrix.release }}
|
||||
|
||||
- name: Update the cache (ccache)
|
||||
uses: actions/cache@v1.0.3
|
||||
with:
|
||||
path: ccache
|
||||
path: "${{ github.workspace }}/ccache"
|
||||
key: ${{ steps.cache_key.outputs.VALUE }}_ccache
|
||||
|
||||
- name: Create the cache
|
||||
run: mkdir -p ccache
|
||||
|
||||
- name: Synchronize the submodules
|
||||
run: git submodule sync --recursive
|
||||
|
||||
- name: Update the submodules
|
||||
run: git submodule update --init --recursive
|
||||
run: |
|
||||
mkdir -p "${{ github.workspace }}/ccache"
|
||||
echo "CCACHE_DIR=${{ github.workspace }}/ccache" >> $GITHUB_ENV
|
||||
|
||||
- name: Install Linux system dependencies
|
||||
if: runner.os == 'Linux'
|
||||
@@ -70,23 +73,22 @@ jobs:
|
||||
|
||||
- name: Configure the project
|
||||
run: |
|
||||
export CCACHE_DIR="$(realpath ccache)"
|
||||
|
||||
cmake \
|
||||
-S . \
|
||||
-B build \
|
||||
-G Ninja \
|
||||
-DCMAKE_C_COMPILER=clang \
|
||||
-DCMAKE_CXX_COMPILER=clang++ \
|
||||
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
|
||||
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
|
||||
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \
|
||||
-DSLEIGH_GHIDRA_RELEASE_TYPE=${{ matrix.release }} \
|
||||
-DSLEIGH_ENABLE_TESTS=ON \
|
||||
-DSLEIGH_ENABLE_EXAMPLES=ON \
|
||||
-DSLEIGH_ENABLE_PACKAGING=ON
|
||||
|
||||
- name: Build the project
|
||||
run: |
|
||||
export CCACHE_DIR="$(realpath ccache)"
|
||||
|
||||
cmake \
|
||||
--build build \
|
||||
-v
|
||||
@@ -103,12 +105,8 @@ jobs:
|
||||
|
||||
- name: Run the install target
|
||||
run: |
|
||||
mkdir install
|
||||
export DESTDIR="$(realpath install)"
|
||||
|
||||
cmake \
|
||||
--build build \
|
||||
--target install
|
||||
cmake --install build \
|
||||
--prefix install
|
||||
|
||||
- name: Create the packages
|
||||
run: |
|
||||
|
||||
@@ -1,2 +1,6 @@
|
||||
build
|
||||
.vscode
|
||||
|
||||
# FetchContent Ghidra source directories
|
||||
/src/ghidra*
|
||||
cmake_fc_*
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
[submodule "src"]
|
||||
path = src
|
||||
url = https://github.com/NationalSecurityAgency/ghidra
|
||||
+42
-125
@@ -7,7 +7,15 @@
|
||||
#
|
||||
|
||||
cmake_minimum_required(VERSION 3.21.0)
|
||||
project("sleigh" VERSION 10.0.4.0)
|
||||
|
||||
# Sets "library_root" variable for decompiler cpp root directory
|
||||
# Sets "ghidra_version" for numeric version number
|
||||
# Use "ghidrasource_SOURCE_DIR" variable for Ghidra repo root
|
||||
include(src/setup-ghidra-source.cmake)
|
||||
|
||||
project("sleigh"
|
||||
VERSION "${ghidra_version}"
|
||||
)
|
||||
|
||||
include("cmake/options.cmake")
|
||||
|
||||
@@ -23,12 +31,6 @@ if(SLEIGH_ENABLE_PACKAGING)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Make sure the submodule has been initialized correctly
|
||||
set(library_root "${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Features/Decompiler/src/decompile/cpp")
|
||||
if(NOT EXISTS "${library_root}/sleigh.hh")
|
||||
message(FATAL_ERROR "The ghidra submodule has not been initialized")
|
||||
endif()
|
||||
|
||||
set(sleigh_core_source_list
|
||||
"${library_root}/xml.cc"
|
||||
"${library_root}/space.cc"
|
||||
@@ -222,6 +224,11 @@ add_executable(decomp_opt
|
||||
|
||||
"${library_root}/consolemain.cc"
|
||||
)
|
||||
if("${SLEIGH_GHIDRA_RELEASE_TYPE}" STREQUAL "HEAD")
|
||||
target_sources(decomp_opt PRIVATE
|
||||
"${library_root}/testfunction.cc"
|
||||
)
|
||||
endif()
|
||||
|
||||
target_compile_definitions(decomp_opt PRIVATE
|
||||
__TERMINAL__
|
||||
@@ -255,6 +262,12 @@ if(SLEIGH_ENABLE_TESTS)
|
||||
"${library_root}/test.cc"
|
||||
"${library_root}/../unittests/testfloatemu.cc"
|
||||
)
|
||||
if("${SLEIGH_GHIDRA_RELEASE_TYPE}" STREQUAL "HEAD")
|
||||
target_sources(ghidra_test_dbg PRIVATE
|
||||
"${library_root}/../unittests/testtypes.cc"
|
||||
"${library_root}/../unittests/testcirclerange.cc"
|
||||
)
|
||||
endif()
|
||||
|
||||
target_link_libraries(ghidra_test_dbg PRIVATE
|
||||
sleigh_settings
|
||||
@@ -268,9 +281,14 @@ if(SLEIGH_ENABLE_TESTS)
|
||||
"${library_root}"
|
||||
)
|
||||
|
||||
set(extra_test_args "")
|
||||
if("${SLEIGH_GHIDRA_RELEASE_TYPE}" STREQUAL "HEAD")
|
||||
# We compile the sla files in our build directory
|
||||
set(extra_test_args -sleighpath "${CMAKE_CURRENT_BINARY_DIR}")
|
||||
endif()
|
||||
add_test(
|
||||
NAME ghidra_test_dbg
|
||||
COMMAND ghidra_test_dbg
|
||||
COMMAND ghidra_test_dbg ${extra_test_args} unittests
|
||||
)
|
||||
endif()
|
||||
|
||||
@@ -283,6 +301,13 @@ add_executable(ghidra_opt
|
||||
${sleigh_deccore_source_list}
|
||||
${sleigh_ghidra_source_list}
|
||||
)
|
||||
if("${SLEIGH_GHIDRA_RELEASE_TYPE}" STREQUAL "HEAD")
|
||||
target_sources(ghidra_opt PRIVATE
|
||||
$<$<CONFIG:DEBUG>:
|
||||
"${library_root}/testfunction.cc"
|
||||
>
|
||||
)
|
||||
endif()
|
||||
|
||||
target_link_libraries(ghidra_opt PRIVATE
|
||||
sleigh_settings
|
||||
@@ -424,127 +449,19 @@ endif()
|
||||
#
|
||||
# Spec files
|
||||
#
|
||||
if(NOT "${SLEIGH_GHIDRA_RELEASE_TYPE}" STREQUAL "HEAD")
|
||||
include(spec-files-list/spec_files_stable.cmake)
|
||||
else()
|
||||
include(spec-files-list/spec_files_HEAD.cmake)
|
||||
endif()
|
||||
|
||||
set(spec_file_list
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/6502/data/languages/6502.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/68000/data/languages/68020.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/68000/data/languages/68030.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/68000/data/languages/68040.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/68000/data/languages/coldfire.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/6805/data/languages/6805.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/6805/data/languages/6809.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/8048/data/languages/8048.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/8051/data/languages/80251.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/8051/data/languages/80390.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/8051/data/languages/8051.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/8051/data/languages/mx51.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/8085/data/languages/8085.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/AARCH64/data/languages/AARCH64BE.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/AARCH64/data/languages/AARCH64.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/ARM/data/languages/ARM4_be.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/ARM/data/languages/ARM4_le.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/ARM/data/languages/ARM4t_be.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/ARM/data/languages/ARM4t_le.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/ARM/data/languages/ARM5_be.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/ARM/data/languages/ARM5_le.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/ARM/data/languages/ARM5t_be.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/ARM/data/languages/ARM5t_le.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/ARM/data/languages/ARM6_be.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/ARM/data/languages/ARM6_le.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/ARM/data/languages/ARM7_be.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/ARM/data/languages/ARM7_le.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/ARM/data/languages/ARM8_be.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/ARM/data/languages/ARM8_le.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/Atmel/data/languages/avr32a.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/Atmel/data/languages/avr8eind.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/Atmel/data/languages/avr8e.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/Atmel/data/languages/avr8.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/Atmel/data/languages/avr8xmega.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/CP1600/data/languages/CP1600.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/CR16/data/languages/CR16B.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/CR16/data/languages/CR16C.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/Dalvik/data/languages/Dalvik.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/DATA/data/languages/data-be-64.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/DATA/data/languages/data-le-64.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/HCS08/data/languages/HC05.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/HCS08/data/languages/HC08.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/HCS08/data/languages/HCS08.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/HCS12/data/languages/HCS12.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/JVM/data/languages/JVM.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/M8C/data/languages/m8c.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/MCS96/data/languages/MCS96.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/MIPS/data/languages/mips32be.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/MIPS/data/languages/mips32le.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/MIPS/data/languages/mips32R6be.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/MIPS/data/languages/mips32R6le.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/MIPS/data/languages/mips64be.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/MIPS/data/languages/mips64le.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/PA-RISC/data/languages/pa-risc32be.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/PIC/data/languages/dsPIC30F.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/PIC/data/languages/dsPIC33C.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/PIC/data/languages/dsPIC33E.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/PIC/data/languages/dsPIC33F.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/PIC/data/languages/pic12c5xx.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/PIC/data/languages/pic16c5x.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/PIC/data/languages/pic16f.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/PIC/data/languages/pic16.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/PIC/data/languages/pic17c7xx.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/PIC/data/languages/pic18.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/PIC/data/languages/PIC24E.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/PIC/data/languages/PIC24F.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/PIC/data/languages/PIC24H.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/PowerPC/data/languages/ppc_32_4xx_be.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/PowerPC/data/languages/ppc_32_4xx_le.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/PowerPC/data/languages/ppc_32_be.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/PowerPC/data/languages/ppc_32_le.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/PowerPC/data/languages/ppc_32_quicciii_be.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/PowerPC/data/languages/ppc_32_quicciii_le.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/PowerPC/data/languages/ppc_64_be.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/PowerPC/data/languages/ppc_64_isa_altivec_be.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/PowerPC/data/languages/ppc_64_isa_altivec_le.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/PowerPC/data/languages/ppc_64_isa_altivec_vle_be.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/PowerPC/data/languages/ppc_64_isa_be.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/PowerPC/data/languages/ppc_64_isa_le.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/PowerPC/data/languages/ppc_64_isa_vle_be.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/PowerPC/data/languages/ppc_64_le.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/RISCV/data/languages/riscv.ilp32d.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/RISCV/data/languages/riscv.lp64d.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/Sparc/data/languages/SparcV9_32.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/Sparc/data/languages/SparcV9_64.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/SuperH4/data/languages/SuperH4_be.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/SuperH4/data/languages/SuperH4_le.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/SuperH/data/languages/sh-1.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/SuperH/data/languages/sh-2a.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/SuperH/data/languages/sh-2.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/TI_MSP430/data/languages/TI_MSP430.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/TI_MSP430/data/languages/TI_MSP430X.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/Toy/data/languages/toy64_be_harvard.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/Toy/data/languages/toy64_be.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/Toy/data/languages/toy64_le.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/Toy/data/languages/toy_be_posStack.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/Toy/data/languages/toy_be.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/Toy/data/languages/toy_builder_be_align2.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/Toy/data/languages/toy_builder_be.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/Toy/data/languages/toy_builder_le_align2.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/Toy/data/languages/toy_builder_le.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/Toy/data/languages/toy_le.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/Toy/data/languages/toy_wsz_be.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/Toy/data/languages/toy_wsz_le.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/tricore/data/languages/tricore.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/V850/data/languages/V850.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/x86/data/languages/x86-64.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/x86/data/languages/x86.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/Z80/data/languages/z180.slaspec"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors/Z80/data/languages/z80.slaspec"
|
||||
)
|
||||
|
||||
set(sla_spec_output "${CMAKE_CURRENT_BINARY_DIR}/Processors")
|
||||
set(sla_spec_output "${CMAKE_CURRENT_BINARY_DIR}/Ghidra/Processors")
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT "${sla_spec_output}"
|
||||
DEPENDS ${spec_file_list}
|
||||
COMMAND "${CMAKE_COMMAND}" -E rm -rf "${sla_spec_output}"
|
||||
COMMAND "${CMAKE_COMMAND}" -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/src/Ghidra/Processors" "${sla_spec_output}"
|
||||
COMMAND "${CMAKE_COMMAND}" -E copy_directory "${ghidrasource_SOURCE_DIR}/Ghidra/Processors" "${sla_spec_output}"
|
||||
COMMENT "sleigh: Copying the spec files"
|
||||
VERBATIM
|
||||
)
|
||||
@@ -588,7 +505,7 @@ if(SLEIGH_ENABLE_EXAMPLES)
|
||||
|
||||
add_custom_target(sleighexample_runner
|
||||
"${CMAKE_COMMAND}" -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/specfiles"
|
||||
COMMAND "${CMAKE_COMMAND}" -E create_symlink "${CMAKE_CURRENT_BINARY_DIR}/Processors/x86/data/languages/x86.sla" "${CMAKE_CURRENT_BINARY_DIR}/specfiles/x86.sla"
|
||||
COMMAND "${CMAKE_COMMAND}" -E create_symlink "${CMAKE_CURRENT_BINARY_DIR}/Ghidra/Processors/x86/data/languages/x86.sla" "${CMAKE_CURRENT_BINARY_DIR}/specfiles/x86.sla"
|
||||
COMMAND sleighexample disassemble
|
||||
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
|
||||
)
|
||||
@@ -696,7 +613,7 @@ if(SLEIGH_ENABLE_INSTALL)
|
||||
"${library_root}/translate.hh"
|
||||
"${library_root}/types.h"
|
||||
"${library_root}/xml.hh"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/include/libsleigh.hh"
|
||||
"${PROJECT_SOURCE_DIR}/include/libsleigh.hh"
|
||||
)
|
||||
|
||||
install(
|
||||
|
||||
@@ -14,11 +14,21 @@ This repository provides a CMake-based build project for SLEIGH so that it can b
|
||||
|
||||
## Dependencies and Prerequisites
|
||||
|
||||
### Required
|
||||
|
||||
| Name | Version | Linux Package to Install | macOS Homebrew Package to Install |
|
||||
| ---- | ------- | ------------------------ | --------------------------------- |
|
||||
| [Git](https://git-scm.com/) | Latest | git | N/A |
|
||||
| [Ninja](https://ninja-build.org/) | Latest | ninja-build | ninja |
|
||||
| [CMake](https://cmake.org/) | 3.21+ | cmake | cmake |
|
||||
|
||||
**NOTE**: This CMake project pulls the Ghidra source code from the internet during configuration. See the [note on Ghidra source code section](#note-on-ghidra-source-code) for more details.
|
||||
|
||||
### Optional
|
||||
|
||||
For building documentation during installation and packaging:
|
||||
|
||||
| Name | Version | Linux Package to Install | macOS Homebrew Package to Install |
|
||||
| ---- | ------- | ------------------------ | --------------------------------- |
|
||||
| [Doxygen](https://www.doxygen.nl/) | Latest | doxygen | doxygen |
|
||||
| [GraphViz](https://graphviz.org/) | Latest | graphviz | graphviz |
|
||||
|
||||
@@ -29,27 +39,23 @@ This repository provides a CMake-based build project for SLEIGH so that it can b
|
||||
git clone https://github.com/lifting-bits/sleigh.git
|
||||
cd sleigh
|
||||
|
||||
# Update the GHIDRA submodule
|
||||
git submodule update --init --recursive --progress
|
||||
|
||||
# Create a build directory
|
||||
mkdir build
|
||||
cd build
|
||||
|
||||
# Configure CMake
|
||||
cmake \
|
||||
-DSLEIGH_ENABLE_INSTALL=ON \
|
||||
-DCMAKE_INSTALL_PREFIX="<path where SLEIGH will install>" \
|
||||
-G Ninja \
|
||||
..
|
||||
cmake -B build -S . \
|
||||
-DSLEIGH_ENABLE_INSTALL=ON
|
||||
|
||||
# Build SLEIGH
|
||||
cmake --build .
|
||||
cmake --build build -j
|
||||
|
||||
# Install SLEIGH
|
||||
cmake --build . --target install
|
||||
cmake --install build --prefix <path where SLEIGH will install>
|
||||
```
|
||||
|
||||
### Note on Ghidra source code
|
||||
|
||||
The Ghidra source code is not actually included in this git repo, and by default, CMake will automatically pull a stable version from the internet for you.
|
||||
|
||||
Please see [`src/README.md`](./src/README.md) for more information on how to customize which Ghidra source code commit will be used/compiled, including specifying your own local copy of the Ghidra source.
|
||||
|
||||
## Packaging
|
||||
|
||||
The CMake configuration also supports building packages for SLEIGH. If the `SLEIGH_ENABLE_PACKAGING` option is set during the configuration step, the build step will generate a tarball containing the SLEIGH installation. Additionally, the build will create an RPM package if it finds `rpm` in the `PATH` and/or a DEB package if it finds `dpkg` in the `PATH`.
|
||||
@@ -57,17 +63,14 @@ The CMake configuration also supports building packages for SLEIGH. If the `SLEI
|
||||
For example:
|
||||
|
||||
```sh
|
||||
cmake \
|
||||
-DSLEIGH_ENABLE_PACKAGING=ON \
|
||||
-DCMAKE_INSTALL_PREFIX="<path where SLEIGH will install>" \
|
||||
-G Ninja \
|
||||
..
|
||||
cmake -B build -S . \
|
||||
-DSLEIGH_ENABLE_PACKAGING=ON
|
||||
|
||||
# Build SLEIGH
|
||||
cmake --build .
|
||||
cmake --build build -j
|
||||
|
||||
# Package SLEIGH
|
||||
cmake --build . --target package
|
||||
cmake --build build --target package
|
||||
```
|
||||
|
||||
## API Usage
|
||||
@@ -100,7 +103,7 @@ $ sleigh-lift pcode <path where SLEIGH is installed>/share/sleigh/Processors/x86
|
||||
(register,0x202,1) = INT_EQUAL (unique,0x12d00,1) (const,0x0,1)
|
||||
```
|
||||
|
||||
The `SLEIGH_ENABLE_EXAMPLES` option must be set during the configuration step in order to build `sleigh-lift`.
|
||||
The `SLEIGH_ENABLE_EXAMPLES` option must be set to `ON` during the configuration step in order to build `sleigh-lift`.
|
||||
|
||||
## License
|
||||
|
||||
|
||||
@@ -7,11 +7,9 @@
|
||||
#
|
||||
|
||||
set(PACKAGE_VERSION 1)
|
||||
|
||||
string(REPLACE "." ";" SLEIGH_VERSION_COMPONENTS "${PROJECT_VERSION}")
|
||||
list(GET SLEIGH_VERSION_COMPONENTS 0 CPACK_PACKAGE_VERSION_MAJOR)
|
||||
list(GET SLEIGH_VERSION_COMPONENTS 1 CPACK_PACKAGE_VERSION_MINOR)
|
||||
list(GET SLEIGH_VERSION_COMPONENTS 2 CPACK_PACKAGE_VERSION_PATCH)
|
||||
if("${SLEIGH_GHIDRA_RELEASE_TYPE}" STREQUAL "HEAD")
|
||||
set(PACKAGE_VERSION "DEV.${ghidra_short_commit}")
|
||||
endif()
|
||||
|
||||
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "SLEIGH was designed for the GHIDRA reverse engineering platform and is used to describe microprocessors with enough detail to facilitate two major components of GHIDRA, the disassembly and decompilation engines.")
|
||||
set(CPACK_PACKAGE_NAME "sleigh")
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
From d0b7efa848938b880332a729629c31a724dbf855 Mon Sep 17 00:00:00 2001
|
||||
From: Eric Kilmer <eric.d.kilmer@gmail.com>
|
||||
Date: Mon, 1 Nov 2021 17:10:18 -0400
|
||||
Subject: [PATCH] Fix arg parsing in sleigh C++ test runner
|
||||
|
||||
---
|
||||
Ghidra/Features/Decompiler/src/decompile/cpp/test.cc | 12 +++++++-----
|
||||
1 file changed, 7 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/test.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/test.cc
|
||||
index e81f2564a..7c5557158 100644
|
||||
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/test.cc
|
||||
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/test.cc
|
||||
@@ -85,7 +85,7 @@ int main(int argc, char **argv) {
|
||||
set<string> dataTestNames;
|
||||
string dirname("../datatests");
|
||||
string sleighdirname("../../../../../../..");
|
||||
- if (argc > 0) {
|
||||
+ while (argc > 0) {
|
||||
string command(argv[0]);
|
||||
if (command == "-path") {
|
||||
dirname = argv[1];
|
||||
@@ -109,21 +109,23 @@ int main(int argc, char **argv) {
|
||||
argv += 1;
|
||||
argc -= 1;
|
||||
}
|
||||
- }
|
||||
- if (argc > 0) {
|
||||
- string command(argv[0]);
|
||||
- if (command == "unittests") {
|
||||
+ else if (command == "unittests") {
|
||||
runUnitTests = true;
|
||||
runDataTests = false; // Run only unit tests
|
||||
unitTestNames.insert(argv + 1,argv + argc);
|
||||
+ argv += 1;
|
||||
+ argc -=1;
|
||||
}
|
||||
else if (command == "datatests") {
|
||||
runUnitTests = false; // Run only data-tests
|
||||
runDataTests = true;
|
||||
dataTestNames.insert(argv + 1,argv + argc);
|
||||
+ argv += 1;
|
||||
+ argc -=1;
|
||||
}
|
||||
else {
|
||||
cout << "USAGE: ghidra_test [-path <datatestdir>] [[unittests|datatests] [testname1 testname2 ...]]" << endl;
|
||||
+ return -1;
|
||||
}
|
||||
}
|
||||
startDecompilerLibrary(sleighdirname.c_str());
|
||||
--
|
||||
2.33.1
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
# Ghidra Patches
|
||||
|
||||
This directory contains small patches that should not affect any deployed Ghidra sleigh functionality from its original intent.
|
||||
|
||||
These patches primarily support packaging and testing, or fixing critical issues that prevent building for one reason or another.
|
||||
|
||||
The two directories are detailed below:
|
||||
|
||||
* [`stable`](./stable) --- Patches applied to the officially released _stable_ version of Ghidra.
|
||||
* [`HEAD`](./HEAD) --- Patches applied to Ghidra's newer _HEAD_ commit (as listed in [`../src/setup-ghidra-source.cmake`](../src/setup-ghidra-source.cmake) file).
|
||||
|
||||
See the [`../src/README.md`](../src/README.md) for more details on how these patches are used/applied.
|
||||
@@ -0,0 +1,122 @@
|
||||
set(spec_file_list
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/6502/data/languages/6502.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/6502/data/languages/65c02.slaspec"
|
||||
"${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/coldfire.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/6805/data/languages/6805.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/6805/data/languages/6809.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/mx51.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/8085/data/languages/8085.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/AARCH64/data/languages/AARCH64.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/AARCH64/data/languages/AARCH64BE.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/ARM/data/languages/ARM4_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/ARM/data/languages/ARM4_le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/ARM/data/languages/ARM4t_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/ARM/data/languages/ARM4t_le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/ARM/data/languages/ARM5_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/ARM/data/languages/ARM5_le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/ARM/data/languages/ARM5t_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/ARM/data/languages/ARM5t_le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/ARM/data/languages/ARM6_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/ARM/data/languages/ARM6_le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/ARM/data/languages/ARM7_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/ARM/data/languages/ARM7_le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/ARM/data/languages/ARM8_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/ARM/data/languages/ARM8_le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Atmel/data/languages/avr32a.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Atmel/data/languages/avr8.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Atmel/data/languages/avr8e.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Atmel/data/languages/avr8eind.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Atmel/data/languages/avr8xmega.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/CP1600/data/languages/CP1600.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/CR16/data/languages/CR16B.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/CR16/data/languages/CR16C.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/DATA/data/languages/data-be-64.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/DATA/data/languages/data-le-64.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Dalvik/data/languages/Dalvik_Base.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Dalvik/data/languages/Dalvik_DEX_Android10.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Dalvik/data/languages/Dalvik_DEX_Android11.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Dalvik/data/languages/Dalvik_DEX_KitKat.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Dalvik/data/languages/Dalvik_DEX_Lollipop.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Dalvik/data/languages/Dalvik_DEX_Marshmallow.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Dalvik/data/languages/Dalvik_DEX_Nougat.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Dalvik/data/languages/Dalvik_DEX_Oreo.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Dalvik/data/languages/Dalvik_DEX_Pie.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Dalvik/data/languages/Dalvik_ODEX_KitKat.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/HCS08/data/languages/HC05.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/HCS08/data/languages/HC08.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/HCS08/data/languages/HCS08.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/HCS12/data/languages/HCS12.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/JVM/data/languages/JVM.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/M8C/data/languages/m8c.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/MCS96/data/languages/MCS96.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/MIPS/data/languages/mips32R6be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/MIPS/data/languages/mips32R6le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/MIPS/data/languages/mips32be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/MIPS/data/languages/mips32le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/MIPS/data/languages/mips64be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/MIPS/data/languages/mips64le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PA-RISC/data/languages/pa-risc32be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PIC/data/languages/PIC24E.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PIC/data/languages/PIC24F.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PIC/data/languages/PIC24H.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PIC/data/languages/dsPIC30F.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PIC/data/languages/dsPIC33C.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PIC/data/languages/dsPIC33E.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PIC/data/languages/dsPIC33F.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PIC/data/languages/pic12c5xx.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PIC/data/languages/pic16.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PIC/data/languages/pic16c5x.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PIC/data/languages/pic16f.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PIC/data/languages/pic17c7xx.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PIC/data/languages/pic18.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PowerPC/data/languages/ppc_32_4xx_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PowerPC/data/languages/ppc_32_4xx_le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PowerPC/data/languages/ppc_32_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PowerPC/data/languages/ppc_32_le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PowerPC/data/languages/ppc_32_quicciii_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PowerPC/data/languages/ppc_32_quicciii_le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PowerPC/data/languages/ppc_64_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PowerPC/data/languages/ppc_64_isa_altivec_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PowerPC/data/languages/ppc_64_isa_altivec_le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PowerPC/data/languages/ppc_64_isa_altivec_vle_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PowerPC/data/languages/ppc_64_isa_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PowerPC/data/languages/ppc_64_isa_le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PowerPC/data/languages/ppc_64_isa_vle_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PowerPC/data/languages/ppc_64_le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/RISCV/data/languages/riscv.ilp32d.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/RISCV/data/languages/riscv.lp64d.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Sparc/data/languages/SparcV9_32.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Sparc/data/languages/SparcV9_64.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/SuperH/data/languages/sh-1.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/SuperH/data/languages/sh-2.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/SuperH/data/languages/sh-2a.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/SuperH4/data/languages/SuperH4_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/SuperH4/data/languages/SuperH4_le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/TI_MSP430/data/languages/TI_MSP430.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/TI_MSP430/data/languages/TI_MSP430X.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Toy/data/languages/toy64_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Toy/data/languages/toy64_be_harvard.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Toy/data/languages/toy64_le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Toy/data/languages/toy_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Toy/data/languages/toy_be_posStack.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Toy/data/languages/toy_builder_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Toy/data/languages/toy_builder_be_align2.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Toy/data/languages/toy_builder_le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Toy/data/languages/toy_builder_le_align2.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Toy/data/languages/toy_le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Toy/data/languages/toy_wsz_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Toy/data/languages/toy_wsz_le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/V850/data/languages/V850.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Z80/data/languages/z180.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Z80/data/languages/z80.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/tricore/data/languages/tricore.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/x86/data/languages/x86-64.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/x86/data/languages/x86.slaspec"
|
||||
)
|
||||
@@ -0,0 +1,112 @@
|
||||
set(spec_file_list
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/6502/data/languages/6502.slaspec"
|
||||
"${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/coldfire.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/6805/data/languages/6805.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/6805/data/languages/6809.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/mx51.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/8085/data/languages/8085.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/AARCH64/data/languages/AARCH64.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/AARCH64/data/languages/AARCH64BE.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/ARM/data/languages/ARM4_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/ARM/data/languages/ARM4_le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/ARM/data/languages/ARM4t_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/ARM/data/languages/ARM4t_le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/ARM/data/languages/ARM5_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/ARM/data/languages/ARM5_le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/ARM/data/languages/ARM5t_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/ARM/data/languages/ARM5t_le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/ARM/data/languages/ARM6_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/ARM/data/languages/ARM6_le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/ARM/data/languages/ARM7_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/ARM/data/languages/ARM7_le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/ARM/data/languages/ARM8_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/ARM/data/languages/ARM8_le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Atmel/data/languages/avr32a.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Atmel/data/languages/avr8.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Atmel/data/languages/avr8e.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Atmel/data/languages/avr8eind.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Atmel/data/languages/avr8xmega.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/CP1600/data/languages/CP1600.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/CR16/data/languages/CR16B.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/CR16/data/languages/CR16C.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/DATA/data/languages/data-be-64.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/DATA/data/languages/data-le-64.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Dalvik/data/languages/Dalvik.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/HCS08/data/languages/HC05.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/HCS08/data/languages/HC08.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/HCS08/data/languages/HCS08.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/HCS12/data/languages/HCS12.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/JVM/data/languages/JVM.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/M8C/data/languages/m8c.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/MCS96/data/languages/MCS96.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/MIPS/data/languages/mips32R6be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/MIPS/data/languages/mips32R6le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/MIPS/data/languages/mips32be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/MIPS/data/languages/mips32le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/MIPS/data/languages/mips64be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/MIPS/data/languages/mips64le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PA-RISC/data/languages/pa-risc32be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PIC/data/languages/PIC24E.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PIC/data/languages/PIC24F.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PIC/data/languages/PIC24H.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PIC/data/languages/dsPIC30F.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PIC/data/languages/dsPIC33C.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PIC/data/languages/dsPIC33E.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PIC/data/languages/dsPIC33F.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PIC/data/languages/pic12c5xx.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PIC/data/languages/pic16.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PIC/data/languages/pic16c5x.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PIC/data/languages/pic16f.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PIC/data/languages/pic17c7xx.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PIC/data/languages/pic18.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PowerPC/data/languages/ppc_32_4xx_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PowerPC/data/languages/ppc_32_4xx_le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PowerPC/data/languages/ppc_32_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PowerPC/data/languages/ppc_32_le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PowerPC/data/languages/ppc_32_quicciii_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PowerPC/data/languages/ppc_32_quicciii_le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PowerPC/data/languages/ppc_64_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PowerPC/data/languages/ppc_64_isa_altivec_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PowerPC/data/languages/ppc_64_isa_altivec_le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PowerPC/data/languages/ppc_64_isa_altivec_vle_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PowerPC/data/languages/ppc_64_isa_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PowerPC/data/languages/ppc_64_isa_le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PowerPC/data/languages/ppc_64_isa_vle_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/PowerPC/data/languages/ppc_64_le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/RISCV/data/languages/riscv.ilp32d.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/RISCV/data/languages/riscv.lp64d.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Sparc/data/languages/SparcV9_32.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Sparc/data/languages/SparcV9_64.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/SuperH/data/languages/sh-1.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/SuperH/data/languages/sh-2.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/SuperH/data/languages/sh-2a.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/SuperH4/data/languages/SuperH4_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/SuperH4/data/languages/SuperH4_le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/TI_MSP430/data/languages/TI_MSP430.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/TI_MSP430/data/languages/TI_MSP430X.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Toy/data/languages/toy64_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Toy/data/languages/toy64_be_harvard.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Toy/data/languages/toy64_le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Toy/data/languages/toy_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Toy/data/languages/toy_be_posStack.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Toy/data/languages/toy_builder_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Toy/data/languages/toy_builder_be_align2.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Toy/data/languages/toy_builder_le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Toy/data/languages/toy_builder_le_align2.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Toy/data/languages/toy_le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Toy/data/languages/toy_wsz_be.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Toy/data/languages/toy_wsz_le.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/V850/data/languages/V850.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Z80/data/languages/z180.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Z80/data/languages/z80.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/tricore/data/languages/tricore.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/x86/data/languages/x86-64.slaspec"
|
||||
"${ghidrasource_SOURCE_DIR}/Ghidra/Processors/x86/data/languages/x86.slaspec"
|
||||
)
|
||||
-1
Submodule src deleted from 5b07797cb8
+107
@@ -0,0 +1,107 @@
|
||||
# Ghidra Source code
|
||||
|
||||
This project uses CMake's [FetchContent](https://cmake.org/cmake/help/latest/module/FetchContent.html) module to set up the Ghidra source tree. This means we can apply [patches](../patches) that live only in this repo for small changes to features like packaging or running tests.
|
||||
|
||||
By default, CMake pulls a stable version of Ghidra. You may use a more recent commit by specifying `-DSLEIGH_GHIDRA_RELEASE_TYPE=HEAD` during CMake configuration.
|
||||
|
||||
See the `SLEIGH_GHIDRA_*` CMake cache variable comments for more details on how to customize your Ghidra source checkout.
|
||||
|
||||
## Advanced Usage Notes
|
||||
|
||||
Always reference the [CMake Documentation](https://cmake.org/cmake/help/latest/) for explanation of features and cache variable usages/effects.
|
||||
|
||||
### Using your own Ghidra checkout
|
||||
|
||||
This method is useful for developing new features on top of the latest commits in Ghidra's default branch. If the commit(s) at the tip of Ghidra's default branch are not supported by this repo, we welcome pull requests to update support and pin that commit.
|
||||
|
||||
**Arbitrary Ghidra checkouts are not officially supported.**
|
||||
|
||||
If you want to use your own Ghidra source checkout, then set the following during CMake configuration:
|
||||
|
||||
* `-DSLEIGH_GHIDRA_RELEASE_TYPE=HEAD` if using commits on Ghidra's default branch (`master`) or any branch that may be incompatible with the current stable version.
|
||||
|
||||
* `-DFETCHCONTENT_SOURCE_DIR_GHIDRASOURCE=<path to your own Ghidra source>`. Remember, no existing [patches](../patches/HEAD) will be applied to your own source directory.
|
||||
|
||||
```bash
|
||||
git clone https://github.com/NationalSecurityAgency/ghidra src/ghidra
|
||||
|
||||
cmake -B build-dev-head -S . \
|
||||
-DSLEIGH_GHIDRA_RELEASE_TYPE=HEAD \
|
||||
-DFETCHCONTENT_SOURCE_DIR_GHIDRASOURCE="$(pwd)/src/ghidra"
|
||||
```
|
||||
|
||||
### Reusing Downloaded Ghidra Source
|
||||
|
||||
If you want to share a single Ghidra source checkout/clone for multiple build directories, the [_FetchContent Base Directory_](https://cmake.org/cmake/help/latest/module/FetchContent.html#variable:FETCHCONTENT_BASE_DIR) (`FETCHCONTENT_BASE_DIR`) should encode the build generator name and be located outside of the build directory (the name would look something like `cmake_fc_ghidra_${SLEIGH_GHIDRA_RELEASE_TYPE}_${CMAKE_GENERATOR}`).
|
||||
|
||||
Initially, this means that every new build generator used for building the project will have to re-download the ghidra source tree, but any subsequent run with an already-initialize generator should be faster and skip the download.
|
||||
|
||||
```bash
|
||||
$ cmake -B build-release -S . -G Ninja \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DFETCHCONTENT_BASE_DIR=./src/cmake_fc_ghidra_stable_Ninja
|
||||
-- Using Ghidra version 10.0.4 at commit 5b07797
|
||||
-- Populating ghidrasource
|
||||
-- Configuring done
|
||||
-- Generating done
|
||||
-- Build files have been written to: /Users/me/sleigh/src/cmake_fc_ghidra_stable_Ninja/ghidrasource-subbuild
|
||||
[1/9] Creating directories for 'ghidrasource-populate'
|
||||
[1/9] Performing download step (git clone) for 'ghidrasource-populate'
|
||||
Cloning into 'ghidrasource-src'...
|
||||
remote: Enumerating objects: 129964, done.
|
||||
remote: Counting objects: 100% (4238/4238), done.
|
||||
remote: Compressing objects: 100% (1889/1889), done.
|
||||
remote: Total 129964 (delta 2078), reused 3993 (delta 2038), pack-reused 125726
|
||||
Receiving objects: 100% (129964/129964), 172.50 MiB | 15.10 MiB/s, done.
|
||||
Resolving deltas: 100% (79637/79637), done.
|
||||
HEAD is now at 5b07797cb Updated 10.0.4 Change History
|
||||
[2/9] Performing update step for 'ghidrasource-populate'
|
||||
[4/9] No patch step for 'ghidrasource-populate'
|
||||
[5/9] No configure step for 'ghidrasource-populate'
|
||||
[6/9] No build step for 'ghidrasource-populate'
|
||||
[7/9] No install step for 'ghidrasource-populate'
|
||||
[8/9] No test step for 'ghidrasource-populate'
|
||||
[9/9] Completed 'ghidrasource-populate'
|
||||
-- Ghidra source located at '/Users/me/sleigh/src/cmake_fc_ghidra_stable_Ninja/ghidrasource-src'
|
||||
-- The C compiler identification is AppleClang 13.0.0.13000029
|
||||
-- The CXX compiler identification is AppleClang 13.0.0.13000029
|
||||
...
|
||||
|
||||
$ cmake -B build-debug -S . -G Ninja \
|
||||
-DCMAKE_BUILD_TYPE=Debug \
|
||||
-DFETCHCONTENT_BASE_DIR=./src/cmake_fc_ghidra_stable_Ninja
|
||||
-- Using Ghidra version 10.0.4 at commit 5b07797
|
||||
-- Populating ghidrasource
|
||||
-- Configuring done
|
||||
-- Generating done
|
||||
-- Build files have been written to: /Users/me/sleigh/src/cmake_fc_ghidra_stable_Ninja/ghidrasource-subbuild
|
||||
[0/7] Performing update step for 'ghidrasource-populate'
|
||||
[2/7] No patch step for 'ghidrasource-populate'
|
||||
[3/7] No configure step for 'ghidrasource-populate'
|
||||
[4/7] No build step for 'ghidrasource-populate'
|
||||
[5/7] No install step for 'ghidrasource-populate'
|
||||
[6/7] No test step for 'ghidrasource-populate'
|
||||
[7/7] Completed 'ghidrasource-populate'
|
||||
-- Ghidra source located at '/Users/me/sleigh/src/cmake_fc_ghidra_stable_Ninja/ghidrasource-src'
|
||||
-- The C compiler identification is AppleClang 13.0.0.13000029
|
||||
-- The CXX compiler identification is AppleClang 13.0.0.13000029
|
||||
...
|
||||
```
|
||||
|
||||
The above also works when using `HEAD` commit of Ghidra.
|
||||
|
||||
```bash
|
||||
$ cmake -B build-head-release -S . -G Ninja \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DSLEIGH_GHIDRA_RELEASE_TYPE=HEAD \
|
||||
-DFETCHCONTENT_BASE_DIR=./src/cmake_fc_ghidra_HEAD_Ninja
|
||||
...
|
||||
|
||||
$ cmake -B build-head-debug -S . -G Ninja \
|
||||
-DCMAKE_BUILD_TYPE=Debug \
|
||||
-DSLEIGH_GHIDRA_RELEASE_TYPE=HEAD \
|
||||
-DFETCHCONTENT_BASE_DIR=./src/cmake_fc_ghidra_HEAD_Ninja
|
||||
...
|
||||
```
|
||||
|
||||
This setup is nice if you want to clear the project build directories but don't want to re-download Ghidra source code every time. However, to be safe, you should remove these directories if you change the Ghidra git commit SHA of stable or HEAD.
|
||||
@@ -0,0 +1,54 @@
|
||||
# ---- Setup Ghidra Source code ----
|
||||
|
||||
# Set up Ghidra repo human-readable version settings
|
||||
set(SLEIGH_GHIDRA_RELEASE_TYPE "stable" CACHE
|
||||
STRING "Ghidra 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_GHIDRA_RELEASE_TYPE PROPERTY STRINGS "stable" "HEAD")
|
||||
|
||||
# **** Setup pinned git info ****
|
||||
|
||||
# Ghidra pinned stable version commit
|
||||
set(ghidra_version "10.0.4")
|
||||
set(ghidra_git_tag "5b07797cb859d8801ca3a1e08bda1321ca3ce002")
|
||||
# pinned stable patches list
|
||||
set(ghidra_patches "")
|
||||
|
||||
# Ghidra pinned commits used for pinning last known working HEAD commit
|
||||
if("${SLEIGH_GHIDRA_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_version "10.1")
|
||||
set(ghidra_git_tag "55b8fcf7d4aeaca37ffb5c947340915d69c84224")
|
||||
set(ghidra_patches
|
||||
PATCH_COMMAND git am --ignore-space-change --ignore-whitespace --no-gpg-sign
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/patches/HEAD/0001-Fix-arg-parsing-in-sleigh-C-test-runner.patch"
|
||||
)
|
||||
endif()
|
||||
|
||||
string(SUBSTRING "${ghidra_git_tag}" 0 7 ghidra_short_commit)
|
||||
|
||||
message(STATUS "Using Ghidra version ${ghidra_version} at commit ${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
|
||||
${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()
|
||||
Reference in New Issue
Block a user