diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2022-01-25 11:52:13 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2022-01-25 11:52:48 -0700 |
| commit | 366c76744429cb9c2fcd60abad191b7ef40ed5db (patch) | |
| tree | 26c20a672d223c3063e59156d3348a59a6ecdcb8 | |
| parent | 50905d88518f92a9b8e492daf8dbb6d38b7c61bf (diff) | |
| download | zig-366c76744429cb9c2fcd60abad191b7ef40ed5db.tar.gz zig-366c76744429cb9c2fcd60abad191b7ef40ed5db.zip | |
link: Elf, Wasm: forward strip flag when linking with LLD
| -rw-r--r-- | src/link/Coff.zig | 1 | ||||
| -rw-r--r-- | src/link/Elf.zig | 5 | ||||
| -rw-r--r-- | src/link/Wasm.zig | 5 |
3 files changed, 11 insertions, 0 deletions
diff --git a/src/link/Coff.zig b/src/link/Coff.zig index 5d24e42fad..20a76f49a2 100644 --- a/src/link/Coff.zig +++ b/src/link/Coff.zig @@ -972,6 +972,7 @@ fn linkWithLLD(self: *Coff, comp: *Compilation) !void { man.hash.add(self.base.options.tsaware); man.hash.add(self.base.options.nxcompat); man.hash.add(self.base.options.dynamicbase); + // strip does not need to go into the linker hash because it is part of the hash namespace man.hash.addOptional(self.base.options.major_subsystem_version); man.hash.addOptional(self.base.options.minor_subsystem_version); diff --git a/src/link/Elf.zig b/src/link/Elf.zig index d83b5fde73..a7ce8d0783 100644 --- a/src/link/Elf.zig +++ b/src/link/Elf.zig @@ -1414,6 +1414,7 @@ fn linkWithLLD(self: *Elf, comp: *Compilation) !void { man.hash.add(self.base.options.z_noexecstack); man.hash.add(self.base.options.z_now); man.hash.add(self.base.options.z_relro); + // strip does not need to go into the linker hash because it is part of the hash namespace if (self.base.options.link_libc) { man.hash.add(self.base.options.libc_installation != null); if (self.base.options.libc_installation) |libc_installation| { @@ -1554,6 +1555,10 @@ fn linkWithLLD(self: *Elf, comp: *Compilation) !void { try argv.append("--export-dynamic"); } + if (self.base.options.strip) { + try argv.append("-s"); + } + if (self.base.options.z_nodelete) { try argv.append("-z"); try argv.append("nodelete"); diff --git a/src/link/Wasm.zig b/src/link/Wasm.zig index f0b1f75239..9a9c6c464c 100644 --- a/src/link/Wasm.zig +++ b/src/link/Wasm.zig @@ -1223,6 +1223,7 @@ fn linkWithLLD(self: *Wasm, comp: *Compilation) !void { man.hash.addOptional(self.base.options.max_memory); man.hash.addOptional(self.base.options.global_base); man.hash.add(self.base.options.export_symbol_names.len); + // strip does not need to go into the linker hash because it is part of the hash namespace for (self.base.options.export_symbol_names) |symbol_name| { man.hash.addBytes(symbol_name); } @@ -1311,6 +1312,10 @@ fn linkWithLLD(self: *Wasm, comp: *Compilation) !void { try argv.append("--export-table"); } + if (self.base.options.strip) { + try argv.append("-s"); + } + if (self.base.options.initial_memory) |initial_memory| { const arg = try std.fmt.allocPrint(arena, "--initial-memory={d}", .{initial_memory}); try argv.append(arg); |
