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 {...@@ -698,6 +698,8 @@ pub fn toLLVMTriple(target: std.Target, buf: []u8) []const u8 {
698 .muslabi64 => "muslabi64",698 .muslabi64 => "muslabi64",
699 .musleabi => "musleabi",699 .musleabi => "musleabi",
700 .musleabihf => "musleabihf",700 .musleabihf => "musleabihf",
701 .muslf32 => "muslf32",
702 .muslsf => "muslsf",
701 .muslx32 => "muslx32",703 .muslx32 => "muslx32",
702 .msvc => "msvc",704 .msvc => "msvc",
703 .itanium => "itanium",705 .itanium => "itanium",
lib/std/Target.zig+16-1
...@@ -775,6 +775,8 @@ pub const Abi = enum {...@@ -775,6 +775,8 @@ pub const Abi = enum {
775 muslabi64,775 muslabi64,
776 musleabi,776 musleabi,
777 musleabihf,777 musleabihf,
778 muslf32,
779 muslsf,
778 muslx32,780 muslx32,
779 msvc,781 msvc,
780 itanium,782 itanium,
...@@ -949,6 +951,8 @@ pub const Abi = enum {...@@ -949,6 +951,8 @@ pub const Abi = enum {
949 .muslabi64,951 .muslabi64,
950 .musleabi,952 .musleabi,
951 .musleabihf,953 .musleabihf,
954 .muslf32,
955 .muslsf,
952 .muslx32,956 .muslx32,
953 => true,957 => true,
954 else => abi.isOpenHarmony(),958 else => abi.isOpenHarmony(),
...@@ -2251,9 +2255,20 @@ pub const DynamicLinker = struct {...@@ -2251,9 +2255,20 @@ pub const DynamicLinker = struct {
2251 },2255 },
2252 }),2256 }),
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
2254 .aarch64,2270 .aarch64,
2255 .aarch64_be,2271 .aarch64_be,
2256 .loongarch64, // TODO: `-sp` and `-sf` ABI support in LLVM 20.
2257 .m68k,2272 .m68k,
2258 .powerpc64,2273 .powerpc64,
2259 .powerpc64le,2274 .powerpc64le,
lib/std/zig/LibCDirs.zig+2
...@@ -236,6 +236,8 @@ fn libCGenericName(target: std.Target) [:0]const u8 {...@@ -236,6 +236,8 @@ fn libCGenericName(target: std.Target) [:0]const u8 {
236 .muslabi64,236 .muslabi64,
237 .musleabi,237 .musleabi,
238 .musleabihf,238 .musleabihf,
239 .muslf32,
240 .muslsf,
239 .muslx32,241 .muslx32,
240 .none,242 .none,
241 .ohos,243 .ohos,
lib/std/zig/target.zig+1
...@@ -37,6 +37,7 @@ pub const available_libcs = [_]ArchOsAbi{...@@ -37,6 +37,7 @@ pub const available_libcs = [_]ArchOsAbi{
37 .{ .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" },37 .{ .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" },
38 .{ .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" },38 .{ .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" },
39 .{ .arch = .loongarch64, .os = .linux, .abi = .musl, .os_ver = .{ .major = 5, .minor = 19, .patch = 0 } },39 .{ .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 } },
40 .{ .arch = .m68k, .os = .linux, .abi = .gnu, .os_ver = .{ .major = 1, .minor = 3, .patch = 94 } },41 .{ .arch = .m68k, .os = .linux, .abi = .gnu, .os_ver = .{ .major = 1, .minor = 3, .patch = 94 } },
41 .{ .arch = .m68k, .os = .linux, .abi = .musl, .os_ver = .{ .major = 1, .minor = 3, .patch = 94 } },42 .{ .arch = .m68k, .os = .linux, .abi = .musl, .os_ver = .{ .major = 1, .minor = 3, .patch = 94 } },
42 .{ .arch = .mips, .os = .linux, .abi = .gnueabi, .os_ver = .{ .major = 1, .minor = 1, .patch = 82 }, .glibc_triple = "mips-linux-gnu-soft" },43 .{ .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 {...@@ -275,6 +275,8 @@ pub fn targetTriple(allocator: Allocator, target: std.Target) ![]const u8 {
275 .muslabi64 => "musl", // Should be muslabi64 in LLVM 20.275 .muslabi64 => "musl", // Should be muslabi64 in LLVM 20.
276 .musleabi => "musleabi",276 .musleabi => "musleabi",
277 .musleabihf => "musleabihf",277 .musleabihf => "musleabihf",
278 .muslf32 => "muslf32",
279 .muslsf => "muslsf",
278 .muslx32 => "muslx32",280 .muslx32 => "muslx32",
279 .msvc => "msvc",281 .msvc => "msvc",
280 .itanium => "itanium",282 .itanium => "itanium",
src/target.zig+2-3
...@@ -496,10 +496,9 @@ pub fn llvmMachineAbi(target: std.Target) ?[:0]const u8 {...@@ -496,10 +496,9 @@ pub fn llvmMachineAbi(target: std.Target) ?[:0]const u8 {
496496
497 return switch (target.cpu.arch) {497 return switch (target.cpu.arch) {
498 .arm, .armeb, .thumb, .thumbeb => "aapcs",498 .arm, .armeb, .thumb, .thumbeb => "aapcs",
499 // TODO: `muslsf` and `muslf32` in LLVM 20.
500 .loongarch64 => switch (target.abi) {499 .loongarch64 => switch (target.abi) {
501 .gnusf => "lp64s",500 .gnusf, .muslsf => "lp64s",
502 .gnuf32 => "lp64f",501 .gnuf32, .muslf32 => "lp64f",
503 else => "lp64d",502 else => "lp64d",
504 },503 },
505 .loongarch32 => switch (target.abi) {504 .loongarch32 => switch (target.abi) {
test/llvm_targets.zig+2
...@@ -114,6 +114,8 @@ const targets = [_]std.Target.Query{...@@ -114,6 +114,8 @@ const targets = [_]std.Target.Query{
114 // .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .gnuf32 },114 // .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .gnuf32 },
115 .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .gnusf },115 .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .gnusf },
116 .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .musl },116 .{ .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 },
117 .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .none },119 .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .none },
118 // .{ .cpu_arch = .loongarch64, .os_tag = .uefi, .abi = .none },120 // .{ .cpu_arch = .loongarch64, .os_tag = .uefi, .abi = .none },
119121