On Tue, Feb 12 2019, Solene Rapenne <sol...@perso.pw> wrote:
> brynet@ spotted that gzdoom wasn't W^X compliant due to a JIT engine
> getting enabled automatically on amd64.
>
> This patch makes vm_jit knob at false by default instead of being true.
> I did not see performance impact on my i7 when it's disabled, but this
> could be interesting if someone could test it.
>
> Without the patch, it's possible to disable JIT with the parameter
> '+vm_jit false'. While now we can still enable it with '+vm_jit true'
> (with W^X violation).
>
> I don't know if we should let it as this and add WX_NEEDED or patch it
> out so it doesn't WX by default?

Note that there's a third approach for such ports: try to make the JIT
W^X compliant.  Here, it doesn't seem trivial (look for kVMExecutable).

So your proposal makes sense to me, ok jca@ with a REVISION bump.  If
runtime still works, ofc, but I'll leave tests to actual users. :)

> Index: patches/patch-src_scripting_vm_vmframe_cpp
> ===================================================================
> RCS file: patches/patch-src_scripting_vm_vmframe_cpp
> diff -N patches/patch-src_scripting_vm_vmframe_cpp
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-src_scripting_vm_vmframe_cpp        12 Feb 2019 06:04:57 
> -0000
> @@ -0,0 +1,16 @@
> +$OpenBSD$
> +
> +disable JIT so it's W^X compatible
> +
> +Index: src/scripting/vm/vmframe.cpp
> +--- src/scripting/vm/vmframe.cpp.orig
> ++++ src/scripting/vm/vmframe.cpp
> +@@ -49,7 +49,7 @@
> + #endif
> + 
> + #ifdef ARCH_X64
> +-CUSTOM_CVAR(Bool, vm_jit, true, CVAR_NOINITCALL)
> ++CUSTOM_CVAR(Bool, vm_jit, false, CVAR_NOINITCALL)
> + {
> +     Printf("You must restart " GAMENAME " for this change to take 
> effect.\n");
> +     Printf("This cvar is currently not saved. You must specify it on the 
> command line.");
>

-- 
jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF  DDCC 0DFA 74AE 1524 E7EE

Reply via email to