authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2018-07-02 14:10:27-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2018-07-02 14:10:27-04:00
log2759c7951da050d825cf765c4b660f5562fb01a4
treebab0ced27c01658f6ee07f4e51077a3f8f5fcf7c
parent0206b76351a50e154181d5bff1d134656e412bfb

always link against compiler_rt.o even when linking libc

sometimes libgcc is missing things we need, so we always link compiler_rt and rely on weak linkage to allow libgcc to override.

1 files changed, 7 insertions(+), 4 deletions(-)

src/link.cpp+7-4
...@@ -325,10 +325,13 @@ static void construct_linker_job_elf(LinkJob *lj) {...@@ -325,10 +325,13 @@ static void construct_linker_job_elf(LinkJob *lj) {
325 lj->args.append((const char *)buf_ptr(g->link_objects.at(i)));325 lj->args.append((const char *)buf_ptr(g->link_objects.at(i)));
326 }326 }
327327
328 if (g->libc_link_lib == nullptr && (g->out_type == OutTypeExe || g->out_type == OutTypeLib)) {328 if (g->out_type == OutTypeExe || g->out_type == OutTypeLib) {
329 Buf *builtin_o_path = build_o(g, "builtin");329 if (g->libc_link_lib == nullptr) {
330 lj->args.append(buf_ptr(builtin_o_path));330 Buf *builtin_o_path = build_o(g, "builtin");
331 lj->args.append(buf_ptr(builtin_o_path));
332 }
331333
334 // sometimes libgcc is missing stuff, so we still build compiler_rt and rely on weak linkage
332 Buf *compiler_rt_o_path = build_compiler_rt(g);335 Buf *compiler_rt_o_path = build_compiler_rt(g);
333 lj->args.append(buf_ptr(compiler_rt_o_path));336 lj->args.append(buf_ptr(compiler_rt_o_path));
334 }337 }
...@@ -554,7 +557,7 @@ static void construct_linker_job_coff(LinkJob *lj) {...@@ -554,7 +557,7 @@ static void construct_linker_job_coff(LinkJob *lj) {
554 lj->args.append(buf_ptr(builtin_o_path));557 lj->args.append(buf_ptr(builtin_o_path));
555 }558 }
556559
557 // msvc compiler_rt is missing some stuff, so we still build it and rely on LinkOnce560 // msvc compiler_rt is missing some stuff, so we still build it and rely on weak linkage
558 Buf *compiler_rt_o_path = build_compiler_rt(g);561 Buf *compiler_rt_o_path = build_compiler_rt(g);
559 lj->args.append(buf_ptr(compiler_rt_o_path));562 lj->args.append(buf_ptr(compiler_rt_o_path));
560 }563 }