From 43eb9b52ccac894023800115e8395cdb413be14a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carl=20=C3=85stholm?= Date: Wed, 5 Nov 2025 16:34:07 +0100 Subject: [PATCH] link.Elf: Ensure archive header fields are not left blank ld.lld fails with "truncated or malformed archive" errors when reading archive header field values that are not valid numbers. --- src/link/Elf/Archive.zig | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/link/Elf/Archive.zig b/src/link/Elf/Archive.zig index d1216fcbba..dc9b6f2edf 100644 --- a/src/link/Elf/Archive.zig +++ b/src/link/Elf/Archive.zig @@ -118,7 +118,6 @@ pub fn setArHdr(opts: struct { .ar_fmag = undefined, }; @memset(mem.asBytes(&hdr), 0x20); - @memcpy(&hdr.ar_fmag, elf.ARFMAG); { var writer: std.Io.Writer = .fixed(&hdr.ar_name); @@ -129,10 +128,15 @@ pub fn setArHdr(opts: struct { .name_off => |x| writer.print("/{d}", .{x}) catch unreachable, } } + hdr.ar_date[0] = '0'; + hdr.ar_uid[0] = '0'; + hdr.ar_gid[0] = '0'; + hdr.ar_mode[0] = '0'; { var writer: std.Io.Writer = .fixed(&hdr.ar_size); writer.print("{d}", .{opts.size}) catch unreachable; } + hdr.ar_fmag = elf.ARFMAG.*; return hdr; }