From d99437917363d0b550af5e20360bd07bc98367ba Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Tue, 16 Jul 2019 19:54:14 -0400 Subject: update bundled musl source to 1.1.23 --- src/link.cpp | 43 +++++++++---------------------------------- 1 file changed, 9 insertions(+), 34 deletions(-) (limited to 'src/link.cpp') diff --git a/src/link.cpp b/src/link.cpp index 4a17ec892c..4d2144f5cc 100644 --- a/src/link.cpp +++ b/src/link.cpp @@ -914,39 +914,9 @@ static const char *glibc_start_asm_path(CodeGen *parent, const char *file) { return buf_ptr(&result); } -static const char *musl_arch_name(const ZigTarget *target) { - switch (target->arch) { - case ZigLLVM_aarch64: - case ZigLLVM_aarch64_be: - return "aarch64"; - case ZigLLVM_arm: - case ZigLLVM_armeb: - return "arm"; - case ZigLLVM_mips: - case ZigLLVM_mipsel: - return "mips"; - case ZigLLVM_mips64el: - case ZigLLVM_mips64: - return "mips64"; - case ZigLLVM_ppc: - return "powerpc"; - case ZigLLVM_ppc64: - case ZigLLVM_ppc64le: - return "powerpc64"; - case ZigLLVM_systemz: - return "s390x"; - case ZigLLVM_x86: - return "i386"; - case ZigLLVM_x86_64: - return "x86_64"; - default: - zig_unreachable(); - } -} - static const char *musl_start_asm_path(CodeGen *parent, const char *file) { Buf *result = buf_sprintf("%s" OS_SEP "libc" OS_SEP "musl" OS_SEP "crt" OS_SEP "%s" OS_SEP "%s", - buf_ptr(parent->zig_lib_dir), musl_arch_name(parent->zig_target), file); + buf_ptr(parent->zig_lib_dir), target_arch_musl_name(parent->zig_target->arch), file); return buf_ptr(result); } @@ -961,18 +931,22 @@ static void musl_add_cc_args(CodeGen *parent, CFile *c_file, bool want_O3) { c_file->args.append("-I"); c_file->args.append(buf_ptr(buf_sprintf("%s" OS_SEP "libc" OS_SEP "musl" OS_SEP "arch" OS_SEP "%s", - buf_ptr(parent->zig_lib_dir), musl_arch_name(parent->zig_target)))); + buf_ptr(parent->zig_lib_dir), target_arch_musl_name(parent->zig_target->arch)))); c_file->args.append("-I"); c_file->args.append(buf_ptr(buf_sprintf("%s" OS_SEP "libc" OS_SEP "musl" OS_SEP "arch" OS_SEP "generic", buf_ptr(parent->zig_lib_dir)))); + c_file->args.append("-I"); + c_file->args.append(buf_ptr(buf_sprintf("%s" OS_SEP "libc" OS_SEP "musl" OS_SEP "src" OS_SEP "include", + buf_ptr(parent->zig_lib_dir)))); + c_file->args.append("-I"); c_file->args.append(buf_ptr(buf_sprintf("%s" OS_SEP "libc" OS_SEP "musl" OS_SEP "src" OS_SEP "internal", buf_ptr(parent->zig_lib_dir)))); c_file->args.append("-I"); - c_file->args.append(buf_ptr(buf_sprintf("%s" OS_SEP "libc" OS_SEP "musl" OS_SEP "src" OS_SEP "include", + c_file->args.append(buf_ptr(buf_sprintf("%s" OS_SEP "libc" OS_SEP "musl" OS_SEP "include", buf_ptr(parent->zig_lib_dir)))); c_file->args.append("-I"); @@ -1012,6 +986,7 @@ static const char *musl_arch_names[] = { "or1k", "powerpc", "powerpc64", + "riscv64", "s390x", "sh", "x32", @@ -1039,7 +1014,7 @@ static const char *build_musl(CodeGen *parent) { MuslSrcO3, }; - const char *target_musl_arch_name = musl_arch_name(parent->zig_target); + const char *target_musl_arch_name = target_arch_musl_name(parent->zig_target->arch); HashMap source_table = {}; source_table.init(1800); -- cgit v1.2.3 From c0b4121ff2d31b2ef37e480eec18f0bd063d7a2d Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Tue, 16 Jul 2019 21:38:18 -0400 Subject: libc headers before C language headers, and disable libunwind on arm32 --- src/codegen.cpp | 7 ++++--- src/link.cpp | 8 ++++++-- src/target.cpp | 6 ++++++ src/target.hpp | 1 + 4 files changed, 17 insertions(+), 5 deletions(-) (limited to 'src/link.cpp') diff --git a/src/codegen.cpp b/src/codegen.cpp index fbf6c98f12..188c5ccc8d 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -8390,15 +8390,16 @@ void add_cc_args(CodeGen *g, ZigList &args, const char *out_dep_pa } } - args.append("-isystem"); - args.append(buf_ptr(g->zig_c_headers_dir)); - for (size_t i = 0; i < g->libc_include_dir_len; i += 1) { Buf *include_dir = g->libc_include_dir_list[i]; args.append("-isystem"); args.append(buf_ptr(include_dir)); } + // According to Rich Felker libc headers are supposed to go before C language headers. + args.append("-isystem"); + args.append(buf_ptr(g->zig_c_headers_dir)); + if (g->zig_target->is_native) { args.append("-march=native"); } else { diff --git a/src/link.cpp b/src/link.cpp index 4d2144f5cc..44b3abaa90 100644 --- a/src/link.cpp +++ b/src/link.cpp @@ -1775,11 +1775,15 @@ static void construct_linker_job_elf(LinkJob *lj) { lj->args.append("--no-as-needed"); } } else if (target_is_glibc(g->zig_target)) { - lj->args.append(build_libunwind(g)); + if (target_supports_libunwind(g->zig_target)) { + lj->args.append(build_libunwind(g)); + } add_glibc_libs(lj); lj->args.append(get_libc_crt_file(g, "libc_nonshared.a")); } else if (target_is_musl(g->zig_target)) { - lj->args.append(build_libunwind(g)); + if (target_supports_libunwind(g->zig_target)) { + lj->args.append(build_libunwind(g)); + } lj->args.append(build_musl(g)); } else { zig_unreachable(); diff --git a/src/target.cpp b/src/target.cpp index e5226bd520..804c421618 100644 --- a/src/target.cpp +++ b/src/target.cpp @@ -1687,3 +1687,9 @@ const char *target_arch_musl_name(ZigLLVM_ArchType arch) { } } +bool target_supports_libunwind(const ZigTarget *target) { + if (target->arch == ZigLLVM_arm || target->arch == ZigLLVM_armeb) { + return false; + } + return true; +} diff --git a/src/target.hpp b/src/target.hpp index 483172cc94..fcda9955b9 100644 --- a/src/target.hpp +++ b/src/target.hpp @@ -189,6 +189,7 @@ bool target_is_single_threaded(const ZigTarget *target); bool target_supports_stack_probing(const ZigTarget *target); bool target_has_debug_info(const ZigTarget *target); const char *target_arch_musl_name(ZigLLVM_ArchType arch); +bool target_supports_libunwind(const ZigTarget *target); uint32_t target_arch_pointer_bit_width(ZigLLVM_ArchType arch); -- cgit v1.2.3