| author | |
| committer | |
| log | e26f063b22893f50dd7eb02a01585f4d52849ede |
| tree | 73ec54c84face97b521288f9499801643c326463 |
| parent | 2f9c5c0644dd516ec0d96f33333a35e6b4deea91 |
5 files changed, 23 insertions(+), 3 deletions(-)
lib/std/target.zig+17-2| ... | ... | @@ -1227,6 +1227,7 @@ pub const Target = union(enum) { |
| 1227 | 1227 | ) error{ |
| 1228 | 1228 | OutOfMemory, |
| 1229 | 1229 | UnknownDynamicLinkerPath, |
| 1230 | TargetHasNoDynamicLinker, | |
| 1230 | 1231 | }![:0]u8 { |
| 1231 | 1232 | const a = allocator; |
| 1232 | 1233 | if (self.isAndroid()) { |
| ... | ... | @@ -1300,6 +1301,10 @@ pub const Target = union(enum) { |
| 1300 | 1301 | .riscv32 => return mem.dupeZ(a, u8, "/lib/ld-linux-riscv32-ilp32.so.1"), |
| 1301 | 1302 | .riscv64 => return mem.dupeZ(a, u8, "/lib/ld-linux-riscv64-lp64.so.1"), |
| 1302 | 1303 | |
| 1304 | .wasm32, | |
| 1305 | .wasm64, | |
| 1306 | => return error.TargetHasNoDynamicLinker, | |
| 1307 | ||
| 1303 | 1308 | .arc, |
| 1304 | 1309 | .avr, |
| 1305 | 1310 | .bpfel, |
| ... | ... | @@ -1324,12 +1329,22 @@ pub const Target = union(enum) { |
| 1324 | 1329 | .kalimba, |
| 1325 | 1330 | .shave, |
| 1326 | 1331 | .lanai, |
| 1327 | .wasm32, | |
| 1328 | .wasm64, | |
| 1329 | 1332 | .renderscript32, |
| 1330 | 1333 | .renderscript64, |
| 1331 | 1334 | => return error.UnknownDynamicLinkerPath, |
| 1332 | 1335 | }, |
| 1336 | ||
| 1337 | .freestanding, | |
| 1338 | .ios, | |
| 1339 | .tvos, | |
| 1340 | .watchos, | |
| 1341 | .macosx, | |
| 1342 | .uefi, | |
| 1343 | .windows, | |
| 1344 | .emscripten, | |
| 1345 | .other, | |
| 1346 | => return error.TargetHasNoDynamicLinker, | |
| 1347 | ||
| 1333 | 1348 | else => return error.UnknownDynamicLinkerPath, |
| 1334 | 1349 | } |
| 1335 | 1350 | } |
src-self-hosted/stage2.zig+2| ... | ... | @@ -110,6 +110,7 @@ const Error = extern enum { |
| 110 | 110 | UnsupportedArchitecture, |
| 111 | 111 | WindowsSdkNotFound, |
| 112 | 112 | UnknownDynamicLinkerPath, |
| 113 | TargetHasNoDynamicLinker, | |
| 113 | 114 | }; |
| 114 | 115 | |
| 115 | 116 | const FILE = std.c.FILE; |
| ... | ... | @@ -1101,6 +1102,7 @@ export fn stage2_detect_dynamic_linker(in_target: *const Stage2Target, out_ptr: |
| 1101 | 1102 | ) catch |err| switch (err) { |
| 1102 | 1103 | error.OutOfMemory => return .OutOfMemory, |
| 1103 | 1104 | error.UnknownDynamicLinkerPath => return .UnknownDynamicLinkerPath, |
| 1105 | error.TargetHasNoDynamicLinker => return .TargetHasNoDynamicLinker, | |
| 1104 | 1106 | }; |
| 1105 | 1107 | out_ptr.* = result.ptr; |
| 1106 | 1108 | out_len.* = result.len; |
src/codegen.cpp+1| ... | ... | @@ -8969,6 +8969,7 @@ static void detect_dynamic_linker(CodeGen *g) { |
| 8969 | 8969 | char *dynamic_linker_ptr; |
| 8970 | 8970 | size_t dynamic_linker_len; |
| 8971 | 8971 | if ((err = stage2_detect_dynamic_linker(g->zig_target, &dynamic_linker_ptr, &dynamic_linker_len))) { |
| 8972 | if (err == ErrorTargetHasNoDynamicLinker) return; | |
| 8972 | 8973 | fprintf(stderr, "Unable to detect dynamic linker: %s\n", err_str(err)); |
| 8973 | 8974 | exit(1); |
| 8974 | 8975 | } |
src/error.cpp+2-1| ... | ... | @@ -80,7 +80,8 @@ const char *err_str(Error err) { |
| 80 | 80 | case ErrorLibCKernel32LibNotFound: return "kernel32 library not found"; |
| 81 | 81 | case ErrorUnsupportedArchitecture: return "unsupported architecture"; |
| 82 | 82 | case ErrorWindowsSdkNotFound: return "Windows SDK not found"; |
| 83 | case ErrorUnknownDynamicLinkerPath: return "Windows SDK not found"; | |
| 83 | case ErrorUnknownDynamicLinkerPath: return "unknown dynamic linker path"; | |
| 84 | case ErrorTargetHasNoDynamicLinker: return "target has no dynamic linker"; | |
| 84 | 85 | } |
| 85 | 86 | return "(invalid error)"; |
| 86 | 87 | } |
src/stage2.h+1| ... | ... | @@ -103,6 +103,7 @@ enum Error { |
| 103 | 103 | ErrorUnsupportedArchitecture, |
| 104 | 104 | ErrorWindowsSdkNotFound, |
| 105 | 105 | ErrorUnknownDynamicLinkerPath, |
| 106 | ErrorTargetHasNoDynamicLinker, | |
| 106 | 107 | }; |
| 107 | 108 | |
| 108 | 109 | // ABI warning |