Compare commits

..

No commits in common. "f35" and "master" have entirely different histories.
f35 ... master

36 changed files with 338 additions and 1006 deletions

100
.gitignore vendored
View File

@ -99,103 +99,3 @@
/clang-tools-extra-10.0.0.src.tar.xz.sig
/clang-tools-extra-10.0.0.src.tar.xz
/clang-10.0.0.src.tar.xz
/clang-11.0.0rc1.src.tar.xz
/clang-tools-extra-11.0.0rc1.src.tar.xz
/clang-tools-extra-11.0.0rc1.src.tar.xz.sig
/clang-11.0.0rc1.src.tar.xz.sig
/clang-11.0.0rc2.src.tar.xz
/clang-tools-extra-11.0.0rc2.src.tar.xz
/clang-tools-extra-11.0.0rc2.src.tar.xz.sig
/clang-11.0.0rc2.src.tar.xz.sig
/clang-11.0.0rc3.src.tar.xz
/clang-tools-extra-11.0.0rc3.src.tar.xz
/clang-tools-extra-11.0.0rc3.src.tar.xz.sig
/clang-11.0.0rc3.src.tar.xz.sig
/clang-11.0.0rc5.src.tar.xz
/clang-11.0.0rc5.src.tar.xz.sig
/clang-tools-extra-11.0.0rc5.src.tar.xz
/clang-tools-extra-11.0.0rc5.src.tar.xz.sig
/clang-11.0.0rc6.src.tar.xz
/clang-11.0.0rc6.src.tar.xz.sig
/clang-tools-extra-11.0.0rc6.src.tar.xz
/clang-tools-extra-11.0.0rc6.src.tar.xz.sig
/clang-11.0.0.src.tar.xz
/clang-11.0.0.src.tar.xz.sig
/clang-tools-extra-11.0.0.src.tar.xz
/clang-tools-extra-11.0.0.src.tar.xz.sig
/clang-11.0.1rc1.src.tar.xz
/clang-11.0.1rc1.src.tar.xz.sig
/clang-tools-extra-11.0.1rc1.src.tar.xz
/clang-tools-extra-11.0.1rc1.src.tar.xz.sig
/clang-tools-extra-11.0.1rc2.src.tar.xz
/clang-tools-extra-11.0.1rc2.src.tar.xz.sig
/clang-11.0.1rc2.src.tar.xz.sig
/clang-11.0.1rc2.src.tar.xz
/clang-11.0.1.src.tar.xz
/clang-11.0.1.src.tar.xz.sig
/clang-tools-extra-11.0.1.src.tar.xz
/clang-tools-extra-11.0.1.src.tar.xz.sig
/clang-11.1.0rc1.src.tar.xz
/clang-tools-extra-11.1.0rc1.src.tar.xz
/clang-tools-extra-11.1.0rc1.src.tar.xz.sig
/clang-11.1.0rc1.src.tar.xz.sig
/clang-11.1.0rc2.src.tar.xz
/clang-tools-extra-11.1.0rc2.src.tar.xz
/clang-tools-extra-11.1.0rc2.src.tar.xz.sig
/clang-11.1.0rc2.src.tar.xz.sig
/clang-12.0.0rc1.src.tar.xz
/clang-tools-extra-12.0.0rc1.src.tar.xz
/clang-tools-extra-12.0.0rc1.src.tar.xz.sig
/clang-12.0.0rc1.src.tar.xz.sig
/clang-12.0.0rc2.src.tar.xz
/clang-tools-extra-12.0.0rc2.src.tar.xz
/clang-tools-extra-12.0.0rc2.src.tar.xz.sig
/clang-12.0.0rc2.src.tar.xz.sig
/clang-12.0.0rc3.src.tar.xz
/clang-12.0.0rc3.src.tar.xz.sig
/clang-tools-extra-12.0.0rc3.src.tar.xz
/clang-tools-extra-12.0.0rc3.src.tar.xz.sig
/clang-12.0.0rc4.src.tar.xz
/clang-tools-extra-12.0.0rc4.src.tar.xz
/clang-tools-extra-12.0.0rc4.src.tar.xz.sig
/clang-12.0.0rc4.src.tar.xz.sig
/clang-12.0.0rc5.src.tar.xz
/clang-tools-extra-12.0.0rc5.src.tar.xz
/clang-tools-extra-12.0.0rc5.src.tar.xz.sig
/clang-12.0.0rc5.src.tar.xz.sig
/clang-12.0.0.src.tar.xz
/clang-12.0.0.src.tar.xz.sig
/clang-tools-extra-12.0.0.src.tar.xz
/clang-tools-extra-12.0.0.src.tar.xz.sig
/clang-tools-extra-12.0.1rc1.src.tar.xz
/clang-tools-extra-12.0.1rc1.src.tar.xz.sig
/clang-12.0.1rc1.src.tar.xz
/clang-12.0.1rc1.src.tar.xz.sig
/clang-12.0.1rc3.src.tar.xz
/clang-12.0.1rc3.src.tar.xz.sig
/clang-tools-extra-12.0.1rc3.src.tar.xz
/clang-tools-extra-12.0.1rc3.src.tar.xz.sig
/clang-12.0.1.src.tar.xz
/clang-12.0.1.src.tar.xz.sig
/clang-tools-extra-12.0.1.src.tar.xz
/clang-tools-extra-12.0.1.src.tar.xz.sig
/clang-13.0.0rc1.src.tar.xz
/clang-13.0.0rc1.src.tar.xz.sig
/clang-tools-extra-13.0.0rc1.src.tar.xz
/clang-tools-extra-13.0.0rc1.src.tar.xz.sig
/clang-13.0.0rc3.src.tar.xz
/clang-13.0.0rc3.src.tar.xz.sig
/clang-tools-extra-13.0.0rc3.src.tar.xz
/clang-tools-extra-13.0.0rc3.src.tar.xz.sig
/clang-13.0.0rc4.src.tar.xz
/clang-tools-extra-13.0.0rc4.src.tar.xz.sig
/clang-tools-extra-13.0.0rc4.src.tar.xz
/clang-13.0.0rc4.src.tar.xz.sig
/clang-13.0.0.src.tar.xz
/clang-13.0.0.src.tar.xz.sig
/clang-tools-extra-13.0.0.src.tar.xz.sig
/clang-tools-extra-13.0.0.src.tar.xz
/clang-13.0.1.src.tar.xz
/clang-13.0.1.src.tar.xz.sig
/clang-tools-extra-13.0.1.src.tar.xz
/clang-tools-extra-13.0.1.src.tar.xz.sig

View File

@ -1,59 +0,0 @@
From d68a5a7817dc0d43853d8b84c9185dc24338664f Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar@redhat.com>
Date: Wed, 6 Oct 2021 05:32:44 +0000
Subject: [PATCH] Driver: Add a gcc equivalent triple to the list of triples to
search
There are some gcc triples, like x86_64-redhat-linux, that provide the
same behavior as a clang triple with a similar name (e.g.
x86_64-redhat-linux-gnu). When searching for a gcc install, also search
for a gcc equivalent triple if one exists.
Differential Revision: https://reviews.llvm.org/D111207
---
clang/lib/Driver/ToolChains/Gnu.cpp | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp
index fe5bda5c6605..fd4a7f72be14 100644
--- a/clang/lib/Driver/ToolChains/Gnu.cpp
+++ b/clang/lib/Driver/ToolChains/Gnu.cpp
@@ -1884,6 +1884,18 @@ static llvm::StringRef getGCCToolchainDir(const ArgList &Args,
return GCC_INSTALL_PREFIX;
}
+/// This function takes a 'clang' triple and converts it to an equivalent gcc
+/// triple.
+static const char *ConvertToGccTriple(StringRef CandidateTriple) {
+ return llvm::StringSwitch<const char *>(CandidateTriple)
+ .Case("aarch64-redhat-linux-gnu", "aarch64-redhat-linux")
+ .Case("i686-redhat-linux-gnu", "i686-redhat-linux")
+ .Case("ppc64le-redhat-linux-gnu", "ppc64le-redhat-linux")
+ .Case("s390x-redhat-linux-gnu", "s390x-redhat-linux")
+ .Case("x86_64-redhat-linux-gnu", "x86_64-redhat-linux")
+ .Default(NULL);
+}
+
/// Initialize a GCCInstallationDetector from the driver.
///
/// This performs all of the autodetection and sets up the various paths.
@@ -1904,6 +1916,16 @@ void Generic_GCC::GCCInstallationDetector::init(
// The compatible GCC triples for this particular architecture.
SmallVector<StringRef, 16> CandidateTripleAliases;
SmallVector<StringRef, 16> CandidateBiarchTripleAliases;
+
+ // In some cases gcc uses a slightly different triple than clang for the
+ // same target. Convert the clang triple to the gcc equivalent and use that
+ // to search for the gcc install.
+ const char *ConvertedTriple = ConvertToGccTriple(TargetTriple.str());
+ if (ConvertedTriple) {
+ CandidateTripleAliases.push_back(ConvertedTriple);
+ CandidateBiarchTripleAliases.push_back(ConvertedTriple);
+ }
+
CollectLibDirsAndTriples(TargetTriple, BiarchVariantTriple, CandidateLibDirs,
CandidateTripleAliases, CandidateBiarchLibDirs,
CandidateBiarchTripleAliases);
--
2.26.2

View File

@ -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

View File

@ -1,36 +0,0 @@
From 62eaebcb6bb872830299efa3f87506f1d23ef366 Mon Sep 17 00:00:00 2001
From: serge-sans-paille <sguelton@redhat.com>
Date: Mon, 13 Sep 2021 10:25:45 +0200
Subject: [PATCH][clang] Fix scan-build-py executable lookup path
Once installed, scan-build-py doesn't know anything about its auxiliary
executable and can't find them.
Use relative path wrt. scan-build-py script.
Differential Revision: https://reviews.llvm.org/D109659
(cherry picked from commit c84755a046bbdcd0564693e30b2508034b06002b)
---
clang/tools/scan-build-py/lib/libscanbuild/analyze.py | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/clang/tools/scan-build-py/lib/libscanbuild/analyze.py b/clang/tools/scan-build-py/lib/libscanbuild/analyze.py
index 9a249a8..d83ff2a 100644
--- a/clang/tools/scan-build-py/lib/libscanbuild/analyze.py
+++ b/clang/tools/scan-build-py/lib/libscanbuild/analyze.py
@@ -39,8 +39,10 @@ from libscanbuild.shell import decode
__all__ = ['scan_build', 'analyze_build', 'analyze_compiler_wrapper']
-COMPILER_WRAPPER_CC = 'analyze-cc'
-COMPILER_WRAPPER_CXX = 'analyze-c++'
+scanbuild_dir = os.path.dirname(__import__('sys').argv[0])
+
+COMPILER_WRAPPER_CC = os.path.join(scanbuild_dir, '..', 'libexec', 'analyze-cc')
+COMPILER_WRAPPER_CXX = os.path.join(scanbuild_dir, '..', 'libexec', 'analyze-c++')
CTU_EXTDEF_MAP_FILENAME = 'externalDefMap.txt'
CTU_TEMP_DEFMAP_FOLDER = 'tmpExternalDefMaps'
--
1.8.3.1

View File

@ -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/lib/Driver/ToolChain.cpp b/lib/Driver/ToolChain.cpp
index 88a627e..cb99844 100644
--- a/lib/Driver/ToolChain.cpp
+++ b/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/test/Driver/netbsd.cpp b/test/Driver/netbsd.cpp
index 4af7d83..ff18c62 100644
--- a/test/Driver/netbsd.cpp
+++ b/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

View File

@ -0,0 +1,25 @@
From 856b789b9de0895786ba23681c4337172676e01e Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar@redhat.com>
Date: Fri, 31 Jan 2020 11:04:57 -0800
Subject: [PATCH] clang: Don't install static libraries
---
clang/cmake/modules/AddClang.cmake | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/clang/cmake/modules/AddClang.cmake b/clang/cmake/modules/AddClang.cmake
index cbd618e..9cf076a 100644
--- a/clang/cmake/modules/AddClang.cmake
+++ b/clang/cmake/modules/AddClang.cmake
@@ -97,7 +97,7 @@ macro(add_clang_library name)
if(TARGET ${name})
target_link_libraries(${name} INTERFACE ${LLVM_COMMON_LIBS})
- if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY OR ARG_INSTALL_WITH_TOOLCHAIN)
+ if (ARG_SHARED AND (NOT LLVM_INSTALL_TOOLCHAIN_ONLY OR ARG_INSTALL_WITH_TOOLCHAIN))
set(export_to_clangtargets)
if(${name} IN_LIST LLVM_DISTRIBUTION_COMPONENTS OR
"clang-libraries" IN_LIST LLVM_DISTRIBUTION_COMPONENTS OR
--
1.8.3.1

View File

@ -1,39 +0,0 @@
From 3dc5722d5c7673a879f2b4680369d3ac8b6b64b6 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar@redhat.com>
Date: Wed, 4 Aug 2021 14:05:38 -0700
Subject: [PATCH] cmake: Allow shared libraries to customize the soname using
LLVM_ABI_REVISION
The LLVM_ABI_REVISION variable is intended to be used for release
candidates which introduce an ABI change to a shared library. This
variable can be specified per library, so there is not one global value
for all of LLVM.
For example, if we LLVM X.0.0-rc2 introduces an ABI change for a library
compared with LLVM X.0.0-rc1, then the LLVM_ABI_REVISION number for
library will be incremented by 1.
In the main branch, LLVM_ABI_REVISION should always be 0, it is only
meant to be used in the release branch.
Differential Revision: https://reviews.llvm.org/D105594
---
clang/tools/clang-shlib/CMakeLists.txt | 5 +++++
3 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/clang/tools/clang-shlib/CMakeLists.txt b/clang/tools/clang-shlib/CMakeLists.txt
index 9c1f8ea452b3..4d785924e4bb 100644
--- a/clang/tools/clang-shlib/CMakeLists.txt
+++ b/clang/tools/clang-shlib/CMakeLists.txt
@@ -1,3 +1,8 @@
+# In the main branch, LLVM_ABI_REVISION should always be 0. In the release
+# branches, this should be incremented before each release candidate every
+# time the ABI of libclang-cpp.so changes.
+set(LLVM_ABI_REVISION 0)
+
# Building libclang-cpp.so fails if LLVM_ENABLE_PIC=Off
if (NOT LLVM_ENABLE_PIC)
return()
--
2.27.0

View File

@ -0,0 +1,99 @@
From 11857d49948b845dcfd7c7f78595095e3add012d Mon Sep 17 00:00:00 2001
From: Rong Xu <xur@google.com>
Date: Tue, 25 Feb 2020 08:04:01 -0800
Subject: [PATCH] [remark][diagnostics] [codegen] Fix PR44896
This patch fixes PR44896. For IR input files, option fdiscard-value-names
should be ignored as we need named values in loadModule().
Commit 60d3947922 sets this option after loadModule() where valued names
already created. This creates an inconsistent state in setNameImpl()
that leads to a seg fault.
This patch forces fdiscard-value-names to be false for IR input files.
This patch also emits a warning of "ignoring -fdiscard-value-names" if
option fdiscard-value-names is explictly enabled in the commandline for
IR input files.
Differential Revision: https://reviews.llvm.org/D74878
---
clang/include/clang/Basic/DiagnosticDriverKinds.td | 3 +++
clang/lib/CodeGen/CodeGenAction.cpp | 3 +++
clang/lib/Driver/ToolChains/Clang.cpp | 10 +++++++++-
clang/test/CodeGen/PR44896.ll | 15 +++++++++++++++
4 files changed, 30 insertions(+), 1 deletion(-)
create mode 100644 clang/test/CodeGen/PR44896.ll
diff --git a/clang/include/clang/Basic/DiagnosticDriverKinds.td b/clang/include/clang/Basic/DiagnosticDriverKinds.td
index ecd871e..48ece91 100644
--- a/clang/include/clang/Basic/DiagnosticDriverKinds.td
+++ b/clang/include/clang/Basic/DiagnosticDriverKinds.td
@@ -271,6 +271,9 @@ def warn_drv_unsupported_debug_info_opt_for_target : Warning<
InGroup<UnsupportedTargetOpt>;
def warn_c_kext : Warning<
"ignoring -fapple-kext which is valid for C++ and Objective-C++ only">;
+def warn_ignoring_fdiscard_for_bitcode : Warning<
+ "ignoring -fdiscard-value-names for LLVM Bitcode">,
+ InGroup<UnusedCommandLineArgument>;
def warn_drv_input_file_unused : Warning<
"%0: '%1' input unused%select{ when '%3' is present|}2">,
InGroup<UnusedCommandLineArgument>;
diff --git a/clang/lib/CodeGen/CodeGenAction.cpp b/clang/lib/CodeGen/CodeGenAction.cpp
index 5ebc34c..81946b1 100644
--- a/clang/lib/CodeGen/CodeGenAction.cpp
+++ b/clang/lib/CodeGen/CodeGenAction.cpp
@@ -1146,6 +1146,9 @@ void CodeGenAction::ExecuteAction() {
CI.getTargetOpts(), CI.getLangOpts(),
CI.getFrontendOpts().ShowTimers,
std::move(LinkModules), *VMContext, nullptr);
+ // PR44896: Force DiscardValueNames as false. DiscardValueNames cannot be
+ // true here because the valued names are needed for reading textual IR.
+ Ctx.setDiscardValueNames(false);
Ctx.setDiagnosticHandler(
std::make_unique<ClangDiagnosticHandler>(CodeGenOpts, &Result));
diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp
index 19a23c9..d387a1d 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -4332,8 +4332,16 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
// Discard value names in assert builds unless otherwise specified.
if (Args.hasFlag(options::OPT_fdiscard_value_names,
- options::OPT_fno_discard_value_names, !IsAssertBuild))
+ options::OPT_fno_discard_value_names, !IsAssertBuild)) {
+ if (Args.hasArg(options::OPT_fdiscard_value_names) &&
+ (std::any_of(Inputs.begin(), Inputs.end(),
+ [](const clang::driver::InputInfo &II) {
+ return types::isLLVMIR(II.getType());
+ }))) {
+ D.Diag(diag::warn_ignoring_fdiscard_for_bitcode);
+ }
CmdArgs.push_back("-discard-value-names");
+ }
// Set the main file name, so that debug info works even with
// -save-temps.
diff --git a/clang/test/CodeGen/PR44896.ll b/clang/test/CodeGen/PR44896.ll
new file mode 100644
index 0000000..a4d3445
--- /dev/null
+++ b/clang/test/CodeGen/PR44896.ll
@@ -0,0 +1,15 @@
+; RUN: %clang -fdiscard-value-names -S %s -o /dev/null 2>&1 | FileCheck --check-prefix=WARNING %s
+; RUN: %clang -S %s -o /dev/null 2>&1 | FileCheck --check-prefix=NOWARNING %s
+; RUN: %clang_cc1 -S -emit-llvm %s -discard-value-names -o /dev/null
+; PR 44896
+
+; WARNING: ignoring -fdiscard-value-names for LLVM Bitcode
+; NOWARNING-NOT: ignoring -fdiscard-value-names for LLVM Bitcode
+
+target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64--linux-gnu"
+
+define linkonce i8* @b(i8* %a) {
+ ret i8* %a
+}
+
--
1.8.3.1

View File

@ -1,29 +0,0 @@
From c87abee7356b8fde81512ffceadd520776c465d2 Mon Sep 17 00:00:00 2001
From: serge-sans-paille <sguelton@redhat.com>
Date: Thu, 25 Feb 2021 14:09:29 +0100
Subject: [PATCH] [PATCH][clang] Make -funwind-tables the default on all archs
---
clang/lib/Driver/ToolChains/Gnu.cpp | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp
index a27841dc5985..7489e6785150 100644
--- a/clang/lib/Driver/ToolChains/Gnu.cpp
+++ b/clang/lib/Driver/ToolChains/Gnu.cpp
@@ -2709,6 +2709,12 @@ bool Generic_GCC::IsUnwindTablesDefault(const ArgList &Args) const {
case llvm::Triple::ppc64:
case llvm::Triple::ppc64le:
case llvm::Triple::x86_64:
+
+ // Enable -funwind-tables on all architectures supported by Fedora:
+ // rhbz#1655546
+ case llvm::Triple::x86:
+ case llvm::Triple::systemz:
+ case llvm::Triple::arm:
return true;
default:
return false;
--
2.27.0

View File

@ -1,17 +1,17 @@
From c6b921c8d833546946b70a8c2640032fd7c62461 Mon Sep 17 00:00:00 2001
From 1f26a0284925859b72ee520ce74452d77d822409 Mon Sep 17 00:00:00 2001
From: serge-sans-paille <sguelton@redhat.com>
Date: Thu, 25 Feb 2021 14:04:52 +0100
Subject: [PATCH 1/6] [PATCH][clang] Reorganize gtest integration
Date: Mon, 28 Jan 2019 19:12:27 +0000
Subject: [PATCH 2/2] [PATCH] gtest reorg
---
clang/CMakeLists.txt | 12 +++++-------
CMakeLists.txt | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/clang/CMakeLists.txt b/clang/CMakeLists.txt
index 9e74014..0185276 100644
--- a/clang/CMakeLists.txt
+++ b/clang/CMakeLists.txt
@@ -153,12 +153,6 @@ if( CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR )
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c2016a45ca..48ea3c3bb9 100644
--- a/CMakeLists.txt
+++ b/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()
@ -24,7 +24,7 @@ index 9e74014..0185276 100644
else()
# Seek installed Lit.
find_program(LLVM_LIT
@@ -537,7 +531,11 @@ endif()
@@ -507,7 +501,11 @@ endif()
if( CLANG_INCLUDE_TESTS )
@ -38,5 +38,5 @@ index 9e74014..0185276 100644
list(APPEND CLANG_TEST_DEPS ClangUnitTests)
list(APPEND CLANG_TEST_PARAMS
--
1.8.3.1
2.19.2

View File

@ -1,25 +0,0 @@
From 88704fc2eabb9dd19a9c3eb81a9b3dc37d95651c Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar@redhat.com>
Date: Fri, 31 Jan 2020 11:04:57 -0800
Subject: [PATCH][clang] Don't install static libraries
---
clang/cmake/modules/AddClang.cmake | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/clang/cmake/modules/AddClang.cmake b/clang/cmake/modules/AddClang.cmake
index 5752f4277444..0f52822d91f0 100644
--- a/clang/cmake/modules/AddClang.cmake
+++ b/clang/cmake/modules/AddClang.cmake
@@ -113,7 +113,7 @@ macro(add_clang_library name)
if(TARGET ${lib})
target_link_libraries(${lib} INTERFACE ${LLVM_COMMON_LIBS})
- if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY OR ARG_INSTALL_WITH_TOOLCHAIN)
+ if (ARG_SHARED AND (NOT LLVM_INSTALL_TOOLCHAIN_ONLY OR ARG_INSTALL_WITH_TOOLCHAIN))
get_target_export_arg(${name} Clang export_to_clangtargets UMBRELLA clang-libraries)
install(TARGETS ${lib}
COMPONENT ${lib}
--
2.30.2

View File

@ -1,3 +0,0 @@
# clang needs libstdc++-devel installed in order to compile c++ programs.
addFilter("E: devel-dependency libstdc\+\+-devel")
addFilter("E: explicit-lib-dependency libstdc\+\+-devel")

View File

@ -1,11 +1,10 @@
%bcond_with compat_build
%bcond_without check
%global compat_build 0
%global maj_ver 13
%global maj_ver 10
%global min_ver 0
%global patch_ver 1
#global rc_ver 4
%global clang_version %{maj_ver}.%{min_ver}.%{patch_ver}
%global patch_ver 0
#%%global rc_ver 6
%global baserelease 1
%global clang_tools_binaries \
%{_bindir}/clang-apply-replacements \
@ -14,6 +13,7 @@
%{_bindir}/clang-doc \
%{_bindir}/clang-extdef-mapping \
%{_bindir}/clang-format \
%{_bindir}/clang-import-test \
%{_bindir}/clang-include-fixer \
%{_bindir}/clang-move \
%{_bindir}/clang-offload-bundler \
@ -22,7 +22,6 @@
%{_bindir}/clang-refactor \
%{_bindir}/clang-rename \
%{_bindir}/clang-reorder-fields \
%{_bindir}/clang-repl \
%{_bindir}/clang-scan-deps \
%{_bindir}/clang-tidy \
%{_bindir}/clangd \
@ -38,22 +37,27 @@
%{_bindir}/clang-cl \
%{_bindir}/clang-cpp \
%if %{with compat_build}
%global pkg_name clang%{maj_ver}
%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}
%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 %{install_includedir}
%global pkg_includedir %{_includedir}/llvm%{maj_ver}.%{min_ver}
%global pkg_libdir %{install_libdir}
%else
%global pkg_name clang
%global install_prefix /usr
%global pkg_libdir %{_libdir}
%endif
%if 0%{?fedora} || 0%{?rhel} > 7
%bcond_without python3
%else
%bcond_with python3
%endif
%global build_install_prefix %{buildroot}%{install_prefix}
@ -63,46 +67,48 @@
%global _smp_mflags -j8
%endif
%global clang_srcdir clang-%{clang_version}%{?rc_ver:rc%{rc_ver}}.src
%global clang_tools_srcdir clang-tools-extra-%{clang_version}%{?rc_ver:rc%{rc_ver}}.src
%if !%{maj_ver} && 0%{?rc_ver}
%global abi_revision 2
%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: %{clang_version}%{?rc_ver:~rc%{rc_ver}}
Release: 1%{?dist}
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: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{clang_version}%{?rc_ver:-rc%{rc_ver}}/%{clang_srcdir}.tar.xz
Source3: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{clang_version}%{?rc_ver:-rc%{rc_ver}}/%{clang_srcdir}.tar.xz.sig
%if %{without compat_build}
Source1: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{clang_version}%{?rc_ver:-rc%{rc_ver}}/%{clang_tools_srcdir}.tar.xz
Source2: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{clang_version}%{?rc_ver:-rc%{rc_ver}}/%{clang_tools_srcdir}.tar.xz.sig
%if 0%{?rc_ver:1}
Source0: https://prereleases.llvm.org/%{version}/rc%{rc_ver}/%{clang_srcdir}.tar.xz
Source3: https://prereleases.llvm.org/%{version}/rc%{rc_ver}/%{clang_srcdir}.tar.xz.sig
%else
Source0: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/%{clang_srcdir}.tar.xz
Source3: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/%{clang_srcdir}.tar.xz.sig
%endif
Source4: tstellar-gpg-key.asc
%if %{without compat_build}
Source5: macros.%{name}
%if !0%{?compat_build}
%if 0%{?rc_ver:1}
Source1: https://prereleases.llvm.org/%{version}/rc%{rc_ver}/%{clang_tools_srcdir}.tar.xz
Source2: https://prereleases.llvm.org/%{version}/rc%{rc_ver}/%{clang_tools_srcdir}.tar.xz.sig
%else
Source1: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/%{clang_tools_srcdir}.tar.xz
Source2: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/%{clang_tools_srcdir}.tar.xz.sig
%endif
%endif
Source4: https://prereleases.llvm.org/%{version}/hans-gpg-key.asc
# Patches for clang
Patch0: 0001-PATCH-clang-Reorganize-gtest-integration.patch
Patch1: 0002-PATCH-clang-Make-funwind-tables-the-default-on-all-a.patch
Patch2: 0003-PATCH-clang-Don-t-install-static-libraries.patch
Patch3: 0001-Driver-Add-a-gcc-equivalent-triple-to-the-list-of-tr.patch
Patch4: 0001-cmake-Allow-shared-libraries-to-customize-the-soname.patch
Patch5: 0001-PATCH-clang-Fix-scan-build-py-executable-lookup-path.patch
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
# Not Upstream
Patch15: 0001-clang-Don-t-install-static-libraries.patch
BuildRequires: gcc
BuildRequires: gcc-c++
BuildRequires: cmake
BuildRequires: ninja-build
%if %{with compat_build}
BuildRequires: llvm%{maj_ver}-devel = %{version}
BuildRequires: llvm%{maj_ver}-static = %{version}
%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}
@ -119,8 +125,11 @@ BuildRequires: ncurses-devel
# 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
@ -128,30 +137,9 @@ BuildRequires: libatomic
# We need python3-devel for pathfix.py.
BuildRequires: python3-devel
# For reproducible pyc file generation
# See https://docs.fedoraproject.org/en-US/packaging-guidelines/Python_Appendix/#_byte_compilation_reproducibility
BuildRequires: /usr/bin/marshalparser
%global py_reproducible_pyc_path %{buildroot}%{python3_sitelib}
# Needed for %%multilib_fix_c_header
BuildRequires: multilib-rpm-config
# For origin certification
BuildRequires: gnupg2
# scan-build uses these perl modules so they need to be installed in order
# to run the tests.
BuildRequires: perl(Digest::MD5)
BuildRequires: perl(File::Copy)
BuildRequires: perl(File::Find)
BuildRequires: perl(File::Path)
BuildRequires: perl(File::Temp)
BuildRequires: perl(FindBin)
BuildRequires: perl(Hash::Util)
BuildRequires: perl(lib)
BuildRequires: perl(Term::ANSIColor)
BuildRequires: perl(Text::ParseWords)
BuildRequires: perl(Sys::Hostname)
BuildRequires: chrpath
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
@ -161,6 +149,8 @@ Requires: %{name}-libs%{?_isa} = %{version}-%{release}
Requires: libstdc++-devel
Requires: gcc-c++
Requires: emacs-filesystem
Provides: clang(major) = %{maj_ver}
Conflicts: compiler-rt < %{version}
@ -176,13 +166,8 @@ 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.
Install compiler-rt if you want the Blocks C language extension or to
enable sanitization and profiling options when building, and
libomp-devel to enable -fopenmp.
%package libs
Summary: Runtime library for clang
Requires: %{name}-resource-filesystem%{?_isa} = %{version}
Recommends: compiler-rt%{?_isa} = %{version}
# libomp-devel is required, so clang can find the omp.h header when compiling
# with -fopenmp.
@ -194,7 +179,7 @@ Runtime library for clang.
%package devel
Summary: Development header files for clang
%if %{without compat_build}
%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}
@ -204,14 +189,7 @@ Requires: %{name}-libs = %{version}-%{release}
%description devel
Development header files for clang.
%package resource-filesystem
Summary: Filesystem package that owns the clang resource directory
Provides: %{name}-resource-filesystem(major) = %{maj_ver}
%description resource-filesystem
This package owns the clang resouce directory: $libdir/clang/$version/
%if %{without compat_build}
%if !0%{?compat_build}
%package analyzer
Summary: A source code analysis framework
License: NCSA and MIT
@ -257,58 +235,43 @@ Requires: python3
%prep
%{gpgverify} --keyring='%{SOURCE4}' --signature='%{SOURCE3}' --data='%{SOURCE0}'
%if %{with compat_build}
%autosetup -n %{clang_srcdir} -p2
%if 0%{?compat_build}
%autosetup -n %{clang_srcdir} -p1
%else
%{gpgverify} --keyring='%{SOURCE4}' --signature='%{SOURCE2}' --data='%{SOURCE1}'
%setup -T -q -b 1 -n %{clang_tools_srcdir}
%autopatch -m200 -p2
# failing test case
rm test/clang-tidy/checkers/altera-struct-pack-align.cpp
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}
%autopatch -M200 -p2
# failing test case
rm test/CodeGen/profile-filter.c
%patch4 -p1 -b .gtest
%patch11 -p1 -b .libcxx-fix
%patch13 -p2 -b .unwind-all
%patch15 -p2 -b .no-install-static
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 \
tools/scan-build-py/bin/* \
tools/scan-build-py/libexec/*
tools/scan-view/bin/scan-view
%endif
%build
# We run the builders out of memory on armv7 and i686 when LTO is enabled
%ifarch %{arm} i686
%define _lto_cflags %{nil}
%else
# This package does not ship any object files or static libraries, so we
# don't need -ffat-lto-objects.
%global _lto_cflags %(echo %{_lto_cflags} | sed 's/-ffat-lto-objects//')
%endif
# lto builds with gcc 11 fail while running the lit tests.
%define _lto_cflags %{nil}
%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 /')
@ -318,10 +281,7 @@ sed -i 's/\@FEDORA_LLVM_LIB_SUFFIX\@//g' test/lit.cfg.py
# 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.
# -DLLVM_ENABLE_NEW_PASS_MANAGER=ON can be removed once this patch is committed:
# https://reviews.llvm.org/D107628
%cmake -G Ninja \
%cmake .. -G Ninja \
-DLLVM_PARALLEL_LINK_JOBS=1 \
-DLLVM_LINK_LLVM_DYLIB:BOOL=ON \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
@ -331,14 +291,12 @@ sed -i 's/\@FEDORA_LLVM_LIB_SUFFIX\@//g' test/lit.cfg.py
-DCMAKE_C_FLAGS_RELWITHDEBINFO="%{optflags} -DNDEBUG" \
-DCMAKE_CXX_FLAGS_RELWITHDEBINFO="%{optflags} -DNDEBUG" \
%endif
%if %{with compat_build}
-DCLANG_BUILD_TOOLS:BOOL=OFF \
-DLLVM_CONFIG:FILEPATH=%{_bindir}/llvm-config-%{maj_ver} \
%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_CLANG_TOOLS_EXTRA_SOURCE_DIR=../%{clang_tools_srcdir} \
-DLLVM_EXTERNAL_LIT=%{_bindir}/lit \
-DLLVM_MAIN_SRC_DIR=%{_datadir}/llvm/src \
%if 0%{?__isa_bits} == 64
@ -348,10 +306,10 @@ sed -i 's/\@FEDORA_LLVM_LIB_SUFFIX\@//g' test/lit.cfg.py
%endif
%endif
\
%if %{with compat_build}
-DLLVM_TABLEGEN_EXE:FILEPATH=%{_bindir}/llvm-tblgen-%{maj_ver} \
%else
%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 \
@ -361,52 +319,38 @@ sed -i 's/\@FEDORA_LLVM_LIB_SUFFIX\@//g' test/lit.cfg.py
-DLLVM_ENABLE_EH=ON \
-DLLVM_ENABLE_RTTI=ON \
-DLLVM_BUILD_DOCS=ON \
-DLLVM_ENABLE_NEW_PASS_MANAGER=ON \
-DLLVM_ENABLE_SPHINX=ON \
-DCLANG_LINK_CLANG_DYLIB=ON \
%{?abi_revision:-DLLVM_ABI_REVISION=%{abi_revision}} \
-DSPHINX_WARNINGS_AS_ERRORS=OFF \
\
-DCLANG_BUILD_EXAMPLES:BOOL=OFF \
-DBUILD_SHARED_LIBS=OFF \
-DCLANG_REPOSITORY_STRING="%{?fedora:Fedora}%{?rhel:Red Hat} %{version}-%{release}" \
-DCLANG_DEFAULT_UNWINDLIB=libgcc
-DCLANG_REPOSITORY_STRING="%{?fedora:Fedora}%{?rhel:Red Hat} %{version}-%{release}"
%cmake_build
%ninja_build
%install
%ninja_install -C _build
%cmake_install
%if %{with compat_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
rm -Rf %{buildroot}%{install_prefix}/lib/libear
rm -Rf %{buildroot}%{install_prefix}/lib/libscanbuild
# 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
# File in the macros file for other packages to use. We are not doing this
# in the compat package, because the version macros would # conflict with
# eachother if both clang and the clang compat package were installed together.
install -p -m0644 -D %{SOURCE5} %{buildroot}%{_rpmmacrodir}/macros.%{name}
sed -i -e "s|@@CLANG_MAJOR_VERSION@@|%{maj_ver}|" \
-e "s|@@CLANG_MINOR_VERSION@@|%{min_ver}|" \
-e "s|@@CLANG_PATCH_VERSION@@|%{patch_ver}|" \
%{buildroot}%{_rpmmacrodir}/macros.%{name}
# 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
# install scanbuild-py to python sitelib.
mv %{buildroot}%{_prefix}/lib/{libear,libscanbuild} %{buildroot}%{python3_sitelib}
%py_byte_compile %{__python3} %{buildroot}%{python3_sitelib}/{libear,libscanbuild}
# multilib fix
%multilib_fix_c_header --file %{_includedir}/clang/Config/config.h
@ -421,9 +365,9 @@ 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}%{_docdir}/clang/html
rm -Rvf %{buildroot}%{_datadir}/clang/clang-doc-default-stylesheet.css
rm -Rvf %{buildroot}%{_datadir}/clang/index.js
rm -Rvf %{buildroot}%{_pkgdocdir}
rm -Rvf %{buildroot}%{install_prefix}/share/clang/clang-doc-default-stylesheet.css
rm -Rvf %{buildroot}%{install_prefix}/share/clang/index.js
# TODO: What are the Fedora guidelines for packaging bash autocomplete files?
rm -vf %{buildroot}%{_datadir}/clang/bash-autocomplete.sh
@ -440,49 +384,25 @@ ln -s clang++ %{buildroot}%{_bindir}/clang++-%{maj_ver}
# Fix permission
chmod u-x %{buildroot}%{_mandir}/man1/scan-build.1*
# create a link to clang's resource directory that is "constant" across minor
# version bumps
# this is required for packages like ccls that hardcode the link to clang's
# resource directory to not require rebuilds on minor version bumps
# Fix for bugs like rhbz#1807574
pushd %{buildroot}%{_libdir}/clang/
ln -s %{version} %{maj_ver}
popd
%endif
# Create sub-directories in the clang resource directory that will be
# populated by other packages
mkdir -p %{buildroot}%{pkg_libdir}/clang/%{version}/{include,lib,share}/
# Remove clang-tidy headers. We don't ship the libraries for these.
rm -Rvf %{buildroot}%{_includedir}/clang-tidy/
%if %{without compat_build}
# Add a symlink in /usr/bin to clang-format-diff
ln -s %{_datadir}/clang/clang-format-diff.py %{buildroot}%{_bindir}/clang-format-diff
%endif
%check
%if %{without compat_build}
%if %{with check}
%if !0%{?compat_build}
# requires lit.py from LLVM utilities
# FIXME: Fix failing ARM tests
LD_LIBRARY_PATH=%{buildroot}/%{_libdir} %cmake_build --target check-all || \
%endif
%ifarch %{arm}
# 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
false
:
%endif
%endif
%if %{without compat_build}
%if !0%{?compat_build}
%files
%license LICENSE.TXT
%{clang_binaries}
%{_mandir}/man1/clang.1.gz
%{_mandir}/man1/clang++.1.gz
@ -491,7 +411,7 @@ false
%endif
%files libs
%if %{without compat_build}
%if !0%{?compat_build}
%{_libdir}/clang/
%{_libdir}/*.so.*
%else
@ -500,13 +420,12 @@ false
%endif
%files devel
%if %{without compat_build}
%if !0%{?compat_build}
%{_libdir}/*.so
%{_includedir}/clang/
%{_includedir}/clang-c/
%{_libdir}/cmake/*
%dir %{_datadir}/clang/
%{_rpmmacrodir}/macros.%{name}
%else
%{pkg_libdir}/*.so
%{pkg_includedir}/clang/
@ -514,41 +433,21 @@ false
%{pkg_libdir}/cmake/
%endif
%files resource-filesystem
%dir %{pkg_libdir}/clang/%{version}/
%dir %{pkg_libdir}/clang/%{version}/include/
%dir %{pkg_libdir}/clang/%{version}/lib/
%dir %{pkg_libdir}/clang/%{version}/share/
%if %{without compat_build}
%{pkg_libdir}/clang/%{maj_ver}
%endif
%if %{without compat_build}
%if !0%{?compat_build}
%files analyzer
%{_bindir}/scan-view
%{_bindir}/scan-build
%{_bindir}/analyze-build
%{_bindir}/intercept-build
%{_bindir}/scan-build-py
%{_libexecdir}/ccc-analyzer
%{_libexecdir}/c++-analyzer
%{_libexecdir}/analyze-c++
%{_libexecdir}/analyze-cc
%{_libexecdir}/intercept-c++
%{_libexecdir}/intercept-cc
%{_datadir}/scan-view/
%{_datadir}/scan-build/
%{_mandir}/man1/scan-build.1.*
%{python3_sitelib}/libear
%{python3_sitelib}/libscanbuild
%files tools-extra
%{clang_tools_binaries}
%{_bindir}/c-index-test
%{_bindir}/find-all-symbols
%{_bindir}/modularize
%{_bindir}/clang-format-diff
%{_mandir}/man1/diagtool.1.gz
%{_emacs_sitestartdir}/clang-format.el
%{_emacs_sitestartdir}/clang-rename.el
@ -557,7 +456,7 @@ false
%{_datadir}/clang/clang-format-diff.py*
%{_datadir}/clang/clang-include-fixer.py*
%{_datadir}/clang/clang-tidy-diff.py*
%{_bindir}/run-clang-tidy
%{_datadir}/clang/run-clang-tidy.py*
%{_datadir}/clang/run-find-all-symbols.py*
%{_datadir}/clang/clang-rename.py*
@ -570,200 +469,6 @@ false
%endif
%changelog
* Tue Jul 19 2022 Tom Stellard <tstellar@redhat.com> - 13.0.1-1
- 13.0.1 Release
* Wed Oct 06 2021 Tom Stellard <tstellar@redhat.com> - 13.0.0-3
- Fix gcc detection with redhat triples
* Tue Oct 05 2021 Tom Stellard <tstellar@redhat.com> - 13.0.0-2
- Drop abi_revision from soname
* Fri Oct 01 2021 Tom Stellard <tstellar@redhat.com> - 13.0.0-1
- 13.0.0 Release
* Sat Sep 18 2021 Tom Stellard <tstellar@redhat.com> - 13.0.0~rc1-5
- 13.0.0-rc3 Release
* Tue Sep 14 2021 Konrad Kleine <kkleine@redhat.com> - 13.0.0~rc1-4
- Add --without=check option
* Fri Sep 10 2021 sguelton@redhat.com - 13.0.0~rc1-3
- Apply scan-build-py intergation patch
* Thu Sep 09 2021 Tom Stellard <tstellar@redhat.com> - 13.0.0~rc1-2
- Add macros.clang file
* Fri Aug 06 2021 Tom Stellard <tstellar@redhat.com> - 13.0.0~rc1-1
- 13.0.0-rc1 Release
* Thu Jul 22 2021 Tom Stellard <tstellar@redhat.com> - 12.0.1-3
- Fix compat build
* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 12.0.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Tue Jul 13 2021 Tom Stellard <tstellar@redhat.com> - 12.0.1-1
- 12.0.1 Release
* Fri Jul 09 2021 Tom Stellard <tstellar@redhat.com> - 12.0.1~rc3-2
- Fix ambiguous python shebangs
* Wed Jun 30 2021 Tom Stellard <tstellar@redhat.com> - clang-12.0.1~rc3-1
- 12.0.1-rc3 Release
* Tue Jun 08 2021 Tom Stellard <tstellar@redhat.com> - 12.0.1~rc1-3
- Only enable -funwind-tables by default on Fedora arches
* Fri Jun 04 2021 Python Maint <python-maint@redhat.com> - 12.0.1~rc1-2
- Rebuilt for Python 3.10
* Thu May 27 2021 Tom Stellard <tstellar@redhat.com> - clang-12.0.1~rc1-1
- 12.0.1-rc1 Release
* Tue May 18 2021 sguelton@redhat.com - 12.0.0-2
- Use the alternative-managed version of llvm-config
* Fri Apr 16 2021 Tom Stellard <tstellar@redhat.cm> - 12.0.0-1
- 12.0.0 Release
* Wed Apr 14 2021 Tom Stellard <tstellar@redhat.com> - 12.0.0-0.12.rc5
- Add symlink to clang-format-diff in /usr/bin
- rhbz#1939018
* Thu Apr 08 2021 sguelton@redhat.com - 12.0.0-0.11.rc5
- New upstream release candidate
* Sat Apr 03 2021 sguelton@redhat.com - 12.0.0-0.10.rc4
- Make pyc files from python3-clang reproducible
* Fri Apr 02 2021 sguelton@redhat.com - 12.0.0-0.9.rc4
- New upstream release candidate
* Wed Mar 31 2021 Jonathan Wakely <jwakely@redhat.com> - 12.0.0-0.8.rc3
- Rebuilt for removed libstdc++ symbols (#1937698)
* Mon Mar 15 2021 sguelton@redhat.com - 12.0.0-0.7.rc3
- Apply patch D97846 to fix rhbz#1934065
* Mon Mar 15 2021 Timm Bäder <tbaeder@redhat.com> 12.0.0-0.6.rc3
- Set CLANG_DEFAULT_UNWIND_LIB instead of using custom patch
- Add toolchains test to the tests.yml
* Thu Mar 11 2021 sguelton@redhat.com - 12.0.0-0.5.rc3
- LLVM 12.0.0 rc3
* Tue Mar 09 2021 sguelton@redhat.com - 12.0.0-0.4.rc2
- rebuilt
* Mon Mar 01 2021 sguelton@redhat.com - 12.0.0-0.3.rc2
- Reapply some wrongly removed patch
* Wed Feb 24 2021 sguelton@redhat.com - 12.0.0-0.2.rc2
- 12.0.0-rc2 release
* Sun Feb 14 2021 sguelton@redhat.com - 12.0.0-0.1.rc1
- 12.0.0-rc1 release
* Tue Feb 09 2021 Tom Stellard <tstellar@redhat.com> - 11.1.0-0.5.rc2
- Remove some unnecessary scan-view files
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 11.1.0-0.4.rc2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Fri Jan 22 2021 Serge Guelton - 11.1.0-0.3.rc2
- 11.1.0-rc2 release
* Wed Jan 20 2021 Serge Guelton - 11.1.0-0.2.rc1
- rebuilt with https://reviews.llvm.org/D94941 applied.
* Thu Jan 14 2021 Serge Guelton - 11.1.0-0.1.rc1
- 11.1.0-rc1 release
* Wed Jan 06 2021 Serge Guelton - 11.0.1-4
- LLVM 11.0.1 final
* Sun Dec 20 2020 sguelton@redhat.com - 11.0.1-3.rc2
- llvm 11.0.1-rc2
* Wed Dec 16 2020 Tom Stellard <tstellar@redhat.com> - 11.0.1-2.rc1
- Don't build with -flto
* Tue Dec 01 2020 sguelton@redhat.com - 11.0.1-1.rc1
- llvm 11.0.1-rc1
* Thu Oct 29 2020 Tom Stellard <tstellar@redhat.com> - 11.0.0-3
- Remove -ffat-lto-objects compiler flag
* Wed Oct 28 2020 Tom Stellard <tstellar@redhat.com> - 11.0.0-2
- Add clang-resource-filesystem sub-package
* Thu Oct 15 2020 sguelton@redhat.com - 11.0.0-1
- Fix NVR
* Mon Oct 12 2020 sguelton@redhat.com - 11.0.0-0.7
- llvm 11.0.0 - final release
* Thu Oct 08 2020 sguelton@redhat.com - 11.0.0-0.6.rc6
- 11.0.0-rc6
* Fri Oct 02 2020 sguelton@redhat.com - 11.0.0-0.5.rc5
- 11.0.0-rc5 Release
* Sun Sep 27 2020 sguelton@redhat.com - 11.0.0-0.4.rc3
- Fix NVR
* Thu Sep 24 2020 sguelton@redhat.com - 11.0.0-0.1.rc3
- 11.0.0-rc3 Release
* Tue Sep 22 2020 sguelton@redhat.com - 11.0.0-0.3.rc2
- Prefer gcc toolchains with libgcc_s
* Tue Sep 01 2020 sguelton@redhat.com - 11.0.0-0.2.rc2
- Normalize some doc directory locations
* Tue Sep 01 2020 sguelton@redhat.com - 11.0.0-0.1.rc2
- 11.0.0-rc2 Release
- Use %%license macro
* Tue Aug 11 2020 Tom Stellard <tstellar@redhat.com> - 11.0.0-0.2.rc1
- Fix test failures
* Mon Aug 10 2020 Tom Stellard <tstellar@redhat.com> - 11.0.0-0.1.rc1
- 11.0.0-rc1 Release
* Tue Aug 04 2020 Tom Stellard <tstellar@redhat.com> - 10.0.0-11
- Remove Requires: emacs-filesystem
* Sat Aug 01 2020 Fedora Release Engineering <releng@fedoraproject.org> - 10.0.0-10
- Second attempt - Rebuilt for
https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Tue Jul 28 2020 Jeff Law <law@redhat.com> - 10.0.0-9
- Disable LTO on arm and i686
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 10.0.0-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Mon Jul 20 2020 sguelton@redhat.com - 10.0.0-7
- Update cmake macro usage
- Finalize source verification
* Fri Jun 26 2020 Tom Stellard <tstellar@redhat.com> - 10.0.0-6
- Add cet.h header
* Mon Jun 08 2020 Tom Stellard <tstellar@redhat.com> - 10.0.0-5
- Accept multiple --config options
* Wed Jun 3 2020 Dan Čermák <dan.cermak@cgc-instruments.com> - 10.0.0-4
- Add symlink to %%{_libdir}/clang/%%{maj_ver} for persistent access to the resource directory accross minor version bumps
* Mon May 25 2020 Miro Hrončok <mhroncok@redhat.com> - 10.0.0-3
- Rebuilt for Python 3.9
* Tue May 19 2020 sguelton@redhat.com - 10.0.0-2
- Backport ad7211df6f257e39da2e5a11b2456b4488f32a1e, see rhbz#1825593
* Thu Mar 26 2020 sguelton@redhat.com - 10.0.0-1
- 10.0.0 final

View File

@ -3,10 +3,10 @@ product_versions:
- fedora-*
decision_context: bodhi_update_push_testing
rules:
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
- !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: fedora-ci.koji-build.tier0.functional}
- !PassingTestCaseRule {test_case_name: org.centos.prod.ci.pipeline.allpackages-build.package.test.functional.complete}

View File

@ -1,16 +0,0 @@
%clang_major_version @@CLANG_MAJOR_VERSION@@
%clang_minor_version @@CLANG_MINOR_VERSION@@
%clang_patch_version @@CLANG_PATCH_VERSION@@
%clang_version %{clang_major_version}.%{clang_minor_version}.%{clang_patch_version}
# This is the path to the clang resource directory that has clang's internal
# headers and libraries. This path should be used by packages that need to
# install files into this directory. This macro's value changes every time
# clang's version changes.
%clang_resource_dir %{_libdir}/clang/%{clang_version}
# This is the path to the clang resource directory that should be used
# by packages that need to read files from this directory at runtime.
# This macro only changes when clang's major version changes.
%clang_resource_dir_readonly %{_libdir}/clang/%{clang_major_version}

View File

@ -1,4 +1,4 @@
SHA512 (clang-13.0.1.src.tar.xz) = 10abb601ce33ec0ec1e966221d958dd6206cfd5b178f8af0850408ed6adf2a9e193afb87a6449d65bb636e70a4debc3818035ab7bfcddf35a54a603851779d57
SHA512 (clang-13.0.1.src.tar.xz.sig) = c3b82b828b328e242515ffe613557a62eea182a352d70c92fab1fa7ebc7ee06d08f25f84d57461e48f0594fc420b1abad1be61048ae90f016d93c3186cfdc783
SHA512 (clang-tools-extra-13.0.1.src.tar.xz) = a7875a2556a0e51a2620b89d060087a6d2dc3c09c11aec18f6953abbce1ece4eafe1caeafa8f0dfe92f0b721d505abbbedb42236c2db9c5f17f0df078ed81d1d
SHA512 (clang-tools-extra-13.0.1.src.tar.xz.sig) = 242bbe606e1a79d443258f07c7c7b01e4fa186c66175be8383fe092c8babd14a3b6e462b5f0955051dd02129071d7e0bb9d0c36896a4e1773346f9c4178aafe2
SHA512 (clang-10.0.0.src.tar.xz.sig) = cb46d9c616de9ba6e11602269f93a003fc24951b75844d2d62ad7c435bd9ace0357bf396141b9a3e97034f617ad8f301a1a5556a3feb94b17647f8b76c0b6236
SHA512 (clang-tools-extra-10.0.0.src.tar.xz.sig) = f0527b315ce9f2c86a19dabd462d0d466ac0843262f06d5f2b69333f77457ec9cb99f8ce9fdaa00048dfaec3de5613fb884c4259acd4a75463ba3c6714e35423
SHA512 (clang-tools-extra-10.0.0.src.tar.xz) = 33b6019e64e9ac94bd7c000b77a4a927602a2705baa9b370e392a56b53fe09c8dad1ff7d583892729e9eb291440433ad7d71df768a96d927e4dbc1988fc01d99
SHA512 (clang-10.0.0.src.tar.xz) = b1cccc13c46abcda3d689f51d486fa613ecec40c581c72d8b15951715100a2b8fb24370161601e6716cdba5a784337439e99ec2f0766f988e9cce92de6d775da

View File

@ -1,7 +0,0 @@
#!/bin/bash
set -ex
# Check that clang-format-diff is in PATH.
# rhbz#1939018
clang-format-diff -h

View File

@ -1,5 +0,0 @@
#include <stdio.h>
void hello() {
printf("Hello World\n");
}

View File

@ -1,5 +0,0 @@
#include <iostream>
void hello() {
std::cout << "Hello World\n";
}

View File

@ -1,6 +0,0 @@
void hello();
int main(int argc, char **argv) {
hello();
return 0;
}

View File

@ -1,6 +0,0 @@
void hello();
int main(int argc, char **argv) {
hello();
return 0;
}

View File

@ -1,20 +0,0 @@
#!/bin/bash
set -ex pipefail
cflags=`rpm -D '%toolchain clang' -E %{build_cflags}`
cxxflags=`rpm -D '%toolchain clang' -E %{build_cxxflags}`
ldflags=`rpm -D '%toolchain clang' -E %{build_ldflags}`
# Test a c program
clang $cflags -c hello.c -o hello.o
clang $cflags -c main.c -o main.o
clang $ldflags -o hello main.o hello.o
./hello | grep "Hello World"
# Test a cxx program
clang++ $cxxflags -c hello.cpp -o hello-cpp.o
clang++ $cxxflags -c main.cpp -o main-cpp.o
clang++ $ldflags -o hello-cpp main-cpp.o hello-cpp.o
./hello-cpp | grep "Hello World"

View File

@ -1,38 +0,0 @@
#!/bin/bash
usage() {
echo "usage `basename $0` [OPTIONS]"
echo " --threads NUM The number of threads to use for running tests."
}
thread_args=""
repo_url=https://github.com/opencollab/llvm-toolchain-integration-test-suite
while [ $# -gt 0 ]; do
case $1 in
--threads)
shift
threads="$1"
;;
* )
echo "unknown option: $1"
echo ""
usage
exit 1
;;
esac
shift
done
if [ -n "$threads" ]; then
thread_args="-j$threads"
fi
set -xe
cd $(mktemp -d -p /var/tmp)
git clone $repo_url
cd llvm-toolchain-integration-test-suite
mkdir _build && cd _build
cmake .. -GNinja
ninja $thread_args check

View File

@ -1,8 +0,0 @@
#include <omp.h>
#include <stdio.h>
int main(int argc, char **argv) {
int nthreads = omp_get_num_threads();
printf("Num Threads: %d\n", nthreads);
return 0;
}

View File

@ -1,7 +0,0 @@
#!/bin/bash
set -exo pipefail
clang -fopenmp openmp-compile-link-test.c
./a.out | grep "Num Threads: 1"

View File

@ -1,29 +0,0 @@
#!/bin/sh
# Tests for using a full LLVM toolchain: clang + compiler-rt + libcxx + lld
set -ex pipefail
# Test compile a C program.
cat << EOF | \
clang -fuse-ld=lld -rtlib=compiler-rt -x c - && \
./a.out | grep 'Hello World'
#include<stdio.h>
int main(int argc, char **argv) {
printf("Hello World\n");
return 0;
}
EOF
# Test compile a C++ program.
cat << EOF | \
clang++ -x c++ -fuse-ld=lld -rtlib=compiler-rt -stdlib=libc++ - && \
./a.out | grep 'Hello World'
#include <iostream>
int main(int argc, char **argv) {
std::cout << "Hello World\n";
return 0;
}
EOF

View File

@ -1,10 +0,0 @@
#!/bin/sh
set -e
set -x
tmp_cpp=`mktemp -t XXXXX.cpp`
tmp_dir=`mktemp -d`
echo 'int main(int argc, char*argv[]) { while(argc--) new int(); return 0; }' > $tmp_cpp
scan-build -o $tmp_dir clang++ -c $tmp_cpp -o /dev/null
(scan-view --no-browser $tmp_dir/* & WPID=$! && sleep 10s && kill $WPID)

View File

@ -1,15 +0,0 @@
#include <charconv>
#include <iostream>
#include <cstring>
using namespace std;
int main(int argc, char **argv)
{
size_t r=0;
const char *begin = argv[1];
const char *end = begin + strlen(begin);
from_chars(begin, end, r);
cout << r << '\n';
return 0;
}

View File

@ -1,6 +0,0 @@
#!/bin/sh
set -e
set -x
clang++ from_chars.cpp
./a.out 100 | grep 100

View File

@ -9,13 +9,14 @@
with_items:
- libomp
- libomp-devel
- clang
- clang-libs
roles:
- role: standard-test-basic
tags:
- classic
repositories:
- repo: "https://src.fedoraproject.org/tests/clang.git"
dest: "clang"
required_packages:
- clang
tests:
- libomp
- clang/libomp

View File

@ -17,47 +17,19 @@
- lld
- compiler-rt
- libcxx-devel
- libcxx-static
- glibc-devel
- glibc-static
- gcc
# Required for fedora-flags:
- annobin
- redhat-rpm-config
# Required for clang-format-diff
- clang-tools-extra
# the requirements below are for the integration suite
- cmake
- llvm-devel
- clang
- clang-analyzer
- clang-tools-extra
- compiler-rt
- ninja-build
- libcxx-devel
- libomp-devel
- python-lit
- lld
- lldb
- git
- make
- libstdc++-static
- clang-devel
repositories:
- repo: "https://src.fedoraproject.org/rpms/llvm-test-suite.git"
- repo: "https://src.fedoraproject.org/tests/llvm-test-suite.git"
dest: "llvm-test-suite"
- repo: "https://src.fedoraproject.org/tests/clang.git"
dest: "clang"
tests:
- rhbz#482491:
dir: ./
run: find /usr -name 'libgcc_s.so*' && echo "int main(){}" | clang -v -x c -
- llvm-test-suite/tests/test-suite
# ABI test suite is too greedy on the FS
#- llvm-test-suite/abi-test-suite
- rhbz_1657544
- rhbz_1647130
- llvm-toolchain
- fedora-flags
- toolchains
- clang-format-diff
- integration-test-suite
run: echo "int main(){}" | clang -x c -
- llvm-test-suite/test-suite
- llvm-test-suite/abi-test-suite
- clang/rhbz_1657544
- clang/rhbz_1647130
- clang/llvm-toolchain

View File

@ -17,7 +17,7 @@
tags:
- classic
repositories:
- repo: "https://src.fedoraproject.org/rpms/pocl.git"
- repo: "https://src.fedoraproject.org/tests/pocl.git"
dest: "pocl"
required_packages:
- ocl-icd-devel
@ -25,4 +25,4 @@
- gcc
tests:
# rhbz#1582884
- pocl/tests/simple-opencl-no-clang
- pocl/simple-opencl-no-clang:

View File

@ -1,5 +0,0 @@
#include<stdio.h>
int main(int argc, char **argv) {
printf("Hello World\n");
return 0;
}

View File

@ -1,5 +0,0 @@
#include <iostream>
int main(int argc, char **argv) {
std::cout << "Hello World\n";
return 0;
}

View File

@ -1,80 +0,0 @@
#!/bin/sh
set pipefail
status=0
test_toolchain() {
toolchain=$@
args=""
while [ $# -gt 0 ]; do
case $1 in
clang)
compiler=$1
src=hello.c
;;
clang++)
compiler=$1
src=hello.cpp
;;
compiler-rt)
args="$args -rtlib=$1"
;;
libc++)
args="$args -stdlib=$1"
;;
lld)
args="$args -fuse-ld=$1"
;;
*)
args="$args $1"
;;
esac
shift
done
cmd="$compiler $args $src"
rm -f a.out
echo "* $toolchain"
echo " command: $cmd"
if $cmd && ./a.out | grep -q 'Hello World'; then
echo " PASS"
else
echo " FAIL"
status=1
fi
}
clang --version
dnf info installed clang | grep ^Source
echo ""
for compiler in clang clang++; do
for rtlib in "" compiler-rt; do
for linker in "" lld; do
for cxxlib in "" libc++; do
if [ "$compiler" = "clang" -a -n "$cxxlib" ]; then
continue
fi
for args in "" -static; do
# Skip known failures
# TODO: Fix these
if [[ "$args" = "-static" && "$rtlib" = "compiler-rt" ]]; then
continue
fi
# Static libc++ needs -pthread
if [[ "$args" = "-static" && "$cxxlib" = "libc++" ]]; then
args="$args -pthread"
fi
test_toolchain $compiler $rtlib $linker $cxxlib $args
done
done
done
done
done
exit $status

Binary file not shown.