From bde68fdebc468a9977f18a3f2ba8b2e69b58bac2 Mon Sep 17 00:00:00 2001 From: mlugg Date: Tue, 15 Oct 2024 20:48:30 +0100 Subject: [PATCH] std.Target: correct C callconv on hardfloat ARM --- lib/std/Target.zig | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/std/Target.zig b/lib/std/Target.zig index d229719568..def304bc6c 100644 --- a/lib/std/Target.zig +++ b/lib/std/Target.zig @@ -3048,7 +3048,13 @@ pub fn cCallingConvention(target: Target) ?std.builtin.CallingConvention { .windows => .{ .aarch64_aapcs_win = .{} }, else => .{ .aarch64_aapcs = .{} }, }, - .arm, .armeb, .thumb, .thumbeb => .{ .arm_aapcs = .{} }, + .arm, .armeb, .thumb, .thumbeb => switch (target.os.tag) { + .netbsd => .{ .arm_apcs = .{} }, + else => switch (target.abi.floatAbi()) { + .soft => .{ .arm_aapcs = .{} }, + .hard => .{ .arm_aapcs_vfp = .{} }, + }, + }, .mips64, .mips64el => switch (target.abi) { .gnuabin32 => .{ .mips64_n32 = .{} }, else => .{ .mips64_n64 = .{} },