diff options
| author | Alex Rønne Petersen <alex@alexrp.com> | 2025-05-05 07:23:28 +0200 |
|---|---|---|
| committer | Alex Rønne Petersen <alex@alexrp.com> | 2025-05-10 20:58:15 +0200 |
| commit | d3a6236eef400ff0f99c3fe7d85cfda1c687bb82 (patch) | |
| tree | 2274b70e9e07a613f8e10d48022f8dc2e05bcc25 /src/link/Elf.zig | |
| parent | 0e3609b8e05c12285786235636e9923deeea8c09 (diff) | |
| download | zig-d3a6236eef400ff0f99c3fe7d85cfda1c687bb82.tar.gz zig-d3a6236eef400ff0f99c3fe7d85cfda1c687bb82.zip | |
compiler: Support building FreeBSD crt1.o/Scrt1.o and stub shared libraries.
Only works for FreeBSD 14+. Note that we still default to targeting FreeBSD 13.
Contributes to #2876.
Diffstat (limited to 'src/link/Elf.zig')
| -rw-r--r-- | src/link/Elf.zig | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/link/Elf.zig b/src/link/Elf.zig index 987e1a9758..df91771ecf 100644 --- a/src/link/Elf.zig +++ b/src/link/Elf.zig @@ -2058,11 +2058,18 @@ fn linkWithLLD(self: *Elf, arena: Allocator, tid: Zcu.PerThread.Id, prog_node: s try argv.append(lib_path); } try argv.append(try comp.crtFileAsString(arena, "libc_nonshared.a")); - } else if (target.abi.isMusl()) { + } else if (target.isMuslLibC()) { try argv.append(try comp.crtFileAsString(arena, switch (link_mode) { .static => "libc.a", .dynamic => "libc.so", })); + } else if (target.isFreeBSDLibC()) { + for (freebsd.libs) |lib| { + const lib_path = try std.fmt.allocPrint(arena, "{}{c}lib{s}.so.{d}", .{ + comp.freebsd_so_files.?.dir_path, fs.path.sep, lib.name, lib.sover, + }); + try argv.append(lib_path); + } } else { diags.flags.missing_libc = true; } @@ -5280,8 +5287,9 @@ const dev = @import("../dev.zig"); const eh_frame = @import("Elf/eh_frame.zig"); const gc = @import("Elf/gc.zig"); const glibc = @import("../libs/glibc.zig"); -const link = @import("../link.zig"); const musl = @import("../libs/musl.zig"); +const freebsd = @import("../libs/freebsd.zig"); +const link = @import("../link.zig"); const relocatable = @import("Elf/relocatable.zig"); const relocation = @import("Elf/relocation.zig"); const target_util = @import("../target.zig"); |
