From ffaa4f0a87af60718062c3a9eeab9fb354731241 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 7 Mar 2019 12:21:27 -0500 Subject: [PATCH] dynamic_linker_path can be null on some targets --- src/codegen.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/codegen.cpp b/src/codegen.cpp index 05ad11c79..00ff39416 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -7906,6 +7906,9 @@ static void init(CodeGen *g) { static void detect_dynamic_linker(CodeGen *g) { if (g->dynamic_linker_path != nullptr) return; + const char *standard_ld_path = target_dynamic_linker(g->zig_target); + if (standard_ld_path == nullptr) + return; if (g->zig_target->is_native) { // target_dynamic_linker is usually correct. However on some systems, such as NixOS @@ -7944,8 +7947,7 @@ static void detect_dynamic_linker(CodeGen *g) { #endif } - // Otherwise go with the standard linker path. - g->dynamic_linker_path = buf_create_from_str(target_dynamic_linker(g->zig_target)); + g->dynamic_linker_path = buf_create_from_str(standard_ld_path); } static void detect_libc(CodeGen *g) { @@ -9091,7 +9093,7 @@ static Error check_cache(CodeGen *g, Buf *manifest_dir, Buf *digest, bool *c_obj cache_buf(ch, &g->libc->msvc_lib_dir); cache_buf(ch, &g->libc->kernel32_lib_dir); } - cache_buf(ch, g->dynamic_linker_path); + cache_buf_opt(ch, g->dynamic_linker_path); *c_objects_generated = gen_c_objects(g);