From 59bffbcceee522cdfe631087997135e1be52aeb2 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Mon, 4 Nov 2013 15:05:34 +0100 Subject: PHP 5.5 test build opcache with phar build shared https://github.com/zendtech/ZendOptimizerPlus/issues/147 --- php-wip.patch | 110 +++++++++++++++++++++++----------------------------------- 1 file changed, 44 insertions(+), 66 deletions(-) (limited to 'php-wip.patch') diff --git a/php-wip.patch b/php-wip.patch index 6aee5a9..d6e5131 100644 --- a/php-wip.patch +++ b/php-wip.patch @@ -1,69 +1,47 @@ -diff --git a/Zend/zend_exceptions.c b/Zend/zend_exceptions.c -index 14ae75e..c7f157c 100644 ---- a/Zend/zend_exceptions.c -+++ b/Zend/zend_exceptions.c -@@ -560,7 +560,7 @@ ZEND_METHOD(exception, getPrevious) - RETURN_ZVAL(previous, 1, 0); +diff -up php-5.5.6RC1/ext/opcache/ZendAccelerator.c.wip php-5.5.6RC1/ext/opcache/ZendAccelerator.c +--- php-5.5.6RC1/ext/opcache/ZendAccelerator.c.wip 2013-10-29 12:09:06.000000000 +0100 ++++ php-5.5.6RC1/ext/opcache/ZendAccelerator.c 2013-11-04 14:23:59.395722970 +0100 +@@ -145,9 +145,33 @@ static inline int is_cacheable_stream_pa + memcmp(filename, "phar://", sizeof("phar://") - 1) == 0; } --int zend_spprintf(char **message, int max_len, char *format, ...) /* {{{ */ -+int zend_spprintf(char **message, int max_len, const char *format, ...) /* {{{ */ ++#ifdef COMPILE_DL_PHAR ++static typeof(phar_resolve_alias) *opcache_phar_resolve_alias; ++#else ++# define opcache_phar_resolve_alias phar_resolve_alias ++#endif ++ + static inline int is_phar_relative_alias_path(const char *filename, char **alias, int *alias_len) { - va_list arg; - int len; -@@ -732,7 +732,7 @@ ZEND_API zend_class_entry *zend_get_error_exception(TSRMLS_D) /* {{{ */ - } - /* }}} */ - --ZEND_API zval * zend_throw_exception(zend_class_entry *exception_ce, char *message, long code TSRMLS_DC) /* {{{ */ -+ZEND_API zval * zend_throw_exception(zend_class_entry *exception_ce, const char *message, long code TSRMLS_DC) /* {{{ */ - { - zval *ex; - -@@ -760,7 +760,7 @@ ZEND_API zval * zend_throw_exception(zend_class_entry *exception_ce, char *messa - } - /* }}} */ - --ZEND_API zval * zend_throw_exception_ex(zend_class_entry *exception_ce, long code TSRMLS_DC, char *format, ...) /* {{{ */ -+ZEND_API zval * zend_throw_exception_ex(zend_class_entry *exception_ce, long code TSRMLS_DC, const char *format, ...) /* {{{ */ - { - va_list arg; - char *message; -@@ -775,7 +775,7 @@ ZEND_API zval * zend_throw_exception_ex(zend_class_entry *exception_ce, long cod - } - /* }}} */ - --ZEND_API zval * zend_throw_error_exception(zend_class_entry *exception_ce, char *message, long code, int severity TSRMLS_DC) /* {{{ */ -+ZEND_API zval * zend_throw_error_exception(zend_class_entry *exception_ce, const char *message, long code, int severity TSRMLS_DC) /* {{{ */ - { - zval *ex = zend_throw_exception(exception_ce, message, code TSRMLS_CC); - zend_update_property_long(default_exception_ce, ex, "severity", sizeof("severity")-1, severity TSRMLS_CC); -diff --git a/Zend/zend_exceptions.h b/Zend/zend_exceptions.h -index 8263353..81c8a1f 100644 ---- a/Zend/zend_exceptions.h -+++ b/Zend/zend_exceptions.h -@@ -40,12 +40,12 @@ ZEND_API void zend_register_default_classes(TSRMLS_D); - - /* exception_ce NULL or zend_exception_get_default() or a derived class - * message NULL or the message of the exception */ --ZEND_API zval * zend_throw_exception(zend_class_entry *exception_ce, char *message, long code TSRMLS_DC); --ZEND_API zval * zend_throw_exception_ex(zend_class_entry *exception_ce, long code TSRMLS_DC, char *format, ...); -+ZEND_API zval * zend_throw_exception(zend_class_entry *exception_ce, const char *message, long code TSRMLS_DC); -+ZEND_API zval * zend_throw_exception_ex(zend_class_entry *exception_ce, long code TSRMLS_DC, const char *format, ...); - ZEND_API void zend_throw_exception_object(zval *exception TSRMLS_DC); - ZEND_API void zend_clear_exception(TSRMLS_D); - --ZEND_API zval * zend_throw_error_exception(zend_class_entry *exception_ce, char *message, long code, int severity TSRMLS_DC); -+ZEND_API zval * zend_throw_error_exception(zend_class_entry *exception_ce, const char *message, long code, int severity TSRMLS_DC); - - extern ZEND_API void (*zend_throw_exception_hook)(zval *ex TSRMLS_DC); - -@@ -53,7 +53,7 @@ extern ZEND_API void (*zend_throw_exception_hook)(zval *ex TSRMLS_DC); - ZEND_API void zend_exception_error(zval *exception, int severity TSRMLS_DC); - - /* do not export, in php it's available thru spprintf directly */ --int zend_spprintf(char **message, int max_len, char *format, ...); -+int zend_spprintf(char **message, int max_len, const char *format, ...); - - END_EXTERN_C() - +- if (memcmp(filename, "phar://", sizeof("phar://") - 1) == 0 ++#ifdef COMPILE_DL_PHAR ++ static int pharloaded = -1; ++ ++ /* Only once, retrieve phar_resolve_alias from phar module if loaded */ ++ if (pharloaded < 0) { ++ zend_module_entry *phar; ++ ++ if (zend_hash_find(&module_registry, "phar", 5, (void**)&phar) == SUCCESS) { ++ opcache_phar_resolve_alias = DL_FETCH_SYMBOL(phar->handle, "phar_resolve_alias"); ++ pharloaded = (opcache_phar_resolve_alias ? 1 : 0); ++ } else { ++ pharloaded = 0; ++ } ++ } ++ if (pharloaded && ++#else ++ if ( ++#endif ++ memcmp(filename, "phar://", sizeof("phar://") - 1) == 0 + && filename[sizeof("phar://") - 1] != '\0' && filename[sizeof("phar://") - 1] != '/') { + char *slash; + *alias = (char*)filename + sizeof("phar://") - 1; +@@ -1056,7 +1080,7 @@ char *accel_make_persistent_key_ex(zend_ + if (is_phar_relative_alias_path(file_handle->filename, &alias, &alias_len)) { + char *phar_path; + int phar_path_len; +- if (phar_resolve_alias(alias, alias_len, &phar_path, &phar_path_len TSRMLS_CC) == SUCCESS) { ++ if (opcache_phar_resolve_alias(alias, alias_len, &phar_path, &phar_path_len TSRMLS_CC) == SUCCESS) { + int filename_len = strlen(file_handle->filename); + memcpy(ZCG(key), "phar://", sizeof("phar://") -1); + memcpy(ZCG(key) + sizeof("phar://") - 1, phar_path, phar_path_len); -- cgit