Commit b7e48c6bcd

YANG Xudong <yangxudong@ymatrix.cn>
2024-07-20 01:32:20
std: Add loongarch support for elf. (#20678)
1 parent 0d1db79
Changed files (2)
lib/std/elf.zig
@@ -1626,6 +1626,9 @@ pub const EM = enum(u16) {
     /// C-SKY
     CSKY = 252,
 
+    /// LoongArch
+    LOONGARCH = 258,
+
     /// Fujitsu FR-V
     FRV = 0x5441,
 
@@ -1655,6 +1658,14 @@ pub const EM = enum(u16) {
             .SPARCV9 => .sparc64,
             .S390 => .s390x,
             .SPU_2 => .spu_2,
+            // FIXME:
+            // No support for .loongarch32 yet so it is safe to assume we are on .loongarch64.
+            //
+            // However, when e_machine is .LOONGARCH, we should check
+            // ei_class's value to decide the CPU architecture.
+            // - ELFCLASS32 => .loongarch32
+            // - ELFCLASS64 => .loongarch64
+            .LOONGARCH => .loongarch64,
             // there's many cases we don't (yet) handle, or will never have a
             // zig target cpu arch equivalent (such as null).
             else => null,
lib/std/Target.zig
@@ -1210,8 +1210,8 @@ pub const Cpu = struct {
                 .spirv => .NONE,
                 .spirv32 => .NONE,
                 .spirv64 => .NONE,
-                .loongarch32 => .NONE,
-                .loongarch64 => .NONE,
+                .loongarch32 => .LOONGARCH,
+                .loongarch64 => .LOONGARCH,
             };
         }