From e37c55bae0f154ca2e5ce375fe695f707853fce3 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Tue, 25 Jan 2022 11:52:13 -0700 Subject: [PATCH] link: Elf, Wasm: forward strip flag when linking with LLD --- src/link/Coff.zig | 1 + src/link/Elf.zig | 5 +++++ src/link/Wasm.zig | 5 +++++ 3 files changed, 11 insertions(+) diff --git a/src/link/Coff.zig b/src/link/Coff.zig index c216527b50600293fd4590da26d90459b0935926..d6999442bc39c2383a62dcaa3e2d5452af915ffe 100644 --- a/src/link/Coff.zig +++ b/src/link/Coff.zig @@ -949,6 +949,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 5f3cc2f0ff77161cab6e0de35156d98628f02dc1..eb9714167d9d62b90dd1040fd74835de8306018c 100644 --- a/src/link/Elf.zig +++ b/src/link/Elf.zig @@ -1337,6 +1337,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| { @@ -1477,6 +1478,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 26ac9aa39ebb943bcc5eccdc4ac2418864b88738..a0033a44c7c98e8bdaa48e65721ee55a91b56de4 100644 --- a/src/link/Wasm.zig +++ b/src/link/Wasm.zig @@ -1028,6 +1028,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); } @@ -1107,6 +1108,10 @@ fn linkWithLLD(self: *Wasm, comp: *Compilation) !void { try argv.append("--import-memory"); } + 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); -- 2.54.0