Compare commits
No commits in common. "imports/c8s-stream-rhel8/clang-12.0.1-3.module+el8.5.0+13171+e10978c4" and "c8-stream-rhel8" have entirely different histories.
imports/c8
...
c8-stream-
@ -1,3 +1,4 @@
|
||||
e3cdd3fb39c78a5bcb0a1d5706678cf8643a48f6 SOURCES/clang-12.0.1.src.tar.xz
|
||||
42f179bb59432c4d2785239952853ad6308d0863 SOURCES/clang-tools-extra-12.0.1.src.tar.xz
|
||||
b8d2648a01d36ed0186fd2c5af325fd28797f9a0 SOURCES/tstellar-gpg-key.asc
|
||||
2822ff10a016df1fffdeb296f753e9c5fce764ee SOURCES/clang-17.0.6.src.tar.xz
|
||||
576ef9aeccf3febe1828c68b3e11ffa921f3fc92 SOURCES/clang-17.0.6.src.tar.xz.sig
|
||||
1ec17cc98c397d6b4d30f57f14646fa085c9ccce SOURCES/clang-tools-extra-17.0.6.src.tar.xz
|
||||
cba7dea96b093d9989ceb949a21b4180b9d9985e SOURCES/clang-tools-extra-17.0.6.src.tar.xz.sig
|
||||
|
7
.gitignore
vendored
7
.gitignore
vendored
@ -1,3 +1,4 @@
|
||||
SOURCES/clang-12.0.1.src.tar.xz
|
||||
SOURCES/clang-tools-extra-12.0.1.src.tar.xz
|
||||
SOURCES/tstellar-gpg-key.asc
|
||||
SOURCES/clang-17.0.6.src.tar.xz
|
||||
SOURCES/clang-17.0.6.src.tar.xz.sig
|
||||
SOURCES/clang-tools-extra-17.0.6.src.tar.xz
|
||||
SOURCES/clang-tools-extra-17.0.6.src.tar.xz.sig
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,59 @@
|
||||
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
|
||||
|
@ -0,0 +1,27 @@
|
||||
From 49f827b09db549de62dcaf8b90b3fcb3e08c0ee5 Mon Sep 17 00:00:00 2001
|
||||
From: Serge Guelton <sguelton@redhat.com>
|
||||
Date: Mon, 6 Mar 2023 12:37:48 +0100
|
||||
Subject: [PATCH] Make -funwind-tables the default on all archs
|
||||
|
||||
---
|
||||
clang/lib/Driver/ToolChains/Gnu.cpp | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp
|
||||
index 24fbdcffc07b..8fed46b49515 100644
|
||||
--- a/clang/lib/Driver/ToolChains/Gnu.cpp
|
||||
+++ b/clang/lib/Driver/ToolChains/Gnu.cpp
|
||||
@@ -2904,6 +2904,10 @@ Generic_GCC::getDefaultUnwindTableLevel(const ArgList &Args) const {
|
||||
case llvm::Triple::riscv64:
|
||||
case llvm::Triple::x86:
|
||||
case llvm::Triple::x86_64:
|
||||
+ // Enable -funwind-tables on all architectures supported by Fedora:
|
||||
+ // rhbz#1655546
|
||||
+ case llvm::Triple::systemz:
|
||||
+ case llvm::Triple::arm:
|
||||
return UnwindTableLevel::Asynchronous;
|
||||
default:
|
||||
return UnwindTableLevel::None;
|
||||
--
|
||||
2.39.1
|
||||
|
@ -1,42 +0,0 @@
|
||||
From c6b921c8d833546946b70a8c2640032fd7c62461 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
|
||||
|
||||
---
|
||||
clang/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 )
|
||||
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
|
||||
@@ -537,7 +531,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
|
||||
--
|
||||
1.8.3.1
|
||||
|
125
SOURCES/0001-Produce-DWARF4-by-default.patch
Normal file
125
SOURCES/0001-Produce-DWARF4-by-default.patch
Normal file
@ -0,0 +1,125 @@
|
||||
From adbe188f3b1e3a0dd5ec80d9409601ba7f5b0423 Mon Sep 17 00:00:00 2001
|
||||
From: Konrad Kleine <kkleine@redhat.com>
|
||||
Date: Thu, 24 Mar 2022 09:44:21 +0100
|
||||
Subject: [PATCH] Produce DWARF4 by default
|
||||
|
||||
Have a look at the following commit to see when the move from DWARF 4 to 5 first happened upstream:
|
||||
|
||||
https://github.com/llvm/llvm-project/commit/d3b26dea16108c427b19b5480c9edc76edf8f5b4?diff=unified
|
||||
---
|
||||
clang/lib/Driver/ToolChain.cpp | 4 +---
|
||||
clang/test/CodeGen/dwarf-version.c | 4 ++--
|
||||
clang/test/Driver/as-options.s | 4 ++--
|
||||
clang/test/Driver/cl-options.c | 2 +-
|
||||
clang/test/Driver/clang-g-opts.c | 2 +-
|
||||
clang/test/Driver/ve-toolchain.c | 2 +-
|
||||
clang/test/Driver/ve-toolchain.cpp | 2 +-
|
||||
7 files changed, 9 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp
|
||||
index 8dafc3d481c2..92bf26dc8ec6 100644
|
||||
--- a/clang/lib/Driver/ToolChain.cpp
|
||||
+++ b/clang/lib/Driver/ToolChain.cpp
|
||||
@@ -428,9 +428,7 @@ ToolChain::getDefaultUnwindTableLevel(const ArgList &Args) const {
|
||||
}
|
||||
|
||||
unsigned ToolChain::GetDefaultDwarfVersion() const {
|
||||
- // TODO: Remove the RISC-V special case when R_RISCV_SET_ULEB128 linker
|
||||
- // support becomes more widely available.
|
||||
- return getTriple().isRISCV() ? 4 : 5;
|
||||
+ return 4;
|
||||
}
|
||||
|
||||
Tool *ToolChain::getClang() const {
|
||||
diff --git a/clang/test/CodeGen/dwarf-version.c b/clang/test/CodeGen/dwarf-version.c
|
||||
index d307eb3f101f..e7e93bf6688c 100644
|
||||
--- a/clang/test/CodeGen/dwarf-version.c
|
||||
+++ b/clang/test/CodeGen/dwarf-version.c
|
||||
@@ -2,8 +2,8 @@
|
||||
// RUN: %clang -target x86_64-linux-gnu -gdwarf-3 -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER3
|
||||
// RUN: %clang -target x86_64-linux-gnu -gdwarf-4 -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER4
|
||||
// RUN: %clang -target x86_64-linux-gnu -gdwarf-5 -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER5
|
||||
-// RUN: %clang -target x86_64-linux-gnu -g -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER5
|
||||
-// RUN: %clang -target x86_64-linux-gnu -gdwarf -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER5
|
||||
+// RUN: %clang -target x86_64-linux-gnu -g -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER4
|
||||
+// RUN: %clang -target x86_64-linux-gnu -gdwarf -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER4
|
||||
|
||||
// The -isysroot is used as a hack to avoid LIT messing with the SDKROOT
|
||||
// environment variable which indirecty overrides the version in the target
|
||||
diff --git a/clang/test/Driver/as-options.s b/clang/test/Driver/as-options.s
|
||||
index 73d002c7ef7e..71d55f7fd537 100644
|
||||
--- a/clang/test/Driver/as-options.s
|
||||
+++ b/clang/test/Driver/as-options.s
|
||||
@@ -122,7 +122,7 @@
|
||||
// RUN: FileCheck --check-prefix=DEBUG %s
|
||||
// RUN: %clang --target=aarch64-linux-gnu -fno-integrated-as -g0 -g %s -### 2>&1 | \
|
||||
// RUN: FileCheck --check-prefix=DEBUG %s
|
||||
-// DEBUG: "-g" "-gdwarf-5"
|
||||
+// DEBUG: "-g" "-gdwarf-4"
|
||||
// RUN: %clang --target=aarch64-linux-gnu -fno-integrated-as -g -g0 %s -### 2>&1 | \
|
||||
// RUN: FileCheck --check-prefix=NODEBUG %s
|
||||
// RUN: %clang --target=aarch64-linux-gnu -fno-integrated-as -gdwarf-5 -g0 %s -### 2>&1 | \
|
||||
@@ -141,7 +141,7 @@
|
||||
// RUN: %clang --target=aarch64-linux-gnu -fno-integrated-as -gdwarf-2 %s -### 2>&1 | \
|
||||
// RUN: FileCheck --check-prefix=GDWARF2 %s
|
||||
// RUN: %clang --target=aarch64-linux-gnu -fno-integrated-as -gdwarf %s -### 2>&1 | \
|
||||
-// RUN: FileCheck --check-prefix=GDWARF5 %s
|
||||
+// RUN: FileCheck --check-prefix=GDWARF4 %s
|
||||
|
||||
// RUN: %clang --target=aarch64-linux-gnu -fno-integrated-as -gdwarf-5 %s -### 2>&1 | \
|
||||
// RUN: FileCheck --check-prefix=GDWARF5 %s
|
||||
diff --git a/clang/test/Driver/cl-options.c b/clang/test/Driver/cl-options.c
|
||||
index 6d929b19e7e2..373905c2e0fc 100644
|
||||
--- a/clang/test/Driver/cl-options.c
|
||||
+++ b/clang/test/Driver/cl-options.c
|
||||
@@ -569,7 +569,7 @@
|
||||
// RUN: %clang_cl /Z7 -gdwarf /c -### -- %s 2>&1 | FileCheck -check-prefix=Z7_gdwarf %s
|
||||
// Z7_gdwarf: "-gcodeview"
|
||||
// Z7_gdwarf: "-debug-info-kind=constructor"
|
||||
-// Z7_gdwarf: "-dwarf-version=
|
||||
+// Z7_gdwarf: "-dwarf-version=4
|
||||
|
||||
// RUN: %clang_cl /ZH:MD5 /c -### -- %s 2>&1 | FileCheck -check-prefix=ZH_MD5 %s
|
||||
// ZH_MD5: "-gsrc-hash=md5"
|
||||
diff --git a/clang/test/Driver/clang-g-opts.c b/clang/test/Driver/clang-g-opts.c
|
||||
index 5ee0fe64fe48..985158746137 100644
|
||||
--- a/clang/test/Driver/clang-g-opts.c
|
||||
+++ b/clang/test/Driver/clang-g-opts.c
|
||||
@@ -32,7 +32,7 @@
|
||||
|
||||
// CHECK-WITHOUT-G-NOT: -debug-info-kind
|
||||
// CHECK-WITH-G: "-debug-info-kind=constructor"
|
||||
-// CHECK-WITH-G: "-dwarf-version=5"
|
||||
+// CHECK-WITH-G: "-dwarf-version=4"
|
||||
// CHECK-WITH-G-DWARF2: "-dwarf-version=2"
|
||||
|
||||
// CHECK-WITH-G-STANDALONE: "-debug-info-kind=standalone"
|
||||
diff --git a/clang/test/Driver/ve-toolchain.c b/clang/test/Driver/ve-toolchain.c
|
||||
index 32e25769b6da..b8a2852daba8 100644
|
||||
--- a/clang/test/Driver/ve-toolchain.c
|
||||
+++ b/clang/test/Driver/ve-toolchain.c
|
||||
@@ -6,7 +6,7 @@
|
||||
/// Checking dwarf-version
|
||||
|
||||
// RUN: %clang -### -g --target=ve %s 2>&1 | FileCheck -check-prefix=DWARF_VER %s
|
||||
-// DWARF_VER: "-dwarf-version=5"
|
||||
+// DWARF_VER: "-dwarf-version=4"
|
||||
|
||||
///-----------------------------------------------------------------------------
|
||||
/// Checking include-path
|
||||
diff --git a/clang/test/Driver/ve-toolchain.cpp b/clang/test/Driver/ve-toolchain.cpp
|
||||
index 5a33d5eceb61..cedf895b36dc 100644
|
||||
--- a/clang/test/Driver/ve-toolchain.cpp
|
||||
+++ b/clang/test/Driver/ve-toolchain.cpp
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
// RUN: %clangxx -### -g --target=ve-unknown-linux-gnu \
|
||||
// RUN: %s 2>&1 | FileCheck -check-prefix=DWARF_VER %s
|
||||
-// DWARF_VER: "-dwarf-version=5"
|
||||
+// DWARF_VER: "-dwarf-version=4"
|
||||
|
||||
///-----------------------------------------------------------------------------
|
||||
/// Checking include-path
|
||||
--
|
||||
2.41.0
|
||||
|
30
SOURCES/0001-Workaround-a-bug-in-ORC-on-ppc64le.patch
Normal file
30
SOURCES/0001-Workaround-a-bug-in-ORC-on-ppc64le.patch
Normal file
@ -0,0 +1,30 @@
|
||||
From a2449cee8c995b56f1892502aab3dfad3d6f3ca1 Mon Sep 17 00:00:00 2001
|
||||
From: Tulio Magno Quites Machado Filho <tuliom@redhat.com>
|
||||
Date: Fri, 8 Sep 2023 11:45:34 -0300
|
||||
Subject: [PATCH] Workaround a bug in ORC on ppc64le
|
||||
|
||||
The Jit code appears to be returning the wrong printf symbol on ppc64le
|
||||
after the transition of the default long double to IEEE 128-bit floating
|
||||
point.
|
||||
---
|
||||
clang/unittests/Interpreter/InterpreterTest.cpp | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/clang/unittests/Interpreter/InterpreterTest.cpp b/clang/unittests/Interpreter/InterpreterTest.cpp
|
||||
index abb8e6377aab..7b6697ebc6ed 100644
|
||||
--- a/clang/unittests/Interpreter/InterpreterTest.cpp
|
||||
+++ b/clang/unittests/Interpreter/InterpreterTest.cpp
|
||||
@@ -243,7 +243,9 @@ TEST(IncrementalProcessing, FindMangledNameSymbol) {
|
||||
EXPECT_FALSE(!Addr);
|
||||
|
||||
// FIXME: Re-enable when we investigate the way we handle dllimports on Win.
|
||||
-#ifndef _WIN32
|
||||
+ // FIXME: The printf symbol returned from the Jit may not be correct on
|
||||
+ // ppc64le when the default long double is IEEE 128-bit fp.
|
||||
+#if !defined _WIN32 && !(defined __PPC64__ && defined __LITTLE_ENDIAN__)
|
||||
EXPECT_EQ((uintptr_t)&printf, Addr->getValue());
|
||||
#endif // _WIN32
|
||||
}
|
||||
--
|
||||
2.41.0
|
||||
|
@ -0,0 +1,85 @@
|
||||
From 22d62b32cd3be5fb0ae10723b35a781e0f862b71 Mon Sep 17 00:00:00 2001
|
||||
From: Tom Stellard <tstellar@redhat.com>
|
||||
Date: Tue, 24 Jan 2023 22:46:25 +0000
|
||||
Subject: [PATCH] clang-tools-extra: Make test dependency on LLVMHello optional
|
||||
|
||||
This fixes clang + clang-tools-extra standalone build after
|
||||
36892727e4f19a60778e371d78f8fb09d8122c85.
|
||||
---
|
||||
clang-tools-extra/test/CMakeLists.txt | 10 +++++++++-
|
||||
clang-tools-extra/test/clang-tidy/CTTestTidyModule.cpp | 2 +-
|
||||
clang-tools-extra/test/lit.cfg.py | 3 +++
|
||||
clang-tools-extra/test/lit.site.cfg.py.in | 1 +
|
||||
4 files changed, 14 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/clang-tools-extra/test/CMakeLists.txt b/clang-tools-extra/test/CMakeLists.txt
|
||||
index f4c529ee8af2..1cfb4dd529aa 100644
|
||||
--- a/clang-tools-extra/test/CMakeLists.txt
|
||||
+++ b/clang-tools-extra/test/CMakeLists.txt
|
||||
@@ -7,10 +7,15 @@
|
||||
set(CLANG_TOOLS_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/..")
|
||||
set(CLANG_TOOLS_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/..")
|
||||
|
||||
+if (TARGET LLVMHello)
|
||||
+ set (LLVM_HAS_LLVM_HELLO 1)
|
||||
+endif()
|
||||
+
|
||||
llvm_canonicalize_cmake_booleans(
|
||||
CLANG_TIDY_ENABLE_STATIC_ANALYZER
|
||||
CLANG_PLUGIN_SUPPORT
|
||||
LLVM_INSTALL_TOOLCHAIN_ONLY
|
||||
+ LLVM_HAS_LLVM_HELLO
|
||||
)
|
||||
|
||||
configure_lit_site_cfg(
|
||||
@@ -86,7 +91,10 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
|
||||
endif()
|
||||
|
||||
if(TARGET CTTestTidyModule)
|
||||
- list(APPEND CLANG_TOOLS_TEST_DEPS CTTestTidyModule LLVMHello)
|
||||
+ list(APPEND CLANG_TOOLS_TEST_DEPS CTTestTidyModule)
|
||||
+ if (TARGET LLVMHello)
|
||||
+ list(APPEND CLANG_TOOLS_TEST_DEPS CTTestTidyModule)
|
||||
+ endif()
|
||||
target_include_directories(CTTestTidyModule PUBLIC BEFORE "${CLANG_TOOLS_SOURCE_DIR}")
|
||||
if(CLANG_PLUGIN_SUPPORT AND (WIN32 OR CYGWIN))
|
||||
set(LLVM_LINK_COMPONENTS
|
||||
diff --git a/clang-tools-extra/test/clang-tidy/CTTestTidyModule.cpp b/clang-tools-extra/test/clang-tidy/CTTestTidyModule.cpp
|
||||
index c66a94f458cf..b4e7a5d691e5 100644
|
||||
--- a/clang-tools-extra/test/clang-tidy/CTTestTidyModule.cpp
|
||||
+++ b/clang-tools-extra/test/clang-tidy/CTTestTidyModule.cpp
|
||||
@@ -1,4 +1,4 @@
|
||||
-// REQUIRES: plugins
|
||||
+// REQUIRES: plugins, llvm-hello
|
||||
// RUN: clang-tidy -checks='-*,mytest*' --list-checks -load %llvmshlibdir/CTTestTidyModule%pluginext -load %llvmshlibdir/LLVMHello%pluginext | FileCheck --check-prefix=CHECK-LIST %s
|
||||
// CHECK-LIST: Enabled checks:
|
||||
// CHECK-LIST-NEXT: mytest1
|
||||
diff --git a/clang-tools-extra/test/lit.cfg.py b/clang-tools-extra/test/lit.cfg.py
|
||||
index 9f64fd3d2ffa..1b258a00ddf9 100644
|
||||
--- a/clang-tools-extra/test/lit.cfg.py
|
||||
+++ b/clang-tools-extra/test/lit.cfg.py
|
||||
@@ -75,6 +75,9 @@ config.substitutions.append(("%clang_tidy_headers", clang_tidy_headers))
|
||||
if config.has_plugins and config.llvm_plugin_ext:
|
||||
config.available_features.add("plugins")
|
||||
|
||||
+if config.has_llvm_hello:
|
||||
+ config.available_features.add("llvm-hello")
|
||||
+
|
||||
# It is not realistically possible to account for all options that could
|
||||
# possibly be present in system and user configuration files, so disable
|
||||
# default configs for the test runs.
|
||||
diff --git a/clang-tools-extra/test/lit.site.cfg.py.in b/clang-tools-extra/test/lit.site.cfg.py.in
|
||||
index 4eb830a1baf1..6e5559348454 100644
|
||||
--- a/clang-tools-extra/test/lit.site.cfg.py.in
|
||||
+++ b/clang-tools-extra/test/lit.site.cfg.py.in
|
||||
@@ -11,6 +11,7 @@ config.target_triple = "@LLVM_TARGET_TRIPLE@"
|
||||
config.host_triple = "@LLVM_HOST_TRIPLE@"
|
||||
config.clang_tidy_staticanalyzer = @CLANG_TIDY_ENABLE_STATIC_ANALYZER@
|
||||
config.has_plugins = @CLANG_PLUGIN_SUPPORT@ & ~@LLVM_INSTALL_TOOLCHAIN_ONLY@
|
||||
+config.has_llvm_hello = @LLVM_HAS_LLVM_HELLO@
|
||||
# Support substitution of the tools and libs dirs with user parameters. This is
|
||||
# used when we can't determine the tool dir at configuration time.
|
||||
config.llvm_tools_dir = lit_config.substitute("@LLVM_TOOLS_DIR@")
|
||||
--
|
||||
2.40.1
|
||||
|
@ -1,332 +0,0 @@
|
||||
From 9613c86f0427be88ee43bddb7ae7cde74c1157ac Mon Sep 17 00:00:00 2001
|
||||
From: serge-sans-paille <sguelton@redhat.com>
|
||||
Date: Thu, 4 Nov 2021 11:11:53 +0100
|
||||
Subject: [PATCH 2/3] Misleading bidirectional detection
|
||||
|
||||
Differential Revision: https://reviews.llvm.org/D112913
|
||||
---
|
||||
clang-tools-extra/clang-tidy/misc/CMakeLists.txt | 1 +
|
||||
.../clang-tidy/misc/MiscTidyModule.cpp | 3 +
|
||||
.../clang-tidy/misc/MisleadingBidirectional.cpp | 131 +++++++++++++++++++++
|
||||
.../clang-tidy/misc/MisleadingBidirectional.h | 38 ++++++
|
||||
clang-tools-extra/docs/ReleaseNotes.rst | 5 +
|
||||
clang-tools-extra/docs/clang-tidy/checks/list.rst | 3 +-
|
||||
.../checks/misc-misleading-bidirectional.rst | 21 ++++
|
||||
.../checkers/misc-misleading-bidirectional.cpp | 31 +++++
|
||||
8 files changed, 232 insertions(+), 1 deletion(-)
|
||||
create mode 100644 clang-tools-extra/clang-tidy/misc/MisleadingBidirectional.cpp
|
||||
create mode 100644 clang-tools-extra/clang-tidy/misc/MisleadingBidirectional.h
|
||||
create mode 100644 clang-tools-extra/docs/clang-tidy/checks/misc-misleading-bidirectional.rst
|
||||
create mode 100644 clang-tools-extra/test/clang-tidy/checkers/misc-misleading-bidirectional.cpp
|
||||
|
||||
diff --git a/clang-tools-extra/clang-tidy/misc/CMakeLists.txt b/clang-tools-extra/clang-tidy/misc/CMakeLists.txt
|
||||
index d438a47..d6bb718 100644
|
||||
--- a/clang-tools-extra/clang-tidy/misc/CMakeLists.txt
|
||||
+++ b/clang-tools-extra/clang-tidy/misc/CMakeLists.txt
|
||||
@@ -11,6 +11,7 @@ add_clang_library(clangTidyMiscModule
|
||||
DefinitionsInHeadersCheck.cpp
|
||||
Homoglyph.cpp
|
||||
MiscTidyModule.cpp
|
||||
+ MisleadingBidirectional.cpp
|
||||
MisplacedConstCheck.cpp
|
||||
NewDeleteOverloadsCheck.cpp
|
||||
NoRecursionCheck.cpp
|
||||
diff --git a/clang-tools-extra/clang-tidy/misc/MiscTidyModule.cpp b/clang-tools-extra/clang-tidy/misc/MiscTidyModule.cpp
|
||||
index 5c7bd0c..bb5fde2 100644
|
||||
--- a/clang-tools-extra/clang-tidy/misc/MiscTidyModule.cpp
|
||||
+++ b/clang-tools-extra/clang-tidy/misc/MiscTidyModule.cpp
|
||||
@@ -11,6 +11,7 @@
|
||||
#include "../ClangTidyModuleRegistry.h"
|
||||
#include "DefinitionsInHeadersCheck.h"
|
||||
#include "Homoglyph.h"
|
||||
+#include "MisleadingBidirectional.h"
|
||||
#include "MisplacedConstCheck.h"
|
||||
#include "NewDeleteOverloadsCheck.h"
|
||||
#include "NoRecursionCheck.h"
|
||||
@@ -35,6 +36,8 @@ public:
|
||||
CheckFactories.registerCheck<DefinitionsInHeadersCheck>(
|
||||
"misc-definitions-in-headers");
|
||||
CheckFactories.registerCheck<Homoglyph>("misc-homoglyph");
|
||||
+ CheckFactories.registerCheck<MisleadingBidirectionalCheck>(
|
||||
+ "misc-misleading-bidirectional");
|
||||
CheckFactories.registerCheck<MisplacedConstCheck>("misc-misplaced-const");
|
||||
CheckFactories.registerCheck<NewDeleteOverloadsCheck>(
|
||||
"misc-new-delete-overloads");
|
||||
diff --git a/clang-tools-extra/clang-tidy/misc/MisleadingBidirectional.cpp b/clang-tools-extra/clang-tidy/misc/MisleadingBidirectional.cpp
|
||||
new file mode 100644
|
||||
index 0000000..7a2f06b
|
||||
--- /dev/null
|
||||
+++ b/clang-tools-extra/clang-tidy/misc/MisleadingBidirectional.cpp
|
||||
@@ -0,0 +1,131 @@
|
||||
+//===--- MisleadingBidirectional.cpp - clang-tidy -------------------------===//
|
||||
+//
|
||||
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
+// See https://llvm.org/LICENSE.txt for license information.
|
||||
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
+//
|
||||
+//===----------------------------------------------------------------------===//
|
||||
+
|
||||
+#include "MisleadingBidirectional.h"
|
||||
+
|
||||
+#include "clang/Frontend/CompilerInstance.h"
|
||||
+#include "clang/Lex/Preprocessor.h"
|
||||
+#include "llvm/Support/ConvertUTF.h"
|
||||
+
|
||||
+using namespace clang;
|
||||
+
|
||||
+static bool containsMisleadingBidi(StringRef Buffer,
|
||||
+ bool HonorLineBreaks = true) {
|
||||
+ const char *CurPtr = Buffer.begin();
|
||||
+ unsigned EmbeddingOverride = 0, Isolate = 0;
|
||||
+ unsigned i = 0;
|
||||
+
|
||||
+ enum {
|
||||
+ LS = 0x2028,
|
||||
+ PS = 0x2029,
|
||||
+ RLO = 0x202E,
|
||||
+ RLE = 0x202B,
|
||||
+ LRO = 0x202D,
|
||||
+ LRE = 0x202A,
|
||||
+ PDF = 0x202C,
|
||||
+ RLI = 0x2067,
|
||||
+ LRI = 0x2066,
|
||||
+ FSI = 0x2068,
|
||||
+ PDI = 0x2069
|
||||
+ };
|
||||
+
|
||||
+ // Scan each character while maintaining a count of opened bidi context.
|
||||
+ // RLO/RLE/LRO/LRE all are closed by PDF while RLI LRI and FSI are closed by
|
||||
+ // PDI. New lines reset the context count. Extra PDF / PDI are ignored.
|
||||
+ //
|
||||
+ // Warn if we end up with an unclosed context.
|
||||
+ while (CurPtr < Buffer.end()) {
|
||||
+ ++i;
|
||||
+ unsigned char C = *CurPtr;
|
||||
+ if (isASCII(C)) {
|
||||
+ ++CurPtr;
|
||||
+ // Line break: https://www.unicode.org/reports/tr14/tr14-32.html
|
||||
+ if (C == '\n' || C == '\r' || C == '\f' || C == '\v' ||
|
||||
+ C == 0x85 /*next line*/)
|
||||
+ EmbeddingOverride = Isolate = 0;
|
||||
+ continue;
|
||||
+ }
|
||||
+ llvm::UTF32 CodePoint;
|
||||
+ llvm::ConversionResult Result = llvm::convertUTF8Sequence(
|
||||
+ (const llvm::UTF8 **)&CurPtr, (const llvm::UTF8 *)Buffer.end(),
|
||||
+ &CodePoint, llvm::strictConversion);
|
||||
+
|
||||
+ // If conversion fails, utf-8 is designed so that we can just try next char.
|
||||
+ if (Result != llvm::conversionOK) {
|
||||
+ ++CurPtr;
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ if (CodePoint == RLO || CodePoint == RLE || CodePoint == LRO ||
|
||||
+ CodePoint == LRE)
|
||||
+ EmbeddingOverride += 1;
|
||||
+ else if (CodePoint == PDF)
|
||||
+ EmbeddingOverride = std::min(EmbeddingOverride - 1, EmbeddingOverride);
|
||||
+ else if (CodePoint == RLI || CodePoint == LRI || CodePoint == FSI)
|
||||
+ Isolate += 1;
|
||||
+ else if (CodePoint == PDI)
|
||||
+ Isolate = std::min(Isolate - 1, Isolate);
|
||||
+ // Line break: https://www.unicode.org/reports/tr14/tr14-32.html
|
||||
+ else if (CodePoint == LS || CodePoint == PS)
|
||||
+ EmbeddingOverride = Isolate = 0;
|
||||
+ }
|
||||
+ return EmbeddingOverride != 0 || Isolate != 0;
|
||||
+}
|
||||
+
|
||||
+class clang::tidy::misc::MisleadingBidirectionalCheck::
|
||||
+ MisleadingBidirectionalHandler : public CommentHandler {
|
||||
+public:
|
||||
+ MisleadingBidirectionalHandler(MisleadingBidirectionalCheck &Check,
|
||||
+ llvm::Optional<std::string> User)
|
||||
+ : Check(Check) {}
|
||||
+
|
||||
+ bool HandleComment(Preprocessor &PP, SourceRange Range) override {
|
||||
+ // FIXME: check that we are in a /* */ comment
|
||||
+ StringRef Text =
|
||||
+ Lexer::getSourceText(CharSourceRange::getCharRange(Range),
|
||||
+ PP.getSourceManager(), PP.getLangOpts());
|
||||
+
|
||||
+ if (containsMisleadingBidi(Text, true))
|
||||
+ Check.diag(
|
||||
+ Range.getBegin(),
|
||||
+ "comment contains misleading bidirectional Unicode characters");
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+private:
|
||||
+ MisleadingBidirectionalCheck &Check;
|
||||
+};
|
||||
+
|
||||
+clang::tidy::misc::MisleadingBidirectionalCheck::MisleadingBidirectionalCheck(
|
||||
+ StringRef Name, ClangTidyContext *Context)
|
||||
+ : ClangTidyCheck(Name, Context),
|
||||
+ Handler(std::make_unique<MisleadingBidirectionalHandler>(
|
||||
+ *this, Context->getOptions().User)) {}
|
||||
+
|
||||
+clang::tidy::misc::MisleadingBidirectionalCheck::
|
||||
+ ~MisleadingBidirectionalCheck() = default;
|
||||
+
|
||||
+void clang::tidy::misc::MisleadingBidirectionalCheck::registerPPCallbacks(
|
||||
+ const SourceManager &SM, Preprocessor *PP, Preprocessor *ModuleExpanderPP) {
|
||||
+ PP->addCommentHandler(Handler.get());
|
||||
+}
|
||||
+
|
||||
+void clang::tidy::misc::MisleadingBidirectionalCheck::check(
|
||||
+ const ast_matchers::MatchFinder::MatchResult &Result) {
|
||||
+ if (const auto *SL = Result.Nodes.getNodeAs<StringLiteral>("strlit")) {
|
||||
+ StringRef Literal = SL->getBytes();
|
||||
+ if (containsMisleadingBidi(Literal, false))
|
||||
+ diag(SL->getBeginLoc(), "string literal contains misleading "
|
||||
+ "bidirectional Unicode characters");
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+void clang::tidy::misc::MisleadingBidirectionalCheck::registerMatchers(
|
||||
+ ast_matchers::MatchFinder *Finder) {
|
||||
+ Finder->addMatcher(ast_matchers::stringLiteral().bind("strlit"), this);
|
||||
+}
|
||||
diff --git a/clang-tools-extra/clang-tidy/misc/MisleadingBidirectional.h b/clang-tools-extra/clang-tidy/misc/MisleadingBidirectional.h
|
||||
new file mode 100644
|
||||
index 0000000..18e7060
|
||||
--- /dev/null
|
||||
+++ b/clang-tools-extra/clang-tidy/misc/MisleadingBidirectional.h
|
||||
@@ -0,0 +1,38 @@
|
||||
+//===--- MisleadingBidirectionalCheck.h - clang-tidy ------------*- C++ -*-===//
|
||||
+//
|
||||
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
+// See https://llvm.org/LICENSE.txt for license information.
|
||||
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
+//
|
||||
+//===----------------------------------------------------------------------===//
|
||||
+
|
||||
+#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_MISLEADINGBIDIRECTIONALCHECK_H
|
||||
+#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_MISLEADINGBIDIRECTIONALCHECK_H
|
||||
+
|
||||
+#include "../ClangTidyCheck.h"
|
||||
+
|
||||
+namespace clang {
|
||||
+namespace tidy {
|
||||
+namespace misc {
|
||||
+
|
||||
+class MisleadingBidirectionalCheck : public ClangTidyCheck {
|
||||
+public:
|
||||
+ MisleadingBidirectionalCheck(StringRef Name, ClangTidyContext *Context);
|
||||
+ ~MisleadingBidirectionalCheck();
|
||||
+
|
||||
+ void registerPPCallbacks(const SourceManager &SM, Preprocessor *PP,
|
||||
+ Preprocessor *ModuleExpanderPP) override;
|
||||
+
|
||||
+ void registerMatchers(ast_matchers::MatchFinder *Finder) override;
|
||||
+ void check(const ast_matchers::MatchFinder::MatchResult &Result) override;
|
||||
+
|
||||
+private:
|
||||
+ class MisleadingBidirectionalHandler;
|
||||
+ std::unique_ptr<MisleadingBidirectionalHandler> Handler;
|
||||
+};
|
||||
+
|
||||
+} // namespace misc
|
||||
+} // namespace tidy
|
||||
+} // namespace clang
|
||||
+
|
||||
+#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_MISLEADINGBIDIRECTIONALCHECK_H
|
||||
diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst
|
||||
index e4ad7b9..546d544 100644
|
||||
--- a/clang-tools-extra/docs/ReleaseNotes.rst
|
||||
+++ b/clang-tools-extra/docs/ReleaseNotes.rst
|
||||
@@ -326,6 +326,11 @@ New checks
|
||||
|
||||
Detects confusable unicode identifiers.
|
||||
|
||||
+- New :doc:`misc-misleading-bidirectional <clang-tidy/checks/misc-misleading-bidirectional>` check.
|
||||
+
|
||||
+ Inspect string literal and comments for unterminated bidirectional Unicode
|
||||
+ characters.
|
||||
+
|
||||
New check aliases
|
||||
^^^^^^^^^^^^^^^^^
|
||||
|
||||
diff --git a/clang-tools-extra/docs/clang-tidy/checks/list.rst b/clang-tools-extra/docs/clang-tidy/checks/list.rst
|
||||
index 47ff5b7..977867d 100644
|
||||
--- a/clang-tools-extra/docs/clang-tidy/checks/list.rst
|
||||
+++ b/clang-tools-extra/docs/clang-tidy/checks/list.rst
|
||||
@@ -202,7 +202,8 @@ Clang-Tidy Checks
|
||||
`llvmlibc-implementation-in-namespace <llvmlibc-implementation-in-namespace.html>`_,
|
||||
`llvmlibc-restrict-system-libc-headers <llvmlibc-restrict-system-libc-headers.html>`_, "Yes"
|
||||
`misc-definitions-in-headers <misc-definitions-in-headers.html>`_, "Yes"
|
||||
- `misc-homoglyph <misc-homoglyph.html>`_, "Yes"
|
||||
+ `misc-homoglyph <misc-homoglyph.html>`_,
|
||||
+ `misc-misleading-bidirectional <misc-misleading-bidirectional.html>`_,
|
||||
`misc-misplaced-const <misc-misplaced-const.html>`_,
|
||||
`misc-new-delete-overloads <misc-new-delete-overloads.html>`_,
|
||||
`misc-no-recursion <misc-no-recursion.html>`_,
|
||||
diff --git a/clang-tools-extra/docs/clang-tidy/checks/misc-misleading-bidirectional.rst b/clang-tools-extra/docs/clang-tidy/checks/misc-misleading-bidirectional.rst
|
||||
new file mode 100644
|
||||
index 0000000..16ffc97
|
||||
--- /dev/null
|
||||
+++ b/clang-tools-extra/docs/clang-tidy/checks/misc-misleading-bidirectional.rst
|
||||
@@ -0,0 +1,21 @@
|
||||
+.. title:: clang-tidy - misc-misleading-bidirectional
|
||||
+
|
||||
+misc-misleading-bidirectional
|
||||
+=============================
|
||||
+
|
||||
+Warn about unterminated bidirectional unicode sequence, detecting potential attack
|
||||
+as described in the `Trojan Source <https://www.trojansource.codes>`_ attack.
|
||||
+
|
||||
+Example:
|
||||
+
|
||||
+.. code-block:: c++
|
||||
+
|
||||
+ #include <iostream>
|
||||
+
|
||||
+ int main() {
|
||||
+ bool isAdmin = false;
|
||||
+ /* } if (isAdmin) begin admins only */
|
||||
+ std::cout << "You are an admin.\n";
|
||||
+ /* end admins only { */
|
||||
+ return 0;
|
||||
+ }
|
||||
diff --git a/clang-tools-extra/test/clang-tidy/checkers/misc-misleading-bidirectional.cpp b/clang-tools-extra/test/clang-tidy/checkers/misc-misleading-bidirectional.cpp
|
||||
new file mode 100644
|
||||
index 0000000..12fdf63
|
||||
--- /dev/null
|
||||
+++ b/clang-tools-extra/test/clang-tidy/checkers/misc-misleading-bidirectional.cpp
|
||||
@@ -0,0 +1,31 @@
|
||||
+// RUN: %check_clang_tidy %s misc-misleading-bidirectional %t
|
||||
+
|
||||
+void func(void) {
|
||||
+ int admin = 0;
|
||||
+ /* }if(admin) begin*/
|
||||
+ // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: comment contains misleading bidirectional Unicode characters [misc-misleading-bidirectional]
|
||||
+ const char msg[] = "if(admin) tes";
|
||||
+ // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: string literal contains misleading bidirectional Unicode characters [misc-misleading-bidirectional]
|
||||
+}
|
||||
+
|
||||
+void all_fine(void) {
|
||||
+ char valid[] = "somevalidsequence";
|
||||
+ /* EOL ends bidi sequence
|
||||
+ * end it's fine to do so.
|
||||
+ * EOL ends isolate too
|
||||
+ */
|
||||
+}
|
||||
+
|
||||
+int invalid_utf_8(void) {
|
||||
+ bool isAdmin = false;
|
||||
+
|
||||
+ // the comment below contains an invalid utf8 character, but should still be
|
||||
+ // processed.
|
||||
+
|
||||
+ // CHECK-MESSAGES: :[[@LINE+1]]:3: warning: comment contains misleading bidirectional Unicode characters [misc-misleading-bidirectional]
|
||||
+ /* } if (isAdmin) begin admins only */
|
||||
+ return 1;
|
||||
+ /* end admins only { */
|
||||
+ // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: comment contains misleading bidirectional Unicode characters [misc-misleading-bidirectional]
|
||||
+ return 0;
|
||||
+}
|
||||
--
|
||||
1.8.3.1
|
||||
|
@ -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
|
||||
|
@ -1,355 +0,0 @@
|
||||
From d214ffa5e0bea78f85f61e96dc1071e4ed4ac69f Mon Sep 17 00:00:00 2001
|
||||
From: serge-sans-paille <sguelton@redhat.com>
|
||||
Date: Fri, 15 Oct 2021 15:18:52 +0200
|
||||
Subject: [PATCH 3/3] Misleading unicode identifier detection pass
|
||||
|
||||
Detect when an identifier contains some Right-To-Left characters.
|
||||
This pass relates to https://trojansource.codes/
|
||||
|
||||
Differential Revision: https://reviews.llvm.org/D112914
|
||||
---
|
||||
clang-tools-extra/clang-tidy/misc/CMakeLists.txt | 1 +
|
||||
.../clang-tidy/misc/MiscTidyModule.cpp | 3 +
|
||||
.../clang-tidy/misc/MisleadingIdentifier.cpp | 163 +++++++++++++++++++++
|
||||
.../clang-tidy/misc/MisleadingIdentifier.h | 31 ++++
|
||||
clang-tools-extra/docs/ReleaseNotes.rst | 9 ++
|
||||
clang-tools-extra/docs/clang-tidy/checks/list.rst | 1 +
|
||||
.../checks/misc-misleading-identifier.rst | 23 +++
|
||||
.../checkers/misc-misleading-identifier.cpp | 15 ++
|
||||
8 files changed, 246 insertions(+)
|
||||
create mode 100644 clang-tools-extra/clang-tidy/misc/MisleadingIdentifier.cpp
|
||||
create mode 100644 clang-tools-extra/clang-tidy/misc/MisleadingIdentifier.h
|
||||
create mode 100644 clang-tools-extra/docs/clang-tidy/checks/misc-misleading-identifier.rst
|
||||
create mode 100644 clang-tools-extra/test/clang-tidy/checkers/misc-misleading-identifier.cpp
|
||||
|
||||
diff --git a/clang-tools-extra/clang-tidy/misc/CMakeLists.txt b/clang-tools-extra/clang-tidy/misc/CMakeLists.txt
|
||||
index d6bb718..1974245 100644
|
||||
--- a/clang-tools-extra/clang-tidy/misc/CMakeLists.txt
|
||||
+++ b/clang-tools-extra/clang-tidy/misc/CMakeLists.txt
|
||||
@@ -12,6 +12,7 @@ add_clang_library(clangTidyMiscModule
|
||||
Homoglyph.cpp
|
||||
MiscTidyModule.cpp
|
||||
MisleadingBidirectional.cpp
|
||||
+ MisleadingIdentifier.cpp
|
||||
MisplacedConstCheck.cpp
|
||||
NewDeleteOverloadsCheck.cpp
|
||||
NoRecursionCheck.cpp
|
||||
diff --git a/clang-tools-extra/clang-tidy/misc/MiscTidyModule.cpp b/clang-tools-extra/clang-tidy/misc/MiscTidyModule.cpp
|
||||
index bb5fde2..b484db8 100644
|
||||
--- a/clang-tools-extra/clang-tidy/misc/MiscTidyModule.cpp
|
||||
+++ b/clang-tools-extra/clang-tidy/misc/MiscTidyModule.cpp
|
||||
@@ -12,6 +12,7 @@
|
||||
#include "DefinitionsInHeadersCheck.h"
|
||||
#include "Homoglyph.h"
|
||||
#include "MisleadingBidirectional.h"
|
||||
+#include "MisleadingIdentifier.h"
|
||||
#include "MisplacedConstCheck.h"
|
||||
#include "NewDeleteOverloadsCheck.h"
|
||||
#include "NoRecursionCheck.h"
|
||||
@@ -38,6 +39,8 @@ public:
|
||||
CheckFactories.registerCheck<Homoglyph>("misc-homoglyph");
|
||||
CheckFactories.registerCheck<MisleadingBidirectionalCheck>(
|
||||
"misc-misleading-bidirectional");
|
||||
+ CheckFactories.registerCheck<MisleadingIdentifierCheck>(
|
||||
+ "misc-misleading-identifier");
|
||||
CheckFactories.registerCheck<MisplacedConstCheck>("misc-misplaced-const");
|
||||
CheckFactories.registerCheck<NewDeleteOverloadsCheck>(
|
||||
"misc-new-delete-overloads");
|
||||
diff --git a/clang-tools-extra/clang-tidy/misc/MisleadingIdentifier.cpp b/clang-tools-extra/clang-tidy/misc/MisleadingIdentifier.cpp
|
||||
new file mode 100644
|
||||
index 0000000..f9b3075
|
||||
--- /dev/null
|
||||
+++ b/clang-tools-extra/clang-tidy/misc/MisleadingIdentifier.cpp
|
||||
@@ -0,0 +1,163 @@
|
||||
+//===--- MisleadingIdentifier.cpp - clang-tidy-----------------------------===//
|
||||
+//
|
||||
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
+// See https://llvm.org/LICENSE.txt for license information.
|
||||
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
+//
|
||||
+//===----------------------------------------------------------------------===//
|
||||
+
|
||||
+#include "MisleadingIdentifier.h"
|
||||
+
|
||||
+#include "clang/Frontend/CompilerInstance.h"
|
||||
+#include "llvm/Support/ConvertUTF.h"
|
||||
+
|
||||
+namespace clang {
|
||||
+namespace tidy {
|
||||
+namespace misc {
|
||||
+
|
||||
+// See https://www.unicode.org/Public/14.0.0/ucd/extracted/DerivedBidiClass.txt
|
||||
+static bool isUnassignedAL(llvm::UTF32 CP) {
|
||||
+ return (0x0600 <= CP && CP <= 0x07BF) || (0x0860 <= CP && CP <= 0x08FF) ||
|
||||
+ (0xFB50 <= CP && CP <= 0xFDCF) || (0xFDF0 <= CP && CP <= 0xFDFF) ||
|
||||
+ (0xFE70 <= CP && CP <= 0xFEFF) ||
|
||||
+ (0x00010D00 <= CP && CP <= 0x00010D3F) ||
|
||||
+ (0x00010F30 <= CP && CP <= 0x00010F6F) ||
|
||||
+ (0x0001EC70 <= CP && CP <= 0x0001ECBF) ||
|
||||
+ (0x0001ED00 <= CP && CP <= 0x0001ED4F) ||
|
||||
+ (0x0001EE00 <= CP && CP <= 0x0001EEFF);
|
||||
+}
|
||||
+
|
||||
+// See https://www.unicode.org/Public/14.0.0/ucd/extracted/DerivedBidiClass.txt
|
||||
+static bool isUnassignedR(llvm::UTF32 CP) {
|
||||
+ return (0x0590 <= CP && CP <= 0x05FF) || (0x07C0 <= CP && CP <= 0x085F) ||
|
||||
+ (0xFB1D <= CP && CP <= 0xFB4F) ||
|
||||
+ (0x00010800 <= CP && CP <= 0x00010CFF) ||
|
||||
+ (0x00010D40 <= CP && CP <= 0x00010F2F) ||
|
||||
+ (0x00010F70 <= CP && CP <= 0x00010FFF) ||
|
||||
+ (0x0001E800 <= CP && CP <= 0x0001EC6F) ||
|
||||
+ (0x0001ECC0 <= CP && CP <= 0x0001ECFF) ||
|
||||
+ (0x0001ED50 <= CP && CP <= 0x0001EDFF) ||
|
||||
+ (0x0001EF00 <= CP && CP <= 0x0001EFFF);
|
||||
+}
|
||||
+
|
||||
+// See https://www.unicode.org/Public/14.0.0/ucd/extracted/DerivedBidiClass.txt
|
||||
+static bool isR(llvm::UTF32 CP) {
|
||||
+ return (CP == 0x0590) || (CP == 0x05BE) || (CP == 0x05C0) || (CP == 0x05C3) ||
|
||||
+ (CP == 0x05C6) || (0x05C8 <= CP && CP <= 0x05CF) ||
|
||||
+ (0x05D0 <= CP && CP <= 0x05EA) || (0x05EB <= CP && CP <= 0x05EE) ||
|
||||
+ (0x05EF <= CP && CP <= 0x05F2) || (0x05F3 <= CP && CP <= 0x05F4) ||
|
||||
+ (0x05F5 <= CP && CP <= 0x05FF) || (0x07C0 <= CP && CP <= 0x07C9) ||
|
||||
+ (0x07CA <= CP && CP <= 0x07EA) || (0x07F4 <= CP && CP <= 0x07F5) ||
|
||||
+ (CP == 0x07FA) || (0x07FB <= CP && CP <= 0x07FC) ||
|
||||
+ (0x07FE <= CP && CP <= 0x07FF) || (0x0800 <= CP && CP <= 0x0815) ||
|
||||
+ (CP == 0x081A) || (CP == 0x0824) || (CP == 0x0828) ||
|
||||
+ (0x082E <= CP && CP <= 0x082F) || (0x0830 <= CP && CP <= 0x083E) ||
|
||||
+ (CP == 0x083F) || (0x0840 <= CP && CP <= 0x0858) ||
|
||||
+ (0x085C <= CP && CP <= 0x085D) || (CP == 0x085E) || (CP == 0x085F) ||
|
||||
+ (CP == 0x200F) || (CP == 0xFB1D) || (0xFB1F <= CP && CP <= 0xFB28) ||
|
||||
+ (0xFB2A <= CP && CP <= 0xFB36) || (CP == 0xFB37) ||
|
||||
+ (0xFB38 <= CP && CP <= 0xFB3C) || (CP == 0xFB3D) || (CP == 0xFB3E) ||
|
||||
+ (CP == 0xFB3F) || (0xFB40 <= CP && CP <= 0xFB41) || (CP == 0xFB42) ||
|
||||
+ (0xFB43 <= CP && CP <= 0xFB44) || (CP == 0xFB45) ||
|
||||
+ (0xFB46 <= CP && CP <= 0xFB4F) || (0x10800 <= CP && CP <= 0x10805) ||
|
||||
+ (0x10806 <= CP && CP <= 0x10807) || (CP == 0x10808) ||
|
||||
+ (CP == 0x10809) || (0x1080A <= CP && CP <= 0x10835) ||
|
||||
+ (CP == 0x10836) || (0x10837 <= CP && CP <= 0x10838) ||
|
||||
+ (0x10839 <= CP && CP <= 0x1083B) || (CP == 0x1083C) ||
|
||||
+ (0x1083D <= CP && CP <= 0x1083E) || (0x1083F <= CP && CP <= 0x10855) ||
|
||||
+ (CP == 0x10856) || (CP == 0x10857) ||
|
||||
+ (0x10858 <= CP && CP <= 0x1085F) || (0x10860 <= CP && CP <= 0x10876) ||
|
||||
+ (0x10877 <= CP && CP <= 0x10878) || (0x10879 <= CP && CP <= 0x1087F) ||
|
||||
+ (0x10880 <= CP && CP <= 0x1089E) || (0x1089F <= CP && CP <= 0x108A6) ||
|
||||
+ (0x108A7 <= CP && CP <= 0x108AF) || (0x108B0 <= CP && CP <= 0x108DF) ||
|
||||
+ (0x108E0 <= CP && CP <= 0x108F2) || (CP == 0x108F3) ||
|
||||
+ (0x108F4 <= CP && CP <= 0x108F5) || (0x108F6 <= CP && CP <= 0x108FA) ||
|
||||
+ (0x108FB <= CP && CP <= 0x108FF) || (0x10900 <= CP && CP <= 0x10915) ||
|
||||
+ (0x10916 <= CP && CP <= 0x1091B) || (0x1091C <= CP && CP <= 0x1091E) ||
|
||||
+ (0x10920 <= CP && CP <= 0x10939) || (0x1093A <= CP && CP <= 0x1093E) ||
|
||||
+ (CP == 0x1093F) || (0x10940 <= CP && CP <= 0x1097F) ||
|
||||
+ (0x10980 <= CP && CP <= 0x109B7) || (0x109B8 <= CP && CP <= 0x109BB) ||
|
||||
+ (0x109BC <= CP && CP <= 0x109BD) || (0x109BE <= CP && CP <= 0x109BF) ||
|
||||
+ (0x109C0 <= CP && CP <= 0x109CF) || (0x109D0 <= CP && CP <= 0x109D1) ||
|
||||
+ (0x109D2 <= CP && CP <= 0x109FF) || (CP == 0x10A00) ||
|
||||
+ (CP == 0x10A04) || (0x10A07 <= CP && CP <= 0x10A0B) ||
|
||||
+ (0x10A10 <= CP && CP <= 0x10A13) || (CP == 0x10A14) ||
|
||||
+ (0x10A15 <= CP && CP <= 0x10A17) || (CP == 0x10A18) ||
|
||||
+ (0x10A19 <= CP && CP <= 0x10A35) || (0x10A36 <= CP && CP <= 0x10A37) ||
|
||||
+ (0x10A3B <= CP && CP <= 0x10A3E) || (0x10A40 <= CP && CP <= 0x10A48) ||
|
||||
+ (0x10A49 <= CP && CP <= 0x10A4F) || (0x10A50 <= CP && CP <= 0x10A58) ||
|
||||
+ (0x10A59 <= CP && CP <= 0x10A5F) || (0x10A60 <= CP && CP <= 0x10A7C) ||
|
||||
+ (0x10A7D <= CP && CP <= 0x10A7E) || (CP == 0x10A7F) ||
|
||||
+ (0x10A80 <= CP && CP <= 0x10A9C) || (0x10A9D <= CP && CP <= 0x10A9F) ||
|
||||
+ (0x10AA0 <= CP && CP <= 0x10ABF) || (0x10AC0 <= CP && CP <= 0x10AC7) ||
|
||||
+ (CP == 0x10AC8) || (0x10AC9 <= CP && CP <= 0x10AE4) ||
|
||||
+ (0x10AE7 <= CP && CP <= 0x10AEA) || (0x10AEB <= CP && CP <= 0x10AEF) ||
|
||||
+ (0x10AF0 <= CP && CP <= 0x10AF6) || (0x10AF7 <= CP && CP <= 0x10AFF) ||
|
||||
+ (0x10B00 <= CP && CP <= 0x10B35) || (0x10B36 <= CP && CP <= 0x10B38) ||
|
||||
+ (0x10B40 <= CP && CP <= 0x10B55) || (0x10B56 <= CP && CP <= 0x10B57) ||
|
||||
+ (0x10B58 <= CP && CP <= 0x10B5F) || (0x10B60 <= CP && CP <= 0x10B72) ||
|
||||
+ (0x10B73 <= CP && CP <= 0x10B77) || (0x10B78 <= CP && CP <= 0x10B7F) ||
|
||||
+ (0x10B80 <= CP && CP <= 0x10B91) || (0x10B92 <= CP && CP <= 0x10B98) ||
|
||||
+ (0x10B99 <= CP && CP <= 0x10B9C) || (0x10B9D <= CP && CP <= 0x10BA8) ||
|
||||
+ (0x10BA9 <= CP && CP <= 0x10BAF) || (0x10BB0 <= CP && CP <= 0x10BFF) ||
|
||||
+ (0x10C00 <= CP && CP <= 0x10C48) || (0x10C49 <= CP && CP <= 0x10C7F) ||
|
||||
+ (0x10C80 <= CP && CP <= 0x10CB2) || (0x10CB3 <= CP && CP <= 0x10CBF) ||
|
||||
+ (0x10CC0 <= CP && CP <= 0x10CF2) || (0x10CF3 <= CP && CP <= 0x10CF9) ||
|
||||
+ (0x10CFA <= CP && CP <= 0x10CFF) || (0x10D40 <= CP && CP <= 0x10E5F) ||
|
||||
+ (CP == 0x10E7F) || (0x10E80 <= CP && CP <= 0x10EA9) ||
|
||||
+ (CP == 0x10EAA) || (CP == 0x10EAD) ||
|
||||
+ (0x10EAE <= CP && CP <= 0x10EAF) || (0x10EB0 <= CP && CP <= 0x10EB1) ||
|
||||
+ (0x10EB2 <= CP && CP <= 0x10EFF) || (0x10F00 <= CP && CP <= 0x10F1C) ||
|
||||
+ (0x10F1D <= CP && CP <= 0x10F26) || (CP == 0x10F27) ||
|
||||
+ (0x10F28 <= CP && CP <= 0x10F2F) || (0x10F70 <= CP && CP <= 0x10F81) ||
|
||||
+ (0x10F86 <= CP && CP <= 0x10F89) || (0x10F8A <= CP && CP <= 0x10FAF) ||
|
||||
+ (0x10FB0 <= CP && CP <= 0x10FC4) || (0x10FC5 <= CP && CP <= 0x10FCB) ||
|
||||
+ (0x10FCC <= CP && CP <= 0x10FDF) || (0x10FE0 <= CP && CP <= 0x10FF6) ||
|
||||
+ (0x10FF7 <= CP && CP <= 0x10FFF) || (0x1E800 <= CP && CP <= 0x1E8C4) ||
|
||||
+ (0x1E8C5 <= CP && CP <= 0x1E8C6) || (0x1E8C7 <= CP && CP <= 0x1E8CF) ||
|
||||
+ (0x1E8D7 <= CP && CP <= 0x1E8FF) || (0x1E900 <= CP && CP <= 0x1E943) ||
|
||||
+ (CP == 0x1E94B) || (0x1E94C <= CP && CP <= 0x1E94F) ||
|
||||
+ (0x1E950 <= CP && CP <= 0x1E959) || (0x1E95A <= CP && CP <= 0x1E95D) ||
|
||||
+ (0x1E95E <= CP && CP <= 0x1E95F) || (0x1E960 <= CP && CP <= 0x1EC6F) ||
|
||||
+ (0x1ECC0 <= CP && CP <= 0x1ECFF) || (0x1ED50 <= CP && CP <= 0x1EDFF);
|
||||
+}
|
||||
+
|
||||
+static bool hasRTLCharacters(StringRef Buffer) {
|
||||
+ const char *CurPtr = Buffer.begin();
|
||||
+ const char *EndPtr = Buffer.end();
|
||||
+ while (CurPtr < EndPtr) {
|
||||
+ llvm::UTF32 CodePoint;
|
||||
+ llvm::ConversionResult Result = llvm::convertUTF8Sequence(
|
||||
+ (const llvm::UTF8 **)&CurPtr, (const llvm::UTF8 *)EndPtr, &CodePoint,
|
||||
+ llvm::strictConversion);
|
||||
+ if (Result != llvm::conversionOK)
|
||||
+ break;
|
||||
+ if (isUnassignedAL(CodePoint) || isUnassignedR(CodePoint) || isR(CodePoint))
|
||||
+ return true;
|
||||
+ }
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
+MisleadingIdentifierCheck::MisleadingIdentifierCheck(StringRef Name,
|
||||
+ ClangTidyContext *Context)
|
||||
+ : ClangTidyCheck(Name, Context) {}
|
||||
+
|
||||
+MisleadingIdentifierCheck::~MisleadingIdentifierCheck() = default;
|
||||
+
|
||||
+void MisleadingIdentifierCheck::check(
|
||||
+ const ast_matchers::MatchFinder::MatchResult &Result) {
|
||||
+ if (const auto *ND = Result.Nodes.getNodeAs<NamedDecl>("nameddecl")) {
|
||||
+ StringRef NDName = ND->getName();
|
||||
+ if (hasRTLCharacters(NDName))
|
||||
+ diag(ND->getBeginLoc(), "identifier has right-to-left codepoints");
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+void MisleadingIdentifierCheck::registerMatchers(
|
||||
+ ast_matchers::MatchFinder *Finder) {
|
||||
+ Finder->addMatcher(ast_matchers::namedDecl().bind("nameddecl"), this);
|
||||
+}
|
||||
+
|
||||
+} // namespace misc
|
||||
+} // namespace tidy
|
||||
+} // namespace clang
|
||||
diff --git a/clang-tools-extra/clang-tidy/misc/MisleadingIdentifier.h b/clang-tools-extra/clang-tidy/misc/MisleadingIdentifier.h
|
||||
new file mode 100644
|
||||
index 0000000..9580ae6
|
||||
--- /dev/null
|
||||
+++ b/clang-tools-extra/clang-tidy/misc/MisleadingIdentifier.h
|
||||
@@ -0,0 +1,31 @@
|
||||
+//===--- MisleadingIdentifierCheck.h - clang-tidy ---------------*- C++ -*-===//
|
||||
+//
|
||||
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
+// See https://llvm.org/LICENSE.txt for license information.
|
||||
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
+//
|
||||
+//===----------------------------------------------------------------------===//
|
||||
+
|
||||
+#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_MISLEADINGIDENTIFIERCHECK_H
|
||||
+#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_MISLEADINGIDENTIFIERCHECK_H
|
||||
+
|
||||
+#include "../ClangTidyCheck.h"
|
||||
+
|
||||
+namespace clang {
|
||||
+namespace tidy {
|
||||
+namespace misc {
|
||||
+
|
||||
+class MisleadingIdentifierCheck : public ClangTidyCheck {
|
||||
+public:
|
||||
+ MisleadingIdentifierCheck(StringRef Name, ClangTidyContext *Context);
|
||||
+ ~MisleadingIdentifierCheck();
|
||||
+
|
||||
+ void registerMatchers(ast_matchers::MatchFinder *Finder) override;
|
||||
+ void check(const ast_matchers::MatchFinder::MatchResult &Result) override;
|
||||
+};
|
||||
+
|
||||
+} // namespace misc
|
||||
+} // namespace tidy
|
||||
+} // namespace clang
|
||||
+
|
||||
+#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_MISLEADINGIDENTIFIERCHECK_H
|
||||
diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst
|
||||
index 546d544..3f0ab3b 100644
|
||||
--- a/clang-tools-extra/docs/ReleaseNotes.rst
|
||||
+++ b/clang-tools-extra/docs/ReleaseNotes.rst
|
||||
@@ -308,6 +308,11 @@ New checks
|
||||
- New :doc:`bugprone-signal-handler
|
||||
<clang-tidy/checks/bugprone-signal-handler>` check.
|
||||
|
||||
+- New :doc:`readability-data-pointer <clang-tidy/checks/readability-data-pointer>` check.
|
||||
+
|
||||
+- New :doc:`concurrency-thread-canceltype-asynchronous
|
||||
+ <clang-tidy/checks/concurrency-thread-canceltype-asynchronous>` check.
|
||||
+
|
||||
Finds functions registered as signal handlers that call non asynchronous-safe
|
||||
functions.
|
||||
|
||||
@@ -331,6 +336,10 @@ New checks
|
||||
Inspect string literal and comments for unterminated bidirectional Unicode
|
||||
characters.
|
||||
|
||||
+- New :doc:`misc-misleading-identifier <clang-tidy/checks/misc-misleading-identifier>` check.
|
||||
+
|
||||
+ Reports identifier with unicode right-to-left characters.
|
||||
+
|
||||
New check aliases
|
||||
^^^^^^^^^^^^^^^^^
|
||||
|
||||
diff --git a/clang-tools-extra/docs/clang-tidy/checks/list.rst b/clang-tools-extra/docs/clang-tidy/checks/list.rst
|
||||
index 977867d..9c0a5b0 100644
|
||||
--- a/clang-tools-extra/docs/clang-tidy/checks/list.rst
|
||||
+++ b/clang-tools-extra/docs/clang-tidy/checks/list.rst
|
||||
@@ -204,6 +204,7 @@ Clang-Tidy Checks
|
||||
`misc-definitions-in-headers <misc-definitions-in-headers.html>`_, "Yes"
|
||||
`misc-homoglyph <misc-homoglyph.html>`_,
|
||||
`misc-misleading-bidirectional <misc-misleading-bidirectional.html>`_,
|
||||
+ `misc-misleading-identifier <misc-mileading-identifier.html>`_,
|
||||
`misc-misplaced-const <misc-misplaced-const.html>`_,
|
||||
`misc-new-delete-overloads <misc-new-delete-overloads.html>`_,
|
||||
`misc-no-recursion <misc-no-recursion.html>`_,
|
||||
diff --git a/clang-tools-extra/docs/clang-tidy/checks/misc-misleading-identifier.rst b/clang-tools-extra/docs/clang-tidy/checks/misc-misleading-identifier.rst
|
||||
new file mode 100644
|
||||
index 0000000..7ccbc94
|
||||
--- /dev/null
|
||||
+++ b/clang-tools-extra/docs/clang-tidy/checks/misc-misleading-identifier.rst
|
||||
@@ -0,0 +1,23 @@
|
||||
+.. title:: clang-tidy - misc-misleading-identifier
|
||||
+
|
||||
+misc-misleading-identifier
|
||||
+==========================
|
||||
+
|
||||
+Finds identifiers that contain Unicode characters with right-to-left direction,
|
||||
+which can be confusing as they may change the understanding of a whole statement
|
||||
+line, as described in `Trojan Source <https://trojansource.codes>`_.
|
||||
+
|
||||
+An example of such misleading code follows:
|
||||
+
|
||||
+.. code-block:: c
|
||||
+
|
||||
+ #include <stdio.h>
|
||||
+
|
||||
+ short int א = (short int)0;
|
||||
+ short int ג = (short int)12345;
|
||||
+
|
||||
+ int main() {
|
||||
+ int א = ג; // a local variable, set to zero?
|
||||
+ printf("ג is %d\n", ג);
|
||||
+ printf("א is %d\n", א);
|
||||
+ }
|
||||
diff --git a/clang-tools-extra/test/clang-tidy/checkers/misc-misleading-identifier.cpp b/clang-tools-extra/test/clang-tidy/checkers/misc-misleading-identifier.cpp
|
||||
new file mode 100644
|
||||
index 0000000..cb036f9
|
||||
--- /dev/null
|
||||
+++ b/clang-tools-extra/test/clang-tidy/checkers/misc-misleading-identifier.cpp
|
||||
@@ -0,0 +1,15 @@
|
||||
+// RUN: %check_clang_tidy %s misc-misleading-identifier %t
|
||||
+
|
||||
+#include <stdio.h>
|
||||
+
|
||||
+// CHECK-MESSAGES: :[[#@LINE+1]]:1: warning: identifier has right-to-left codepoints [misc-misleading-identifier]
|
||||
+short int א = (short int)0;
|
||||
+// CHECK-MESSAGES: :[[#@LINE+1]]:1: warning: identifier has right-to-left codepoints [misc-misleading-identifier]
|
||||
+short int ג = (short int)12345;
|
||||
+
|
||||
+int main() {
|
||||
+ // CHECK-MESSAGES: :[[#@LINE+1]]:3: warning: identifier has right-to-left codepoints [misc-misleading-identifier]
|
||||
+ int א = ג; // a local variable, set to zero?
|
||||
+ printf("ג is %d\n", ג);
|
||||
+ printf("א is %d\n", א);
|
||||
+}
|
||||
--
|
||||
1.8.3.1
|
||||
|
@ -1,25 +1,25 @@
|
||||
From 2c6cd40d016f492d53e16f1c7424a0d9878ae7ec Mon Sep 17 00:00:00 2001
|
||||
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 3/6] [PATCH][clang] Don't install static libraries
|
||||
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 704278a..1737b24 100644
|
||||
index 5752f4277444..0f52822d91f0 100644
|
||||
--- a/clang/cmake/modules/AddClang.cmake
|
||||
+++ b/clang/cmake/modules/AddClang.cmake
|
||||
@@ -111,7 +111,7 @@ macro(add_clang_library name)
|
||||
@@ -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))
|
||||
set(export_to_clangtargets)
|
||||
if(${lib} IN_LIST LLVM_DISTRIBUTION_COMPONENTS OR
|
||||
"clang-libraries" IN_LIST LLVM_DISTRIBUTION_COMPONENTS OR
|
||||
get_target_export_arg(${name} Clang export_to_clangtargets UMBRELLA clang-libraries)
|
||||
install(TARGETS ${lib}
|
||||
COMPONENT ${lib}
|
||||
--
|
||||
1.8.3.1
|
||||
2.30.2
|
||||
|
||||
|
@ -1,132 +0,0 @@
|
||||
From d8af49687765744efaae7ba0f0c4c0fcd58a0e31 Mon Sep 17 00:00:00 2001
|
||||
From: serge-sans-paille <sguelton@redhat.com>
|
||||
Date: Wed, 23 Sep 2020 12:47:30 +0000
|
||||
Subject: [PATCH 4/6] [PATCH][clang] Prefer gcc toolchains with libgcc_s.so
|
||||
when not static linking libgcc
|
||||
|
||||
Fedora ships cross-compilers on all platforms, so a user could end up
|
||||
with a gcc x86_64 cross-compiler installed on an x86_64 system. clang
|
||||
maintains a list of supported triples for each target and when all
|
||||
else is equal will prefer toolchains with triples that appear earlier
|
||||
in the list.
|
||||
|
||||
The cross-compiler triple on Fedora is x86_64-linux-gnu and this comes
|
||||
before the Fedora system compiler's triple: x86_64-redhat-linux in
|
||||
the triples list, so the cross compiler is always preferred. This
|
||||
is a problem, because the cross compiler is missing libraries, like
|
||||
libgcc_s.so, that clang expects to be there so linker invocations
|
||||
will fail.
|
||||
|
||||
This patch fixes this by checking for the existence of libgcc_s.so
|
||||
when it is required and taking that into account when selecting a
|
||||
toolchain.
|
||||
---
|
||||
clang/lib/Driver/ToolChains/Gnu.cpp | 16 ++++++++++++++--
|
||||
clang/lib/Driver/ToolChains/Gnu.h | 4 +++-
|
||||
.../usr/lib/gcc/x86_64-linux-gnu/7/crtbegin.o | 0
|
||||
.../usr/lib/gcc/x86_64-redhat-linux/7/crtbegin.o | 0
|
||||
.../usr/lib/gcc/x86_64-redhat-linux/7/libgcc_s.so | 0
|
||||
clang/test/Driver/linux-ld.c | 12 ++++++++++++
|
||||
6 files changed, 29 insertions(+), 3 deletions(-)
|
||||
create mode 100644 clang/test/Driver/Inputs/fedora_28_tree/usr/lib/gcc/x86_64-linux-gnu/7/crtbegin.o
|
||||
create mode 100644 clang/test/Driver/Inputs/fedora_28_tree/usr/lib/gcc/x86_64-redhat-linux/7/crtbegin.o
|
||||
create mode 100644 clang/test/Driver/Inputs/fedora_28_tree/usr/lib/gcc/x86_64-redhat-linux/7/libgcc_s.so
|
||||
|
||||
diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp
|
||||
index 5deeb10..5d51517 100644
|
||||
--- a/clang/lib/Driver/ToolChains/Gnu.cpp
|
||||
+++ b/clang/lib/Driver/ToolChains/Gnu.cpp
|
||||
@@ -2539,6 +2539,8 @@ void Generic_GCC::GCCInstallationDetector::ScanLibDirForGCCTriple(
|
||||
(TargetArch == llvm::Triple::x86 &&
|
||||
TargetTriple.getOS() != llvm::Triple::Solaris)}};
|
||||
|
||||
+ bool NeedLibgccShared = !Args.hasArg(options::OPT_static_libgcc) &&
|
||||
+ !Args.hasArg(options::OPT_static);
|
||||
for (auto &Suffix : Suffixes) {
|
||||
if (!Suffix.Active)
|
||||
continue;
|
||||
@@ -2556,8 +2558,17 @@ void Generic_GCC::GCCInstallationDetector::ScanLibDirForGCCTriple(
|
||||
continue; // Saw this path before; no need to look at it again.
|
||||
if (CandidateVersion.isOlderThan(4, 1, 1))
|
||||
continue;
|
||||
- if (CandidateVersion <= Version)
|
||||
- continue;
|
||||
+
|
||||
+ bool CandidateHasLibGccShared = false;
|
||||
+ if (CandidateVersion <= Version) {
|
||||
+ if (NeedLibgccShared && !HasLibGccShared) {
|
||||
+ CandidateHasLibGccShared =
|
||||
+ D.getVFS().exists(LI->path() + "/libgcc_s.so");
|
||||
+
|
||||
+ }
|
||||
+ if (HasLibGccShared || !CandidateHasLibGccShared)
|
||||
+ continue;
|
||||
+ }
|
||||
|
||||
if (!ScanGCCForMultilibs(TargetTriple, Args, LI->path(),
|
||||
NeedsBiarchSuffix))
|
||||
@@ -2571,6 +2582,7 @@ void Generic_GCC::GCCInstallationDetector::ScanLibDirForGCCTriple(
|
||||
GCCInstallPath = (LibDir + "/" + LibSuffix + "/" + VersionText).str();
|
||||
GCCParentLibPath = (GCCInstallPath + "/../" + Suffix.ReversePath).str();
|
||||
IsValid = true;
|
||||
+ HasLibGccShared = CandidateHasLibGccShared;
|
||||
}
|
||||
}
|
||||
}
|
||||
diff --git a/clang/lib/Driver/ToolChains/Gnu.h b/clang/lib/Driver/ToolChains/Gnu.h
|
||||
index 90d3baf..9d0cea2 100644
|
||||
--- a/clang/lib/Driver/ToolChains/Gnu.h
|
||||
+++ b/clang/lib/Driver/ToolChains/Gnu.h
|
||||
@@ -190,6 +190,7 @@ public:
|
||||
/// Driver, and has logic for fuzzing that where appropriate.
|
||||
class GCCInstallationDetector {
|
||||
bool IsValid;
|
||||
+ bool HasLibGccShared;
|
||||
llvm::Triple GCCTriple;
|
||||
const Driver &D;
|
||||
|
||||
@@ -216,7 +217,8 @@ public:
|
||||
const std::string GentooConfigDir = "/etc/env.d/gcc";
|
||||
|
||||
public:
|
||||
- explicit GCCInstallationDetector(const Driver &D) : IsValid(false), D(D) {}
|
||||
+ explicit GCCInstallationDetector(const Driver &D)
|
||||
+ : IsValid(false), HasLibGccShared(false), D(D) {}
|
||||
void init(const llvm::Triple &TargetTriple, const llvm::opt::ArgList &Args,
|
||||
ArrayRef<std::string> ExtraTripleAliases = None);
|
||||
|
||||
diff --git a/clang/test/Driver/Inputs/fedora_28_tree/usr/lib/gcc/x86_64-linux-gnu/7/crtbegin.o b/clang/test/Driver/Inputs/fedora_28_tree/usr/lib/gcc/x86_64-linux-gnu/7/crtbegin.o
|
||||
new file mode 100644
|
||||
index 0000000..e69de29
|
||||
diff --git a/clang/test/Driver/Inputs/fedora_28_tree/usr/lib/gcc/x86_64-redhat-linux/7/crtbegin.o b/clang/test/Driver/Inputs/fedora_28_tree/usr/lib/gcc/x86_64-redhat-linux/7/crtbegin.o
|
||||
new file mode 100644
|
||||
index 0000000..e69de29
|
||||
diff --git a/clang/test/Driver/Inputs/fedora_28_tree/usr/lib/gcc/x86_64-redhat-linux/7/libgcc_s.so b/clang/test/Driver/Inputs/fedora_28_tree/usr/lib/gcc/x86_64-redhat-linux/7/libgcc_s.so
|
||||
new file mode 100644
|
||||
index 0000000..e69de29
|
||||
diff --git a/clang/test/Driver/linux-ld.c b/clang/test/Driver/linux-ld.c
|
||||
index 24d3c78..071bb9b 100644
|
||||
--- a/clang/test/Driver/linux-ld.c
|
||||
+++ b/clang/test/Driver/linux-ld.c
|
||||
@@ -784,6 +784,18 @@
|
||||
// CHECK-FEDORA-31-RISCV64: "{{.*}}/usr/lib/gcc/riscv64-redhat-linux/9{{/|\\\\}}crtend.o"
|
||||
// CHECK-FEDORA-31-RISCV64: "{{.*}}/usr/lib/gcc/riscv64-redhat-linux/9{{/|\\\\}}crtn.o"
|
||||
//
|
||||
+// Check that clang does not select the cross compiler by default on Fedora 28.
|
||||
+//
|
||||
+// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||
+// RUN: --target=x86_64-unknown-linux-gnu \
|
||||
+// RUN: --gcc-toolchain="" \
|
||||
+// RUN: --sysroot=%S/Inputs/fedora_28_tree \
|
||||
+// RUN: | FileCheck --check-prefix=CHECK-FEDORA-28-X86_64 %s
|
||||
+//
|
||||
+// CHECK-FEDORA-28-X86_64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
|
||||
+// CHECK-FEDORA-28-X86_64: "[[SYSROOT]]/usr/lib/gcc/x86_64-redhat-linux/7/crtbegin.o"
|
||||
+// CHECK-FEDORA-28-X86_64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-redhat-linux/7"
|
||||
+//
|
||||
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||
// RUN: --target=arm-unknown-linux-gnueabi -rtlib=platform \
|
||||
// RUN: --gcc-toolchain="" \
|
||||
--
|
||||
1.8.3.1
|
||||
|
@ -1,77 +0,0 @@
|
||||
From 1ef1e91142ac48ecb826f33e1e7072c7402d9fe7 Mon Sep 17 00:00:00 2001
|
||||
From: serge-sans-paille <sguelton@redhat.com>
|
||||
Date: Wed, 3 Mar 2021 09:58:31 +0100
|
||||
Subject: [PATCH 6/6] [PATCH][clang] Allow __ieee128 as an alias to __float128
|
||||
on ppc
|
||||
|
||||
This matches gcc behavior.
|
||||
|
||||
Differential Revision: https://reviews.llvm.org/D97846
|
||||
|
||||
(cherry picked from commit 4aa510be78a75a4da82657fe433016f00dad0784)
|
||||
---
|
||||
clang/include/clang/Basic/LangOptions.def | 1 +
|
||||
clang/lib/Basic/IdentifierTable.cpp | 3 +++
|
||||
clang/lib/Basic/Targets/PPC.cpp | 1 +
|
||||
clang/test/Sema/128bitfloat.cpp | 7 +++++++
|
||||
4 files changed, 12 insertions(+)
|
||||
|
||||
diff --git a/clang/include/clang/Basic/LangOptions.def b/clang/include/clang/Basic/LangOptions.def
|
||||
index c01f0cc..3c22393e 100644
|
||||
--- a/clang/include/clang/Basic/LangOptions.def
|
||||
+++ b/clang/include/clang/Basic/LangOptions.def
|
||||
@@ -107,6 +107,7 @@ LANGOPT(Bool , 1, 0, "bool, true, and false keywords")
|
||||
LANGOPT(Half , 1, 0, "half keyword")
|
||||
LANGOPT(WChar , 1, CPlusPlus, "wchar_t keyword")
|
||||
LANGOPT(Char8 , 1, 0, "char8_t keyword")
|
||||
+LANGOPT(IEEE128 , 1, 0, "__ieee128 keyword")
|
||||
LANGOPT(DeclSpecKeyword , 1, 0, "__declspec keyword")
|
||||
BENIGN_LANGOPT(DollarIdents , 1, 1, "'$' in identifiers")
|
||||
BENIGN_LANGOPT(AsmPreprocessor, 1, 0, "preprocessor in asm mode")
|
||||
diff --git a/clang/lib/Basic/IdentifierTable.cpp b/clang/lib/Basic/IdentifierTable.cpp
|
||||
index 51c6e02..cedc94a 100644
|
||||
--- a/clang/lib/Basic/IdentifierTable.cpp
|
||||
+++ b/clang/lib/Basic/IdentifierTable.cpp
|
||||
@@ -227,6 +227,9 @@ void IdentifierTable::AddKeywords(const LangOptions &LangOpts) {
|
||||
if (LangOpts.DeclSpecKeyword)
|
||||
AddKeyword("__declspec", tok::kw___declspec, KEYALL, LangOpts, *this);
|
||||
|
||||
+ if (LangOpts.IEEE128)
|
||||
+ AddKeyword("__ieee128", tok::kw___float128, KEYALL, LangOpts, *this);
|
||||
+
|
||||
// Add the 'import' contextual keyword.
|
||||
get("import").setModulesImport(true);
|
||||
}
|
||||
diff --git a/clang/lib/Basic/Targets/PPC.cpp b/clang/lib/Basic/Targets/PPC.cpp
|
||||
index ff09c0f..38f286c 100644
|
||||
--- a/clang/lib/Basic/Targets/PPC.cpp
|
||||
+++ b/clang/lib/Basic/Targets/PPC.cpp
|
||||
@@ -551,6 +551,7 @@ void PPCTargetInfo::adjust(LangOptions &Opts) {
|
||||
LongDoubleFormat = Opts.PPCIEEELongDouble
|
||||
? &llvm::APFloat::IEEEquad()
|
||||
: &llvm::APFloat::PPCDoubleDouble();
|
||||
+ Opts.IEEE128 = 1;
|
||||
}
|
||||
|
||||
ArrayRef<Builtin::Info> PPCTargetInfo::getTargetBuiltins() const {
|
||||
diff --git a/clang/test/Sema/128bitfloat.cpp b/clang/test/Sema/128bitfloat.cpp
|
||||
index 4a826b4..6a9ae74 100644
|
||||
--- a/clang/test/Sema/128bitfloat.cpp
|
||||
+++ b/clang/test/Sema/128bitfloat.cpp
|
||||
@@ -6,6 +6,13 @@
|
||||
// RUN: %clang_cc1 -triple x86_64-windows-msvc -verify -std=c++11 %s
|
||||
|
||||
#if defined(__FLOAT128__) || defined(__SIZEOF_FLOAT128__)
|
||||
+
|
||||
+#if defined(__ppc__)
|
||||
+template <typename> struct __is_float128 { static constexpr bool value = false; };
|
||||
+template <> struct __is_float128<__float128> { static constexpr bool value = true; };
|
||||
+static_assert(__is_float128<__ieee128>::value, "__ieee128 aliases to __float128");
|
||||
+#endif
|
||||
+
|
||||
__float128 f;
|
||||
template<typename> struct __is_floating_point_helper {};
|
||||
template<> struct __is_floating_point_helper<__float128> {};
|
||||
--
|
||||
1.8.3.1
|
||||
|
26
SOURCES/0009-disable-recommonmark.patch
Normal file
26
SOURCES/0009-disable-recommonmark.patch
Normal file
@ -0,0 +1,26 @@
|
||||
diff -Naur a/clang/docs/conf.py b/clang/docs/conf.py
|
||||
--- a/clang/docs/conf.py 2020-09-15 09:12:24.318287611 +0000
|
||||
+++ b/clang/docs/conf.py 2020-09-15 15:01:00.025893199 +0000
|
||||
@@ -37,21 +37,7 @@
|
||||
".rst": "restructuredtext",
|
||||
}
|
||||
|
||||
-try:
|
||||
- import recommonmark
|
||||
-except ImportError:
|
||||
- # manpages do not use any .md sources
|
||||
- if not tags.has("builder-man"):
|
||||
- raise
|
||||
-else:
|
||||
- import sphinx
|
||||
-
|
||||
- if sphinx.version_info >= (3, 0):
|
||||
- # This requires 0.5 or later.
|
||||
- extensions.append("recommonmark")
|
||||
- else:
|
||||
- source_parsers = {".md": "recommonmark.parser.CommonMarkParser"}
|
||||
- source_suffix[".md"] = "markdown"
|
||||
+import sphinx
|
||||
|
||||
# The encoding of source files.
|
||||
# source_encoding = 'utf-8-sig'
|
Binary file not shown.
Binary file not shown.
11
SOURCES/macros.clang
Normal file
11
SOURCES/macros.clang
Normal file
@ -0,0 +1,11 @@
|
||||
%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 %{_prefix}/lib/clang/%{clang_major_version}
|
104
SOURCES/release-keys.asc
Normal file
104
SOURCES/release-keys.asc
Normal file
@ -0,0 +1,104 @@
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
9RmlwZlOTFGcWBYl/cfRONn9qi9a6w==
|
||||
=Lvw+
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
=tMzl
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
485
SPECS/clang.spec
485
SPECS/clang.spec
@ -1,41 +1,31 @@
|
||||
%global compat_build 0
|
||||
%bcond_with snapshot_build
|
||||
|
||||
%global maj_ver 12
|
||||
%if %{with snapshot_build}
|
||||
%{llvm_sb}
|
||||
%endif
|
||||
|
||||
# Opt out of https://fedoraproject.org/wiki/Changes/fno-omit-frame-pointer
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=2158587
|
||||
%undefine _include_frame_pointers
|
||||
|
||||
%bcond_with compat_build
|
||||
%bcond_without check
|
||||
|
||||
%global maj_ver 17
|
||||
%global min_ver 0
|
||||
%global patch_ver 1
|
||||
#%%global rc_ver 5
|
||||
%global patch_ver 6
|
||||
#global rc_ver 4
|
||||
|
||||
%global clang_tools_binaries \
|
||||
%{_bindir}/clang-apply-replacements \
|
||||
%{_bindir}/clang-change-namespace \
|
||||
%{_bindir}/clang-check \
|
||||
%{_bindir}/clang-doc \
|
||||
%{_bindir}/clang-extdef-mapping \
|
||||
%{_bindir}/clang-format \
|
||||
%{_bindir}/clang-include-fixer \
|
||||
%{_bindir}/clang-move \
|
||||
%{_bindir}/clang-offload-bundler \
|
||||
%{_bindir}/clang-offload-wrapper \
|
||||
%{_bindir}/clang-query \
|
||||
%{_bindir}/clang-refactor \
|
||||
%{_bindir}/clang-rename \
|
||||
%{_bindir}/clang-reorder-fields \
|
||||
%{_bindir}/clang-scan-deps \
|
||||
%{_bindir}/clang-tidy \
|
||||
%{_bindir}/clangd \
|
||||
%{_bindir}/diagtool \
|
||||
%{_bindir}/hmaptool \
|
||||
%{_bindir}/pp-trace
|
||||
%if %{with snapshot_build}
|
||||
%undefine rc_ver
|
||||
%global maj_ver %{llvm_snapshot_version_major}
|
||||
%global min_ver %{llvm_snapshot_version_minor}
|
||||
%global patch_ver %{llvm_snapshot_version_patch}
|
||||
%endif
|
||||
|
||||
%global clang_binaries \
|
||||
%{_bindir}/clang \
|
||||
%{_bindir}/clang++ \
|
||||
%{_bindir}/clang-%{maj_ver} \
|
||||
%{_bindir}/clang++-%{maj_ver} \
|
||||
%{_bindir}/clang-cl \
|
||||
%{_bindir}/clang-cpp \
|
||||
%global clang_version %{maj_ver}.%{min_ver}.%{patch_ver}
|
||||
|
||||
%if 0%{?compat_build}
|
||||
%if %{with compat_build}
|
||||
%global pkg_name clang%{maj_ver}
|
||||
# Install clang to same prefix as llvm, so that apps that use llvm-config
|
||||
# will also be able to find clang libs.
|
||||
@ -43,80 +33,88 @@
|
||||
%global install_bindir %{install_prefix}/bin
|
||||
%global install_includedir %{install_prefix}/include
|
||||
%global install_libdir %{install_prefix}/lib
|
||||
%global install_datadir %{install_prefix}/share
|
||||
|
||||
%global pkg_bindir %{install_bindir}
|
||||
%global pkg_includedir %{install_includedir}
|
||||
%global pkg_libdir %{install_libdir}
|
||||
%else
|
||||
%global pkg_name clang
|
||||
%global install_prefix /usr
|
||||
%global pkg_libdir %{_libdir}
|
||||
%global install_datadir %{_datadir}
|
||||
%global install_libdir %{_libdir}
|
||||
%endif
|
||||
|
||||
%if 0%{?fedora} || 0%{?rhel} > 7
|
||||
%bcond_without python3
|
||||
%else
|
||||
%bcond_with python3
|
||||
%ifarch ppc64le aarch64
|
||||
# Too many threads on some systems causes OOM errors.
|
||||
%global _smp_mflags -j8
|
||||
%endif
|
||||
|
||||
%global build_install_prefix %{buildroot}%{install_prefix}
|
||||
|
||||
%global _smp_mflags -j2
|
||||
|
||||
%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
|
||||
%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
|
||||
|
||||
Name: %pkg_name
|
||||
Version: %{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:~rc%{rc_ver}}
|
||||
Release: 3%{?dist}
|
||||
Version: %{clang_version}%{?rc_ver:~rc%{rc_ver}}%{?llvm_snapshot_version_suffix:~%{llvm_snapshot_version_suffix}}
|
||||
Release: 1%{?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-%{version}%{?rc_ver:-rc%{rc_ver}}/%{clang_srcdir}.tar.xz
|
||||
Source3: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}%{?rc_ver:-rc%{rc_ver}}/%{clang_srcdir}.tar.xz.sig
|
||||
%if !0%{?compat_build}
|
||||
Source1: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}%{?rc_ver:-rc%{rc_ver}}/%{clang_tools_srcdir}.tar.xz
|
||||
Source2: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}%{?rc_ver:-rc%{rc_ver}}/%{clang_tools_srcdir}.tar.xz.sig
|
||||
%if %{with snapshot_build}
|
||||
Source0: %{llvm_snapshot_source_prefix}clang-%{llvm_snapshot_yyyymmdd}.src.tar.xz
|
||||
Source1: %{llvm_snapshot_source_prefix}clang-tools-extra-%{llvm_snapshot_yyyymmdd}.src.tar.xz
|
||||
%{llvm_snapshot_extra_source_tags}
|
||||
|
||||
%else
|
||||
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
|
||||
%endif
|
||||
Source4: release-keys.asc
|
||||
%endif
|
||||
%if %{without compat_build}
|
||||
Source5: macros.%{name}
|
||||
%endif
|
||||
Source4: tstellar-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
|
||||
Patch1: 0001-PATCH-clang-Make-funwind-tables-the-default-on-all-a.patch
|
||||
Patch2: 0003-PATCH-clang-Don-t-install-static-libraries.patch
|
||||
Patch3: 0004-PATCH-clang-Prefer-gcc-toolchains-with-libgcc_s.so-w.patch
|
||||
Patch5: 0006-PATCH-clang-Allow-__ieee128-as-an-alias-to-__float12.patch
|
||||
Patch3: 0001-Driver-Add-a-gcc-equivalent-triple-to-the-list-of-tr.patch
|
||||
# Drop the following patch after debugedit adds support to DWARF-5:
|
||||
# https://sourceware.org/bugzilla/show_bug.cgi?id=28728
|
||||
Patch4: 0001-Produce-DWARF4-by-default.patch
|
||||
# Workaround a bug in ORC on ppc64le.
|
||||
# More info is available here: https://reviews.llvm.org/D159115#4641826
|
||||
Patch5: 0001-Workaround-a-bug-in-ORC-on-ppc64le.patch
|
||||
|
||||
# RHEL specific patches
|
||||
# Avoid unwanted dependency on python-recommonmark
|
||||
Patch101: 0009-disable-recommonmark.patch
|
||||
|
||||
%if %{without compat_build}
|
||||
# Patches for clang-tools-extra
|
||||
%if !0%{?compat_build}
|
||||
%ifarch ix86
|
||||
Patch201 clangd-tests.patch
|
||||
# See https://reviews.llvm.org/D120301
|
||||
Patch201: 0001-clang-tools-extra-Make-test-dependency-on-LLVMHello-.patch
|
||||
%endif
|
||||
%endif
|
||||
|
||||
Patch202: 0001-Confusable-identifiers-detection.patch
|
||||
Patch203: 0002-Misleading-bidirectional-detection.patch
|
||||
Patch204: 0003-Misleading-unicode-identifier-detection-pass.patch
|
||||
|
||||
|
||||
# Not Upstream
|
||||
|
||||
BuildRequires: gcc
|
||||
BuildRequires: gcc-c++
|
||||
BuildRequires: cmake
|
||||
BuildRequires: ninja-build
|
||||
%if 0%{?compat_build}
|
||||
BuildRequires: llvm%{maj_ver}-devel = %{version}
|
||||
BuildRequires: llvm%{maj_ver}-static = %{version}
|
||||
|
||||
%if %{with compat_build}
|
||||
%global llvm_pkg_name llvm%{maj_ver}
|
||||
%else
|
||||
BuildRequires: llvm-devel = %{version}
|
||||
BuildRequires: llvm-test = %{version}
|
||||
%global llvm_pkg_name llvm
|
||||
BuildRequires: llvm-test = %{version}
|
||||
BuildRequires: llvm-googletest = %{version}
|
||||
%endif
|
||||
|
||||
BuildRequires: %{llvm_pkg_name}-devel = %{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: %{llvm_pkg_name}-static = %{version}
|
||||
BuildRequires: %{llvm_pkg_name}-cmake-utils = %{version}
|
||||
|
||||
BuildRequires: libxml2-devel
|
||||
BuildRequires: perl-generators
|
||||
@ -125,16 +123,14 @@ 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: pandoc
|
||||
BuildRequires: libatomic
|
||||
|
||||
# We need python3-devel for pathfix.py.
|
||||
# We need python3-devel for %%py3_shebang_fix
|
||||
BuildRequires: python3-devel
|
||||
|
||||
%if ! 0%{?rhel}
|
||||
@ -147,6 +143,9 @@ BuildRequires: /usr/bin/marshalparser
|
||||
# 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)
|
||||
@ -171,8 +170,7 @@ Requires: gcc-c++
|
||||
|
||||
Provides: clang(major) = %{maj_ver}
|
||||
|
||||
Conflicts: compiler-rt < %{version}
|
||||
Conflicts: compiler-rt > %{version}
|
||||
Conflicts: compiler-rt < 11.0.0
|
||||
|
||||
%description
|
||||
clang: noun
|
||||
@ -190,7 +188,9 @@ libomp-devel to enable -fopenmp.
|
||||
|
||||
%package libs
|
||||
Summary: Runtime library for clang
|
||||
Requires: %{name}-resource-filesystem%{?_isa} = %{version}
|
||||
Requires: %{name}-resource-filesystem = %{version}
|
||||
# RHEL specific: Use libstdc++ from gcc13 by default. rhbz#2178804
|
||||
Requires: gcc-toolset-13-gcc-c++
|
||||
Recommends: compiler-rt%{?_isa} = %{version}
|
||||
# libomp-devel is required, so clang can find the omp.h header when compiling
|
||||
# with -fopenmp.
|
||||
@ -202,11 +202,11 @@ Runtime library for clang.
|
||||
|
||||
%package devel
|
||||
Summary: Development header files for clang
|
||||
%if !0%{?compat_build}
|
||||
Requires: %{name}-libs = %{version}-%{release}
|
||||
%if %{without 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
|
||||
@ -215,11 +215,12 @@ Development header files for clang.
|
||||
%package resource-filesystem
|
||||
Summary: Filesystem package that owns the clang resource directory
|
||||
Provides: %{name}-resource-filesystem(major) = %{maj_ver}
|
||||
BuildArch: noarch
|
||||
|
||||
%description resource-filesystem
|
||||
This package owns the clang resouce directory: $libdir/clang/$version/
|
||||
This package owns the clang resouce directory: lib/clang/$version/
|
||||
|
||||
%if !0%{?compat_build}
|
||||
%if %{without compat_build}
|
||||
%package analyzer
|
||||
Summary: A source code analysis framework
|
||||
License: NCSA and MIT
|
||||
@ -240,6 +241,13 @@ Requires: emacs-filesystem
|
||||
%description tools-extra
|
||||
A set of extra tools built using Clang's tooling API.
|
||||
|
||||
%package tools-extra-devel
|
||||
Summary: Development header files for clang tools
|
||||
Requires: %{name}-tools-extra = %{version}-%{release}
|
||||
|
||||
%description tools-extra-devel
|
||||
Development header files for clang tools.
|
||||
|
||||
# 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.
|
||||
@ -255,7 +263,7 @@ clang-format integration for git.
|
||||
|
||||
%package -n python3-clang
|
||||
Summary: Python3 bindings for clang
|
||||
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
|
||||
Requires: %{name}-devel%{?_isa} = %{version}-%{release}
|
||||
Requires: python3
|
||||
%description -n python3-clang
|
||||
%{summary}.
|
||||
@ -265,83 +273,108 @@ Requires: python3
|
||||
|
||||
|
||||
%prep
|
||||
%if 0%{?compat_build}
|
||||
%if %{without snapshot_build}
|
||||
%{gpgverify} --keyring='%{SOURCE4}' --signature='%{SOURCE3}' --data='%{SOURCE0}'
|
||||
%endif
|
||||
|
||||
%if %{with compat_build}
|
||||
%autosetup -n %{clang_srcdir} -p2
|
||||
%else
|
||||
|
||||
%if %{without snapshot_build}
|
||||
%{gpgverify} --keyring='%{SOURCE4}' --signature='%{SOURCE2}' --data='%{SOURCE1}'
|
||||
%endif
|
||||
|
||||
%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
|
||||
rm test/clang-tidy/checkers/altera/struct-pack-align.cpp
|
||||
|
||||
pathfix.py -i %{__python3} -pn \
|
||||
clang-tidy/tool/*.py \
|
||||
%py3_shebang_fix \
|
||||
clang-tidy/tool/ \
|
||||
clang-include-fixer/find-all-symbols/tool/run-find-all-symbols.py
|
||||
|
||||
|
||||
%setup -q -n %{clang_srcdir}
|
||||
%autopatch -M200 -p2
|
||||
%autopatch -M%{?!rhel:100}%{?rhel:200} -p2
|
||||
|
||||
# failing test case
|
||||
rm test/CodeGen/profile-filter.c
|
||||
|
||||
pathfix.py -i %{__python3} -pn \
|
||||
tools/clang-format/*.py \
|
||||
%py3_shebang_fix \
|
||||
tools/clang-format/ \
|
||||
tools/clang-format/git-clang-format \
|
||||
utils/hmaptool/hmaptool \
|
||||
tools/scan-view/bin/scan-view
|
||||
tools/scan-view/bin/scan-view \
|
||||
tools/scan-view/share/Reporter.py \
|
||||
tools/scan-view/share/startfile.py \
|
||||
tools/scan-build-py/bin/* \
|
||||
tools/scan-build-py/libexec/*
|
||||
|
||||
# Convert markdown files to rst to cope with the absence of compatible md parser in rhel.
|
||||
# The sed expression takes care of a slight difference between pandoc markdown and sphinx markdown.
|
||||
find -name '*.md' | while read md; do sed -r -e 's/^( )*\* /\n\1\* /' ${md} | pandoc -f markdown -o ${md%.md}.rst ; done
|
||||
|
||||
%endif
|
||||
|
||||
%build
|
||||
|
||||
# We run the builders out of memory on armv7 and i686 when LTO is enabled
|
||||
%ifarch %{arm} i686
|
||||
%undefine __cmake_in_source_build
|
||||
|
||||
# And disable LTO on AArch64 entirely.
|
||||
%ifarch aarch64
|
||||
%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
|
||||
# Disable LTO to speed up builds
|
||||
%if %{with snapshot_build}
|
||||
%global _lto_cflags %nil
|
||||
%endif
|
||||
|
||||
mkdir -p %{_vpath_builddir}
|
||||
cd %{_vpath_builddir}
|
||||
|
||||
%ifarch s390 s390x %{arm} %ix86 ppc64le
|
||||
%ifarch s390 s390x aarch64 %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 \
|
||||
# Disable dwz on aarch64, because it takes a huge amount of time to decide not to optimize things.
|
||||
%ifarch aarch64
|
||||
%define _find_debuginfo_dwz_opts %{nil}
|
||||
%endif
|
||||
|
||||
|
||||
%set_build_flags
|
||||
CXXFLAGS="$CXXFLAGS -Wno-address -Wno-nonnull -Wno-maybe-uninitialized"
|
||||
CFLAGS="$CFLAGS -Wno-address -Wno-nonnull -Wno-maybe-uninitialized"
|
||||
|
||||
# We set CLANG_DEFAULT_PIE_ON_LINUX=OFF and PPC_LINUX_DEFAULT_IEEELONGDOUBLE=ON to match the
|
||||
# defaults used by Fedora's GCC.
|
||||
%cmake -G Ninja \
|
||||
-DCLANG_DEFAULT_PIE_ON_LINUX=OFF \
|
||||
%if 0%{?fedora} || 0%{?rhel} > 9
|
||||
-DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=ON \
|
||||
%endif
|
||||
-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_SKIP_RPATH:BOOL=ON \
|
||||
%ifarch s390 s390x %ix86 ppc64le aarch64
|
||||
-DCMAKE_C_FLAGS_RELWITHDEBINFO="%{optflags} -DNDEBUG" \
|
||||
-DCMAKE_CXX_FLAGS_RELWITHDEBINFO="%{optflags} -DNDEBUG" \
|
||||
%endif
|
||||
%if 0%{?compat_build}
|
||||
%if %{with compat_build}
|
||||
-DCLANG_BUILD_TOOLS:BOOL=OFF \
|
||||
-DLLVM_CONFIG:FILEPATH=%{_bindir}/llvm-config-%{maj_ver}-%{__isa_bits} \
|
||||
-DCMAKE_INSTALL_PREFIX=%{install_prefix} \
|
||||
-DCLANG_INCLUDE_TESTS:BOOL=OFF \
|
||||
-DLLVM_INCLUDE_TESTS:BOOL=OFF \
|
||||
-DLLVM_CMAKE_DIR=%{install_libdir}/cmake/llvm \
|
||||
%else
|
||||
-DCLANG_INCLUDE_TESTS:BOOL=ON \
|
||||
-DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR=../../%{clang_tools_srcdir} \
|
||||
-DLLVM_BUILD_UTILS:BOOL=ON \
|
||||
-DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR=../%{clang_tools_srcdir} \
|
||||
-DLLVM_EXTERNAL_LIT=%{_bindir}/lit \
|
||||
-DLLVM_LIT_ARGS="-vv" \
|
||||
-DLLVM_MAIN_SRC_DIR=%{_datadir}/llvm/src \
|
||||
%if 0%{?__isa_bits} == 64
|
||||
-DLLVM_LIBDIR_SUFFIX=64 \
|
||||
@ -350,11 +383,16 @@ cd %{_vpath_builddir}
|
||||
%endif
|
||||
%endif
|
||||
\
|
||||
%if 0%{compat_build}
|
||||
%if %{with snapshot_build}
|
||||
-DLLVM_VERSION_SUFFIX="%{llvm_snapshot_version_suffix}" \
|
||||
%endif
|
||||
\
|
||||
%if %{with compat_build}
|
||||
-DLLVM_TABLEGEN_EXE:FILEPATH=%{_bindir}/llvm-tblgen-%{maj_ver} \
|
||||
%else
|
||||
-DLLVM_TABLEGEN_EXE:FILEPATH=%{_bindir}/llvm-tblgen \
|
||||
%endif
|
||||
-DLLVM_COMMON_CMAKE_UTILS=%{install_datadir}/llvm/cmake \
|
||||
-DCLANG_ENABLE_ARCMT:BOOL=ON \
|
||||
-DCLANG_ENABLE_STATIC_ANALYZER:BOOL=ON \
|
||||
-DCLANG_INCLUDE_DOCS:BOOL=ON \
|
||||
@ -370,35 +408,48 @@ cd %{_vpath_builddir}
|
||||
-DCLANG_BUILD_EXAMPLES:BOOL=OFF \
|
||||
-DBUILD_SHARED_LIBS=OFF \
|
||||
-DCLANG_REPOSITORY_STRING="%{?fedora:Fedora}%{?rhel:Red Hat} %{version}-%{release}" \
|
||||
-DGCC_INSTALL_PREFIX=/opt/rh/gcc-toolset-13/root/usr \
|
||||
-DCLANG_RESOURCE_DIR=../lib/clang/%{maj_ver} \
|
||||
-DCLANG_DEFAULT_UNWINDLIB=libgcc
|
||||
|
||||
%cmake_build
|
||||
|
||||
%install
|
||||
|
||||
pushd %{_vpath_builddir}
|
||||
%cmake_install
|
||||
popd
|
||||
|
||||
%if 0%{?compat_build}
|
||||
%if %{with 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}/
|
||||
# Remove scanview-py helper libs
|
||||
rm -Rf %{buildroot}%{install_prefix}/lib/{libear,libscanbuild}
|
||||
|
||||
%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}
|
||||
|
||||
# Fix permissions of scan-view scripts
|
||||
chmod a+x %{buildroot}%{_datadir}/scan-view/{Reporter.py,startfile.py}
|
||||
|
||||
# multilib fix
|
||||
%multilib_fix_c_header --file %{_includedir}/clang/Config/config.h
|
||||
|
||||
@ -413,7 +464,7 @@ 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}%{_docdir}/Clang/clang/html
|
||||
rm -Rvf %{buildroot}%{_datadir}/clang/clang-doc-default-stylesheet.css
|
||||
rm -Rvf %{buildroot}%{_datadir}/clang/index.js
|
||||
|
||||
@ -432,47 +483,40 @@ 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}%{_libdir}/clang/%{version}/{include,lib,share}/
|
||||
mkdir -p %{buildroot}%{install_prefix}/lib/clang/%{maj_ver}/{bin,include,lib,share}/
|
||||
|
||||
%endif
|
||||
|
||||
# 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
|
||||
cd %{_vpath_builddir}
|
||||
|
||||
%if !0%{?compat_build}
|
||||
%if %{without compat_build}
|
||||
%if %{with check}
|
||||
# Build test dependencies separately, to prevent invocations of host clang from being affected
|
||||
# by LD_LIBRARY_PATH below.
|
||||
%cmake_build --target clang-test-depends \
|
||||
ExtraToolsUnitTests ClangdUnitTests ClangIncludeCleanerUnitTests ClangPseudoUnitTests
|
||||
# requires lit.py from LLVM utilities
|
||||
# FIXME: Fix failing ARM tests
|
||||
LD_LIBRARY_PATH=%{buildroot}/%{_libdir} %cmake_build --target check-all || \
|
||||
%ifarch %{arm}
|
||||
:
|
||||
%else
|
||||
false
|
||||
LD_LIBRARY_PATH=%{buildroot}/%{_libdir} %{__ninja} %{_smp_mflags} check-all -C %{_vpath_builddir}
|
||||
%endif
|
||||
|
||||
%endif
|
||||
|
||||
|
||||
%if !0%{?compat_build}
|
||||
%if %{without compat_build}
|
||||
%files
|
||||
%license LICENSE.TXT
|
||||
%{clang_binaries}
|
||||
%{_bindir}/clang
|
||||
%{_bindir}/clang++
|
||||
%{_bindir}/clang-%{maj_ver}
|
||||
%{_bindir}/clang++-%{maj_ver}
|
||||
%{_bindir}/clang-cl
|
||||
%{_bindir}/clang-cpp
|
||||
%{_mandir}/man1/clang.1.gz
|
||||
%{_mandir}/man1/clang++.1.gz
|
||||
%{_mandir}/man1/clang-%{maj_ver}.1.gz
|
||||
@ -480,49 +524,81 @@ false
|
||||
%endif
|
||||
|
||||
%files libs
|
||||
%if !0%{?compat_build}
|
||||
%{_libdir}/clang/
|
||||
%{_libdir}/*.so.*
|
||||
%else
|
||||
%{pkg_libdir}/*.so.*
|
||||
%{pkg_libdir}/clang/%{version}
|
||||
%endif
|
||||
%{install_prefix}/lib/clang/%{maj_ver}/include/*
|
||||
%{install_libdir}/*.so.*
|
||||
|
||||
%files devel
|
||||
%if !0%{?compat_build}
|
||||
%if %{without compat_build}
|
||||
%{_libdir}/*.so
|
||||
%{_includedir}/clang/
|
||||
%{_includedir}/clang-c/
|
||||
%{_libdir}/cmake/*
|
||||
%{_bindir}/clang-tblgen
|
||||
%dir %{_datadir}/clang/
|
||||
%else
|
||||
%{pkg_libdir}/*.so
|
||||
%{install_libdir}/*.so
|
||||
%{pkg_includedir}/clang/
|
||||
%{pkg_includedir}/clang-c/
|
||||
%{pkg_libdir}/cmake/
|
||||
%{install_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 !0%{?compat_build}
|
||||
%{pkg_libdir}/clang/%{maj_ver}
|
||||
%endif
|
||||
%dir %{install_prefix}/lib/clang/
|
||||
%dir %{install_prefix}/lib/clang/%{maj_ver}/
|
||||
%dir %{install_prefix}/lib/clang/%{maj_ver}/bin/
|
||||
%dir %{install_prefix}/lib/clang/%{maj_ver}/include/
|
||||
%dir %{install_prefix}/lib/clang/%{maj_ver}/lib/
|
||||
%dir %{install_prefix}/lib/clang/%{maj_ver}/share/
|
||||
%if %{without compat_build}
|
||||
%{_rpmmacrodir}/macros.%{name}
|
||||
|
||||
|
||||
%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}/amdgpu-arch
|
||||
%{_bindir}/clang-apply-replacements
|
||||
%{_bindir}/clang-change-namespace
|
||||
%{_bindir}/clang-check
|
||||
%{_bindir}/clang-doc
|
||||
%{_bindir}/clang-extdef-mapping
|
||||
%{_bindir}/clang-format
|
||||
%{_bindir}/clang-include-cleaner
|
||||
%{_bindir}/clang-include-fixer
|
||||
%{_bindir}/clang-move
|
||||
%{_bindir}/clang-offload-bundler
|
||||
%{_bindir}/clang-offload-packager
|
||||
%{_bindir}/clang-linker-wrapper
|
||||
%{_bindir}/clang-pseudo
|
||||
%{_bindir}/clang-query
|
||||
%{_bindir}/clang-refactor
|
||||
%{_bindir}/clang-rename
|
||||
%{_bindir}/clang-reorder-fields
|
||||
%{_bindir}/clang-repl
|
||||
%{_bindir}/clang-scan-deps
|
||||
%{_bindir}/clang-tidy
|
||||
%{_bindir}/clangd
|
||||
%{_bindir}/diagtool
|
||||
%{_bindir}/hmaptool
|
||||
%{_bindir}/nvptx-arch
|
||||
%{_bindir}/pp-trace
|
||||
%{_bindir}/c-index-test
|
||||
%{_bindir}/find-all-symbols
|
||||
%{_bindir}/modularize
|
||||
@ -535,10 +611,13 @@ false
|
||||
%{_datadir}/clang/clang-format-diff.py*
|
||||
%{_datadir}/clang/clang-include-fixer.py*
|
||||
%{_datadir}/clang/clang-tidy-diff.py*
|
||||
%{_datadir}/clang/run-clang-tidy.py*
|
||||
%{_bindir}/run-clang-tidy
|
||||
%{_datadir}/clang/run-find-all-symbols.py*
|
||||
%{_datadir}/clang/clang-rename.py*
|
||||
|
||||
%files tools-extra-devel
|
||||
%{_includedir}/clang-tidy/
|
||||
|
||||
%files -n git-clang-format
|
||||
%{_bindir}/git-clang-format
|
||||
|
||||
@ -548,11 +627,51 @@ false
|
||||
|
||||
%endif
|
||||
%changelog
|
||||
* Thu Nov 4 2021 sguelton@redhat.com - 12.0.1-3
|
||||
- Trojan source clang-tidy patchset
|
||||
* Wed Nov 29 2023 Nikita Popov <npopov@redhat.com> - 17.0.6-1
|
||||
- Update to LLVM 17.0.6
|
||||
|
||||
* Fri Sep 17 2021 Tom Stellard <tstellar@redhat.com> - 12.0.1-2
|
||||
- Only enable -funwind-tables by default on some arches
|
||||
* Wed Oct 04 2023 Nikita Popov <npopov@redhat.com> - 17.0.2-1
|
||||
- Update to LLVM 17.0.2
|
||||
|
||||
* Thu Jun 29 2023 Tom Stellard <tstellar@redhat.com> - 16.0.6-2
|
||||
- Use gcc-toolset-13 by default
|
||||
|
||||
* Sat Jun 17 2023 Tom Stellard <tstellar@redhat.com> - 16.0.6-1
|
||||
- 16.0.6 Release
|
||||
|
||||
* Fri May 12 2023 Tom Stellard <tstellar@redhat.com> - 16.0.0-2
|
||||
- Fix clang_resource_dir macro
|
||||
|
||||
* Fri Apr 28 2023 Tom Stellard <tstelar@redhat.com> - 16.0.0-1
|
||||
- 16.0.0 Release
|
||||
|
||||
* Thu Jan 19 2023 Tom Stellard <tstellar@redhat.com> - 15.0.7-1
|
||||
- Update to LLVM 15.0.7
|
||||
|
||||
* Tue Sep 06 2022 Nikita Popov <npopov@redhat.com> - 15.0.0-1
|
||||
- Update to LLVM 15.0.0
|
||||
|
||||
* Tue Jun 28 2022 Tom Stellard <tstellar@redhat.com> - 14.0.6-1
|
||||
- 14.0.6 Release
|
||||
|
||||
* Wed Jun 01 2022 Timm Bäder <tbaeder@redhat.com> - 14.0.0-2
|
||||
- Increate gcc-toolset dependency to 12
|
||||
- Set GCC_INSTALL_PREFIX variable
|
||||
|
||||
* Thu Apr 07 2022 Timm Bäder <tbaeder@redhat.com> - 14.0.0-1
|
||||
- Update to 14.0.0
|
||||
|
||||
* Thu Feb 03 2022 Tom Stellard <tstellar@redhat.com> - 13.0.1-1
|
||||
- 13.0.1 Release
|
||||
|
||||
* Fri Jan 21 2022 Serge Guelton - 13.0.0-3
|
||||
- Backport bidi patches
|
||||
|
||||
* Fri Oct 22 2021 Tom Stellard <tstellar@redhat.com> - 13.0.0-2
|
||||
- Don't emit unwind tables for bpf
|
||||
|
||||
* Fri Oct 15 2021 Tom Stellard <tstellar@redhat.com> - 13.0.0-1
|
||||
- 13.0.0 Release
|
||||
|
||||
* Fri Jul 16 2021 sguelton@redhat.com - 12.0.1-1
|
||||
- 12.0.1 release
|
||||
|
Loading…
Reference in New Issue
Block a user