llvm: wire up the xtensa backend

As of LLVM 22, it can produce assembly and object files. No LLD support,
however, so using it is still a bit of a pain.
This commit is contained in:
Alex Rønne Petersen
2026-01-19 23:56:26 +01:00
parent 473df0c106
commit 4c50c4b6e5
5 changed files with 7 additions and 5 deletions
+1 -1
View File
@@ -4818,7 +4818,7 @@ pub fn initializeLLVMTarget(arch: std.Target.Cpu.Arch) void {
bindings.LLVMInitializeXtensaTarget();
bindings.LLVMInitializeXtensaTargetInfo();
bindings.LLVMInitializeXtensaTargetMC();
// There is no LLVMInitializeXtensaAsmPrinter function.
bindings.LLVMInitializeXtensaAsmPrinter();
bindings.LLVMInitializeXtensaAsmParser();
}
},
+1
View File
@@ -279,6 +279,7 @@ pub extern fn LLVMInitializeSystemZAsmPrinter() void;
pub extern fn LLVMInitializeWebAssemblyAsmPrinter() void;
pub extern fn LLVMInitializeX86AsmPrinter() void;
pub extern fn LLVMInitializeXCoreAsmPrinter() void;
pub extern fn LLVMInitializeXtensaAsmPrinter() void;
pub extern fn LLVMInitializeM68kAsmPrinter() void;
pub extern fn LLVMInitializeVEAsmPrinter() void;
pub extern fn LLVMInitializeARCAsmPrinter() void;
+2 -1
View File
@@ -812,7 +812,8 @@ fn elfLink(lld: *Lld, arena: Allocator) !void {
target.cpu.arch == .m68k or
target.cpu.arch.isSPARC() or
target.cpu.arch == .ve or
target.cpu.arch == .xcore))
target.cpu.arch == .xcore or
target.cpu.arch == .xtensa))
{
// In this case we must do a simple file copy
// here. TODO: think carefully about how we can avoid this redundant operation when doing
+1 -1
View File
@@ -227,11 +227,11 @@ pub fn hasLlvmSupport(target: *const std.Target, ofmt: std.Target.ObjectFormat)
.wasm32,
.wasm64,
.ve,
.xtensa,
=> true,
// LLVM backend exists but can produce neither assembly nor object files.
.csky,
.xtensa,
=> false,
// Third-party LLVM backend exists.
+2 -2
View File
@@ -344,8 +344,8 @@ const targets = [_]std.Target.Query{
.{ .cpu_arch = .xcore, .os_tag = .freestanding, .abi = .none },
// .{ .cpu_arch = .xtensa, .os_tag = .freestanding, .abi = .none },
// .{ .cpu_arch = .xtensa, .os_tag = .linux, .abi = .none },
.{ .cpu_arch = .xtensa, .os_tag = .freestanding, .abi = .none },
.{ .cpu_arch = .xtensa, .os_tag = .linux, .abi = .none },
};
pub fn addCases(