aboutsummaryrefslogtreecommitdiff
path: root/src/link/Elf.zig
diff options
context:
space:
mode:
authorAlex Rønne Petersen <alex@alexrp.com>2025-04-12 20:03:10 +0200
committerAlex Rønne Petersen <alex@alexrp.com>2025-04-13 01:46:15 +0200
commit6eabdc8972ebe47d9cc71d6d07034096905cd2d5 (patch)
treedeb4418f00a660a76d934b63a9a9ddf523dcd1ee /src/link/Elf.zig
parentd5ac3be6089b24492c209340bc508a5081cc2483 (diff)
downloadzig-6eabdc8972ebe47d9cc71d6d07034096905cd2d5.tar.gz
zig-6eabdc8972ebe47d9cc71d6d07034096905cd2d5.zip
link: Improve handling of --build-id when using LLD.
Diffstat (limited to 'src/link/Elf.zig')
-rw-r--r--src/link/Elf.zig24
1 files changed, 9 insertions, 15 deletions
diff --git a/src/link/Elf.zig b/src/link/Elf.zig
index 00bd940500..a338ec722d 100644
--- a/src/link/Elf.zig
+++ b/src/link/Elf.zig
@@ -1596,8 +1596,8 @@ fn linkWithLLD(self: *Elf, arena: Allocator, tid: Zcu.PerThread.Id, prog_node: s
man.hash.addListOfBytes(self.rpath_table.keys());
if (output_mode == .Exe) {
man.hash.add(self.base.stack_size);
- man.hash.add(self.base.build_id);
}
+ man.hash.add(self.base.build_id);
man.hash.addListOfBytes(self.symbol_wrap_set.keys());
man.hash.add(comp.skip_linker_dependencies);
man.hash.add(self.z_nodelete);
@@ -1753,20 +1753,14 @@ fn linkWithLLD(self: *Elf, arena: Allocator, tid: Zcu.PerThread.Id, prog_node: s
});
}
- if (is_exe_or_dyn_lib) {
- switch (self.base.build_id) {
- .none => {},
- .fast, .uuid, .sha1, .md5 => {
- try argv.append(try std.fmt.allocPrint(arena, "--build-id={s}", .{
- @tagName(self.base.build_id),
- }));
- },
- .hexstring => |hs| {
- try argv.append(try std.fmt.allocPrint(arena, "--build-id=0x{s}", .{
- std.fmt.fmtSliceHexLower(hs.toSlice()),
- }));
- },
- }
+ switch (self.base.build_id) {
+ .none => try argv.append("--build-id=none"),
+ .fast, .uuid, .sha1, .md5 => try argv.append(try std.fmt.allocPrint(arena, "--build-id={s}", .{
+ @tagName(self.base.build_id),
+ })),
+ .hexstring => |hs| try argv.append(try std.fmt.allocPrint(arena, "--build-id=0x{s}", .{
+ std.fmt.fmtSliceHexLower(hs.toSlice()),
+ })),
}
try argv.append(try std.fmt.allocPrint(arena, "--image-base={d}", .{self.image_base}));