aboutsummaryrefslogtreecommitdiff
path: root/src/link
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2023-10-17 23:23:33 +0200
committerJakub Konka <kubkon@jakubkonka.com>2023-10-17 23:23:33 +0200
commit533e2671c9f5ee29d4a42bfb6faad651eef00bc0 (patch)
treeae2cc4229af3cc01a659588618a95405ce4b74a1 /src/link
parenteb5276c94eaab238551fdae9a2e77b0133e31cfb (diff)
downloadzig-533e2671c9f5ee29d4a42bfb6faad651eef00bc0.tar.gz
zig-533e2671c9f5ee29d4a42bfb6faad651eef00bc0.zip
elf: add native libc* system libraries to the invocation
Diffstat (limited to 'src/link')
-rw-r--r--src/link/Elf.zig11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/link/Elf.zig b/src/link/Elf.zig
index 49b95da7ea..2329d9445f 100644
--- a/src/link/Elf.zig
+++ b/src/link/Elf.zig
@@ -1383,8 +1383,15 @@ pub fn flushModule(self: *Elf, comp: *Compilation, prog_node: *std.Progress.Node
// libc dep
self.error_flags.missing_libc = false;
if (self.base.options.link_libc) {
- if (self.base.options.libc_installation != null) {
- @panic("TODO explicit libc_installation");
+ if (self.base.options.libc_installation) |lc| {
+ const flags = target_util.libcFullLinkFlags(target);
+ try system_libs.ensureUnusedCapacity(flags.len);
+ for (flags) |flag| {
+ const lib_path = try std.fmt.allocPrint(arena, "{s}{c}lib{s}.so", .{
+ lc.crt_dir.?, fs.path.sep, flag["-l".len..],
+ });
+ system_libs.appendAssumeCapacity(.{ .path = lib_path });
+ }
} else if (target.isGnuLibC()) {
try system_libs.ensureUnusedCapacity(glibc.libs.len + 1);
for (glibc.libs) |lib| {