authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-02-17 16:49:30-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-02-17 16:49:30-05:00
log8fe636dafdc0e4dfeb0e3913148b21df8c066443
tree9658adfd99ba78a16e6f50afd6efab03fed5e0fa
parent9b02cab3dacc40fdda2b0bd493f33bc7d17b326d
signature Commit is signed but in an unrecognized format.

fix ABI mismatch of ZigTarget in stage2 glue code


1 files changed, 15 insertions(+), 11 deletions(-)

src-self-hosted/stage2.zig+15-11
......@@ -1034,19 +1034,23 @@ const Stage2GLibCVersion = extern struct {
10341034
10351035// ABI warning
10361036export fn stage2_detect_dynamic_linker(in_target: *const Stage2Target, out_ptr: *[*:0]u8, out_len: *usize) Error {
1037 const in_arch = in_target.arch - 1; // skip over ZigLLVM_UnknownArch
1038 const in_sub_arch = in_target.sub_arch - 1; // skip over ZigLLVM_NoSubArch
1039 const in_os = in_target.os;
1040 const in_abi = in_target.abi - 1; // skip over ZigLLVM_UnknownEnvironment
10371041 const target: Target = if (in_target.is_native) .Native else .{
10381042 .Cross = .{
1039 .arch = switch (enumInt(@TagType(Target.Arch), in_target.arch)) {
1040 .arm => .{ .arm = enumInt(Target.Arch.Arm32, in_target.sub_arch) },
1041 .armeb => .{ .armeb = enumInt(Target.Arch.Arm32, in_target.sub_arch) },
1042 .thumb => .{ .thumb = enumInt(Target.Arch.Arm32, in_target.sub_arch) },
1043 .thumbeb => .{ .thumbeb = enumInt(Target.Arch.Arm32, in_target.sub_arch) },
1043 .arch = switch (enumInt(@TagType(Target.Arch), in_arch)) {
1044 .arm => .{ .arm = enumInt(Target.Arch.Arm32, in_sub_arch) },
1045 .armeb => .{ .armeb = enumInt(Target.Arch.Arm32, in_sub_arch) },
1046 .thumb => .{ .thumb = enumInt(Target.Arch.Arm32, in_sub_arch) },
1047 .thumbeb => .{ .thumbeb = enumInt(Target.Arch.Arm32, in_sub_arch) },
10441048
1045 .aarch64 => .{ .aarch64 = enumInt(Target.Arch.Arm64, in_target.sub_arch) },
1046 .aarch64_be => .{ .aarch64_be = enumInt(Target.Arch.Arm64, in_target.sub_arch) },
1047 .aarch64_32 => .{ .aarch64_32 = enumInt(Target.Arch.Arm64, in_target.sub_arch) },
1049 .aarch64 => .{ .aarch64 = enumInt(Target.Arch.Arm64, in_sub_arch) },
1050 .aarch64_be => .{ .aarch64_be = enumInt(Target.Arch.Arm64, in_sub_arch) },
1051 .aarch64_32 => .{ .aarch64_32 = enumInt(Target.Arch.Arm64, in_sub_arch) },
10481052
1049 .kalimba => .{ .kalimba = enumInt(Target.Arch.Kalimba, in_target.sub_arch) },
1053 .kalimba => .{ .kalimba = enumInt(Target.Arch.Kalimba, in_sub_arch) },
10501054
10511055 .arc => .arc,
10521056 .avr => .avr,
......@@ -1091,8 +1095,8 @@ export fn stage2_detect_dynamic_linker(in_target: *const Stage2Target, out_ptr:
10911095 .renderscript32 => .renderscript32,
10921096 .renderscript64 => .renderscript64,
10931097 },
1094 .os = enumInt(Target.Os, in_target.os),
1095 .abi = enumInt(Target.Abi, in_target.abi),
1098 .os = enumInt(Target.Os, in_os),
1099 .abi = enumInt(Target.Abi, in_abi),
10961100 .cpu_features = in_target.cpu_features.cpu_features,
10971101 },
10981102 };