diff --git a/NEWS b/NEWS index fe87d1796cc..823cb1bde0e 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,11 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? ??? 2021, PHP 8.0.5 +- Core: + . Changed PowerPC CPU registers used by Zend VM to work around GCC bug. + Old registers (r28/r29) might be clobbered by _restgpr routine used for + return from C function compiled with -Os. (Dmitry) + - DOM: . Fixed bug #66783 (UAF when appending DOMDocument to element). (cmb) diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 69b0fb5242a..2edc155e910 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -54,11 +54,11 @@ # define ZEND_VM_FP_GLOBAL_REG "%r14" # define ZEND_VM_IP_GLOBAL_REG "%r15" # elif defined(__GNUC__) && ZEND_GCC_VERSION >= 4008 && defined(__powerpc64__) -# define ZEND_VM_FP_GLOBAL_REG "r28" -# define ZEND_VM_IP_GLOBAL_REG "r29" +# define ZEND_VM_FP_GLOBAL_REG "r14" +# define ZEND_VM_IP_GLOBAL_REG "r15" # elif defined(__IBMC__) && ZEND_GCC_VERSION >= 4002 && defined(__powerpc64__) -# define ZEND_VM_FP_GLOBAL_REG "r28" -# define ZEND_VM_IP_GLOBAL_REG "r29" +# define ZEND_VM_FP_GLOBAL_REG "r14" +# define ZEND_VM_IP_GLOBAL_REG "r15" # elif defined(__GNUC__) && ZEND_GCC_VERSION >= 4008 && defined(__aarch64__) # define ZEND_VM_FP_GLOBAL_REG "x27" # define ZEND_VM_IP_GLOBAL_REG "x28"