diff --git a/debian/changelog b/debian/changelog index de910670..e4a2364f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,8 @@ llvm-toolchain-5.0 (1:5.0~+rc2-2) unstable; urgency=medium * Link LLDB with -latomic on powerpcspe (Closes: #872267) + * Take an ugly workaround to build with gcc 7 + See https://bugs.llvm.org/show_bug.cgi?id=34140 -- Sylvestre Ledru Wed, 16 Aug 2017 09:57:56 +0200 diff --git a/debian/control b/debian/control index 65d96aad..5231d68e 100644 --- a/debian/control +++ b/debian/control @@ -13,8 +13,7 @@ Build-Depends: debhelper (>= 9.0), flex, bison, dejagnu, tcl, expect, ocaml-findlib [amd64 arm64 armel armhf i386], libctypes-ocaml-dev [amd64 arm64 armel armhf i386], dh-ocaml [amd64 arm64 armel armhf i386], - g++-multilib [amd64 i386 kfreebsd-amd64 mips mips64 mips64el mipsel powerpc ppc64 s390 s390x sparc sparc64 x32], - g++-6 + g++-multilib [amd64 i386 kfreebsd-amd64 mips mips64 mips64el mipsel powerpc ppc64 s390 s390x sparc sparc64 x32] Build-Conflicts: oprofile, ocaml, libllvm-3.4-ocaml-dev, libllvm-3.5-ocaml-dev, libllvm-3.8-ocaml-dev, libllvm-3.9-ocaml-dev Standards-Version: 4.0.0 diff --git a/debian/patches/gcc-7.1-workaround.diff b/debian/patches/gcc-7.1-workaround.diff new file mode 100644 index 00000000..da0043df --- /dev/null +++ b/debian/patches/gcc-7.1-workaround.diff @@ -0,0 +1,79 @@ +Index: clang/include/clang/AST/DeclObjC.h +=================================================================== +--- clang.orig/include/clang/AST/DeclObjC.h (revision 311595) ++++ clang/include/clang/AST/DeclObjC.h (working copy) +@@ -413,12 +413,12 @@ + /// Determines the family of this method. + ObjCMethodFamily getMethodFamily() const; + +- bool isInstanceMethod() const { return IsInstance; } ++ bool isInstanceMethod() const LLVM_ATTRIBUTE_USED { return IsInstance; } + void setInstanceMethod(bool isInst) { IsInstance = isInst; } + bool isVariadic() const { return IsVariadic; } + void setVariadic(bool isVar) { IsVariadic = isVar; } + +- bool isClassMethod() const { return !IsInstance; } ++ bool isClassMethod() const LLVM_ATTRIBUTE_USED { return !IsInstance; } + + bool isPropertyAccessor() const { return IsPropertyAccessor; } + void setPropertyAccessor(bool isAccessor) { IsPropertyAccessor = isAccessor; } +@@ -832,8 +832,8 @@ + (OBJC_PR_retain | OBJC_PR_strong | OBJC_PR_copy)); + } + +- bool isInstanceProperty() const { return !isClassProperty(); } +- bool isClassProperty() const { return PropertyAttributes & OBJC_PR_class; } ++ bool isInstanceProperty() const LLVM_ATTRIBUTE_USED { return !isClassProperty(); } ++ bool isClassProperty() const LLVM_ATTRIBUTE_USED { return PropertyAttributes & OBJC_PR_class; } + ObjCPropertyQueryKind getQueryKind() const { + return isClassProperty() ? ObjCPropertyQueryKind::OBJC_PR_query_class : + ObjCPropertyQueryKind::OBJC_PR_query_instance; +@@ -1562,7 +1562,7 @@ + /// \brief Test whether the given category is visible. + /// + /// Used in the \c visible_categories_iterator. +- static bool isVisibleCategory(ObjCCategoryDecl *Cat); ++ static bool isVisibleCategory(ObjCCategoryDecl *Cat) LLVM_ATTRIBUTE_USED; + + public: + /// \brief Iterator that walks over the list of categories and extensions +@@ -1598,7 +1598,7 @@ + /// \brief Test whether the given category... is a category. + /// + /// Used in the \c known_categories_iterator. +- static bool isKnownCategory(ObjCCategoryDecl *) { return true; } ++ static bool isKnownCategory(ObjCCategoryDecl *) LLVM_ATTRIBUTE_USED { return true; } + + public: + /// \brief Iterator that walks over all of the known categories and +@@ -1632,7 +1632,7 @@ + /// \brief Test whether the given category is a visible extension. + /// + /// Used in the \c visible_extensions_iterator. +- static bool isVisibleExtension(ObjCCategoryDecl *Cat); ++ static bool isVisibleExtension(ObjCCategoryDecl *Cat) LLVM_ATTRIBUTE_USED; + + public: + /// \brief Iterator that walks over all of the visible extensions, skipping +@@ -1668,7 +1668,7 @@ + /// \brief Test whether the given category is an extension. + /// + /// Used in the \c known_extensions_iterator. +- static bool isKnownExtension(ObjCCategoryDecl *Cat); ++ static bool isKnownExtension(ObjCCategoryDecl *Cat) LLVM_ATTRIBUTE_USED; + + public: + /// \brief Iterator that walks over all of the known extensions. +Index: clang/include/clang/ASTMatchers/ASTMatchersMacros.h +=================================================================== +--- clang.orig/include/clang/ASTMatchers/ASTMatchersMacros.h (revision 311595) ++++ clang/include/clang/ASTMatchers/ASTMatchersMacros.h (working copy) +@@ -54,7 +54,7 @@ + /// defines a zero parameter function named DefineMatcher() that returns a + /// ReturnType object. + #define AST_MATCHER_FUNCTION(ReturnType, DefineMatcher) \ +- inline ReturnType DefineMatcher##_getInstance(); \ ++ inline ReturnType DefineMatcher##_getInstance() LLVM_ATTRIBUTE_USED; \ + inline ReturnType DefineMatcher() { \ + return ::clang::ast_matchers::internal::MemoizedMatcher< \ + ReturnType, DefineMatcher##_getInstance>::getInstance(); \ diff --git a/debian/patches/series b/debian/patches/series index 58de66c8..1757c777 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -46,3 +46,4 @@ disable-path-test-failing.diff silent-amd-tet.diff disable-error-xray.diff lldb-disable-swig-error.diff +gcc-7.1-workaround.diff diff --git a/debian/rules b/debian/rules index 89276451..6b37fe03 100755 --- a/debian/rules +++ b/debian/rules @@ -6,7 +6,7 @@ DEB_INST := $(CURDIR)/debian/tmp/ GXX_VERSIONED_PACKAGE := $(shell dpkg-query -W -f '$${Depends}' g++ | grep -o 'g++-[0-9][0-9.]*' | tail -n1 ) GXX_VERSIONED_EXECUTABLE := $(shell dpkg -L $(GXX_VERSIONED_PACKAGE) | grep '/usr/bin/g++-[0-9][0-9.]*' | xargs ls -d | tail -n1 ) GCC_VERSION := $(subst /usr/bin/g++-,,$(GXX_VERSIONED_EXECUTABLE)) -GCC_VERSION := 6 + LLVM_VERSION := 5.0 LLVM_VERSION_FULL := $(LLVM_VERSION).0