The package rpms/clang9.0.git has added or updated architecture specific content in its spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s): https://src.fedoraproject.org/cgit/rpms/clang9.0.git/commit/?id=06583a25fd59....
Change: +%ifarch s390x i686 ppc64le %{arm}
Thanks.
Full change: ============
commit 06583a25fd5990b59c8bbee52c6bd680c791cac9 Author: serge-sans-paille sguelton@redhat.com Date: Thu Feb 6 10:15:17 2020 +0000
Initial push
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5188c3a --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/clang-9.0.1.src.tar.xz +/clang-tools-extra-9.0.1.src.tar.xz diff --git a/0001-BPF-annotate-DIType-metadata-for-builtin-preseve_arr.patch b/0001-BPF-annotate-DIType-metadata-for-builtin-preseve_arr.patch new file mode 100644 index 0000000..2062f00 --- /dev/null +++ b/0001-BPF-annotate-DIType-metadata-for-builtin-preseve_arr.patch @@ -0,0 +1,204 @@ +From 5eb29c8b23b652b8dd8988621f5c91191b13ffe3 Mon Sep 17 00:00:00 2001 +From: Yonghong Song yhs@fb.com +Date: Fri, 2 Aug 2019 21:28:28 +0000 +Subject: [PATCH] [BPF] annotate DIType metadata for builtin + preseve_array_access_index() + +Previously, debuginfo types are annotated to +IR builtin preserve_struct_access_index() and +preserve_union_access_index(), but not +preserve_array_access_index(). The debug info +is useful to identify the root type name which +later will be used for type comparison. + +For user access without explicit type conversions, +the previous scheme works as we can ignore intermediate +compiler generated type conversions (e.g., from union types to +union members) and still generate correct access index string. + +The issue comes with user explicit type conversions, e.g., +converting an array to a structure like below: + struct t { int a; char b[40]; }; + struct p { int c; int d; }; + struct t *var = ...; + ... __builtin_preserve_access_index(&(((struct p *)&(var->b[0]))->d)) ... +Although BPF backend can derive the type of &(var->b[0]), +explicit type annotation make checking more consistent +and less error prone. + +Another benefit is for multiple dimension array handling. +For example, + struct p { int c; int d; } g[8][9][10]; + ... __builtin_preserve_access_index(&g[2][3][4].d) ... +It would be possible to calculate the number of "struct p"'s +before accessing its member "d" if array debug info is +available as it contains each dimension range. + +This patch enables to annotate IR builtin preserve_array_access_index() +with proper debuginfo type. The unit test case and language reference +is updated as well. + +Signed-off-by: Yonghong Song yhs@fb.com + +Differential Revision: https://reviews.llvm.org/D65664 + +llvm-svn: 367724 +(cherry picked from commit d0ea05d5eff475a27a5d3bbe4d9fd389935f9cb2) +--- + clang/lib/CodeGen/CGExpr.cpp | 12 ++++++++--- + .../CodeGen/builtin-preserve-access-index-array.c | 18 +++++++++++++++++ + clang/test/CodeGen/builtin-preserve-access-index.c | 23 +++++++++++----------- + llvm/docs/LangRef.rst | 4 ++++ + llvm/include/llvm/IR/IRBuilder.h | 10 +++++++--- + llvm/test/CodeGen/BPF/CORE/intrinsic-array.ll | 2 +- + 6 files changed, 51 insertions(+), 18 deletions(-) + create mode 100644 clang/test/CodeGen/builtin-preserve-access-index-array.c + +diff --git a/clang/lib/CodeGen/CGExpr.cpp b/clang/lib/CodeGen/CGExpr.cpp +index b6c2567..21c4103 100644 +--- a/clang/lib/CodeGen/CGExpr.cpp ++++ b/clang/lib/CodeGen/CGExpr.cpp +@@ -3405,6 +3405,7 @@ static Address emitArraySubscriptGEP(CodeGenFunction &CGF, Address addr, + ArrayRef<llvm::Value *> indices, + QualType eltType, bool inbounds, + bool signedIndices, SourceLocation loc, ++ QualType *arrayType = nullptr, + const llvm::Twine &name = "arrayidx") { + // All the indices except that last must be zero. + #ifndef NDEBUG +@@ -3433,9 +3434,12 @@ static Address emitArraySubscriptGEP(CodeGenFunction &CGF, Address addr, + } else { + // Remember the original array subscript for bpf target + unsigned idx = LastIndex->getZExtValue(); ++ llvm::DIType *DbgInfo = nullptr; ++ if (arrayType) ++ DbgInfo = CGF.getDebugInfo()->getOrCreateStandaloneType(*arrayType, loc); + eltPtr = CGF.Builder.CreatePreserveArrayAccessIndex(addr.getPointer(), + indices.size() - 1, +- idx); ++ idx, DbgInfo); + } + + return Address(eltPtr, eltAlign); +@@ -3572,19 +3576,21 @@ LValue CodeGenFunction::EmitArraySubscriptExpr(const ArraySubscriptExpr *E, + auto *Idx = EmitIdxAfterBase(/*Promote*/true); + + // Propagate the alignment from the array itself to the result. ++ QualType arrayType = Array->getType(); + Addr = emitArraySubscriptGEP( + *this, ArrayLV.getAddress(), {CGM.getSize(CharUnits::Zero()), Idx}, + E->getType(), !getLangOpts().isSignedOverflowDefined(), SignedIndices, +- E->getExprLoc()); ++ E->getExprLoc(), &arrayType); + EltBaseInfo = ArrayLV.getBaseInfo(); + EltTBAAInfo = CGM.getTBAAInfoForSubobject(ArrayLV, E->getType()); + } else { + // The base must be a pointer; emit it with an estimate of its alignment. + Addr = EmitPointerWithAlignment(E->getBase(), &EltBaseInfo, &EltTBAAInfo); + auto *Idx = EmitIdxAfterBase(/*Promote*/true); ++ QualType ptrType = E->getBase()->getType(); + Addr = emitArraySubscriptGEP(*this, Addr, Idx, E->getType(), + !getLangOpts().isSignedOverflowDefined(), +- SignedIndices, E->getExprLoc()); ++ SignedIndices, E->getExprLoc(), &ptrType); + } + + LValue LV = MakeAddrLValue(Addr, E->getType(), EltBaseInfo, EltTBAAInfo); +diff --git a/clang/test/CodeGen/builtin-preserve-access-index-array.c b/clang/test/CodeGen/builtin-preserve-access-index-array.c +new file mode 100644 +index 0000000..a449b28 +--- /dev/null ++++ b/clang/test/CodeGen/builtin-preserve-access-index-array.c +@@ -0,0 +1,18 @@ ++// RUN: %clang -target x86_64 -emit-llvm -S -g %s -o - | FileCheck %s ++ ++#define _(x) (__builtin_preserve_access_index(x)) ++ ++struct s1 { ++ char a; ++ int b[4]; ++}; ++ ++const void *unit1(struct s1 *arg) { ++ return _(&arg->b[2]); ++} ++// CHECK: define dso_local i8* @unit1 ++// CHECK: call [4 x i32]* @llvm.preserve.struct.access.index.p0a4i32.p0s_struct.s1s(%struct.s1* %{{[0-9a-z]+}}, i32 1, i32 1), !dbg !{{[0-9]+}}, !llvm.preserve.access.index ![[STRUCT_S1:[0-9]+]] ++// CHECK: call i32* @llvm.preserve.array.access.index.p0i32.p0a4i32([4 x i32]* %{{[0-9a-z]+}}, i32 1, i32 2), !dbg !{{[0-9]+}}, !llvm.preserve.access.index ![[ARRAY:[0-9]+]] ++// ++// CHECK: ![[ARRAY]] = !DICompositeType(tag: DW_TAG_array_type ++// CHECK: ![[STRUCT_S1]] = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "s1" +diff --git a/clang/test/CodeGen/builtin-preserve-access-index.c b/clang/test/CodeGen/builtin-preserve-access-index.c +index 954a3b8..1084416 100644 +--- a/clang/test/CodeGen/builtin-preserve-access-index.c ++++ b/clang/test/CodeGen/builtin-preserve-access-index.c +@@ -31,16 +31,16 @@ const void *unit4(const int *arg) { + } + // CHECK: define dso_local i8* @unit4 + // CHECK-NOT: getelementptr +-// CHECK: call i32* @llvm.preserve.array.access.index.p0i32.p0i32(i32* %{{[0-9a-z]+}}, i32 0, i32 1) ++// CHECK: call i32* @llvm.preserve.array.access.index.p0i32.p0i32(i32* %{{[0-9a-z]+}}, i32 0, i32 1), !dbg !{{[0-9]+}}, !llvm.preserve.access.index ![[POINTER:[0-9]+]] + + const void *unit5(const int *arg[5]) { + return _(&arg[1][2]); + } + // CHECK: define dso_local i8* @unit5 + // CHECK-NOT: getelementptr +-// CHECK: call i32** @llvm.preserve.array.access.index.p0p0i32.p0p0i32(i32** %{{[0-9a-z]+}}, i32 0, i32 1) ++// CHECK: call i32** @llvm.preserve.array.access.index.p0p0i32.p0p0i32(i32** %{{[0-9a-z]+}}, i32 0, i32 1), !dbg !{{[0-9]+}}, !llvm.preserve.access.index !{{[0-9]+}} + // CHECK-NOT: getelementptr +-// CHECK: call i32* @llvm.preserve.array.access.index.p0i32.p0i32(i32* %{{[0-9a-z]+}}, i32 0, i32 2) ++// CHECK: call i32* @llvm.preserve.array.access.index.p0i32.p0i32(i32* %{{[0-9a-z]+}}, i32 0, i32 2), !dbg !{{[0-9]+}}, !llvm.preserve.access.index ![[POINTER:[0-9]+]] + + struct s1 { + char a; +@@ -141,7 +141,7 @@ const void *unit13(struct s4 *arg) { + // CHECK: define dso_local i8* @unit13 + // CHECK: call %union.u* @llvm.preserve.struct.access.index.p0s_union.us.p0s_struct.s4s(%struct.s4* %{{[0-9a-z]+}}, i32 1, i32 1), !dbg !{{[0-9]+}}, !llvm.preserve.access.index ![[STRUCT_S4:[0-9]+]] + // CHECK: call %union.u* @llvm.preserve.union.access.index.p0s_union.us.p0s_union.us(%union.u* %{{[0-9a-z]+}}, i32 0), !dbg !{{[0-9]+}}, !llvm.preserve.access.index ![[UNION_I_U:[0-9]+]] +-// CHECK: call i32* @llvm.preserve.array.access.index.p0i32.p0a4i32([4 x i32]* %{{[0-9a-z]+}}, i32 1, i32 2) ++// CHECK: call i32* @llvm.preserve.array.access.index.p0i32.p0a4i32([4 x i32]* %{{[0-9a-z]+}}, i32 1, i32 2), !dbg !{{[0-9]+}}, !llvm.preserve.access.index !{{[0-9]+}} + + const void *unit14(union u3 *arg) { + return _(&arg->c.b[2]); +@@ -149,13 +149,13 @@ const void *unit14(union u3 *arg) { + // CHECK: define dso_local i8* @unit14 + // CHECK: call %union.u3* @llvm.preserve.union.access.index.p0s_union.u3s.p0s_union.u3s(%union.u3* %{{[0-9a-z]+}}, i32 0), !dbg !{{[0-9]+}}, !llvm.preserve.access.index ![[UNION_U3:[0-9]+]] + // CHECK: call [4 x i32]* @llvm.preserve.struct.access.index.p0a4i32.p0s_struct.ss(%struct.s* %{{[0-9a-z]+}}, i32 0, i32 0), !dbg !{{[0-9]+}}, !llvm.preserve.access.index ![[STRUCT_I_S:[0-9]+]] +-// CHECK: call i32* @llvm.preserve.array.access.index.p0i32.p0a4i32([4 x i32]* %{{[0-9a-z]+}}, i32 1, i32 2) ++// CHECK: call i32* @llvm.preserve.array.access.index.p0i32.p0a4i32([4 x i32]* %{{[0-9a-z]+}}, i32 1, i32 2), !dbg !{{[0-9]+}}, !llvm.preserve.access.index !{{[0-9]+}} + + const void *unit15(struct s4 *arg) { + return _(&arg[2].c.a); + } + // CHECK: define dso_local i8* @unit15 +-// CHECK: call %struct.s4* @llvm.preserve.array.access.index.p0s_struct.s4s.p0s_struct.s4s(%struct.s4* %{{[0-9a-z]+}}, i32 0, i32 2) ++// CHECK: call %struct.s4* @llvm.preserve.array.access.index.p0s_struct.s4s.p0s_struct.s4s(%struct.s4* %{{[0-9a-z]+}}, i32 0, i32 2), !dbg !{{[0-9]+}}, !llvm.preserve.access.index !{{[0-9]+}} + // CHECK: call %union.u* @llvm.preserve.struct.access.index.p0s_union.us.p0s_struct.s4s(%struct.s4* %{{[0-9a-z]+}}, i32 1, i32 1), !dbg !{{[0-9]+}}, !llvm.preserve.access.index ![[STRUCT_S4]] + // CHECK: call %union.u* @llvm.preserve.union.access.index.p0s_union.us.p0s_union.us(%union.u* %{{[0-9a-z]+}}, i32 1), !dbg !{{[0-9]+}}, !llvm.preserve.access.index ![[UNION_I_U]] + +@@ -163,15 +163,16 @@ const void *unit16(union u3 *arg) { + return _(&arg[2].a); + } + // CHECK: define dso_local i8* @unit16 +-// CHECK: call %union.u3* @llvm.preserve.array.access.index.p0s_union.u3s.p0s_union.u3s(%union.u3* %{{[0-9a-z]+}}, i32 0, i32 2) ++// CHECK: call %union.u3* @llvm.preserve.array.access.index.p0s_union.u3s.p0s_union.u3s(%union.u3* %{{[0-9a-z]+}}, i32 0, i32 2), !dbg !{{[0-9]+}}, !llvm.preserve.access.index !{{[0-9]+}} + // CHECK: call %union.u3* @llvm.preserve.union.access.index.p0s_union.u3s.p0s_union.u3s(%union.u3* %{{[0-9a-z]+}}, i32 1), !dbg !{{[0-9]+}}, !llvm.preserve.access.index ![[UNION_U3]] + ++// CHECK: ![[POINTER]] = !DIDerivedType(tag: DW_TAG_pointer_type ++// CHECK: ![[STRUCT_S4]] = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "s4" ++// CHECK: ![[UNION_I_U]] = distinct !DICompositeType(tag: DW_TAG_union_type, name: "u" ++// CHECK: ![[UNION_U3]] = distinct !DICompositeType(tag: DW_TAG_union_type, name: "u3" ++// CHECK: ![[STRUCT_I_S]] = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "s" + // CHECK: ![[STRUCT_S1]] = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "s1" + // CHECK: ![[STRUCT_S2]] = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "s2" + // CHECK: ![[STRUCT_S3]] = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "s3" + // CHECK: ![[UNION_U1]] = distinct !DICompositeType(tag: DW_TAG_union_type, name: "u1" + // CHECK: ![[UNION_U2]] = distinct !DICompositeType(tag: DW_TAG_union_type, name: "u2" +-// CHECK: ![[STRUCT_S4]] = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "s4" +-// CHECK: ![[UNION_I_U]] = distinct !DICompositeType(tag: DW_TAG_union_type, name: "u" +-// CHECK: ![[UNION_U3]] = distinct !DICompositeType(tag: DW_TAG_union_type, name: "u3" +-// CHECK: ![[STRUCT_I_S]] = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "s" +-- +1.8.3.1 + diff --git a/0001-Fix-isInSystemMacro-to-handle-pasted-macros.patch b/0001-Fix-isInSystemMacro-to-handle-pasted-macros.patch new file mode 100644 index 0000000..9480f42 --- /dev/null +++ b/0001-Fix-isInSystemMacro-to-handle-pasted-macros.patch @@ -0,0 +1,137 @@ +From cb7fd3caeee52fe94461b717294c4db4056853e3 Mon Sep 17 00:00:00 2001 +From: Serge Guelton sguelton@redhat.com +Date: Fri, 1 Feb 2019 06:11:44 +0000 +Subject: [PATCH 1/3] Fix isInSystemMacro to handle pasted macros + +Token pasted by the preprocessor (through ##) have a Spelling pointing to scratch buffer. +As a result they are not recognized at system macro, even though the pasting happened in +a system macro. Fix that by looking into the parent macro if the original lookup finds a +scratch buffer. + +Differential Revision: https://reviews.llvm.org/D55782 + +This effectively fixes https://bugs.llvm.org/show_bug.cgi?id=35268, + +git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@352838 91177308-0d34-0410-b5e6-96231b3b80d8 +--- + include/clang/Basic/SourceManager.h | 18 +++++++++++++++++- + test/Misc/no-warn-in-system-macro.c | 13 +++++++++++++ + test/Misc/no-warn-in-system-macro.c.inc | 9 +++++++++ + test/Misc/warn-in-system-macro-def.c | 21 +++++++++++++++++++++ + test/Misc/warn-in-system-macro-def.c.inc | 4 ++++ + 5 files changed, 64 insertions(+), 1 deletion(-) + create mode 100644 test/Misc/no-warn-in-system-macro.c + create mode 100644 test/Misc/no-warn-in-system-macro.c.inc + create mode 100644 test/Misc/warn-in-system-macro-def.c + create mode 100644 test/Misc/warn-in-system-macro-def.c.inc + +diff --git a/include/clang/Basic/SourceManager.h b/include/clang/Basic/SourceManager.h +index dcc4a37e23..c6b92f9000 100644 +--- a/include/clang/Basic/SourceManager.h ++++ b/include/clang/Basic/SourceManager.h +@@ -1441,6 +1441,12 @@ public: + return Filename.equals("<command line>"); + } + ++ /// Returns whether \p Loc is located in a <scratch space> file. ++ bool isWrittenInScratchSpace(SourceLocation Loc) const { ++ StringRef Filename(getPresumedLoc(Loc).getFilename()); ++ return Filename.equals("<scratch space>"); ++ } ++ + /// Returns if a SourceLocation is in a system header. + bool isInSystemHeader(SourceLocation Loc) const { + return isSystem(getFileCharacteristic(Loc)); +@@ -1453,7 +1459,17 @@ public: + + /// Returns whether \p Loc is expanded from a macro in a system header. + bool isInSystemMacro(SourceLocation loc) const { +- return loc.isMacroID() && isInSystemHeader(getSpellingLoc(loc)); ++ if(!loc.isMacroID()) ++ return false; ++ ++ // This happens when the macro is the result of a paste, in that case ++ // its spelling is the scratch memory, so we take the parent context. ++ if (isWrittenInScratchSpace(getSpellingLoc(loc))) { ++ return isInSystemHeader(getSpellingLoc(getImmediateMacroCallerLoc(loc))); ++ } ++ else { ++ return isInSystemHeader(getSpellingLoc(loc)); ++ } + } + + /// The size of the SLocEntry that \p FID represents. +diff --git a/test/Misc/no-warn-in-system-macro.c b/test/Misc/no-warn-in-system-macro.c +new file mode 100644 +index 0000000000..a319b14c9c +--- /dev/null ++++ b/test/Misc/no-warn-in-system-macro.c +@@ -0,0 +1,13 @@ ++// RUN: %clang_cc1 -isystem %S -Wdouble-promotion -fsyntax-only %s 2>&1 | FileCheck -allow-empty %s ++// CHECK-NOT: warning: ++ ++#include <no-warn-in-system-macro.c.inc> ++ ++int main(void) ++{ ++ double foo = 1.0; ++ ++ if (isnan(foo)) ++ return 1; ++ return 0; ++} +diff --git a/test/Misc/no-warn-in-system-macro.c.inc b/test/Misc/no-warn-in-system-macro.c.inc +new file mode 100644 +index 0000000000..3cbe7dfc16 +--- /dev/null ++++ b/test/Misc/no-warn-in-system-macro.c.inc +@@ -0,0 +1,9 @@ ++extern int __isnanf(float f); ++extern int __isnan(double f); ++extern int __isnanl(long double f); ++#define isnan(x) \ ++ (sizeof (x) == sizeof (float) \ ++ ? __isnanf (x) \ ++ : sizeof (x) == sizeof (double) \ ++ ? __isnan (x) : __isnanl (x)) ++ +diff --git a/test/Misc/warn-in-system-macro-def.c b/test/Misc/warn-in-system-macro-def.c +new file mode 100644 +index 0000000000..b295130702 +--- /dev/null ++++ b/test/Misc/warn-in-system-macro-def.c +@@ -0,0 +1,21 @@ ++// RUN: %clang_cc1 -isystem %S -Wdouble-promotion -fsyntax-only %s 2>&1 | FileCheck -allow-empty %s ++// CHECK: warning: ++// CHECK: expanded from macro 'ISNAN' ++// CHECK: expanded from macro 'isnan' ++ ++#include <warn-in-system-macro-def.c.inc> ++ ++#define isnan(x) \ ++ (sizeof (x) == sizeof (float) \ ++ ? __isnanf (x) \ ++ : sizeof (x) == sizeof (double) \ ++ ? __isnan (x) : __isnanl (x)) ++ ++int main(void) ++{ ++ double foo = 1.0; ++ ++ if (ISNAN(foo)) ++ return 1; ++ return 0; ++} +diff --git a/test/Misc/warn-in-system-macro-def.c.inc b/test/Misc/warn-in-system-macro-def.c.inc +new file mode 100644 +index 0000000000..5c7e60275a +--- /dev/null ++++ b/test/Misc/warn-in-system-macro-def.c.inc +@@ -0,0 +1,4 @@ ++extern int __isnanf(float f); ++extern int __isnan(double f); ++extern int __isnanl(long double f); ++#define ISNAN isnan +-- +2.20.1 + diff --git a/0001-Make-funwind-tables-the-default-for-all-archs.patch b/0001-Make-funwind-tables-the-default-for-all-archs.patch new file mode 100644 index 0000000..d9e9125 --- /dev/null +++ b/0001-Make-funwind-tables-the-default-for-all-archs.patch @@ -0,0 +1,39 @@ +From 690373af5a5d50cf115ed6e4d2849bb786f9dc8e Mon Sep 17 00:00:00 2001 +From: serge-sans-paille sguelton@redhat.com +Date: Tue, 10 Dec 2019 09:18:03 +0000 +Subject: [PATCH] Make -funwind-tables the default for all archs + +--- + clang/lib/Driver/ToolChain.cpp | 2 +- + clang/lib/Driver/ToolChains/Gnu.cpp | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp +index b1fddb0af55..43af40ed0e8 100644 +--- a/clang/lib/Driver/ToolChain.cpp ++++ b/clang/lib/Driver/ToolChain.cpp +@@ -244,7 +244,7 @@ std::string ToolChain::getInputFilename(const InputInfo &Input) const { + } + + bool ToolChain::IsUnwindTablesDefault(const ArgList &Args) const { +- return false; ++ return true; + } + + Tool *ToolChain::getClang() const { +diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp +index 33cdd3585c2..15e82be8f3a 100644 +--- a/clang/lib/Driver/ToolChains/Gnu.cpp ++++ b/clang/lib/Driver/ToolChains/Gnu.cpp +@@ -2535,7 +2535,7 @@ void Generic_GCC::printVerboseInfo(raw_ostream &OS) const { + } + + bool Generic_GCC::IsUnwindTablesDefault(const ArgList &Args) const { +- return getArch() == llvm::Triple::x86_64; ++ return true; + } + + bool Generic_GCC::isPICDefault() const { +-- +2.20.1 + diff --git a/0001-ToolChain-Add-lgcc_s-to-the-linker-flags-when-using-.patch b/0001-ToolChain-Add-lgcc_s-to-the-linker-flags-when-using-.patch new file mode 100644 index 0000000..78d3da7 --- /dev/null +++ b/0001-ToolChain-Add-lgcc_s-to-the-linker-flags-when-using-.patch @@ -0,0 +1,50 @@ +From 09ae3ef5710a89505318ec721c65b6c838147276 Mon Sep 17 00:00:00 2001 +From: Tom Stellard tstellar@redhat.com +Date: Thu, 7 Feb 2019 21:05:37 -0800 +Subject: [PATCH] ToolChain: Add -lgcc_s to the linker flags when using libc++ + +The libc++ build for Fedora does not include an implementation of +libunwind, so we need to explicitly link against something that +provides this implementation. +--- + clang/lib/Driver/ToolChain.cpp | 1 + + clang/test/Driver/netbsd.cpp | 4 ++-- + 2 files changed, 3 insertions(+), 2 deletions(-) + +diff --git a/clang/lib/Driver/ToolChain.cpp b/lib/Driver/ToolChain.cpp +index 88a627e..cb99844 100644 +--- a/clang/lib/Driver/ToolChain.cpp ++++ b/clang/lib/Driver/ToolChain.cpp +@@ -767,6 +767,7 @@ void ToolChain::AddCXXStdlibLibArgs(const ArgList &Args, + switch (Type) { + case ToolChain::CST_Libcxx: + CmdArgs.push_back("-lc++"); ++ CmdArgs.push_back("-lgcc_s"); + break; + + case ToolChain::CST_Libstdcxx: +diff --git a/clang/test/Driver/netbsd.cpp b/test/Driver/netbsd.cpp +index 4af7d83..ff18c62 100644 +--- a/clang/test/Driver/netbsd.cpp ++++ b/clang/test/Driver/netbsd.cpp +@@ -131,7 +131,7 @@ + // ARM-7: clang{{.*}}" "-cc1" "-triple" "armv5e-unknown-netbsd7.0.0-eabi" + // ARM-7: ld{{.*}}" "--eh-frame-hdr" "-dynamic-linker" "/libexec/ld.elf_so" + // ARM-7: "-o" "a.out" "{{.*}}/usr/lib{{/|\\}}crt0.o" "{{.*}}/usr/lib{{/|\\}}eabi{{/|\\}}crti.o" +-// ARM-7: "{{.*}}/usr/lib{{/|\\}}crtbegin.o" "{{.*}}.o" "-lc++" "-lm" "-lc" ++// ARM-7: "{{.*}}/usr/lib{{/|\\}}crtbegin.o" "{{.*}}.o" "-lc++" "-lgcc_s" "-lm" "-lc" + // ARM-7: "{{.*}}/usr/lib{{/|\\}}crtend.o" "{{.*}}/usr/lib{{/|\\}}crtn.o" + + // AARCH64: clang{{.*}}" "-cc1" "-triple" "aarch64-unknown-netbsd" +@@ -250,7 +250,7 @@ + // S-ARM-7: clang{{.*}}" "-cc1" "-triple" "armv5e-unknown-netbsd7.0.0-eabi" + // S-ARM-7: ld{{.*}}" "--eh-frame-hdr" "-Bstatic" + // S-ARM-7: "-o" "a.out" "{{.*}}/usr/lib{{/|\\}}crt0.o" "{{.*}}/usr/lib{{/|\\}}eabi{{/|\\}}crti.o" +-// S-ARM-7: "{{.*}}/usr/lib{{/|\\}}crtbegin.o" "{{.*}}.o" "-lc++" "-lm" "-lc" ++// S-ARM-7: "{{.*}}/usr/lib{{/|\\}}crtbegin.o" "{{.*}}.o" "-lc++" "-lgcc_s" "-lm" "-lc" + // S-ARM-7: "{{.*}}/usr/lib{{/|\\}}crtend.o" "{{.*}}/usr/lib{{/|\\}}crtn.o" + + // S-AARCH64: clang{{.*}}" "-cc1" "-triple" "aarch64-unknown-netbsd" +-- +1.8.3.1 + diff --git a/0002-Format-isInSystemMacro-after-D55782.patch b/0002-Format-isInSystemMacro-after-D55782.patch new file mode 100644 index 0000000..e5004fb --- /dev/null +++ b/0002-Format-isInSystemMacro-after-D55782.patch @@ -0,0 +1,39 @@ +From 49b29ff9feafd8b9041e2a76cbe843115d263ced Mon Sep 17 00:00:00 2001 +From: Fangrui Song maskray@google.com +Date: Mon, 11 Feb 2019 13:30:04 +0000 +Subject: [PATCH 2/3] Format isInSystemMacro after D55782 + +git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@353697 91177308-0d34-0410-b5e6-96231b3b80d8 +--- + include/clang/Basic/SourceManager.h | 10 ++++------ + 1 file changed, 4 insertions(+), 6 deletions(-) + +diff --git a/include/clang/Basic/SourceManager.h b/include/clang/Basic/SourceManager.h +index c6b92f9000..f44239d9ce 100644 +--- a/include/clang/Basic/SourceManager.h ++++ b/include/clang/Basic/SourceManager.h +@@ -1459,17 +1459,15 @@ public: + + /// Returns whether \p Loc is expanded from a macro in a system header. + bool isInSystemMacro(SourceLocation loc) const { +- if(!loc.isMacroID()) ++ if (!loc.isMacroID()) + return false; + + // This happens when the macro is the result of a paste, in that case + // its spelling is the scratch memory, so we take the parent context. +- if (isWrittenInScratchSpace(getSpellingLoc(loc))) { ++ if (isWrittenInScratchSpace(getSpellingLoc(loc))) + return isInSystemHeader(getSpellingLoc(getImmediateMacroCallerLoc(loc))); +- } +- else { +- return isInSystemHeader(getSpellingLoc(loc)); +- } ++ ++ return isInSystemHeader(getSpellingLoc(loc)); + } + + /// The size of the SLocEntry that \p FID represents. +-- +2.20.1 + diff --git a/0002-gtest-reorg.patch b/0002-gtest-reorg.patch new file mode 100644 index 0000000..f760c15 --- /dev/null +++ b/0002-gtest-reorg.patch @@ -0,0 +1,42 @@ +From 1f26a0284925859b72ee520ce74452d77d822409 Mon Sep 17 00:00:00 2001 +From: serge-sans-paille sguelton@redhat.com +Date: Mon, 28 Jan 2019 19:12:27 +0000 +Subject: [PATCH 2/2] [PATCH] gtest reorg + +--- + CMakeLists.txt | 12 +++++------- + 1 file changed, 5 insertions(+), 7 deletions(-) + +diff --git a/clang/CMakeLists.txt b/clang/CMakeLists.txt +index c2016a45ca..48ea3c3bb9 100644 +--- a/clang/CMakeLists.txt ++++ b/clang/CMakeLists.txt +@@ -157,12 +157,6 @@ Please install Python or specify the PYTHON_EXECUTABLE CMake variable.") + set(LLVM_UTILS_PROVIDED ON) + set(CLANG_TEST_DEPS FileCheck count not) + endif() +- set(UNITTEST_DIR ${LLVM_MAIN_SRC_DIR}/utils/unittest) +- if(EXISTS ${UNITTEST_DIR}/googletest/include/gtest/gtest.h +- AND NOT EXISTS ${LLVM_LIBRARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX} +- AND EXISTS ${UNITTEST_DIR}/CMakeLists.txt) +- add_subdirectory(${UNITTEST_DIR} utils/unittest) +- endif() + else() + # Seek installed Lit. + find_program(LLVM_LIT +@@ -507,7 +501,11 @@ endif() + + + if( CLANG_INCLUDE_TESTS ) +- if(EXISTS ${LLVM_MAIN_SRC_DIR}/utils/unittest/googletest/include/gtest/gtest.h) ++ set(UNITTEST_DIR ${LLVM_MAIN_SRC_DIR}/utils/unittest) ++ if(EXISTS ${UNITTEST_DIR}/googletest/include/gtest/gtest.h ++ AND NOT EXISTS ${LLVM_LIBRARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX} ++ AND EXISTS ${UNITTEST_DIR}/CMakeLists.txt) ++ add_subdirectory(${UNITTEST_DIR} utils/unittest) + add_subdirectory(unittests) + list(APPEND CLANG_TEST_DEPS ClangUnitTests) + list(APPEND CLANG_TEST_PARAMS +-- +2.19.2 + diff --git a/0003-Fix-isInSystemMacro-in-presence-of-macro-and-pasted-.patch b/0003-Fix-isInSystemMacro-in-presence-of-macro-and-pasted-.patch new file mode 100644 index 0000000..c27dfd9 --- /dev/null +++ b/0003-Fix-isInSystemMacro-in-presence-of-macro-and-pasted-.patch @@ -0,0 +1,63 @@ +From a6b7f0946df82ca207b27f1931d4b430ab77e5e0 Mon Sep 17 00:00:00 2001 +From: Serge Guelton sguelton@redhat.com +Date: Thu, 16 May 2019 12:40:00 +0000 +Subject: [PATCH 3/3] Fix isInSystemMacro in presence of macro and pasted token + +When a warning is raised from the expansion of a system macro that +involves pasted token, there was still situations were they were not +skipped, as showcased by this issue: +https://bugzilla.redhat.com/show_bug.cgi?id=1472437 + +Differential Revision: https://reviews.llvm.org/D59413 + +git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@360885 91177308-0d34-0410-b5e6-96231b3b80d8 +--- + include/clang/Basic/SourceManager.h | 9 +++++++-- + test/Misc/no-warn-in-system-macro.c | 7 ++++++- + 2 files changed, 13 insertions(+), 3 deletions(-) + +diff --git a/include/clang/Basic/SourceManager.h b/include/clang/Basic/SourceManager.h +index f44239d9ce..c964c64faf 100644 +--- a/include/clang/Basic/SourceManager.h ++++ b/include/clang/Basic/SourceManager.h +@@ -1464,8 +1464,13 @@ public: + + // This happens when the macro is the result of a paste, in that case + // its spelling is the scratch memory, so we take the parent context. +- if (isWrittenInScratchSpace(getSpellingLoc(loc))) +- return isInSystemHeader(getSpellingLoc(getImmediateMacroCallerLoc(loc))); ++ // There can be several level of token pasting. ++ if (isWrittenInScratchSpace(getSpellingLoc(loc))) { ++ do { ++ loc = getImmediateMacroCallerLoc(loc); ++ } while (isWrittenInScratchSpace(getSpellingLoc(loc))); ++ return isInSystemMacro(loc); ++ } + + return isInSystemHeader(getSpellingLoc(loc)); + } +diff --git a/test/Misc/no-warn-in-system-macro.c b/test/Misc/no-warn-in-system-macro.c +index a319b14c9c..a351b89256 100644 +--- a/test/Misc/no-warn-in-system-macro.c ++++ b/test/Misc/no-warn-in-system-macro.c +@@ -3,11 +3,16 @@ + + #include <no-warn-in-system-macro.c.inc> + ++#define MACRO(x) x ++ + int main(void) + { + double foo = 1.0; + + if (isnan(foo)) + return 1; +- return 0; ++ ++ MACRO(isnan(foo)); ++ ++ return 0; + } +-- +2.20.1 + diff --git a/README.md b/README.md deleted file mode 100644 index 9a20764..0000000 --- a/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# clang9.0 - -The clang9.0 package \ No newline at end of file diff --git a/clang9.0.spec b/clang9.0.spec new file mode 100644 index 0000000..1d9ac79 --- /dev/null +++ b/clang9.0.spec @@ -0,0 +1,777 @@ +%global compat_build 1 + +%global maj_ver 9 +%global min_ver 0 +%global patch_ver 1 +#%%global rc_ver 3 +%global baserelease 4 + +%global clang_tools_binaries \ + %{_bindir}/clangd \ + %{_bindir}/clang-apply-replacements \ + %{_bindir}/clang-change-namespace \ + %{_bindir}/clang-doc \ + %{_bindir}/clang-include-fixer \ + %{_bindir}/clang-query \ + %{_bindir}/clang-refactor \ + %{_bindir}/clang-reorder-fields \ + %{_bindir}/clang-rename \ + %{_bindir}/clang-tidy + +%global clang_binaries \ + %{_bindir}/clang \ + %{_bindir}/clang++ \ + %{_bindir}/clang-%{maj_ver} \ + %{_bindir}/clang++-%{maj_ver} \ + %{_bindir}/clang-check \ + %{_bindir}/clang-cl \ + %{_bindir}/clang-cpp \ + %{_bindir}/clang-extdef-mapping \ + %{_bindir}/clang-format \ + %{_bindir}/clang-import-test \ + %{_bindir}/clang-offload-bundler \ + %{_bindir}/clang-scan-deps \ + %{_bindir}/diagtool \ + %{_bindir}/hmaptool + +%if 0%{?compat_build} +%global pkg_name clang%{maj_ver}.%{min_ver} +# Install clang to same prefix as llvm, so that apps that use llvm-config +# will also be able to find clang libs. +%global install_prefix %{_libdir}/llvm%{maj_ver}.%{min_ver} +%global install_bindir %{install_prefix}/bin +%global install_includedir %{install_prefix}/include +%global install_libdir %{install_prefix}/lib + +%global pkg_bindir %{install_bindir} +%global pkg_includedir %{_includedir}/llvm%{maj_ver}.%{min_ver} +%global pkg_libdir %{install_libdir} +%else +%global pkg_name clang +%global install_prefix /usr +%endif + +%if 0%{?fedora} || 0%{?rhel} > 7 +%bcond_without python3 +%else +%bcond_with python3 +%endif + +%global build_install_prefix %{buildroot}%{install_prefix} + +%ifarch ppc64le +# Too many threads on ppc64 systems causes OOM errors. +%global _smp_mflags -j8 +%endif + +%global clang_srcdir clang-%{version}%{?rc_ver:rc%{rc_ver}}.src +%global clang_tools_srcdir clang-tools-extra-%{version}%{?rc_ver:rc%{rc_ver}}.src + +Name: %pkg_name +Version: %{maj_ver}.%{min_ver}.%{patch_ver} +Release: %{baserelease}%{?rc_ver:.rc%{rc_ver}}%{?dist} +Summary: A C language family front-end for LLVM + +License: NCSA +URL: http://llvm.org +Source0: http://%%7B?rc_ver:pre%7Dreleases.llvm.org/%%7Bversion%7D/%%7B?rc_ver:rc%%7B... +%if !0%{?compat_build} +Source1: http://%%7B?rc_ver:pre%7Dreleases.llvm.org/%%7Bversion%7D/%%7B?rc_ver:rc%%7B... +%endif + +Patch4: 0002-gtest-reorg.patch +Patch11: 0001-ToolChain-Add-lgcc_s-to-the-linker-flags-when-using-.patch +Patch13: 0001-Make-funwind-tables-the-default-for-all-archs.patch +# Fix crash with kernel bpf self-tests +Patch14: 0001-BPF-annotate-DIType-metadata-for-builtin-preseve_arr.patch +Patch15: altivec.patch + +BuildRequires: gcc +BuildRequires: gcc-c++ +BuildRequires: cmake +BuildRequires: ninja-build +%if 0%{?compat_build} +BuildRequires: llvm%{maj_ver}.%{min_ver}-devel = %{version} +BuildRequires: llvm%{maj_ver}.%{min_ver}-static = %{version} +%else +BuildRequires: llvm-devel = %{version} +BuildRequires: llvm-test = %{version} +# llvm-static is required, because clang-tablegen needs libLLVMTableGen, which +# is not included in libLLVM.so. +BuildRequires: llvm-static = %{version} +BuildRequires: llvm-googletest = %{version} +%endif + +BuildRequires: libxml2-devel +BuildRequires: perl-generators +BuildRequires: ncurses-devel +# According to https://fedoraproject.org/wiki/Packaging:Emacs a package +# should BuildRequires: emacs if it packages emacs integration files. +BuildRequires: emacs + +# These build dependencies are required for the test suite. +%if %with python3 +# The testsuite uses /usr/bin/lit which is part of the python3-lit package. +BuildRequires: python3-lit +%endif + +BuildRequires: python3-sphinx +BuildRequires: libatomic + +# We need python3-devel for pathfix.py. +BuildRequires: python3-devel + +# Needed for %%multilib_fix_c_header +BuildRequires: multilib-rpm-config +BuildRequires: chrpath + +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +# clang requires gcc, clang++ requires libstdc++-devel +# - https://bugzilla.redhat.com/show_bug.cgi?id=1021645 +# - https://bugzilla.redhat.com/show_bug.cgi?id=1158594 +Requires: libstdc++-devel +Requires: gcc-c++ + +Requires: emacs-filesystem + +Provides: clang(major) = %{maj_ver} + +%description +clang: noun + 1. A loud, resonant, metallic sound. + 2. The strident call of a crane or goose. + 3. C-language family front-end toolkit. + +The goal of the Clang project is to create a new C, C++, Objective C +and Objective C++ front-end for the LLVM compiler. Its tools are built +as libraries and designed to be loosely-coupled and extensible. + +%package libs +Summary: Runtime library for clang +Recommends: compiler-rt%{?_isa} = %{version} +Recommends: libomp%{_isa} = %{version} + +%description libs +Runtime library for clang. + +%package devel +Summary: Development header files for clang +%if !0%{?compat_build} +Requires: %{name}%{?_isa} = %{version}-%{release} +# The clang CMake files reference tools from clang-tools-extra. +Requires: %{name}-tools-extra%{?_isa} = %{version}-%{release} +Requires: %{name}-libs = %{version}-%{release} +%endif + +%description devel +Development header files for clang. + +%if !0%{?compat_build} +%package analyzer +Summary: A source code analysis framework +License: NCSA and MIT +BuildArch: noarch +Requires: %{name} = %{version}-%{release} + +%description analyzer +The Clang Static Analyzer consists of both a source code analysis +framework and a standalone tool that finds bugs in C and Objective-C +programs. The standalone tool is invoked from the command-line, and is +intended to run in tandem with a build of a project or code base. + +%package tools-extra +Summary: Extra tools for clang +Requires: %{name}-libs%{?_isa} = %{version}-%{release} +Requires: emacs-filesystem + +%description tools-extra +A set of extra tools built using Clang's tooling API. + +# Put git-clang-format in its own package, because it Requires git +# and we don't want to force users to install all those dependenices if they +# just want clang. +%package -n git-clang-format +Summary: Integration of clang-format for git +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: git +Requires: python3 + +%description -n git-clang-format +clang-format integration for git. + + +%package -n python3-clang +Summary: Python3 bindings for clang +Requires: %{name}-libs%{?_isa} = %{version}-%{release} +Requires: python3 +%description -n python3-clang +%{summary}. + + +%endif + + +%prep +%if 0%{?compat_build} +%autosetup -n %{clang_srcdir} -p2 +%else +%setup -T -q -b 1 -n %{clang_tools_srcdir} + + +pathfix.py -i %{__python3} -pn \ + clang-tidy/tool/*.py \ + clang-include-fixer/find-all-symbols/tool/run-find-all-symbols.py + +%setup -q -n %{clang_srcdir} + +%patch4 -p2 -b .gtest +%patch11 -p2 -b .libcxx-fix +%patch14 -p2 -b .bpf-fix +%patch15 -p2 -b .altivec + +mv ../%{clang_tools_srcdir} tools/extra + +pathfix.py -i %{__python3} -pn \ + tools/clang-format/*.py \ + tools/clang-format/git-clang-format \ + utils/hmaptool/hmaptool \ + tools/scan-view/bin/scan-view +%endif + +%build + +%if 0%{?__isa_bits} == 64 +sed -i 's/@FEDORA_LLVM_LIB_SUFFIX@/64/g' test/lit.cfg.py +%else +sed -i 's/@FEDORA_LLVM_LIB_SUFFIX@//g' test/lit.cfg.py +%endif + +mkdir -p _build +cd _build + +%ifarch s390 s390x %{arm} %ix86 ppc64le +# Decrease debuginfo verbosity to reduce memory consumption during final library linking +%global optflags %(echo %{optflags} | sed 's/-g /-g1 /') +%endif + +# -DCMAKE_INSTALL_RPATH=";" is a workaround for llvm manually setting the +# rpath of libraries and binaries. llvm will skip the manual setting +# if CAMKE_INSTALL_RPATH is set to a value, but cmake interprets this value +# as nothing, so it sets the rpath to "" when installing. +%cmake .. -G Ninja \ + -DLLVM_PARALLEL_LINK_JOBS=1 \ + -DLLVM_LINK_LLVM_DYLIB:BOOL=ON \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DPYTHON_EXECUTABLE=%{__python3} \ + -DCMAKE_INSTALL_RPATH:BOOL=";" \ +%ifarch s390 s390x %{arm} %ix86 ppc64le + -DCMAKE_C_FLAGS_RELWITHDEBINFO="%{optflags} -DNDEBUG" \ + -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="%{optflags} -DNDEBUG" \ +%endif +%if 0%{?compat_build} + -DLLVM_CONFIG:FILEPATH=%{_bindir}/llvm-config-%{maj_ver}.%{min_ver}-%{__isa_bits} \ + -DCMAKE_INSTALL_PREFIX=%{install_prefix} \ + -DCLANG_INCLUDE_TESTS:BOOL=OFF \ +%else + -DCLANG_INCLUDE_TESTS:BOOL=ON \ + -DLLVM_EXTERNAL_LIT=%{_bindir}/lit \ + -DLLVM_MAIN_SRC_DIR=%{_datadir}/llvm/src \ +%if 0%{?__isa_bits} == 64 + -DLLVM_LIBDIR_SUFFIX=64 \ +%else + -DLLVM_LIBDIR_SUFFIX= \ +%endif +%endif + \ +%if !0%{compat_build} + -DLLVM_TABLEGEN_EXE:FILEPATH=%{_bindir}/llvm-tblgen \ +%else + -DLLVM_TABLEGEN_EXE:FILEPATH=%{_bindir}/llvm-tblgen-%{maj_ver}.%{min_ver} \ +%endif + -DCLANG_ENABLE_ARCMT:BOOL=ON \ + -DCLANG_ENABLE_STATIC_ANALYZER:BOOL=ON \ + -DCLANG_INCLUDE_DOCS:BOOL=ON \ + -DCLANG_PLUGIN_SUPPORT:BOOL=ON \ + -DENABLE_LINKER_BUILD_ID:BOOL=ON \ + -DLLVM_ENABLE_EH=ON \ + -DLLVM_ENABLE_RTTI=ON \ + -DLLVM_BUILD_DOCS=ON \ + -DLLVM_ENABLE_SPHINX=ON \ + -DCLANG_LINK_CLANG_DYLIB=ON \ + -DSPHINX_WARNINGS_AS_ERRORS=OFF \ + \ + -DCLANG_BUILD_EXAMPLES:BOOL=OFF \ + -DCLANG_REPOSITORY_STRING="%{?fedora:Fedora}%{?rhel:Red Hat} %{version}-%{release}" + +%ninja_build + +%install +%ninja_install -C _build + +%if 0%{?compat_build} + +# Remove binaries/other files +rm -Rf %{buildroot}%{install_bindir} +rm -Rf %{buildroot}%{install_prefix}/share +rm -Rf %{buildroot}%{install_prefix}/libexec + +# Move include files +mkdir -p %{buildroot}%{pkg_includedir} +mv %{buildroot}/%{install_includedir}/clang %{buildroot}/%{pkg_includedir}/ +mv %{buildroot}/%{install_includedir}/clang-c %{buildroot}/%{pkg_includedir}/ + +%else + +# install clang python bindings +mkdir -p %{buildroot}%{python3_sitelib}/clang/ +install -p -m644 bindings/python/clang/* %{buildroot}%{python3_sitelib}/clang/ +%py_byte_compile %{__python3} %{buildroot}%{python3_sitelib}/clang + +# multilib fix +%multilib_fix_c_header --file %{_includedir}/clang/Config/config.h + +# Move emacs integration files to the correct directory +mkdir -p %{buildroot}%{_emacs_sitestartdir} +for f in clang-format.el clang-rename.el clang-include-fixer.el; do +mv %{buildroot}{%{_datadir}/clang,%{_emacs_sitestartdir}}/$f +done + +# remove editor integrations (bbedit, sublime, emacs, vim) +rm -vf %{buildroot}%{_datadir}/clang/clang-format-bbedit.applescript +rm -vf %{buildroot}%{_datadir}/clang/clang-format-sublime.py* + +# TODO: Package html docs +rm -Rvf %{buildroot}%{_pkgdocdir} + +# TODO: What are the Fedora guidelines for packaging bash autocomplete files? +rm -vf %{buildroot}%{_datadir}/clang/bash-autocomplete.sh + +# Create Manpage symlinks +ln -s clang.1.gz %{buildroot}%{_mandir}/man1/clang++.1.gz +ln -s clang.1.gz %{buildroot}%{_mandir}/man1/clang-%{maj_ver}.1.gz +ln -s clang.1.gz %{buildroot}%{_mandir}/man1/clang++-%{maj_ver}.1.gz + +# Add clang++-{version} symlink +ln -s clang++ %{buildroot}%{_bindir}/clang++-%{maj_ver} + + +# Fix permission +chmod u-x %{buildroot}%{_mandir}/man1/scan-build.1* + +%endif + +%check +%if !0%{?compat_build} +# requires lit.py from LLVM utilities +# FIXME: Fix failing ARM tests, s390x i686 and ppc64le tests +# FIXME: Ignore test failures until rhbz#1715016 is fixed. +LD_LIBRARY_PATH=%{buildroot}%{_libdir} ninja check-all -C _build || \ +%ifarch s390x i686 ppc64le %{arm} +: +%else +: +%endif + +%endif + + +%if !0%{?compat_build} +%files +%{clang_binaries} +%{_bindir}/c-index-test +%{_mandir}/man1/clang.1.gz +%{_mandir}/man1/clang++.1.gz +%{_mandir}/man1/clang-%{maj_ver}.1.gz +%{_mandir}/man1/clang++-%{maj_ver}.1.gz +%{_mandir}/man1/diagtool.1.gz +%{_emacs_sitestartdir}/clang-format.el +%{_datadir}/clang/clang-format.py* +%{_datadir}/clang/clang-format-diff.py* +%endif + +%files libs +%if !0%{?compat_build} +%{_libdir}/clang/ +%{_libdir}/*.so.* +%else +%{pkg_libdir}/*.so.* +%{pkg_libdir}/clang/%{version} +%endif + +%files devel +%if !0%{?compat_build} +%{_libdir}/*.so +%{_includedir}/clang/ +%{_includedir}/clang-c/ +%{_libdir}/cmake/* +%dir %{_datadir}/clang/ +%else +%{pkg_libdir}/*.so +%{pkg_includedir}/clang/ +%{pkg_includedir}/clang-c/ +%{pkg_libdir}/cmake/ +%endif + +%if !0%{?compat_build} +%files analyzer +%{_bindir}/scan-view +%{_bindir}/scan-build +%{_libexecdir}/ccc-analyzer +%{_libexecdir}/c++-analyzer +%{_datadir}/scan-view/ +%{_datadir}/scan-build/ +%{_mandir}/man1/scan-build.1.* + +%files tools-extra +%{clang_tools_binaries} +%{_bindir}/find-all-symbols +%{_bindir}/modularize +%{_emacs_sitestartdir}/clang-rename.el +%{_emacs_sitestartdir}/clang-include-fixer.el +%{_datadir}/clang/clang-include-fixer.py* +%{_datadir}/clang/clang-tidy-diff.py* +%{_datadir}/clang/run-clang-tidy.py* +%{_datadir}/clang/run-find-all-symbols.py* +%{_datadir}/clang/clang-rename.py* + +%files -n git-clang-format +%{_bindir}/git-clang-format + +%files -n python3-clang +%{python3_sitelib}/clang/ + + +%endif +%changelog +* Tue Feb 4 2020 sguelton@redhat.com - 9.0.1-4 +- Sync specfile with clang9.0 package + +* Tue Jan 28 2020 Fedora Release Engineering releng@fedoraproject.org - 9.0.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Fri Jan 10 2020 Tom Stellard tstellar@redhat.com - 9.0.1-2 +- Fix crash with kernel bpf self-tests + +* Thu Dec 19 2019 Tom Stellard tstellar@redhat.com - 9.0.1-1 +- 9.0.1 Release + +* Wed Dec 11 2019 Tom Stellard tstellar@redhat.com - 9.0.0-3 +- Add explicit requires for clang-libs to fix rpmdiff errors + +* Tue Dec 10 2019 sguelton@redhat.com - 9.0.0-2 +- Activate -funwind-tables on all arches, see rhbz#1655546. + +* Thu Sep 19 2019 Tom Stellard tstellar@redhat.com - 9.0.0-1 +- 9.0.0 Release + +* Wed Sep 11 2019 Tom Stellard tstellar@redhat.com - 9.0.0-0.2.rc3 +- Reduce debug info verbosity on ppc64le to avoid OOM errors in koji + +* Thu Aug 22 2019 Tom Stellard tstellar@redhat.com - 9.0.0-0.1.rc3 +- 9.0.0 Release candidate 3 + +* Tue Aug 20 2019 sguelton@redhat.com - 8.0.0-4 +- Rebuilt for Python 3.8 + +* Mon Aug 19 2019 Miro Hronok mhroncok@redhat.com - 8.0.0-3.2 +- Rebuilt for Python 3.8 + +* Wed Jul 24 2019 Fedora Release Engineering releng@fedoraproject.org - 8.0.0-3.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Thu May 16 2019 sguelton@redhat.com - 8.0.0-3 +- Fix for rhbz#1674031 + +* Fri Apr 12 2019 sguelton@redhat.com - 8.0.0-2 +- Remove useless patch thanks to GCC upgrade + +* Wed Mar 20 2019 sguelton@redhat.com - 8.0.0-1 +- 8.0.0 final + +* Tue Mar 12 2019 sguelton@redhat.com - 8.0.0-0.6.rc4 +- 8.0.0 Release candidate 4 + +* Mon Mar 4 2019 sguelton@redhat.com - 8.0.0-0.5.rc3 +- Cleanup specfile after llvm dependency update + +* Mon Mar 4 2019 sguelton@redhat.com - 8.0.0-0.4.rc3 +- 8.0.0 Release candidate 3 + +* Mon Feb 25 2019 tstellar@redhat.com - 8.0.0-0.3.rc2 +- Fix compiling with -stdlib=libc++ + +* Thu Feb 21 2019 sguelton@redhat.com - 8.0.0-0.2.rc2 +- 8.0.0 Release candidate 2 + +* Sat Feb 09 2019 sguelton@redhat.com - 8.0.0-0.1.rc1 +- 8.0.0 Release candidate 1 + +* Tue Feb 05 2019 sguelton@redhat.com - 7.0.1-6 +- Update patch for Python3 port of scan-view + +* Tue Feb 05 2019 sguelton@redhat.com - 7.0.1-5 +- Working CI test suite + +* Mon Feb 04 2019 sguelton@redhat.com - 7.0.1-4 +- Workaround gcc-9 bug when compiling bitfields + +* Fri Feb 01 2019 sguelton@redhat.com - 7.0.1-3 +- Fix uninitialized error detected by gcc-9 + +* Thu Jan 31 2019 Fedora Release Engineering releng@fedoraproject.org - 7.0.1-2.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Wed Dec 19 2018 Tom Stellard tstellar@redhat.com - 7.0.1-2 +- Fix for rhbz#1657544 + +* Tue Dec 18 2018 sguelton@redhat.com - 7.0.1-1 +- 7.0.1 + +* Tue Dec 18 2018 sguelton@redhat.com - 7.0.0-10 +- Install proper manpage symlinks for clang/clang++ versions + +* Fri Dec 14 2018 sguelton@redhat.com - 7.0.0-9 +- No longer Ignore -fstack-clash-protection option + +* Tue Dec 04 2018 sguelton@redhat.com - 7.0.0-8 +- Ensure rpmlint passes on specfile + +* Fri Nov 30 2018 Tom Stellard tstellar@redhat.com - 7.0.0-7 +- Drop python2 dependency from clang-tools-extra + +* Wed Nov 21 2018 sguelton@redhat.com - 7.0.0-6 +- Prune unneeded reference to llvm-test-suite sub-package + +* Mon Nov 19 2018 Tom Stellard tstellar@redhat.com - 7.0.0-5 +- Run 'make check-all' instead of 'make check-clang' + +* Mon Nov 19 2018 sergesanspaille sguelton@redhat.com - 7.0.0-4 +- Avoid Python2 + Python3 dependency for clang-analyzer + +* Mon Nov 05 2018 Tom Stellard tstellar@redhat.com - 7.0.0-3 +- User helper macro to fixup config.h for multilib + +* Tue Oct 02 2018 Tom Stellard tstellar@redhat.com - 7.0.0-2 +- Use correct shebang substitution for python scripts + +* Mon Sep 24 2018 Tom Stellard tstellar@redhat.com - 7.0.0-1 +- 7.0.0 Release + +* Wed Sep 19 2018 Tom Stellard tstellar@redhat.com - 7.0.0-0.16.rc3 +- Move builtin headers into clang-libs sub-package + +* Wed Sep 19 2018 Tom Stellard tstellar@redhat.com - 7.0.0-0.15.rc3 +- Remove ambiguous python shebangs + +* Thu Sep 13 2018 Tom Stellard tstellar@redhat.com - 7.0.0-0.14.rc3 +- Move unversioned shared objects to devel package + +* Thu Sep 13 2018 Tom Stellard tstellar@redhat.com - 7.0.0-0.13.rc3 +- Rebuild with new llvm-devel that disables rpath on install + +* Thu Sep 13 2018 Tom Stellard tstellar@redhat.com - 7.0.0-0.12.rc3 +- Fix clang++-7 symlink + +* Wed Sep 12 2018 Tom Stellard tstellar@redhat.com - 7.0.0-0.11.rc3 +- 7.0.0-rc3 Release + +* Mon Sep 10 2018 Tom Stellard tstellar@redhat.com - 7.0.0-0.10.rc2 +- Drop siod from llvm-test-suite + +* Fri Sep 07 2018 Tom Stellard tstellar@redhat.com - 7.0.0-0.9.rc2 +- Drop python2 dependency from clang package + +* Thu Sep 06 2018 Tom Stellard tstellar@redhat.com - 7.0.0-0.8.rc2 +- Drop all uses of python2 from lit tests + +* Sat Sep 01 2018 Tom Stellard tstellar@redhat.com - 7.0.0-0.7.rc2 +- Add Fedora specific version string + +* Tue Aug 28 2018 Tom Stellard tstellar@redhat.com - 7.0.0-0.6.rc2 +- 7.0.0-rc2 Release + +* Tue Aug 28 2018 Tom Stellard tstellar@redhat.com - 7.0.0-0.5.rc1 +- Enable unit tests + +* Fri Aug 17 2018 Tom Stellard tstellar@redhat.com - 7.0.0-0.4.rc1 +- Move llvm-test-suite into a sub-package + +* Fri Aug 17 2018 Tom Stellard tstellar@redhat.com - 7.0.0-0.3.rc1 +- Recommend the same version of compiler-rt + +* Wed Aug 15 2018 Tom Stellard tstellar@redhat.com - 7.0.0-0.2.rc1 +- Rebuild for f30 + +* Mon Aug 13 2018 Tom Stellard tstellar@redhat.com - 7.0.0-0.1.rc1 +- 7.0.0-rc1 Release + +* Mon Jul 23 2018 Tom Stellard tstellar@redhat.com - 6.0.1-3 +- Sync spec file with the clang6.0 package + +* Thu Jul 12 2018 Fedora Release Engineering releng@fedoraproject.org - 6.0.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Tue Jun 26 2018 Tom Stellard tstellar@redhat.com - 6.0.1-1 +- 6.0.1 Release + +* Wed Jun 13 2018 Tom Stellard tstellar@redhat.com - 6.0.1-0.2.rc2 +- 6.0.1-rc2 + +* Fri May 11 2018 Tom Stellard tstellar@redhat.com - 6.0.1-0.1.rc1 +- 6.0.1-rc1 Release + +* Fri Mar 23 2018 Tom Stellard tstellar@redhat.com - 6.0.0-5 +- Add a clang++-{version} symlink rhbz#1534098 + +* Thu Mar 22 2018 Tom Stellard tstellar@redhat.com - 6.0.0-4 +- Use correct script for running lit tests + +* Wed Mar 21 2018 Tom Stellard tstellar@redhat.com - 6.0.0-3 +- Fix toolchain detection so we don't default to using cross-compilers: + rhbz#1482491 + +* Mon Mar 12 2018 Tom Stellard tstellar@redhat.com - 6.0.0-2 +- Add Provides: clang(major) rhbz#1547444 + +* Fri Mar 09 2018 Tom Stellard tstellar@redhat.com - 6.0.0-1 +- 6.0.0 Release + +* Mon Feb 12 2018 Tom Stellard tstellar@redhat.com - 6.0.0-0.6.rc2 +- 6.0.0-rc2 Release + +* Wed Feb 07 2018 Fedora Release Engineering releng@fedoraproject.org - 6.0.0-0.5.rc1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Feb 01 2018 Tom Stellard tstellar@redhat.com - 6.0.0-0.4.rc1 +- Package python helper scripts for tools + +* Fri Jan 26 2018 Tom Stellard tstellar@redhat.com - 6.0.0-0.3.rc1 +- Ignore -fstack-clash-protection option instead of giving an error + +* Fri Jan 26 2018 Tom Stellard tstellar@redhat.com - 6.0.0-0.2.rc1 +- Package emacs integration files + +* Wed Jan 24 2018 Tom Stellard tstellar@redhat.com - 6.0.0-0.1.rc1 +- 6.0.0-rc1 Release + +* Wed Jan 24 2018 Tom Stellard tstellar@redhat.com - 5.0.1-3 +- Rebuild against llvm5.0 compatibility package +- rhbz#1538231 + +* Wed Jan 03 2018 Iryna Shcherbina ishcherb@redhat.com - 5.0.1-2 +- Update Python 2 dependency declarations to new packaging standards + (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) + +* Wed Dec 20 2017 Tom Stellard tstellar@redhat.com - 5.0.1-1 +- 5.0.1 Release + +* Wed Dec 13 2017 Tom Stellard tstellar@redhat.com - 5.0.0-3 +- Make compiler-rt a weak dependency and add a weak dependency on libomp + +* Mon Nov 06 2017 Merlin Mathesius mmathesi@redhat.com - 5.0.0-2 +- Cleanup spec file conditionals + +* Mon Oct 16 2017 Tom Stellard tstellar@redhat.com - 5.0.0-1 +- 5.0.0 Release + +* Wed Oct 04 2017 Rex Dieter rdieter@fedoraproject.org - 4.0.1-6 +- python2-clang subpkg (#1490997) +- tools-extras: tighten (internal) -libs dep +- %%install: avoid cd + +* Wed Aug 30 2017 Tom Stellard tstellar@redhat.com - 4.0.1-5 +- Add Requires: python for git-clang-format + +* Sun Aug 06 2017 Bjrn Esser besser82@fedoraproject.org - 4.0.1-4 +- Rebuilt for AutoReq cmake-filesystem + +* Wed Aug 02 2017 Fedora Release Engineering releng@fedoraproject.org - 4.0.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering releng@fedoraproject.org - 4.0.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Fri Jun 23 2017 Tom Stellard tstellar@redhat.com - 4.0.1-1 +- 4.0.1 Release. + +* Fri Jun 16 2017 Tom Stellard tstellar@redhat.com - 4.0.0-8 +- Enable make check-clang + +* Mon Jun 12 2017 Tom Stellard tstellar@redhat.com - 4.0.0-7 +- Package git-clang-format + +* Thu Jun 08 2017 Tom Stellard tstellar@redhat.com - 4.0.0-6 +- Generate man pages + +* Thu Jun 08 2017 Tom Stellard tstellar@redhat.com - 4.0.0-5 +- Ignore test-suite failures until all arches are fixed. + +* Mon Apr 03 2017 Tom Stellard tstellar@redhat.com - 4.0.0-4 +- Run llvm test-suite + +* Mon Mar 27 2017 Tom Stellard tstellar@redhat.com - 4.0.0-3 +- Enable eh/rtti, which are required by lldb. + +* Fri Mar 24 2017 Tom Stellard tstellar@redhat.com - 4.0.0-2 +- Fix clang-tools-extra build +- Fix install + +* Thu Mar 23 2017 Tom Stellard tstellar@redhat.com - 4.0.0-1 +- clang 4.0.0 final release + +* Mon Mar 20 2017 David Goerger david.goerger@yale.edu - 3.9.1-3 +- add clang-tools-extra rhbz#1328091 + +* Thu Mar 16 2017 Tom Stellard tstellar@redhat.com - 3.9.1-2 +- Enable build-id by default rhbz#1432403 + +* Thu Mar 02 2017 Dave Airlie airlied@redhat.com - 3.9.1-1 +- clang 3.9.1 final release + +* Fri Feb 10 2017 Fedora Release Engineering releng@fedoraproject.org - 3.9.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Mon Nov 14 2016 Nathaniel McCallum npmccallum@redhat.com - 3.9.0-3 +- Add Requires: compiler-rt to clang-libs. +- Without this, compiling with certain CFLAGS breaks. + +* Tue Nov 1 2016 Peter Robinson pbrobinson@fedoraproject.org 3.9.0-2 +- Rebuild for new arches + +* Fri Oct 14 2016 Dave Airlie airlied@redhat.com - 3.9.0-1 +- clang 3.9.0 final release + +* Fri Jul 01 2016 Stephan Bergmann sbergman@redhat.com - 3.8.0-2 +- Resolves: rhbz#1282645 add GCC abi_tag support + +* Thu Mar 10 2016 Dave Airlie airlied@redhat.com 3.8.0-1 +- clang 3.8.0 final release + +* Thu Mar 03 2016 Dave Airlie airlied@redhat.com 3.8.0-0.4 +- clang 3.8.0rc3 + +* Wed Feb 24 2016 Dave Airlie airlied@redhat.com - 3.8.0-0.3 +- package all libs into clang-libs. + +* Wed Feb 24 2016 Dave Airlie airlied@redhat.com 3.8.0-0.2 +- enable dynamic linking of clang against llvm + +* Thu Feb 18 2016 Dave Airlie airlied@redhat.com - 3.8.0-0.1 +- clang 3.8.0rc2 + +* Fri Feb 12 2016 Dave Airlie airlied@redhat.com 3.7.1-4 +- rebuild against latest llvm packages +- add BuildRequires llvm-static + +* Wed Feb 03 2016 Fedora Release Engineering releng@fedoraproject.org - 3.7.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Thu Jan 28 2016 Dave Airlie airlied@redhat.com 3.7.1-2 +- just accept clang includes moving to /usr/lib64, upstream don't let much else happen + +* Thu Jan 28 2016 Dave Airlie airlied@redhat.com 3.7.1-1 +- initial build in Fedora. + +* Tue Oct 06 2015 Jan Vcelak jvcelak@fedoraproject.org 3.7.0-100 +- initial version using cmake build system diff --git a/gating.yaml b/gating.yaml new file mode 100644 index 0000000..219cd2c --- /dev/null +++ b/gating.yaml @@ -0,0 +1,12 @@ +--- !Policy +product_versions: + - fedora-* +decision_context: bodhi_update_push_testing +rules: + - !PassingTestCaseRule {test_case_name: org.centos.prod.ci.pipeline.allpackages-build.package.test.functional.complete} +--- !Policy +product_versions: + - fedora-* +decision_context: bodhi_update_push_stable +rules: + - !PassingTestCaseRule {test_case_name: org.centos.prod.ci.pipeline.allpackages-build.package.test.functional.complete} diff --git a/sources b/sources new file mode 100644 index 0000000..6339267 --- /dev/null +++ b/sources @@ -0,0 +1,2 @@ +SHA512 (clang-9.0.1.src.tar.xz) = 3bcdcfd1ebb20a2cb15d57c608106b6e6e9c2eda4b781f573e84e0600b775bb7609f6df9edcf819ee5d91cc01a28ee089353c29fd57c23b867afbf6ad2f5cd13 +SHA512 (clang-tools-extra-9.0.1.src.tar.xz) = 4a671596460809f314ed96b0cc0be7f2498692275d0a7bd08266f9cdf4b85fb39cb4eea4131602e9a170a75eb5d9623449960f873e25b999e06c016387a1918d
arch-excludes@lists.fedoraproject.org