Skip to content

Commit 8fe636d

Browse files
committed
fix ABI mismatch of ZigTarget in stage2 glue code
1 parent 9b02cab commit 8fe636d

File tree

1 file changed

+15
-11
lines changed

1 file changed

+15
-11
lines changed

src-self-hosted/stage2.zig

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1034,19 +1034,23 @@ const Stage2GLibCVersion = extern struct {
10341034

10351035
// ABI warning
10361036
export 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
};

0 commit comments

Comments
 (0)