authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-02-26 16:32:28-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-02-28 14:51:54-05:00
log622b5b62c293b767787786e753cecff40f29d7e7
tree395ee7504f4ef7d33463958fd7a7379fdc1a8345
parent0912484c4f1a8b278a4f04b3baa76cfa38daef6e
signaturelock-open Commit is signed but in an unrecognized format.

fix not setting the dynamic linker path when cross compiling


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

src-self-hosted/stage2.zig+11
...@@ -668,6 +668,7 @@ export fn stage2_target_parse(...@@ -668,6 +668,7 @@ export fn stage2_target_parse(
668 error.ProcessFdQuotaExceeded => return .ProcessFdQuotaExceeded,668 error.ProcessFdQuotaExceeded => return .ProcessFdQuotaExceeded,
669 error.SystemFdQuotaExceeded => return .SystemFdQuotaExceeded,669 error.SystemFdQuotaExceeded => return .SystemFdQuotaExceeded,
670 error.DeviceBusy => return .DeviceBusy,670 error.DeviceBusy => return .DeviceBusy,
671 error.UnknownDynamicLinkerPath => return .UnknownDynamicLinkerPath,
671 };672 };
672 return .None;673 return .None;
673}674}
...@@ -1137,6 +1138,7 @@ fn enumInt(comptime Enum: type, int: c_int) Enum {...@@ -1137,6 +1138,7 @@ fn enumInt(comptime Enum: type, int: c_int) Enum {
1137/// TODO self-host this function1138/// TODO self-host this function
1138fn crossTargetToTarget(cross_target: CrossTarget, dynamic_linker_ptr: *?[*:0]u8) !Target {1139fn crossTargetToTarget(cross_target: CrossTarget, dynamic_linker_ptr: *?[*:0]u8) !Target {
1139 var adjusted_target = cross_target.toTarget();1140 var adjusted_target = cross_target.toTarget();
1141 var have_native_dl = false;
1140 if (cross_target.cpu_arch == null or cross_target.os_tag == null) {1142 if (cross_target.cpu_arch == null or cross_target.os_tag == null) {
1141 const detected_info = try std.zig.system.NativeTargetInfo.detect(std.heap.c_allocator);1143 const detected_info = try std.zig.system.NativeTargetInfo.detect(std.heap.c_allocator);
1142 if (cross_target.cpu_arch == null) {1144 if (cross_target.cpu_arch == null) {
...@@ -1155,6 +1157,7 @@ fn crossTargetToTarget(cross_target: CrossTarget, dynamic_linker_ptr: *?[*:0]u8)...@@ -1155,6 +1157,7 @@ fn crossTargetToTarget(cross_target: CrossTarget, dynamic_linker_ptr: *?[*:0]u8)
1155 adjusted_target.os = detected_info.target.os;1157 adjusted_target.os = detected_info.target.os;
11561158
1157 if (detected_info.dynamic_linker) |dl| {1159 if (detected_info.dynamic_linker) |dl| {
1160 have_native_dl = true;
1158 dynamic_linker_ptr.* = dl.ptr;1161 dynamic_linker_ptr.* = dl.ptr;
1159 }1162 }
1160 if (cross_target.abi == null) {1163 if (cross_target.abi == null) {
...@@ -1164,6 +1167,14 @@ fn crossTargetToTarget(cross_target: CrossTarget, dynamic_linker_ptr: *?[*:0]u8)...@@ -1164,6 +1167,14 @@ fn crossTargetToTarget(cross_target: CrossTarget, dynamic_linker_ptr: *?[*:0]u8)
1164 adjusted_target.abi = Target.Abi.default(adjusted_target.cpu.arch, adjusted_target.os);1167 adjusted_target.abi = Target.Abi.default(adjusted_target.cpu.arch, adjusted_target.os);
1165 }1168 }
1166 }1169 }
1170 if (!have_native_dl) {
1171 dynamic_linker_ptr.* = adjusted_target.getStandardDynamicLinkerPath(
1172 std.heap.c_allocator,
1173 ) catch |err| switch (err) {
1174 error.TargetHasNoDynamicLinker => null,
1175 else => |e| return e,
1176 };
1177 }
1167 return adjusted_target;1178 return adjusted_target;
1168}1179}
11691180