From 7364ca41b93841437667c84bb66c15fcb39763d9 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Thu, 19 May 2016 23:35:43 -0700 Subject: clang: Switch to master (3.9) branch Drop upstreamed patches Signed-off-by: Khem Raj --- recipes-devtools/clang/clang.inc | 32 +- ...tend-support-I-path-for-sysroot-expansion.patch | 99 ------- ...KE_CROSSCOMPILING-so-it-can-cross-compile.patch | 34 --- .../0001-clang-driver-Add-musl-ldso-support.patch | 83 ++++++ .../clang/0001-driver-Add-musl-ldso-support.patch | 82 ------ .../clang/0001-driver-Use-lib-for-ldso-on-OE.patch | 66 ----- .../clang/0001-llvm-triplet-Add-musl-support.patch | 109 +++++++ ...-ppc-does-not-support-128-bit-long-double.patch | 27 -- ...pen64-fseeko64-ftello64-tmpfile64-on-musl.patch | 96 ------ .../clang/0001-triplet-Add-musl-support.patch | 109 ------- .../clang/0002-Do-not-assume-linux-glibc.patch | 28 -- .../0002-clang-driver-Use-lib-for-ldso-on-OE.patch | 63 ++++ ...-CMAKE_CROSSCOMPILING-so-it-can-cross-com.patch | 34 +++ ...r-tools.cpp-Add-lssp-and-lssp_nonshared-o.patch | 35 +++ .../0003-llvm-Do-not-assume-linux-glibc.patch | 28 ++ ...-ppc-does-not-support-128-bit-long-double.patch | 27 ++ ...-fopen64-fseeko64-ftello64-tmpfile64-on-m.patch | 126 ++++++++ recipes-devtools/clang/clang_git.bb | 17 +- ...l-check-for-explicit-COMPILER_RT_DEFAULT_.patch | 33 --- ...l-check-for-explicit-COMPILER_RT_DEFAULT_.patch | 17 +- ...oss-compilation.-Don-t-use-native-compile.patch | 67 ----- .../0001-support-a-new-embedded-linux-target.patch | 326 --------------------- .../0002-support-a-new-embedded-linux-target.patch | 326 +++++++++++++++++++++ ...oss-compilation.-Don-t-use-native-compile.patch | 67 +++++ recipes-devtools/clang/compiler-rt_git.bb | 4 +- .../0001-use-constexpr-when-using-glibc.patch | 38 +-- ...se-x29-and-x30-for-fp-and-lr-respectively.patch | 65 ---- recipes-devtools/clang/llvm-libunwind_git.bb | 1 - 28 files changed, 941 insertions(+), 1098 deletions(-) delete mode 100644 recipes-devtools/clang/clang/0001-Frontend-support-I-path-for-sysroot-expansion.patch delete mode 100644 recipes-devtools/clang/clang/0001-Remove-CMAKE_CROSSCOMPILING-so-it-can-cross-compile.patch create mode 100644 recipes-devtools/clang/clang/0001-clang-driver-Add-musl-ldso-support.patch delete mode 100644 recipes-devtools/clang/clang/0001-driver-Add-musl-ldso-support.patch delete mode 100644 recipes-devtools/clang/clang/0001-driver-Use-lib-for-ldso-on-OE.patch create mode 100644 recipes-devtools/clang/clang/0001-llvm-triplet-Add-musl-support.patch delete mode 100644 recipes-devtools/clang/clang/0001-musl-ppc-does-not-support-128-bit-long-double.patch delete mode 100644 recipes-devtools/clang/clang/0001-remove-fopen64-fseeko64-ftello64-tmpfile64-on-musl.patch delete mode 100644 recipes-devtools/clang/clang/0001-triplet-Add-musl-support.patch delete mode 100644 recipes-devtools/clang/clang/0002-Do-not-assume-linux-glibc.patch create mode 100644 recipes-devtools/clang/clang/0002-clang-driver-Use-lib-for-ldso-on-OE.patch create mode 100644 recipes-devtools/clang/clang/0002-llvm-Remove-CMAKE_CROSSCOMPILING-so-it-can-cross-com.patch create mode 100644 recipes-devtools/clang/clang/0003-clang-Driver-tools.cpp-Add-lssp-and-lssp_nonshared-o.patch create mode 100644 recipes-devtools/clang/clang/0003-llvm-Do-not-assume-linux-glibc.patch create mode 100644 recipes-devtools/clang/clang/0004-clang-musl-ppc-does-not-support-128-bit-long-double.patch create mode 100644 recipes-devtools/clang/clang/0004-llvm-remove-fopen64-fseeko64-ftello64-tmpfile64-on-m.patch delete mode 100644 recipes-devtools/clang/compiler-rt/0001-3.9-Remove-fatal-check-for-explicit-COMPILER_RT_DEFAULT_.patch delete mode 100644 recipes-devtools/clang/compiler-rt/0001-Simplify-cross-compilation.-Don-t-use-native-compile.patch delete mode 100644 recipes-devtools/clang/compiler-rt/0001-support-a-new-embedded-linux-target.patch create mode 100644 recipes-devtools/clang/compiler-rt/0002-support-a-new-embedded-linux-target.patch create mode 100644 recipes-devtools/clang/compiler-rt/0003-Simplify-cross-compilation.-Don-t-use-native-compile.patch delete mode 100644 recipes-devtools/clang/llvm-libunwind/0001-aarch64-Use-x29-and-x30-for-fp-and-lr-respectively.patch (limited to 'recipes-devtools') diff --git a/recipes-devtools/clang/clang.inc b/recipes-devtools/clang/clang.inc index 7f921ac..331d97d 100644 --- a/recipes-devtools/clang/clang.inc +++ b/recipes-devtools/clang/clang.inc @@ -4,29 +4,17 @@ LLVM_DIR = "llvm${LLVM_RELEASE}" LLVM_GIT ?= "git://github.com/llvm-mirror" LLVM_GIT_PROTOCOL ?= "git" -PV = "3.8.0" -BRANCH ?= "release_38" -SRCREV_llvm ?= "06cf4b238fa45638ed37ec7725d38930fea37ff9" -SRCREV_clang ?= "9fd77bd68130d9b2fbc56a3138b6f981d560480a" -SRCREV_compiler-rt ?= "31769223eb782e7b03655810d00dfdec66467d51" -SRCREV_libcxxabi ?= "8d4e51dd9c743b66c8dd552f0632174e04af4052" -SRCREV_libcxx ?= "fda3549c01ea0a1d2ee00fe0033c35dc36796fc8" -SRCREV_libunwind ?= "25647b29dd78196ed3c883392ebb339265aeb355" - -LLVMMD5SUM ?= "4c0bc17c954e99fd547528d938832bfa" -CLANGMD5SUM ?= "82ed8fe1976ca709bbd81f4f10a48ccd" - # # Uncomment below to enable master version of clang/llvm # -#PV = "3.9.0" -#BRANCH = "master" -#SRCREV_llvm = "${AUTOREV}" -#SRCREV_clang = "${AUTOREV}" -#SRCREV_compiler-rt = "${AUTOREV}" -#SRCREV_libcxxabi = "${AUTOREV}" -#SRCREV_libcxx = "${AUTOREV}" -#SRCREV_libunwind = "${AUTOREV}" -#LLVMMD5SUM = "43fdaa303c1c5589ad60f4ffc6a0b9ce" -#CLANGMD5SUM = "a77eac638a3aae44a2d604217d6f0f01" +PV = "3.9.0" +BRANCH = "master" +SRCREV_llvm = "${AUTOREV}" +SRCREV_clang = "${AUTOREV}" +SRCREV_compiler-rt = "${AUTOREV}" +SRCREV_libcxxabi = "${AUTOREV}" +SRCREV_libcxx = "${AUTOREV}" +SRCREV_libunwind = "${AUTOREV}" +LLVMMD5SUM = "43fdaa303c1c5589ad60f4ffc6a0b9ce" +CLANGMD5SUM = "a77eac638a3aae44a2d604217d6f0f01" diff --git a/recipes-devtools/clang/clang/0001-Frontend-support-I-path-for-sysroot-expansion.patch b/recipes-devtools/clang/clang/0001-Frontend-support-I-path-for-sysroot-expansion.patch deleted file mode 100644 index 76c214a..0000000 --- a/recipes-devtools/clang/clang/0001-Frontend-support-I-path-for-sysroot-expansion.patch +++ /dev/null @@ -1,99 +0,0 @@ -Upstream-Status: backport - -From 0632c1bf6c41f6c89f21957e1379232ef7668d4a Mon Sep 17 00:00:00 2001 -From: Saleem Abdulrasool -Date: Fri, 6 May 2016 19:13:55 +0000 -Subject: [PATCH] Frontend: support -I=path for sysroot expansion - -From the GCC manpage: - - -I dir - ... If dir begins with =, then the = will be replaced by the sysroot prefix; - see --sysroot and -isysroot. - -Add support to expand the `=` as a prefix of the include path with the sysroot -if specified. `-isysroot` takes precedence over `--sysroot` as the normal -argument behaviour occurs. The ordering of the `-isysroot` is relevant to the -path substituted. If no `--sysroot=` or `-isysroot` option is present, the = is -not expanded. - -Resolves PR26965! - -git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@268777 91177308-0d34-0410-b5e6-96231b3b80d8 ---- - lib/Frontend/CompilerInvocation.cpp | 16 ++++++++++++++-- - test/Preprocessor/sysroot-prefix.c | 28 ++++++++++++++++++++++++++++ - 2 files changed, 42 insertions(+), 2 deletions(-) - create mode 100644 test/Preprocessor/sysroot-prefix.c - -diff --git a/lib/Frontend/CompilerInvocation.cpp b/lib/Frontend/CompilerInvocation.cpp -index 237a447..845dffc 100644 ---- a/lib/Frontend/CompilerInvocation.cpp -+++ b/lib/Frontend/CompilerInvocation.cpp -@@ -1243,6 +1243,8 @@ static void ParseHeaderSearchArgs(HeaderSearchOptions &Opts, ArgList &Args) { - - // Add -I..., -F..., and -index-header-map options in order. - bool IsIndexHeaderMap = false; -+ bool IsSysrootSpecified = -+ Args.hasArg(OPT__sysroot_EQ) || Args.hasArg(OPT_isysroot); - for (const Arg *A : Args.filtered(OPT_I, OPT_F, OPT_index_header_map)) { - if (A->getOption().matches(OPT_index_header_map)) { - // -index-header-map applies to the next -I or -F. -@@ -1253,8 +1255,18 @@ static void ParseHeaderSearchArgs(HeaderSearchOptions &Opts, ArgList &Args) { - frontend::IncludeDirGroup Group = - IsIndexHeaderMap ? frontend::IndexHeaderMap : frontend::Angled; - -- Opts.AddPath(A->getValue(), Group, -- /*IsFramework=*/A->getOption().matches(OPT_F), true); -+ bool IsFramework = A->getOption().matches(OPT_F); -+ std::string Path = A->getValue(); -+ -+ if (IsSysrootSpecified && !IsFramework && A->getValue()[0] == '=') { -+ SmallString<32> Buffer; -+ llvm::sys::path::append(Buffer, Opts.Sysroot, -+ llvm::StringRef(A->getValue()).substr(1)); -+ Path = Buffer.str(); -+ } -+ -+ Opts.AddPath(Path.c_str(), Group, IsFramework, -+ /*IgnoreSysroot*/ true); - IsIndexHeaderMap = false; - } - -diff --git a/test/Preprocessor/sysroot-prefix.c b/test/Preprocessor/sysroot-prefix.c -new file mode 100644 -index 0000000..feea502 ---- /dev/null -+++ b/test/Preprocessor/sysroot-prefix.c -@@ -0,0 +1,28 @@ -+// RUN: %clang_cc1 -v -isysroot /var/empty -I /dev/null -E %s -o /dev/null 2>&1 | FileCheck -check-prefix CHECK-ISYSROOT_NO_SYSROOT %s -+// RUN: %clang_cc1 -v -isysroot /var/empty -I =/dev/null -E %s -o /dev/null 2>&1 | FileCheck -check-prefix CHECK-ISYSROOT_SYSROOT_DEV_NULL %s -+// RUN: %clang_cc1 -v -I =/dev/null -E %s -o /dev/null 2>&1 | FileCheck -check-prefix CHECK-NO_ISYSROOT_SYSROOT_DEV_NULL %s -+// RUN: %clang_cc1 -v -isysroot /var/empty -I =null -E %s -o /dev/null 2>&1 | FileCheck -check-prefix CHECK-ISYSROOT_SYSROOT_NULL %s -+// RUN: %clang_cc1 -v -isysroot /var/empty -isysroot /var/empty/root -I =null -E %s -o /dev/null 2>&1 | FileCheck -check-prefix CHECK-ISYSROOT_ISYSROOT_SYSROOT_NULL %s -+// RUN: %clang_cc1 -v -isysroot /var/empty/root -isysroot /var/empty -I =null -E %s -o /dev/null 2>&1 | FileCheck -check-prefix CHECK-ISYSROOT_ISYSROOT_SWAPPED_SYSROOT_NULL %s -+ -+// CHECK-ISYSROOT_NO_SYSROOT: ignoring nonexistent directory "/dev/null" -+// CHECK-ISYSROOT_NO_SYSROOT-NOT: ignoring nonexistent directory "/var/empty/dev/null" -+ -+// CHECK-NO_ISYSROOT_SYSROOT_DEV_NULL: ignoring nonexistent directory "=/dev/null" -+// CHECK-NO_ISYSROOT_SYSROOT_DEV_NULL-NOT: ignoring nonexistent directory "/dev/null" -+ -+// CHECK-ISYSROOT_SYSROOT_DEV_NULL: ignoring nonexistent directory "/var/empty/dev/null" -+// CHECK-ISYSROOT_SYSROOT_DEV_NULL-NOT: ignoring nonexistent directory "/dev/null" -+ -+// CHECK-NO_ISYSROOT_SYSROOT: ignoring nonexistent directory "=/dev/null" -+// CHECK-NO_ISYSROOT_SYSROOT-NOT: ignoring nonexistent directory "/var/empty/dev/null" -+ -+// CHECK-ISYSROOT_SYSROOT_NULL: ignoring nonexistent directory "/var/empty/null" -+// CHECK-ISYSROOT_SYSROOT_NULL-NOT: ignoring nonexistent directory "=null" -+ -+// CHECK-ISYSROOT_ISYSROOT_SYSROOT_NULL: ignoring nonexistent directory "/var/empty/root/null" -+// CHECK-ISYSROOT_ISYSROOT_SYSROOT_NULL-NOT: ignoring nonexistent directory "=null" -+ -+// CHECK-ISYSROOT_ISYSROOT_SWAPPED_SYSROOT_NULL: ignoring nonexistent directory "/var/empty/null" -+// CHECK-ISYSROOT_ISYSROOT_SWAPPED_SYSROOT_NULL-NOT: ignoring nonexistent directory "=null" -+ --- -2.8.2 - diff --git a/recipes-devtools/clang/clang/0001-Remove-CMAKE_CROSSCOMPILING-so-it-can-cross-compile.patch b/recipes-devtools/clang/clang/0001-Remove-CMAKE_CROSSCOMPILING-so-it-can-cross-compile.patch deleted file mode 100644 index 8945c66..0000000 --- a/recipes-devtools/clang/clang/0001-Remove-CMAKE_CROSSCOMPILING-so-it-can-cross-compile.patch +++ /dev/null @@ -1,34 +0,0 @@ -From a004191b8e3976ac4a201ddc78c03a777d3193d9 Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Fri, 15 May 2015 12:13:17 -0700 -Subject: [PATCH] Remove CMAKE_CROSSCOMPILING so it can cross compile - -we already have llvm-config from clang-native - -Signed-off-by: Khem Raj ---- - tools/llvm-config/CMakeLists.txt | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/tools/llvm-config/CMakeLists.txt b/tools/llvm-config/CMakeLists.txt -index d2ef45a..3d8b7b1 100644 ---- a/tools/llvm-config/CMakeLists.txt -+++ b/tools/llvm-config/CMakeLists.txt -@@ -34,7 +34,7 @@ add_llvm_tool(llvm-config - # Add the dependency on the generation step. - add_file_dependencies(${CMAKE_CURRENT_SOURCE_DIR}/llvm-config.cpp ${BUILDVARIABLES_OBJPATH}) - --if(CMAKE_CROSSCOMPILING) -+if(CMAKE_CROSSCOMPILING1) - set(${project}_LLVM_CONFIG_EXE "${LLVM_NATIVE_BUILD}/bin/llvm-config") - set(${project}_LLVM_CONFIG_EXE ${${project}_LLVM_CONFIG_EXE} PARENT_SCOPE) - -@@ -47,4 +47,4 @@ if(CMAKE_CROSSCOMPILING) - add_dependencies(${project}NativeLLVMConfig CONFIGURE_LLVM_NATIVE) - - add_dependencies(llvm-config ${project}NativeLLVMConfig) --endif(CMAKE_CROSSCOMPILING) -+endif(CMAKE_CROSSCOMPILING1) --- -2.1.4 - diff --git a/recipes-devtools/clang/clang/0001-clang-driver-Add-musl-ldso-support.patch b/recipes-devtools/clang/clang/0001-clang-driver-Add-musl-ldso-support.patch new file mode 100644 index 0000000..6747c24 --- /dev/null +++ b/recipes-devtools/clang/clang/0001-clang-driver-Add-musl-ldso-support.patch @@ -0,0 +1,83 @@ +From 21cb1801f0da97918ce5a567cd1f60413b4de726 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Wed, 30 Mar 2016 19:56:10 -0700 +Subject: [PATCH 1/4] clang: driver: Add musl ldso support + +Linux/musl libc implementation has different ldso +this needs to take effect when target arch is detected +as a musl based Linux platform + +Signed-off-by: Khem Raj +--- + lib/Driver/Tools.cpp | 48 ++++++++++++++++++++++++++++++++++++++++++------ + 1 file changed, 42 insertions(+), 6 deletions(-) + +diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp +index 8a1cb54..0ce548c 100644 +--- a/lib/Driver/Tools.cpp ++++ b/lib/Driver/Tools.cpp +@@ -8994,6 +8994,47 @@ static std::string getLinuxDynamicLinker(const ArgList &Args, + return "/system/bin/linker64"; + else + return "/system/bin/linker"; ++ } else if (ToolChain.getTriple().isLinuxMuslEnvironment()) { ++ switch (Arch) { ++ case llvm::Triple::x86: ++ return "/lib/ld-musl-i386.so.1"; ++ case llvm::Triple::x86_64: ++ if (ToolChain.getTriple().getEnvironment() == llvm::Triple::MUSLX32) ++ return "/lib/ld-musl-x32.so.1"; ++ else ++ return "/lib/ld-musl-x86_64.so.1"; ++ case llvm::Triple::aarch64: ++ return "/lib/ld-musl-aarch64.so.1"; ++ case llvm::Triple::aarch64_be: ++ return "/lib/ld-musl-aarch64_be.so.1"; ++ case llvm::Triple::ppc: ++ return "/lib/ld-musl-powerpc.so.1"; ++ case llvm::Triple::ppc64: ++ return "/lib/ld-musl-powerpc64.so.1"; ++ case llvm::Triple::arm: ++ case llvm::Triple::thumb: ++ if(arm::getARMFloatABI(ToolChain, Args) == arm::FloatABI::Hard) ++ return "/lib/ld-musl-armhf.so.1"; ++ else ++ return "/lib/ld-musl-arm.so.1"; ++ case llvm::Triple::armeb: ++ case llvm::Triple::thumbeb: ++ if(arm::getARMFloatABI(ToolChain, Args) == arm::FloatABI::Hard) ++ return "/lib/ld-musl-armebhf.so.1"; ++ else ++ return "/lib/ld-musl-armeb.so.1"; ++ case llvm::Triple::mips: ++ return "/lib/ld-musl-mips.so.1"; ++ case llvm::Triple::mipsel: ++ return "/lib/ld-musl-mipsel.so.1"; ++ case llvm::Triple::mips64: ++ return "/lib/ld-musl-mips64.so.1"; ++ case llvm::Triple::mips64el: ++ return "/lib/ld-musl-mipsel64el.so.1"; ++ default: ++ llvm_unreachable("unsupported musl architecture"); ++ break; ++ } + } else if (Arch == llvm::Triple::x86 || Arch == llvm::Triple::sparc || + Arch == llvm::Triple::sparcel) + return "/lib/ld-linux.so.2"; +@@ -9021,12 +9062,7 @@ static std::string getLinuxDynamicLinker(const ArgList &Args, + bool IsNaN2008 = mips::isNaN2008(Args, Triple); + if (mips::isUCLibc(Args)) + LibName = IsNaN2008 ? "ld-uClibc-mipsn8.so.0" : "ld-uClibc.so.0"; +- else if (!Triple.hasEnvironment() && +- Triple.getVendor() == llvm::Triple::VendorType::MipsTechnologies) { +- bool LE = (Triple.getArch() == llvm::Triple::mipsel) || +- (Triple.getArch() == llvm::Triple::mips64el); +- LibName = LE ? "ld-musl-mipsel.so.1" : "ld-musl-mips.so.1"; +- } else ++ else + LibName = IsNaN2008 ? "ld-linux-mipsn8.so.1" : "ld.so.1"; + + return (LibDir + "/" + LibName).str(); +-- +2.8.2 + diff --git a/recipes-devtools/clang/clang/0001-driver-Add-musl-ldso-support.patch b/recipes-devtools/clang/clang/0001-driver-Add-musl-ldso-support.patch deleted file mode 100644 index 89eb0b8..0000000 --- a/recipes-devtools/clang/clang/0001-driver-Add-musl-ldso-support.patch +++ /dev/null @@ -1,82 +0,0 @@ -From 2b8900f80027da90a41043f8d428c208cb6fdae2 Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Wed, 30 Mar 2016 19:56:10 -0700 -Subject: [PATCH] driver: Add musl ldso support - -Linux/musl libc implementation has different ldso -this needs to take effect when target arch is detected -as a musl based Linux platform - -Signed-off-by: Khem Raj ---- - lib/Driver/Tools.cpp | 47 ++++++++++++++++++++++++++++++++++++++++++----- - 1 file changed, 42 insertions(+), 5 deletions(-) - -diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp -index e45c5c5..34237c4 100644 ---- a/lib/Driver/Tools.cpp -+++ b/lib/Driver/Tools.cpp -@@ -8953,6 +8953,47 @@ static std::string getLinuxDynamicLinker(const ArgList &Args, - return "/system/bin/linker64"; - else - return "/system/bin/linker"; -+ } else if (ToolChain.getTriple().isLinuxMuslEnvironment()) { -+ switch (Arch) { -+ case llvm::Triple::x86: -+ return "/lib/ld-musl-i386.so.1"; -+ case llvm::Triple::x86_64: -+ if (ToolChain.getTriple().getEnvironment() == llvm::Triple::MUSLX32) -+ return "/lib/ld-musl-x32.so.1"; -+ else -+ return "/lib/ld-musl-x86_64.so.1"; -+ case llvm::Triple::aarch64: -+ return "/lib/ld-musl-aarch64.so.1"; -+ case llvm::Triple::aarch64_be: -+ return "/lib/ld-musl-aarch64_be.so.1"; -+ case llvm::Triple::ppc: -+ return "/lib/ld-musl-powerpc.so.1"; -+ case llvm::Triple::ppc64: -+ return "/lib/ld-musl-powerpc64.so.1"; -+ case llvm::Triple::arm: -+ case llvm::Triple::thumb: -+ if(arm::getARMFloatABI(ToolChain, Args) == arm::FloatABI::Hard) -+ return "/lib/ld-musl-armhf.so.1"; -+ else -+ return "/lib/ld-musl-arm.so.1"; -+ case llvm::Triple::armeb: -+ case llvm::Triple::thumbeb: -+ if(arm::getARMFloatABI(ToolChain, Args) == arm::FloatABI::Hard) -+ return "/lib/ld-musl-armebhf.so.1"; -+ else -+ return "/lib/ld-musl-armeb.so.1"; -+ case llvm::Triple::mips: -+ return "/lib/ld-musl-mips.so.1"; -+ case llvm::Triple::mipsel: -+ return "/lib/ld-musl-mipsel.so.1"; -+ case llvm::Triple::mips64: -+ return "/lib/ld-musl-mips64.so.1"; -+ case llvm::Triple::mips64el: -+ return "/lib/ld-musl-mipsel64el.so.1"; -+ default: -+ llvm_unreachable("unsupported musl architecture"); -+ break; -+ } - } else if (Arch == llvm::Triple::x86 || Arch == llvm::Triple::sparc || - Arch == llvm::Triple::sparcel) - return "/lib/ld-linux.so.2"; -@@ -8981,11 +9022,7 @@ static std::string getLinuxDynamicLinker(const ArgList &Args, - bool IsNaN2008 = mips::isNaN2008(Args, ToolChain.getTriple()); - if (mips::isUCLibc(Args)) - LibName = IsNaN2008 ? "ld-uClibc-mipsn8.so.0" : "ld-uClibc.so.0"; -- else if (!ToolChain.getTriple().hasEnvironment()) { -- bool LE = (ToolChain.getTriple().getArch() == llvm::Triple::mipsel) || -- (ToolChain.getTriple().getArch() == llvm::Triple::mips64el); -- LibName = LE ? "ld-musl-mipsel.so.1" : "ld-musl-mips.so.1"; -- } else -+ else - LibName = IsNaN2008 ? "ld-linux-mipsn8.so.1" : "ld.so.1"; - - return (LibDir + "/" + LibName).str(); --- -2.8.2 - diff --git a/recipes-devtools/clang/clang/0001-driver-Use-lib-for-ldso-on-OE.patch b/recipes-devtools/clang/clang/0001-driver-Use-lib-for-ldso-on-OE.patch deleted file mode 100644 index 10ddb33..0000000 --- a/recipes-devtools/clang/clang/0001-driver-Use-lib-for-ldso-on-OE.patch +++ /dev/null @@ -1,66 +0,0 @@ -From 5a999b10efbc59834d93d8f52694b3423fc83c42 Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Mon, 9 May 2016 23:29:24 -0700 -Subject: [PATCH] driver: Use /lib for ldso on OE - -OE does not follow the default base_libdir -that clang has, therefore adjust it for OE -it wont be able to support multilib since -in multilib case OE switches the base libdir -for 64bit to /lib64 instead of /lib - -Signed-off-by: Khem Raj ---- - lib/Driver/Tools.cpp | 16 +++++++--------- - 1 file changed, 7 insertions(+), 9 deletions(-) - -diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp -index 34237c4..94ad9db 100644 ---- a/lib/Driver/Tools.cpp -+++ b/lib/Driver/Tools.cpp -@@ -9016,8 +9016,6 @@ static std::string getLinuxDynamicLinker(const ArgList &Args, - return "/lib/ld-linux.so.3"; - } else if (Arch == llvm::Triple::mips || Arch == llvm::Triple::mipsel || - Arch == llvm::Triple::mips64 || Arch == llvm::Triple::mips64el) { -- std::string LibDir = -- "/lib" + mips::getMipsABILibSuffix(Args, ToolChain.getTriple()); - StringRef LibName; - bool IsNaN2008 = mips::isNaN2008(Args, ToolChain.getTriple()); - if (mips::isUCLibc(Args)) -@@ -9025,26 +9023,26 @@ static std::string getLinuxDynamicLinker(const ArgList &Args, - else - LibName = IsNaN2008 ? "ld-linux-mipsn8.so.1" : "ld.so.1"; - -- return (LibDir + "/" + LibName).str(); -+ return ("/lib/" + LibName).str(); - } else if (Arch == llvm::Triple::ppc) - return "/lib/ld.so.1"; - else if (Arch == llvm::Triple::ppc64) { - if (ppc::hasPPCAbiArg(Args, "elfv2")) -- return "/lib64/ld64.so.2"; -- return "/lib64/ld64.so.1"; -+ return "/lib/ld64.so.2"; -+ return "/lib/ld64.so.1"; - } else if (Arch == llvm::Triple::ppc64le) { - if (ppc::hasPPCAbiArg(Args, "elfv1")) -- return "/lib64/ld64.so.1"; -- return "/lib64/ld64.so.2"; -+ return "/lib/ld64.so.1"; -+ return "/lib/ld64.so.2"; - } else if (Arch == llvm::Triple::systemz) - return "/lib/ld64.so.1"; - else if (Arch == llvm::Triple::sparcv9) - return "/lib64/ld-linux.so.2"; - else if (Arch == llvm::Triple::x86_64 && - ToolChain.getTriple().getEnvironment() == llvm::Triple::GNUX32) -- return "/libx32/ld-linux-x32.so.2"; -+ return "/lib/ld-linux-x32.so.2"; - else -- return "/lib64/ld-linux-x86-64.so.2"; -+ return "/lib/ld-linux-x86-64.so.2"; - } - - static void AddRunTimeLibs(const ToolChain &TC, const Driver &D, --- -2.8.2 - diff --git a/recipes-devtools/clang/clang/0001-llvm-triplet-Add-musl-support.patch b/recipes-devtools/clang/clang/0001-llvm-triplet-Add-musl-support.patch new file mode 100644 index 0000000..a13f568 --- /dev/null +++ b/recipes-devtools/clang/clang/0001-llvm-triplet-Add-musl-support.patch @@ -0,0 +1,109 @@ +From a585b7edd91dd64d1d9a8b171f82e28413e574b9 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Wed, 30 Mar 2016 19:55:41 -0700 +Subject: [PATCH 1/4] llvm: triplet: Add musl support + +Signed-off-by: Khem Raj +--- + include/llvm/ADT/Triple.h | 13 +++++++++++++ + lib/Support/Triple.cpp | 8 ++++++++ + lib/Target/ARM/ARMSubtarget.h | 3 +++ + lib/Target/ARM/ARMTargetMachine.cpp | 2 ++ + 4 files changed, 26 insertions(+) + +diff --git a/include/llvm/ADT/Triple.h b/include/llvm/ADT/Triple.h +index c89cf4d..29ec600 100644 +--- a/include/llvm/ADT/Triple.h ++++ b/include/llvm/ADT/Triple.h +@@ -175,6 +175,10 @@ public: + GNUEABI, + GNUEABIHF, + GNUX32, ++ MUSL, ++ MUSLEABI, ++ MUSLEABIHF, ++ MUSLX32, + CODE16, + EABI, + EABIHF, +@@ -497,6 +501,15 @@ public: + return getOS() == Triple::Win32 && getEnvironment() == Triple::GNU; + } + ++ /// Checks if the environment is Linux with musl ++ bool isLinuxMuslEnvironment() const { ++ return isOSLinux() && ++ (getEnvironment() == Triple::MUSL || ++ getEnvironment() == Triple::MUSLX32 || ++ getEnvironment() == Triple::MUSLEABI || ++ getEnvironment() == Triple::MUSLEABIHF); ++ } ++ + /// Tests for either Cygwin or MinGW OS + bool isOSCygMing() const { + return isWindowsCygwinEnvironment() || isWindowsGNUEnvironment(); +diff --git a/lib/Support/Triple.cpp b/lib/Support/Triple.cpp +index 1967fac..f8b6236 100644 +--- a/lib/Support/Triple.cpp ++++ b/lib/Support/Triple.cpp +@@ -201,6 +201,10 @@ const char *Triple::getEnvironmentTypeName(EnvironmentType Kind) { + case GNUEABIHF: return "gnueabihf"; + case GNUEABI: return "gnueabi"; + case GNUX32: return "gnux32"; ++ case MUSL: return "musl"; ++ case MUSLEABIHF: return "musleabihf"; ++ case MUSLEABI: return "musleabi"; ++ case MUSLX32: return "muslx32"; + case CODE16: return "code16"; + case EABI: return "eabi"; + case EABIHF: return "eabihf"; +@@ -461,6 +465,10 @@ static Triple::EnvironmentType parseEnvironment(StringRef EnvironmentName) { + .StartsWith("gnueabihf", Triple::GNUEABIHF) + .StartsWith("gnueabi", Triple::GNUEABI) + .StartsWith("gnux32", Triple::GNUX32) ++ .StartsWith("musl", Triple::MUSL) ++ .StartsWith("musleabihf", Triple::MUSLEABIHF) ++ .StartsWith("musleabi", Triple::MUSLEABI) ++ .StartsWith("muslx32", Triple::MUSLX32) + .StartsWith("code16", Triple::CODE16) + .StartsWith("gnu", Triple::GNU) + .StartsWith("android", Triple::Android) +diff --git a/lib/Target/ARM/ARMSubtarget.h b/lib/Target/ARM/ARMSubtarget.h +index 7c9ea7d..09c4051 100644 +--- a/lib/Target/ARM/ARMSubtarget.h ++++ b/lib/Target/ARM/ARMSubtarget.h +@@ -424,8 +424,10 @@ public: + bool isTargetEHABICompatible() const { + return (TargetTriple.getEnvironment() == Triple::EABI || + TargetTriple.getEnvironment() == Triple::GNUEABI || ++ TargetTriple.getEnvironment() == Triple::MUSLEABI || + TargetTriple.getEnvironment() == Triple::EABIHF || + TargetTriple.getEnvironment() == Triple::GNUEABIHF || ++ TargetTriple.getEnvironment() == Triple::MUSLEABIHF || + isTargetAndroid()) && + !isTargetDarwin() && !isTargetWindows(); + } +@@ -433,6 +435,7 @@ public: + bool isTargetHardFloat() const { + // FIXME: this is invalid for WindowsCE + return TargetTriple.getEnvironment() == Triple::GNUEABIHF || ++ TargetTriple.getEnvironment() == Triple::MUSLEABIHF || + TargetTriple.getEnvironment() == Triple::EABIHF || + isTargetWindows() || isAAPCS16_ABI(); + } +diff --git a/lib/Target/ARM/ARMTargetMachine.cpp b/lib/Target/ARM/ARMTargetMachine.cpp +index 81127f7..c90ec0f 100644 +--- a/lib/Target/ARM/ARMTargetMachine.cpp ++++ b/lib/Target/ARM/ARMTargetMachine.cpp +@@ -100,6 +100,8 @@ computeTargetABI(const Triple &TT, StringRef CPU, + case llvm::Triple::Android: + case llvm::Triple::GNUEABI: + case llvm::Triple::GNUEABIHF: ++ case llvm::Triple::MUSLEABI: ++ case llvm::Triple::MUSLEABIHF: + case llvm::Triple::EABIHF: + case llvm::Triple::EABI: + TargetABI = ARMBaseTargetMachine::ARM_ABI_AAPCS; +-- +2.8.2 + diff --git a/recipes-devtools/clang/clang/0001-musl-ppc-does-not-support-128-bit-long-double.patch b/recipes-devtools/clang/clang/0001-musl-ppc-does-not-support-128-bit-long-double.patch deleted file mode 100644 index c897c9f..0000000 --- a/recipes-devtools/clang/clang/0001-musl-ppc-does-not-support-128-bit-long-double.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 04668daf04919786807fbdd40ee412bb788ed4e7 Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Tue, 10 May 2016 02:00:11 -0700 -Subject: [PATCH] musl/ppc does not support 128-bit long double - -Signed-off-by: Khem Raj ---- - lib/Basic/Targets.cpp | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp -index af8aea0..ad5ebee 100644 ---- a/lib/Basic/Targets.cpp -+++ b/lib/Basic/Targets.cpp -@@ -1505,7 +1505,8 @@ public: - break; - } - -- if (getTriple().getOS() == llvm::Triple::FreeBSD) { -+ if (getTriple().getOS() == llvm::Triple::FreeBSD -+ || getTriple().isLinuxMuslEnvironment()) { - LongDoubleWidth = LongDoubleAlign = 64; - LongDoubleFormat = &llvm::APFloat::IEEEdouble; - } --- -2.8.2 - diff --git a/recipes-devtools/clang/clang/0001-remove-fopen64-fseeko64-ftello64-tmpfile64-on-musl.patch b/recipes-devtools/clang/clang/0001-remove-fopen64-fseeko64-ftello64-tmpfile64-on-musl.patch deleted file mode 100644 index 76ee9a2..0000000 --- a/recipes-devtools/clang/clang/0001-remove-fopen64-fseeko64-ftello64-tmpfile64-on-musl.patch +++ /dev/null @@ -1,96 +0,0 @@ -From 01501b1e05e60ab5446fa12a15071049f07e3ae0 Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Tue, 15 Mar 2016 05:25:36 +0000 -Subject: [PATCH 1/2] remove fopen64/fseeko64/ftello64/tmpfile64 on musl - -They are not available - -Signed-off-by: Khem Raj ---- - include/llvm/Analysis/TargetLibraryInfo.def | 12 ------------ - lib/Transforms/IPO/InferFunctionAttrs.cpp | 25 ------------------------- - 2 files changed, 37 deletions(-) - -diff --git a/include/llvm/Analysis/TargetLibraryInfo.def b/include/llvm/Analysis/TargetLibraryInfo.def -index 7798e3c..65158b8 100644 ---- a/include/llvm/Analysis/TargetLibraryInfo.def -+++ b/include/llvm/Analysis/TargetLibraryInfo.def -@@ -525,9 +525,6 @@ TLI_DEFINE_STRING_INTERNAL("fmodl") - /// FILE *fopen(const char *filename, const char *mode); - TLI_DEFINE_ENUM_INTERNAL(fopen) - TLI_DEFINE_STRING_INTERNAL("fopen") --/// FILE *fopen64(const char *filename, const char *opentype) --TLI_DEFINE_ENUM_INTERNAL(fopen64) --TLI_DEFINE_STRING_INTERNAL("fopen64") - /// int fprintf(FILE *stream, const char *format, ...); - TLI_DEFINE_ENUM_INTERNAL(fprintf) - TLI_DEFINE_STRING_INTERNAL("fprintf") -@@ -561,9 +558,6 @@ TLI_DEFINE_STRING_INTERNAL("fseek") - /// int fseeko(FILE *stream, off_t offset, int whence); - TLI_DEFINE_ENUM_INTERNAL(fseeko) - TLI_DEFINE_STRING_INTERNAL("fseeko") --/// int fseeko64(FILE *stream, off64_t offset, int whence) --TLI_DEFINE_ENUM_INTERNAL(fseeko64) --TLI_DEFINE_STRING_INTERNAL("fseeko64") - /// int fsetpos(FILE *stream, const fpos_t *pos); - TLI_DEFINE_ENUM_INTERNAL(fsetpos) - TLI_DEFINE_STRING_INTERNAL("fsetpos") -@@ -585,9 +579,6 @@ TLI_DEFINE_STRING_INTERNAL("ftell") - /// off_t ftello(FILE *stream); - TLI_DEFINE_ENUM_INTERNAL(ftello) - TLI_DEFINE_STRING_INTERNAL("ftello") --/// off64_t ftello64(FILE *stream) --TLI_DEFINE_ENUM_INTERNAL(ftello64) --TLI_DEFINE_STRING_INTERNAL("ftello64") - /// int ftrylockfile(FILE *file); - TLI_DEFINE_ENUM_INTERNAL(ftrylockfile) - TLI_DEFINE_STRING_INTERNAL("ftrylockfile") -@@ -1050,9 +1041,6 @@ TLI_DEFINE_STRING_INTERNAL("times") - /// FILE *tmpfile(void); - TLI_DEFINE_ENUM_INTERNAL(tmpfile) - TLI_DEFINE_STRING_INTERNAL("tmpfile") --/// FILE *tmpfile64(void) --TLI_DEFINE_ENUM_INTERNAL(tmpfile64) --TLI_DEFINE_STRING_INTERNAL("tmpfile64") - /// int toascii(int c); - TLI_DEFINE_ENUM_INTERNAL(toascii) - TLI_DEFINE_STRING_INTERNAL("toascii") -diff --git a/lib/Transforms/IPO/InferFunctionAttrs.cpp b/lib/Transforms/IPO/InferFunctionAttrs.cpp -index 4295a75..f6d19eb 100644 ---- a/lib/Transforms/IPO/InferFunctionAttrs.cpp -+++ b/lib/Transforms/IPO/InferFunctionAttrs.cpp -@@ -844,31 +844,6 @@ static bool inferPrototypeAttributes(Function &F, - Changed |= setOnlyReadsMemory(F, 1); - Changed |= setOnlyReadsMemory(F, 2); - return Changed; -- case LibFunc::fopen64: -- if (FTy->getNumParams() != 2 || !FTy->getReturnType()->isPointerTy() || -- !FTy->getParamType(0)->isPointerTy() || -- !FTy->getParamType(1)->isPointerTy()) -- return false; -- Changed |= setDoesNotThrow(F); -- Changed |= setDoesNotAlias(F, 0); -- Changed |= setDoesNotCapture(F, 1); -- Changed |= setDoesNotCapture(F, 2); -- Changed |= setOnlyReadsMemory(F, 1); -- Changed |= setOnlyReadsMemory(F, 2); -- return Changed; -- case LibFunc::fseeko64: -- case LibFunc::ftello64: -- if (FTy->getNumParams() == 0 || !FTy->getParamType(0)->isPointerTy()) -- return false; -- Changed |= setDoesNotThrow(F); -- Changed |= setDoesNotCapture(F, 1); -- return Changed; -- case LibFunc::tmpfile64: -- if (!FTy->getReturnType()->isPointerTy()) -- return false; -- Changed |= setDoesNotThrow(F); -- Changed |= setDoesNotAlias(F, 0); -- return Changed; - case LibFunc::fstat64: - case LibFunc::fstatvfs64: - if (FTy->getNumParams() != 2 || !FTy->getParamType(1)->isPointerTy()) --- -1.9.1 - diff --git a/recipes-devtools/clang/clang/0001-triplet-Add-musl-support.patch b/recipes-devtools/clang/clang/0001-triplet-Add-musl-support.patch deleted file mode 100644 index 3fdf4b6..0000000 --- a/recipes-devtools/clang/clang/0001-triplet-Add-musl-support.patch +++ /dev/null @@ -1,109 +0,0 @@ -From 6ea56dabfd56ad4d1f994378b3f5ce46c02cb85c Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Wed, 30 Mar 2016 19:55:41 -0700 -Subject: [PATCH] triplet: Add musl support - -Signed-off-by: Khem Raj ---- - include/llvm/ADT/Triple.h | 13 +++++++++++++ - lib/Support/Triple.cpp | 8 ++++++++ - lib/Target/ARM/ARMSubtarget.h | 3 +++ - lib/Target/ARM/ARMTargetMachine.cpp | 2 ++ - 4 files changed, 26 insertions(+) - -diff --git a/include/llvm/ADT/Triple.h b/include/llvm/ADT/Triple.h -index c89cf4d..29ec600 100644 ---- a/include/llvm/ADT/Triple.h -+++ b/include/llvm/ADT/Triple.h -@@ -175,6 +175,10 @@ public: - GNUEABI, - GNUEABIHF, - GNUX32, -+ MUSL, -+ MUSLEABI, -+ MUSLEABIHF, -+ MUSLX32, - CODE16, - EABI, - EABIHF, -@@ -497,6 +501,15 @@ public: - return getOS() == Triple::Win32 && getEnvironment() == Triple::GNU; - } - -+ /// Checks if the environment is Linux with musl -+ bool isLinuxMuslEnvironment() const { -+ return isOSLinux() && -+ (getEnvironment() == Triple::MUSL || -+ getEnvironment() == Triple::MUSLX32 || -+ getEnvironment() == Triple::MUSLEABI || -+ getEnvironment() == Triple::MUSLEABIHF); -+ } -+ - /// Tests for either Cygwin or MinGW OS - bool isOSCygMing() const { - return isWindowsCygwinEnvironment() || isWindowsGNUEnvironment(); -diff --git a/lib/Support/Triple.cpp b/lib/Support/Triple.cpp -index 1967fac..f8b6236 100644 ---- a/lib/Support/Triple.cpp -+++ b/lib/Support/Triple.cpp -@@ -201,6 +201,10 @@ const char *Triple::getEnvironmentTypeName(EnvironmentType Kind) { - case GNUEABIHF: return "gnueabihf"; - case GNUEABI: return "gnueabi"; - case GNUX32: return "gnux32"; -+ case MUSL: return "musl"; -+ case MUSLEABIHF: return "musleabihf"; -+ case MUSLEABI: return "musleabi"; -+ case MUSLX32: return "muslx32"; - case CODE16: return "code16"; - case EABI: return "eabi"; - case EABIHF: return "eabihf"; -@@ -461,6 +465,10 @@ static Triple::EnvironmentType parseEnvironment(StringRef EnvironmentName) { - .StartsWith("gnueabihf", Triple::GNUEABIHF) - .StartsWith("gnueabi", Triple::GNUEABI) - .StartsWith("gnux32", Triple::GNUX32) -+ .StartsWith("musl", Triple::MUSL) -+ .StartsWith("musleabihf", Triple::MUSLEABIHF) -+ .StartsWith("musleabi", Triple::MUSLEABI) -+ .StartsWith("muslx32", Triple::MUSLX32) - .StartsWith("code16", Triple::CODE16) - .StartsWith("gnu", Triple::GNU) - .StartsWith("android", Triple::Android) -diff --git a/lib/Target/ARM/ARMSubtarget.h b/lib/Target/ARM/ARMSubtarget.h -index ec1212d..902ce4a 100644 ---- a/lib/Target/ARM/ARMSubtarget.h -+++ b/lib/Target/ARM/ARMSubtarget.h -@@ -424,8 +424,10 @@ public: - bool isTargetEHABICompatible() const { - return (TargetTriple.getEnvironment() == Triple::EABI || - TargetTriple.getEnvironment() == Triple::GNUEABI || -+ TargetTriple.getEnvironment() == Triple::MUSLEABI || - TargetTriple.getEnvironment() == Triple::EABIHF || - TargetTriple.getEnvironment() == Triple::GNUEABIHF || -+ TargetTriple.getEnvironment() == Triple::MUSLEABIHF || - isTargetAndroid()) && - !isTargetDarwin() && !isTargetWindows(); - } -@@ -433,6 +435,7 @@ public: - bool isTargetHardFloat() const { - // FIXME: this is invalid for WindowsCE - return TargetTriple.getEnvironment() == Triple::GNUEABIHF || -+ TargetTriple.getEnvironment() == Triple::MUSLEABIHF || - TargetTriple.getEnvironment() == Triple::EABIHF || - isTargetWindows() || isAAPCS16_ABI(); - } -diff --git a/lib/Target/ARM/ARMTargetMachine.cpp b/lib/Target/ARM/ARMTargetMachine.cpp -index 390b39c..9840c11 100644 ---- a/lib/Target/ARM/ARMTargetMachine.cpp -+++ b/lib/Target/ARM/ARMTargetMachine.cpp -@@ -99,6 +99,8 @@ computeTargetABI(const Triple &TT, StringRef CPU, - case llvm::Triple::Android: - case llvm::Triple::GNUEABI: - case llvm::Triple::GNUEABIHF: -+ case llvm::Triple::MUSLEABI: -+ case llvm::Triple::MUSLEABIHF: - case llvm::Triple::EABIHF: - case llvm::Triple::EABI: - TargetABI = ARMBaseTargetMachine::ARM_ABI_AAPCS; --- -2.8.2 - diff --git a/recipes-devtools/clang/clang/0002-Do-not-assume-linux-glibc.patch b/recipes-devtools/clang/clang/0002-Do-not-assume-linux-glibc.patch deleted file mode 100644 index d194898..0000000 --- a/recipes-devtools/clang/clang/0002-Do-not-assume-linux-glibc.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 9f7b677d3a6582b232e16cb5518935633b2e65fb Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Tue, 15 Mar 2016 05:26:47 +0000 -Subject: [PATCH 2/2] Do not assume linux == glibc - -musl's implementation of std functions is different - -Signed-off-by: Khem Raj ---- - lib/Support/DynamicLibrary.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lib/Support/DynamicLibrary.cpp b/lib/Support/DynamicLibrary.cpp -index 9a7aeb5..e3b7fe2 100644 ---- a/lib/Support/DynamicLibrary.cpp -+++ b/lib/Support/DynamicLibrary.cpp -@@ -143,7 +143,7 @@ void* DynamicLibrary::SearchForAddressOfSymbol(const char *symbolName) { - // On linux we have a weird situation. The stderr/out/in symbols are both - // macros and global variables because of standards requirements. So, we - // boldly use the EXPLICIT_SYMBOL macro without checking for a #define first. --#if defined(__linux__) and !defined(__ANDROID__) -+#if defined(__linux__) and defined(__GLIBC__) - { - EXPLICIT_SYMBOL(stderr); - EXPLICIT_SYMBOL(stdout); --- -1.9.1 - diff --git a/recipes-devtools/clang/clang/0002-clang-driver-Use-lib-for-ldso-on-OE.patch b/recipes-devtools/clang/clang/0002-clang-driver-Use-lib-for-ldso-on-OE.patch new file mode 100644 index 0000000..2269968 --- /dev/null +++ b/recipes-devtools/clang/clang/0002-clang-driver-Use-lib-for-ldso-on-OE.patch @@ -0,0 +1,63 @@ +From 90f5518a14a4756ef08dbd324b907d9b705d01b8 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Mon, 9 May 2016 23:29:24 -0700 +Subject: [PATCH 2/4] clang: driver: Use /lib for ldso on OE + +OE does not follow the default base_libdir +that clang has, therefore adjust it for OE +it wont be able to support multilib since +in multilib case OE switches the base libdir +for 64bit to /lib64 instead of /lib + +Signed-off-by: Khem Raj +--- + lib/Driver/Tools.cpp | 13 ++++++------- + 1 file changed, 6 insertions(+), 7 deletions(-) + +diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp +index 0ce548c..d318b10 100644 +--- a/lib/Driver/Tools.cpp ++++ b/lib/Driver/Tools.cpp +@@ -9057,7 +9057,6 @@ static std::string getLinuxDynamicLinker(const ArgList &Args, + return "/lib/ld-linux.so.3"; + } else if (Arch == llvm::Triple::mips || Arch == llvm::Triple::mipsel || + Arch == llvm::Triple::mips64 || Arch == llvm::Triple::mips64el) { +- std::string LibDir = "/lib" + mips::getMipsABILibSuffix(Args, Triple); + StringRef LibName; + bool IsNaN2008 = mips::isNaN2008(Args, Triple); + if (mips::isUCLibc(Args)) +@@ -9065,17 +9064,17 @@ static std::string getLinuxDynamicLinker(const ArgList &Args, + else + LibName = IsNaN2008 ? "ld-linux-mipsn8.so.1" : "ld.so.1"; + +- return (LibDir + "/" + LibName).str(); ++ return ("/lib/" + LibName).str(); + } else if (Arch == llvm::Triple::ppc) + return "/lib/ld.so.1"; + else if (Arch == llvm::Triple::ppc64) { + if (ppc::hasPPCAbiArg(Args, "elfv2")) +- return "/lib64/ld64.so.2"; +- return "/lib64/ld64.so.1"; ++ return "/lib/ld64.so.2"; ++ return "/lib/ld64.so.1"; + } else if (Arch == llvm::Triple::ppc64le) { + if (ppc::hasPPCAbiArg(Args, "elfv1")) +- return "/lib64/ld64.so.1"; +- return "/lib64/ld64.so.2"; ++ return "/lib/ld64.so.1"; ++ return "/lib/ld64.so.2"; + } else if (Arch == llvm::Triple::systemz) + return "/lib/ld64.so.1"; + else if (Arch == llvm::Triple::sparcv9) +@@ -9084,7 +9083,7 @@ static std::string getLinuxDynamicLinker(const ArgList &Args, + Triple.getEnvironment() == llvm::Triple::GNUX32) + return "/libx32/ld-linux-x32.so.2"; + else +- return "/lib64/ld-linux-x86-64.so.2"; ++ return "/lib/ld-linux-x86-64.so.2"; + } + + static void AddRunTimeLibs(const ToolChain &TC, const Driver &D, +-- +2.8.2 + diff --git a/recipes-devtools/clang/clang/0002-llvm-Remove-CMAKE_CROSSCOMPILING-so-it-can-cross-com.patch b/recipes-devtools/clang/clang/0002-llvm-Remove-CMAKE_CROSSCOMPILING-so-it-can-cross-com.patch new file mode 100644 index 0000000..6787df7 --- /dev/null +++ b/recipes-devtools/clang/clang/0002-llvm-Remove-CMAKE_CROSSCOMPILING-so-it-can-cross-com.patch @@ -0,0 +1,34 @@ +From 002d533f62fb3a25e8515e3b53d384fb055ddac6 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Fri, 15 May 2015 12:13:17 -0700 +Subject: [PATCH 2/4] llvm: Remove CMAKE_CROSSCOMPILING so it can cross compile + +we already have llvm-config from clang-native + +Signed-off-by: Khem Raj +--- + tools/llvm-config/CMakeLists.txt | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/tools/llvm-config/CMakeLists.txt b/tools/llvm-config/CMakeLists.txt +index 32d0f4c..8d90b3b 100644 +--- a/tools/llvm-config/CMakeLists.txt ++++ b/tools/llvm-config/CMakeLists.txt +@@ -51,7 +51,7 @@ add_definitions(-DCMAKE_CFG_INTDIR="${CMAKE_CFG_INTDIR}") + # Add the dependency on the generation step. + add_file_dependencies(${CMAKE_CURRENT_SOURCE_DIR}/llvm-config.cpp ${BUILDVARIABLES_OBJPATH}) + +-if(CMAKE_CROSSCOMPILING) ++if(CMAKE_CROSSCOMPILING1) + set(${project}_LLVM_CONFIG_EXE "${LLVM_NATIVE_BUILD}/bin/llvm-config") + set(${project}_LLVM_CONFIG_EXE ${${project}_LLVM_CONFIG_EXE} PARENT_SCOPE) + +@@ -64,4 +64,4 @@ if(CMAKE_CROSSCOMPILING) + add_dependencies(${project}NativeLLVMConfig CONFIGURE_LLVM_NATIVE) + + add_dependencies(llvm-config ${project}NativeLLVMConfig) +-endif(CMAKE_CROSSCOMPILING) ++endif(CMAKE_CROSSCOMPILING1) +-- +2.8.2 + diff --git a/recipes-devtools/clang/clang/0003-clang-Driver-tools.cpp-Add-lssp-and-lssp_nonshared-o.patch b/recipes-devtools/clang/clang/0003-clang-Driver-tools.cpp-Add-lssp-and-lssp_nonshared-o.patch new file mode 100644 index 0000000..7418fc7 --- /dev/null +++ b/recipes-devtools/clang/clang/0003-clang-Driver-tools.cpp-Add-lssp-and-lssp_nonshared-o.patch @@ -0,0 +1,35 @@ +From be020e5e63464204a9459ecb807c9706f422f1da Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Thu, 19 May 2016 21:11:06 -0700 +Subject: [PATCH 3/4] clang: Driver/tools.cpp: Add -lssp and -lssp_nonshared on + musl + +musl driver will need to add ssp libraries to linker cmdline +when using stack protector commands on compiler cmdline + +Signed-off-by: Khem Raj +--- + lib/Driver/Tools.cpp | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp +index d318b10..38d8e27 100644 +--- a/lib/Driver/Tools.cpp ++++ b/lib/Driver/Tools.cpp +@@ -9366,6 +9366,13 @@ void gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA, + + CmdArgs.push_back("-lc"); + ++ if (ToolChain.getTriple().isLinuxMuslEnvironment() && ++ (Args.hasArg(options::OPT_fstack_protector) || ++ Args.hasArg(options::OPT_fstack_protector_strong) || ++ Args.hasArg(options::OPT_fstack_protector_all))) { ++ CmdArgs.push_back("-lssp_nonshared"); ++ CmdArgs.push_back("-lssp"); ++ } + if (Args.hasArg(options::OPT_static)) + CmdArgs.push_back("--end-group"); + else +-- +2.8.2 + diff --git a/recipes-devtools/clang/clang/0003-llvm-Do-not-assume-linux-glibc.patch b/recipes-devtools/clang/clang/0003-llvm-Do-not-assume-linux-glibc.patch new file mode 100644 index 0000000..6a84485 --- /dev/null +++ b/recipes-devtools/clang/clang/0003-llvm-Do-not-assume-linux-glibc.patch @@ -0,0 +1,28 @@ +From 877eeefccde262eda3bd022fff2ad6d147a6ad54 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Tue, 15 Mar 2016 05:26:47 +0000 +Subject: [PATCH 3/4] llvm: Do not assume linux == glibc + +musl's implementation of std functions is different + +Signed-off-by: Khem Raj +--- + lib/Support/DynamicLibrary.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/Support/DynamicLibrary.cpp b/lib/Support/DynamicLibrary.cpp +index 9a7aeb5..e3b7fe2 100644 +--- a/lib/Support/DynamicLibrary.cpp ++++ b/lib/Support/DynamicLibrary.cpp +@@ -143,7 +143,7 @@ void* DynamicLibrary::SearchForAddressOfSymbol(const char *symbolName) { + // On linux we have a weird situation. The stderr/out/in symbols are both + // macros and global variables because of standards requirements. So, we + // boldly use the EXPLICIT_SYMBOL macro without checking for a #define first. +-#if defined(__linux__) and !defined(__ANDROID__) ++#if defined(__linux__) and defined(__GLIBC__) + { + EXPLICIT_SYMBOL(stderr); + EXPLICIT_SYMBOL(stdout); +-- +2.8.2 + diff --git a/recipes-devtools/clang/clang/0004-clang-musl-ppc-does-not-support-128-bit-long-double.patch b/recipes-devtools/clang/clang/0004-clang-musl-ppc-does-not-support-128-bit-long-double.patch new file mode 100644 index 0000000..8ac0151 --- /dev/null +++ b/recipes-devtools/clang/clang/0004-clang-musl-ppc-does-not-support-128-bit-long-double.patch @@ -0,0 +1,27 @@ +From 5af772366531ed83ce42a2d6a86c1f5820f659a4 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Tue, 10 May 2016 02:00:11 -0700 +Subject: [PATCH 4/4] clang: musl/ppc does not support 128-bit long double + +Signed-off-by: Khem Raj +--- + lib/Basic/Targets.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp +index c205356..8146f21 100644 +--- a/lib/Basic/Targets.cpp ++++ b/lib/Basic/Targets.cpp +@@ -1578,7 +1578,8 @@ public: + break; + } + +- if (getTriple().getOS() == llvm::Triple::FreeBSD) { ++ if (getTriple().getOS() == llvm::Triple::FreeBSD ++ || getTriple().isLinuxMuslEnvironment()) { + LongDoubleWidth = LongDoubleAlign = 64; + LongDoubleFormat = &llvm::APFloat::IEEEdouble; + } +-- +2.8.2 + diff --git a/recipes-devtools/clang/clang/0004-llvm-remove-fopen64-fseeko64-ftello64-tmpfile64-on-m.patch b/recipes-devtools/clang/clang/0004-llvm-remove-fopen64-fseeko64-ftello64-tmpfile64-on-m.patch new file mode 100644 index 0000000..7c78e21 --- /dev/null +++ b/recipes-devtools/clang/clang/0004-llvm-remove-fopen64-fseeko64-ftello64-tmpfile64-on-m.patch @@ -0,0 +1,126 @@ +From bc8a39484dc4db80baa846438a6908e2f9572572 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Thu, 19 May 2016 22:52:05 -0700 +Subject: [PATCH 4/4] llvm: remove fopen64/fseeko64/ftello64/tmpfile64 on musl + +They are not available + +Signed-off-by: Khem Raj +--- + include/llvm/Analysis/TargetLibraryInfo.def | 12 ------------ + lib/Analysis/TargetLibraryInfo.cpp | 13 ------------- + lib/Transforms/Utils/BuildLibCalls.cpp | 17 ----------------- + 3 files changed, 42 deletions(-) + +diff --git a/include/llvm/Analysis/TargetLibraryInfo.def b/include/llvm/Analysis/TargetLibraryInfo.def +index b2a593d..7bfafcc 100644 +--- a/include/llvm/Analysis/TargetLibraryInfo.def ++++ b/include/llvm/Analysis/TargetLibraryInfo.def +@@ -530,9 +530,6 @@ TLI_DEFINE_STRING_INTERNAL("fmodl") + /// FILE *fopen(const char *filename, const char *mode); + TLI_DEFINE_ENUM_INTERNAL(fopen) + TLI_DEFINE_STRING_INTERNAL("fopen") +-/// FILE *fopen64(const char *filename, const char *opentype) +-TLI_DEFINE_ENUM_INTERNAL(fopen64) +-TLI_DEFINE_STRING_INTERNAL("fopen64") + /// int fprintf(FILE *stream, const char *format, ...); + TLI_DEFINE_ENUM_INTERNAL(fprintf) + TLI_DEFINE_STRING_INTERNAL("fprintf") +@@ -566,9 +563,6 @@ TLI_DEFINE_STRING_INTERNAL("fseek") + /// int fseeko(FILE *stream, off_t offset, int whence); + TLI_DEFINE_ENUM_INTERNAL(fseeko) + TLI_DEFINE_STRING_INTERNAL("fseeko") +-/// int fseeko64(FILE *stream, off64_t offset, int whence) +-TLI_DEFINE_ENUM_INTERNAL(fseeko64) +-TLI_DEFINE_STRING_INTERNAL("fseeko64") + /// int fsetpos(FILE *stream, const fpos_t *pos); + TLI_DEFINE_ENUM_INTERNAL(fsetpos) + TLI_DEFINE_STRING_INTERNAL("fsetpos") +@@ -590,9 +584,6 @@ TLI_DEFINE_STRING_INTERNAL("ftell") + /// off_t ftello(FILE *stream); + TLI_DEFINE_ENUM_INTERNAL(ftello) + TLI_DEFINE_STRING_INTERNAL("ftello") +-/// off64_t ftello64(FILE *stream) +-TLI_DEFINE_ENUM_INTERNAL(ftello64) +-TLI_DEFINE_STRING_INTERNAL("ftello64") + /// int ftrylockfile(FILE *file); + TLI_DEFINE_ENUM_INTERNAL(ftrylockfile) + TLI_DEFINE_STRING_INTERNAL("ftrylockfile") +@@ -1055,9 +1046,6 @@ TLI_DEFINE_STRING_INTERNAL("times") + /// FILE *tmpfile(void); + TLI_DEFINE_ENUM_INTERNAL(tmpfile) + TLI_DEFINE_STRING_INTERNAL("tmpfile") +-/// FILE *tmpfile64(void) +-TLI_DEFINE_ENUM_INTERNAL(tmpfile64) +-TLI_DEFINE_STRING_INTERNAL("tmpfile64") + /// int toascii(int c); + TLI_DEFINE_ENUM_INTERNAL(toascii) + TLI_DEFINE_STRING_INTERNAL("toascii") +diff --git a/lib/Analysis/TargetLibraryInfo.cpp b/lib/Analysis/TargetLibraryInfo.cpp +index 71f15b15..6d98f06 100644 +--- a/lib/Analysis/TargetLibraryInfo.cpp ++++ b/lib/Analysis/TargetLibraryInfo.cpp +@@ -375,16 +375,12 @@ static void initialize(TargetLibraryInfoImpl &TLI, const Triple &T, + TLI.setUnavailable(LibFunc::under_IO_getc); + TLI.setUnavailable(LibFunc::under_IO_putc); + TLI.setUnavailable(LibFunc::memalign); +- TLI.setUnavailable(LibFunc::fopen64); +- TLI.setUnavailable(LibFunc::fseeko64); + TLI.setUnavailable(LibFunc::fstat64); + TLI.setUnavailable(LibFunc::fstatvfs64); +- TLI.setUnavailable(LibFunc::ftello64); + TLI.setUnavailable(LibFunc::lstat64); + TLI.setUnavailable(LibFunc::open64); + TLI.setUnavailable(LibFunc::stat64); + TLI.setUnavailable(LibFunc::statvfs64); +- TLI.setUnavailable(LibFunc::tmpfile64); + } + + // As currently implemented in clang, NVPTX code has no standard library to +@@ -861,15 +857,6 @@ bool TargetLibraryInfoImpl::isValidProtoForLibFunc(const FunctionType &FTy, + case LibFunc::dunder_isoc99_sscanf: + return (NumParams >= 1 && FTy.getParamType(0)->isPointerTy() && + FTy.getParamType(1)->isPointerTy()); +- case LibFunc::fopen64: +- return (NumParams == 2 && FTy.getReturnType()->isPointerTy() && +- FTy.getParamType(0)->isPointerTy() && +- FTy.getParamType(1)->isPointerTy()); +- case LibFunc::fseeko64: +- case LibFunc::ftello64: +- return (NumParams == 0 && FTy.getParamType(0)->isPointerTy()); +- case LibFunc::tmpfile64: +- return (FTy.getReturnType()->isPointerTy()); + case LibFunc::fstat64: + case LibFunc::fstatvfs64: + return (NumParams == 2 && FTy.getParamType(1)->isPointerTy()); +diff --git a/lib/Transforms/Utils/BuildLibCalls.cpp b/lib/Transforms/Utils/BuildLibCalls.cpp +index f4260a9..a9e673f 100644 +--- a/lib/Transforms/Utils/BuildLibCalls.cpp ++++ b/lib/Transforms/Utils/BuildLibCalls.cpp +@@ -638,23 +638,6 @@ bool llvm::inferLibFuncAttributes(Function &F, const TargetLibraryInfo &TLI) { + Changed |= setOnlyReadsMemory(F, 1); + Changed |= setOnlyReadsMemory(F, 2); + return Changed; +- case LibFunc::fopen64: +- Changed |= setDoesNotThrow(F); +- Changed |= setDoesNotAlias(F, 0); +- Changed |= setDoesNotCapture(F, 1); +- Changed |= setDoesNotCapture(F, 2); +- Changed |= setOnlyReadsMemory(F, 1); +- Changed |= setOnlyReadsMemory(F, 2); +- return Changed; +- case LibFunc::fseeko64: +- case LibFunc::ftello64: +- Changed |= setDoesNotThrow(F); +- Changed |= setDoesNotCapture(F, 1); +- return Changed; +- case LibFunc::tmpfile64: +- Changed |= setDoesNotThrow(F); +- Changed |= setDoesNotAlias(F, 0); +- return Changed; + case LibFunc::fstat64: + case LibFunc::fstatvfs64: + Changed |= setDoesNotThrow(F); +-- +2.8.2 + diff --git a/recipes-devtools/clang/clang_git.bb b/recipes-devtools/clang/clang_git.bb index 9eecebe..b6804ac 100644 --- a/recipes-devtools/clang/clang_git.bb +++ b/recipes-devtools/clang/clang_git.bb @@ -15,17 +15,16 @@ LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=${LLVMMD5SUM}; \ " SRC_URI = "${LLVM_GIT}/llvm.git;protocol=${LLVM_GIT_PROTOCOL};branch=${BRANCH};name=llvm \ ${LLVM_GIT}/clang.git;protocol=${LLVM_GIT_PROTOCOL};branch=${BRANCH};destsuffix=git/tools/clang;name=clang \ - file://0001-Remove-CMAKE_CROSSCOMPILING-so-it-can-cross-compile.patch \ - file://0002-Do-not-assume-linux-glibc.patch \ - file://0001-triplet-Add-musl-support.patch \ - file://0001-driver-Add-musl-ldso-support.patch;patchdir=tools/clang \ - file://0001-driver-Use-lib-for-ldso-on-OE.patch;patchdir=tools/clang \ - file://0001-musl-ppc-does-not-support-128-bit-long-double.patch;patchdir=tools/clang \ - file://0001-Frontend-support-I-path-for-sysroot-expansion.patch;patchdir=tools/clang \ + file://0001-llvm-triplet-Add-musl-support.patch \ + file://0002-llvm-Remove-CMAKE_CROSSCOMPILING-so-it-can-cross-com.patch \ + file://0003-llvm-Do-not-assume-linux-glibc.patch \ + file://0004-llvm-remove-fopen64-fseeko64-ftello64-tmpfile64-on-m.patch \ + file://0001-clang-driver-Add-musl-ldso-support.patch;patchdir=tools/clang \ + file://0002-clang-driver-Use-lib-for-ldso-on-OE.patch;patchdir=tools/clang \ + file://0003-clang-Driver-tools.cpp-Add-lssp-and-lssp_nonshared-o.patch;patchdir=tools/clang \ + file://0004-clang-musl-ppc-does-not-support-128-bit-long-double.patch;patchdir=tools/clang \ " -SRC_URI_append_libc-musl_class-target = " file://0001-remove-fopen64-fseeko64-ftello64-tmpfile64-on-musl.patch " - SRCREV_FORMAT = "llvm_clang" INHIBIT_DEFAULT_DEPS = "1" diff --git a/recipes-devtools/clang/compiler-rt/0001-3.9-Remove-fatal-check-for-explicit-COMPILER_RT_DEFAULT_.patch b/recipes-devtools/clang/compiler-rt/0001-3.9-Remove-fatal-check-for-explicit-COMPILER_RT_DEFAULT_.patch deleted file mode 100644 index 1d02c4c..0000000 --- a/recipes-devtools/clang/compiler-rt/0001-3.9-Remove-fatal-check-for-explicit-COMPILER_RT_DEFAULT_.patch +++ /dev/null @@ -1,33 +0,0 @@ -From eeb6437d951a5316a5d743578ccb284db9d57caa Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Tue, 10 May 2016 10:37:55 -0700 -Subject: [PATCH] Remove fatal check for explicit - COMPILER_RT_DEFAULT_TARGET_ARCH - -In OE, we do not deduce float-abi via target triplet -but via a CFLAGS option, and we do not have possibility -to build both hf and sf in same toolchain, therefore lets -ignore the test, we are doing the right job from recipe - -Signed-off-by: Khem Raj ---- - cmake/Modules/CompilerRTUtils.cmake | 4 ---- - 1 file changed, 4 deletions(-) - -diff --git a/cmake/Modules/CompilerRTUtils.cmake b/cmake/Modules/CompilerRTUtils.cmake -index b4a2b48..086d9ba 100644 ---- a/cmake/Modules/CompilerRTUtils.cmake -+++ b/cmake/Modules/CompilerRTUtils.cmake -@@ -125,9 +125,5 @@ macro(test_target_arch arch def) - endif() - if(${CAN_TARGET_${arch}}) - list(APPEND COMPILER_RT_SUPPORTED_ARCH ${arch}) -- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "${arch}" AND -- COMPILER_RT_HAS_EXPLICIT_DEFAULT_TARGET_TRIPLE) -- # Bail out if we cannot target the architecture we plan to test. -- message(FATAL_ERROR "Cannot compile for ${arch}:\n${TARGET_${arch}_OUTPUT}") - endif() - endmacro() --- -2.8.2 - diff --git a/recipes-devtools/clang/compiler-rt/0001-Remove-fatal-check-for-explicit-COMPILER_RT_DEFAULT_.patch b/recipes-devtools/clang/compiler-rt/0001-Remove-fatal-check-for-explicit-COMPILER_RT_DEFAULT_.patch index d741b55..1a7b96b 100644 --- a/recipes-devtools/clang/compiler-rt/0001-Remove-fatal-check-for-explicit-COMPILER_RT_DEFAULT_.patch +++ b/recipes-devtools/clang/compiler-rt/0001-Remove-fatal-check-for-explicit-COMPILER_RT_DEFAULT_.patch @@ -1,7 +1,7 @@ -From 14f4f8e55b363037ae881084e4594934a869cf5d Mon Sep 17 00:00:00 2001 +From b0de87ae88ff187820624d461fbb8fde84a90eb1 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Tue, 10 May 2016 10:37:55 -0700 -Subject: [PATCH] Remove fatal check for explicit +Subject: [PATCH 1/3] Remove fatal check for explicit COMPILER_RT_DEFAULT_TARGET_ARCH In OE, we do not deduce float-abi via target triplet @@ -11,14 +11,14 @@ ignore the test, we are doing the right job from recipe Signed-off-by: Khem Raj --- - cmake/config-ix.cmake | 4 ---- + cmake/Modules/CompilerRTUtils.cmake | 4 ---- 1 file changed, 4 deletions(-) -diff --git a/cmake/config-ix.cmake b/cmake/config-ix.cmake -index 264085e..299682d 100644 ---- a/cmake/config-ix.cmake -+++ b/cmake/config-ix.cmake -@@ -128,10 +128,6 @@ macro(test_target_arch arch def) +diff --git a/cmake/Modules/CompilerRTUtils.cmake b/cmake/Modules/CompilerRTUtils.cmake +index b4a2b48..086d9ba 100644 +--- a/cmake/Modules/CompilerRTUtils.cmake ++++ b/cmake/Modules/CompilerRTUtils.cmake +@@ -125,9 +125,5 @@ macro(test_target_arch arch def) endif() if(${CAN_TARGET_${arch}}) list(APPEND COMPILER_RT_SUPPORTED_ARCH ${arch}) @@ -28,7 +28,6 @@ index 264085e..299682d 100644 - message(FATAL_ERROR "Cannot compile for ${arch}:\n${TARGET_${arch}_OUTPUT}") endif() endmacro() - -- 2.8.2 diff --git a/recipes-devtools/clang/compiler-rt/0001-Simplify-cross-compilation.-Don-t-use-native-compile.patch b/recipes-devtools/clang/compiler-rt/0001-Simplify-cross-compilation.-Don-t-use-native-compile.patch deleted file mode 100644 index 67b0e73..0000000 --- a/recipes-devtools/clang/compiler-rt/0001-Simplify-cross-compilation.-Don-t-use-native-compile.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 6ca47f1d7d4f9fd34baeba86af67108ac0eaeffe Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Sun, 3 Apr 2016 07:40:06 +0000 -Subject: [PATCH] Simplify cross-compilation. Don't use native-compiled - llvm-config. - - Note: AddLLVM.cmake does not expose the LLVM source directory. - So if you want to run the test suite, you need to either: - - 1) set LLVM_MAIN_SRC_DIR explicitly (to find lit.py) - 2) change AddLLVM.cmake to point to an installed 'lit'. - 3) add_subdirectory(compiler-rt/test) from clang instead of compiler-rt. - -https://us.codeaurora.org/patches/quic/llvm/50683/compiler-rt-cross-compilation.patch - -Signed-off-by: Greg Fitzgerald -Signed-off-by: Khem Raj ---- - CMakeLists.txt | 32 ++++++-------------------------- - 1 file changed, 6 insertions(+), 26 deletions(-) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index c60c246..6f989bf 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -85,32 +85,12 @@ else() - set(COMPILER_RT_TEST_COMPILER ${CMAKE_C_COMPILER} CACHE PATH "Compiler to use for testing") - set(COMPILER_RT_TEST_CXX_COMPILER ${CMAKE_CXX_COMPILER} CACHE PATH "C++ Compiler to use for testing") - -- if (NOT LLVM_CONFIG_PATH) -- find_program(LLVM_CONFIG_PATH "llvm-config" -- DOC "Path to llvm-config binary") -- if (NOT LLVM_CONFIG_PATH) -- message(FATAL_ERROR "llvm-config not found: specify LLVM_CONFIG_PATH") -- endif() -- endif() -- execute_process( -- COMMAND ${LLVM_CONFIG_PATH} "--obj-root" "--bindir" "--libdir" "--src-root" -- RESULT_VARIABLE HAD_ERROR -- OUTPUT_VARIABLE CONFIG_OUTPUT) -- if (HAD_ERROR) -- message(FATAL_ERROR "llvm-config failed with status ${HAD_ERROR}") -- endif() -- string(REGEX REPLACE "[ \t]*[\r\n]+[ \t]*" ";" CONFIG_OUTPUT ${CONFIG_OUTPUT}) -- list(GET CONFIG_OUTPUT 0 LLVM_BINARY_DIR) -- list(GET CONFIG_OUTPUT 1 LLVM_TOOLS_BINARY_DIR) -- list(GET CONFIG_OUTPUT 2 LLVM_LIBRARY_DIR) -- list(GET CONFIG_OUTPUT 3 LLVM_MAIN_SRC_DIR) -- -- # Make use of LLVM CMake modules. -- file(TO_CMAKE_PATH ${LLVM_BINARY_DIR} LLVM_BINARY_DIR_CMAKE_STYLE) -- set(LLVM_CMAKE_PATH "${LLVM_BINARY_DIR_CMAKE_STYLE}/share/llvm/cmake") -- list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_PATH}") -- # Get some LLVM variables from LLVMConfig. -- include("${LLVM_CMAKE_PATH}/LLVMConfig.cmake") -+ find_package(LLVM REQUIRED) -+ list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}") -+ -+ # Variables that AddLLVM.cmake depends on (included by AddCompilerRT) -+ set(LLVM_TOOLS_BINARY_DIR "${LLVM_INSTALL_PREFIX}/bin") -+ set(LLVM_LIBRARY_DIR "${LLVM_INSTALL_PREFIX}/lib") - - set(LLVM_LIBRARY_OUTPUT_INTDIR - ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${LLVM_LIBDIR_SUFFIX}) --- -1.9.1 - diff --git a/recipes-devtools/clang/compiler-rt/0001-support-a-new-embedded-linux-target.patch b/recipes-devtools/clang/compiler-rt/0001-support-a-new-embedded-linux-target.patch deleted file mode 100644 index 2fbaf1c..0000000 --- a/recipes-devtools/clang/compiler-rt/0001-support-a-new-embedded-linux-target.patch +++ /dev/null @@ -1,326 +0,0 @@ -From 6e66e74ebe27ae6b5f072f857bab92a10c600d64 Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Sun, 19 Apr 2015 15:16:23 -0700 -Subject: [PATCH] support a new embedded linux target - -Signed-off-by: Khem Raj ---- - lib/builtins/int_util.c | 3 +- - make/platform/clang_linux_embedded.mk | 286 ++++++++++++++++++++++++ - make/platform/clang_linux_embedded_test_input.c | 0 - 3 files changed, 287 insertions(+), 2 deletions(-) - create mode 100644 make/platform/clang_linux_embedded.mk - create mode 100644 make/platform/clang_linux_embedded_test_input.c - -diff --git a/lib/builtins/int_util.c b/lib/builtins/int_util.c -index 323e461..d8f775d 100644 ---- a/lib/builtins/int_util.c -+++ b/lib/builtins/int_util.c -@@ -48,8 +48,7 @@ void compilerrt_abort_impl(const char *file, int line, const char *function) { - #else - - /* Get the system definition of abort() */ --#include -- -+extern void abort (void) __attribute__ ((__noreturn__)); - #ifndef _WIN32 - __attribute__((weak)) - __attribute__((visibility("hidden"))) -diff --git a/make/platform/clang_linux_embedded.mk b/make/platform/clang_linux_embedded.mk -new file mode 100644 -index 0000000..d0a8900 ---- /dev/null -+++ b/make/platform/clang_linux_embedded.mk -@@ -0,0 +1,286 @@ -+# These are the functions which clang needs when it is targeting a previous -+# version of the OS. The issue is that the backend may use functions which were -+# not present in the libgcc that shipped on the platform. In such cases, we link -+# with a version of the library which contains private_extern definitions of all -+# the extra functions which might be referenced. -+ -+Description := Static runtime libraries for embedded clang/Linux -+ -+# A function that ensures we don't try to build for architectures that we -+# don't have working toolchains for. -+CheckArches = \ -+ $(shell \ -+ result=""; \ -+ for arch in $(1); do \ -+ if $(CC) -arch $$arch -c \ -+ -integrated-as \ -+ $(ProjSrcRoot)/make/platform/clang_linux_embedded_test_input.c \ -+ -o /dev/null > /dev/null 2> /dev/null; then \ -+ result="$$result$$arch "; \ -+ else \ -+ printf 1>&2 \ -+ "warning: clang_linux_embedded.mk: dropping arch '$$arch' from lib '$(2)'\n"; \ -+ fi; \ -+ done; \ -+ echo $$result) -+ -+XCRun = \ -+ $(shell \ -+ result=`xcrun -find $(1) 2> /dev/null`; \ -+ if [ "$$?" != "0" ]; then result=$(1); fi; \ -+ echo $$result) -+ -+### -+ -+CC := $(call XCRun,clang) -+AR := $(call XCRun,ar) -+RANLIB := $(call XCRun,ranlib) -+STRIP := $(call XCRun,strip) -+LIPO := $(call XCRun,lipo) -+DSYMUTIL := $(call XCRun,dsymutil) -+Configs := -+UniversalArchs := -+ -+# Soft-float version of the runtime. No floating-point instructions will be used -+# and the ABI (out of necessity) passes floating values in normal registers: -+# non-VFP variant of the AAPCS. -+UniversalArchs.soft_static := $(call CheckArches,arm armv7m armv7em armv7,soft_static) -+Configs += $(if $(UniversalArchs.soft_static),soft_static) -+ -+# Hard-float version of the runtime. On ARM VFP instructions and registers are -+# allowed, and floating point values get passed in them. VFP variant of the -+# AAPCS. -+UniversalArchs.hard_static := $(call CheckArches,armv7em armv7 i386 x86_64,hard_static) -+Configs += $(if $(UniversalArchs.hard_static),hard_static) -+ -+UniversalArchs.soft_pic := $(call CheckArches,armv6m armv7m armv7em armv7,soft_pic) -+Configs += $(if $(UniversalArchs.soft_pic),soft_pic) -+ -+UniversalArchs.hard_pic := $(call CheckArches,armv7em armv7 i386 x86_64,hard_pic) -+Configs += $(if $(UniversalArchs.hard_pic),hard_pic) -+ -+CFLAGS := -Wall -Werror -Oz -fomit-frame-pointer -ffreestanding -+ -+PIC_CFLAGS := -fPIC -+STATIC_CFLAGS := -static -+ -+CFLAGS_SOFT := -mfloat-abi=soft -+CFLAGS_HARD := -mfloat-abi=hard -+ -+CFLAGS_I386 := -march=pentium -+ -+CFLAGS.soft_static := $(CFLAGS) $(STATIC_CFLAGS) $(CFLAGS_SOFT) -+CFLAGS.hard_static := $(CFLAGS) $(STATIC_CFLAGS) $(CFLAGS_HARD) -+CFLAGS.soft_pic := $(CFLAGS) $(PIC_CFLAGS) $(CFLAGS_SOFT) -+CFLAGS.hard_pic := $(CFLAGS) $(PIC_CFLAGS) $(CFLAGS_HARD) -+ -+CFLAGS.soft_static.armv7 := $(CFLAGS.soft_static) $(CFLAGS_ARMV7) -+CFLAGS.hard_static.armv7 := $(CFLAGS.hard_static) $(CFLAGS_ARMV7) -+CFLAGS.soft_pic.armv7 := $(CFLAGS.soft_pic) $(CFLAGS_ARMV7) -+CFLAGS.hard_pic.armv7 := $(CFLAGS.hard_pic) $(CFLAGS_ARMV7) -+ -+# x86 platforms ignore -mfloat-abi options and complain about doing so. Despite -+# this they're hard-float. -+CFLAGS.hard_static.i386 := $(CFLAGS) $(STATIC_CFLAGS) $(CFLAGS_I386) -+CFLAGS.hard_pic.i386 := $(CFLAGS) $(PIC_CFLAGS) $(CFLAGS_I386) -+CFLAGS.hard_static.x86_64 := $(CFLAGS) $(STATIC_CFLAGS) -+CFLAGS.hard_pic.x86_64 := $(CFLAGS) $(PIC_CFLAGS) -+ -+# Functions not wanted: -+# + eprintf is obsolete anyway -+# + *vfp: designed for Thumb1 CPUs with VFPv2 -+ -+COMMON_FUNCTIONS := \ -+ absvdi2 \ -+ absvsi2 \ -+ addvdi3 \ -+ addvsi3 \ -+ ashldi3 \ -+ ashrdi3 \ -+ bswapdi2 \ -+ bswapsi2 \ -+ clzdi2 \ -+ clzsi2 \ -+ cmpdi2 \ -+ ctzdi2 \ -+ ctzsi2 \ -+ divdc3 \ -+ divdi3 \ -+ divsc3 \ -+ divmodsi4 \ -+ udivmodsi4 \ -+ do_global_dtors \ -+ ffsdi2 \ -+ fixdfdi \ -+ fixsfdi \ -+ fixunsdfdi \ -+ fixunsdfsi \ -+ fixunssfdi \ -+ fixunssfsi \ -+ floatdidf \ -+ floatdisf \ -+ floatundidf \ -+ floatundisf \ -+ gcc_bcmp \ -+ lshrdi3 \ -+ moddi3 \ -+ muldc3 \ -+ muldi3 \ -+ mulsc3 \ -+ mulvdi3 \ -+ mulvsi3 \ -+ negdi2 \ -+ negvdi2 \ -+ negvsi2 \ -+ paritydi2 \ -+ paritysi2 \ -+ popcountdi2 \ -+ popcountsi2 \ -+ powidf2 \ -+ powisf2 \ -+ subvdi3 \ -+ subvsi3 \ -+ ucmpdi2 \ -+ udiv_w_sdiv \ -+ udivdi3 \ -+ udivmoddi4 \ -+ umoddi3 \ -+ adddf3 \ -+ addsf3 \ -+ cmpdf2 \ -+ cmpsf2 \ -+ div0 \ -+ divdf3 \ -+ divsf3 \ -+ divsi3 \ -+ extendsfdf2 \ -+ ffssi2 \ -+ fixdfsi \ -+ fixsfsi \ -+ floatsidf \ -+ floatsisf \ -+ floatunsidf \ -+ floatunsisf \ -+ comparedf2 \ -+ comparesf2 \ -+ modsi3 \ -+ muldf3 \ -+ mulsf3 \ -+ negdf2 \ -+ negsf2 \ -+ subdf3 \ -+ subsf3 \ -+ truncdfsf2 \ -+ udivsi3 \ -+ umodsi3 \ -+ unorddf2 \ -+ unordsf2 -+ -+ARM_FUNCTIONS := \ -+ aeabi_cdcmpeq \ -+ aeabi_cdrcmple \ -+ aeabi_cfcmpeq \ -+ aeabi_cfrcmple \ -+ aeabi_dcmpeq \ -+ aeabi_dcmpge \ -+ aeabi_dcmpgt \ -+ aeabi_dcmple \ -+ aeabi_dcmplt \ -+ aeabi_drsub \ -+ aeabi_fcmpeq \ -+ aeabi_fcmpge \ -+ aeabi_fcmpgt \ -+ aeabi_fcmple \ -+ aeabi_fcmplt \ -+ aeabi_frsub \ -+ aeabi_idivmod \ -+ aeabi_uidivmod \ -+ -+# ARM Assembly implementation which requires Thumb2 (i.e. won't work on v6M). -+THUMB2_FUNCTIONS := \ -+ switch16 \ -+ switch32 \ -+ switch8 \ -+ switchu8 \ -+ sync_fetch_and_add_4 \ -+ sync_fetch_and_sub_4 \ -+ sync_fetch_and_and_4 \ -+ sync_fetch_and_or_4 \ -+ sync_fetch_and_xor_4 \ -+ sync_fetch_and_nand_4 \ -+ sync_fetch_and_max_4 \ -+ sync_fetch_and_umax_4 \ -+ sync_fetch_and_min_4 \ -+ sync_fetch_and_umin_4 \ -+ sync_fetch_and_add_8 \ -+ sync_fetch_and_sub_8 \ -+ sync_fetch_and_and_8 \ -+ sync_fetch_and_or_8 \ -+ sync_fetch_and_xor_8 \ -+ sync_fetch_and_nand_8 \ -+ sync_fetch_and_max_8 \ -+ sync_fetch_and_umax_8 \ -+ sync_fetch_and_min_8 \ -+ sync_fetch_and_umin_8 -+ -+I386_FUNCTIONS := \ -+ i686.get_pc_thunk.eax \ -+ i686.get_pc_thunk.ebp \ -+ i686.get_pc_thunk.ebx \ -+ i686.get_pc_thunk.ecx \ -+ i686.get_pc_thunk.edi \ -+ i686.get_pc_thunk.edx \ -+ i686.get_pc_thunk.esi -+ -+# FIXME: Currently, compiler-rt is missing implementations for a number of the -+# functions. Filter them out for now. -+MISSING_FUNCTIONS := \ -+ cmpdf2 cmpsf2 div0 \ -+ ffssi2 \ -+ udiv_w_sdiv unorddf2 unordsf2 bswapdi2 \ -+ bswapsi2 \ -+ gcc_bcmp \ -+ do_global_dtors \ -+ i686.get_pc_thunk.eax i686.get_pc_thunk.ebp i686.get_pc_thunk.ebx \ -+ i686.get_pc_thunk.ecx i686.get_pc_thunk.edi i686.get_pc_thunk.edx \ -+ i686.get_pc_thunk.esi \ -+ aeabi_cdcmpeq aeabi_cdrcmple aeabi_cfcmpeq aeabi_cfrcmple aeabi_dcmpeq \ -+ aeabi_dcmpge aeabi_dcmpgt aeabi_dcmple aeabi_dcmplt aeabi_drsub \ -+ aeabi_fcmpeq \ aeabi_fcmpge aeabi_fcmpgt aeabi_fcmple aeabi_fcmplt \ -+ aeabi_frsub aeabi_idivmod aeabi_uidivmod -+ -+FUNCTIONS_ARMV6M := $(COMMON_FUNCTIONS) $(ARM_FUNCTIONS) -+FUNCTIONS_ARM_ALL := $(COMMON_FUNCTIONS) $(ARM_FUNCTIONS) $(THUMB2_FUNCTIONS) -+FUNCTIONS_I386 := $(COMMON_FUNCTIONS) $(I386_FUNCTIONS) -+FUNCTIONS_X86_64 := $(COMMON_FUNCTIONS) -+ -+FUNCTIONS_ARMV6M := \ -+ $(filter-out $(MISSING_FUNCTIONS),$(FUNCTIONS_ARMV6M)) -+FUNCTIONS_ARM_ALL := \ -+ $(filter-out $(MISSING_FUNCTIONS),$(FUNCTIONS_ARM_ALL)) -+FUNCTIONS_I386 := \ -+ $(filter-out $(MISSING_FUNCTIONS),$(FUNCTIONS_I386)) -+FUNCTIONS_X86_64 := \ -+ $(filter-out $(MISSING_FUNCTIONS),$(FUNCTIONS_X86_64)) -+ -+FUNCTIONS.soft_static.armv6m := $(FUNCTIONS_ARMV6M) -+FUNCTIONS.soft_pic.armv6m := $(FUNCTIONS_ARMV6M) -+ -+FUNCTIONS.soft_static.armv7m := $(FUNCTIONS_ARM_ALL) -+FUNCTIONS.soft_pic.armv7m := $(FUNCTIONS_ARM_ALL) -+ -+FUNCTIONS.soft_static.armv7em := $(FUNCTIONS_ARM_ALL) -+FUNCTIONS.hard_static.armv7em := $(FUNCTIONS_ARM_ALL) -+FUNCTIONS.soft_pic.armv7em := $(FUNCTIONS_ARM_ALL) -+FUNCTIONS.hard_pic.armv7em := $(FUNCTIONS_ARM_ALL) -+ -+FUNCTIONS.soft_static.armv7 := $(FUNCTIONS_ARM_ALL) -+FUNCTIONS.hard_static.armv7 := $(FUNCTIONS_ARM_ALL) -+FUNCTIONS.soft_pic.armv7 := $(FUNCTIONS_ARM_ALL) -+FUNCTIONS.hard_pic.armv7 := $(FUNCTIONS_ARM_ALL) -+ -+FUNCTIONS.hard_static.i386 := $(FUNCTIONS_I386) -+FUNCTIONS.hard_pic.i386 := $(FUNCTIONS_I386) -+ -+FUNCTIONS.hard_static.x86_64 := $(FUNCTIONS_X86_64) -+FUNCTIONS.hard_pic.x86_64 := $(FUNCTIONS_X86_64) -diff --git a/make/platform/clang_linux_embedded_test_input.c b/make/platform/clang_linux_embedded_test_input.c -new file mode 100644 -index 0000000..e69de29 --- -2.1.4 - diff --git a/recipes-devtools/clang/compiler-rt/0002-support-a-new-embedded-linux-target.patch b/recipes-devtools/clang/compiler-rt/0002-support-a-new-embedded-linux-target.patch new file mode 100644 index 0000000..12fc4e4 --- /dev/null +++ b/recipes-devtools/clang/compiler-rt/0002-support-a-new-embedded-linux-target.patch @@ -0,0 +1,326 @@ +From 7b7cdc3fcbec45f08b20600c8410c125edeb67ef Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sun, 19 Apr 2015 15:16:23 -0700 +Subject: [PATCH 2/3] support a new embedded linux target + +Signed-off-by: Khem Raj +--- + lib/builtins/int_util.c | 3 +- + make/platform/clang_linux_embedded.mk | 286 ++++++++++++++++++++++++ + make/platform/clang_linux_embedded_test_input.c | 0 + 3 files changed, 287 insertions(+), 2 deletions(-) + create mode 100644 make/platform/clang_linux_embedded.mk + create mode 100644 make/platform/clang_linux_embedded_test_input.c + +diff --git a/lib/builtins/int_util.c b/lib/builtins/int_util.c +index 420d1e2..0e46141 100644 +--- a/lib/builtins/int_util.c ++++ b/lib/builtins/int_util.c +@@ -48,8 +48,7 @@ void compilerrt_abort_impl(const char *file, int line, const char *function) { + #else + + /* Get the system definition of abort() */ +-#include +- ++extern void abort (void) __attribute__ ((__noreturn__)); + #ifndef _WIN32 + __attribute__((weak)) + __attribute__((visibility("hidden"))) +diff --git a/make/platform/clang_linux_embedded.mk b/make/platform/clang_linux_embedded.mk +new file mode 100644 +index 0000000..d0a8900 +--- /dev/null ++++ b/make/platform/clang_linux_embedded.mk +@@ -0,0 +1,286 @@ ++# These are the functions which clang needs when it is targeting a previous ++# version of the OS. The issue is that the backend may use functions which were ++# not present in the libgcc that shipped on the platform. In such cases, we link ++# with a version of the library which contains private_extern definitions of all ++# the extra functions which might be referenced. ++ ++Description := Static runtime libraries for embedded clang/Linux ++ ++# A function that ensures we don't try to build for architectures that we ++# don't have working toolchains for. ++CheckArches = \ ++ $(shell \ ++ result=""; \ ++ for arch in $(1); do \ ++ if $(CC) -arch $$arch -c \ ++ -integrated-as \ ++ $(ProjSrcRoot)/make/platform/clang_linux_embedded_test_input.c \ ++ -o /dev/null > /dev/null 2> /dev/null; then \ ++ result="$$result$$arch "; \ ++ else \ ++ printf 1>&2 \ ++ "warning: clang_linux_embedded.mk: dropping arch '$$arch' from lib '$(2)'\n"; \ ++ fi; \ ++ done; \ ++ echo $$result) ++ ++XCRun = \ ++ $(shell \ ++ result=`xcrun -find $(1) 2> /dev/null`; \ ++ if [ "$$?" != "0" ]; then result=$(1); fi; \ ++ echo $$result) ++ ++### ++ ++CC := $(call XCRun,clang) ++AR := $(call XCRun,ar) ++RANLIB := $(call XCRun,ranlib) ++STRIP := $(call XCRun,strip) ++LIPO := $(call XCRun,lipo) ++DSYMUTIL := $(call XCRun,dsymutil) ++Configs := ++UniversalArchs := ++ ++# Soft-float version of the runtime. No floating-point instructions will be used ++# and the ABI (out of necessity) passes floating values in normal registers: ++# non-VFP variant of the AAPCS. ++UniversalArchs.soft_static := $(call CheckArches,arm armv7m armv7em armv7,soft_static) ++Configs += $(if $(UniversalArchs.soft_static),soft_static) ++ ++# Hard-float version of the runtime. On ARM VFP instructions and registers are ++# allowed, and floating point values get passed in them. VFP variant of the ++# AAPCS. ++UniversalArchs.hard_static := $(call CheckArches,armv7em armv7 i386 x86_64,hard_static) ++Configs += $(if $(UniversalArchs.hard_static),hard_static) ++ ++UniversalArchs.soft_pic := $(call CheckArches,armv6m armv7m armv7em armv7,soft_pic) ++Configs += $(if $(UniversalArchs.soft_pic),soft_pic) ++ ++UniversalArchs.hard_pic := $(call CheckArches,armv7em armv7 i386 x86_64,hard_pic) ++Configs += $(if $(UniversalArchs.hard_pic),hard_pic) ++ ++CFLAGS := -Wall -Werror -Oz -fomit-frame-pointer -ffreestanding ++ ++PIC_CFLAGS := -fPIC ++STATIC_CFLAGS := -static ++ ++CFLAGS_SOFT := -mfloat-abi=soft ++CFLAGS_HARD := -mfloat-abi=hard ++ ++CFLAGS_I386 := -march=pentium ++ ++CFLAGS.soft_static := $(CFLAGS) $(STATIC_CFLAGS) $(CFLAGS_SOFT) ++CFLAGS.hard_static := $(CFLAGS) $(STATIC_CFLAGS) $(CFLAGS_HARD) ++CFLAGS.soft_pic := $(CFLAGS) $(PIC_CFLAGS) $(CFLAGS_SOFT) ++CFLAGS.hard_pic := $(CFLAGS) $(PIC_CFLAGS) $(CFLAGS_HARD) ++ ++CFLAGS.soft_static.armv7 := $(CFLAGS.soft_static) $(CFLAGS_ARMV7) ++CFLAGS.hard_static.armv7 := $(CFLAGS.hard_static) $(CFLAGS_ARMV7) ++CFLAGS.soft_pic.armv7 := $(CFLAGS.soft_pic) $(CFLAGS_ARMV7) ++CFLAGS.hard_pic.armv7 := $(CFLAGS.hard_pic) $(CFLAGS_ARMV7) ++ ++# x86 platforms ignore -mfloat-abi options and complain about doing so. Despite ++# this they're hard-float. ++CFLAGS.hard_static.i386 := $(CFLAGS) $(STATIC_CFLAGS) $(CFLAGS_I386) ++CFLAGS.hard_pic.i386 := $(CFLAGS) $(PIC_CFLAGS) $(CFLAGS_I386) ++CFLAGS.hard_static.x86_64 := $(CFLAGS) $(STATIC_CFLAGS) ++CFLAGS.hard_pic.x86_64 := $(CFLAGS) $(PIC_CFLAGS) ++ ++# Functions not wanted: ++# + eprintf is obsolete anyway ++# + *vfp: designed for Thumb1 CPUs with VFPv2 ++ ++COMMON_FUNCTIONS := \ ++ absvdi2 \ ++ absvsi2 \ ++ addvdi3 \ ++ addvsi3 \ ++ ashldi3 \ ++ ashrdi3 \ ++ bswapdi2 \ ++ bswapsi2 \ ++ clzdi2 \ ++ clzsi2 \ ++ cmpdi2 \ ++ ctzdi2 \ ++ ctzsi2 \ ++ divdc3 \ ++ divdi3 \ ++ divsc3 \ ++ divmodsi4 \ ++ udivmodsi4 \ ++ do_global_dtors \ ++ ffsdi2 \ ++ fixdfdi \ ++ fixsfdi \ ++ fixunsdfdi \ ++ fixunsdfsi \ ++ fixunssfdi \ ++ fixunssfsi \ ++ floatdidf \ ++ floatdisf \ ++ floatundidf \ ++ floatundisf \ ++ gcc_bcmp \ ++ lshrdi3 \ ++ moddi3 \ ++ muldc3 \ ++ muldi3 \ ++ mulsc3 \ ++ mulvdi3 \ ++ mulvsi3 \ ++ negdi2 \ ++ negvdi2 \ ++ negvsi2 \ ++ paritydi2 \ ++ paritysi2 \ ++ popcountdi2 \ ++ popcountsi2 \ ++ powidf2 \ ++ powisf2 \ ++ subvdi3 \ ++ subvsi3 \ ++ ucmpdi2 \ ++ udiv_w_sdiv \ ++ udivdi3 \ ++ udivmoddi4 \ ++ umoddi3 \ ++ adddf3 \ ++ addsf3 \ ++ cmpdf2 \ ++ cmpsf2 \ ++ div0 \ ++ divdf3 \ ++ divsf3 \ ++ divsi3 \ ++ extendsfdf2 \ ++ ffssi2 \ ++ fixdfsi \ ++ fixsfsi \ ++ floatsidf \ ++ floatsisf \ ++ floatunsidf \ ++ floatunsisf \ ++ comparedf2 \ ++ comparesf2 \ ++ modsi3 \ ++ muldf3 \ ++ mulsf3 \ ++ negdf2 \ ++ negsf2 \ ++ subdf3 \ ++ subsf3 \ ++ truncdfsf2 \ ++ udivsi3 \ ++ umodsi3 \ ++ unorddf2 \ ++ unordsf2 ++ ++ARM_FUNCTIONS := \ ++ aeabi_cdcmpeq \ ++ aeabi_cdrcmple \ ++ aeabi_cfcmpeq \ ++ aeabi_cfrcmple \ ++ aeabi_dcmpeq \ ++ aeabi_dcmpge \ ++ aeabi_dcmpgt \ ++ aeabi_dcmple \ ++ aeabi_dcmplt \ ++ aeabi_drsub \ ++ aeabi_fcmpeq \ ++ aeabi_fcmpge \ ++ aeabi_fcmpgt \ ++ aeabi_fcmple \ ++ aeabi_fcmplt \ ++ aeabi_frsub \ ++ aeabi_idivmod \ ++ aeabi_uidivmod \ ++ ++# ARM Assembly implementation which requires Thumb2 (i.e. won't work on v6M). ++THUMB2_FUNCTIONS := \ ++ switch16 \ ++ switch32 \ ++ switch8 \ ++ switchu8 \ ++ sync_fetch_and_add_4 \ ++ sync_fetch_and_sub_4 \ ++ sync_fetch_and_and_4 \ ++ sync_fetch_and_or_4 \ ++ sync_fetch_and_xor_4 \ ++ sync_fetch_and_nand_4 \ ++ sync_fetch_and_max_4 \ ++ sync_fetch_and_umax_4 \ ++ sync_fetch_and_min_4 \ ++ sync_fetch_and_umin_4 \ ++ sync_fetch_and_add_8 \ ++ sync_fetch_and_sub_8 \ ++ sync_fetch_and_and_8 \ ++ sync_fetch_and_or_8 \ ++ sync_fetch_and_xor_8 \ ++ sync_fetch_and_nand_8 \ ++ sync_fetch_and_max_8 \ ++ sync_fetch_and_umax_8 \ ++ sync_fetch_and_min_8 \ ++ sync_fetch_and_umin_8 ++ ++I386_FUNCTIONS := \ ++ i686.get_pc_thunk.eax \ ++ i686.get_pc_thunk.ebp \ ++ i686.get_pc_thunk.ebx \ ++ i686.get_pc_thunk.ecx \ ++ i686.get_pc_thunk.edi \ ++ i686.get_pc_thunk.edx \ ++ i686.get_pc_thunk.esi ++ ++# FIXME: Currently, compiler-rt is missing implementations for a number of the ++# functions. Filter them out for now. ++MISSING_FUNCTIONS := \ ++ cmpdf2 cmpsf2 div0 \ ++ ffssi2 \ ++ udiv_w_sdiv unorddf2 unordsf2 bswapdi2 \ ++ bswapsi2 \ ++ gcc_bcmp \ ++ do_global_dtors \ ++ i686.get_pc_thunk.eax i686.get_pc_thunk.ebp i686.get_pc_thunk.ebx \ ++ i686.get_pc_thunk.ecx i686.get_pc_thunk.edi i686.get_pc_thunk.edx \ ++ i686.get_pc_thunk.esi \ ++ aeabi_cdcmpeq aeabi_cdrcmple aeabi_cfcmpeq aeabi_cfrcmple aeabi_dcmpeq \ ++ aeabi_dcmpge aeabi_dcmpgt aeabi_dcmple aeabi_dcmplt aeabi_drsub \ ++ aeabi_fcmpeq \ aeabi_fcmpge aeabi_fcmpgt aeabi_fcmple aeabi_fcmplt \ ++ aeabi_frsub aeabi_idivmod aeabi_uidivmod ++ ++FUNCTIONS_ARMV6M := $(COMMON_FUNCTIONS) $(ARM_FUNCTIONS) ++FUNCTIONS_ARM_ALL := $(COMMON_FUNCTIONS) $(ARM_FUNCTIONS) $(THUMB2_FUNCTIONS) ++FUNCTIONS_I386 := $(COMMON_FUNCTIONS) $(I386_FUNCTIONS) ++FUNCTIONS_X86_64 := $(COMMON_FUNCTIONS) ++ ++FUNCTIONS_ARMV6M := \ ++ $(filter-out $(MISSING_FUNCTIONS),$(FUNCTIONS_ARMV6M)) ++FUNCTIONS_ARM_ALL := \ ++ $(filter-out $(MISSING_FUNCTIONS),$(FUNCTIONS_ARM_ALL)) ++FUNCTIONS_I386 := \ ++ $(filter-out $(MISSING_FUNCTIONS),$(FUNCTIONS_I386)) ++FUNCTIONS_X86_64 := \ ++ $(filter-out $(MISSING_FUNCTIONS),$(FUNCTIONS_X86_64)) ++ ++FUNCTIONS.soft_static.armv6m := $(FUNCTIONS_ARMV6M) ++FUNCTIONS.soft_pic.armv6m := $(FUNCTIONS_ARMV6M) ++ ++FUNCTIONS.soft_static.armv7m := $(FUNCTIONS_ARM_ALL) ++FUNCTIONS.soft_pic.armv7m := $(FUNCTIONS_ARM_ALL) ++ ++FUNCTIONS.soft_static.armv7em := $(FUNCTIONS_ARM_ALL) ++FUNCTIONS.hard_static.armv7em := $(FUNCTIONS_ARM_ALL) ++FUNCTIONS.soft_pic.armv7em := $(FUNCTIONS_ARM_ALL) ++FUNCTIONS.hard_pic.armv7em := $(FUNCTIONS_ARM_ALL) ++ ++FUNCTIONS.soft_static.armv7 := $(FUNCTIONS_ARM_ALL) ++FUNCTIONS.hard_static.armv7 := $(FUNCTIONS_ARM_ALL) ++FUNCTIONS.soft_pic.armv7 := $(FUNCTIONS_ARM_ALL) ++FUNCTIONS.hard_pic.armv7 := $(FUNCTIONS_ARM_ALL) ++ ++FUNCTIONS.hard_static.i386 := $(FUNCTIONS_I386) ++FUNCTIONS.hard_pic.i386 := $(FUNCTIONS_I386) ++ ++FUNCTIONS.hard_static.x86_64 := $(FUNCTIONS_X86_64) ++FUNCTIONS.hard_pic.x86_64 := $(FUNCTIONS_X86_64) +diff --git a/make/platform/clang_linux_embedded_test_input.c b/make/platform/clang_linux_embedded_test_input.c +new file mode 100644 +index 0000000..e69de29 +-- +2.8.2 + diff --git a/recipes-devtools/clang/compiler-rt/0003-Simplify-cross-compilation.-Don-t-use-native-compile.patch b/recipes-devtools/clang/compiler-rt/0003-Simplify-cross-compilation.-Don-t-use-native-compile.patch new file mode 100644 index 0000000..ffbe537 --- /dev/null +++ b/recipes-devtools/clang/compiler-rt/0003-Simplify-cross-compilation.-Don-t-use-native-compile.patch @@ -0,0 +1,67 @@ +From f8617c08ad6e38ccb4623a777cd8c9601af6e2ec Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Thu, 19 May 2016 23:11:45 -0700 +Subject: [PATCH 3/3] Simplify cross-compilation. Don't use native-compiled + llvm-config. + + Note: AddLLVM.cmake does not expose the LLVM source directory. + So if you want to run the test suite, you need to either: + + 1) set LLVM_MAIN_SRC_DIR explicitly (to find lit.py) + 2) change AddLLVM.cmake to point to an installed 'lit'. + 3) add_subdirectory(compiler-rt/test) from clang instead of compiler-rt. + +https://us.codeaurora.org/patches/quic/llvm/50683/compiler-rt-cross-compilation.patch + +Signed-off-by: Greg Fitzgerald +Signed-off-by: Khem Raj +--- + CMakeLists.txt | 32 ++++++-------------------------- + 1 file changed, 6 insertions(+), 26 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index d8794b5..d5477cf 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -60,32 +60,12 @@ option(COMPILER_RT_BUILD_SANITIZERS "Build sanitizers" ON) + mark_as_advanced(COMPILER_RT_BUILD_SANITIZERS) + + if (COMPILER_RT_STANDALONE_BUILD) +- if (NOT LLVM_CONFIG_PATH) +- find_program(LLVM_CONFIG_PATH "llvm-config" +- DOC "Path to llvm-config binary") +- if (NOT LLVM_CONFIG_PATH) +- message(FATAL_ERROR "llvm-config not found: specify LLVM_CONFIG_PATH") +- endif() +- endif() +- execute_process( +- COMMAND ${LLVM_CONFIG_PATH} "--obj-root" "--bindir" "--libdir" "--src-root" +- RESULT_VARIABLE HAD_ERROR +- OUTPUT_VARIABLE CONFIG_OUTPUT) +- if (HAD_ERROR) +- message(FATAL_ERROR "llvm-config failed with status ${HAD_ERROR}") +- endif() +- string(REGEX REPLACE "[ \t]*[\r\n]+[ \t]*" ";" CONFIG_OUTPUT ${CONFIG_OUTPUT}) +- list(GET CONFIG_OUTPUT 0 LLVM_BINARY_DIR) +- list(GET CONFIG_OUTPUT 1 LLVM_TOOLS_BINARY_DIR) +- list(GET CONFIG_OUTPUT 2 LLVM_LIBRARY_DIR) +- list(GET CONFIG_OUTPUT 3 LLVM_MAIN_SRC_DIR) +- +- # Make use of LLVM CMake modules. +- file(TO_CMAKE_PATH ${LLVM_BINARY_DIR} LLVM_BINARY_DIR_CMAKE_STYLE) +- set(LLVM_CMAKE_PATH "${LLVM_BINARY_DIR_CMAKE_STYLE}/lib${LLVM_LIBDIR_SUFFIX}/cmake/llvm") +- list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_PATH}") +- # Get some LLVM variables from LLVMConfig. +- include("${LLVM_CMAKE_PATH}/LLVMConfig.cmake") ++ find_package(LLVM REQUIRED) ++ list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}") ++ ++ # Variables that AddLLVM.cmake depends on (included by AddCompilerRT) ++ set(LLVM_TOOLS_BINARY_DIR "${LLVM_INSTALL_PREFIX}/bin") ++ set(LLVM_LIBRARY_DIR "${LLVM_INSTALL_PREFIX}/lib") + + set(LLVM_LIBRARY_OUTPUT_INTDIR + ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${LLVM_LIBDIR_SUFFIX}) +-- +2.8.2 + diff --git a/recipes-devtools/clang/compiler-rt_git.bb b/recipes-devtools/clang/compiler-rt_git.bb index a9ce234..1fb7bf7 100644 --- a/recipes-devtools/clang/compiler-rt_git.bb +++ b/recipes-devtools/clang/compiler-rt_git.bb @@ -17,9 +17,9 @@ PV .= "+git${SRCPV}" LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=27b14ab4ce08d04c3a9a5f0ed7997362; \ " SRC_URI = "${LLVM_GIT}/compiler-rt.git;protocol=${LLVM_GIT_PROTOCOL};branch=${BRANCH};name=compiler-rt \ - file://0001-support-a-new-embedded-linux-target.patch \ - file://0001-Simplify-cross-compilation.-Don-t-use-native-compile.patch \ file://0001-Remove-fatal-check-for-explicit-COMPILER_RT_DEFAULT_.patch \ + file://0002-support-a-new-embedded-linux-target.patch \ + file://0003-Simplify-cross-compilation.-Don-t-use-native-compile.patch \ " SRCREV_FORMAT = "compiler-rt" diff --git a/recipes-devtools/clang/libcxx/0001-use-constexpr-when-using-glibc.patch b/recipes-devtools/clang/libcxx/0001-use-constexpr-when-using-glibc.patch index f66de8f..e9eb4d2 100644 --- a/recipes-devtools/clang/libcxx/0001-use-constexpr-when-using-glibc.patch +++ b/recipes-devtools/clang/libcxx/0001-use-constexpr-when-using-glibc.patch @@ -1,6 +1,6 @@ -From 21ddd574f6e9b321614d39a7765f1ad98aa09f54 Mon Sep 17 00:00:00 2001 +From a97e50970942df6bf0f3f2fda5ba44e10ef63713 Mon Sep 17 00:00:00 2001 From: Khem Raj -Date: Tue, 15 Mar 2016 04:56:27 +0000 +Date: Thu, 19 May 2016 23:22:52 -0700 Subject: [PATCH] use constexpr when using glibc POSIX does not permit using PTHREAD_COND_INITIALIZER except for static @@ -12,45 +12,37 @@ code is invalid Signed-off-by: Khem Raj --- - include/__mutex_base | 11 ++++++++--- - 1 file changed, 8 insertions(+), 3 deletions(-) + include/__mutex_base | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/include/__mutex_base b/include/__mutex_base -index b019b47..10ad9f2 100644 +index 32536a6..58430c7 100644 --- a/include/__mutex_base +++ b/include/__mutex_base -@@ -33,7 +33,10 @@ class _LIBCPP_TYPE_VIS mutex +@@ -39,7 +39,10 @@ class _LIBCPP_TYPE_VIS _LIBCPP_THREAD_SAFETY_ANNOTATION(capability("mutex")) mut public: _LIBCPP_INLINE_VISIBILITY #ifndef _LIBCPP_HAS_NO_CONSTEXPR -- constexpr mutex() _NOEXCEPT : __m_(PTHREAD_MUTEX_INITIALIZER) {} +- constexpr mutex() _NOEXCEPT : __m_(_LIBCPP_MUTEX_INITIALIZER) {} +#ifdef __GLIBC__ -+ constexpr ++ constexpr +#endif -+ mutex() _NOEXCEPT : __m_(PTHREAD_MUTEX_INITIALIZER) {} ++ mutex() _NOEXCEPT : __m_(_LIBCPP_MUTEX_INITIALIZER) {} #else - mutex() _NOEXCEPT {__m_ = (pthread_mutex_t)PTHREAD_MUTEX_INITIALIZER;} + mutex() _NOEXCEPT {__m_ = (__libcpp_mutex_t)_LIBCPP_MUTEX_INITIALIZER;} #endif -@@ -63,7 +66,6 @@ extern const try_to_lock_t try_to_lock; - extern const adopt_lock_t adopt_lock; - - #else -- - constexpr defer_lock_t defer_lock = defer_lock_t(); - constexpr try_to_lock_t try_to_lock = try_to_lock_t(); - constexpr adopt_lock_t adopt_lock = adopt_lock_t(); -@@ -272,7 +274,10 @@ class _LIBCPP_TYPE_VIS condition_variable +@@ -278,7 +281,10 @@ class _LIBCPP_TYPE_VIS condition_variable public: _LIBCPP_INLINE_VISIBILITY #ifndef _LIBCPP_HAS_NO_CONSTEXPR -- constexpr condition_variable() : __cv_(PTHREAD_COND_INITIALIZER) {} +- constexpr condition_variable() : __cv_(_LIBCPP_CONDVAR_INITIALIZER) {} +#ifdef __GLIBC__ + constexpr +#endif -+ condition_variable() : __cv_(PTHREAD_COND_INITIALIZER) {} ++ condition_variable() : __cv_(_LIBCPP_CONDVAR_INITIALIZER) {} #else - condition_variable() {__cv_ = (pthread_cond_t)PTHREAD_COND_INITIALIZER;} + condition_variable() {__cv_ = (__libcpp_condvar_t)_LIBCPP_CONDVAR_INITIALIZER;} #endif -- -1.9.1 +2.8.2 diff --git a/recipes-devtools/clang/llvm-libunwind/0001-aarch64-Use-x29-and-x30-for-fp-and-lr-respectively.patch b/recipes-devtools/clang/llvm-libunwind/0001-aarch64-Use-x29-and-x30-for-fp-and-lr-respectively.patch deleted file mode 100644 index 0c65dba..0000000 --- a/recipes-devtools/clang/llvm-libunwind/0001-aarch64-Use-x29-and-x30-for-fp-and-lr-respectively.patch +++ /dev/null @@ -1,65 +0,0 @@ -From 5def58395d2248dfcd3165b4f23ba04b7f355837 Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Thu, 10 Sep 2015 21:27:28 +0000 -Subject: [PATCH] aarch64: Use x29 and x30 for fp and lr respectively - -This does not change the code generation with integrated asm -but using x30 and x29 helps compile the code with gnu as. Currently gas -fails to assemble this code with errors as below - -Error: operand X should be an integer register - -Signed-off-by: Khem Raj ---- -Upstream-Status: Submitted[http://reviews.llvm.org/D12777] - - src/UnwindRegistersRestore.S | 6 +++--- - src/UnwindRegistersSave.S | 6 +++--- - 2 files changed, 6 insertions(+), 6 deletions(-) - -diff --git a/src/UnwindRegistersRestore.S b/src/UnwindRegistersRestore.S -index 7d21953..1244d82 100644 ---- a/src/UnwindRegistersRestore.S -+++ b/src/UnwindRegistersRestore.S -@@ -282,8 +282,8 @@ DEFINE_LIBUNWIND_PRIVATE_FUNCTION(_ZN9libunwind15Registers_arm646jumptoEv) - ldp x22,x23, [x0, #0x0B0] - ldp x24,x25, [x0, #0x0C0] - ldp x26,x27, [x0, #0x0D0] -- ldp x28,fp, [x0, #0x0E0] -- ldr lr, [x0, #0x100] // restore pc into lr -+ ldp x28,x29, [x0, #0x0E0] -+ ldr x30, [x0, #0x100] // restore pc into lr - ldr x1, [x0, #0x0F8] - mov sp,x1 // restore sp - -@@ -306,7 +306,7 @@ DEFINE_LIBUNWIND_PRIVATE_FUNCTION(_ZN9libunwind15Registers_arm646jumptoEv) - ldr d31, [x0, #0x208] - - ldp x0, x1, [x0, #0x000] // restore x0,x1 -- ret lr // jump to pc -+ ret x30 // jump to pc - - #elif defined(__arm__) && !defined(__APPLE__) - -diff --git a/src/UnwindRegistersSave.S b/src/UnwindRegistersSave.S -index d26908c..80776c8 100644 ---- a/src/UnwindRegistersSave.S -+++ b/src/UnwindRegistersSave.S -@@ -254,11 +254,11 @@ DEFINE_LIBUNWIND_FUNCTION(unw_getcontext) - stp x22,x23, [x0, #0x0B0] - stp x24,x25, [x0, #0x0C0] - stp x26,x27, [x0, #0x0D0] -- stp x28,fp, [x0, #0x0E0] -- str lr, [x0, #0x0F0] -+ stp x28,x29, [x0, #0x0E0] -+ str x30, [x0, #0x0F0] - mov x1,sp - str x1, [x0, #0x0F8] -- str lr, [x0, #0x100] // store return address as pc -+ str x30, [x0, #0x100] // store return address as pc - // skip cpsr - stp d0, d1, [x0, #0x110] - stp d2, d3, [x0, #0x120] --- -2.5.1 - diff --git a/recipes-devtools/clang/llvm-libunwind_git.bb b/recipes-devtools/clang/llvm-libunwind_git.bb index 51bdb06..48890e3 100644 --- a/recipes-devtools/clang/llvm-libunwind_git.bb +++ b/recipes-devtools/clang/llvm-libunwind_git.bb @@ -24,7 +24,6 @@ SRC_URI = "\ ${LLVM_GIT}/libcxx.git;protocol=${LLVM_GIT_PROTOCOL};branch=${BRANCH};name=libcxx;destsuffix=git/projects/libcxx \ ${LLVM_GIT}/libcxxabi.git;protocol=${LLVM_GIT_PROTOCOL};branch=${BRANCH};name=libcxxabi;destsuffix=git/projects/libcxxabi \ ${LLVM_GIT}/libunwind.git;protocol=${LLVM_GIT_PROTOCOL};branch=${BRANCH};name=libunwind;destsuffix=git/projects/libunwind \ - file://0001-aarch64-Use-x29-and-x30-for-fp-and-lr-respectively.patch \ " SRCREV_FORMAT = "llvm_libcxx_libcxxabi_libunwind" -- cgit v1.2.3-54-g00ecf