Category
php-in-php · runtime-shrink (#1492, peer #32866 / #32868 / re-#32122)
Problem
Builtin\Type::register() still addFunctions an empty always-on shell for __compiler_openssl_pbkdf2 on every JIT/AOT module. OpensslPbkdf2Runtime already owns the ABI (HMAC over __compiler_hash + LLVM hex-decode), but implementIfMissing still lookupFunctions the Type-declared empty decl — leftover Type shells can mint openssl_pbkdf2.1 when Runtime ABI drift lands (#31894 / #32122 class).
Peer #32866 removed openssl_sign/verify Type shells with the same declareAbi / getNamedFunction-first shape.
php-src reference
PHP implementation target
lib/JIT/Builtin/OpensslPbkdf2Runtime.php — declare ABI module-locally (getNamedFunction first + addFunction when absent); stop depending on Type empty decls via lookupFunction
lib/JIT/Builtin/Type.php — remove always-on openssl_pbkdf2 row; OpensslPbkdf2Runtime::ensureLinked from Type::initialize
- Keep
ext/openssl/openssl_pbkdf2.php user-script path; no new runtime/*.c
Repro
# Guard: Type must not always-declare the shell
./script/phpunit.sh --filter TypeDeadOpensslPbkdf2AbiRuntimeShrinkTest
Done when
Category
php-in-php· runtime-shrink (#1492, peer #32866 / #32868 / re-#32122)Problem
Builtin\Type::register()stilladdFunctions an empty always-on shell for__compiler_openssl_pbkdf2on every JIT/AOT module.OpensslPbkdf2Runtimealready owns the ABI (HMAC over__compiler_hash+ LLVM hex-decode), butimplementIfMissingstilllookupFunctions the Type-declared empty decl — leftover Type shells can mintopenssl_pbkdf2.1when Runtime ABI drift lands (#31894 / #32122 class).Peer #32866 removed openssl_sign/verify Type shells with the same
declareAbi/ getNamedFunction-first shape.php-src reference
ext/openssl/openssl.c—PHP_FUNCTION(openssl_pbkdf2)/PKCS5_PBKDF2_HMACPHP implementation target
lib/JIT/Builtin/OpensslPbkdf2Runtime.php— declare ABI module-locally (getNamedFunctionfirst +addFunctionwhen absent); stop depending on Type empty decls vialookupFunctionlib/JIT/Builtin/Type.php— remove always-on openssl_pbkdf2 row;OpensslPbkdf2Runtime::ensureLinkedfromType::initializeext/openssl/openssl_pbkdf2.phpuser-script path; no newruntime/*.cRepro
# Guard: Type must not always-declare the shell ./script/phpunit.sh --filter TypeDeadOpensslPbkdf2AbiRuntimeShrinkTestDone when
Type.phpdoes not always-declare__compiler_openssl_pbkdf2OpensslPbkdf2Runtimeowns the ABI module-locally;Type::initializeensureLinks it./script/phpunit.sh --filter TypeDeadOpensslPbkdf2AbiRuntimeShrinkTestgreen./script/aot-smoke.shstays 8/8runtime/*.c