Commit 0a5c088ecc

Alex Rønne Petersen <alex@alexrp.com>
2025-04-07 18:30:44
compiler: Add hexagon-linux-musl support.
Closes #21588.
1 parent e939fc8
Changed files (2)
lib
std
src
lib/std/zig/target.zig
@@ -34,6 +34,7 @@ pub const available_libcs = [_]ArchOsAbi{
     .{ .arch = .aarch64_be, .os = .linux, .abi = .musl, .os_ver = .{ .major = 3, .minor = 13, .patch = 0 } },
     .{ .arch = .csky, .os = .linux, .abi = .gnueabi, .os_ver = .{ .major = 4, .minor = 20, .patch = 0 }, .glibc_min = .{ .major = 2, .minor = 29, .patch = 0 }, .glibc_triple = "csky-linux-gnuabiv2-soft" },
     .{ .arch = .csky, .os = .linux, .abi = .gnueabihf, .os_ver = .{ .major = 4, .minor = 20, .patch = 0 }, .glibc_min = .{ .major = 2, .minor = 29, .patch = 0 }, .glibc_triple = "csky-linux-gnuabiv2" },
+    .{ .arch = .hexagon, .os = .linux, .abi = .musl, .os_ver = .{ .major = 3, .minor = 2, .patch = 102 } },
     .{ .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 } },
@@ -154,6 +155,7 @@ pub fn muslArchName(arch: std.Target.Cpu.Arch, abi: std.Target.Abi) [:0]const u8
         else => switch (arch) {
             .arm, .armeb, .thumb, .thumbeb => "arm",
             .aarch64, .aarch64_be => "aarch64",
+            .hexagon => "hexagon",
             .loongarch64 => "loongarch64",
             .m68k => "m68k",
             .mips, .mipsel => "mips",
src/musl.zig
@@ -202,6 +202,7 @@ pub fn buildCrtFile(comp: *Compilation, in_crt_file: CrtFile, prog_node: std.Pro
             const family_define = switch (target.cpu.arch) {
                 .arm, .armeb, .thumb, .thumbeb => "-DFAMILY_arm",
                 .aarch64, .aarch64_be => "-DFAMILY_aarch64",
+                .hexagon => "-DFAMILY_hexagon",
                 .loongarch64 => "-DFAMILY_loongarch",
                 .m68k => "-DFAMILY_m68k",
                 .mips, .mipsel, .mips64, .mips64el => "-DFAMILY_mips",
@@ -320,6 +321,7 @@ fn isArchName(name: []const u8) bool {
         "aarch64",
         "arm",
         "generic",
+        "hexagon",
         "i386",
         "loongarch64",
         "m68k",
@@ -619,6 +621,7 @@ const src_files = [_][]const u8{
     "musl/src/fenv/fesetround.c",
     "musl/src/fenv/feupdateenv.c",
     "musl/src/fenv/__flt_rounds.c",
+    "musl/src/fenv/hexagon/fenv.S",
     "musl/src/fenv/i386/fenv.s",
     "musl/src/fenv/loongarch64/fenv.S",
     "musl/src/fenv/m68k/fenv.c",
@@ -1577,6 +1580,8 @@ const src_files = [_][]const u8{
     "musl/src/setjmp/aarch64/setjmp.s",
     "musl/src/setjmp/arm/longjmp.S",
     "musl/src/setjmp/arm/setjmp.S",
+    "musl/src/setjmp/hexagon/longjmp.s",
+    "musl/src/setjmp/hexagon/setjmp.s",
     "musl/src/setjmp/i386/longjmp.s",
     "musl/src/setjmp/i386/setjmp.s",
     "musl/src/setjmp/longjmp.c",
@@ -1611,6 +1616,8 @@ const src_files = [_][]const u8{
     "musl/src/signal/arm/sigsetjmp.s",
     "musl/src/signal/block.c",
     "musl/src/signal/getitimer.c",
+    "musl/src/signal/hexagon/restore.s",
+    "musl/src/signal/hexagon/sigsetjmp.s",
     "musl/src/signal/i386/restore.s",
     "musl/src/signal/i386/sigsetjmp.s",
     "musl/src/signal/kill.c",
@@ -1943,6 +1950,10 @@ const src_files = [_][]const u8{
     "musl/src/thread/cnd_timedwait.c",
     "musl/src/thread/cnd_wait.c",
     "musl/src/thread/default_attr.c",
+    "musl/src/thread/hexagon/clone.s",
+    "musl/src/thread/hexagon/__set_thread_area.s",
+    "musl/src/thread/hexagon/syscall_cp.s",
+    "musl/src/thread/hexagon/__unmapself.s",
     "musl/src/thread/i386/clone.s",
     "musl/src/thread/i386/__set_thread_area.s",
     "musl/src/thread/i386/syscall_cp.s",