authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-01-25 11:52:13-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-01-25 11:52:48-07:00
log366c76744429cb9c2fcd60abad191b7ef40ed5db
tree26c20a672d223c3063e59156d3348a59a6ecdcb8
parent50905d88518f92a9b8e492daf8dbb6d38b7c61bf

link: Elf, Wasm: forward strip flag when linking with LLD


3 files changed, 11 insertions(+), 0 deletions(-)

src/link/Coff.zig+1
...@@ -972,6 +972,7 @@ fn linkWithLLD(self: *Coff, comp: *Compilation) !void {...@@ -972,6 +972,7 @@ fn linkWithLLD(self: *Coff, comp: *Compilation) !void {
972 man.hash.add(self.base.options.tsaware);972 man.hash.add(self.base.options.tsaware);
973 man.hash.add(self.base.options.nxcompat);973 man.hash.add(self.base.options.nxcompat);
974 man.hash.add(self.base.options.dynamicbase);974 man.hash.add(self.base.options.dynamicbase);
975 // strip does not need to go into the linker hash because it is part of the hash namespace
975 man.hash.addOptional(self.base.options.major_subsystem_version);976 man.hash.addOptional(self.base.options.major_subsystem_version);
976 man.hash.addOptional(self.base.options.minor_subsystem_version);977 man.hash.addOptional(self.base.options.minor_subsystem_version);
977978
src/link/Elf.zig+5
...@@ -1414,6 +1414,7 @@ fn linkWithLLD(self: *Elf, comp: *Compilation) !void {...@@ -1414,6 +1414,7 @@ fn linkWithLLD(self: *Elf, comp: *Compilation) !void {
1414 man.hash.add(self.base.options.z_noexecstack);1414 man.hash.add(self.base.options.z_noexecstack);
1415 man.hash.add(self.base.options.z_now);1415 man.hash.add(self.base.options.z_now);
1416 man.hash.add(self.base.options.z_relro);1416 man.hash.add(self.base.options.z_relro);
1417 // strip does not need to go into the linker hash because it is part of the hash namespace
1417 if (self.base.options.link_libc) {1418 if (self.base.options.link_libc) {
1418 man.hash.add(self.base.options.libc_installation != null);1419 man.hash.add(self.base.options.libc_installation != null);
1419 if (self.base.options.libc_installation) |libc_installation| {1420 if (self.base.options.libc_installation) |libc_installation| {
...@@ -1554,6 +1555,10 @@ fn linkWithLLD(self: *Elf, comp: *Compilation) !void {...@@ -1554,6 +1555,10 @@ fn linkWithLLD(self: *Elf, comp: *Compilation) !void {
1554 try argv.append("--export-dynamic");1555 try argv.append("--export-dynamic");
1555 }1556 }
15561557
1558 if (self.base.options.strip) {
1559 try argv.append("-s");
1560 }
1561
1557 if (self.base.options.z_nodelete) {1562 if (self.base.options.z_nodelete) {
1558 try argv.append("-z");1563 try argv.append("-z");
1559 try argv.append("nodelete");1564 try argv.append("nodelete");
src/link/Wasm.zig+5
...@@ -1223,6 +1223,7 @@ fn linkWithLLD(self: *Wasm, comp: *Compilation) !void {...@@ -1223,6 +1223,7 @@ fn linkWithLLD(self: *Wasm, comp: *Compilation) !void {
1223 man.hash.addOptional(self.base.options.max_memory);1223 man.hash.addOptional(self.base.options.max_memory);
1224 man.hash.addOptional(self.base.options.global_base);1224 man.hash.addOptional(self.base.options.global_base);
1225 man.hash.add(self.base.options.export_symbol_names.len);1225 man.hash.add(self.base.options.export_symbol_names.len);
1226 // strip does not need to go into the linker hash because it is part of the hash namespace
1226 for (self.base.options.export_symbol_names) |symbol_name| {1227 for (self.base.options.export_symbol_names) |symbol_name| {
1227 man.hash.addBytes(symbol_name);1228 man.hash.addBytes(symbol_name);
1228 }1229 }
...@@ -1311,6 +1312,10 @@ fn linkWithLLD(self: *Wasm, comp: *Compilation) !void {...@@ -1311,6 +1312,10 @@ fn linkWithLLD(self: *Wasm, comp: *Compilation) !void {
1311 try argv.append("--export-table");1312 try argv.append("--export-table");
1312 }1313 }
13131314
1315 if (self.base.options.strip) {
1316 try argv.append("-s");
1317 }
1318
1314 if (self.base.options.initial_memory) |initial_memory| {1319 if (self.base.options.initial_memory) |initial_memory| {
1315 const arg = try std.fmt.allocPrint(arena, "--initial-memory={d}", .{initial_memory});1320 const arg = try std.fmt.allocPrint(arena, "--initial-memory={d}", .{initial_memory});
1316 try argv.append(arg);1321 try argv.append(arg);