| author | |
| committer | |
| log | c0b4121ff2d31b2ef37e480eec18f0bd063d7a2d |
| tree | 7a298a8bca5fb1877d589553aa13396f4f27c321 |
| parent | ec92739022244154f4a7de7dab81dfad018a7954 |
| signature |
4 files changed, 17 insertions(+), 5 deletions(-)
src/codegen.cpp+4-3| ... | ... | @@ -8390,15 +8390,16 @@ void add_cc_args(CodeGen *g, ZigList<const char *> &args, const char *out_dep_pa |
| 8390 | 8390 | } |
| 8391 | 8391 | } |
| 8392 | 8392 | |
| 8393 | args.append("-isystem"); | |
| 8394 | args.append(buf_ptr(g->zig_c_headers_dir)); | |
| 8395 | ||
| 8396 | 8393 | for (size_t i = 0; i < g->libc_include_dir_len; i += 1) { |
| 8397 | 8394 | Buf *include_dir = g->libc_include_dir_list[i]; |
| 8398 | 8395 | args.append("-isystem"); |
| 8399 | 8396 | args.append(buf_ptr(include_dir)); |
| 8400 | 8397 | } |
| 8401 | 8398 | |
| 8399 | // According to Rich Felker libc headers are supposed to go before C language headers. | |
| 8400 | args.append("-isystem"); | |
| 8401 | args.append(buf_ptr(g->zig_c_headers_dir)); | |
| 8402 | ||
| 8402 | 8403 | if (g->zig_target->is_native) { |
| 8403 | 8404 | args.append("-march=native"); |
| 8404 | 8405 | } else { |
src/link.cpp+6-2| ... | ... | @@ -1775,11 +1775,15 @@ static void construct_linker_job_elf(LinkJob *lj) { |
| 1775 | 1775 | lj->args.append("--no-as-needed"); |
| 1776 | 1776 | } |
| 1777 | 1777 | } else if (target_is_glibc(g->zig_target)) { |
| 1778 | lj->args.append(build_libunwind(g)); | |
| 1778 | if (target_supports_libunwind(g->zig_target)) { | |
| 1779 | lj->args.append(build_libunwind(g)); | |
| 1780 | } | |
| 1779 | 1781 | add_glibc_libs(lj); |
| 1780 | 1782 | lj->args.append(get_libc_crt_file(g, "libc_nonshared.a")); |
| 1781 | 1783 | } else if (target_is_musl(g->zig_target)) { |
| 1782 | lj->args.append(build_libunwind(g)); | |
| 1784 | if (target_supports_libunwind(g->zig_target)) { | |
| 1785 | lj->args.append(build_libunwind(g)); | |
| 1786 | } | |
| 1783 | 1787 | lj->args.append(build_musl(g)); |
| 1784 | 1788 | } else { |
| 1785 | 1789 | zig_unreachable(); |
src/target.cpp+6| ... | ... | @@ -1687,3 +1687,9 @@ const char *target_arch_musl_name(ZigLLVM_ArchType arch) { |
| 1687 | 1687 | } |
| 1688 | 1688 | } |
| 1689 | 1689 | |
| 1690 | bool target_supports_libunwind(const ZigTarget *target) { | |
| 1691 | if (target->arch == ZigLLVM_arm || target->arch == ZigLLVM_armeb) { | |
| 1692 | return false; | |
| 1693 | } | |
| 1694 | return true; | |
| 1695 | } |
src/target.hpp+1| ... | ... | @@ -189,6 +189,7 @@ bool target_is_single_threaded(const ZigTarget *target); |
| 189 | 189 | bool target_supports_stack_probing(const ZigTarget *target); |
| 190 | 190 | bool target_has_debug_info(const ZigTarget *target); |
| 191 | 191 | const char *target_arch_musl_name(ZigLLVM_ArchType arch); |
| 192 | bool target_supports_libunwind(const ZigTarget *target); | |
| 192 | 193 | |
| 193 | 194 | uint32_t target_arch_pointer_bit_width(ZigLLVM_ArchType arch); |
| 194 | 195 |