link.Elf: Don't emit malformed archive headers #25826
Merged
+5
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Closes #25129
Brought to my attention by a post on Ziggit. The self-hosted ELF linker currently initializes all archive header fields to all spaces without any digits, which ld.lld doesn't like.
Tested by compiling
(from #25129 (comment)) using
zig build-lib root.zig -target x86_64-linux-gnu -fno-llvm. Before/after:Side note: There are three different archive definitions in the code base,
std.elf.ar_hdr,link.MachO.Archive.ar_hdrandlink.Wasm.Archive.Header, which each do things in subtly different ways. Maybe it would be useful to consolidate them intostd.aror something like that?