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=06583a25f....
Change:
+%ifarch s390x i686 ppc64le %{arm}
Thanks.
Full change:
============
commit 06583a25fd5990b59c8bbee52c6bd680c791cac9
Author: serge-sans-paille <sguelton(a)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(a)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(a)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(a)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(a)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(a)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(a)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(a)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(a)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://%{?rc_ver:pre}releases.llvm.org/%{version}/%{?rc_ver:rc%{rc_ver}}/%{clang_srcdir}.tar.xz
+%if !0%{?compat_build}
+Source1: http://%{?rc_ver:pre}releases.llvm.org/%{version}/%{?rc_ver:rc%{rc_ver}}/%{clang_tools_srcdir}.tar.xz
+%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(a)redhat.com - 9.0.1-4
+- Sync specfile with clang9.0 package
+
+* Tue Jan 28 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 9.0.1-3
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
+* Fri Jan 10 2020 Tom Stellard <tstellar(a)redhat.com> - 9.0.1-2
+- Fix crash with kernel bpf self-tests
+
+* Thu Dec 19 2019 Tom Stellard <tstellar(a)redhat.com> - 9.0.1-1
+- 9.0.1 Release
+
+* Wed Dec 11 2019 Tom Stellard <tstellar(a)redhat.com> - 9.0.0-3
+- Add explicit requires for clang-libs to fix rpmdiff errors
+
+* Tue Dec 10 2019 sguelton(a)redhat.com - 9.0.0-2
+- Activate -funwind-tables on all arches, see rhbz#1655546.
+
+* Thu Sep 19 2019 Tom Stellard <tstellar(a)redhat.com> - 9.0.0-1
+- 9.0.0 Release
+
+* Wed Sep 11 2019 Tom Stellard <tstellar(a)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(a)redhat.com> - 9.0.0-0.1.rc3
+- 9.0.0 Release candidate 3
+
+* Tue Aug 20 2019 sguelton(a)redhat.com - 8.0.0-4
+- Rebuilt for Python 3.8
+
+* Mon Aug 19 2019 Miro Hronok <mhroncok(a)redhat.com> - 8.0.0-3.2
+- Rebuilt for Python 3.8
+
+* Wed Jul 24 2019 Fedora Release Engineering <releng(a)fedoraproject.org> -
8.0.0-3.1
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
+* Thu May 16 2019 sguelton(a)redhat.com - 8.0.0-3
+- Fix for rhbz#1674031
+
+* Fri Apr 12 2019 sguelton(a)redhat.com - 8.0.0-2
+- Remove useless patch thanks to GCC upgrade
+
+* Wed Mar 20 2019 sguelton(a)redhat.com - 8.0.0-1
+- 8.0.0 final
+
+* Tue Mar 12 2019 sguelton(a)redhat.com - 8.0.0-0.6.rc4
+- 8.0.0 Release candidate 4
+
+* Mon Mar 4 2019 sguelton(a)redhat.com - 8.0.0-0.5.rc3
+- Cleanup specfile after llvm dependency update
+
+* Mon Mar 4 2019 sguelton(a)redhat.com - 8.0.0-0.4.rc3
+- 8.0.0 Release candidate 3
+
+* Mon Feb 25 2019 tstellar(a)redhat.com - 8.0.0-0.3.rc2
+- Fix compiling with -stdlib=libc++
+
+* Thu Feb 21 2019 sguelton(a)redhat.com - 8.0.0-0.2.rc2
+- 8.0.0 Release candidate 2
+
+* Sat Feb 09 2019 sguelton(a)redhat.com - 8.0.0-0.1.rc1
+- 8.0.0 Release candidate 1
+
+* Tue Feb 05 2019 sguelton(a)redhat.com - 7.0.1-6
+- Update patch for Python3 port of scan-view
+
+* Tue Feb 05 2019 sguelton(a)redhat.com - 7.0.1-5
+- Working CI test suite
+
+* Mon Feb 04 2019 sguelton(a)redhat.com - 7.0.1-4
+- Workaround gcc-9 bug when compiling bitfields
+
+* Fri Feb 01 2019 sguelton(a)redhat.com - 7.0.1-3
+- Fix uninitialized error detected by gcc-9
+
+* Thu Jan 31 2019 Fedora Release Engineering <releng(a)fedoraproject.org> -
7.0.1-2.1
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
+
+* Wed Dec 19 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.1-2
+- Fix for rhbz#1657544
+
+* Tue Dec 18 2018 sguelton(a)redhat.com - 7.0.1-1
+- 7.0.1
+
+* Tue Dec 18 2018 sguelton(a)redhat.com - 7.0.0-10
+- Install proper manpage symlinks for clang/clang++ versions
+
+* Fri Dec 14 2018 sguelton(a)redhat.com - 7.0.0-9
+- No longer Ignore -fstack-clash-protection option
+
+* Tue Dec 04 2018 sguelton(a)redhat.com - 7.0.0-8
+- Ensure rpmlint passes on specfile
+
+* Fri Nov 30 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-7
+- Drop python2 dependency from clang-tools-extra
+
+* Wed Nov 21 2018 sguelton(a)redhat.com - 7.0.0-6
+- Prune unneeded reference to llvm-test-suite sub-package
+
+* Mon Nov 19 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-5
+- Run 'make check-all' instead of 'make check-clang'
+
+* Mon Nov 19 2018 sergesanspaille <sguelton(a)redhat.com> - 7.0.0-4
+- Avoid Python2 + Python3 dependency for clang-analyzer
+
+* Mon Nov 05 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-3
+- User helper macro to fixup config.h for multilib
+
+* Tue Oct 02 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-2
+- Use correct shebang substitution for python scripts
+
+* Mon Sep 24 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-1
+- 7.0.0 Release
+
+* Wed Sep 19 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-0.16.rc3
+- Move builtin headers into clang-libs sub-package
+
+* Wed Sep 19 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-0.15.rc3
+- Remove ambiguous python shebangs
+
+* Thu Sep 13 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-0.14.rc3
+- Move unversioned shared objects to devel package
+
+* Thu Sep 13 2018 Tom Stellard <tstellar(a)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(a)redhat.com> - 7.0.0-0.12.rc3
+- Fix clang++-7 symlink
+
+* Wed Sep 12 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-0.11.rc3
+- 7.0.0-rc3 Release
+
+* Mon Sep 10 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-0.10.rc2
+- Drop siod from llvm-test-suite
+
+* Fri Sep 07 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-0.9.rc2
+- Drop python2 dependency from clang package
+
+* Thu Sep 06 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-0.8.rc2
+- Drop all uses of python2 from lit tests
+
+* Sat Sep 01 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-0.7.rc2
+- Add Fedora specific version string
+
+* Tue Aug 28 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-0.6.rc2
+- 7.0.0-rc2 Release
+
+* Tue Aug 28 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-0.5.rc1
+- Enable unit tests
+
+* Fri Aug 17 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-0.4.rc1
+- Move llvm-test-suite into a sub-package
+
+* Fri Aug 17 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-0.3.rc1
+- Recommend the same version of compiler-rt
+
+* Wed Aug 15 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-0.2.rc1
+- Rebuild for f30
+
+* Mon Aug 13 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-0.1.rc1
+- 7.0.0-rc1 Release
+
+* Mon Jul 23 2018 Tom Stellard <tstellar(a)redhat.com> - 6.0.1-3
+- Sync spec file with the clang6.0 package
+
+* Thu Jul 12 2018 Fedora Release Engineering <releng(a)fedoraproject.org> - 6.0.1-2
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
+
+* Tue Jun 26 2018 Tom Stellard <tstellar(a)redhat.com> - 6.0.1-1
+- 6.0.1 Release
+
+* Wed Jun 13 2018 Tom Stellard <tstellar(a)redhat.com> - 6.0.1-0.2.rc2
+- 6.0.1-rc2
+
+* Fri May 11 2018 Tom Stellard <tstellar(a)redhat.com> - 6.0.1-0.1.rc1
+- 6.0.1-rc1 Release
+
+* Fri Mar 23 2018 Tom Stellard <tstellar(a)redhat.com> - 6.0.0-5
+- Add a clang++-{version} symlink rhbz#1534098
+
+* Thu Mar 22 2018 Tom Stellard <tstellar(a)redhat.com> - 6.0.0-4
+- Use correct script for running lit tests
+
+* Wed Mar 21 2018 Tom Stellard <tstellar(a)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(a)redhat.com> - 6.0.0-2
+- Add Provides: clang(major) rhbz#1547444
+
+* Fri Mar 09 2018 Tom Stellard <tstellar(a)redhat.com> - 6.0.0-1
+- 6.0.0 Release
+
+* Mon Feb 12 2018 Tom Stellard <tstellar(a)redhat.com> - 6.0.0-0.6.rc2
+- 6.0.0-rc2 Release
+
+* Wed Feb 07 2018 Fedora Release Engineering <releng(a)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(a)redhat.com> - 6.0.0-0.4.rc1
+- Package python helper scripts for tools
+
+* Fri Jan 26 2018 Tom Stellard <tstellar(a)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(a)redhat.com> - 6.0.0-0.2.rc1
+- Package emacs integration files
+
+* Wed Jan 24 2018 Tom Stellard <tstellar(a)redhat.com> - 6.0.0-0.1.rc1
+- 6.0.0-rc1 Release
+
+* Wed Jan 24 2018 Tom Stellard <tstellar(a)redhat.com> - 5.0.1-3
+- Rebuild against llvm5.0 compatibility package
+- rhbz#1538231
+
+* Wed Jan 03 2018 Iryna Shcherbina <ishcherb(a)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(a)redhat.com> - 5.0.1-1
+- 5.0.1 Release
+
+* Wed Dec 13 2017 Tom Stellard <tstellar(a)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(a)redhat.com> - 5.0.0-2
+- Cleanup spec file conditionals
+
+* Mon Oct 16 2017 Tom Stellard <tstellar(a)redhat.com> - 5.0.0-1
+- 5.0.0 Release
+
+* Wed Oct 04 2017 Rex Dieter <rdieter(a)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(a)redhat.com> - 4.0.1-5
+- Add Requires: python for git-clang-format
+
+* Sun Aug 06 2017 Bjrn Esser <besser82(a)fedoraproject.org> - 4.0.1-4
+- Rebuilt for AutoReq cmake-filesystem
+
+* Wed Aug 02 2017 Fedora Release Engineering <releng(a)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(a)fedoraproject.org> - 4.0.1-2
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
+
+* Fri Jun 23 2017 Tom Stellard <tstellar(a)redhat.com> - 4.0.1-1
+- 4.0.1 Release.
+
+* Fri Jun 16 2017 Tom Stellard <tstellar(a)redhat.com> - 4.0.0-8
+- Enable make check-clang
+
+* Mon Jun 12 2017 Tom Stellard <tstellar(a)redhat.com> - 4.0.0-7
+- Package git-clang-format
+
+* Thu Jun 08 2017 Tom Stellard <tstellar(a)redhat.com> - 4.0.0-6
+- Generate man pages
+
+* Thu Jun 08 2017 Tom Stellard <tstellar(a)redhat.com> - 4.0.0-5
+- Ignore test-suite failures until all arches are fixed.
+
+* Mon Apr 03 2017 Tom Stellard <tstellar(a)redhat.com> - 4.0.0-4
+- Run llvm test-suite
+
+* Mon Mar 27 2017 Tom Stellard <tstellar(a)redhat.com> - 4.0.0-3
+- Enable eh/rtti, which are required by lldb.
+
+* Fri Mar 24 2017 Tom Stellard <tstellar(a)redhat.com> - 4.0.0-2
+- Fix clang-tools-extra build
+- Fix install
+
+* Thu Mar 23 2017 Tom Stellard <tstellar(a)redhat.com> - 4.0.0-1
+- clang 4.0.0 final release
+
+* Mon Mar 20 2017 David Goerger <david.goerger(a)yale.edu> - 3.9.1-3
+- add clang-tools-extra rhbz#1328091
+
+* Thu Mar 16 2017 Tom Stellard <tstellar(a)redhat.com> - 3.9.1-2
+- Enable build-id by default rhbz#1432403
+
+* Thu Mar 02 2017 Dave Airlie <airlied(a)redhat.com> - 3.9.1-1
+- clang 3.9.1 final release
+
+* Fri Feb 10 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 3.9.0-4
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
+
+* Mon Nov 14 2016 Nathaniel McCallum <npmccallum(a)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(a)fedoraproject.org> 3.9.0-2
+- Rebuild for new arches
+
+* Fri Oct 14 2016 Dave Airlie <airlied(a)redhat.com> - 3.9.0-1
+- clang 3.9.0 final release
+
+* Fri Jul 01 2016 Stephan Bergmann <sbergman(a)redhat.com> - 3.8.0-2
+- Resolves: rhbz#1282645 add GCC abi_tag support
+
+* Thu Mar 10 2016 Dave Airlie <airlied(a)redhat.com> 3.8.0-1
+- clang 3.8.0 final release
+
+* Thu Mar 03 2016 Dave Airlie <airlied(a)redhat.com> 3.8.0-0.4
+- clang 3.8.0rc3
+
+* Wed Feb 24 2016 Dave Airlie <airlied(a)redhat.com> - 3.8.0-0.3
+- package all libs into clang-libs.
+
+* Wed Feb 24 2016 Dave Airlie <airlied(a)redhat.com> 3.8.0-0.2
+- enable dynamic linking of clang against llvm
+
+* Thu Feb 18 2016 Dave Airlie <airlied(a)redhat.com> - 3.8.0-0.1
+- clang 3.8.0rc2
+
+* Fri Feb 12 2016 Dave Airlie <airlied(a)redhat.com> 3.7.1-4
+- rebuild against latest llvm packages
+- add BuildRequires llvm-static
+
+* Wed Feb 03 2016 Fedora Release Engineering <releng(a)fedoraproject.org> - 3.7.1-3
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
+
+* Thu Jan 28 2016 Dave Airlie <airlied(a)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(a)redhat.com> 3.7.1-1
+- initial build in Fedora.
+
+* Tue Oct 06 2015 Jan Vcelak <jvcelak(a)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