--- php-7.3.0RC5/ext/pcre/config0.m4~ 2018-11-06 12:22:53.000000000 +0200 +++ php-7.3.0RC5/ext/pcre/config0.m4 2018-11-12 13:30:52.805036671 +0200 @@ -84,8 +84,9 @@ ]) fi - PHP_NEW_EXTENSION(pcre, php_pcre.c, no,, -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1) + PHP_NEW_EXTENSION(pcre, php_pcre.c, $ext_shared,, -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1) PHP_INSTALL_HEADERS([ext/pcre], [php_pcre.h]) + EXTRA_LIBS="$EXTRA_LIBS -lpcre2-8" else AC_MSG_CHECKING([for PCRE library to use]) AC_MSG_RESULT([bundled]) --- php-7.3.0alpha3/ext/pcre/php_pcre.h~ 2018-07-03 15:56:43.000000000 +0300 +++ php-7.3.0alpha3/ext/pcre/php_pcre.h 2018-07-10 11:11:55.739017013 +0300 @@ -33,7 +33,29 @@ #include #endif +#if !defined(COMPILE_DL_PCRE_NOREDIRECT) +#define pcre_get_compiled_regex (*pcre_get_compiled_regex_p) +#define pcre_get_compiled_regex_cache (*pcre_get_compiled_regex_cache_p) +#define php_pcre_replace_impl (*php_pcre_replace_impl_p) +#define php_pcre_match_impl (*php_pcre_match_impl_p) +#define php_pcre_split_impl (*php_pcre_split_impl_p) +#if !defined(COMPILE_DL_PCRE_NOEXTERN) +# define PCRE_EXTERN extern +#else +# define PCRE_EXTERN +#endif +#else +// for pcre.c +#define PCRE_EXTERN +extern void *pcre_get_compiled_regex_p; +extern void *pcre_get_compiled_regex_cache_p; +extern void *php_pcre_replace_impl_p; +extern void *php_pcre_match_impl_p; +extern void *php_pcre_split_impl_p; +#endif + PHPAPI zend_string *php_pcre_replace(zend_string *regex, zend_string *subject_str, char *subject, size_t subject_len, zend_string *replace_str, size_t limit, size_t *replace_count); +PCRE_EXTERN PHPAPI pcre2_code* pcre_get_compiled_regex(zend_string *regex, uint32_t *capture_count, uint32_t *options); PHPAPI pcre2_code* pcre_get_compiled_regex_ex(zend_string *regex, uint32_t *capture_count, uint32_t *preg_options, uint32_t *coptions); @@ -45,14 +67,18 @@ typedef struct _pcre_cache_entry pcre_cache_entry; +PCRE_EXTERN PHPAPI pcre_cache_entry* pcre_get_compiled_regex_cache(zend_string *regex); +PCRE_EXTERN PHPAPI void php_pcre_match_impl( pcre_cache_entry *pce, char *subject, size_t subject_len, zval *return_value, zval *subpats, int global, int use_flags, zend_long flags, zend_off_t start_offset); +PCRE_EXTERN PHPAPI zend_string *php_pcre_replace_impl(pcre_cache_entry *pce, zend_string *subject_str, char *subject, size_t subject_len, zend_string *replace_str, size_t limit, size_t *replace_count); +PCRE_EXTERN PHPAPI void php_pcre_split_impl( pcre_cache_entry *pce, zend_string *subject_str, zval *return_value, zend_long limit_val, zend_long flags); --- php-7.3.0beta3/ext/pcre/php_pcre.c~ 2018-09-11 11:43:27.000000000 +0300 +++ php-7.3.0beta3/ext/pcre/php_pcre.c 2018-09-11 11:43:30.747506034 +0300 @@ -21,6 +21,9 @@ #include "php.h" #include "php_ini.h" #include "php_globals.h" +#if COMPILE_DL_PCRE +#define COMPILE_DL_PCRE_NOREDIRECT +#endif #include "php_pcre.h" #include "ext/standard/info.h" #include "ext/standard/basic_functions.h" @@ -208,6 +211,17 @@ REGISTER_LONG_CONSTANT("PREG_JIT_STACKLIMIT_ERROR", PHP_PCRE_JIT_STACKLIMIT_ERROR, CONST_CS | CONST_PERSISTENT); REGISTER_STRING_CONSTANT("PCRE_VERSION", (char *)pcre_version(), CONST_CS | CONST_PERSISTENT); +#if COMPILE_DL_PCRE + pcre_get_compiled_regex_p = pcre_get_compiled_regex; + pcre_get_compiled_regex_cache_p = pcre_get_compiled_regex_cache; + php_pcre_replace_impl_p = php_pcre_replace_impl; + php_pcre_match_impl_p = php_pcre_match_impl; + php_pcre_split_impl_p = php_pcre_split_impl; + php_pcre_create_match_data_p = php_pcre_create_match_data; + php_pcre_free_match_data_p = php_pcre_free_match_data; + php_pcre_mctx_p = php_pcre_mctx; +#endif + return SUCCESS; } /* }}} */ --- php-7.2.0RC5/ext/standard/basic_functions.c 2017-10-28 21:08:47.383549141 +0300 +++ php-7.2.0RC5/ext/standard/basic_functions.c 2017-10-28 21:10:20.625051932 +0300 @@ -113,6 +113,18 @@ PHPAPI php_basic_globals basic_globals; #endif +#if COMPILE_DL_PCRE +// Declare the pointers in core library +void *pcre_get_compiled_regex_p; +void *pcre_get_compiled_regex_cache_p; +void *php_pcre_replace_impl_p; +void *php_pcre_match_impl_p; +void *php_pcre_split_impl_p; +void *php_pcre_create_match_data_p; +void *php_pcre_free_match_data_p; +void *php_pcre_mctx_p; +#endif + #include "php_fopen_wrappers.h" #include "streamsfuncs.h" --- php-5.3.2/sapi/cli/tests/018.phpt~ 2008-03-17 16:05:39.000000000 +0200 +++ php-5.3.2/sapi/cli/tests/018.phpt 2010-03-16 20:41:11.341251246 +0200 @@ -20,8 +20,6 @@ --EXPECTF-- [PHP Modules] %a -pcre -%a [Zend Modules] %aDone --- php-7.0.0beta3/main/php_ini.c~ 2015-08-26 18:50:15.000000000 +0300 +++ php-7.0.0beta3/main/php_ini.c 2015-08-26 22:33:59.126957396 +0300 @@ -765,8 +765,8 @@ */ void php_ini_register_extensions(void) { - zend_llist_apply(&extension_lists.engine, php_load_zend_extension_cb); zend_llist_apply(&extension_lists.functions, php_load_php_extension_cb); + zend_llist_apply(&extension_lists.engine, php_load_zend_extension_cb); zend_llist_destroy(&extension_lists.engine); zend_llist_destroy(&extension_lists.functions); --- php-5.3.1/ext/phar/Makefile.frag~ 2009-07-23 15:48:04.000000000 +0000 +++ php-5.3.1/ext/phar/Makefile.frag 2009-11-30 16:10:29.687175948 +0000 @@ -10,7 +10,7 @@ $(top_srcdir)/build/shtool echo -n -- "$(top_builddir)/$(SAPI_CLI_PATH) -n"; \ if test "x$(PHP_MODULES)" != "x"; then \ $(top_srcdir)/build/shtool echo -n -- " -d extension_dir=$(top_builddir)/modules"; \ - for i in spl bz2 zlib phar; do \ + for i in pcre spl bz2 zlib phar; do \ if test -f "$(top_builddir)/modules/$$i.la"; then \ . $(top_builddir)/modules/$$i.la; $(top_srcdir)/build/shtool echo -n -- " -d extension=$$dlname"; \ fi; \ --- php-7.3.0beta3/ext/pcre/php_pcre.h~ 2018-09-11 11:41:50.000000000 +0300 +++ php-7.3.0beta3/ext/pcre/php_pcre.h 2018-09-11 11:41:54.865778887 +0300 @@ -37,6 +37,9 @@ #define php_pcre_replace_impl (*php_pcre_replace_impl_p) #define php_pcre_match_impl (*php_pcre_match_impl_p) #define php_pcre_split_impl (*php_pcre_split_impl_p) +#define php_pcre_create_match_data (*php_pcre_create_match_data_p) +#define php_pcre_free_match_data (*php_pcre_free_match_data_p) +#define php_pcre_mctx (*php_pcre_mctx_p) #if !defined(COMPILE_DL_PCRE_NOEXTERN) # define PCRE_EXTERN extern #else @@ -50,6 +53,9 @@ extern void *php_pcre_replace_impl_p; extern void *php_pcre_match_impl_p; extern void *php_pcre_split_impl_p; +extern void *php_pcre_create_match_data_p; +extern void *php_pcre_free_match_data_p; +extern void *php_pcre_mctx_p; #endif PHPAPI zend_string *php_pcre_replace(zend_string *regex, zend_string *subject_str, char *subject, size_t subject_len, zend_string *replace_str, size_t limit, size_t *replace_count); @@ -83,6 +89,7 @@ PHPAPI void php_pcre_grep_impl( pcre_cache_entry *pce, zval *input, zval *return_value, zend_long flags); +PCRE_EXTERN PHPAPI pcre2_match_context *php_pcre_mctx(void); PHPAPI pcre2_general_context *php_pcre_gctx(void); PHPAPI pcre2_compile_context *php_pcre_cctx(void); @@ -90,7 +97,9 @@ PHPAPI void php_pcre_pce_decref(pcre_cache_entry *); PHPAPI pcre2_code *php_pcre_pce_re(pcre_cache_entry *); /* capture_count can be ignored, re is required. */ +PCRE_EXTERN PHPAPI pcre2_match_data *php_pcre_create_match_data(uint32_t, pcre2_code *); +PCRE_EXTERN PHPAPI void php_pcre_free_match_data(pcre2_match_data *); ZEND_BEGIN_MODULE_GLOBALS(pcre)