From: Dmitry Stogov Date: Tue, 1 Dec 2020 12:20:06 +0000 (+0300) Subject: Disable stack reuse optimization for x86 PIC code. It may clobber local variable... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8ad2b59e12887d3f4952291b7d63ec9838a386d8;p=php Disable stack reuse optimization for x86 PIC code. It may clobber local variable used for Global Offset Table. --- diff --git a/Zend/zend_vm_gen.php b/Zend/zend_vm_gen.php index 46030cad09..0795822f96 100755 --- a/Zend/zend_vm_gen.php +++ b/Zend/zend_vm_gen.php @@ -2598,7 +2598,7 @@ function gen_vm($def, $skel) { } fputs($f, "\n"); fputs($f, "#if (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID) && !defined(__SANITIZE_ADDRESS__)\n"); - fputs($f, "# if (defined(i386) || defined(__x86_64__) || defined(_M_X64))\n"); + fputs($f, "# if ((defined(i386) && !defined(__PIC__)) || defined(__x86_64__) || defined(_M_X64))\n"); fputs($f, "# define ZEND_VM_HYBRID_JIT_RED_ZONE_SIZE 16\n"); fputs($f, "# endif\n"); fputs($f, "#endif\n"); diff --git a/Zend/zend_vm_opcodes.h b/Zend/zend_vm_opcodes.h index 584a44f5ae..653e320b85 100644 --- a/Zend/zend_vm_opcodes.h +++ b/Zend/zend_vm_opcodes.h @@ -35,7 +35,7 @@ #endif #if (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID) && !defined(__SANITIZE_ADDRESS__) -# if (defined(i386) || defined(__x86_64__) || defined(_M_X64)) +# if ((defined(i386) && !defined(__PIC__)) || defined(__x86_64__) || defined(_M_X64)) # define ZEND_VM_HYBRID_JIT_RED_ZONE_SIZE 16 # endif #endif