aboutsummaryrefslogtreecommitdiff
path: root/src/link
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2023-04-07 07:51:39 -0700
committerAndrew Kelley <andrew@ziglang.org>2023-04-07 07:54:47 -0700
commitb086b7da9e9adbb4445363f635d3bb37177b2f18 (patch)
treee288dc1b7191c94b74a2f300524bfbd1d7459d37 /src/link
parent1fdea551b22726783356c5bed90bce63706b550f (diff)
downloadzig-b086b7da9e9adbb4445363f635d3bb37177b2f18.tar.gz
zig-b086b7da9e9adbb4445363f635d3bb37177b2f18.zip
zig cc: complete the -wrap flag implementation
* use a set instead of a list * use of this flag currently requires LLD * add documentation * make it only a zig cc compatibility flag for now because I personally think this is an anti-feature.
Diffstat (limited to 'src/link')
-rw-r--r--src/link/Elf.zig12
1 files changed, 3 insertions, 9 deletions
diff --git a/src/link/Elf.zig b/src/link/Elf.zig
index 56bf3d8002..b25a6f8f8a 100644
--- a/src/link/Elf.zig
+++ b/src/link/Elf.zig
@@ -1386,7 +1386,7 @@ fn linkWithLLD(self: *Elf, comp: *Compilation, prog_node: *std.Progress.Node) !v
man.hash.add(stack_size);
man.hash.add(self.base.options.build_id);
}
- man.hash.addListOfBytes(self.base.options.wrap_list);
+ man.hash.addListOfBytes(self.base.options.symbol_wrap_set.keys());
man.hash.add(self.base.options.skip_linker_dependencies);
man.hash.add(self.base.options.z_nodelete);
man.hash.add(self.base.options.z_notext);
@@ -1667,14 +1667,8 @@ fn linkWithLLD(self: *Elf, comp: *Compilation, prog_node: *std.Progress.Node) !v
}
}
- // wrap
- var wrap_table = std.StringHashMap(void).init(self.base.allocator);
- defer wrap_table.deinit();
- for (self.base.options.wrap_list) |wrap| {
- if ((try wrap_table.fetchPut(wrap, {})) == null) {
- try argv.append("-wrap");
- try argv.append(wrap);
- }
+ for (self.base.options.symbol_wrap_set.keys()) |symbol_name| {
+ try argv.appendSlice(&.{ "-wrap", symbol_name });
}
if (self.base.options.each_lib_rpath) {