From c774be97f4387d329888106c8eef7e624c1d9a83 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Mon, 2 Feb 2026 10:47:40 +0100 Subject: [PATCH 1/3] Autotools: Update config.{guess,sub} to 2025-07-10 (#19129) ``` wget -O build/config.guess https://git.savannah.gnu.org/cgit/config.git/plain/config.guess wget -O build/config.sub https://git.savannah.gnu.org/cgit/config.git/plain/config.sub ``` --- build/config.guess | 17 ++++++++++------- build/config.sub | 28 +++++++++++++++++++--------- 2 files changed, 29 insertions(+), 16 deletions(-) diff --git a/build/config.guess b/build/config.guess index 48a684601bd23..a9d01fde46176 100755 --- a/build/config.guess +++ b/build/config.guess @@ -1,10 +1,10 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2024 Free Software Foundation, Inc. +# Copyright 1992-2025 Free Software Foundation, Inc. # shellcheck disable=SC2006,SC2268 # see below for rationale -timestamp='2024-07-27' +timestamp='2025-07-10' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -60,7 +60,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2024 Free Software Foundation, Inc. +Copyright 1992-2025 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -1597,8 +1597,11 @@ EOF *:Unleashed:*:*) GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE ;; - *:Ironclad:*:*) - GUESS=$UNAME_MACHINE-unknown-ironclad + x86_64:[Ii]ronclad:*:*|i?86:[Ii]ronclad:*:*) + GUESS=$UNAME_MACHINE-pc-ironclad-mlibc + ;; + *:[Ii]ronclad:*:*) + GUESS=$UNAME_MACHINE-unknown-ironclad-mlibc ;; esac @@ -1808,8 +1811,8 @@ fi exit 1 # Local variables: -# eval: (add-hook 'before-save-hook 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp nil t) # time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-format: "%Y-%02m-%02d" # time-stamp-end: "'" # End: diff --git a/build/config.sub b/build/config.sub index 4aaae46f6f744..3d35cde174de9 100755 --- a/build/config.sub +++ b/build/config.sub @@ -1,10 +1,10 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright 1992-2024 Free Software Foundation, Inc. +# Copyright 1992-2025 Free Software Foundation, Inc. # shellcheck disable=SC2006,SC2268,SC2162 # see below for rationale -timestamp='2024-05-27' +timestamp='2025-07-10' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -76,7 +76,7 @@ Report bugs and patches to ." version="\ GNU config.sub ($timestamp) -Copyright 1992-2024 Free Software Foundation, Inc. +Copyright 1992-2025 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -145,6 +145,7 @@ case $1 in | kfreebsd*-gnu* \ | knetbsd*-gnu* \ | kopensolaris*-gnu* \ + | ironclad-* \ | linux-* \ | managarm-* \ | netbsd*-eabi* \ @@ -242,7 +243,6 @@ case $1 in | rombug \ | semi \ | sequent* \ - | siemens \ | sgi* \ | siemens \ | sim \ @@ -261,7 +261,7 @@ case $1 in basic_machine=$field1-$field2 basic_os= ;; - zephyr*) + tock* | zephyr*) basic_machine=$field1-unknown basic_os=$field2 ;; @@ -1194,7 +1194,7 @@ case $cpu-$vendor in xscale-* | xscalee[bl]-*) cpu=`echo "$cpu" | sed 's/^xscale/arm/'` ;; - arm64-* | aarch64le-*) + arm64-* | aarch64le-* | arm64_32-*) cpu=aarch64 ;; @@ -1321,6 +1321,7 @@ case $cpu-$vendor in | i960 \ | ia16 \ | ia64 \ + | intelgt \ | ip2k \ | iq2000 \ | javascript \ @@ -1522,6 +1523,10 @@ EOF kernel=nto os=`echo "$basic_os" | sed -e 's|nto|qnx|'` ;; + ironclad*) + kernel=ironclad + os=`echo "$basic_os" | sed -e 's|ironclad|mlibc|'` + ;; linux*) kernel=linux os=`echo "$basic_os" | sed -e 's|linux|gnu|'` @@ -1976,6 +1981,7 @@ case $os in | atheos* \ | auroraux* \ | aux* \ + | banan_os* \ | beos* \ | bitrig* \ | bme* \ @@ -2022,7 +2028,6 @@ case $os in | ios* \ | iris* \ | irix* \ - | ironclad* \ | isc* \ | its* \ | l4re* \ @@ -2118,6 +2123,7 @@ case $os in | sysv* \ | tenex* \ | tirtos* \ + | tock* \ | toppers* \ | tops10* \ | tops20* \ @@ -2214,6 +2220,8 @@ case $kernel-$os-$obj in ;; uclinux-uclibc*- | uclinux-gnu*- ) ;; + ironclad-mlibc*-) + ;; managarm-mlibc*- | managarm-kernel*- ) ;; windows*-msvc*-) @@ -2249,6 +2257,8 @@ case $kernel-$os-$obj in ;; *-eabi*- | *-gnueabi*-) ;; + ios*-simulator- | tvos*-simulator- | watchos*-simulator- ) + ;; none--*) # None (no kernel, i.e. freestanding / bare metal), # can be paired with an machine code file format @@ -2347,8 +2357,8 @@ echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}" exit # Local variables: -# eval: (add-hook 'before-save-hook 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp nil t) # time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-format: "%Y-%02m-%02d" # time-stamp-end: "'" # End: From ad0baf0bb2fadbce92cc4cbf8971bd8f3e7b4467 Mon Sep 17 00:00:00 2001 From: Arshid Date: Mon, 2 Feb 2026 18:35:42 +0530 Subject: [PATCH 2/3] [skip ci] Drop end argument from gc_call_destructors_in_fiber() (GH-21099) --- Zend/zend_gc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Zend/zend_gc.c b/Zend/zend_gc.c index f2fe29802a06f..fc0c9fc0634af 100644 --- a/Zend/zend_gc.c +++ b/Zend/zend_gc.c @@ -1944,7 +1944,7 @@ static void remember_prev_exception(zend_object **prev_exception) } } -static zend_never_inline void gc_call_destructors_in_fiber(uint32_t end) +static zend_never_inline void gc_call_destructors_in_fiber(void) { ZEND_ASSERT(!GC_G(dtor_fiber_running)); @@ -2093,7 +2093,7 @@ ZEND_API int zend_gc_collect_cycles(void) if (EXPECTED(!EG(active_fiber))) { gc_call_destructors(GC_FIRST_ROOT, end, NULL); } else { - gc_call_destructors_in_fiber(end); + gc_call_destructors_in_fiber(); } GC_G(dtor_time) += zend_hrtime() - dtor_start_time; From 32bd33983d262b4e19b12c76fd2957614800e7f2 Mon Sep 17 00:00:00 2001 From: Khaled Alam Date: Mon, 2 Feb 2026 15:14:15 +0200 Subject: [PATCH 3/3] Remove unreachable code after zend_error_noreturn calls (GH-20983) --- Zend/zend_API.c | 2 -- Zend/zend_alloc.c | 1 - Zend/zend_compile.c | 6 ------ Zend/zend_execute_API.c | 3 --- Zend/zend_inheritance.c | 3 --- Zend/zend_vm_execute.h | 2 -- Zend/zend_vm_gen.php | 3 --- ext/pdo/pdo.c | 3 --- ext/pgsql/pgsql.c | 1 - main/output.c | 3 --- 10 files changed, 27 deletions(-) diff --git a/Zend/zend_API.c b/Zend/zend_API.c index a2a50e3a79fc6..e72043ead5870 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -2430,8 +2430,6 @@ ZEND_API zend_result zend_startup_module_ex(zend_module_entry *module) /* {{{ */ EG(current_module) = module; if (module->module_startup_func(module->type, module->module_number)==FAILURE) { zend_error_noreturn(E_CORE_ERROR,"Unable to start %s module", module->name); - EG(current_module) = NULL; - return FAILURE; } EG(current_module) = NULL; } diff --git a/Zend/zend_alloc.c b/Zend/zend_alloc.c index 1157dc98fa615..ffb4d69066b97 100644 --- a/Zend/zend_alloc.c +++ b/Zend/zend_alloc.c @@ -1480,7 +1480,6 @@ static zend_always_inline void *zend_mm_alloc_heap(zend_mm_heap *heap, size_t si size = ZEND_MM_ALIGNED_SIZE(size) + ZEND_MM_ALIGNED_SIZE(sizeof(zend_mm_debug_info)); if (UNEXPECTED(size < real_size)) { zend_error_noreturn(E_ERROR, "Possible integer overflow in memory allocation (%zu + %zu)", ZEND_MM_ALIGNED_SIZE(real_size), ZEND_MM_ALIGNED_SIZE(sizeof(zend_mm_debug_info))); - return NULL; } #endif if (EXPECTED(size <= ZEND_MM_MAX_SMALL_SIZE)) { diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index a013efab85964..2b2235e5df16b 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -2670,7 +2670,6 @@ static void zend_emit_return_type_check( ZEND_ASSERT(!implicit); zend_error_noreturn(E_COMPILE_ERROR, "A never-returning %s must not return", CG(active_class_entry) != NULL ? "method" : "function"); - return; } if (!expr && !implicit) { @@ -7678,14 +7677,12 @@ static zend_type zend_compile_typename_ex( zend_string *standard_type_str = zend_type_to_string(single_type); zend_error_noreturn(E_COMPILE_ERROR, "Type %s cannot be part of an intersection type", ZSTR_VAL(standard_type_str)); - zend_string_release_ex(standard_type_str, false); } /* An intersection of standard types cannot exist so invalidate it */ if (ZEND_TYPE_IS_ONLY_MASK(single_type)) { zend_string *standard_type_str = zend_type_to_string(single_type); zend_error_noreturn(E_COMPILE_ERROR, "Type %s cannot be part of an intersection type", ZSTR_VAL(standard_type_str)); - zend_string_release_ex(standard_type_str, false); } /* Check for "self" and "parent" too */ if ( @@ -7918,7 +7915,6 @@ static void zend_compile_attributes( if (error != NULL) { if (delayed_target_validation == NULL) { zend_error_noreturn(E_COMPILE_ERROR, "%s", ZSTR_VAL(error)); - zend_string_efree(error); } else { attr->validation_error = error; } @@ -10483,7 +10479,6 @@ static bool zend_try_ct_eval_array(zval *result, zend_ast *ast) /* {{{ */ goto fail; default: zend_error_noreturn(E_COMPILE_ERROR, "Illegal offset type"); - break; } } else if (!zend_hash_next_index_insert(Z_ARRVAL_P(result), value)) { fail: @@ -11687,7 +11682,6 @@ static void zend_compile_const_expr_class_name(zend_ast **ast_ptr) /* {{{ */ case ZEND_FETCH_CLASS_STATIC: zend_error_noreturn(E_COMPILE_ERROR, "static::class cannot be used for compile-time class name resolution"); - return; EMPTY_SWITCH_DEFAULT_CASE() } } diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index 69337e27fd530..f9309be99f0e8 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -1562,7 +1562,6 @@ static void zend_set_timeout_ex(zend_long seconds, bool reset_signals) /* {{{ */ if (!DeleteTimerQueueTimer(NULL, tq_timer, INVALID_HANDLE_VALUE)) { tq_timer = NULL; zend_error_noreturn(E_ERROR, "Could not delete queued timer"); - return; } tq_timer = NULL; } @@ -1572,7 +1571,6 @@ static void zend_set_timeout_ex(zend_long seconds, bool reset_signals) /* {{{ */ if (!CreateTimerQueueTimer(&tq_timer, NULL, (WAITORTIMERCALLBACK)tq_timer_cb, (VOID*)eg, seconds*1000, 0, WT_EXECUTEONLYONCE)) { tq_timer = NULL; zend_error_noreturn(E_ERROR, "Could not queue new timer"); - return; } #elif defined(ZEND_MAX_EXECUTION_TIMERS) if (seconds > 0) { @@ -1659,7 +1657,6 @@ void zend_unset_timeout(void) /* {{{ */ zend_atomic_bool_store_ex(&EG(timed_out), false); tq_timer = NULL; zend_error_noreturn(E_ERROR, "Could not delete queued timer"); - return; } tq_timer = NULL; } diff --git a/Zend/zend_inheritance.c b/Zend/zend_inheritance.c index ce576def24ddd..bd33515050c8d 100644 --- a/Zend/zend_inheritance.c +++ b/Zend/zend_inheritance.c @@ -2273,7 +2273,6 @@ static void zend_do_implement_interfaces(zend_class_entry *ce, zend_class_entry zend_get_object_type_uc(ce), ZSTR_VAL(ce->name), ZSTR_VAL(iface->name)); - return; } /* skip duplications */ ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(&iface->constants_table, key, c) { @@ -2524,7 +2523,6 @@ static uint32_t zend_check_trait_usage(const zend_class_entry *ce, const zend_cl { if (UNEXPECTED((trait->ce_flags & ZEND_ACC_TRAIT) != ZEND_ACC_TRAIT)) { zend_error_noreturn(E_COMPILE_ERROR, "Class %s is not a trait, Only traits may be used in 'as' and 'insteadof' statements", ZSTR_VAL(trait->name)); - return 0; } for (uint32_t i = 0; i < ce->num_traits; i++) { @@ -2533,7 +2531,6 @@ static uint32_t zend_check_trait_usage(const zend_class_entry *ce, const zend_cl } } zend_error_noreturn(E_COMPILE_ERROR, "Required Trait %s wasn't added to %s", ZSTR_VAL(trait->name), ZSTR_VAL(ce->name)); - return 0; } /* }}} */ diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 77edd6b7cc553..4745b2a2652bd 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -53415,7 +53415,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_NULL_HANDLER( SAVE_OPLINE(); zend_error_noreturn(E_ERROR, "Invalid opcode %d/%d/%d.", OPLINE->opcode, OPLINE->op1_type, OPLINE->op2_type); - ZEND_VM_NEXT_OPCODE(); /* Never reached */ } @@ -105694,7 +105693,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_NULL_TAILCALL_HAND SAVE_OPLINE(); zend_error_noreturn(E_ERROR, "Invalid opcode %d/%d/%d.", OPLINE->opcode, OPLINE->op1_type, OPLINE->op2_type); - ZEND_VM_NEXT_OPCODE(); /* Never reached */ } static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_HALT_TAILCALL_HANDLER(ZEND_OPCODE_HANDLER_ARGS) diff --git a/Zend/zend_vm_gen.php b/Zend/zend_vm_gen.php index 38c20b24da2e9..f8989b2336f47 100755 --- a/Zend/zend_vm_gen.php +++ b/Zend/zend_vm_gen.php @@ -1583,7 +1583,6 @@ function gen_null_handler($f, $kind) { out($f,"\n"); out($f,"\tSAVE_OPLINE();\n"); out($f,"\tzend_error_noreturn(E_ERROR, \"Invalid opcode %d/%d/%d.\", OPLINE->opcode, OPLINE->op1_type, OPLINE->op2_type);\n"); - out($f,"\tZEND_VM_NEXT_OPCODE(); /* Never reached */\n"); out($f,"}\n\n"); } @@ -1812,12 +1811,10 @@ function gen_executor_code($f, $spec, $kind, $prolog, &$switch_labels = array()) case ZEND_VM_KIND_SWITCH: out($f,"default: ZEND_NULL_LABEL:\n"); out($f,"\tzend_error_noreturn(E_ERROR, \"Invalid opcode %d/%d/%d.\", OPLINE->opcode, OPLINE->op1_type, OPLINE->op2_type);\n"); - out($f,"\tZEND_VM_NEXT_OPCODE(); /* Never reached */\n"); break; case ZEND_VM_KIND_GOTO: out($f,"ZEND_NULL_LABEL:\n"); out($f,"\tzend_error_noreturn(E_ERROR, \"Invalid opcode %d/%d/%d.\", OPLINE->opcode, OPLINE->op1_type, OPLINE->op2_type);\n"); - out($f,"\tZEND_VM_NEXT_OPCODE(); /* Never reached */\n"); break; case ZEND_VM_KIND_HYBRID: out($f,"\t\t\tHYBRID_CASE(HYBRID_HALT):\n"); diff --git a/ext/pdo/pdo.c b/ext/pdo/pdo.c index a213fa1c87271..2966cd0be5690 100644 --- a/ext/pdo/pdo.c +++ b/ext/pdo/pdo.c @@ -115,11 +115,9 @@ PDO_API zend_result php_pdo_register_driver(const pdo_driver_t *driver) /* {{{ * if (driver->api_version != PDO_DRIVER_API) { zend_error_noreturn(E_ERROR, "PDO: driver %s requires PDO API version " ZEND_ULONG_FMT "; this is PDO version %d", driver->driver_name, driver->api_version, PDO_DRIVER_API); - return FAILURE; } if (!zend_hash_str_exists(&module_registry, "pdo", sizeof("pdo") - 1)) { zend_error_noreturn(E_ERROR, "The PDO extension must be loaded first in order to load PDO drivers"); - return FAILURE; /* NOTREACHED */ } return zend_hash_str_add_ptr(&pdo_driver_hash, driver->driver_name, driver->driver_name_len, (void*)driver) != NULL ? SUCCESS : FAILURE; @@ -141,7 +139,6 @@ PDO_API zend_result php_pdo_register_driver_specific_ce(const pdo_driver_t *driv { if (!zend_hash_str_exists(&module_registry, "pdo", sizeof("pdo") - 1)) { zend_error_noreturn(E_ERROR, "The PDO extension must be loaded first in order to load PDO drivers"); - return FAILURE; /* NOTREACHED */ } return zend_hash_str_add_ptr(&pdo_driver_specific_ce_hash, driver->driver_name, diff --git a/ext/pgsql/pgsql.c b/ext/pgsql/pgsql.c index 4bcea1e3e6572..a3a796628bbc2 100644 --- a/ext/pgsql/pgsql.c +++ b/ext/pgsql/pgsql.c @@ -3676,7 +3676,6 @@ PHP_FUNCTION(pg_unescape_bytea) tmp = (char *)PQunescapeBytea((unsigned char*)from, &to_len); if (!tmp) { zend_error_noreturn(E_ERROR, "Out of memory"); - return; } RETVAL_STRINGL(tmp, to_len); diff --git a/main/output.c b/main/output.c index 32de70862c2d8..ff65a0f9a4d8e 100644 --- a/main/output.c +++ b/main/output.c @@ -609,7 +609,6 @@ PHPAPI zend_result php_output_handler_conflict_register(const char *name, size_t if (!EG(current_module)) { zend_error_noreturn(E_ERROR, "Cannot register an output handler conflict outside of MINIT"); - return FAILURE; } str = zend_string_init_interned(name, name_len, 1); zend_hash_update_ptr(&php_output_handler_conflicts, str, check_func); @@ -626,7 +625,6 @@ PHPAPI zend_result php_output_handler_reverse_conflict_register(const char *name if (!EG(current_module)) { zend_error_noreturn(E_ERROR, "Cannot register a reverse output handler conflict outside of MINIT"); - return FAILURE; } if (NULL != (rev_ptr = zend_hash_str_find_ptr(&php_output_handler_reverse_conflicts, name, name_len))) { @@ -663,7 +661,6 @@ PHPAPI zend_result php_output_handler_alias_register(const char *name, size_t na if (!EG(current_module)) { zend_error_noreturn(E_ERROR, "Cannot register an output handler alias outside of MINIT"); - return FAILURE; } str = zend_string_init_interned(name, name_len, 1); zend_hash_update_ptr(&php_output_handler_aliases, str, func);