std.Target: Add Abi.muslf32 and Abi.muslsf.

This commit is contained in:
Alex Rønne Petersen 2025-03-10 08:28:56 +01:00
parent 1599f8ade0
commit 8954e9748a
No known key found for this signature in database
7 changed files with 27 additions and 4 deletions

View file

@ -698,6 +698,8 @@ pub fn toLLVMTriple(target: std.Target, buf: []u8) []const u8 {
.muslabi64 => "muslabi64",
.musleabi => "musleabi",
.musleabihf => "musleabihf",
.muslf32 => "muslf32",
.muslsf => "muslsf",
.muslx32 => "muslx32",
.msvc => "msvc",
.itanium => "itanium",

View file

@ -775,6 +775,8 @@ pub const Abi = enum {
muslabi64,
musleabi,
musleabihf,
muslf32,
muslsf,
muslx32,
msvc,
itanium,
@ -949,6 +951,8 @@ pub const Abi = enum {
.muslabi64,
.musleabi,
.musleabihf,
.muslf32,
.muslsf,
.muslx32,
=> true,
else => abi.isOpenHarmony(),
@ -2251,9 +2255,20 @@ pub const DynamicLinker = struct {
},
}),
.loongarch32,
.loongarch64,
=> |arch| initFmt("/lib/ld-musl-{s}{s}.so.1", .{
@tagName(arch),
switch (abi) {
.musl => "",
.muslf32 => "-sp",
.muslsf => "-sf",
else => return none,
},
}),
.aarch64,
.aarch64_be,
.loongarch64, // TODO: `-sp` and `-sf` ABI support in LLVM 20.
.m68k,
.powerpc64,
.powerpc64le,

View file

@ -236,6 +236,8 @@ fn libCGenericName(target: std.Target) [:0]const u8 {
.muslabi64,
.musleabi,
.musleabihf,
.muslf32,
.muslsf,
.muslx32,
.none,
.ohos,

View file

@ -37,6 +37,7 @@ pub const available_libcs = [_]ArchOsAbi{
.{ .arch = .loongarch64, .os = .linux, .abi = .gnu, .os_ver = .{ .major = 5, .minor = 19, .patch = 0 }, .glibc_min = .{ .major = 2, .minor = 36, .patch = 0 }, .glibc_triple = "loongarch64-linux-gnu-lp64d" },
.{ .arch = .loongarch64, .os = .linux, .abi = .gnusf, .os_ver = .{ .major = 5, .minor = 19, .patch = 0 }, .glibc_min = .{ .major = 2, .minor = 36, .patch = 0 }, .glibc_triple = "loongarch64-linux-gnu-lp64s" },
.{ .arch = .loongarch64, .os = .linux, .abi = .musl, .os_ver = .{ .major = 5, .minor = 19, .patch = 0 } },
.{ .arch = .loongarch64, .os = .linux, .abi = .muslsf, .os_ver = .{ .major = 5, .minor = 19, .patch = 0 } },
.{ .arch = .m68k, .os = .linux, .abi = .gnu, .os_ver = .{ .major = 1, .minor = 3, .patch = 94 } },
.{ .arch = .m68k, .os = .linux, .abi = .musl, .os_ver = .{ .major = 1, .minor = 3, .patch = 94 } },
.{ .arch = .mips, .os = .linux, .abi = .gnueabi, .os_ver = .{ .major = 1, .minor = 1, .patch = 82 }, .glibc_triple = "mips-linux-gnu-soft" },

View file

@ -275,6 +275,8 @@ pub fn targetTriple(allocator: Allocator, target: std.Target) ![]const u8 {
.muslabi64 => "musl", // Should be muslabi64 in LLVM 20.
.musleabi => "musleabi",
.musleabihf => "musleabihf",
.muslf32 => "muslf32",
.muslsf => "muslsf",
.muslx32 => "muslx32",
.msvc => "msvc",
.itanium => "itanium",

View file

@ -496,10 +496,9 @@ pub fn llvmMachineAbi(target: std.Target) ?[:0]const u8 {
return switch (target.cpu.arch) {
.arm, .armeb, .thumb, .thumbeb => "aapcs",
// TODO: `muslsf` and `muslf32` in LLVM 20.
.loongarch64 => switch (target.abi) {
.gnusf => "lp64s",
.gnuf32 => "lp64f",
.gnusf, .muslsf => "lp64s",
.gnuf32, .muslf32 => "lp64f",
else => "lp64d",
},
.loongarch32 => switch (target.abi) {

View file

@ -114,6 +114,8 @@ const targets = [_]std.Target.Query{
// .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .gnuf32 },
.{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .gnusf },
.{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .musl },
// .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .muslf32 },
.{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .muslsf },
.{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .none },
// .{ .cpu_arch = .loongarch64, .os_tag = .uefi, .abi = .none },