From ec37cd0c8a11c87096c8c652b2057583554a8671 Mon Sep 17 00:00:00 2001 From: John Paul Adrian Glaubitz Date: Fri, 14 Sep 2018 09:25:23 +0200 Subject: [PATCH 1/5] Add patch to fix missing MultiArch include dir on powerpcspe --- debian/changelog | 8 ++++++++ .../powerpcspe-add-missing-include-path.diff | 18 ++++++++++++++++++ debian/patches/series | 1 + 3 files changed, 27 insertions(+) create mode 100644 debian/patches/powerpcspe-add-missing-include-path.diff diff --git a/debian/changelog b/debian/changelog index 88245aec..ccea47eb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +llvm-toolchain-6.0 (1:6.0.1-9) UNRELEASED; urgency=medium + + [ John Paul Adrian Glaubitz ] + * Add patch to fix missing MultiArch include dir + on powerpcspe (Closes: #908791) + + -- John Paul Adrian Glaubitz Fri, 14 Sep 2018 09:24:02 +0200 + llvm-toolchain-6.0 (1:6.0.1-8) unstable; urgency=medium [ John Paul Adrian Glaubitz ] diff --git a/debian/patches/powerpcspe-add-missing-include-path.diff b/debian/patches/powerpcspe-add-missing-include-path.diff new file mode 100644 index 00000000..8ae5dbda --- /dev/null +++ b/debian/patches/powerpcspe-add-missing-include-path.diff @@ -0,0 +1,18 @@ +Description: Fix missing include paths on powerpcspe +Author: John Paul Adrian Glaubitz +Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=908791 +Forwarded: https://reviews.llvm.org/D52066 +Last-Update: 2018-09-13 + +--- llvm-toolchain-6.0-6.0.1.orig/clang/lib/Driver/ToolChains/Linux.cpp ++++ llvm-toolchain-6.0-6.0.1/clang/lib/Driver/ToolChains/Linux.cpp +@@ -629,7 +629,8 @@ void Linux::AddClangSystemIncludeArgs(co + "/usr/include/mips64el-linux-gnu", + "/usr/include/mips64el-linux-gnuabi64"}; + const StringRef PPCMultiarchIncludeDirs[] = { +- "/usr/include/powerpc-linux-gnu"}; ++ "/usr/include/powerpc-linux-gnu", ++ "/usr/include/powerpc-linux-gnuspe"}; + const StringRef PPC64MultiarchIncludeDirs[] = { + "/usr/include/powerpc64-linux-gnu"}; + const StringRef PPC64LEMultiarchIncludeDirs[] = { diff --git a/debian/patches/series b/debian/patches/series index ea72f347..ef521590 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -67,3 +67,4 @@ D51335-alignment-issue.diff # D51639-optim-issue.diff rL338481-cherry-pick-really-subtle-miscompile.diff disable-sse2-old-x86.diff +powerpcspe-add-missing-include-path.diff From 83ecf1cb44e5cc98e10d188f2f205604bb8b6014 Mon Sep 17 00:00:00 2001 From: Gianfranco Costamagna Date: Fri, 14 Sep 2018 15:38:02 +0200 Subject: [PATCH 2/5] Fix arch:all build --- debian/rules | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/debian/rules b/debian/rules index ac61565b..a20bfc8a 100755 --- a/debian/rules +++ b/debian/rules @@ -518,7 +518,12 @@ endif override_dh_install: # cp $(TARGET_BUILD)/lib/libLLVM-$(LLVM_VERSION).so $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/libLLVM-$(LLVM_VERSION).so.$(SONAME_EXT) ifeq (${POLLY_ENABLE},yes) +# only for arch:any builds +ifneq (,$(filter libclang-common-$(LLVM_VERSION)-dev, $(shell dh_listpackages))) dh_install -p libclang-common-$(LLVM_VERSION)-dev usr/lib/llvm-$(LLVM_VERSION)/lib/cmake/polly/*.cmake usr/lib/llvm-$(LLVM_VERSION)/lib/cmake/polly +else + rm -rf $(CURDIR)/debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib/cmake/polly/*.cmake +endif endif dh_install --fail-missing From 397214bd0953f297cda44c70b4cd4780ba3bcabb Mon Sep 17 00:00:00 2001 From: Gianfranco Costamagna Date: Fri, 14 Sep 2018 15:38:07 +0200 Subject: [PATCH 3/5] Update changelog, upload to unstable --- debian/changelog | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index ccea47eb..0e76b80a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,12 @@ -llvm-toolchain-6.0 (1:6.0.1-9) UNRELEASED; urgency=medium +llvm-toolchain-6.0 (1:6.0.1-9) unstable; urgency=medium [ John Paul Adrian Glaubitz ] * Add patch to fix missing MultiArch include dir on powerpcspe (Closes: #908791) + [ Gianfranco Costamagna ] + * Force polly cmake removal on arch:all because of --fail-missing + -- John Paul Adrian Glaubitz Fri, 14 Sep 2018 09:24:02 +0200 llvm-toolchain-6.0 (1:6.0.1-8) unstable; urgency=medium From 004015a32570625ad5b48ae6e2b02da7842c1372 Mon Sep 17 00:00:00 2001 From: John Paul Adrian Glaubitz Date: Sat, 15 Sep 2018 09:35:43 +0200 Subject: [PATCH 4/5] Add patch to fix missing include and library paths on x32 --- debian/changelog | 7 ++ debian/patches/series | 1 + .../patches/x32-fix-driver-search-paths.diff | 80 +++++++++++++++++++ 3 files changed, 88 insertions(+) create mode 100644 debian/patches/x32-fix-driver-search-paths.diff diff --git a/debian/changelog b/debian/changelog index 0e76b80a..61d6d8c4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +llvm-toolchain-6.0 (1:6.0.1-10) UNRELEASED; urgency=medium + + [ John Paul Adrian Glaubitz ] + * Add patch to fix missing include and library paths on x32 + + -- John Paul Adrian Glaubitz Sat, 15 Sep 2018 09:35:13 +0200 + llvm-toolchain-6.0 (1:6.0.1-9) unstable; urgency=medium [ John Paul Adrian Glaubitz ] diff --git a/debian/patches/series b/debian/patches/series index ef521590..793394e9 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -68,3 +68,4 @@ D51335-alignment-issue.diff rL338481-cherry-pick-really-subtle-miscompile.diff disable-sse2-old-x86.diff powerpcspe-add-missing-include-path.diff +x32-fix-driver-search-paths.diff diff --git a/debian/patches/x32-fix-driver-search-paths.diff b/debian/patches/x32-fix-driver-search-paths.diff new file mode 100644 index 00000000..03cf5a2b --- /dev/null +++ b/debian/patches/x32-fix-driver-search-paths.diff @@ -0,0 +1,80 @@ +Description: Fix missing include and library paths on x32 +Author: James Clarke +Forwarded: https://reviews.llvm.org/D43630 +Last-Update: 2018-09-15 + +--- llvm-toolchain-6.0-6.0.1.orig/clang/lib/Driver/ToolChains/Gnu.cpp ++++ llvm-toolchain-6.0-6.0.1/clang/lib/Driver/ToolChains/Gnu.cpp +@@ -1737,7 +1737,10 @@ bool Generic_GCC::GCCInstallationDetecto + "x86_64-manbo-linux-gnu", "x86_64-linux-gnu", + "x86_64-slackware-linux", "x86_64-linux-android", + "x86_64-unknown-linux"}; +- static const char *const X32LibDirs[] = {"/libx32"}; ++ static const char *const X32LibDirs[] = {"/libx32", "/lib"}; ++ static const char *const X32Triples[] = { ++ "x86_64-linux-gnux32", "x86_64-unknown-linux-gnux32", ++ "x86_64-pc-linux-gnux32"}; + static const char *const X86LibDirs[] = {"/lib32", "/lib"}; + static const char *const X86Triples[] = { + "i686-linux-gnu", "i686-pc-linux-gnu", "i486-linux-gnu", +@@ -1842,14 +1845,16 @@ bool Generic_GCC::GCCInstallationDetecto + } + break; + case llvm::Triple::x86_64: +- LibDirs.append(begin(X86_64LibDirs), end(X86_64LibDirs)); +- TripleAliases.append(begin(X86_64Triples), end(X86_64Triples)); + // x32 is always available when x86_64 is available, so adding it as + // secondary arch with x86_64 triples + if (TargetTriple.getEnvironment() == llvm::Triple::GNUX32) { +- BiarchLibDirs.append(begin(X32LibDirs), end(X32LibDirs)); ++ LibDirs.append(begin(X32LibDirs), end(X32LibDirs)); ++ TripleAliases.append(begin(X32Triples), end(X32Triples)); ++ BiarchLibDirs.append(begin(X86_64LibDirs), end(X86_64LibDirs)); + BiarchTripleAliases.append(begin(X86_64Triples), end(X86_64Triples)); + } else { ++ LibDirs.append(begin(X86_64LibDirs), end(X86_64LibDirs)); ++ TripleAliases.append(begin(X86_64Triples), end(X86_64Triples)); + BiarchLibDirs.append(begin(X86LibDirs), end(X86LibDirs)); + BiarchTripleAliases.append(begin(X86Triples), end(X86Triples)); + } +--- llvm-toolchain-6.0-6.0.1.orig/clang/lib/Driver/ToolChains/Linux.cpp ++++ llvm-toolchain-6.0-6.0.1/clang/lib/Driver/ToolChains/Linux.cpp +@@ -77,10 +77,13 @@ static std::string getMultiarchTriple(co + return "i386-linux-gnu"; + break; + case llvm::Triple::x86_64: +- // We don't want this for x32, otherwise it will match x86_64 libs +- if (TargetEnvironment != llvm::Triple::GNUX32 && +- D.getVFS().exists(SysRoot + "/lib/x86_64-linux-gnu")) +- return "x86_64-linux-gnu"; ++ if (TargetEnvironment == llvm::Triple::GNUX32) { ++ if (D.getVFS().exists(SysRoot + "/lib/x86_64-linux-gnux32")) ++ return "x86_64-linux-gnux32"; ++ } else { ++ if (D.getVFS().exists(SysRoot + "/lib/x86_64-linux-gnu")) ++ return "x86_64-linux-gnu"; ++ } + break; + case llvm::Triple::aarch64: + if (D.getVFS().exists(SysRoot + "/lib/aarch64-linux-gnu")) +@@ -597,6 +600,8 @@ void Linux::AddClangSystemIncludeArgs(co + // in use in any released version of Debian, so we should consider + // removing them. + "/usr/include/i686-linux-gnu/64", "/usr/include/i486-linux-gnu/64"}; ++ const StringRef X32MultiarchIncludeDirs[] = { ++ "/usr/include/x86_64-linux-gnux32"}; + const StringRef X86MultiarchIncludeDirs[] = { + "/usr/include/i386-linux-gnu", + +@@ -639,7 +644,10 @@ void Linux::AddClangSystemIncludeArgs(co + ArrayRef MultiarchIncludeDirs; + switch (getTriple().getArch()) { + case llvm::Triple::x86_64: +- MultiarchIncludeDirs = X86_64MultiarchIncludeDirs; ++ if (getTriple().getEnvironment() == llvm::Triple::GNUX32) ++ MultiarchIncludeDirs = X32MultiarchIncludeDirs; ++ else ++ MultiarchIncludeDirs = X86_64MultiarchIncludeDirs; + break; + case llvm::Triple::x86: + MultiarchIncludeDirs = X86MultiarchIncludeDirs; From 21d3048d5f1a69bd45c85254b69005792af0f1d9 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 18 Sep 2018 21:37:56 +0200 Subject: [PATCH 5/5] On old Debian & Ubuntu, removing the files is necessary --- debian/rules | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debian/rules b/debian/rules index a20bfc8a..a7b111d5 100755 --- a/debian/rules +++ b/debian/rules @@ -521,6 +521,8 @@ ifeq (${POLLY_ENABLE},yes) # only for arch:any builds ifneq (,$(filter libclang-common-$(LLVM_VERSION)-dev, $(shell dh_listpackages))) dh_install -p libclang-common-$(LLVM_VERSION)-dev usr/lib/llvm-$(LLVM_VERSION)/lib/cmake/polly/*.cmake usr/lib/llvm-$(LLVM_VERSION)/lib/cmake/polly +# On old Debian & Ubuntu, removing the files is necessary + rm debian/tmp/usr/lib/llvm-$(VERSION)/lib/cmake/polly/*.cmake else rm -rf $(CURDIR)/debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib/cmake/polly/*.cmake endif