authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-07-16 21:38:18-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-07-16 21:38:18-04:00
logc0b4121ff2d31b2ef37e480eec18f0bd063d7a2d
tree7a298a8bca5fb1877d589553aa13396f4f27c321
parentec92739022244154f4a7de7dab81dfad018a7954
signature Commit is signed but in an unrecognized format.

libc headers before C language headers, and disable libunwind on arm32


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
83908390 }
83918391 }
83928392
8393 args.append("-isystem");
8394 args.append(buf_ptr(g->zig_c_headers_dir));
8395
83968393 for (size_t i = 0; i < g->libc_include_dir_len; i += 1) {
83978394 Buf *include_dir = g->libc_include_dir_list[i];
83988395 args.append("-isystem");
83998396 args.append(buf_ptr(include_dir));
84008397 }
84018398
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
84028403 if (g->zig_target->is_native) {
84038404 args.append("-march=native");
84048405 } else {
src/link.cpp+6-2
......@@ -1775,11 +1775,15 @@ static void construct_linker_job_elf(LinkJob *lj) {
17751775 lj->args.append("--no-as-needed");
17761776 }
17771777 } 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 }
17791781 add_glibc_libs(lj);
17801782 lj->args.append(get_libc_crt_file(g, "libc_nonshared.a"));
17811783 } 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 }
17831787 lj->args.append(build_musl(g));
17841788 } else {
17851789 zig_unreachable();
src/target.cpp+6
......@@ -1687,3 +1687,9 @@ const char *target_arch_musl_name(ZigLLVM_ArchType arch) {
16871687 }
16881688}
16891689
1690bool 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);
189189bool target_supports_stack_probing(const ZigTarget *target);
190190bool target_has_debug_info(const ZigTarget *target);
191191const char *target_arch_musl_name(ZigLLVM_ArchType arch);
192bool target_supports_libunwind(const ZigTarget *target);
192193
193194uint32_t target_arch_pointer_bit_width(ZigLLVM_ArchType arch);
194195