diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2023-10-04 12:20:28 +0200 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2023-10-16 19:33:04 +0200 |
| commit | 727d9431c8e9ccd29938934a2cd317c1cb43ae44 (patch) | |
| tree | 09f49a35ae656cab89ee2a18e90b1a9e4f6bb70a /src | |
| parent | d6cec5a586c55f471d3f830f34d7a5f668337fb9 (diff) | |
| download | zig-727d9431c8e9ccd29938934a2cd317c1cb43ae44.tar.gz zig-727d9431c8e9ccd29938934a2cd317c1cb43ae44.zip | |
elf: link hello-world in c++
Diffstat (limited to 'src')
| -rw-r--r-- | src/link/Elf.zig | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/link/Elf.zig b/src/link/Elf.zig index cd9c2e3cba..b4b473e17c 100644 --- a/src/link/Elf.zig +++ b/src/link/Elf.zig @@ -1140,6 +1140,18 @@ pub fn flushModule(self: *Elf, comp: *Compilation, prog_node: *std.Progress.Node var system_libs = std.ArrayList(SystemLib).init(arena); + // libc++ dep + if (self.base.options.link_libcpp) { + try system_libs.ensureUnusedCapacity(2); + system_libs.appendAssumeCapacity(.{ .path = comp.libcxxabi_static_lib.?.full_object_path }); + system_libs.appendAssumeCapacity(.{ .path = comp.libcxx_static_lib.?.full_object_path }); + } + + // libunwind dep + if (self.base.options.link_libunwind) { + try system_libs.append(.{ .path = comp.libunwind_static_lib.?.full_object_path }); + } + // libc dep self.error_flags.missing_libc = false; if (self.base.options.link_libc) { @@ -1240,7 +1252,6 @@ pub fn flushModule(self: *Elf, comp: *Compilation, prog_node: *std.Progress.Node self.files.set(index, .{ .linker_defined = .{ .index = index } }); self.linker_defined_index = index; } - try self.addLinkerDefinedSymbols(); // Now, we are ready to resolve the symbols across all input files. // We will first resolve the files in the ZigModule, next in the parsed @@ -1248,6 +1259,7 @@ pub fn flushModule(self: *Elf, comp: *Compilation, prog_node: *std.Progress.Node // Any qualifing unresolved symbol will be upgraded to an absolute, weak // symbol for potential resolution at load-time. self.resolveSymbols(); + try self.addLinkerDefinedSymbols(); self.markEhFrameAtomsDead(); self.markImportsExports(); self.claimUnresolved(); |
