From 445c0b36c9046e2d8cf9a1eea7c44603a6a9fad1 Mon Sep 17 00:00:00 2001 From: henderkes Date: Tue, 12 May 2026 11:29:12 +0700 Subject: [PATCH] don't add fno-sanitize=undefined for library builds --- src/Package/Target/php/unix.php | 8 ++++++++ src/StaticPHP/Toolchain/ZigToolchain.php | 4 ---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/Package/Target/php/unix.php b/src/Package/Target/php/unix.php index 71a4fdda..332131fc 100644 --- a/src/Package/Target/php/unix.php +++ b/src/Package/Target/php/unix.php @@ -20,8 +20,11 @@ use StaticPHP\Package\PhpExtensionPackage; use StaticPHP\Package\TargetPackage; use StaticPHP\Runtime\SystemTarget; use StaticPHP\Toolchain\Interface\ToolchainInterface; +use StaticPHP\Toolchain\ToolchainManager; +use StaticPHP\Toolchain\ZigToolchain; use StaticPHP\Util\DirDiff; use StaticPHP\Util\FileSystem; +use StaticPHP\Util\GlobalEnvManager; use StaticPHP\Util\InteractiveTerm; use StaticPHP\Util\SourcePatcher; use StaticPHP\Util\SPCConfigUtil; @@ -90,6 +93,11 @@ trait unix $args = []; $version_id = self::getPHPVersionID(); + // disable undefined behavior sanitizer for zig, trips up on lua minijit and opcache-jit + if (SystemTarget::getTargetOS() === 'Linux' && ToolchainManager::getToolchainClass() === ZigToolchain::class) { + $compiler_extra = getenv('SPC_COMPILER_EXTRA') ?: ''; + GlobalEnvManager::putenv('SPC_COMPILER_EXTRA=' . trim($compiler_extra . ' -fno-sanitize=undefined')); + } // PHP JSON extension is built-in since PHP 8.0 if ($version_id < 80000) { $args[] = '--enable-json'; diff --git a/src/StaticPHP/Toolchain/ZigToolchain.php b/src/StaticPHP/Toolchain/ZigToolchain.php index 8e65d367..63d2127c 100644 --- a/src/StaticPHP/Toolchain/ZigToolchain.php +++ b/src/StaticPHP/Toolchain/ZigToolchain.php @@ -35,10 +35,6 @@ class ZigToolchain implements UnixToolchainInterface GlobalEnvManager::putenv("SPC_CMD_VAR_PHP_MAKE_EXTRA_CFLAGS={$extraCflags}"); GlobalEnvManager::putenv('RANLIB=zig-ranlib'); GlobalEnvManager::putenv('OBJCOPY=zig-objcopy'); - $compiler_extra = getenv('SPC_COMPILER_EXTRA') ?: ''; - if (!str_contains($compiler_extra, '-fno-sanitize=undefined')) { - GlobalEnvManager::putenv('SPC_COMPILER_EXTRA=' . trim($compiler_extra . ' -fno-sanitize=undefined')); - } $extra_libs = getenv('SPC_EXTRA_LIBS') ?: ''; if (!str_contains($extra_libs, '-lunwind')) { // Add unwind library if not already present