MFH: r469895

Prevent php 5.6 (opcache) from segfaulting when compiled with clang 6.0

PR:             227723
Submitted by:   dim
Reported by:    flo, lampa@fit.vutbr.cz
Approved by:    maintainer timeout

Approved by:	ports-secteam (riggs)
This commit is contained in:
Florian Smeets 2018-05-24 19:53:42 +00:00
parent 57f690c37c
commit 2f0c091e97
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/branches/2018Q2/; revision=470806
3 changed files with 31 additions and 1 deletions

View File

@ -3,7 +3,7 @@
PORTNAME= php56
PORTVERSION= 5.6.35
PORTREVISION?= 0
PORTREVISION?= 1
CATEGORIES?= lang devel www
MASTER_SITES= PHP/distributions
DISTNAME= php-${PORTVERSION}

View File

@ -0,0 +1,12 @@
--- Zend/zend_compile.h.orig 2018-02-27 23:15:25 UTC
+++ Zend/zend_compile.h
@@ -414,9 +414,6 @@ struct _zend_execute_data {
#define EX(element) execute_data.element
-#define EX_TMP_VAR(ex, n) ((temp_variable*)(((char*)(ex)) + ((int)(n))))
-#define EX_TMP_VAR_NUM(ex, n) (EX_TMP_VAR(ex, 0) - (1 + (n)))
-
#define EX_CV_NUM(ex, n) (((zval***)(((char*)(ex))+ZEND_MM_ALIGNED_SIZE(sizeof(zend_execute_data))))+(n))

View File

@ -0,0 +1,18 @@
--- Zend/zend_execute.h.orig 2018-02-27 23:15:25 UTC
+++ Zend/zend_execute.h
@@ -71,6 +71,15 @@ ZEND_API int zend_eval_stringl_ex(char *str, int str_l
ZEND_API char * zend_verify_arg_class_kind(const zend_arg_info *cur_arg_info, ulong fetch_type, const char **class_name, zend_class_entry **pce TSRMLS_DC);
ZEND_API int zend_verify_arg_error(int error_type, const zend_function *zf, zend_uint arg_num, const char *need_msg, const char *need_kind, const char *given_msg, const char *given_kind TSRMLS_DC);
+static zend_always_inline temp_variable *EX_TMP_VAR(void *ex, int n)
+{
+ return (temp_variable *)((zend_uintptr_t)ex + n);
+}
+static inline temp_variable *EX_TMP_VAR_NUM(void *ex, int n)
+{
+ return (temp_variable *)((zend_uintptr_t)ex - (1 + n) * sizeof(temp_variable));
+}
+
static zend_always_inline void i_zval_ptr_dtor(zval *zval_ptr ZEND_FILE_LINE_DC TSRMLS_DC)
{
if (!Z_DELREF_P(zval_ptr)) {