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) {...@@ -1947,15 +1947,11 @@ static void construct_linker_job_elf(LinkJob *lj) {
1947 lj->args.append("-lpthread");1947 lj->args.append("-lpthread");
1948 }1948 }
1949 } else if (target_is_glibc(g->zig_target)) {1949 } else if (target_is_glibc(g->zig_target)) {
1950 if (target_supports_libunwind(g->zig_target)) {1950 lj->args.append(build_libunwind(g, lj->build_dep_prog_node));
1951 lj->args.append(build_libunwind(g, lj->build_dep_prog_node));
1952 }
1953 add_glibc_libs(lj);1951 add_glibc_libs(lj);
1954 lj->args.append(get_libc_crt_file(g, "libc_nonshared.a", lj->build_dep_prog_node));1952 lj->args.append(get_libc_crt_file(g, "libc_nonshared.a", lj->build_dep_prog_node));
1955 } else if (target_is_musl(g->zig_target)) {1953 } else if (target_is_musl(g->zig_target)) {
1956 if (target_supports_libunwind(g->zig_target)) {1954 lj->args.append(build_libunwind(g, lj->build_dep_prog_node));
1957 lj->args.append(build_libunwind(g, lj->build_dep_prog_node));
1958 }
1959 lj->args.append(build_musl(g, lj->build_dep_prog_node));1955 lj->args.append(build_musl(g, lj->build_dep_prog_node));
1960 } else if (g->libcpp_link_lib != nullptr) {1956 } else if (g->libcpp_link_lib != nullptr) {
1961 lj->args.append(build_libunwind(g, lj->build_dep_prog_node));1957 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) {...@@ -1295,19 +1295,6 @@ const char *target_arch_musl_name(ZigLLVM_ArchType arch) {
1295 }1295 }
1296}1296}
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
1311bool target_libc_needs_crti_crtn(const ZigTarget *target) {1298bool target_libc_needs_crti_crtn(const ZigTarget *target) {
1312 if (target->arch == ZigLLVM_riscv32 || target->arch == ZigLLVM_riscv64 || target_is_android(target)) {1299 if (target->arch == ZigLLVM_riscv32 || target->arch == ZigLLVM_riscv64 || target_is_android(target)) {
1313 return false;1300 return false;
src/target.hpp-1
...@@ -119,7 +119,6 @@ bool target_supports_stack_probing(const ZigTarget *target);...@@ -119,7 +119,6 @@ bool target_supports_stack_probing(const ZigTarget *target);
119bool target_supports_sanitize_c(const ZigTarget *target);119bool target_supports_sanitize_c(const ZigTarget *target);
120bool target_has_debug_info(const ZigTarget *target);120bool target_has_debug_info(const ZigTarget *target);
121const char *target_arch_musl_name(ZigLLVM_ArchType arch);121const char *target_arch_musl_name(ZigLLVM_ArchType arch);
122bool target_supports_libunwind(const ZigTarget *target);
123122
124uint32_t target_arch_pointer_bit_width(ZigLLVM_ArchType arch);123uint32_t target_arch_pointer_bit_width(ZigLLVM_ArchType arch);
125uint32_t target_arch_largest_atomic_bits(ZigLLVM_ArchType arch);124uint32_t target_arch_largest_atomic_bits(ZigLLVM_ArchType arch);