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
signaturelock-open 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...@@ -8390,15 +8390,16 @@ void add_cc_args(CodeGen *g, ZigList<const char *> &args, const char *out_dep_pa
8390 }8390 }
8391 }8391 }
83928392
8393 args.append("-isystem");
8394 args.append(buf_ptr(g->zig_c_headers_dir));
8395
8396 for (size_t i = 0; i < g->libc_include_dir_len; i += 1) {8393 for (size_t i = 0; i < g->libc_include_dir_len; i += 1) {
8397 Buf *include_dir = g->libc_include_dir_list[i];8394 Buf *include_dir = g->libc_include_dir_list[i];
8398 args.append("-isystem");8395 args.append("-isystem");
8399 args.append(buf_ptr(include_dir));8396 args.append(buf_ptr(include_dir));
8400 }8397 }
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
8402 if (g->zig_target->is_native) {8403 if (g->zig_target->is_native) {
8403 args.append("-march=native");8404 args.append("-march=native");
8404 } else {8405 } else {
src/link.cpp+6-2
...@@ -1775,11 +1775,15 @@ static void construct_linker_job_elf(LinkJob *lj) {...@@ -1775,11 +1775,15 @@ static void construct_linker_job_elf(LinkJob *lj) {
1775 lj->args.append("--no-as-needed");1775 lj->args.append("--no-as-needed");
1776 }1776 }
1777 } else if (target_is_glibc(g->zig_target)) {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 add_glibc_libs(lj);1781 add_glibc_libs(lj);
1780 lj->args.append(get_libc_crt_file(g, "libc_nonshared.a"));1782 lj->args.append(get_libc_crt_file(g, "libc_nonshared.a"));
1781 } else if (target_is_musl(g->zig_target)) {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 lj->args.append(build_musl(g));1787 lj->args.append(build_musl(g));
1784 } else {1788 } else {
1785 zig_unreachable();1789 zig_unreachable();
src/target.cpp+6
...@@ -1687,3 +1687,9 @@ const char *target_arch_musl_name(ZigLLVM_ArchType arch) {...@@ -1687,3 +1687,9 @@ const char *target_arch_musl_name(ZigLLVM_ArchType arch) {
1687 }1687 }
1688}1688}
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);...@@ -189,6 +189,7 @@ bool target_is_single_threaded(const ZigTarget *target);
189bool target_supports_stack_probing(const ZigTarget *target);189bool target_supports_stack_probing(const ZigTarget *target);
190bool target_has_debug_info(const ZigTarget *target);190bool target_has_debug_info(const ZigTarget *target);
191const char *target_arch_musl_name(ZigLLVM_ArchType arch);191const char *target_arch_musl_name(ZigLLVM_ArchType arch);
192bool target_supports_libunwind(const ZigTarget *target);
192193
193uint32_t target_arch_pointer_bit_width(ZigLLVM_ArchType arch);194uint32_t target_arch_pointer_bit_width(ZigLLVM_ArchType arch);
194195