You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The sole NestedJIT lookupFunction('strncasecmp') consumer is lib/JIT/Builtin/Type/Object_::classIdFromRuntimeName, which already calls StringCaseCompare::ensureStrncasecmpLinked but then looks up libcstrncasecmp (always-on) instead of the linked __compiler_strncasecmp ABI.
Category
php-in-php· runtime-shrink (#1492, peer #31655 / #31519 / #15225)Problem
Always-on
LibcExternstill registers libcstrncasecmp(3)even though:strncasecmp()already routes through PHP (CaseCompareJitHelper/__compiler_strncasecmp— php-in-php: strcasecmp()/strncasecmp() JIT via CaseCompareJitHelper PHP — drop libc LLVM (#1492) #15225 / php-in-php: StringCaseCompare NestedJIT → JitVmHelperLink::ensureCompiled (#1492) #23862 / Regression: AOT password_hash(PASSWORD_BCRYPT) segfaults after build — VM/JIT match Zend (re-#26773, ext/standard/password.c) #26861).lookupFunction('strncasecmp')consumer islib/JIT/Builtin/Type/Object_::classIdFromRuntimeName, which already callsStringCaseCompare::ensureStrncasecmpLinkedbut then looks up libcstrncasecmp(always-on) instead of the linked__compiler_strncasecmpABI.lookupFunctionconsumerstrncasecmpType/Object_::classIdFromRuntimeName__compiler_strncasecmp(already ensured)strncasecmp()__compiler_*LibcExternstrncasecmpObject_::classIdFromRuntimeNamestrncasecmp__compiler_strncasecmpphp-src reference
ext/standard/string.c—PHP_FUNCTION(strncasecmp)(semantics stay in PHPVmString/ CaseCompareJitHelper)PHP implementation target
lib/JIT/Builtin/Type/Object_.php— lookupStringCaseCompare::ABI_STRNCASECMPlib/JIT/LibcExtern.php— drop always-on'strncasecmp'rowtest/unit/LibcExternDeadDeclsRuntimeShrinkTest.php+StrcasecmpRuntimeShrinkTest.phpguardsDone when
LibcExternhas no'strncasecmp' =>rowObject_.phplooks up__compiler_strncasecmp(not libcstrncasecmp)strncasecmp()still matches Zend via VM/JITlib/AOT/runtime/*.c