authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-03-30 15:50:53-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-03-30 15:50:53-04:00
log6408766d6b55d228a305b877f28f45c1587f7d39
tree6a573105b8919570493ade6706426cb6d1101ea5
parent9e7ae062492d4b41564832d37408336e36165e67
signaturelock-open Commit is signed but in an unrecognized format.

linking: remove check for target_supports_libunwind

I'm not sure why this was ever there. Maybe it was working around a problem with LLVM 9. Anyway this fixes linking C++ code for 32 bit arm and riscv.

3 files changed, 2 insertions(+), 20 deletions(-)

src/link.cpp+2-6
......@@ -1947,15 +1947,11 @@ static void construct_linker_job_elf(LinkJob *lj) {
19471947 lj->args.append("-lpthread");
19481948 }
19491949 } else if (target_is_glibc(g->zig_target)) {
1950 if (target_supports_libunwind(g->zig_target)) {
1951 lj->args.append(build_libunwind(g, lj->build_dep_prog_node));
1952 }
1950 lj->args.append(build_libunwind(g, lj->build_dep_prog_node));
19531951 add_glibc_libs(lj);
19541952 lj->args.append(get_libc_crt_file(g, "libc_nonshared.a", lj->build_dep_prog_node));
19551953 } else if (target_is_musl(g->zig_target)) {
1956 if (target_supports_libunwind(g->zig_target)) {
1957 lj->args.append(build_libunwind(g, lj->build_dep_prog_node));
1958 }
1954 lj->args.append(build_libunwind(g, lj->build_dep_prog_node));
19591955 lj->args.append(build_musl(g, lj->build_dep_prog_node));
19601956 } else if (g->libcpp_link_lib != nullptr) {
19611957 lj->args.append(build_libunwind(g, lj->build_dep_prog_node));
src/target.cpp-13
......@@ -1295,19 +1295,6 @@ const char *target_arch_musl_name(ZigLLVM_ArchType arch) {
12951295 }
12961296}
12971297
1298bool target_supports_libunwind(const ZigTarget *target) {
1299 switch (target->arch) {
1300 case ZigLLVM_arm:
1301 case ZigLLVM_armeb:
1302 case ZigLLVM_riscv32:
1303 case ZigLLVM_riscv64:
1304 return false;
1305 default:
1306 return true;
1307 }
1308 return true;
1309}
1310
13111298bool target_libc_needs_crti_crtn(const ZigTarget *target) {
13121299 if (target->arch == ZigLLVM_riscv32 || target->arch == ZigLLVM_riscv64 || target_is_android(target)) {
13131300 return false;
src/target.hpp-1
......@@ -119,7 +119,6 @@ bool target_supports_stack_probing(const ZigTarget *target);
119119bool target_supports_sanitize_c(const ZigTarget *target);
120120bool target_has_debug_info(const ZigTarget *target);
121121const char *target_arch_musl_name(ZigLLVM_ArchType arch);
122bool target_supports_libunwind(const ZigTarget *target);
123122
124123uint32_t target_arch_pointer_bit_width(ZigLLVM_ArchType arch);
125124uint32_t target_arch_largest_atomic_bits(ZigLLVM_ArchType arch);