aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2022-01-25 11:52:13 -0700
committerAndrew Kelley <andrew@ziglang.org>2022-01-25 11:52:48 -0700
commit366c76744429cb9c2fcd60abad191b7ef40ed5db (patch)
tree26c20a672d223c3063e59156d3348a59a6ecdcb8
parent50905d88518f92a9b8e492daf8dbb6d38b7c61bf (diff)
downloadzig-366c76744429cb9c2fcd60abad191b7ef40ed5db.tar.gz
zig-366c76744429cb9c2fcd60abad191b7ef40ed5db.zip
link: Elf, Wasm: forward strip flag when linking with LLD
-rw-r--r--src/link/Coff.zig1
-rw-r--r--src/link/Elf.zig5
-rw-r--r--src/link/Wasm.zig5
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);