48static size_t global_map_ptr_last = 0;
49static bool startup_done =
false;
54ZEND_API size_t compiler_globals_offset;
55ZEND_API size_t executor_globals_offset;
61TSRMLS_MAIN_CACHE_DEFINE()
62# define GLOBAL_FUNCTION_TABLE global_function_table
63# define GLOBAL_CLASS_TABLE global_class_table
64# define GLOBAL_CONSTANTS_TABLE global_constants_table
65# define GLOBAL_AUTO_GLOBALS_TABLE global_auto_globals_table
67# define GLOBAL_FUNCTION_TABLE CG(function_table)
68# define GLOBAL_CLASS_TABLE CG(class_table)
69# define GLOBAL_AUTO_GLOBALS_TABLE CG(auto_globals)
70# define GLOBAL_CONSTANTS_TABLE EG(zend_constants)
77static char *zend_version_info;
78static uint32_t zend_version_info_length;
79#define ZEND_CORE_VERSION_INFO "Zend Engine v" ZEND_VERSION ", Copyright (c) Zend Technologies\n"
80#define PRINT_ZVAL_INDENT 4
146 if (!
CG(multibyte)) {
165 (*
p < 0 ||
val < 0)) {
166 zend_error(
E_WARNING,
"zend.assertions may be completely enabled or disabled only in php.ini");
178 if (i >= 0 && i <= 1000000) {
179 EG(exception_string_param_max_len) = i;
187#ifdef ZEND_CHECK_STACK_LIMIT
192 if (
size < ZEND_MAX_ALLOWED_STACK_SIZE_UNCHECKED) {
194 ZSTR_VAL(entry->name), ZEND_MAX_ALLOWED_STACK_SIZE_UNCHECKED,
size);
198 EG(max_allowed_stack_size) =
size;
212#ifdef ZEND_ALLOCA_MAX_SIZE
218#if defined(__SANITIZE_ADDRESS__) || __has_feature(memory_sanitizer)
232 EG(reserved_stack_size) =
size;
247 EG(fiber_stack_size) = tmp;
256# define SIGNAL_CHECK_DEFAULT "1"
258# define SIGNAL_CHECK_DEFAULT "0"
274#ifdef ZEND_CHECK_STACK_LIMIT
295 if (max_len &&
buf.len > max_len) {
299 smart_string_0(&
buf);
316 va_start(
arg, format);
328 va_start(
arg, format);
349 return smart_str_extract(&
buf);
358 va_start(
arg, format);
370 va_start(
arg, format);
377static void zend_print_zval_r_to_buf(
smart_str *
buf,
zval *expr,
int indent);
386 for (i = 0; i < indent; i++) {
387 smart_str_appendc(
buf,
' ');
389 smart_str_appends(
buf,
"(\n");
392 for (i = 0; i < indent; i++) {
393 smart_str_appendc(
buf,
' ');
395 smart_str_appendc(
buf,
'[');
398 const char *prop_name, *class_name;
402 smart_str_appendl(
buf, prop_name, prop_len);
403 if (class_name && mangled ==
SUCCESS) {
404 if (class_name[0] ==
'*') {
405 smart_str_appends(
buf,
":protected");
407 smart_str_appends(
buf,
":");
408 smart_str_appends(
buf, class_name);
409 smart_str_appends(
buf,
":private");
413 smart_str_append(
buf, string_key);
416 smart_str_append_long(
buf, num_key);
418 smart_str_appends(
buf,
"] => ");
420 smart_str_appends(
buf,
"\n");
423 for (i = 0; i < indent; i++) {
424 smart_str_appendc(
buf,
' ');
426 smart_str_appends(
buf,
")\n");
439 smart_str_appendc(
buf,
',');
441 smart_str_appendc(
buf,
'[');
443 smart_str_append(
buf, string_key);
445 smart_str_append_unsigned(
buf, num_key);
447 smart_str_appends(
buf,
"] => ");
467 zend_string *str = zval_get_tmp_string(expr, &tmp_str);
474 zend_tmp_string_release(tmp_str);
483 smart_str_appends(
buf,
"Array (");
486 smart_str_appends(
buf,
" *RECURSION*");
492 smart_str_appendc(
buf,
')');
499 smart_str_append(
buf, class_name);
500 smart_str_appends(
buf,
" Object (");
504 smart_str_appends(
buf,
" *RECURSION*");
511 print_flat_hash(
buf, properties);
514 smart_str_appendc(
buf,
')');
526 smart_str_append(
buf, str);
540 smart_str_free(&
buf);
547 smart_str_appends(
buf,
"Array\n");
550 smart_str_appends(
buf,
" *RECURSION*");
569 smart_str_appends(
buf,
" Object\n");
571 smart_str_appends(
buf,
" Enum");
573 smart_str_appendc(
buf,
':');
576 smart_str_appendc(
buf,
'\n');
580 smart_str_appends(
buf,
" *RECURSION*");
590 print_hash(
buf, properties, indent, 1);
608 smart_str_append(
buf, str);
619 zend_print_zval_r_to_buf(&
buf, expr, indent);
636 *opened_path = zend_string_copy(filename);
646# define short_tags_default 1
647# define compiler_options_default ZEND_COMPILE_DEFAULT
650static void zend_set_default_compile_time_values(
void)
656 CG(rtd_key_counter) = 0;
661static void zend_get_windows_version_info(OSVERSIONINFOEX *osvi)
663 ZeroMemory(osvi,
sizeof(OSVERSIONINFOEX));
664 osvi->dwOSVersionInfoSize =
sizeof(OSVERSIONINFOEX);
665 if(!GetVersionEx((OSVERSIONINFO *) osvi)) {
672static void zend_init_exception_op(
void)
674 memset(
EG(exception_op), 0,
sizeof(
EG(exception_op)));
684static void zend_init_call_trampoline_op(
void)
686 memset(&
EG(call_trampoline_op), 0,
sizeof(
EG(call_trampoline_op)));
692static void auto_global_dtor(
zval *
zv)
699static void auto_global_copy_ctor(
zval *
zv)
706 new_ag->
jit = old_ag->
jit;
726 zend_set_default_compile_time_values();
804 zend_init_exception_op();
805 zend_init_call_trampoline_op();
837#ifdef ZEND_CHECK_STACK_LIMIT
841#ifdef ZEND_MAX_EXECUTION_TIMERS
852static void executor_globals_persistent_list_dtor(
void *storage)
872static void zend_new_thread_end_handler(THREAD_T thread_id)
876#ifdef ZEND_CHECK_STACK_LIMIT
877 zend_call_stack_init();
884#if defined(__FreeBSD__) || defined(__DragonFly__)
886#include <floatingpoint.h>
891 memset(scanner_globals_p, 0,
sizeof(*scanner_globals_p));
897 memset(scanner_globals_p, 0,
sizeof(*scanner_globals_p));
901static void module_destructor_zval(
zval *
zv)
921 extern ZEND_API ts_rsrc_id ini_scanner_globals_id;
922 extern ZEND_API ts_rsrc_id language_scanner_globals_id;
943#if defined(__FreeBSD__) || defined(__DragonFly__)
974 char *tmp =
getenv(
"USE_ZEND_DTRACE");
1020 ts_allocate_fast_id(&compiler_globals_id, &compiler_globals_offset,
sizeof(
zend_compiler_globals), (ts_allocate_ctor) compiler_globals_ctor, (ts_allocate_dtor) compiler_globals_dtor);
1021 ts_allocate_fast_id(&executor_globals_id, &executor_globals_offset,
sizeof(
zend_executor_globals), (ts_allocate_ctor) executor_globals_ctor, (ts_allocate_dtor) executor_globals_dtor);
1022 ts_allocate_fast_id(&language_scanner_globals_id, &language_scanner_globals_offset,
sizeof(
zend_php_scanner_globals), (ts_allocate_ctor) php_scanner_globals_ctor,
NULL);
1023 ts_allocate_fast_id(&ini_scanner_globals_id, &ini_scanner_globals_offset,
sizeof(
zend_ini_scanner_globals), (ts_allocate_ctor) ini_scanner_globals_ctor,
NULL);
1041 zend_set_default_compile_time_values();
1043 zend_get_windows_version_info(&
EG(windows_version_info));
1046 CG(map_ptr_real_base) =
NULL;
1048 CG(map_ptr_size) = 0;
1049 CG(map_ptr_last) = 0;
1060 zend_init_exception_op();
1061 zend_init_call_trampoline_op();
1074 tsrm_set_new_thread_end_handler(zend_new_thread_end_handler);
1099 startup_done =
true;
1139 free(
EG(zend_constants));
1140 EG(zend_constants) =
NULL;
1143 global_persistent_list = &
EG(persistent_list);
1146 global_map_ptr_last =
CG(map_ptr_last);
1149#ifdef ZEND_CHECK_STACK_LIMIT
1150 zend_call_stack_init();
1164 ts_apply_for_id(executor_globals_id, executor_globals_persistent_list_dtor);
1186 free(zend_version_info);
1201 ts_free_id(executor_globals_id);
1202 ts_free_id(compiler_globals_id);
1204 if (
CG(map_ptr_real_base)) {
1205 free(
CG(map_ptr_real_base));
1206 CG(map_ptr_real_base) =
NULL;
1208 CG(map_ptr_size) = 0;
1210 if (
CG(script_encoding_list)) {
1212 CG(script_encoding_list) =
NULL;
1213 CG(script_encoding_list_size) = 0;
1215 if (
CG(internal_run_time_cache)) {
1216 pefree(
CG(internal_run_time_cache), 1);
1217 CG(internal_run_time_cache) =
NULL;
1228 startup_done =
false;
1241 CG(parse_error) = 0;
1260 CG(unclean_shutdown) = 1;
1261 CG(active_class_entry) =
NULL;
1262 CG(in_compilation) = 0;
1263 CG(memoize_mode) = 0;
1264 EG(current_execute_data) =
NULL;
1272 SYSTEM_INFO system_info;
1273 GetSystemInfo(&system_info);
1274 return system_info.dwPageSize;
1275#elif defined(__FreeBSD__)
1278 return getpagesize();
1280 return (
size_t) sysconf(_SC_PAGESIZE);
1287 uint32_t new_info_length;
1289 new_info_length = (uint32_t)(
sizeof(
" with v, , by \n")
1295 new_info = (
char *) malloc(new_info_length + 1);
1299 zend_version_info = (
char *) realloc(zend_version_info, zend_version_info_length+new_info_length + 1);
1300 strncat(zend_version_info, new_info, new_info_length);
1301 zend_version_info_length += new_info_length;
1308 return zend_version_info;
1321 if (
CG(map_ptr_last)) {
1340 EG(current_execute_data) =
NULL;
1383 if (zend_hash_num_elements(&
CG(interned_strings)) > 0) {
1395 if (zend_message_dispatcher_p) {
1396 zend_message_dispatcher_p(message,
data);
1403 if (zend_get_configuration_directive_p) {
1404 return zend_get_configuration_directive_p(
name);
1411#define SAVE_STACK(stack) do { \
1412 if (CG(stack).top) { \
1413 memcpy(&stack, &CG(stack), sizeof(zend_stack)); \
1414 CG(stack).top = CG(stack).max = 0; \
1415 CG(stack).elements = NULL; \
1421#define RESTORE_STACK(stack) do { \
1423 zend_stack_destroy(&CG(stack)); \
1424 memcpy(&CG(stack), &stack, sizeof(zend_stack)); \
1433 zval orig_user_error_handler;
1434 bool in_compilation;
1439 bool orig_record_errors;
1440 uint32_t orig_num_errors;
1446 if (
EG(capture_warnings_during_sccp)) {
1448 EG(capture_warnings_during_sccp)++;
1452 if (
EG(record_errors)) {
1455 info->
lineno = error_lineno;
1456 info->
filename = zend_string_copy(error_filename);
1457 info->
message = zend_string_copy(message);
1463 EG(errors)[
EG(num_errors)-1] = info;
1472 ex =
EG(current_execute_data);
1475 ex =
ex->prev_execute_data;
1478 EG(opline_before_exception)) {
1479 opline =
EG(opline_before_exception);
1484 ex->opline = opline;
1489 zend_observer_error_notify(
type, error_filename, error_lineno, message);
1493 || !(
EG(user_error_handler_error_reporting) &
type)
1495 zend_error_cb(orig_type, error_filename, error_lineno, message);
1496 }
else switch (
type) {
1504 zend_error_cb(orig_type, error_filename, error_lineno, message);
1511 if (error_filename) {
1527 in_compilation =
CG(in_compilation);
1528 if (in_compilation) {
1529 saved_class_entry =
CG(active_class_entry);
1530 CG(active_class_entry) =
NULL;
1533 CG(in_compilation) = 0;
1536 orig_record_errors =
EG(record_errors);
1537 orig_num_errors =
EG(num_errors);
1538 orig_errors =
EG(errors);
1539 EG(record_errors) =
false;
1545 EG(record_errors) = orig_record_errors;
1546 EG(num_errors) = orig_num_errors;
1547 EG(errors) = orig_errors;
1552 zend_error_cb(orig_type, error_filename, error_lineno, message);
1558 zend_error_cb(orig_type, error_filename, error_lineno, message);
1561 if (in_compilation) {
1562 CG(active_class_entry) = saved_class_entry;
1565 CG(in_compilation) = 1;
1581 if (!(
EG(current_execute_data) &&
1582 EG(current_execute_data)->
func &&
1585 EG(current_execute_data)->opline->extended_value ==
ZEND_EVAL)) {
1586 EG(exit_status) = 255;
1592static ZEND_COLD void zend_error_va_list(
1593 int orig_type,
zend_string *error_filename, uint32_t error_lineno,
1594 const char *format, va_list
args)
1598 zend_string_release(message);
1638 *filename =
ZSTR_KNOWN(ZEND_STR_UNKNOWN_CAPITALIZED);
1643 int type,
zend_string *filename, uint32_t lineno,
const char *format, ...) {
1647 uint32_t dummy_lineno;
1648 get_filename_lineno(
type, &filename, &dummy_lineno);
1651 va_start(
args, format);
1652 zend_error_va_list(
type, filename, lineno, format,
args);
1656#define zend_error_impl(type, format) do { \
1657 zend_string *filename; \
1660 get_filename_lineno(type, &filename, &lineno); \
1661 va_start(args, format); \
1662 zend_error_va_list(type, filename, lineno, format, args); \
1675 int type,
zend_string *filename, uint32_t lineno,
const char *format, ...)
1680 uint32_t dummy_lineno;
1681 get_filename_lineno(
type, &filename, &dummy_lineno);
1684 va_start(
args, format);
1685 zend_error_va_list(
type, filename, lineno, format,
args);
1691#define zend_error_noreturn_impl(type, format) do { \
1692 zend_string *filename; \
1695 get_filename_lineno(type, &filename, &lineno); \
1696 va_start(args, format); \
1697 zend_error_va_list(type, filename, lineno, format, args); \
1715#ifdef HAVE_STRERROR_R
1718# ifdef STRERROR_R_CHAR_P
1719 char *
buf = strerror_r(errn, b,
sizeof(b));
1721 strerror_r(errn, b,
sizeof(b));
1725 char *
buf = strerror(errn);
1734 get_filename_lineno(
type, &filename, &lineno);
1740 ZEND_ASSERT(!
EG(record_errors) &&
"Error recording already enabled");
1741 EG(record_errors) =
true;
1748 EG(record_errors) =
false;
1749 for (uint32_t i = 0; i <
EG(num_errors); i++) {
1757 if (!
EG(num_errors)) {
1761 for (uint32_t i = 0; i <
EG(num_errors); i++) {
1763 zend_string_release(info->
filename);
1764 zend_string_release(info->
message);
1775 char *message =
NULL;
1777 if (!exception_ce) {
1786 va_start(va, format);
1790 if (
EG(current_execute_data) && !
CG(in_compilation)) {
1827 char *message =
NULL;
1829 va_start(va, format);
1839 char *message =
NULL;
1841 va_start(va, format);
1852 char *message =
NULL;
1854 va_start(va, format);
1866 va_start(
args, format);
1873 OutputDebugString(
"\n");
1874 if (trigger_break && IsDebuggerPresent()) {
1889 zval orig_user_exception_handler;
1890 zval params[1], retval2;
1899 ZVAL_OBJ(¶ms[0], old_exception);
1961 va_start(files, file_count);
1962 for (i = 0; i < file_count; i++) {
1978#define COMPILED_STRING_DESCRIPTION_FORMAT "%s(%d) : %s"
1982 const char *cur_filename;
1984 char *compiled_string_description;
1993 cur_filename =
"Unknown";
1998 return compiled_string_description;
2013 CG(map_ptr_last) = global_map_ptr_last;
2020 if (
CG(map_ptr_last) >=
CG(map_ptr_size)) {
2040 if (
CG(map_ptr_real_base)) {
2044 CG(map_ptr_real_base) = new_base;
2055 if (
last >
CG(map_ptr_last)) {
2058 if (
last >=
CG(map_ptr_size)) {
fprintf($stream, string $format, mixed ... $values)
getenv(?string $name=null, bool $local_only=false)
vfprintf($stream, string $format, array $values)
fopen(string $filename, string $mode, bool $use_include_path=false, $context=null)
PW32CP const struct php_win32_cp * php_win32_cp_set_by_id(DWORD id)
#define php_win32_cp_setup()
memset(ptr, 0, type->size)
zend_ffi_ctype_name_buf buf
zend_op_array *(* compile_string)(zend_string *source_string, const char *filename, zend_compile_position position)
zend_op_array *(* compile_file)(zend_file_handle *file_handle, int type)
zend_auto_global_callback auto_global_callback
zend_string * opened_path
void(* random_bytes_insecure_function)(zend_random_bytes_insecure_state *state, void *bytes, size_t size)
char *(* getenv_function)(const char *name, size_t name_len)
void(* printf_to_smart_str_function)(smart_str *buf, const char *format, va_list ap)
size_t(* printf_function)(const char *format,...) ZEND_ATTRIBUTE_PTR_FORMAT(printf
size_t size_t(* write_function)(const char *str, size_t str_length)
zend_string *(* resolve_path_function)(zend_string *filename)
void(* printf_to_smart_string_function)(smart_string *buf, const char *format, va_list ap)
void(* message_handler)(zend_long message, const void *data)
void(* on_timeout)(int seconds)
zval *(* get_configuration_directive)(zend_string *name)
zend_result(* stream_open_function)(zend_file_handle *handle)
FILE *(* fopen_function)(zend_string *filename, zend_string **opened_path)
void(* ticks_function)(int ticks)
void(* error_function)(int type, zend_string *error_filename, const uint32_t error_lineno, zend_string *message)
zend_result(* random_bytes_function)(void *bytes, size_t size, char *errstr, size_t errstr_size)
ZEND_API zval * zend_get_configuration_directive(zend_string *name)
ZEND_API zend_string * zend_vstrpprintf(size_t max_len, const char *format, va_list ap)
ZEND_API zend_utility_values zend_uv
ZEND_API zend_result zend_execute_script(int type, zval *retval, zend_file_handle *file_handle)
ZEND_API size_t zend_map_ptr_static_size
ZEND_API ZEND_COLD void zend_error_unchecked(int type, const char *format,...)
#define GLOBAL_FUNCTION_TABLE
ZEND_API bool zend_make_printable_zval(zval *expr, zval *expr_copy)
ZEND_API char * zend_make_compiled_string_description(const char *name)
ZEND_API size_t zend_spprintf_unchecked(char **message, size_t max_len, const char *format,...)
ZEND_API zend_result zend_execute_scripts(int type, zval *retval, int file_count,...)
ZEND_API zend_string * zend_strpprintf(size_t max_len, const char *format,...)
ZEND_API ZEND_COLD ZEND_NORETURN void _zend_bailout(const char *filename, uint32_t lineno)
ZEND_API void(* zend_error_cb)(int type, zend_string *error_filename, const uint32_t error_lineno, zend_string *message)
ZEND_ATTRIBUTE_NONNULL ZEND_API void(* zend_random_bytes_insecure)(zend_random_bytes_insecure_state *state, void *bytes, size_t size)
ZEND_API ZEND_COLD void zend_error_zstr(int type, zend_string *message)
ZEND_API ZEND_COLD void zend_error_at(int type, zend_string *filename, uint32_t lineno, const char *format,...)
ZEND_API void zend_alloc_ce_cache(zend_string *type_name)
#define GLOBAL_AUTO_GLOBALS_TABLE
ZEND_API FILE *(* zend_fopen)(zend_string *filename, zend_string **opened_path)
ZEND_API ZEND_COLD void zend_error_zstr_at(int orig_type, zend_string *error_filename, uint32_t error_lineno, zend_string *message)
ZEND_API ZEND_COLD ZEND_NORETURN void zend_error_noreturn(int type, const char *format,...)
#define PRINT_ZVAL_INDENT
#define SIGNAL_CHECK_DEFAULT
zend_result zend_post_startup(void)
ZEND_API ZEND_COLD void zend_argument_count_error(const char *format,...)
void free_estring(char **str_p)
ZEND_API zend_string * zend_strpprintf_unchecked(size_t max_len, const char *format,...)
void zend_register_standard_ini_entries(void)
ZEND_API ZEND_COLD void zend_output_debug_string(bool trigger_break, const char *format,...)
ZEND_API size_t zend_map_ptr_static_last
#define COMPILED_STRING_DESCRIPTION_FORMAT
ZEND_API zend_string * zend_print_zval_r_to_str(zval *expr, int indent)
ZEND_API zend_result(* zend_stream_open_function)(zend_file_handle *handle)
ZEND_API void zend_print_zval_r(zval *expr, int indent)
void zend_print_flat_zval_r_to_buf(smart_str *buf, zval *expr)
void zend_set_utility_values(zend_utility_values *utility_values)
void(* zend_printf_to_smart_str)(smart_str *buf, const char *format, va_list ap)
ZEND_API const char * get_zend_version(void)
ZEND_API zend_result(* zend_post_startup_cb)(void)
#define zend_error_impl(type, format)
#define zend_error_noreturn_impl(type, format)
ZEND_API ZEND_COLD void zend_throw_error(zend_class_entry *exception_ce, const char *format,...)
ZEND_API zend_class_entry * zend_standard_class_def
ZEND_API void zend_activate(void)
ZEND_API ZEND_COLD ZEND_NORETURN void zend_error_at_noreturn(int type, zend_string *filename, uint32_t lineno, const char *format,...)
ZEND_API ZEND_COLD void zend_type_error(const char *format,...)
ZEND_API void(* zend_post_shutdown_cb)(void)
void zend_call_destructors(void)
#define GLOBAL_CONSTANTS_TABLE
ZEND_API ZEND_COLD void zend_value_error(const char *format,...)
ZEND_API bool zend_dtrace_enabled
ZEND_API void zend_deactivate(void)
ZEND_API size_t zend_get_page_size(void)
ZEND_API ZEND_COLD ZEND_NORETURN void zend_error_noreturn_unchecked(int type, const char *format,...)
ZEND_API ZEND_COLD void zend_error(int type, const char *format,...)
ZEND_API void * zend_map_ptr_new_static(void)
ZEND_ATTRIBUTE_NONNULL ZEND_API zend_result(* zend_random_bytes)(void *bytes, size_t size, char *errstr, size_t errstr_size)
ZEND_API zend_string *(* zend_resolve_path)(zend_string *filename)
ZEND_API ZEND_COLD void zend_illegal_container_offset(const zend_string *container, const zval *offset, int type)
ZEND_API void(* zend_accel_schedule_restart_hook)(int reason)
#define SAVE_STACK(stack)
ZEND_API size_t zend_spprintf(char **message, size_t max_len, const char *format,...)
#define ZEND_CORE_VERSION_INFO
#define compiler_options_default
ZEND_API size_t(* zend_printf)(const char *format,...)
void(* zend_on_timeout)(int seconds)
ZEND_API void zend_map_ptr_reset(void)
ZEND_API void zend_print_flat_zval_r(zval *expr)
void(* zend_printf_to_smart_string)(smart_string *buf, const char *format, va_list ap)
void zend_startup(zend_utility_functions *utility_functions)
ZEND_API ZEND_COLD void zend_user_exception_handler(void)
ZEND_API void zend_map_ptr_extend(size_t last)
ZEND_API ZEND_COLD ZEND_NORETURN void zend_strerror_noreturn(int type, int errn, const char *message)
#define RESTORE_STACK(stack)
ZEND_API void zend_free_recorded_errors(void)
ZEND_API void * zend_map_ptr_new(void)
ZEND_API void zend_append_version_info(const zend_extension *extension)
ZEND_API void zend_begin_record_errors(void)
ZEND_API size_t zend_print_zval(zval *expr, int indent)
#define GLOBAL_CLASS_TABLE
ZEND_API size_t zend_vspprintf(char **pbuf, size_t max_len, const char *format, va_list ap)
ZEND_API void(* zend_ticks_function)(int ticks)
ZEND_API void(* zend_interrupt_function)(zend_execute_data *execute_data)
ZEND_API char *(* zend_getenv)(const char *name, size_t name_len)
ZEND_API void zend_emit_recorded_errors(void)
ZEND_API zend_write_func_t zend_write
ZEND_API void zend_message_dispatcher(zend_long message, const void *data)
#define short_tags_default
void zend_unload_modules(void)
struct _zend_utility_functions zend_utility_functions
struct _zend_error_info zend_error_info
size_t(* zend_write_func_t)(const char *str, size_t str_length)
struct _zend_utility_values zend_utility_values
ZEND_API const char * zend_get_type_by_const(int type)
ZEND_API HashTable module_registry
ZEND_API const char * zend_zval_type_name(const zval *arg)
void module_destructor(zend_module_entry *module)
ZEND_API void zend_destroy_modules(void)
#define call_user_function(function_table, object, function_name, retval_ptr, param_count, params)
ZEND_API void start_memory_manager(void)
#define estrndup(s, length)
#define efree_size(ptr, size)
#define ZEND_MM_ALIGNED_SIZE_EX(size, alignment)
#define perealloc(ptr, size, persistent)
#define pefree(ptr, persistent)
#define pemalloc(size, persistent)
#define erealloc(ptr, size)
void zend_attributes_shutdown(void)
zend_result zend_startup_builtin_functions(void)
error_reporting(?int $error_level=null)
exit(string|int $status=0)
zend_string_release_ex(func->internal_function.function_name, 0)
ZEND_API zend_result zend_register_auto_global(zend_string *name, bool jit, zend_auto_global_callback auto_global_callback)
ZEND_API zend_executor_globals executor_globals
ZEND_API bool zend_is_compiling(void)
ZEND_API zend_compiler_globals compiler_globals
ZEND_API zend_op_array *(* zend_compile_file)(zend_file_handle *file_handle, int type)
ZEND_API zend_op_array *(* zend_compile_string)(zend_string *source_string, const char *filename, zend_compile_position position)
ZEND_API int zend_get_compiled_lineno(void)
ZEND_API zend_string * zend_get_compiled_filename(void)
void shutdown_compiler(void)
ZEND_API zend_result zend_unmangle_property_name_ex(const zend_string *name, const char **class_name, const char **prop_name, size_t *prop_len)
void startup_scanner(void)
#define ZEND_USER_CODE(type)
ZEND_API void destroy_op_array(zend_op_array *op_array)
#define ZEND_FUNCTION_DTOR
struct _zend_op_array zend_op_array
#define ZEND_COMPILE_DEFAULT
ZEND_API void zend_destroy_static_vars(zend_op_array *op_array)
void shutdown_scanner(void)
void zend_class_add_ref(zval *zv)
struct _zend_auto_global zend_auto_global
void zend_register_standard_constants(void)
void zend_startup_constants(void)
#define ZEND_CONSTANT_DTOR
void zend_cpu_startup(void)
#define E_USER_DEPRECATED
#define E_RECOVERABLE_ERROR
#define E_COMPILE_WARNING
void zend_exception_restore(void)
ZEND_API bool zend_is_unwind_exit(const zend_object *ex)
ZEND_API zend_class_entry * zend_ce_value_error
ZEND_API zend_class_entry * zend_ce_type_error
ZEND_API ZEND_COLD zend_result zend_exception_error(zend_object *ex, int severity)
ZEND_API ZEND_COLD zend_object * zend_throw_exception(zend_class_entry *exception_ce, const char *message, zend_long code)
ZEND_API void(* zend_throw_exception_hook)(zend_object *ex)
ZEND_API zend_class_entry * zend_ce_parse_error
ZEND_API zend_class_entry * zend_ce_argument_count_error
ZEND_API zend_class_entry * zend_ce_error
ZEND_API void(ZEND_FASTCALL *zend_touch_vm_stack_data)(void *vm_stack_data)
ZEND_API uint32_t zend_get_executed_lineno(void)
ZEND_API const char * zend_get_executed_filename(void)
void shutdown_destructors(void)
void shutdown_executor(void)
ZEND_API void(* zend_execute_ex)(zend_execute_data *execute_data)
ZEND_API void(* zend_execute_internal)(zend_execute_data *execute_data, zval *return_value)
ZEND_API void zend_execute(zend_op_array *op_array, zval *return_value)
ZEND_API void execute_ex(zend_execute_data *execute_data)
ZEND_API zend_string * zend_get_executed_filename_ex(void)
ZEND_API bool zend_is_executing(void)
ZEND_API void zend_init_internal_run_time_cache(void)
void zend_shutdown_extensions(void)
ZEND_API void zend_reset_internal_run_time_cache(void)
void zend_startup_extensions_mechanism(void)
struct _zend_extension zend_extension
#define ZEND_FIBER_DEFAULT_C_STACK_SIZE
zend_function ** zend_flf_functions
ZEND_API void ** zend_flf_handlers
ZEND_API bool gc_protect(bool protect)
ZEND_API int(* gc_collect_cycles)(void)
ZEND_API int zend_gc_collect_cycles(void)
struct _zend_ini_scanner_globals zend_ini_scanner_globals
struct _zend_executor_globals zend_executor_globals
struct _zend_compiler_globals zend_compiler_globals
struct _zend_php_scanner_globals zend_php_scanner_globals
ZEND_API zend_ini_scanner_globals ini_scanner_globals
ZEND_API zend_php_scanner_globals language_scanner_globals
ZEND_API void ZEND_FASTCALL zend_hash_destroy(HashTable *ht)
ZEND_API void ZEND_FASTCALL zend_hash_graceful_reverse_destroy(HashTable *ht)
ZEND_API void ZEND_FASTCALL zend_hash_copy(HashTable *target, HashTable *source, copy_ctor_func_t pCopyConstructor)
ZEND_API zval *ZEND_FASTCALL zend_hash_add_empty_element(HashTable *ht, zend_string *key)
ZEND_API const HashTable zend_empty_array
#define zend_hash_init(ht, nSize, pHashFunction, pDestructor, persistent)
#define ZEND_HASH_FOREACH_END()
#define ZEND_HASH_FOREACH_KEY_VAL_IND(ht, _h, _key, _val)
void zend_startup_hrtime(void)
ZEND_API void zend_ini_dtor(HashTable *ini_directives)
ZEND_API void zend_ini_deactivate(void)
ZEND_API zend_ulong zend_ini_parse_uquantity_warn(zend_string *value, zend_string *setting)
ZEND_API bool zend_ini_parse_bool(zend_string *str)
ZEND_API zend_result zend_register_ini_entries_ex(const zend_ini_entry_def *ini_entry, int module_number, int module_type)
ZEND_API zend_long zend_ini_parse_quantity_warn(zend_string *value, zend_string *setting)
ZEND_API void zend_ini_startup(void)
#define ZEND_INI_STAGE_SHUTDOWN
ZEND_API void zend_ini_refresh_caches(int stage)
ZEND_API void zend_copy_ini_directives(void)
#define ZEND_INI_STAGE_STARTUP
#define ZEND_INI_MH(name)
#define ZEND_INI_DISP(name)
#define STD_ZEND_INI_BOOLEAN(name, default_value, modifiable, on_modify, property_name, struct_type, struct_ptr)
#define ZEND_INI_ENTRY(name, default_value, modifiable, on_modify)
#define ZEND_INI_GET_ADDR()
#define ZEND_INI_ENTRY3_EX(name, default_value, modifiable, on_modify, arg1, arg2, arg3, displayer)
#define STD_ZEND_INI_ENTRY(name, default_value, modifiable, on_modify, property_name, struct_type, struct_ptr)
struct _zend_file_handle zend_file_handle
void zend_init_rsrc_list_dtors(void)
void zend_destroy_rsrc_list_dtors(void)
void zend_init_rsrc_plist(void)
void zend_destroy_rsrc_list(HashTable *ht)
struct _zend_string zend_string
#define ZEND_MAP_PTR_PTR2OFFSET(ptr)
#define ZEND_MAP_PTR_BIASED_BASE(real_base)
#define ZEND_MAP_PTR_NEW_OFFSET()
#define zend_max_execution_timer_init()
struct _zend_module_entry zend_module_entry
#define MODULE_PERSISTENT
ZEND_API zend_result zend_multibyte_set_script_encoding_by_string(const char *new_value, size_t new_value_length)
ZEND_API const zend_multibyte_functions * zend_multibyte_get_functions(void)
struct _zend_encoding zend_encoding
ZEND_API HashTable * zend_get_properties_for(zval *obj, zend_prop_purpose purpose)
ZEND_API uint32_t * zend_get_recursion_guard(zend_object *zobj)
#define zend_release_properties(ht)
@ ZEND_PROP_PURPOSE_DEBUG
ZEND_API void zend_observer_error_register(zend_observer_error_cb cb)
ZEND_API void zend_observer_activate(void)
ZEND_API zend_string *ZEND_FASTCALL zval_get_string_func(zval *op)
zend_result zend_optimizer_startup(void)
zend_result zend_optimizer_shutdown(void)
#define ZEND_ATTRIBUTE_NONNULL
#define ZEND_UNREACHABLE()
#define UNEXPECTED(condition)
struct _zend_class_entry zend_class_entry
struct _zend_object zend_object
ZEND_API int zend_stack_push(zend_stack *stack, const void *element)
ZEND_API void * zend_stack_top(const zend_stack *stack)
ZEND_API void zend_stack_del_top(zend_stack *stack)
struct _zend_stack zend_stack
ZEND_API void zend_interned_strings_init(void)
ZEND_API void zend_interned_strings_dtor(void)
ZEND_API zend_string_init_interned_func_t zend_string_init_interned
#define ZSTR_IS_INTERNED(s)
#define ZSTR_EMPTY_ALLOC()
#define zend_string_equals_literal_ci(str, c)
ZEND_API int zend_shutdown_strtod(void)
#define Z_OBJ_HANDLER_P(zv_p, hf)
#define GC_PROTECT_RECURSION(p)
#define ZEND_GUARD_OR_GC_PROTECT_RECURSION(pg, t, zobj)
#define IS_STR_CLASS_NAME_MAP_PTR
#define GC_SET_REFCOUNT(p, rc)
#define Z_REFVAL_P(zval_p)
#define Z_ARRVAL_P(zval_p)
#define ZVAL_STR_COPY(z, s)
struct _zend_array HashTable
#define Z_COUNTED_P(zval_p)
#define ZSTR_HAS_CE_CACHE(s)
#define GC_TRY_UNPROTECT_RECURSION(p)
#define GC_UNPROTECT_RECURSION(p)
#define Z_OBJPROP_P(zval_p)
#define ZEND_GUARD_OR_GC_IS_RECURSIVE(pg, t, zobj)
ZEND_RESULT_CODE zend_result
#define ZEND_GUARD_OR_GC_UNPROTECT_RECURSION(pg, t, zobj)
#define GC_IS_RECURSIVE(p)
struct _zend_execute_data zend_execute_data
#define ZVAL_COPY_VALUE(z, v)
#define GC_ADD_FLAGS(p, flags)
ZEND_API void zval_ptr_dtor(zval *zval_ptr)
CWD_API void virtual_cwd_shutdown(void)
CWD_API void virtual_cwd_activate(void)
CWD_API void virtual_cwd_deactivate(void)
CWD_API void virtual_cwd_startup(void)
#define ZEND_VM_SET_OPCODE_HANDLER(opline)
#define ZEND_INCLUDE_OR_EVAL
#define ZEND_CALL_TRAMPOLINE
#define ZEND_HANDLE_EXCEPTION