From cdcfd15d3c7b573dcba21b64ffdf982e26524e50 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Mon, 19 Jun 2023 14:12:30 -0700 Subject: [PATCH] musl: deal with zig rename of i386 to x86 musl uses "i386" for this while Zig has switched to "x86". --- src/Compilation.zig | 2 +- src/musl.zig | 13 +++++++++++-- src/wasi_libc.zig | 2 +- tools/process_headers.zig | 2 +- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/Compilation.zig b/src/Compilation.zig index 4c8b901fd1..55b3ab95f7 100644 --- a/src/Compilation.zig +++ b/src/Compilation.zig @@ -4918,7 +4918,7 @@ fn detectLibCFromBuilding( const generic_name = target_util.libCGenericName(target); // Some architectures are handled by the same set of headers. const arch_name = if (target.abi.isMusl()) - musl.archName(target.cpu.arch) + musl.archNameHeaders(target.cpu.arch) else if (target.cpu.arch.isThumb()) // ARM headers are valid for Thumb too. switch (target.cpu.arch) { diff --git a/src/musl.zig b/src/musl.zig index a4e91288f5..f4a3a0f35f 100644 --- a/src/musl.zig +++ b/src/musl.zig @@ -258,7 +258,7 @@ pub fn buildCRTFile(comp: *Compilation, crt_file: CRTFile, prog_node: *std.Progr } } -pub fn archName(arch: std.Target.Cpu.Arch) [:0]const u8 { +fn archName(arch: std.Target.Cpu.Arch) [:0]const u8 { switch (arch) { .aarch64, .aarch64_be => return "aarch64", .arm, .armeb, .thumb, .thumbeb => return "arm", @@ -275,6 +275,13 @@ pub fn archName(arch: std.Target.Cpu.Arch) [:0]const u8 { } } +pub fn archNameHeaders(arch: std.Target.Cpu.Arch) [:0]const u8 { + return switch (arch) { + .x86 => return "x86", + else => archName(arch), + }; +} + // Return true if musl has arch-specific crti/crtn sources. // See lib/libc/musl/crt/ARCH/crt?.s . pub fn needsCrtiCrtn(target: std.Target) bool { @@ -361,7 +368,9 @@ fn addCcArgs( const target = comp.getTarget(); const arch_name = archName(target.cpu.arch); const os_name = @tagName(target.os.tag); - const triple = try std.fmt.allocPrint(arena, "{s}-{s}-musl", .{ arch_name, os_name }); + const triple = try std.fmt.allocPrint(arena, "{s}-{s}-musl", .{ + archNameHeaders(target.cpu.arch), os_name, + }); const o_arg = if (want_O3) "-O3" else "-Os"; try args.appendSlice(&[_][]const u8{ diff --git a/src/wasi_libc.zig b/src/wasi_libc.zig index fae443dd84..566065dc6c 100644 --- a/src/wasi_libc.zig +++ b/src/wasi_libc.zig @@ -256,7 +256,7 @@ fn addCCArgs( want_O3: bool, ) error{OutOfMemory}!void { const target = comp.getTarget(); - const arch_name = musl.archName(target.cpu.arch); + const arch_name = musl.archNameHeaders(target.cpu.arch); const os_name = @tagName(target.os.tag); const triple = try std.fmt.allocPrint(arena, "{s}-{s}-musl", .{ arch_name, os_name }); const o_arg = if (want_O3) "-O3" else "-Os"; diff --git a/tools/process_headers.zig b/tools/process_headers.zig index a7abcb0297..79ec3e7d03 100644 --- a/tools/process_headers.zig +++ b/tools/process_headers.zig @@ -208,7 +208,7 @@ const musl_targets = [_]LibCTarget{ .abi = MultiAbi.musl, }, LibCTarget{ - .name = "x86", + .name = "i386", .arch = MultiArch{ .specific = .x86 }, .abi = MultiAbi.musl, },