From 030abfa0d2a95fb5cb9da61c59bb8332c65f8819 Mon Sep 17 00:00:00 2001 From: meme Date: Sat, 28 Sep 2019 13:21:29 -0400 Subject: [PATCH] minor tweaks --- src/link.cpp | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/link.cpp b/src/link.cpp index 0149f1642d70e4a6058ef26e00119dbecf0cf534..785983cecf137d9ece75a48d7eb79de3abedc33a 100644 --- a/src/link.cpp +++ b/src/link.cpp @@ -1653,7 +1653,7 @@ static void construct_linker_job_elf(LinkJob *lj) { soname = buf_sprintf("lib%s.so.%" ZIG_PRI_usize, buf_ptr(g->root_out_name), g->version_major); } - if (target_requires_pie(g->zig_target) && !is_dyn_lib && g->libc != nullptr) { + if (target_requires_pie(g->zig_target) && g->out_type == OutTypeExe) { lj->args.append("-pie"); } @@ -1665,13 +1665,13 @@ static void construct_linker_job_elf(LinkJob *lj) { if (g->zig_target->os == OsNetBSD) { crt1o = "crt0.o"; } else if (target_is_android(g->zig_target)) { - crt1o = "crtbegin_dynamic.o"; + if (g->have_dynamic_link) { + crt1o = "crtbegin_dynamic.o"; + } else { + crt1o = "crtbegin_static.o"; + } } else if (!g->have_dynamic_link) { - if (target_is_android(g->zig_target)) { - crt1o = "crtbegin.o"; - } else { - crt1o = "crt1.o"; - } + crt1o = "crt1.o"; } else { crt1o = "Scrt1.o"; } @@ -1821,10 +1821,12 @@ static void construct_linker_job_elf(LinkJob *lj) { } // crt end - if (target_is_android(g->zig_target) && g->libc != nullptr) { - lj->args.append(get_libc_crt_file(g, "crtend_android.o")); - } else if (lj->link_in_crt && target_libc_needs_crti_crtn(g->zig_target)) { - lj->args.append(get_libc_crt_file(g, "crtn.o")); + if (lj->link_in_crt) { + if (target_is_android(g->zig_target)) { + lj->args.append(get_libc_crt_file(g, "crtend_android.o")); + } else if (target_libc_needs_crti_crtn(g->zig_target)) { + lj->args.append(get_libc_crt_file(g, "crtn.o")); + } } if (!g->zig_target->is_native) { -- 2.54.0