From 51a2cd04bff130d676595679355a5eec40f7c9da Mon Sep 17 00:00:00 2001 From: pancake Date: Fri, 29 May 2026 19:16:44 +0200 Subject: [PATCH 1/8] Crossbuilds for big endian --- .github/workflows/CrossBuilds.yml | 246 ++++++++++++++++++++++++++++++ suite/cstest/issues.cs | 20 +++ 2 files changed, 266 insertions(+) create mode 100644 .github/workflows/CrossBuilds.yml diff --git a/.github/workflows/CrossBuilds.yml b/.github/workflows/CrossBuilds.yml new file mode 100644 index 0000000000..5785921847 --- /dev/null +++ b/.github/workflows/CrossBuilds.yml @@ -0,0 +1,246 @@ +name: Cross Build Tests +on: + push: + paths-ignore: + - ".gitignore" + - "docs/**" + - "ChangeLog" + - "CREDITS.TXT" + - "COMPILE.TXT" + - "COMPILE_CMAKE.TXT" + - "COMPILE_MSVC.TXT" + - "HACK.TXT" + - "LICENSE.TXT" + - "LICENSE_LLVM.TXT" + - "README.md" + - "RELEASE_NOTES" + - "SPONSORS.TXT" + 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: 'QEMU Linux s390x', + os: ubuntu-24.04, + system: 'Linux', + processor: 's390x', + cc: 's390x-linux-gnu-gcc', + cxx: 's390x-linux-gnu-g++', + sysroot: '/usr/s390x-linux-gnu', + qemu: 'qemu-s390x-static', + build_type: 'Debug', + packages: 'gcc-s390x-linux-gnu g++-s390x-linux-gnu binutils-s390x-linux-gnu libc6-dev-s390x-cross qemu-user-static', + build_tests: 'ON', + diet_build: 'OFF', + toolchain_file: 'build/toolchain.cmake', + } + - { + name: 'QEMU Linux MIPS 32 BE', + os: ubuntu-24.04, + system: 'Linux', + processor: 'mips', + cc: 'mips-linux-gnu-gcc', + cxx: 'mips-linux-gnu-g++', + sysroot: '/usr/mips-linux-gnu', + qemu: 'qemu-mips-static', + build_type: 'Debug', + packages: 'gcc-mips-linux-gnu g++-mips-linux-gnu binutils-mips-linux-gnu libc6-dev-mips-cross qemu-user-static', + build_tests: 'ON', + diet_build: 'OFF', + toolchain_file: 'build/toolchain.cmake', + } + - { + name: 'QEMU Linux Mips64el', + os: ubuntu-24.04, + system: 'Linux', + processor: 'mips64el', + cc: 'mips64el-linux-gnuabi64-gcc', + cxx: 'mips64el-linux-gnuabi64-g++', + sysroot: '/usr/mips64el-linux-gnuabi64', + qemu: 'qemu-mips64el-static', + build_type: 'Debug', + packages: 'gcc-mips64el-linux-gnuabi64 g++-mips64el-linux-gnuabi64 binutils-mips64el-linux-gnuabi64 libc6-dev-mips64el-cross qemu-user-static', + build_tests: 'ON', + diet_build: 'OFF', + toolchain_file: 'build/toolchain.cmake', + } + - { + name: 'QEMU Linux PPC64', + os: ubuntu-24.04, + system: 'Linux', + processor: 'ppc64', + cc: 'powerpc64-linux-gnu-gcc', + cxx: 'powerpc64-linux-gnu-g++', + sysroot: '/usr/powerpc64-linux-gnu', + qemu: 'qemu-ppc64-static', + build_type: 'Debug', + packages: 'gcc-powerpc64-linux-gnu g++-powerpc64-linux-gnu binutils-powerpc64-linux-gnu libc6-dev-ppc64-cross qemu-user-static', + build_tests: 'ON', + diet_build: 'OFF', + toolchain_file: 'build/toolchain.cmake', + } + - { + name: 'QEMU Linux ARM', + os: ubuntu-24.04, + system: 'Linux', + processor: 'arm', + cc: 'arm-linux-gnueabihf-gcc', + cxx: 'arm-linux-gnueabihf-g++', + sysroot: '/usr/arm-linux-gnueabihf', + qemu: 'qemu-arm-static', + build_type: 'Debug', + packages: 'gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf binutils-arm-linux-gnueabihf libc6-armhf-cross libc6-dev-armhf-cross qemu-user-static', + build_tests: 'ON', + diet_build: 'OFF', + toolchain_file: 'build/toolchain.cmake', + } + - { + name: '[BUILD ONLY] Windows i686 mingw', + os: ubuntu-24.04, + system: 'Windows', + processor: 'i686', + cc: 'i686-w64-mingw32-gcc', + cxx: 'i686-w64-mingw32-g++', + rc: 'i686-w64-mingw32-windres', + find_root: '/usr/i686-w64-mingw32', + build_type: 'Debug', + skip_tests: true, + packages: 'gcc-mingw-w64-i686 g++-mingw-w64-i686 mingw-w64-tools', + build_tests: 'OFF', + diet_build: 'OFF', + toolchain_file: 'build/toolchain.cmake', + } + - { + name: '[BUILD ONLY] Android 35 (arm64_v8a) NDK 29', + os: ubuntu-24.04, + system: 'Android', + processor: 'aarch64', + build_option: '-DANDROID_PLATFORM=android-35 -DANDROID_ABI=arm64-v8a', + build_type: 'Debug', + # QEMU alone can't emulate the binaries, because the NDK doesn't + # provide dynamic linker. + skip_tests: true, + packages: 'qemu-user-static unzip wget', + ndk_version: 'r29', + build_tests: 'OFF', + diet_build: 'OFF', + toolchain_file: 'ndk/build/cmake/android.toolchain.cmake', + } + + steps: + - uses: actions/checkout@v4 + + - name: Install cross build dependencies + if: ${{ matrix.config.packages != '' }} + env: + packages: ${{ matrix.config.packages }} + run: | + sudo apt-get update + sudo apt-get install -y ${packages} + + - name: Setup Android NDK + if: contains(matrix.config.name, 'Android') + env: + ndk_version: ${{ matrix.config.ndk_version }} + run: | + wget -q https://dl.google.com/android/repository/android-ndk-${ndk_version}-linux.zip + unzip -q android-ndk-${ndk_version}-linux.zip + mv android-ndk-${ndk_version} ndk + cat ndk/source.properties + + - name: Write CMake cross toolchain + if: ${{ !contains(matrix.config.name, 'Android') }} + env: + system: ${{ matrix.config.system }} + processor: ${{ matrix.config.processor }} + cc: ${{ matrix.config.cc }} + cxx: ${{ matrix.config.cxx }} + rc: ${{ matrix.config.rc }} + find_root: ${{ matrix.config.find_root }} + sysroot: ${{ matrix.config.sysroot }} + qemu: ${{ matrix.config.qemu }} + run: | + mkdir -p build + { + echo "set(CMAKE_SYSTEM_NAME ${system})" + echo "set(CMAKE_SYSTEM_PROCESSOR ${processor})" + echo "set(CMAKE_C_COMPILER ${cc})" + echo "set(CMAKE_CXX_COMPILER ${cxx})" + echo "set(CMAKE_ASM_COMPILER ${cc})" + if [ -n "${rc}" ]; then + echo "set(CMAKE_RC_COMPILER ${rc})" + fi + if [ -n "${find_root}" ]; then + echo "set(CMAKE_FIND_ROOT_PATH ${find_root})" + fi + echo "set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)" + echo "set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)" + echo "set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)" + if [ "${system}" = "Linux" ]; then + echo "set(CMAKE_SYSROOT ${sysroot}/usr)" + echo "set(CMAKE_CROSSCOMPILING_EMULATOR ${qemu};-L;${sysroot})" + fi + } > build/toolchain.cmake + + - name: cmake (cross build) + env: + build_option: ${{ matrix.config.build_option }} + build_type: ${{ matrix.config.build_type }} + build_tests: ${{ matrix.config.build_tests }} + diet_build: ${{ matrix.config.diet_build }} + toolchain_file: ${{ matrix.config.toolchain_file }} + run: | + cmake -DCMAKE_BUILD_TYPE=${build_type} \ + -DBUILD_STATIC_LIBS=ON \ + -DBUILD_SHARED_LIBS=OFF \ + -DCAPSTONE_BUILD_TESTS=${build_tests} \ + -DCAPSTONE_BUILD_CSTOOL=ON \ + -DCAPSTONE_BUILD_CSTEST=OFF \ + -S . \ + -DCAPSTONE_BUILD_DIET=${diet_build} \ + -DCMAKE_TOOLCHAIN_FILE=${toolchain_file} \ + ${build_option} \ + -B build + cmake --build build --config ${build_type} --parallel + + - name: C tests + if: ${{ matrix.config.skip_tests != true }} + run: | + ctest --test-dir build --output-on-failure -R '^capstone_' + + - name: cstool regressions + if: ${{ matrix.config.skip_tests != true }} + env: + qemu: ${{ matrix.config.qemu }} + sysroot: ${{ matrix.config.sysroot }} + run: | + check_cstool() { + expected=$1 + shift + output="$(${qemu} -L "${sysroot}" build/cstool "$@")" + echo "${output}" + grep -F "${expected}" <<< "${output}" + } + + check_cstool 'ori.l #$12345678, d0' m68k40 008012345678 + check_cstool 'jsr $12345678.l' m68k40 4eb912345678 + check_cstool 'jsr $1234.w' m68k40 4eb81234 + check_cstool 'dc.w $ffff' m68k40 ffff + check_cstool 'mov esi, dword ptr [rdx + rax*4]' x64 8b3482 0 diff --git a/suite/cstest/issues.cs b/suite/cstest/issues.cs index 5aee561a49..9dd16c855b 100644 --- a/suite/cstest/issues.cs +++ b/suite/cstest/issues.cs @@ -253,6 +253,22 @@ 0xf2,0x1f,0x54,0x80 == fmove.d (a7)+, fp1 0x4e,0x75 == rts +!# issue M68K printer integer immediates on 32-bit big endian hosts +!# CS_ARCH_M68K, CS_MODE_BIG_ENDIAN | CS_MODE_M68K_040, None +0x00,0x80,0x12,0x34,0x56,0x78 == ori.l #$12345678, d0 + +!# issue M68K printer absolute long addresses on 32-bit big endian hosts +!# CS_ARCH_M68K, CS_MODE_BIG_ENDIAN | CS_MODE_M68K_040, None +0x4e,0xb9,0x12,0x34,0x56,0x78 == jsr $12345678.l + +!# issue M68K printer absolute short addresses on 32-bit big endian hosts +!# CS_ARCH_M68K, CS_MODE_BIG_ENDIAN | CS_MODE_M68K_040, None +0x4e,0xb8,0x12,0x34 == jsr $1234.w + +!# issue M68K printer invalid words on 32-bit big endian hosts +!# CS_ARCH_M68K, CS_MODE_BIG_ENDIAN | CS_MODE_M68K_040, None +0xff,0xff == dc.w $ffff + !# issue 1661 M68K invalid transfer direction in MOVEC instruction !# CS_ARCH_M68K, CS_MODE_BIG_ENDIAN | CS_MODE_M68K_040, None 0x4E,0x7A,0x00,0x02 == movec cacr, d0 @@ -627,6 +643,10 @@ !# CS_ARCH_X86, CS_MODE_64, CS_OPT_DETAIL 0x0: 0x0f,0x94,0x44,0x24,0x1f == sete byte ptr [rsp + 0x1f] ; Prefix:0x00 0x00 0x00 0x00 ; Opcode:0x0f 0x94 0x00 0x00 ; rex: 0x0 ; addr_size: 8 ; modrm: 0x44 ; disp: 0x1f ; sib: 0x24 ; sib_base: rsp ; sib_scale: 1 ; op_count: 1 ; operands[0].type: MEM ; operands[0].mem.base: REG = rsp ; operands[0].mem.disp: 0x1f ; operands[0].size: 1 ; operands[0].access: WRITE ; Registers read: rflags rsp ; EFLAGS: TEST_ZF +!# issue x86 SIB scale is encoded as log2(scale) +!# CS_ARCH_X86, CS_MODE_64, None +0x0: 0x8b,0x34,0x82 == mov esi, dword ptr [rdx + rax*4] + !# issue 1263 !# CS_ARCH_X86, CS_MODE_64, None 0x0: 0x67,0x48,0x89,0x18 == mov qword ptr [eax], rbx From e18cb960eaee3fbb3fc60c5d72f92d13c5cb8f46 Mon Sep 17 00:00:00 2001 From: pancake Date: Fri, 29 May 2026 19:20:34 +0200 Subject: [PATCH 2/8] Fix warnings in the tests --- tests/test_arm64.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/tests/test_arm64.c b/tests/test_arm64.c index f4651fc599..651434286a 100644 --- a/tests/test_arm64.c +++ b/tests/test_arm64.c @@ -248,11 +248,11 @@ void test_macros() { detail.arm64 = arm64_detail; CS_aarch64_op() op = { 0 }; detail.CS_aarch64_.operands[0] = op; - CS_aarch64_reg() reg = 1; - CS_aarch64_cc() cc = ARM64_CC_AL; - CS_aarch64_extender() arm64_extender = ARM64_EXT_SXTB; - CS_aarch64_shifter() arm64_shifter = ARM64_SFT_LSL; - CS_aarch64_vas() arm64_vas = ARM64_VAS_16B; + (void)(CS_aarch64_reg())1; + (void)(CS_aarch64_cc())ARM64_CC_AL; + (void)(CS_aarch64_extender())ARM64_EXT_SXTB; + (void)(CS_aarch64_shifter())ARM64_SFT_LSL; + (void)(CS_aarch64_vas())ARM64_VAS_16B; } int main() @@ -262,4 +262,3 @@ int main() return 0; } - From f917bff05d97f7d6bb6e05e9b8d1c1e4781e36c1 Mon Sep 17 00:00:00 2001 From: pancake Date: Fri, 29 May 2026 19:22:04 +0200 Subject: [PATCH 3/8] Fix m68k disassembler UB on 32bit hosts --- arch/M68K/M68KInstPrinter.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/arch/M68K/M68KInstPrinter.c b/arch/M68K/M68KInstPrinter.c index 061edb30a7..2e1548fdba 100644 --- a/arch/M68K/M68KInstPrinter.c +++ b/arch/M68K/M68KInstPrinter.c @@ -154,8 +154,8 @@ static void printAddressingMode(SStream* O, unsigned int pc, const cs_m68k* inst case M68K_AM_REGI_ADDR_PRE_DEC: SStream_concat(O, "-(a%d)", (op->reg - M68K_REG_A0)); break; case M68K_AM_REGI_ADDR_DISP: SStream_concat(O, "%s$%x(a%d)", op->mem.disp < 0 ? "-" : "", abs(op->mem.disp), (op->mem.base_reg - M68K_REG_A0)); break; case M68K_AM_PCI_DISP: SStream_concat(O, "$%x(pc)", pc + 2 + op->mem.disp); break; - case M68K_AM_ABSOLUTE_DATA_SHORT: SStream_concat(O, "$%x.w", op->imm); break; - case M68K_AM_ABSOLUTE_DATA_LONG: SStream_concat(O, "$%x.l", op->imm); break; + case M68K_AM_ABSOLUTE_DATA_SHORT: SStream_concat(O, "$%x.w", (unsigned int)op->imm); break; + case M68K_AM_ABSOLUTE_DATA_LONG: SStream_concat(O, "$%x.l", (unsigned int)op->imm); break; case M68K_AM_IMMEDIATE: if (inst->op_size.type == M68K_SIZE_TYPE_FPU) { #if defined(_KERNEL_MODE) @@ -172,7 +172,7 @@ static void printAddressingMode(SStream* O, unsigned int pc, const cs_m68k* inst break; #endif } - SStream_concat(O, "#$%x", op->imm); + SStream_concat(O, "#$%x", (unsigned int)op->imm); break; case M68K_AM_PCI_INDEX_8_BIT_DISP: SStream_concat(O, "$%x(pc,%s%s.%c)", pc + 2 + op->mem.disp, s_spacing, getRegName(op->mem.index_reg), op->mem.index_size ? 'l' : 'w'); @@ -287,7 +287,7 @@ void M68K_printInst(MCInst* MI, SStream* O, void* PrinterInfo) if (MI->Opcode == M68K_INS_INVALID) { if (ext->op_count) - SStream_concat(O, "dc.w $%x", ext->operands[0].imm); + SStream_concat(O, "dc.w $%x", (unsigned int)ext->operands[0].imm); else SStream_concat(O, "dc.w $"); return; From cf503d089e68517d191650f74ec0459ba320b2c5 Mon Sep 17 00:00:00 2001 From: pancake Date: Fri, 29 May 2026 19:27:07 +0200 Subject: [PATCH 4/8] Fix the same bug for mos65xx --- arch/MOS65XX/MOS65XXDisassembler.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/arch/MOS65XX/MOS65XXDisassembler.c b/arch/MOS65XX/MOS65XXDisassembler.c index c3d8c429b5..2723f6fa60 100644 --- a/arch/MOS65XX/MOS65XXDisassembler.c +++ b/arch/MOS65XX/MOS65XXDisassembler.c @@ -330,7 +330,7 @@ void MOS65XX_printInst(MCInst *MI, struct SStream *O, void *PrinterInfo) value = 3 + (signed short)value; SStream_concat(O, " %s%04x", prefix, - (MI->address + value) & 0xffff); + (unsigned int)((MI->address + value) & 0xffff)); break; case MOS65XX_AM_ABS_IND: @@ -375,16 +375,16 @@ void MOS65XX_printInst(MCInst *MI, struct SStream *O, void *PrinterInfo) case MOS65XX_AM_BLOCK: SStream_concat(O, " %s%02x, %s%02x", - prefix, MI->Operands[0].ImmVal, - prefix, MI->Operands[1].ImmVal); + prefix, (unsigned int)MI->Operands[0].ImmVal, + prefix, (unsigned int)MI->Operands[1].ImmVal); break; case MOS65XX_AM_ZP_REL: value = 3 + (signed char)MI->Operands[1].ImmVal; /* BBR0, zp, rel and BBS0, zp, rel */ SStream_concat(O, " %s%02x, %s%04x", - prefix, MI->Operands[0].ImmVal, - prefix, (MI->address + value) & 0xffff); + prefix, (unsigned int)MI->Operands[0].ImmVal, + prefix, (unsigned int)((MI->address + value) & 0xffff)); break; } From eccc5a7a431fa8b9a1da3cb0a94e472ec393ea5c Mon Sep 17 00:00:00 2001 From: pancake Date: Fri, 29 May 2026 19:29:23 +0200 Subject: [PATCH 5/8] Fix x86 SIB scale printing on 32-bit BE hosts --- arch/X86/X86ATTInstPrinter.c | 4 ++-- arch/X86/X86IntelInstPrinter.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/X86/X86ATTInstPrinter.c b/arch/X86/X86ATTInstPrinter.c index b2f8412859..1dead566d6 100644 --- a/arch/X86/X86ATTInstPrinter.c +++ b/arch/X86/X86ATTInstPrinter.c @@ -707,7 +707,7 @@ static void printMemReference(MCInst *MI, unsigned Op, SStream *O) MCOperand *IndexReg = MCInst_getOperand(MI, Op + X86_AddrIndexReg); MCOperand *DispSpec = MCInst_getOperand(MI, Op + X86_AddrDisp); MCOperand *SegReg = MCInst_getOperand(MI, Op + X86_AddrSegmentReg); - uint64_t ScaleVal; + unsigned int ScaleVal; int segreg; int64_t DispVal = 1; @@ -769,7 +769,7 @@ static void printMemReference(MCInst *MI, unsigned Op, SStream *O) if (MCOperand_getReg(IndexReg) && MCOperand_getReg(IndexReg) != X86_EIZ) { SStream_concat0(O, ", "); _printOperand(MI, Op + X86_AddrIndexReg, O); - ScaleVal = MCOperand_getImm(MCInst_getOperand(MI, Op + X86_AddrScaleAmt)); + ScaleVal = (unsigned int)MCOperand_getImm(MCInst_getOperand(MI, Op + X86_AddrScaleAmt)); if (MI->csh->detail) MI->flat_insn->detail->x86.operands[MI->flat_insn->detail->x86.op_count].mem.scale = (int)ScaleVal; if (ScaleVal != 1) { diff --git a/arch/X86/X86IntelInstPrinter.c b/arch/X86/X86IntelInstPrinter.c index 05d4141bad..eb1c290b56 100644 --- a/arch/X86/X86IntelInstPrinter.c +++ b/arch/X86/X86IntelInstPrinter.c @@ -929,7 +929,7 @@ static void printMemReference(MCInst *MI, unsigned Op, SStream *O) { bool NeedPlus = false; MCOperand *BaseReg = MCInst_getOperand(MI, Op + X86_AddrBaseReg); - uint64_t ScaleVal = MCOperand_getImm(MCInst_getOperand(MI, Op + X86_AddrScaleAmt)); + unsigned int ScaleVal = (unsigned int)MCOperand_getImm(MCInst_getOperand(MI, Op + X86_AddrScaleAmt)); MCOperand *IndexReg = MCInst_getOperand(MI, Op + X86_AddrIndexReg); MCOperand *DispSpec = MCInst_getOperand(MI, Op + X86_AddrDisp); MCOperand *SegReg = MCInst_getOperand(MI, Op + X86_AddrSegmentReg); From 544f06a10f69d9d678ad7b0e38097157995ffad2 Mon Sep 17 00:00:00 2001 From: pancake Date: Fri, 29 May 2026 19:32:54 +0200 Subject: [PATCH 6/8] Upgrade the checkout action --- .github/workflows/CrossBuilds.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CrossBuilds.yml b/.github/workflows/CrossBuilds.yml index 5785921847..bde4034985 100644 --- a/.github/workflows/CrossBuilds.yml +++ b/.github/workflows/CrossBuilds.yml @@ -145,7 +145,7 @@ jobs: } steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Install cross build dependencies if: ${{ matrix.config.packages != '' }} From 75721b1140c914d819daa43e778febc23010715c Mon Sep 17 00:00:00 2001 From: pancake Date: Fri, 29 May 2026 23:30:04 +0200 Subject: [PATCH 7/8] Update .github/workflows/CrossBuilds.yml Co-authored-by: Rot127 <45763064+Rot127@users.noreply.github.com> --- .github/workflows/CrossBuilds.yml | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/.github/workflows/CrossBuilds.yml b/.github/workflows/CrossBuilds.yml index bde4034985..d3a2f169e4 100644 --- a/.github/workflows/CrossBuilds.yml +++ b/.github/workflows/CrossBuilds.yml @@ -225,22 +225,3 @@ jobs: run: | ctest --test-dir build --output-on-failure -R '^capstone_' - - name: cstool regressions - if: ${{ matrix.config.skip_tests != true }} - env: - qemu: ${{ matrix.config.qemu }} - sysroot: ${{ matrix.config.sysroot }} - run: | - check_cstool() { - expected=$1 - shift - output="$(${qemu} -L "${sysroot}" build/cstool "$@")" - echo "${output}" - grep -F "${expected}" <<< "${output}" - } - - check_cstool 'ori.l #$12345678, d0' m68k40 008012345678 - check_cstool 'jsr $12345678.l' m68k40 4eb912345678 - check_cstool 'jsr $1234.w' m68k40 4eb81234 - check_cstool 'dc.w $ffff' m68k40 ffff - check_cstool 'mov esi, dword ptr [rdx + rax*4]' x64 8b3482 0 From d9af0b3db8cf861fa4c07b10e6ca9e47c7a7acf0 Mon Sep 17 00:00:00 2001 From: pancake Date: Fri, 29 May 2026 23:30:45 +0200 Subject: [PATCH 8/8] Update .github/workflows/CrossBuilds.yml Co-authored-by: Rot127 <45763064+Rot127@users.noreply.github.com> --- .github/workflows/CrossBuilds.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/CrossBuilds.yml b/.github/workflows/CrossBuilds.yml index d3a2f169e4..e42765e742 100644 --- a/.github/workflows/CrossBuilds.yml +++ b/.github/workflows/CrossBuilds.yml @@ -24,9 +24,6 @@ concurrency: 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: