Commit 8954e9748a
Changed files (7)
lib
compiler
aro
aro
src
codegen
test
lib/compiler/aro/aro/target.zig
@@ -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",
lib/std/zig/LibCDirs.zig
@@ -236,6 +236,8 @@ fn libCGenericName(target: std.Target) [:0]const u8 {
.muslabi64,
.musleabi,
.musleabihf,
+ .muslf32,
+ .muslsf,
.muslx32,
.none,
.ohos,
lib/std/zig/target.zig
@@ -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" },
lib/std/Target.zig
@@ -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,
src/codegen/llvm.zig
@@ -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",
src/target.zig
@@ -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) {
test/llvm_targets.zig
@@ -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 },