diff options
| author | Andrew Kelley <superjoe30@gmail.com> | 2017-12-26 21:44:08 -0500 |
|---|---|---|
| committer | Andrew Kelley <superjoe30@gmail.com> | 2017-12-26 21:44:08 -0500 |
| commit | 6bfaf262d5a1d18482a813c7022ffb03a18f52a8 (patch) | |
| tree | 7f432e8f386aed17df3f1bccdff34ec58b3ff2af /src/link.cpp | |
| parent | 8b716f941dbd43936a994a008aec9cd21d0b08f2 (diff) | |
| parent | 08dd1b553b37de24eaf24a37558b0f9993d4ca42 (diff) | |
| download | zig-6bfaf262d5a1d18482a813c7022ffb03a18f52a8.tar.gz zig-6bfaf262d5a1d18482a813c7022ffb03a18f52a8.zip | |
Merge branch 'master' into llvm6
Diffstat (limited to 'src/link.cpp')
| -rw-r--r-- | src/link.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/link.cpp b/src/link.cpp index bc84b27b89..f07364e5bc 100644 --- a/src/link.cpp +++ b/src/link.cpp @@ -351,6 +351,16 @@ static void coff_append_machine_arg(CodeGen *g, ZigList<const char *> *list) { } } +static void link_diag_callback(void *context, const char *ptr, size_t len) { + Buf *diag = reinterpret_cast<Buf *>(context); + buf_append_mem(diag, ptr, len); +} + +static bool zig_lld_link(ZigLLVM_ObjectFormatType oformat, const char **args, size_t arg_count, Buf *diag) { + buf_resize(diag, 0); + return ZigLLDLink(oformat, args, arg_count, link_diag_callback, diag); +} + static void construct_linker_job_coff(LinkJob *lj) { CodeGen *g = lj->codegen; @@ -515,7 +525,7 @@ static void construct_linker_job_coff(LinkJob *lj) { gen_lib_args.append(buf_ptr(buf_sprintf("-DEF:%s", buf_ptr(def_path)))); gen_lib_args.append(buf_ptr(buf_sprintf("-OUT:%s", buf_ptr(generated_lib_path)))); Buf diag = BUF_INIT; - if (!ZigLLDLink(g->zig_target.oformat, gen_lib_args.items, gen_lib_args.length, &diag)) { + if (!zig_lld_link(g->zig_target.oformat, gen_lib_args.items, gen_lib_args.length, &diag)) { fprintf(stderr, "%s\n", buf_ptr(&diag)); exit(1); } @@ -930,7 +940,7 @@ void codegen_link(CodeGen *g, const char *out_file) { Buf diag = BUF_INIT; codegen_add_time_event(g, "LLVM Link"); - if (!ZigLLDLink(g->zig_target.oformat, lj.args.items, lj.args.length, &diag)) { + if (!zig_lld_link(g->zig_target.oformat, lj.args.items, lj.args.length, &diag)) { fprintf(stderr, "%s\n", buf_ptr(&diag)); exit(1); } |
