zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 8fe636dafdc0e4dfeb0e3913148b21df8c066443 (tree)
parent 9b02cab3dacc40fdda2b0bd493f33bc7d17b326d
Author: Andrew Kelley <andrew@ziglang.org>
Date:   Mon, 17 Feb 2020 16:49:30 -0500

fix ABI mismatch of ZigTarget in stage2 glue code

Diffstat:
Msrc-self-hosted/stage2.zig | 26+++++++++++++++-----------
1 file changed, 15 insertions(+), 11 deletions(-)

diff --git a/src-self-hosted/stage2.zig b/src-self-hosted/stage2.zig @@ -1034,19 +1034,23 @@ const Stage2GLibCVersion = extern struct { // ABI warning export fn stage2_detect_dynamic_linker(in_target: *const Stage2Target, out_ptr: *[*:0]u8, out_len: *usize) Error { + const in_arch = in_target.arch - 1; // skip over ZigLLVM_UnknownArch + const in_sub_arch = in_target.sub_arch - 1; // skip over ZigLLVM_NoSubArch + const in_os = in_target.os; + const in_abi = in_target.abi - 1; // skip over ZigLLVM_UnknownEnvironment const target: Target = if (in_target.is_native) .Native else .{ .Cross = .{ - .arch = switch (enumInt(@TagType(Target.Arch), in_target.arch)) { - .arm => .{ .arm = enumInt(Target.Arch.Arm32, in_target.sub_arch) }, - .armeb => .{ .armeb = enumInt(Target.Arch.Arm32, in_target.sub_arch) }, - .thumb => .{ .thumb = enumInt(Target.Arch.Arm32, in_target.sub_arch) }, - .thumbeb => .{ .thumbeb = enumInt(Target.Arch.Arm32, in_target.sub_arch) }, + .arch = switch (enumInt(@TagType(Target.Arch), in_arch)) { + .arm => .{ .arm = enumInt(Target.Arch.Arm32, in_sub_arch) }, + .armeb => .{ .armeb = enumInt(Target.Arch.Arm32, in_sub_arch) }, + .thumb => .{ .thumb = enumInt(Target.Arch.Arm32, in_sub_arch) }, + .thumbeb => .{ .thumbeb = enumInt(Target.Arch.Arm32, in_sub_arch) }, - .aarch64 => .{ .aarch64 = enumInt(Target.Arch.Arm64, in_target.sub_arch) }, - .aarch64_be => .{ .aarch64_be = enumInt(Target.Arch.Arm64, in_target.sub_arch) }, - .aarch64_32 => .{ .aarch64_32 = enumInt(Target.Arch.Arm64, in_target.sub_arch) }, + .aarch64 => .{ .aarch64 = enumInt(Target.Arch.Arm64, in_sub_arch) }, + .aarch64_be => .{ .aarch64_be = enumInt(Target.Arch.Arm64, in_sub_arch) }, + .aarch64_32 => .{ .aarch64_32 = enumInt(Target.Arch.Arm64, in_sub_arch) }, - .kalimba => .{ .kalimba = enumInt(Target.Arch.Kalimba, in_target.sub_arch) }, + .kalimba => .{ .kalimba = enumInt(Target.Arch.Kalimba, in_sub_arch) }, .arc => .arc, .avr => .avr, @@ -1091,8 +1095,8 @@ export fn stage2_detect_dynamic_linker(in_target: *const Stage2Target, out_ptr: .renderscript32 => .renderscript32, .renderscript64 => .renderscript64, }, - .os = enumInt(Target.Os, in_target.os), - .abi = enumInt(Target.Abi, in_target.abi), + .os = enumInt(Target.Os, in_os), + .abi = enumInt(Target.Abi, in_abi), .cpu_features = in_target.cpu_features.cpu_features, }, };