From 29e687994dd211dfe9c34cc53aeb345fdf4de1b4 Mon Sep 17 00:00:00 2001 From: lizzie Date: Wed, 20 Aug 2025 23:39:21 +0000 Subject: [PATCH] [compat] fix spinlock default ctor causing crash on OpenBSD Signed-off-by: lizzie --- docs/build/OpenBSD.md | 2 +- src/dynarmic/src/dynarmic/backend/x64/block_of_code.cpp | 6 +++--- src/dynarmic/src/dynarmic/common/spin_lock_x64.cpp | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/build/OpenBSD.md b/docs/build/OpenBSD.md index 9dccfac8be..e7e8a736d2 100644 --- a/docs/build/OpenBSD.md +++ b/docs/build/OpenBSD.md @@ -2,7 +2,7 @@ ```sh pkg_add -u -pkg_add cmake nasm git boost unzip--iconv autoconf-2.72p0 bash ffmpeg glslang gmake llvm-19.1.7p3 +pkg_add cmake nasm git boost unzip--iconv autoconf-2.72p0 bash ffmpeg glslang gmake llvm-19.1.7p3 qt6 git --recursive https://git.eden-emu.dev/eden-emu/eden cmake -DCMAKE_C_COMPILER=clang-19 -DCMAKE_CXX_COMPILER=clang++-19 -DDYNARMIC_USE_PRECOMPILED_HEADERS=OFF -DCMAKE_BUILD_TYPE=Debug -DENABLE_QT=OFF -DENABLE_OPENSSL=OFF -DENABLE_WEB_SERVICE=OFF -B /usr/obj/eden ``` diff --git a/src/dynarmic/src/dynarmic/backend/x64/block_of_code.cpp b/src/dynarmic/src/dynarmic/backend/x64/block_of_code.cpp index f6f7404d1d..d5d5f089ff 100644 --- a/src/dynarmic/src/dynarmic/backend/x64/block_of_code.cpp +++ b/src/dynarmic/src/dynarmic/backend/x64/block_of_code.cpp @@ -225,10 +225,10 @@ bool IsUnderRosetta() { } // anonymous namespace -#ifdef __OpenBSD__ -constexpr auto default_cg_mode = Xbyak::DontSetProtectRWE; +#ifdef DYNARMIC_ENABLE_NO_EXECUTE_SUPPORT +static const auto default_cg_mode = Xbyak::DontSetProtectRWE; #else -constexpr auto default_cg_mode = nullptr; //Allow RWE +static const auto default_cg_mode = nullptr; //Allow RWE #endif BlockOfCode::BlockOfCode(RunCodeCallbacks cb, JitStateInfo jsi, size_t total_code_size, std::function rcp) diff --git a/src/dynarmic/src/dynarmic/common/spin_lock_x64.cpp b/src/dynarmic/src/dynarmic/common/spin_lock_x64.cpp index 474c2f8404..7c0ba8a890 100644 --- a/src/dynarmic/src/dynarmic/common/spin_lock_x64.cpp +++ b/src/dynarmic/src/dynarmic/common/spin_lock_x64.cpp @@ -37,7 +37,7 @@ namespace { struct SpinLockImpl { void Initialize(); - Xbyak::CodeGenerator code; + Xbyak::CodeGenerator code = Xbyak::CodeGenerator(4096, Xbyak::DontSetProtectRWE); void (*lock)(volatile int*); void (*unlock)(volatile int*);