From f10ddad456e41c600f8f798b40e175a11ad2a5a0 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sat, 25 Jun 2016 12:03:35 -0700 Subject: llvm/clang: Upgrade to latest tip on 3.9 Signed-off-by: Khem Raj --- recipes-devtools/clang/clang.inc | 12 +-- .../0001-clang-driver-Add-musl-ldso-support.patch | 15 ++- ...-CMAKE_CROSSCOMPILING-so-it-can-cross-com.patch | 34 +++++++ .../clang/0001-llvm-triplet-Add-musl-support.patch | 109 --------------------- .../0002-clang-driver-Use-lib-for-ldso-on-OE.patch | 8 +- .../0002-llvm-Do-not-assume-linux-glibc.patch | 28 ++++++ ...-CMAKE_CROSSCOMPILING-so-it-can-cross-com.patch | 34 ------- ...r-tools.cpp-Add-lssp-and-lssp_nonshared-o.patch | 12 +-- .../0003-llvm-Do-not-assume-linux-glibc.patch | 28 ------ ...LibraryInfo-Undefine-libc-functions-if-th.patch | 91 +++++++++++++++++ ...-ppc-does-not-support-128-bit-long-double.patch | 6 +- ...LibraryInfo-Undefine-libc-functions-if-th.patch | 91 ----------------- ...wering-Handle-MUSLEABI-to-fix-AEABI-helpe.patch | 51 ---------- recipes-devtools/clang/clang_git.bb | 8 +- 14 files changed, 181 insertions(+), 346 deletions(-) create mode 100644 recipes-devtools/clang/clang/0001-llvm-Remove-CMAKE_CROSSCOMPILING-so-it-can-cross-com.patch delete mode 100644 recipes-devtools/clang/clang/0001-llvm-triplet-Add-musl-support.patch create mode 100644 recipes-devtools/clang/clang/0002-llvm-Do-not-assume-linux-glibc.patch delete mode 100644 recipes-devtools/clang/clang/0002-llvm-Remove-CMAKE_CROSSCOMPILING-so-it-can-cross-com.patch delete mode 100644 recipes-devtools/clang/clang/0003-llvm-Do-not-assume-linux-glibc.patch create mode 100644 recipes-devtools/clang/clang/0003-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch delete mode 100644 recipes-devtools/clang/clang/0004-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch delete mode 100644 recipes-devtools/clang/clang/0005-ARMTargetLowering-Handle-MUSLEABI-to-fix-AEABI-helpe.patch (limited to 'recipes-devtools') diff --git a/recipes-devtools/clang/clang.inc b/recipes-devtools/clang/clang.inc index 080d5d9..4795f02 100644 --- a/recipes-devtools/clang/clang.inc +++ b/recipes-devtools/clang/clang.inc @@ -10,12 +10,12 @@ LLVM_GIT_PROTOCOL ?= "git" PV = "3.9.0" BRANCH = "master" -SRCREV_llvm = "b7ebc01945b9efb5efffd77cb7a7f6dd3ab72dd5" -SRCREV_clang = "56fdf6c411068bbc01fcd802eddb489c79bf4852" -SRCREV_compiler-rt = "97a35f8a8e9741e9157c0afdbb48a9db99d8a718" -SRCREV_libcxxabi = "6fd0d958b55fbbefeb5e1fb78cdc086eddb92a43" -SRCREV_libcxx = "d8df1781e3e0041d81899c9131b43c6655c75351" -SRCREV_libunwind = "7b1a88cf2a276f26d7f22c09f05accd3c750ca35" +SRCREV_llvm = "d207fc4c12d5a4a2660fb925858811544119a07a" +SRCREV_clang = "116ce8458879ac0721cfd7badfd4c3868ed2da78" +SRCREV_compiler-rt = "8ec81ae4bda307e683f25ffd7b2caf2d65aa18ad" +SRCREV_libcxxabi = "5328c6b635a145efc1204ad25341706fb705e346" +SRCREV_libcxx = "dd421f5acd9016a2f88a09150904af463ad17815" +SRCREV_libunwind = "7a00ec9517645046685fd6c115f0b1dc775f0bb3" LLVMMD5SUM = "43fdaa303c1c5589ad60f4ffc6a0b9ce" CLANGMD5SUM = "a77eac638a3aae44a2d604217d6f0f01" 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 index 43f54e2..6b81afa 100644 --- 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 @@ -1,4 +1,4 @@ -From 0cc06b502547b54f976a9cbd12aa529b95a97c5b Mon Sep 17 00:00:00 2001 +From 88840f268e6e86ea56654ef62c75b1ee52badee0 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sat, 21 May 2016 21:49:08 -0700 Subject: [PATCH 1/4] clang: driver: Add musl ldso support @@ -9,14 +9,14 @@ as a musl based Linux platform Signed-off-by: Khem Raj --- - lib/Driver/Tools.cpp | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 107 insertions(+) + lib/Driver/Tools.cpp | 104 +++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 104 insertions(+) diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp -index e73c22d..737cd02 100644 +index c4ac773..cf3b4ae 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp -@@ -9076,6 +9076,113 @@ static void AddLibgcc(const llvm::Triple &Triple, const Driver &D, +@@ -9108,6 +9108,110 @@ static void AddLibgcc(const llvm::Triple &Triple, const Driver &D, CmdArgs.push_back("-ldl"); } @@ -32,9 +32,6 @@ index e73c22d..737cd02 100644 + 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"; @@ -131,5 +128,5 @@ index e73c22d..737cd02 100644 ArgStringList &CmdArgs, const ArgList &Args) { // Make use of compiler-rt if --rtlib option is used -- -2.8.3 +2.9.0 diff --git a/recipes-devtools/clang/clang/0001-llvm-Remove-CMAKE_CROSSCOMPILING-so-it-can-cross-com.patch b/recipes-devtools/clang/clang/0001-llvm-Remove-CMAKE_CROSSCOMPILING-so-it-can-cross-com.patch new file mode 100644 index 0000000..8190bfb --- /dev/null +++ b/recipes-devtools/clang/clang/0001-llvm-Remove-CMAKE_CROSSCOMPILING-so-it-can-cross-com.patch @@ -0,0 +1,34 @@ +From f480eebd16f502fabddb5e61f49205606e82945d Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Fri, 15 May 2015 12:13:17 -0700 +Subject: [PATCH 1/3] 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 d458771..2e0c634 100644 +--- a/tools/llvm-config/CMakeLists.txt ++++ b/tools/llvm-config/CMakeLists.txt +@@ -57,7 +57,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) + +@@ -70,4 +70,4 @@ if(CMAKE_CROSSCOMPILING) + add_dependencies(${project}NativeLLVMConfig CONFIGURE_LLVM_NATIVE) + + add_dependencies(llvm-config ${project}NativeLLVMConfig) +-endif(CMAKE_CROSSCOMPILING) ++endif(CMAKE_CROSSCOMPILING1) +-- +2.9.0 + 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 deleted file mode 100644 index f3202e1..0000000 --- a/recipes-devtools/clang/clang/0001-llvm-triplet-Add-musl-support.patch +++ /dev/null @@ -1,109 +0,0 @@ -From 3ae67407feefed7c7a5dc3d3205aa6b2e4e0f9c1 Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Wed, 30 Mar 2016 19:55:41 -0700 -Subject: [PATCH 1/5] 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 5e35e8e..f4e4ee0 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..2046613 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 MUSLEABIHF: return "musleabihf"; -+ case MUSLEABI: return "musleabi"; -+ case MUSLX32: return "muslx32"; -+ case MUSL: return "musl"; - 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("musleabihf", Triple::MUSLEABIHF) -+ .StartsWith("musleabi", Triple::MUSLEABI) -+ .StartsWith("muslx32", Triple::MUSLX32) -+ .StartsWith("musl", Triple::MUSL) - .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 1eeb622..6f3cbd8 100644 ---- a/lib/Target/ARM/ARMSubtarget.h -+++ b/lib/Target/ARM/ARMSubtarget.h -@@ -428,8 +428,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(); - } -@@ -437,6 +439,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 b2b6f3a..10cbbe9 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.3 - 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 index fcd1ee8..fc208d1 100644 --- 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 @@ -1,4 +1,4 @@ -From 5dd25c4c9ed04093361569b63a96a8b1cb8b51f9 Mon Sep 17 00:00:00 2001 +From 73106ac819c30f7f86dad3b459693cd11dd54963 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sat, 21 May 2016 21:52:36 -0700 Subject: [PATCH 2/4] clang: driver: Use /lib for ldso on OE @@ -15,10 +15,10 @@ Signed-off-by: Khem Raj 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp -index 737cd02..1b4c469 100644 +index cf3b4ae..1196eac 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp -@@ -9162,24 +9162,24 @@ static std::string getLinuxDynamicLinker(const ArgList &Args, +@@ -9191,24 +9191,24 @@ static std::string getLinuxDynamicLinker(const ArgList &Args, case llvm::Triple::ppc: return "/lib/ld.so.1"; case llvm::Triple::ppc64: @@ -51,5 +51,5 @@ index 737cd02..1b4c469 100644 } -- -2.8.3 +2.9.0 diff --git a/recipes-devtools/clang/clang/0002-llvm-Do-not-assume-linux-glibc.patch b/recipes-devtools/clang/clang/0002-llvm-Do-not-assume-linux-glibc.patch new file mode 100644 index 0000000..ae33470 --- /dev/null +++ b/recipes-devtools/clang/clang/0002-llvm-Do-not-assume-linux-glibc.patch @@ -0,0 +1,28 @@ +From 267078b86f351f2806604a74a05cf02e4ba0a7b8 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Tue, 15 Mar 2016 05:26:47 +0000 +Subject: [PATCH 2/3] 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.9.0 + 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 deleted file mode 100644 index f7d21f5..0000000 --- a/recipes-devtools/clang/clang/0002-llvm-Remove-CMAKE_CROSSCOMPILING-so-it-can-cross-com.patch +++ /dev/null @@ -1,34 +0,0 @@ -From dc8cd377118609209b864b4cfc64e3acfef25d67 Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Fri, 15 May 2015 12:13:17 -0700 -Subject: [PATCH 2/5] 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.3 - 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 index a579f52..5146572 100644 --- 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 @@ -1,4 +1,4 @@ -From 965c0c46fcec3580829a9d28c6e1af7fea5def87 Mon Sep 17 00:00:00 2001 +From cab3a8b1785fabe9c2278c98d401c2eee027d044 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 @@ -13,12 +13,12 @@ Signed-off-by: Khem Raj 1 file changed, 7 insertions(+) diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp -index 1b4c469..b850b0f 100644 +index 1196eac..9582af9 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp -@@ -9463,6 +9463,13 @@ void gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA, - - CmdArgs.push_back("-lc"); +@@ -9503,6 +9503,13 @@ void gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA, + if (IsIAMCU) + CmdArgs.push_back("-lgloss"); + if (ToolChain.getTriple().isLinuxMuslEnvironment() && + (Args.hasArg(options::OPT_fstack_protector) || @@ -31,5 +31,5 @@ index 1b4c469..b850b0f 100644 CmdArgs.push_back("--end-group"); else -- -2.8.3 +2.9.0 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 deleted file mode 100644 index dfdb30c..0000000 --- a/recipes-devtools/clang/clang/0003-llvm-Do-not-assume-linux-glibc.patch +++ /dev/null @@ -1,28 +0,0 @@ -From ebd6f77cfd58fbdcde4efb378ee1690d2a38579d Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Tue, 15 Mar 2016 05:26:47 +0000 -Subject: [PATCH 3/5] 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.3 - diff --git a/recipes-devtools/clang/clang/0003-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch b/recipes-devtools/clang/clang/0003-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch new file mode 100644 index 0000000..289fe7a --- /dev/null +++ b/recipes-devtools/clang/clang/0003-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch @@ -0,0 +1,91 @@ +From d9873239ee2dc198c7d2a1225d71a6d1ca5aa283 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sat, 21 May 2016 00:33:20 +0000 +Subject: [PATCH 3/3] llvm: TargetLibraryInfo: Undefine libc functions if they + are macros + +musl defines some functions as macros and not inline functions +if this is the case then make sure to undefine them + +Signed-off-by: Khem Raj +--- + include/llvm/Analysis/TargetLibraryInfo.def | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +diff --git a/include/llvm/Analysis/TargetLibraryInfo.def b/include/llvm/Analysis/TargetLibraryInfo.def +index b2a593d..327894c 100644 +--- a/include/llvm/Analysis/TargetLibraryInfo.def ++++ b/include/llvm/Analysis/TargetLibraryInfo.def +@@ -531,6 +531,9 @@ TLI_DEFINE_STRING_INTERNAL("fmodl") + TLI_DEFINE_ENUM_INTERNAL(fopen) + TLI_DEFINE_STRING_INTERNAL("fopen") + /// FILE *fopen64(const char *filename, const char *opentype) ++#ifdef fopen64 ++#undef fopen64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(fopen64) + TLI_DEFINE_STRING_INTERNAL("fopen64") + /// int fprintf(FILE *stream, const char *format, ...); +@@ -566,6 +569,9 @@ TLI_DEFINE_STRING_INTERNAL("fseek") + /// int fseeko(FILE *stream, off_t offset, int whence); + TLI_DEFINE_ENUM_INTERNAL(fseeko) + TLI_DEFINE_STRING_INTERNAL("fseeko") ++#ifdef fseeko64 ++#undef fseeko64 ++#endif + /// int fseeko64(FILE *stream, off64_t offset, int whence) + TLI_DEFINE_ENUM_INTERNAL(fseeko64) + TLI_DEFINE_STRING_INTERNAL("fseeko64") +@@ -576,6 +582,9 @@ TLI_DEFINE_STRING_INTERNAL("fsetpos") + TLI_DEFINE_ENUM_INTERNAL(fstat) + TLI_DEFINE_STRING_INTERNAL("fstat") + /// int fstat64(int filedes, struct stat64 *buf) ++#ifdef fstat64 ++#undef fstat64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(fstat64) + TLI_DEFINE_STRING_INTERNAL("fstat64") + /// int fstatvfs(int fildes, struct statvfs *buf); +@@ -591,6 +600,9 @@ TLI_DEFINE_STRING_INTERNAL("ftell") + TLI_DEFINE_ENUM_INTERNAL(ftello) + TLI_DEFINE_STRING_INTERNAL("ftello") + /// off64_t ftello64(FILE *stream) ++#ifdef ftello64 ++#undef ftello64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(ftello64) + TLI_DEFINE_STRING_INTERNAL("ftello64") + /// int ftrylockfile(FILE *file); +@@ -711,6 +723,9 @@ TLI_DEFINE_STRING_INTERNAL("logl") + TLI_DEFINE_ENUM_INTERNAL(lstat) + TLI_DEFINE_STRING_INTERNAL("lstat") + /// int lstat64(const char *path, struct stat64 *buf); ++#ifdef lstat64 ++#undef lstat64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(lstat64) + TLI_DEFINE_STRING_INTERNAL("lstat64") + /// void *malloc(size_t size); +@@ -927,6 +942,9 @@ TLI_DEFINE_STRING_INTERNAL("sscanf") + TLI_DEFINE_ENUM_INTERNAL(stat) + TLI_DEFINE_STRING_INTERNAL("stat") + /// int stat64(const char *path, struct stat64 *buf); ++#ifdef stat64 ++#undef stat64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(stat64) + TLI_DEFINE_STRING_INTERNAL("stat64") + /// int statvfs(const char *path, struct statvfs *buf); +@@ -1056,6 +1074,9 @@ TLI_DEFINE_STRING_INTERNAL("times") + TLI_DEFINE_ENUM_INTERNAL(tmpfile) + TLI_DEFINE_STRING_INTERNAL("tmpfile") + /// FILE *tmpfile64(void) ++#ifdef tmpfile64 ++#undef tmpfile64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(tmpfile64) + TLI_DEFINE_STRING_INTERNAL("tmpfile64") + /// int toascii(int c); +-- +2.9.0 + 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 index 9a1c912..642d988 100644 --- 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 @@ -1,4 +1,4 @@ -From 3c3627dbd4358c8e97c95a614e63803cc9048fa6 Mon Sep 17 00:00:00 2001 +From 34c294478178a0dcf028a037b5297e21ba91f501 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 @@ -9,7 +9,7 @@ Signed-off-by: Khem Raj 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp -index 134b84b..159f5d8 100644 +index 0292e1d..67f70ed 100644 --- a/lib/Basic/Targets.cpp +++ b/lib/Basic/Targets.cpp @@ -1585,7 +1585,8 @@ public: @@ -23,5 +23,5 @@ index 134b84b..159f5d8 100644 LongDoubleFormat = &llvm::APFloat::IEEEdouble; } -- -2.8.3 +2.9.0 diff --git a/recipes-devtools/clang/clang/0004-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch b/recipes-devtools/clang/clang/0004-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch deleted file mode 100644 index bb928ed..0000000 --- a/recipes-devtools/clang/clang/0004-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch +++ /dev/null @@ -1,91 +0,0 @@ -From b466434ed4abbf43018bc4dbeb2ae0b3d0bd59f8 Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Sat, 21 May 2016 00:33:20 +0000 -Subject: [PATCH 4/5] llvm: TargetLibraryInfo: Undefine libc functions if they - are macros - -musl defines some functions as macros and not inline functions -if this is the case then make sure to undefine them - -Signed-off-by: Khem Raj ---- - include/llvm/Analysis/TargetLibraryInfo.def | 21 +++++++++++++++++++++ - 1 file changed, 21 insertions(+) - -diff --git a/include/llvm/Analysis/TargetLibraryInfo.def b/include/llvm/Analysis/TargetLibraryInfo.def -index b2a593d..327894c 100644 ---- a/include/llvm/Analysis/TargetLibraryInfo.def -+++ b/include/llvm/Analysis/TargetLibraryInfo.def -@@ -531,6 +531,9 @@ TLI_DEFINE_STRING_INTERNAL("fmodl") - TLI_DEFINE_ENUM_INTERNAL(fopen) - TLI_DEFINE_STRING_INTERNAL("fopen") - /// FILE *fopen64(const char *filename, const char *opentype) -+#ifdef fopen64 -+#undef fopen64 -+#endif - TLI_DEFINE_ENUM_INTERNAL(fopen64) - TLI_DEFINE_STRING_INTERNAL("fopen64") - /// int fprintf(FILE *stream, const char *format, ...); -@@ -566,6 +569,9 @@ TLI_DEFINE_STRING_INTERNAL("fseek") - /// int fseeko(FILE *stream, off_t offset, int whence); - TLI_DEFINE_ENUM_INTERNAL(fseeko) - TLI_DEFINE_STRING_INTERNAL("fseeko") -+#ifdef fseeko64 -+#undef fseeko64 -+#endif - /// int fseeko64(FILE *stream, off64_t offset, int whence) - TLI_DEFINE_ENUM_INTERNAL(fseeko64) - TLI_DEFINE_STRING_INTERNAL("fseeko64") -@@ -576,6 +582,9 @@ TLI_DEFINE_STRING_INTERNAL("fsetpos") - TLI_DEFINE_ENUM_INTERNAL(fstat) - TLI_DEFINE_STRING_INTERNAL("fstat") - /// int fstat64(int filedes, struct stat64 *buf) -+#ifdef fstat64 -+#undef fstat64 -+#endif - TLI_DEFINE_ENUM_INTERNAL(fstat64) - TLI_DEFINE_STRING_INTERNAL("fstat64") - /// int fstatvfs(int fildes, struct statvfs *buf); -@@ -591,6 +600,9 @@ TLI_DEFINE_STRING_INTERNAL("ftell") - TLI_DEFINE_ENUM_INTERNAL(ftello) - TLI_DEFINE_STRING_INTERNAL("ftello") - /// off64_t ftello64(FILE *stream) -+#ifdef ftello64 -+#undef ftello64 -+#endif - TLI_DEFINE_ENUM_INTERNAL(ftello64) - TLI_DEFINE_STRING_INTERNAL("ftello64") - /// int ftrylockfile(FILE *file); -@@ -711,6 +723,9 @@ TLI_DEFINE_STRING_INTERNAL("logl") - TLI_DEFINE_ENUM_INTERNAL(lstat) - TLI_DEFINE_STRING_INTERNAL("lstat") - /// int lstat64(const char *path, struct stat64 *buf); -+#ifdef lstat64 -+#undef lstat64 -+#endif - TLI_DEFINE_ENUM_INTERNAL(lstat64) - TLI_DEFINE_STRING_INTERNAL("lstat64") - /// void *malloc(size_t size); -@@ -927,6 +942,9 @@ TLI_DEFINE_STRING_INTERNAL("sscanf") - TLI_DEFINE_ENUM_INTERNAL(stat) - TLI_DEFINE_STRING_INTERNAL("stat") - /// int stat64(const char *path, struct stat64 *buf); -+#ifdef stat64 -+#undef stat64 -+#endif - TLI_DEFINE_ENUM_INTERNAL(stat64) - TLI_DEFINE_STRING_INTERNAL("stat64") - /// int statvfs(const char *path, struct statvfs *buf); -@@ -1056,6 +1074,9 @@ TLI_DEFINE_STRING_INTERNAL("times") - TLI_DEFINE_ENUM_INTERNAL(tmpfile) - TLI_DEFINE_STRING_INTERNAL("tmpfile") - /// FILE *tmpfile64(void) -+#ifdef tmpfile64 -+#undef tmpfile64 -+#endif - TLI_DEFINE_ENUM_INTERNAL(tmpfile64) - TLI_DEFINE_STRING_INTERNAL("tmpfile64") - /// int toascii(int c); --- -2.8.3 - diff --git a/recipes-devtools/clang/clang/0005-ARMTargetLowering-Handle-MUSLEABI-to-fix-AEABI-helpe.patch b/recipes-devtools/clang/clang/0005-ARMTargetLowering-Handle-MUSLEABI-to-fix-AEABI-helpe.patch deleted file mode 100644 index c34bd4e..0000000 --- a/recipes-devtools/clang/clang/0005-ARMTargetLowering-Handle-MUSLEABI-to-fix-AEABI-helpe.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 694404d57821bd3da38cfcbaa3123c88d1f071b1 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Dominic=20Sacr=C3=A9?= -Date: Tue, 14 Jun 2016 09:50:21 +0200 -Subject: [PATCH 5/5] ARMTargetLowering: Handle MUSLEABI to fix AEABI helper - calling convention -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -AEABI floating point helper functions always use AAPCS (soft-float) -calling convention. Recognize MUSLEABI targets to fix the code generated -for musl-based hard-float builds. - -Signed-off-by: Dominic Sacré ---- - lib/Target/ARM/ARMISelLowering.cpp | 2 +- - lib/Target/ARM/ARMSubtarget.h | 5 +++++ - 2 files changed, 6 insertions(+), 1 deletion(-) - -diff --git a/lib/Target/ARM/ARMISelLowering.cpp b/lib/Target/ARM/ARMISelLowering.cpp -index 55de31b..32df88c 100644 ---- a/lib/Target/ARM/ARMISelLowering.cpp -+++ b/lib/Target/ARM/ARMISelLowering.cpp -@@ -255,7 +255,7 @@ ARMTargetLowering::ARMTargetLowering(const TargetMachine &TM, - // RTLIB - if (Subtarget->isAAPCS_ABI() && - (Subtarget->isTargetAEABI() || Subtarget->isTargetGNUAEABI() || -- Subtarget->isTargetAndroid())) { -+ Subtarget->isTargetAndroid() || Subtarget->isTargetMUSLEABI())) { - static const struct { - const RTLIB::Libcall Op; - const char * const Name; -diff --git a/lib/Target/ARM/ARMSubtarget.h b/lib/Target/ARM/ARMSubtarget.h -index 6f3cbd8..00f21fd 100644 ---- a/lib/Target/ARM/ARMSubtarget.h -+++ b/lib/Target/ARM/ARMSubtarget.h -@@ -422,6 +422,11 @@ public: - TargetTriple.getEnvironment() == Triple::GNUEABIHF) && - !isTargetDarwin() && !isTargetWindows(); - } -+ bool isTargetMUSLEABI() const { -+ return (TargetTriple.getEnvironment() == Triple::MUSLEABI || -+ TargetTriple.getEnvironment() == Triple::MUSLEABIHF) && -+ !isTargetDarwin() && !isTargetWindows(); -+ } - - // ARM Targets that support EHABI exception handling standard - // Darwin uses SjLj. Other targets might need more checks. --- -2.8.3 - diff --git a/recipes-devtools/clang/clang_git.bb b/recipes-devtools/clang/clang_git.bb index d0fb155..90ddbc6 100644 --- a/recipes-devtools/clang/clang_git.bb +++ b/recipes-devtools/clang/clang_git.bb @@ -15,11 +15,9 @@ 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-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-TargetLibraryInfo-Undefine-libc-functions-if-th.patch \ - file://0005-ARMTargetLowering-Handle-MUSLEABI-to-fix-AEABI-helpe.patch \ + file://0001-llvm-Remove-CMAKE_CROSSCOMPILING-so-it-can-cross-com.patch \ + file://0002-llvm-Do-not-assume-linux-glibc.patch \ + file://0003-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.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 \ -- cgit v1.2.3-54-g00ecf