diff options
| author | Dillen Meijboom <dillen@brainhive.nl> | 2024-02-22 23:39:16 +0100 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2024-03-06 17:52:05 -0800 |
| commit | 377ecc6afb14a112a07c6d2c3570e2b77b12a116 (patch) | |
| tree | 706ef264ff807f729e37e2aef2b83a8d8e7ab99e /src/link/Elf.zig | |
| parent | aa7d16aba1f0b3a9e816684618d16cb1d178a6d3 (diff) | |
| download | zig-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.zig | 12 |
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. |
