Commit 3a2647b7d3

Alex Rønne Petersen <alex@alexrp.com>
2024-11-02 11:58:23
glibc: Don't build CRT objects that won't be used.
1 parent 4c70aea
Changed files (2)
src/Compilation.zig
@@ -1795,8 +1795,8 @@ pub fn create(gpa: Allocator, arena: Allocator, options: CreateOptions) !*Compil
                             .{ .glibc_crt_file = .crtn_o },
                         });
                     }
-                    if (!is_dyn_lib) {
-                        try comp.queueJob(.{ .glibc_crt_file = .scrt1_o });
+                    if (glibc.needsCrt0(comp.config.output_mode)) |f| {
+                        try comp.queueJobs(&.{.{ .glibc_crt_file = f }});
                     }
                     try comp.queueJobs(&[_]Job{
                         .{ .glibc_shared_objects = {} },
src/glibc.zig
@@ -1357,3 +1357,10 @@ pub fn needsCrtiCrtn(target: std.Target) bool {
         else => true,
     };
 }
+
+pub fn needsCrt0(output_mode: std.builtin.OutputMode) ?CrtFile {
+    return switch (output_mode) {
+        .Obj, .Lib => null,
+        .Exe => .scrt1_o,
+    };
+}