aboutsummaryrefslogtreecommitdiff
path: root/src/link/Elf.zig
diff options
context:
space:
mode:
authorDillen Meijboom <dillen@brainhive.nl>2024-02-22 23:39:16 +0100
committerAndrew Kelley <andrew@ziglang.org>2024-03-06 17:52:05 -0800
commit377ecc6afb14a112a07c6d2c3570e2b77b12a116 (patch)
tree706ef264ff807f729e37e2aef2b83a8d8e7ab99e /src/link/Elf.zig
parentaa7d16aba1f0b3a9e816684618d16cb1d178a6d3 (diff)
downloadzig-377ecc6afb14a112a07c6d2c3570e2b77b12a116.tar.gz
zig-377ecc6afb14a112a07c6d2c3570e2b77b12a116.zip
feat: add support for --enable-new-dtags and --disable-new-dtags
Diffstat (limited to 'src/link/Elf.zig')
-rw-r--r--src/link/Elf.zig12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/link/Elf.zig b/src/link/Elf.zig
index cd795eb345..1d7dca9517 100644
--- a/src/link/Elf.zig
+++ b/src/link/Elf.zig
@@ -22,6 +22,7 @@ bind_global_refs_locally: bool,
linker_script: ?[]const u8,
version_script: ?[]const u8,
allow_undefined_version: bool,
+enable_new_dtags: ?bool,
print_icf_sections: bool,
print_map: bool,
entry_name: ?[]const u8,
@@ -330,6 +331,7 @@ pub fn createEmpty(
.linker_script = options.linker_script,
.version_script = options.version_script,
.allow_undefined_version = options.allow_undefined_version,
+ .enable_new_dtags = options.enable_new_dtags,
.print_icf_sections = options.print_icf_sections,
.print_map = options.print_map,
};
@@ -2170,11 +2172,12 @@ fn linkWithLLD(self: *Elf, arena: Allocator, prog_node: *std.Progress.Node) !voi
// We are about to obtain this lock, so here we give other processes a chance first.
self.base.releaseLock();
- comptime assert(Compilation.link_hash_implementation_version == 12);
+ comptime assert(Compilation.link_hash_implementation_version == 13);
try man.addOptionalFile(self.linker_script);
try man.addOptionalFile(self.version_script);
man.hash.add(self.allow_undefined_version);
+ man.hash.addOptional(self.enable_new_dtags);
for (comp.objects) |obj| {
_ = try man.addFile(obj.path, null);
man.hash.add(obj.must_link);
@@ -2529,6 +2532,13 @@ fn linkWithLLD(self: *Elf, arena: Allocator, prog_node: *std.Progress.Node) !voi
} else {
try argv.append("--no-undefined-version");
}
+ if (self.enable_new_dtags) |enable_new_dtags| {
+ if (enable_new_dtags) {
+ try argv.append("--enable-new-dtags");
+ } else {
+ try argv.append("--disable-new-dtags");
+ }
+ }
}
// Positional arguments to the linker such as object files.