authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-03-10 08:28:56+01:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-04-04 06:08:09+02:00
log8954e9748a27f232708e7795a99bd39f2abb8890
tree7b6f57b4804bb92d0d044f4493694fbb5f067a17
parent1599f8ade0e24d82a7150a1ebe967cff781ca39a
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

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


7 files changed, 27 insertions(+), 4 deletions(-)

lib/compiler/aro/aro/target.zig+2
......@@ -698,6 +698,8 @@ pub fn toLLVMTriple(target: std.Target, buf: []u8) []const u8 {
698698 .muslabi64 => "muslabi64",
699699 .musleabi => "musleabi",
700700 .musleabihf => "musleabihf",
701 .muslf32 => "muslf32",
702 .muslsf => "muslsf",
701703 .muslx32 => "muslx32",
702704 .msvc => "msvc",
703705 .itanium => "itanium",
lib/std/Target.zig+16-1
......@@ -775,6 +775,8 @@ pub const Abi = enum {
775775 muslabi64,
776776 musleabi,
777777 musleabihf,
778 muslf32,
779 muslsf,
778780 muslx32,
779781 msvc,
780782 itanium,
......@@ -949,6 +951,8 @@ pub const Abi = enum {
949951 .muslabi64,
950952 .musleabi,
951953 .musleabihf,
954 .muslf32,
955 .muslsf,
952956 .muslx32,
953957 => true,
954958 else => abi.isOpenHarmony(),
......@@ -2251,9 +2255,20 @@ pub const DynamicLinker = struct {
22512255 },
22522256 }),
22532257
2258 .loongarch32,
2259 .loongarch64,
2260 => |arch| initFmt("/lib/ld-musl-{s}{s}.so.1", .{
2261 @tagName(arch),
2262 switch (abi) {
2263 .musl => "",
2264 .muslf32 => "-sp",
2265 .muslsf => "-sf",
2266 else => return none,
2267 },
2268 }),
2269
22542270 .aarch64,
22552271 .aarch64_be,
2256 .loongarch64, // TODO: `-sp` and `-sf` ABI support in LLVM 20.
22572272 .m68k,
22582273 .powerpc64,
22592274 .powerpc64le,
lib/std/zig/LibCDirs.zig+2
......@@ -236,6 +236,8 @@ fn libCGenericName(target: std.Target) [:0]const u8 {
236236 .muslabi64,
237237 .musleabi,
238238 .musleabihf,
239 .muslf32,
240 .muslsf,
239241 .muslx32,
240242 .none,
241243 .ohos,
lib/std/zig/target.zig+1
......@@ -37,6 +37,7 @@ pub const available_libcs = [_]ArchOsAbi{
3737 .{ .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" },
3838 .{ .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" },
3939 .{ .arch = .loongarch64, .os = .linux, .abi = .musl, .os_ver = .{ .major = 5, .minor = 19, .patch = 0 } },
40 .{ .arch = .loongarch64, .os = .linux, .abi = .muslsf, .os_ver = .{ .major = 5, .minor = 19, .patch = 0 } },
4041 .{ .arch = .m68k, .os = .linux, .abi = .gnu, .os_ver = .{ .major = 1, .minor = 3, .patch = 94 } },
4142 .{ .arch = .m68k, .os = .linux, .abi = .musl, .os_ver = .{ .major = 1, .minor = 3, .patch = 94 } },
4243 .{ .arch = .mips, .os = .linux, .abi = .gnueabi, .os_ver = .{ .major = 1, .minor = 1, .patch = 82 }, .glibc_triple = "mips-linux-gnu-soft" },
src/codegen/llvm.zig+2
......@@ -275,6 +275,8 @@ pub fn targetTriple(allocator: Allocator, target: std.Target) ![]const u8 {
275275 .muslabi64 => "musl", // Should be muslabi64 in LLVM 20.
276276 .musleabi => "musleabi",
277277 .musleabihf => "musleabihf",
278 .muslf32 => "muslf32",
279 .muslsf => "muslsf",
278280 .muslx32 => "muslx32",
279281 .msvc => "msvc",
280282 .itanium => "itanium",
src/target.zig+2-3
......@@ -496,10 +496,9 @@ pub fn llvmMachineAbi(target: std.Target) ?[:0]const u8 {
496496
497497 return switch (target.cpu.arch) {
498498 .arm, .armeb, .thumb, .thumbeb => "aapcs",
499 // TODO: `muslsf` and `muslf32` in LLVM 20.
500499 .loongarch64 => switch (target.abi) {
501 .gnusf => "lp64s",
502 .gnuf32 => "lp64f",
500 .gnusf, .muslsf => "lp64s",
501 .gnuf32, .muslf32 => "lp64f",
503502 else => "lp64d",
504503 },
505504 .loongarch32 => switch (target.abi) {
test/llvm_targets.zig+2
......@@ -114,6 +114,8 @@ const targets = [_]std.Target.Query{
114114 // .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .gnuf32 },
115115 .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .gnusf },
116116 .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .musl },
117 // .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .muslf32 },
118 .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .muslsf },
117119 .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .none },
118120 // .{ .cpu_arch = .loongarch64, .os_tag = .uefi, .abi = .none },
119121