diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2023-04-07 07:51:39 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2023-04-07 07:54:47 -0700 |
| commit | b086b7da9e9adbb4445363f635d3bb37177b2f18 (patch) | |
| tree | e288dc1b7191c94b74a2f300524bfbd1d7459d37 /src/link | |
| parent | 1fdea551b22726783356c5bed90bce63706b550f (diff) | |
| download | zig-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.zig | 12 |
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) { |
