diff --git a/lib/std/Target.zig b/lib/std/Target.zig index 4ab7f8cf24..894b140f47 100644 --- a/lib/std/Target.zig +++ b/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, }; } diff --git a/lib/std/elf.zig b/lib/std/elf.zig index 154982ddc4..f2206502cd 100644 --- a/lib/std/elf.zig +++ b/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,