| author | |
| committer | |
| log | d7deffee8d1861720ba4f9d3cb6a7f6dfb7ccb33 |
| tree | 729feabb46efe36be83da943a8e624b48634cda7 |
| parent | 0e6d2184cacf2dd1fad7508b2f9ae99d78763148 |
Previously only the MachO linker was honoring the flag.3 files changed, 31 insertions(+), 5 deletions(-)
src/link/Coff.zig+5-1| ... | ... | @@ -1121,7 +1121,11 @@ fn linkWithLLD(self: *Coff, comp: *Compilation) !void { |
| 1121 | 1121 | |
| 1122 | 1122 | try argv.ensureUnusedCapacity(self.base.options.objects.len); |
| 1123 | 1123 | for (self.base.options.objects) |obj| { |
| 1124 | argv.appendAssumeCapacity(obj.path); | |
| 1124 | if (obj.must_link) { | |
| 1125 | argv.appendAssumeCapacity(try allocPrint(arena, "-WHOLEARCHIVE:{s}", .{obj.path})); | |
| 1126 | } else { | |
| 1127 | argv.appendAssumeCapacity(obj.path); | |
| 1128 | } | |
| 1125 | 1129 | } |
| 1126 | 1130 | |
| 1127 | 1131 | for (comp.c_object_table.keys()) |key| { |
src/link/Elf.zig+13-2| ... | ... | @@ -1732,9 +1732,20 @@ fn linkWithLLD(self: *Elf, comp: *Compilation) !void { |
| 1732 | 1732 | } |
| 1733 | 1733 | |
| 1734 | 1734 | // Positional arguments to the linker such as object files. |
| 1735 | try argv.ensureUnusedCapacity(self.base.options.objects.len); | |
| 1735 | var whole_archive = false; | |
| 1736 | 1736 | for (self.base.options.objects) |obj| { |
| 1737 | argv.appendAssumeCapacity(obj.path); | |
| 1737 | if (obj.must_link and !whole_archive) { | |
| 1738 | try argv.append("-whole-archive"); | |
| 1739 | whole_archive = true; | |
| 1740 | } else if (!obj.must_link and whole_archive) { | |
| 1741 | try argv.append("-no-whole-archive"); | |
| 1742 | whole_archive = false; | |
| 1743 | } | |
| 1744 | try argv.append(obj.path); | |
| 1745 | } | |
| 1746 | if (whole_archive) { | |
| 1747 | try argv.append("-no-whole-archive"); | |
| 1748 | whole_archive = false; | |
| 1738 | 1749 | } |
| 1739 | 1750 | |
| 1740 | 1751 | for (comp.c_object_table.keys()) |key| { |
src/link/Wasm.zig+13-2| ... | ... | @@ -1437,9 +1437,20 @@ fn linkWithLLD(self: *Wasm, comp: *Compilation) !void { |
| 1437 | 1437 | } |
| 1438 | 1438 | |
| 1439 | 1439 | // Positional arguments to the linker such as object files. |
| 1440 | try argv.ensureUnusedCapacity(self.base.options.objects.len); | |
| 1440 | var whole_archive = false; | |
| 1441 | 1441 | for (self.base.options.objects) |obj| { |
| 1442 | argv.appendAssumeCapacity(obj.path); | |
| 1442 | if (obj.must_link and !whole_archive) { | |
| 1443 | try argv.append("-whole-archive"); | |
| 1444 | whole_archive = true; | |
| 1445 | } else if (!obj.must_link and whole_archive) { | |
| 1446 | try argv.append("-no-whole-archive"); | |
| 1447 | whole_archive = false; | |
| 1448 | } | |
| 1449 | try argv.append(obj.path); | |
| 1450 | } | |
| 1451 | if (whole_archive) { | |
| 1452 | try argv.append("-no-whole-archive"); | |
| 1453 | whole_archive = false; | |
| 1443 | 1454 | } |
| 1444 | 1455 | |
| 1445 | 1456 | for (comp.c_object_table.keys()) |key| { |