| author | |
| committer | |
| log | e9d916571a5eedd4784951d2840ea206107f30e6 |
| tree | 78501a86fa55a10a2c83b94769668f2ced47885a |
| parent | 021c1190af90514aa776ed64515cdaf3cd53b319 |
Previously only the MachO linker was honoring the flag.3 files changed, 31 insertions(+), 5 deletions(-)
src/link/Coff.zig+5-1| ... | ... | @@ -1099,7 +1099,11 @@ fn linkWithLLD(self: *Coff, comp: *Compilation) !void { |
| 1099 | 1099 | |
| 1100 | 1100 | try argv.ensureUnusedCapacity(self.base.options.objects.len); |
| 1101 | 1101 | for (self.base.options.objects) |obj| { |
| 1102 | argv.appendAssumeCapacity(obj.path); | |
| 1102 | if (obj.must_link) { | |
| 1103 | argv.appendAssumeCapacity(try allocPrint(arena, "-WHOLEARCHIVE:{s}", .{obj.path})); | |
| 1104 | } else { | |
| 1105 | argv.appendAssumeCapacity(obj.path); | |
| 1106 | } | |
| 1103 | 1107 | } |
| 1104 | 1108 | |
| 1105 | 1109 | for (comp.c_object_table.keys()) |key| { |
src/link/Elf.zig+13-2| ... | ... | @@ -1622,9 +1622,20 @@ fn linkWithLLD(self: *Elf, comp: *Compilation) !void { |
| 1622 | 1622 | } |
| 1623 | 1623 | |
| 1624 | 1624 | // Positional arguments to the linker such as object files. |
| 1625 | try argv.ensureUnusedCapacity(self.base.options.objects.len); | |
| 1625 | var whole_archive = false; | |
| 1626 | 1626 | for (self.base.options.objects) |obj| { |
| 1627 | argv.appendAssumeCapacity(obj.path); | |
| 1627 | if (obj.must_link and !whole_archive) { | |
| 1628 | try argv.append("-whole-archive"); | |
| 1629 | whole_archive = true; | |
| 1630 | } else if (!obj.must_link and whole_archive) { | |
| 1631 | try argv.append("-no-whole-archive"); | |
| 1632 | whole_archive = false; | |
| 1633 | } | |
| 1634 | try argv.append(obj.path); | |
| 1635 | } | |
| 1636 | if (whole_archive) { | |
| 1637 | try argv.append("-no-whole-archive"); | |
| 1638 | whole_archive = false; | |
| 1628 | 1639 | } |
| 1629 | 1640 | |
| 1630 | 1641 | for (comp.c_object_table.keys()) |key| { |
src/link/Wasm.zig+13-2| ... | ... | @@ -1233,9 +1233,20 @@ fn linkWithLLD(self: *Wasm, comp: *Compilation) !void { |
| 1233 | 1233 | } |
| 1234 | 1234 | |
| 1235 | 1235 | // Positional arguments to the linker such as object files. |
| 1236 | try argv.ensureUnusedCapacity(self.base.options.objects.len); | |
| 1236 | var whole_archive = false; | |
| 1237 | 1237 | for (self.base.options.objects) |obj| { |
| 1238 | argv.appendAssumeCapacity(obj.path); | |
| 1238 | if (obj.must_link and !whole_archive) { | |
| 1239 | try argv.append("-whole-archive"); | |
| 1240 | whole_archive = true; | |
| 1241 | } else if (!obj.must_link and whole_archive) { | |
| 1242 | try argv.append("-no-whole-archive"); | |
| 1243 | whole_archive = false; | |
| 1244 | } | |
| 1245 | try argv.append(obj.path); | |
| 1246 | } | |
| 1247 | if (whole_archive) { | |
| 1248 | try argv.append("-no-whole-archive"); | |
| 1249 | whole_archive = false; | |
| 1239 | 1250 | } |
| 1240 | 1251 | |
| 1241 | 1252 | for (comp.c_object_table.keys()) |key| { |