From 0ccd2b0c5cdf4bee706b4a9341b97f786b19a978 Mon Sep 17 00:00:00 2001 From: Alex Rønne Petersen Date: Wed, 4 Jun 2025 06:53:14 +0200 Subject: compiler: Always dynamically link executables for Fuchsia. Fuchsia only supports PIE executables, specifically ET_DYN. https://fuchsia.dev/fuchsia-src/concepts/process/program_loading --- src/Compilation/Config.zig | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/Compilation') diff --git a/src/Compilation/Config.zig b/src/Compilation/Config.zig index 3415acf33e..e2dea2b93f 100644 --- a/src/Compilation/Config.zig +++ b/src/Compilation/Config.zig @@ -135,6 +135,7 @@ pub const ResolveError = error{ LibCppRequiresLibC, LibUnwindRequiresLibC, TargetCannotDynamicLink, + TargetCannotStaticLinkExecutables, LibCRequiresDynamicLinking, SharedLibrariesRequireDynamicLinking, ExportMemoryAndDynamicIncompatible, @@ -360,6 +361,10 @@ pub fn resolve(options: Options) ResolveError!Config { if (options.link_mode == .dynamic) return error.TargetCannotDynamicLink; break :b .static; } + if (target.os.tag == .fuchsia and options.output_mode == .Exe) { + if (options.link_mode == .static) return error.TargetCannotStaticLinkExecutables; + break :b .dynamic; + } if (explicitly_exe_or_dyn_lib and link_libc and (target_util.osRequiresLibC(target) or // For these libcs, Zig can only provide dynamic libc when cross-compiling. -- cgit v1.2.3