5af28808 Update Auto-Sync to Python 3.13 and tree-sitter-py 24.0 (#2705) 99f018ac Python binding: (#2742) a07baf83 Auto-Sync update Sparc LLVM-18 (#2704) 81c5c93d Enable to generate legacy MC tests for the fuzzer. (#2733) a25d4980 Add warning about naive search and replace to patch reg names. (#2728) 7ac87d17 Print immediate only memory operands for AArch64. (#2732) c34034c8 Add x30 implicit read to the RET alias. (#2739) 95a4ca3e Update source list before installing valgrind. (#2730) 6909724e Make assertion hit warnings optional in release builds. (#2729) fe6bdc6e Make SStream respect the CS_OPT_UNSIGNED flag. (#2723) 21ce3624 Use cs_ac_type for operand access mode in all arches and use cs_xtensa_op_type for Xtensa operand type (#2721) df26583f clang-format: change license to BSD-3-Clause (#2724) 280b749e Remove unused files. (#2709) 87908ece Add flag for the SoftFail case of the LLVM disassembler. (#2707) efc0ba44 Fix missing operand for smstart, due to space replaced by tab (#2720) 2ae64133 Fix missing sp register read in ret instruction (#2719) 8df252a6 Fix arm pop reg access (#2718) 14612272 ARM: fix typo, cspr -> cpsr (#2716) f2f0a3c3 Fix LoongArch ld/st instructions register info (#2701) 829be2bf LoongArch: Compute absolute address for address operand (#2699) 42fbce6c Add jump group for generic jirl (#2698) fc525c73 Apple AArch64 proprietary (#2692) 895f2f2e Build PDB for debugging on Windows (#2685) 5c3aef03 Version: Update to v6.0.0-alpha4 (#2682) 106f7d3b Update read/written registers for x87 comparison instructions (#2680) ebe3ef2a Add workflow for building on Windows (#2675) 72f7d305 Revert "Add a script to compare the inc file content with the latest generate…" (#2678) 5b5c5ed8 Fix nanomips decoding of jalrc (#2672) ae03cca4 Mips32r6_64r632 is for both mips32r6 and mips64r6 (#2673) 21178aea Add a script to compare the inc file content with the latest generated ones. (#2667) 81a6ba03 MIPS: Fix MIPS16 decoding, wrong flags and ghost registers (#2665) 98a393e3 Stringify BH fields when printing ppc details (#2663) 2607d0f3 Remove undefined constants in riscv_const.py (#2660) (#2661) 5058c634 Decode BH field in print_insn_detail_ppc (#2662) 6461ed08 Add Call group to svc, smc and hvc. (#2651) e2f1dc8d Tms32c64x Little Endian (#2648) 5464c91d Fix build for compilers requiring explicit static for inline functions.. (#2645) bb2f6579 Enhance shift value and types of shift instructions. (#2638) cd282ef5 Update operand type enums of all arch modules to the one in `capstone.h` (#2633) dc0c0909 cmake: Fix building capstone as sub-project (#2629) cd8dd20c - Added missing files for sdist archive (#2624) 9affd99b Give the user some guidance where to add missing enumeration values. (#2639) 1bea3fab Add checks for MIPS details on cstest_py (#2640) ace8056c Add aliases mapping for MIPS & test for id, alias_id (#2635) 1abe1868 Build Tarball before DEB/RPM package. (#2627) 0a012190 Switch to ubuntu-24.04-arm runner image (#2625) 4e0b8c48 Fix wrong version requirement of tricore instructions: (#2620) 8ac2843b chore(version): Update Version to 6.0.0-Alpha3 (#2616) d7ef910b Rebased #2570 (#2614) c831cd5e Fix SystemZ macro in Makefile (#2603) 30601176 Apply new EVM opcode updates (#2602) 3c4d7fc8 Add tricore tc1.8 instructions (#2595) 5f290cad Create debian and rpm package on releases (#2590) 0f09210a delete travis (#2600) 5c5f756f Downgrade labeler to v4 due to https://github.com/actions/labeler/issues/710. (#2598) git-subtree-dir: external/capstone git-subtree-split: 5af288083e9f03e32723f9708c305692f866b666
216 lines
7.0 KiB
YAML
216 lines
7.0 KiB
YAML
name: Run Test
|
|
on:
|
|
push:
|
|
paths-ignore:
|
|
- ".gitignore"
|
|
- "docs/**"
|
|
- "ChangeLog"
|
|
- "CREDITS.TXT"
|
|
- "COMPILE_MAKE.TXT"
|
|
- "BUILDING.md"
|
|
- "CONTRIBUTING.md"
|
|
- "LICENSE.TXT"
|
|
- "LICENSE_LLVM.TXT"
|
|
- "README.md"
|
|
- "RELEASE_NOTES"
|
|
- "SPONSORS.TXT"
|
|
- "TODO"
|
|
pull_request:
|
|
|
|
# Stop previous runs on the same branch on new push
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
env:
|
|
CI: true
|
|
UBSAN_OPTIONS: "halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1"
|
|
ASAN_OPTIONS: "halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1"
|
|
LSAN_OPTIONS: "halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1"
|
|
|
|
jobs:
|
|
Linux:
|
|
runs-on: ${{ matrix.config.os }}
|
|
name: ${{ matrix.config.name }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
config:
|
|
- {
|
|
name: 'ubuntu-22.04 x64 make',
|
|
os: ubuntu-22.04,
|
|
arch: x64,
|
|
build-system: 'make',
|
|
diet-build: 'OFF',
|
|
enable-asan: 'OFF'
|
|
}
|
|
- {
|
|
name: 'ubuntu-22.04 x64 cmake',
|
|
os: ubuntu-22.04,
|
|
arch: x64,
|
|
build-system: 'cmake',
|
|
diet-build: 'OFF',
|
|
enable-asan: 'OFF',
|
|
build_type: 'Debug'
|
|
}
|
|
- {
|
|
name: 'ubuntu-22.04 x64 release - assert warn',
|
|
os: ubuntu-22.04,
|
|
arch: x64,
|
|
build-system: 'cmake',
|
|
diet-build: 'OFF',
|
|
enable-asan: 'OFF',
|
|
build_type: 'Release',
|
|
build_options: '-DCAPSTONE_ASSERTION_WARNINGS=ON'
|
|
}
|
|
- {
|
|
name: 'ubuntu-22.04 x64 release - no asserts',
|
|
os: ubuntu-22.04,
|
|
arch: x64,
|
|
build-system: 'cmake',
|
|
diet-build: 'OFF',
|
|
enable-asan: 'OFF',
|
|
build_type: 'Release',
|
|
build_options: '-DCAPSTONE_ASSERTION_WARNINGS=OFF'
|
|
}
|
|
- {
|
|
name: 'ubuntu-24.04 x64 ASAN',
|
|
os: ubuntu-24.04,
|
|
arch: x64,
|
|
build-system: 'cmake',
|
|
diet-build: 'OFF',
|
|
enable-asan: 'ON',
|
|
build_type: 'Debug'
|
|
}
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Python
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: ${{ matrix.config.python-version }}
|
|
|
|
- name: Prepare fuzzing
|
|
run: |
|
|
export LD_LIBRARY_PATH=`pwd`/tests/:$LD_LIBRARY_PATH
|
|
wget https://github.com/groundx/capstonefuzz/raw/master/corpus/corpus-libFuzzer-capstone_fuzz_disasmnext-latest.zip
|
|
unzip -q corpus-libFuzzer-capstone_fuzz_disasmnext-latest.zip -d suite/fuzz
|
|
|
|
- name: make
|
|
if: startsWith(matrix.config.build-system, 'make')
|
|
run: |
|
|
./make.sh
|
|
sudo make install
|
|
|
|
- name: cmake
|
|
if: startsWith(matrix.config.build-system, 'cmake')
|
|
env:
|
|
asan: ${{ matrix.config.enable-asan }}
|
|
build_option: ${{ matrix.config.build_option }}
|
|
build_type: ${{ matrix.config.build_type }}
|
|
run: |
|
|
mkdir build && cd build
|
|
# build static library
|
|
cmake -DCAPSTONE_INSTALL=1 -DCMAKE_INSTALL_PREFIX=/usr -DENABLE_ASAN=${asan} -DCAPSTONE_BUILD_DIET=${diet_build} ${build_option} ..
|
|
cmake --build . --config ${build_type}
|
|
# build shared library
|
|
cmake -DCAPSTONE_INSTALL=1 -DCAPSTONE_BUILD_SHARED_LIBS=1 -DCMAKE_INSTALL_PREFIX=/usr -DCAPSTONE_BUILD_CSTEST=ON -DENABLE_ASAN=${asan} ${build_option} ..
|
|
sudo cmake --build . --config ${build_type} --target install
|
|
|
|
- name: Lower number of KASL randomized address bits
|
|
run: |
|
|
# Work-around ASAN bug https://github.com/google/sanitizers/issues/1716
|
|
sudo sysctl vm.mmap_rnd_bits=28
|
|
|
|
- name: unit tests
|
|
if: startsWith(matrix.config.build-system, 'cmake')
|
|
run: |
|
|
ctest --test-dir build --output-on-failure -R unit_*
|
|
|
|
- name: "Integration tests"
|
|
if: startsWith(matrix.config.build-system, 'cmake') && matrix.config.diet-build == 'OFF'
|
|
run: |
|
|
ctest --test-dir build --output-on-failure -R integration_*
|
|
|
|
- name: cstool - reaches disassembler engine
|
|
run: |
|
|
sh suite/run_invalid_cstool.sh
|
|
|
|
- name: cstest MC
|
|
if: startsWith(matrix.config.build-system, 'cmake')
|
|
run: |
|
|
ctest --test-dir build --output-on-failure -R MCTests
|
|
|
|
- name: cstest details
|
|
if: startsWith(matrix.config.build-system, 'cmake')
|
|
run: |
|
|
ctest --test-dir build --output-on-failure -R DetailTests
|
|
|
|
- name: cstest issues
|
|
if: startsWith(matrix.config.build-system, 'cmake')
|
|
run: |
|
|
ctest --test-dir build --output-on-failure -R IssueTests
|
|
|
|
- name: cstest features
|
|
if: startsWith(matrix.config.build-system, 'cmake')
|
|
run: |
|
|
ctest --test-dir build --output-on-failure -R FeaturesTests
|
|
|
|
- name: Legacy integration tests
|
|
if: startsWith(matrix.config.build-system, 'cmake')
|
|
run: |
|
|
ctest --test-dir build --output-on-failure -R legacy*
|
|
|
|
- name: Valgrind cstest
|
|
if: startsWith(matrix.config.build-system, 'cmake') && startsWith(matrix.config.enable-asan, 'OFF')
|
|
run: |
|
|
sudo apt-get -y update
|
|
sudo apt-get -y install valgrind
|
|
valgrind cstest tests
|
|
|
|
- name: Comaptibility header generation
|
|
if: startsWith(matrix.config.build-system, 'cmake')
|
|
run: |
|
|
cp ./include/capstone/arm64.h arm64_compat_current.h
|
|
cp ./include/capstone/systemz_compatibility.h systemz_compat_current.h
|
|
./suite/auto-sync/src/autosync/HeaderPatcher.py -c --v6 ./include/capstone/aarch64.h --v5 ./include/capstone/arm64.h
|
|
./suite/auto-sync/src/autosync/HeaderPatcher.py -c --v6 ./include/capstone/systemz.h --v5 ./include/capstone/systemz_compatibility.h
|
|
diff ./include/capstone/arm64.h arm64_compat_current.h &&
|
|
diff ./include/capstone/systemz_compatibility.h systemz_compat_current.h
|
|
|
|
Windows:
|
|
runs-on: ${{ matrix.config.os }}
|
|
name: ${{ matrix.config.name }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
config:
|
|
- name: 'windows x64 MSVC 64bit'
|
|
os: windows-latest
|
|
arch: x64
|
|
platform: windows
|
|
python-arch: x64
|
|
python-version: '3.9'
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: lukka/get-cmake@latest
|
|
name: Get CMake
|
|
|
|
- name: '🛠️ Win MSVC 64 setup'
|
|
if: contains(matrix.config.name, 'MSVC 64')
|
|
uses: ilammy/msvc-dev-cmd@v1
|
|
with:
|
|
arch: 'x64'
|
|
|
|
- name: '🚧 Win MSVC 64 build'
|
|
if: contains(matrix.config.name, 'MSVC 64')
|
|
shell: bash
|
|
run: |
|
|
cmake --version
|
|
cmake --preset=${{ matrix.config.platform }}-x64
|
|
cmake --build --preset build-${{ matrix.config.platform }}-release
|
|
cmake --build --preset install-${{ matrix.config.platform }}-release
|