Source
pub const AUDIT = struct {
pub const ARCH = enum(u32) {
const CONVENTION_MIPS64_N32 = 0x20000000;
const @"64BIT" = 0x80000000;
const LE = 0x40000000;
AARCH64 = toAudit(.AARCH64, @"64BIT" | LE),
ALPHA = toAudit(.ALPHA, @"64BIT" | LE),
ARCOMPACT = toAudit(.ARC_COMPACT, LE),
ARCOMPACTBE = toAudit(.ARC_COMPACT, 0),
ARCV2 = toAudit(.ARC_COMPACT2, LE),
ARCV2BE = toAudit(.ARC_COMPACT2, 0),
ARM = toAudit(.ARM, LE),
ARMEB = toAudit(.ARM, 0),
C6X = toAudit(.TI_C6000, LE),
C6XBE = toAudit(.TI_C6000, 0),
CRIS = toAudit(.CRIS, LE),
CSKY = toAudit(.CSKY, LE),
FRV = toAudit(.FRV, 0),
H8300 = toAudit(.H8_300, 0),
HEXAGON = toAudit(.HEXAGON, 0),
I386 = toAudit(.@"386", LE),
IA64 = toAudit(.IA_64, @"64BIT" | LE),
M32R = toAudit(.M32R, 0),
M68K = toAudit(.@"68K", 0),
MICROBLAZE = toAudit(.MICROBLAZE, 0),
MIPS = toAudit(.MIPS, 0),
MIPSEL = toAudit(.MIPS, LE),
MIPS64 = toAudit(.MIPS, @"64BIT"),
MIPS64N32 = toAudit(.MIPS, @"64BIT" | CONVENTION_MIPS64_N32),
MIPSEL64 = toAudit(.MIPS, @"64BIT" | LE),
MIPSEL64N32 = toAudit(.MIPS, @"64BIT" | LE | CONVENTION_MIPS64_N32),
NDS32 = toAudit(.NDS32, LE),
NDS32BE = toAudit(.NDS32, 0),
NIOS2 = toAudit(.ALTERA_NIOS2, LE),
OPENRISC = toAudit(.OPENRISC, 0),
PARISC = toAudit(.PARISC, 0),
PARISC64 = toAudit(.PARISC, @"64BIT"),
PPC = toAudit(.PPC, 0),
PPC64 = toAudit(.PPC64, @"64BIT"),
PPC64LE = toAudit(.PPC64, @"64BIT" | LE),
RISCV32 = toAudit(.RISCV, LE),
RISCV64 = toAudit(.RISCV, @"64BIT" | LE),
S390 = toAudit(.S390, 0),
S390X = toAudit(.S390, @"64BIT"),
SH = toAudit(.SH, 0),
SHEL = toAudit(.SH, LE),
SH64 = toAudit(.SH, @"64BIT"),
SHEL64 = toAudit(.SH, @"64BIT" | LE),
SPARC = toAudit(.SPARC, 0),
SPARC64 = toAudit(.SPARCV9, @"64BIT"),
TILEGX = toAudit(.TILEGX, @"64BIT" | LE),
TILEGX32 = toAudit(.TILEGX, LE),
TILEPRO = toAudit(.TILEPRO, LE),
UNICORE = toAudit(.UNICORE, LE),
X86_64 = toAudit(.X86_64, @"64BIT" | LE),
XTENSA = toAudit(.XTENSA, 0),
LOONGARCH32 = toAudit(.LOONGARCH, LE),
LOONGARCH64 = toAudit(.LOONGARCH, @"64BIT" | LE),
fn toAudit(em: elf.EM, flags: u32) u32 {
return @intFromEnum(em) | flags;
}
pub const current: AUDIT.ARCH = switch (native_arch) {
.arm, .thumb => .ARM,
.armeb, .thumbeb => .ARMEB,
.aarch64 => .AARCH64,
.arc => .ARCV2,
.csky => .CSKY,
.hexagon => .HEXAGON,
.loongarch32 => .LOONGARCH32,
.loongarch64 => .LOONGARCH64,
.m68k => .M68K,
.mips => .MIPS,
.mipsel => .MIPSEL,
.mips64 => switch (native_abi) {
.gnuabin32, .muslabin32 => .MIPS64N32,
else => .MIPS64,
},
.mips64el => switch (native_abi) {
.gnuabin32, .muslabin32 => .MIPSEL64N32,
else => .MIPSEL64,
},
.powerpc => .PPC,
.powerpc64 => .PPC64,
.powerpc64le => .PPC64LE,
.riscv32 => .RISCV32,
.riscv64 => .RISCV64,
.sparc => .SPARC,
.sparc64 => .SPARC64,
.s390x => .S390X,
.x86 => .I386,
.x86_64 => .X86_64,
.xtensa => .XTENSA,
else => @compileError("unsupported architecture"),
};
};
}