summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKhem Raj <raj.khem@gmail.com>2020-01-20 09:13:11 -0800
committerKhem Raj <raj.khem@gmail.com>2020-02-21 08:25:54 -0800
commit64aa45cebb8d1dea90bf81e84a802f0ef103db14 (patch)
tree46e07b57042e7fdead8f57e10740e2659976aefa
parent20c73898bfc2d5111d29ac8cb39021e031f68cae (diff)
downloadmeta-clang-64aa45cebb8d1dea90bf81e84a802f0ef103db14.tar.gz
clang: Upgrade clang to 10.x release (RC2)
Signed-off-by: Khem Raj <raj.khem@gmail.com>
-rw-r--r--conf/layer.conf2
-rw-r--r--recipes-devtools/clang/clang.inc6
-rw-r--r--recipes-devtools/clang/clang/0001-lldb-Add-lxml2-to-linker-cmdline-of-xml-is-found.patch6
-rw-r--r--recipes-devtools/clang/clang/0002-libcxxabi-Find-libunwind-headers-when-LIBCXXABI_LIBU.patch8
-rw-r--r--recipes-devtools/clang/clang/0003-compiler-rt-support-a-new-embedded-linux-target.patch2
-rw-r--r--recipes-devtools/clang/clang/0004-compiler-rt-Simplify-cross-compilation.-Don-t-use-na.patch6
-rw-r--r--recipes-devtools/clang/clang/0005-compiler-rt-Disable-tsan-on-OE-glibc.patch10
-rw-r--r--recipes-devtools/clang/clang/0006-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch2
-rw-r--r--recipes-devtools/clang/clang/0007-llvm-allow-env-override-of-exe-path.patch4
-rw-r--r--recipes-devtools/clang/clang/0008-clang-driver-Check-sysroot-for-ldso-path.patch (renamed from recipes-devtools/clang/clang/0010-clang-driver-Check-sysroot-for-ldso-path.patch)5
-rw-r--r--recipes-devtools/clang/clang/0008-llvm-Enhance-path-prefix-mapping.patch172
-rw-r--r--recipes-devtools/clang/clang/0009-clang-Driver-tools.cpp-Add-lssp_nonshared-on-musl.patch (renamed from recipes-devtools/clang/clang/0011-clang-Driver-tools.cpp-Add-lssp_nonshared-on-musl.patch)6
-rw-r--r--recipes-devtools/clang/clang/0009-clang-Enable-SSP-and-PIE-by-default.patch60
-rw-r--r--recipes-devtools/clang/clang/0010-clang-musl-ppc-does-not-support-128-bit-long-double.patch (renamed from recipes-devtools/clang/clang/0012-clang-musl-ppc-does-not-support-128-bit-long-double.patch)6
-rw-r--r--recipes-devtools/clang/clang/0011-clang-Prepend-trailing-to-sysroot.patch (renamed from recipes-devtools/clang/clang/0013-clang-Prepend-trailing-to-sysroot.patch)4
-rw-r--r--recipes-devtools/clang/clang/0012-clang-Look-inside-the-target-sysroot-for-compiler-ru.patch (renamed from recipes-devtools/clang/clang/0014-clang-Look-inside-the-target-sysroot-for-compiler-ru.patch)10
-rw-r--r--recipes-devtools/clang/clang/0013-clang-Define-releative-gcc-installation-dir.patch (renamed from recipes-devtools/clang/clang/0015-clang-Define-releative-gcc-installation-dir.patch)6
-rw-r--r--recipes-devtools/clang/clang/0014-clang-Fix-ldso-for-musl-on-x86-and-x32-architectures.patch (renamed from recipes-devtools/clang/clang/0016-clang-Fix-ldso-for-musl-on-x86-and-x32-architectures.patch)4
-rw-r--r--recipes-devtools/clang/clang/0015-clang-scan-view-needs-python-2.x.patch (renamed from recipes-devtools/clang/clang/0017-clang-scan-view-needs-python-2.x.patch)2
-rw-r--r--recipes-devtools/clang/clang/0016-clang-Add-lpthread-and-ldl-along-with-lunwind-for-st.patch (renamed from recipes-devtools/clang/clang/0019-clang-Add-lpthread-and-ldl-along-with-lunwind-for-st.patch)24
-rw-r--r--recipes-devtools/clang/clang/0017-libclang-Use-CMAKE_DL_LIBS-for-deducing-libdl.patch (renamed from recipes-devtools/clang/clang/0026-libclang-Use-CMAKE_DL_LIBS-for-deducing-libdl.patch)6
-rw-r--r--recipes-devtools/clang/clang/0018-Pass-PYTHON_EXECUTABLE-when-cross-compiling-for-nati.patch (renamed from recipes-devtools/clang/clang/0022-Pass-PYTHON_EXECUTABLE-when-cross-compiling-for-nati.patch)17
-rw-r--r--recipes-devtools/clang/clang/0018-clang-Initial-implementation-of-fmacro-prefix-map-an.patch380
-rw-r--r--recipes-devtools/clang/clang/0019-Check-for-atomic-double-intrinsics.patch (renamed from recipes-devtools/clang/clang/0024-Check-for-atomic-double-intrinsics.patch)4
-rw-r--r--recipes-devtools/clang/clang/0020-clang-Enable-SSP-and-PIE-by-default.patch313
-rw-r--r--recipes-devtools/clang/clang/0020-clang-default-to-lp64d-ABI-and-rv64gc-ISA.patch49
-rw-r--r--recipes-devtools/clang/clang/0021-RISCV-Add-support-for-floating-point-registers-in-in.patch103
-rw-r--r--recipes-devtools/clang/clang/0021-llvm-Add-lz-to-linker-cmdline-if-enabled.patch28
-rw-r--r--recipes-devtools/clang/clang/0022-libcxx-Add-compiler-runtime-library-to-link-step-for.patch37
-rw-r--r--recipes-devtools/clang/clang/0023-clang-llvm-cmake-Fix-configure-for-packages-using-fi.patch (renamed from recipes-devtools/clang/clang/0029-clang-llvm-cmake-Fix-configure-for-packages-using-fi.patch)48
-rw-r--r--recipes-devtools/clang/clang/0023-openmp-Recognise-ARMv7ve-machine-arch.patch28
-rw-r--r--recipes-devtools/clang/clang/0025-llvm-Let-llvm-ar-name-contain-lib.patch150
-rw-r--r--recipes-devtools/clang/clang/0027-Fix-sanitizer-common-build-with-glibc-2.31.patch81
-rw-r--r--recipes-devtools/clang/clang/0028-Add-libgcc-to-link-step-for-libcxx.patch30
-rw-r--r--recipes-devtools/clang/common.inc38
35 files changed, 492 insertions, 1165 deletions
diff --git a/conf/layer.conf b/conf/layer.conf
index 73b473a..2ca07f2 100644
--- a/conf/layer.conf
+++ b/conf/layer.conf
@@ -29,7 +29,7 @@ INHERIT += "clang"
29# include clang in SDK 29# include clang in SDK
30CLANGSDK ??= "1" 30CLANGSDK ??= "1"
31 31
32LLVMVERSION = "9.0.1" 32LLVMVERSION = "10.0.0"
33 33
34require conf/nonclangable.conf 34require conf/nonclangable.conf
35require conf/nonscanable.conf 35require conf/nonscanable.conf
diff --git a/recipes-devtools/clang/clang.inc b/recipes-devtools/clang/clang.inc
index 84e692d..804e68c 100644
--- a/recipes-devtools/clang/clang.inc
+++ b/recipes-devtools/clang/clang.inc
@@ -4,11 +4,11 @@ LLVM_DIR = "llvm${LLVM_RELEASE}"
4LLVM_GIT ?= "git://github.com/llvm" 4LLVM_GIT ?= "git://github.com/llvm"
5LLVM_GIT_PROTOCOL ?= "https" 5LLVM_GIT_PROTOCOL ?= "https"
6 6
7MAJOR_VER = "9" 7MAJOR_VER = "10"
8MINOR_VER = "0" 8MINOR_VER = "0"
9PATCH_VER = "1" 9PATCH_VER = "0"
10 10
11SRCREV ?= "c1a0a213378a458fbea1a5c77b315c7dce08fd05" 11SRCREV ?= "5175565cf154aede57354336102a7f6e15a16a20"
12 12
13PV = "${MAJOR_VER}.${MINOR_VER}.${PATCH_VER}" 13PV = "${MAJOR_VER}.${MINOR_VER}.${PATCH_VER}"
14BRANCH = "release/${MAJOR_VER}.x" 14BRANCH = "release/${MAJOR_VER}.x"
diff --git a/recipes-devtools/clang/clang/0001-lldb-Add-lxml2-to-linker-cmdline-of-xml-is-found.patch b/recipes-devtools/clang/clang/0001-lldb-Add-lxml2-to-linker-cmdline-of-xml-is-found.patch
index 439701b..d0d1d13 100644
--- a/recipes-devtools/clang/clang/0001-lldb-Add-lxml2-to-linker-cmdline-of-xml-is-found.patch
+++ b/recipes-devtools/clang/clang/0001-lldb-Add-lxml2-to-linker-cmdline-of-xml-is-found.patch
@@ -1,4 +1,4 @@
1From 364c720b5291ed32d14162fd2ddd5975a55fdbe9 Mon Sep 17 00:00:00 2001 1From 47e9c3e1a066cd17828b819937b1296e6ebc6403 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Mon, 22 May 2017 17:36:16 -0700 3Date: Mon, 22 May 2017 17:36:16 -0700
4Subject: [PATCH] lldb: Add -lxml2 to linker cmdline of xml is found 4Subject: [PATCH] lldb: Add -lxml2 to linker cmdline of xml is found
@@ -23,10 +23,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
23 1 file changed, 1 insertion(+), 1 deletion(-) 23 1 file changed, 1 insertion(+), 1 deletion(-)
24 24
25diff --git a/lldb/source/Host/CMakeLists.txt b/lldb/source/Host/CMakeLists.txt 25diff --git a/lldb/source/Host/CMakeLists.txt b/lldb/source/Host/CMakeLists.txt
26index 4bb8d363b57..3b58c36c641 100644 26index 2e9bb402227..bfad6703c65 100644
27--- a/lldb/source/Host/CMakeLists.txt 27--- a/lldb/source/Host/CMakeLists.txt
28+++ b/lldb/source/Host/CMakeLists.txt 28+++ b/lldb/source/Host/CMakeLists.txt
29@@ -148,7 +148,7 @@ if (APPLE) 29@@ -149,7 +149,7 @@ if (APPLE)
30 list(APPEND EXTRA_LIBS xml2) 30 list(APPEND EXTRA_LIBS xml2)
31 else () 31 else ()
32 if (LIBXML2_FOUND) 32 if (LIBXML2_FOUND)
diff --git a/recipes-devtools/clang/clang/0002-libcxxabi-Find-libunwind-headers-when-LIBCXXABI_LIBU.patch b/recipes-devtools/clang/clang/0002-libcxxabi-Find-libunwind-headers-when-LIBCXXABI_LIBU.patch
index a3c1256..b3c8199 100644
--- a/recipes-devtools/clang/clang/0002-libcxxabi-Find-libunwind-headers-when-LIBCXXABI_LIBU.patch
+++ b/recipes-devtools/clang/clang/0002-libcxxabi-Find-libunwind-headers-when-LIBCXXABI_LIBU.patch
@@ -1,4 +1,4 @@
1From d3caf3ac407c6d53f62f18dcec3ecb2cb33166ba Mon Sep 17 00:00:00 2001 1From 9bea240c28ad2d202b42d729f3c5a1afe175ead8 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Sun, 27 Aug 2017 10:37:49 -0700 3Date: Sun, 27 Aug 2017 10:37:49 -0700
4Subject: [PATCH] libcxxabi: Find libunwind headers when 4Subject: [PATCH] libcxxabi: Find libunwind headers when
@@ -17,10 +17,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
17 1 file changed, 11 insertions(+), 10 deletions(-) 17 1 file changed, 11 insertions(+), 10 deletions(-)
18 18
19diff --git a/libcxxabi/CMakeLists.txt b/libcxxabi/CMakeLists.txt 19diff --git a/libcxxabi/CMakeLists.txt b/libcxxabi/CMakeLists.txt
20index aa0b124fc3c..e1503837f33 100644 20index 59d99971a76..b0f51ebee3e 100644
21--- a/libcxxabi/CMakeLists.txt 21--- a/libcxxabi/CMakeLists.txt
22+++ b/libcxxabi/CMakeLists.txt 22+++ b/libcxxabi/CMakeLists.txt
23@@ -455,14 +455,9 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${LIBCXXABI_C_FLAGS}") 23@@ -497,14 +497,9 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${LIBCXXABI_C_FLAGS}")
24 # Setup Source Code 24 # Setup Source Code
25 #=============================================================================== 25 #===============================================================================
26 26
@@ -36,7 +36,7 @@ index aa0b124fc3c..e1503837f33 100644
36 PATHS ${LIBCXXABI_LIBUNWIND_INCLUDES} 36 PATHS ${LIBCXXABI_LIBUNWIND_INCLUDES}
37 ${LIBCXXABI_LIBUNWIND_PATH}/include 37 ${LIBCXXABI_LIBUNWIND_PATH}/include
38 ${CMAKE_BINARY_DIR}/${LIBCXXABI_LIBUNWIND_INCLUDES} 38 ${CMAKE_BINARY_DIR}/${LIBCXXABI_LIBUNWIND_INCLUDES}
39@@ -473,15 +468,21 @@ if (LIBCXXABI_USE_LLVM_UNWINDER OR LLVM_NATIVE_ARCH MATCHES ARM) 39@@ -515,15 +510,21 @@ if (LIBCXXABI_USE_LLVM_UNWINDER OR LLVM_NATIVE_ARCH MATCHES ARM)
40 NO_CMAKE_FIND_ROOT_PATH 40 NO_CMAKE_FIND_ROOT_PATH
41 ) 41 )
42 42
diff --git a/recipes-devtools/clang/clang/0003-compiler-rt-support-a-new-embedded-linux-target.patch b/recipes-devtools/clang/clang/0003-compiler-rt-support-a-new-embedded-linux-target.patch
index 916ac00..df021cd 100644
--- a/recipes-devtools/clang/clang/0003-compiler-rt-support-a-new-embedded-linux-target.patch
+++ b/recipes-devtools/clang/clang/0003-compiler-rt-support-a-new-embedded-linux-target.patch
@@ -1,4 +1,4 @@
1From 438cdfa2636eb5c180de004feb4527f70c6c1f88 Mon Sep 17 00:00:00 2001 1From dc01fa05b36c1623cdc1988be94dc6118b47cfe9 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Sun, 19 Apr 2015 15:16:23 -0700 3Date: Sun, 19 Apr 2015 15:16:23 -0700
4Subject: [PATCH] compiler-rt: support a new embedded linux target 4Subject: [PATCH] compiler-rt: support a new embedded linux target
diff --git a/recipes-devtools/clang/clang/0004-compiler-rt-Simplify-cross-compilation.-Don-t-use-na.patch b/recipes-devtools/clang/clang/0004-compiler-rt-Simplify-cross-compilation.-Don-t-use-na.patch
index daa6079..cb5dea1 100644
--- a/recipes-devtools/clang/clang/0004-compiler-rt-Simplify-cross-compilation.-Don-t-use-na.patch
+++ b/recipes-devtools/clang/clang/0004-compiler-rt-Simplify-cross-compilation.-Don-t-use-na.patch
@@ -1,4 +1,4 @@
1From 0d904bb5f9f9876e09392cadf36e053e983951c3 Mon Sep 17 00:00:00 2001 1From 82e0350c47f0d22e7081b64caff4dec9f48e3d7f Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Thu, 19 May 2016 23:11:45 -0700 3Date: Thu, 19 May 2016 23:11:45 -0700
4Subject: [PATCH] compiler-rt: Simplify cross-compilation. Don't use 4Subject: [PATCH] compiler-rt: Simplify cross-compilation. Don't use
@@ -20,10 +20,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
20 1 file changed, 10 insertions(+), 1 deletion(-) 20 1 file changed, 10 insertions(+), 1 deletion(-)
21 21
22diff --git a/compiler-rt/CMakeLists.txt b/compiler-rt/CMakeLists.txt 22diff --git a/compiler-rt/CMakeLists.txt b/compiler-rt/CMakeLists.txt
23index f26ae25ada3..1c68cd96d3a 100644 23index 8d768a404f2..1b1a29dc25a 100644
24--- a/compiler-rt/CMakeLists.txt 24--- a/compiler-rt/CMakeLists.txt
25+++ b/compiler-rt/CMakeLists.txt 25+++ b/compiler-rt/CMakeLists.txt
26@@ -72,7 +72,16 @@ set(COMPILER_RT_BAREMETAL_BUILD OFF CACHE BOOL 26@@ -74,7 +74,16 @@ set(COMPILER_RT_BAREMETAL_BUILD OFF CACHE BOOL
27 "Build for a bare-metal target.") 27 "Build for a bare-metal target.")
28 28
29 if (COMPILER_RT_STANDALONE_BUILD) 29 if (COMPILER_RT_STANDALONE_BUILD)
diff --git a/recipes-devtools/clang/clang/0005-compiler-rt-Disable-tsan-on-OE-glibc.patch b/recipes-devtools/clang/clang/0005-compiler-rt-Disable-tsan-on-OE-glibc.patch
index 310e8d0..6189ae8 100644
--- a/recipes-devtools/clang/clang/0005-compiler-rt-Disable-tsan-on-OE-glibc.patch
+++ b/recipes-devtools/clang/clang/0005-compiler-rt-Disable-tsan-on-OE-glibc.patch
@@ -1,4 +1,4 @@
1From c82435d462420d64e4fd249bd6673a12ef38d433 Mon Sep 17 00:00:00 2001 1From d9a483714b1ca13903024e4256b0b1beb5a1e2f6 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Mon, 18 Jul 2016 08:05:02 +0000 3Date: Mon, 18 Jul 2016 08:05:02 +0000
4Subject: [PATCH] compiler-rt: Disable tsan on OE/glibc 4Subject: [PATCH] compiler-rt: Disable tsan on OE/glibc
@@ -13,10 +13,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
13 2 files changed, 2 insertions(+), 2 deletions(-) 13 2 files changed, 2 insertions(+), 2 deletions(-)
14 14
15diff --git a/compiler-rt/cmake/config-ix.cmake b/compiler-rt/cmake/config-ix.cmake 15diff --git a/compiler-rt/cmake/config-ix.cmake b/compiler-rt/cmake/config-ix.cmake
16index 3cc4c22304e..9da891b62e9 100644 16index 3aad08e8896..a979d38c7a6 100644
17--- a/compiler-rt/cmake/config-ix.cmake 17--- a/compiler-rt/cmake/config-ix.cmake
18+++ b/compiler-rt/cmake/config-ix.cmake 18+++ b/compiler-rt/cmake/config-ix.cmake
19@@ -619,7 +619,7 @@ else() 19@@ -653,7 +653,7 @@ else()
20 endif() 20 endif()
21 21
22 if (COMPILER_RT_HAS_SANITIZER_COMMON AND TSAN_SUPPORTED_ARCH AND 22 if (COMPILER_RT_HAS_SANITIZER_COMMON AND TSAN_SUPPORTED_ARCH AND
@@ -26,10 +26,10 @@ index 3cc4c22304e..9da891b62e9 100644
26 else() 26 else()
27 set(COMPILER_RT_HAS_TSAN FALSE) 27 set(COMPILER_RT_HAS_TSAN FALSE)
28diff --git a/compiler-rt/test/sanitizer_common/CMakeLists.txt b/compiler-rt/test/sanitizer_common/CMakeLists.txt 28diff --git a/compiler-rt/test/sanitizer_common/CMakeLists.txt b/compiler-rt/test/sanitizer_common/CMakeLists.txt
29index 48fccf05855..b4a7f0adf14 100644 29index fcd651ebe42..821de915be8 100644
30--- a/compiler-rt/test/sanitizer_common/CMakeLists.txt 30--- a/compiler-rt/test/sanitizer_common/CMakeLists.txt
31+++ b/compiler-rt/test/sanitizer_common/CMakeLists.txt 31+++ b/compiler-rt/test/sanitizer_common/CMakeLists.txt
32@@ -6,7 +6,7 @@ set(SANITIZER_COMMON_TESTSUITES) 32@@ -11,7 +11,7 @@ set(SANITIZER_COMMON_TESTSUITES)
33 # FIXME(dliew): We should switch to COMPILER_RT_SANITIZERS_TO_BUILD instead of 33 # FIXME(dliew): We should switch to COMPILER_RT_SANITIZERS_TO_BUILD instead of
34 # the hard coded `SUPPORTED_TOOLS_INIT` list once we know that the other 34 # the hard coded `SUPPORTED_TOOLS_INIT` list once we know that the other
35 # sanitizers work. 35 # sanitizers work.
diff --git a/recipes-devtools/clang/clang/0006-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch b/recipes-devtools/clang/clang/0006-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch
index bcc8c6d..08d0c24 100644
--- a/recipes-devtools/clang/clang/0006-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch
+++ b/recipes-devtools/clang/clang/0006-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch
@@ -1,4 +1,4 @@
1From 9076572a14be8f881d1395f144d07b0740f71c69 Mon Sep 17 00:00:00 2001 1From 1a61e23b599d194450cec2923e28c712d8f27fe5 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Sat, 21 May 2016 00:33:20 +0000 3Date: Sat, 21 May 2016 00:33:20 +0000
4Subject: [PATCH] llvm: TargetLibraryInfo: Undefine libc functions if they are 4Subject: [PATCH] llvm: TargetLibraryInfo: Undefine libc functions if they are
diff --git a/recipes-devtools/clang/clang/0007-llvm-allow-env-override-of-exe-path.patch b/recipes-devtools/clang/clang/0007-llvm-allow-env-override-of-exe-path.patch
index d71005f..c135135 100644
--- a/recipes-devtools/clang/clang/0007-llvm-allow-env-override-of-exe-path.patch
+++ b/recipes-devtools/clang/clang/0007-llvm-allow-env-override-of-exe-path.patch
@@ -1,4 +1,4 @@
1From 58d9492746d605752409824db350ce4e299c9739 Mon Sep 17 00:00:00 2001 1From ebbc3bc8bef3bdab0d11e18049fe925ea24cb8e1 Mon Sep 17 00:00:00 2001
2From: Martin Kelly <mkelly@xevo.com> 2From: Martin Kelly <mkelly@xevo.com>
3Date: Fri, 19 May 2017 00:22:57 -0700 3Date: Fri, 19 May 2017 00:22:57 -0700
4Subject: [PATCH] llvm: allow env override of exe path 4Subject: [PATCH] llvm: allow env override of exe path
@@ -15,7 +15,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
15 1 file changed, 7 insertions(+) 15 1 file changed, 7 insertions(+)
16 16
17diff --git a/llvm/tools/llvm-config/llvm-config.cpp b/llvm/tools/llvm-config/llvm-config.cpp 17diff --git a/llvm/tools/llvm-config/llvm-config.cpp b/llvm/tools/llvm-config/llvm-config.cpp
18index 7ef7c46a262..a4f7ed82c7b 100644 18index 6c31df3e173..f34f3a935ad 100644
19--- a/llvm/tools/llvm-config/llvm-config.cpp 19--- a/llvm/tools/llvm-config/llvm-config.cpp
20+++ b/llvm/tools/llvm-config/llvm-config.cpp 20+++ b/llvm/tools/llvm-config/llvm-config.cpp
21@@ -225,6 +225,13 @@ Typical components:\n\ 21@@ -225,6 +225,13 @@ Typical components:\n\
diff --git a/recipes-devtools/clang/clang/0010-clang-driver-Check-sysroot-for-ldso-path.patch b/recipes-devtools/clang/clang/0008-clang-driver-Check-sysroot-for-ldso-path.patch
index bbbc020..b630aa6 100644
--- a/recipes-devtools/clang/clang/0010-clang-driver-Check-sysroot-for-ldso-path.patch
+++ b/recipes-devtools/clang/clang/0008-clang-driver-Check-sysroot-for-ldso-path.patch
@@ -1,4 +1,4 @@
1From dad564a1081f62fe1957175e2b060ca1778ff72b Mon Sep 17 00:00:00 2001 1From d3ab7b54689301d94d3fa8eacfe56c1395cf2c23 Mon Sep 17 00:00:00 2001
2From: Dan McGregor <dan.mcgregor@usask.ca> 2From: Dan McGregor <dan.mcgregor@usask.ca>
3Date: Wed, 26 Apr 2017 20:29:41 -0600 3Date: Wed, 26 Apr 2017 20:29:41 -0600
4Subject: [PATCH] clang: driver: Check sysroot for ldso path 4Subject: [PATCH] clang: driver: Check sysroot for ldso path
@@ -8,12 +8,13 @@ therefore adjust it for OE. Check for the default path, and if it isn't
8there, check /lib. 8there, check /lib.
9 9
10Signed-off-by: Dan McGregor <dan.mcgregor@usask.ca> 10Signed-off-by: Dan McGregor <dan.mcgregor@usask.ca>
11Signed-off-by: Khem Raj <raj.khem@gmail.com>
11--- 12---
12 clang/lib/Driver/ToolChains/Linux.cpp | 16 ++++++++++++++++ 13 clang/lib/Driver/ToolChains/Linux.cpp | 16 ++++++++++++++++
13 1 file changed, 16 insertions(+) 14 1 file changed, 16 insertions(+)
14 15
15diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp 16diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp
16index ed907549929..6adf581a882 100644 17index bff1ab1009b..02e3d676567 100644
17--- a/clang/lib/Driver/ToolChains/Linux.cpp 18--- a/clang/lib/Driver/ToolChains/Linux.cpp
18+++ b/clang/lib/Driver/ToolChains/Linux.cpp 19+++ b/clang/lib/Driver/ToolChains/Linux.cpp
19@@ -596,11 +596,19 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const { 20@@ -596,11 +596,19 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
diff --git a/recipes-devtools/clang/clang/0008-llvm-Enhance-path-prefix-mapping.patch b/recipes-devtools/clang/clang/0008-llvm-Enhance-path-prefix-mapping.patch
deleted file mode 100644
index bc89cfd..0000000
--- a/recipes-devtools/clang/clang/0008-llvm-Enhance-path-prefix-mapping.patch
+++ /dev/null
@@ -1,172 +0,0 @@
1From 8fe2337421af15dee7f0d2af7ed27695e2967723 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Fri, 15 Feb 2019 11:32:09 -0800
4Subject: [PATCH] llvm: Enhance path prefix mapping
5
6Upstream-Status: Submitted [https://reviews.llvm.org/D56769]
7Signed-off-by: Khem Raj <raj.khem@gmail.com>
8---
9 llvm/include/llvm/Support/Path.h | 25 +++++++++++++++---
10 llvm/lib/Support/Path.cpp | 44 +++++++++++++++++++++++++-------
11 llvm/unittests/Support/Path.cpp | 29 +++++++++++++++++++++
12 3 files changed, 85 insertions(+), 13 deletions(-)
13
14diff --git a/llvm/include/llvm/Support/Path.h b/llvm/include/llvm/Support/Path.h
15index 5c0bee58f18..20332c09852 100644
16--- a/llvm/include/llvm/Support/Path.h
17+++ b/llvm/include/llvm/Support/Path.h
18@@ -150,18 +150,35 @@ void replace_extension(SmallVectorImpl<char> &path, const Twine &extension,
19 ///
20 /// @code
21 /// /foo, /old, /new => /foo
22+/// /old, /old, /new => /new
23+/// /old, /old/, /new, false => /old
24+/// /old, /old/, /new, true => /new
25 /// /old/foo, /old, /new => /new/foo
26+/// /old/foo, /old/, /new => /new/foo
27+/// /old/foo, /old/, /new/ => /new/foo
28+/// /oldfoo, /old, /new => /oldfoo
29 /// /foo, <empty>, /new => /new/foo
30-/// /old/foo, /old, <empty> => /foo
31+/// /foo, <empty>, new => new/foo
32+/// /old/foo, /old, <empty>, false => /foo
33+/// /old/foo, /old, <empty>, true => foo
34 /// @endcode
35 ///
36 /// @param Path If \a Path starts with \a OldPrefix modify to instead
37 /// start with \a NewPrefix.
38-/// @param OldPrefix The path prefix to strip from \a Path.
39+/// @param OldPrefix The path prefix to strip from \a Path. Any trailing
40+/// path separator is ignored if strict is true.
41 /// @param NewPrefix The path prefix to replace \a NewPrefix with.
42-void replace_path_prefix(SmallVectorImpl<char> &Path,
43+/// @param style The path separator style
44+/// @param strict Strict prefix path checking
45+/// @result true if \a Path begins with OldPrefix
46+bool replace_path_prefix(SmallVectorImpl<char> &Path,
47 const StringRef &OldPrefix, const StringRef &NewPrefix,
48- Style style = Style::native);
49+ Style style = Style::native, bool strict = false);
50+static inline bool replace_path_prefix(SmallVectorImpl<char> &Path,
51+ const StringRef &OldPrefix, const StringRef &NewPrefix,
52+ bool strict, Style style = Style::native) {
53+ return replace_path_prefix(Path, OldPrefix, NewPrefix, style, strict);
54+}
55
56 /// Append to path.
57 ///
58diff --git a/llvm/lib/Support/Path.cpp b/llvm/lib/Support/Path.cpp
59index c49260125db..89a1c193d14 100644
60--- a/llvm/lib/Support/Path.cpp
61+++ b/llvm/lib/Support/Path.cpp
62@@ -496,27 +496,53 @@ void replace_extension(SmallVectorImpl<char> &path, const Twine &extension,
63 path.append(ext.begin(), ext.end());
64 }
65
66-void replace_path_prefix(SmallVectorImpl<char> &Path,
67+bool replace_path_prefix(SmallVectorImpl<char> &Path,
68 const StringRef &OldPrefix, const StringRef &NewPrefix,
69- Style style) {
70+ Style style, bool strict) {
71 if (OldPrefix.empty() && NewPrefix.empty())
72- return;
73+ return false;
74
75 StringRef OrigPath(Path.begin(), Path.size());
76- if (!OrigPath.startswith(OldPrefix))
77- return;
78+ StringRef OldPrefixDir;
79+
80+ if (!strict && OldPrefix.size() > OrigPath.size())
81+ return false;
82+
83+ if (!strict && OldPrefix.size() > OrigPath.size())
84+ return false;
85+
86+ // Ensure OldPrefixDir does not have a trailing separator.
87+ if (!OldPrefix.empty() && is_separator(OldPrefix.back()))
88+ OldPrefixDir = parent_path(OldPrefix, style);
89+ else
90+ OldPrefixDir = OldPrefix;
91+
92+ if (!OrigPath.startswith(OldPrefixDir))
93+ return false;
94+
95+ if (OrigPath.size() > OldPrefixDir.size())
96+ if (!is_separator(OrigPath[OldPrefixDir.size()], style) && strict)
97+ return false;
98
99 // If prefixes have the same size we can simply copy the new one over.
100- if (OldPrefix.size() == NewPrefix.size()) {
101+ if (OldPrefixDir.size() == NewPrefix.size() && !strict) {
102 llvm::copy(NewPrefix, Path.begin());
103- return;
104+ return true;
105 }
106
107- StringRef RelPath = OrigPath.substr(OldPrefix.size());
108+ StringRef RelPath = OrigPath.substr(OldPrefixDir.size());
109 SmallString<256> NewPath;
110 path::append(NewPath, style, NewPrefix);
111- path::append(NewPath, style, RelPath);
112+ if (!RelPath.empty()) {
113+ if (!is_separator(RelPath[0], style) || !strict)
114+ path::append(NewPath, style, RelPath);
115+ else
116+ path::append(NewPath, style, relative_path(RelPath, style));
117+ }
118+
119 Path.swap(NewPath);
120+
121+ return true;
122 }
123
124 void native(const Twine &path, SmallVectorImpl<char> &result, Style style) {
125diff --git a/llvm/unittests/Support/Path.cpp b/llvm/unittests/Support/Path.cpp
126index ccd72d7f176..13af998d8f8 100644
127--- a/llvm/unittests/Support/Path.cpp
128+++ b/llvm/unittests/Support/Path.cpp
129@@ -1219,7 +1219,9 @@ TEST(Support, RemoveDots) {
130 TEST(Support, ReplacePathPrefix) {
131 SmallString<64> Path1("/foo");
132 SmallString<64> Path2("/old/foo");
133+ SmallString<64> Path3("/oldnew/foo");
134 SmallString<64> OldPrefix("/old");
135+ SmallString<64> OldPrefixSep("/old/");
136 SmallString<64> NewPrefix("/new");
137 SmallString<64> NewPrefix2("/longernew");
138 SmallString<64> EmptyPrefix("");
139@@ -1239,6 +1241,33 @@ TEST(Support, ReplacePathPrefix) {
140 Path = Path2;
141 path::replace_path_prefix(Path, OldPrefix, EmptyPrefix);
142 EXPECT_EQ(Path, "/foo");
143+ Path = Path2;
144+ path::replace_path_prefix(Path, OldPrefix, EmptyPrefix, true);
145+ EXPECT_EQ(Path, "foo");
146+ Path = Path3;
147+ path::replace_path_prefix(Path, OldPrefix, NewPrefix, false);
148+ EXPECT_EQ(Path, "/newnew/foo");
149+ Path = Path3;
150+ path::replace_path_prefix(Path, OldPrefix, NewPrefix, true);
151+ EXPECT_EQ(Path, "/oldnew/foo");
152+ Path = Path3;
153+ path::replace_path_prefix(Path, OldPrefixSep, NewPrefix, true);
154+ EXPECT_EQ(Path, "/oldnew/foo");
155+ Path = Path1;
156+ path::replace_path_prefix(Path, EmptyPrefix, NewPrefix);
157+ EXPECT_EQ(Path, "/new/foo");
158+ Path = OldPrefix;
159+ path::replace_path_prefix(Path, OldPrefix, NewPrefix);
160+ EXPECT_EQ(Path, "/new");
161+ Path = OldPrefixSep;
162+ path::replace_path_prefix(Path, OldPrefix, NewPrefix);
163+ EXPECT_EQ(Path, "/new/");
164+ Path = OldPrefix;
165+ path::replace_path_prefix(Path, OldPrefixSep, NewPrefix, false);
166+ EXPECT_EQ(Path, "/old");
167+ Path = OldPrefix;
168+ path::replace_path_prefix(Path, OldPrefixSep, NewPrefix, true);
169+ EXPECT_EQ(Path, "/new");
170 }
171
172 TEST_F(FileSystemTest, OpenFileForRead) {
diff --git a/recipes-devtools/clang/clang/0011-clang-Driver-tools.cpp-Add-lssp_nonshared-on-musl.patch b/recipes-devtools/clang/clang/0009-clang-Driver-tools.cpp-Add-lssp_nonshared-on-musl.patch
index a95b838..4820682 100644
--- a/recipes-devtools/clang/clang/0011-clang-Driver-tools.cpp-Add-lssp_nonshared-on-musl.patch
+++ b/recipes-devtools/clang/clang/0009-clang-Driver-tools.cpp-Add-lssp_nonshared-on-musl.patch
@@ -1,4 +1,4 @@
1From 3beedc96c33d7c7b0e3b1f9c402b7cda71764d4b Mon Sep 17 00:00:00 2001 1From 8a7e28da4aa95eb2e19dce222542e787f79a444c Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Thu, 19 May 2016 21:11:06 -0700 3Date: Thu, 19 May 2016 21:11:06 -0700
4Subject: [PATCH] clang: Driver/tools.cpp: Add -lssp_nonshared on musl 4Subject: [PATCH] clang: Driver/tools.cpp: Add -lssp_nonshared on musl
@@ -13,10 +13,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
13 1 file changed, 6 insertions(+) 13 1 file changed, 6 insertions(+)
14 14
15diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp 15diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp
16index 33cdd3585c2..8b14b8ea9cb 100644 16index da197e47662..4821cfebc21 100644
17--- a/clang/lib/Driver/ToolChains/Gnu.cpp 17--- a/clang/lib/Driver/ToolChains/Gnu.cpp
18+++ b/clang/lib/Driver/ToolChains/Gnu.cpp 18+++ b/clang/lib/Driver/ToolChains/Gnu.cpp
19@@ -579,6 +579,12 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA, 19@@ -583,6 +583,12 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
20 if (IsIAMCU) 20 if (IsIAMCU)
21 CmdArgs.push_back("-lgloss"); 21 CmdArgs.push_back("-lgloss");
22 22
diff --git a/recipes-devtools/clang/clang/0009-clang-Enable-SSP-and-PIE-by-default.patch b/recipes-devtools/clang/clang/0009-clang-Enable-SSP-and-PIE-by-default.patch
deleted file mode 100644
index d5795d6..0000000
--- a/recipes-devtools/clang/clang/0009-clang-Enable-SSP-and-PIE-by-default.patch
+++ /dev/null
@@ -1,60 +0,0 @@
1From 421fd7dbd379d6d2d89ee58527eca10da8cc643c Mon Sep 17 00:00:00 2001
2From: Evangelos Foutras <evangelos@foutrelis.com>
3Date: Thu, 20 Sep 2018 06:20:28 +0300
4Subject: [PATCH] clang: Enable SSP and PIE by default
5
6This is a minimal set of changes needed to make clang use SSP and PIE by
7default on Arch Linux. Tests that were easy to adjust have been changed
8accordingly; only test/Driver/linux-ld.c has been marked as "expected
9failure" due to the number of changes it would require (mostly replacing
10crtbegin.o with crtbeginS.o).
11
12Doing so is needed in order to align clang with the new default GCC
13behavior in Arch which generates PIE executables by default and also
14defaults to -fstack-protector-strong. It is not meant to be a long term
15solution, but a simple temporary fix.
16
17Hopefully these changes will be obsoleted by the introduction upstream
18of a compile-time option (https://bugs.llvm.org/show_bug.cgi?id=13410)
19---
20 clang/lib/Driver/ToolChains/Linux.cpp | 14 ++++++++++++--
21 clang/lib/Driver/ToolChains/Linux.h | 1 +
22 2 files changed, 13 insertions(+), 2 deletions(-)
23
24diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp
25index 7f59bc77f52..ed907549929 100644
26--- a/clang/lib/Driver/ToolChains/Linux.cpp
27+++ b/clang/lib/Driver/ToolChains/Linux.cpp
28@@ -975,8 +975,18 @@ void Linux::AddIAMCUIncludeArgs(const ArgList &DriverArgs,
29 }
30
31 bool Linux::isPIEDefault() const {
32- return (getTriple().isAndroid() && !getTriple().isAndroidVersionLT(16)) ||
33- getTriple().isMusl() || getSanitizerArgs().requiresPIE();
34+ const bool IsMips = getTriple().isMIPS();
35+ const bool IsAndroid = getTriple().isAndroid();
36+
37+ if (IsMips || IsAndroid)
38+ return (getTriple().isAndroid() && !getTriple().isAndroidVersionLT(16)) ||
39+ getTriple().isMusl() || getSanitizerArgs().requiresPIE();
40+
41+ return true;
42+}
43+
44+unsigned Linux::GetDefaultStackProtectorLevel(bool KernelOrKext) const {
45+ return 2;
46 }
47
48 bool Linux::isNoExecStackDefault() const {
49diff --git a/clang/lib/Driver/ToolChains/Linux.h b/clang/lib/Driver/ToolChains/Linux.h
50index 4c61994691c..66134a3a327 100644
51--- a/clang/lib/Driver/ToolChains/Linux.h
52+++ b/clang/lib/Driver/ToolChains/Linux.h
53@@ -39,6 +39,7 @@ public:
54 CXXStdlibType GetDefaultCXXStdlibType() const override;
55 bool isPIEDefault() const override;
56 bool isNoExecStackDefault() const override;
57+ unsigned GetDefaultStackProtectorLevel(bool KernelOrKext) const override;
58 bool IsMathErrnoDefault() const override;
59 SanitizerMask getSupportedSanitizers() const override;
60 void addProfileRTLibs(const llvm::opt::ArgList &Args,
diff --git a/recipes-devtools/clang/clang/0012-clang-musl-ppc-does-not-support-128-bit-long-double.patch b/recipes-devtools/clang/clang/0010-clang-musl-ppc-does-not-support-128-bit-long-double.patch
index 22c1b3b..934b49d 100644
--- a/recipes-devtools/clang/clang/0012-clang-musl-ppc-does-not-support-128-bit-long-double.patch
+++ b/recipes-devtools/clang/clang/0010-clang-musl-ppc-does-not-support-128-bit-long-double.patch
@@ -1,4 +1,4 @@
1From 971efedff8fa505ac8c3786e190bec7e3bd2a544 Mon Sep 17 00:00:00 2001 1From 978921116f4f0947b1131767743a0a093c7d2b72 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Tue, 10 May 2016 02:00:11 -0700 3Date: Tue, 10 May 2016 02:00:11 -0700
4Subject: [PATCH] clang: musl/ppc does not support 128-bit long double 4Subject: [PATCH] clang: musl/ppc does not support 128-bit long double
@@ -9,10 +9,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
9 1 file changed, 4 insertions(+) 9 1 file changed, 4 insertions(+)
10 10
11diff --git a/clang/lib/Basic/Targets/PPC.h b/clang/lib/Basic/Targets/PPC.h 11diff --git a/clang/lib/Basic/Targets/PPC.h b/clang/lib/Basic/Targets/PPC.h
12index 6e5df097921..107cef297e2 100644 12index 270aa7ff918..8b1bb167818 100644
13--- a/clang/lib/Basic/Targets/PPC.h 13--- a/clang/lib/Basic/Targets/PPC.h
14+++ b/clang/lib/Basic/Targets/PPC.h 14+++ b/clang/lib/Basic/Targets/PPC.h
15@@ -354,6 +354,10 @@ public: 15@@ -364,6 +364,10 @@ public:
16 LongDoubleFormat = &llvm::APFloat::IEEEdouble(); 16 LongDoubleFormat = &llvm::APFloat::IEEEdouble();
17 } 17 }
18 18
diff --git a/recipes-devtools/clang/clang/0013-clang-Prepend-trailing-to-sysroot.patch b/recipes-devtools/clang/clang/0011-clang-Prepend-trailing-to-sysroot.patch
index 87ccffd..6074a98 100644
--- a/recipes-devtools/clang/clang/0013-clang-Prepend-trailing-to-sysroot.patch
+++ b/recipes-devtools/clang/clang/0011-clang-Prepend-trailing-to-sysroot.patch
@@ -1,4 +1,4 @@
1From cfc6e9f9deb0ef42ac024762cd2e7052641a0515 Mon Sep 17 00:00:00 2001 1From 29b016e8af2283abd9dbbe5c229727c3facb8b4c Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Thu, 16 Mar 2017 09:02:13 -0700 3Date: Thu, 16 Mar 2017 09:02:13 -0700
4Subject: [PATCH] clang: Prepend trailing '/' to sysroot 4Subject: [PATCH] clang: Prepend trailing '/' to sysroot
@@ -24,7 +24,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
24 1 file changed, 1 insertion(+), 1 deletion(-) 24 1 file changed, 1 insertion(+), 1 deletion(-)
25 25
26diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp 26diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp
27index 8cee2490cc7..33037dafb57 100644 27index 02e3d676567..d95da11e351 100644
28--- a/clang/lib/Driver/ToolChains/Linux.cpp 28--- a/clang/lib/Driver/ToolChains/Linux.cpp
29+++ b/clang/lib/Driver/ToolChains/Linux.cpp 29+++ b/clang/lib/Driver/ToolChains/Linux.cpp
30@@ -223,7 +223,7 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) 30@@ -223,7 +223,7 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
diff --git a/recipes-devtools/clang/clang/0014-clang-Look-inside-the-target-sysroot-for-compiler-ru.patch b/recipes-devtools/clang/clang/0012-clang-Look-inside-the-target-sysroot-for-compiler-ru.patch
index 40c19a7..d43e705 100644
--- a/recipes-devtools/clang/clang/0014-clang-Look-inside-the-target-sysroot-for-compiler-ru.patch
+++ b/recipes-devtools/clang/clang/0012-clang-Look-inside-the-target-sysroot-for-compiler-ru.patch
@@ -1,4 +1,4 @@
1From e4b89d394dec7b9019faf2d3ad788142032b34b4 Mon Sep 17 00:00:00 2001 1From c9802082e3c3014e68040efdc7520a4cee1a38f6 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Thu, 16 Mar 2017 19:06:26 -0700 3Date: Thu, 16 Mar 2017 19:06:26 -0700
4Subject: [PATCH] clang: Look inside the target sysroot for compiler runtime 4Subject: [PATCH] clang: Look inside the target sysroot for compiler runtime
@@ -15,18 +15,18 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
15 1 file changed, 5 insertions(+), 1 deletion(-) 15 1 file changed, 5 insertions(+), 1 deletion(-)
16 16
17diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp 17diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp
18index b1fddb0af55..6eb8fbb8de4 100644 18index cab97b1a601..059a5e62c40 100644
19--- a/clang/lib/Driver/ToolChain.cpp 19--- a/clang/lib/Driver/ToolChain.cpp
20+++ b/clang/lib/Driver/ToolChain.cpp 20+++ b/clang/lib/Driver/ToolChain.cpp
21@@ -12,6 +12,7 @@ 21@@ -14,6 +14,7 @@
22 #include "ToolChains/Clang.h" 22 #include "ToolChains/Flang.h"
23 #include "clang/Basic/ObjCRuntime.h" 23 #include "clang/Basic/ObjCRuntime.h"
24 #include "clang/Basic/Sanitizers.h" 24 #include "clang/Basic/Sanitizers.h"
25+#include "clang/Basic/Version.h" 25+#include "clang/Basic/Version.h"
26 #include "clang/Config/config.h" 26 #include "clang/Config/config.h"
27 #include "clang/Driver/Action.h" 27 #include "clang/Driver/Action.h"
28 #include "clang/Driver/Driver.h" 28 #include "clang/Driver/Driver.h"
29@@ -352,7 +353,10 @@ StringRef ToolChain::getOSLibName() const { 29@@ -379,7 +380,10 @@ StringRef ToolChain::getOSLibName() const {
30 } 30 }
31 31
32 std::string ToolChain::getCompilerRTPath() const { 32 std::string ToolChain::getCompilerRTPath() const {
diff --git a/recipes-devtools/clang/clang/0015-clang-Define-releative-gcc-installation-dir.patch b/recipes-devtools/clang/clang/0013-clang-Define-releative-gcc-installation-dir.patch
index d8ec5d7..7a6fc28 100644
--- a/recipes-devtools/clang/clang/0015-clang-Define-releative-gcc-installation-dir.patch
+++ b/recipes-devtools/clang/clang/0013-clang-Define-releative-gcc-installation-dir.patch
@@ -1,4 +1,4 @@
1From e8650cb2729787e0fa8edbfe6c32474472a673b8 Mon Sep 17 00:00:00 2001 1From 3c21ecdc6dfd9e78c6cb464826f31cd005879dd0 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Sun, 21 May 2017 15:38:25 -0700 3Date: Sun, 21 May 2017 15:38:25 -0700
4Subject: [PATCH] clang: Define / releative gcc installation dir 4Subject: [PATCH] clang: Define / releative gcc installation dir
@@ -14,10 +14,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
14 1 file changed, 3 insertions(+) 14 1 file changed, 3 insertions(+)
15 15
16diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp 16diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp
17index 8b14b8ea9cb..20517a369f7 100644 17index 4821cfebc21..0c8d9e2f475 100644
18--- a/clang/lib/Driver/ToolChains/Gnu.cpp 18--- a/clang/lib/Driver/ToolChains/Gnu.cpp
19+++ b/clang/lib/Driver/ToolChains/Gnu.cpp 19+++ b/clang/lib/Driver/ToolChains/Gnu.cpp
20@@ -2355,6 +2355,9 @@ void Generic_GCC::GCCInstallationDetector::ScanLibDirForGCCTriple( 20@@ -2428,6 +2428,9 @@ void Generic_GCC::GCCInstallationDetector::ScanLibDirForGCCTriple(
21 {"gcc-cross/" + CandidateTriple.str(), "../..", 21 {"gcc-cross/" + CandidateTriple.str(), "../..",
22 TargetTriple.getOS() != llvm::Triple::Solaris}, 22 TargetTriple.getOS() != llvm::Triple::Solaris},
23 23
diff --git a/recipes-devtools/clang/clang/0016-clang-Fix-ldso-for-musl-on-x86-and-x32-architectures.patch b/recipes-devtools/clang/clang/0014-clang-Fix-ldso-for-musl-on-x86-and-x32-architectures.patch
index 04d9da7..0c265f7 100644
--- a/recipes-devtools/clang/clang/0016-clang-Fix-ldso-for-musl-on-x86-and-x32-architectures.patch
+++ b/recipes-devtools/clang/clang/0014-clang-Fix-ldso-for-musl-on-x86-and-x32-architectures.patch
@@ -1,4 +1,4 @@
1From 9d30864a94bced63a95a1fc300dbfad37a3d6038 Mon Sep 17 00:00:00 2001 1From 416ec373ef2bc7df1e63e8f371cf28dc7794230a Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Wed, 16 Aug 2017 15:16:15 -0700 3Date: Wed, 16 Aug 2017 15:16:15 -0700
4Subject: [PATCH] clang: Fix ldso for musl on x86 and x32 architectures 4Subject: [PATCH] clang: Fix ldso for musl on x86 and x32 architectures
@@ -14,7 +14,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
14 1 file changed, 8 insertions(+) 14 1 file changed, 8 insertions(+)
15 15
16diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp 16diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp
17index 33037dafb57..ff671fe27d2 100644 17index d95da11e351..0a4644dab9f 100644
18--- a/clang/lib/Driver/ToolChains/Linux.cpp 18--- a/clang/lib/Driver/ToolChains/Linux.cpp
19+++ b/clang/lib/Driver/ToolChains/Linux.cpp 19+++ b/clang/lib/Driver/ToolChains/Linux.cpp
20@@ -519,6 +519,7 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const { 20@@ -519,6 +519,7 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
diff --git a/recipes-devtools/clang/clang/0017-clang-scan-view-needs-python-2.x.patch b/recipes-devtools/clang/clang/0015-clang-scan-view-needs-python-2.x.patch
index 82b016e..f5b3f1c 100644
--- a/recipes-devtools/clang/clang/0017-clang-scan-view-needs-python-2.x.patch
+++ b/recipes-devtools/clang/clang/0015-clang-scan-view-needs-python-2.x.patch
@@ -1,4 +1,4 @@
1From 9ec21455fc581e3755ff59af0828c7f7f9529968 Mon Sep 17 00:00:00 2001 1From cd53f8bef787fc6c3790db8d31f93916eae7be71 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Tue, 15 May 2018 10:28:43 -0700 3Date: Tue, 15 May 2018 10:28:43 -0700
4Subject: [PATCH] clang: scan-view needs python 2.x 4Subject: [PATCH] clang: scan-view needs python 2.x
diff --git a/recipes-devtools/clang/clang/0019-clang-Add-lpthread-and-ldl-along-with-lunwind-for-st.patch b/recipes-devtools/clang/clang/0016-clang-Add-lpthread-and-ldl-along-with-lunwind-for-st.patch
index 0a023ea..90572d9 100644
--- a/recipes-devtools/clang/clang/0019-clang-Add-lpthread-and-ldl-along-with-lunwind-for-st.patch
+++ b/recipes-devtools/clang/clang/0016-clang-Add-lpthread-and-ldl-along-with-lunwind-for-st.patch
@@ -1,4 +1,4 @@
1From a761afb9da0223ec9475288831f35c72c145a905 Mon Sep 17 00:00:00 2001 1From 751e7b29c02c935987cc9b4d5b17a9db576737f0 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Wed, 31 Jul 2019 22:51:39 -0700 3Date: Wed, 31 Jul 2019 22:51:39 -0700
4Subject: [PATCH] clang: Add -lpthread and -ldl along with -lunwind for static 4Subject: [PATCH] clang: Add -lpthread and -ldl along with -lunwind for static
@@ -16,20 +16,24 @@ therefore we need to link in libpthread and libdl to fill these symbols
16 16
17Signed-off-by: Khem Raj <raj.khem@gmail.com> 17Signed-off-by: Khem Raj <raj.khem@gmail.com>
18--- 18---
19 clang/lib/Driver/ToolChains/CommonArgs.cpp | 4 ++++ 19 clang/lib/Driver/ToolChains/CommonArgs.cpp | 7 ++++++-
20 1 file changed, 4 insertions(+) 20 1 file changed, 6 insertions(+), 1 deletion(-)
21 21
22diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp 22diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp
23index 99691cb43dc..92b3bfbd77f 100644 23index 37ec7346857..c849b2242e9 100644
24--- a/clang/lib/Driver/ToolChains/CommonArgs.cpp 24--- a/clang/lib/Driver/ToolChains/CommonArgs.cpp
25+++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp 25+++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp
26@@ -1185,6 +1185,10 @@ static void AddUnwindLibrary(const ToolChain &TC, const Driver &D, 26@@ -1211,8 +1211,13 @@ static void AddUnwindLibrary(const ToolChain &TC, const Driver &D,
27 }
28 case ToolChain::UNW_CompilerRT: 27 case ToolChain::UNW_CompilerRT:
29 CmdArgs.push_back("-lunwind"); 28 if (LGT == LibGccType::StaticLibGcc)
30+ if (Args.hasArg(options::OPT_static)) { 29 CmdArgs.push_back("-l:libunwind.a");
31+ CmdArgs.push_back("-lpthread"); 30- else
32+ CmdArgs.push_back("-ldl"); 31+ else {
32 CmdArgs.push_back("-l:libunwind.so");
33+ if (Args.hasArg(options::OPT_static)) {
34+ CmdArgs.push_back("-lpthread");
35+ CmdArgs.push_back("-ldl");
36+ }
33+ } 37+ }
34 break; 38 break;
35 } 39 }
diff --git a/recipes-devtools/clang/clang/0026-libclang-Use-CMAKE_DL_LIBS-for-deducing-libdl.patch b/recipes-devtools/clang/clang/0017-libclang-Use-CMAKE_DL_LIBS-for-deducing-libdl.patch
index 18008c3..e96ef14 100644
--- a/recipes-devtools/clang/clang/0026-libclang-Use-CMAKE_DL_LIBS-for-deducing-libdl.patch
+++ b/recipes-devtools/clang/clang/0017-libclang-Use-CMAKE_DL_LIBS-for-deducing-libdl.patch
@@ -1,4 +1,4 @@
1From 9c37e644d96de108d931a6bcce1819a666ae91d8 Mon Sep 17 00:00:00 2001 1From 1f320fea9755b4616b12656ffa32191e8fe0aca3 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Wed, 11 Dec 2019 10:23:15 -0800 3Date: Wed, 11 Dec 2019 10:23:15 -0800
4Subject: [PATCH] libclang: Use CMAKE_DL_LIBS for deducing libdl 4Subject: [PATCH] libclang: Use CMAKE_DL_LIBS for deducing libdl
@@ -16,10 +16,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
16 1 file changed, 2 insertions(+), 3 deletions(-) 16 1 file changed, 2 insertions(+), 3 deletions(-)
17 17
18diff --git a/clang/tools/libclang/CMakeLists.txt b/clang/tools/libclang/CMakeLists.txt 18diff --git a/clang/tools/libclang/CMakeLists.txt b/clang/tools/libclang/CMakeLists.txt
19index 613ead1a36b..9d5cd0ba9df 100644 19index bd0c945a5e1..723fa95f14b 100644
20--- a/clang/tools/libclang/CMakeLists.txt 20--- a/clang/tools/libclang/CMakeLists.txt
21+++ b/clang/tools/libclang/CMakeLists.txt 21+++ b/clang/tools/libclang/CMakeLists.txt
22@@ -58,9 +58,8 @@ if (TARGET clangTidyPlugin) 22@@ -60,9 +60,8 @@ if (TARGET clangTidyPlugin)
23 endif() 23 endif()
24 endif () 24 endif ()
25 25
diff --git a/recipes-devtools/clang/clang/0022-Pass-PYTHON_EXECUTABLE-when-cross-compiling-for-nati.patch b/recipes-devtools/clang/clang/0018-Pass-PYTHON_EXECUTABLE-when-cross-compiling-for-nati.patch
index b799916..0546bf5 100644
--- a/recipes-devtools/clang/clang/0022-Pass-PYTHON_EXECUTABLE-when-cross-compiling-for-nati.patch
+++ b/recipes-devtools/clang/clang/0018-Pass-PYTHON_EXECUTABLE-when-cross-compiling-for-nati.patch
@@ -1,22 +1,23 @@
1From 5864ac955ccfc19fc5a09f68b5a5e9961be18694 Mon Sep 17 00:00:00 2001 1From af836c13a28a7537170a59343c96eb34d2b4e7fe Mon Sep 17 00:00:00 2001
2From: Anuj Mittal <anuj.mittal@intel.com> 2From: Anuj Mittal <anuj.mittal@intel.com>
3Date: Wed, 18 Sep 2019 12:56:58 +0800 3Date: Thu, 26 Dec 2019 12:56:16 -0800
4Subject: [PATCH] Pass PYTHON_EXECUTABLE when cross compiling for native build 4Subject: [PATCH] Pass PYTHON_EXECUTABLE when cross compiling for native build
5 5
6Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> 6Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
7Signed-off-by: Khem Raj <raj.khem@gmail.com>
7--- 8---
8 llvm/cmake/modules/CrossCompile.cmake | 1 + 9 llvm/cmake/modules/CrossCompile.cmake | 1 +
9 1 file changed, 1 insertion(+) 10 1 file changed, 1 insertion(+)
10 11
11diff --git a/llvm/cmake/modules/CrossCompile.cmake b/llvm/cmake/modules/CrossCompile.cmake 12diff --git a/llvm/cmake/modules/CrossCompile.cmake b/llvm/cmake/modules/CrossCompile.cmake
12index d6b416131fe..7fae1080df7 100644 13index 8a6e880c4e2..259211df18e 100644
13--- a/llvm/cmake/modules/CrossCompile.cmake 14--- a/llvm/cmake/modules/CrossCompile.cmake
14+++ b/llvm/cmake/modules/CrossCompile.cmake 15+++ b/llvm/cmake/modules/CrossCompile.cmake
15@@ -62,6 +62,7 @@ function(llvm_create_cross_target_internal target_name toolchain buildtype) 16@@ -79,6 +79,7 @@ function(llvm_create_cross_target project_name target_name toolchain buildtype)
16 -DLLVM_ENABLE_PROJECTS="${llvm_enable_projects_arg}"
17 -DLLVM_EXTERNAL_PROJECTS="${llvm_external_projects_arg}" 17 -DLLVM_EXTERNAL_PROJECTS="${llvm_external_projects_arg}"
18 ${external_project_source_dirs}
18 -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN="${LLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN}" 19 -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN="${LLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN}"
19+ -DPYTHON_EXECUTABLE="${PYTHON_EXECUTABLE}" 20+ -DPYTHON_EXECUTABLE="${PYTHON_EXECUTABLE}"
20 ${build_type_flags} ${linker_flag} ${external_clang_dir} 21 ${build_type_flags} ${linker_flag} ${external_clang_dir}
21 WORKING_DIRECTORY ${LLVM_${target_name}_BUILD} 22 ${ARGN}
22 DEPENDS CREATE_LLVM_${target_name} 23 WORKING_DIRECTORY ${${project_name}_${target_name}_BUILD}
diff --git a/recipes-devtools/clang/clang/0018-clang-Initial-implementation-of-fmacro-prefix-map-an.patch b/recipes-devtools/clang/clang/0018-clang-Initial-implementation-of-fmacro-prefix-map-an.patch
deleted file mode 100644
index b9e67d4..0000000
--- a/recipes-devtools/clang/clang/0018-clang-Initial-implementation-of-fmacro-prefix-map-an.patch
+++ /dev/null
@@ -1,380 +0,0 @@
1From 3a6bf36829e16fd7ab1c2eb6b93ed6caa8210cd1 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Fri, 15 Feb 2019 10:02:52 -0800
4Subject: [PATCH] clang: Initial implementation of -fmacro-prefix-map and
5 -ffile-prefix-map
6
7Upstream-Status: Submitted [https://reviews.llvm.org/D49466]
8Signed-off-by: Khem Raj <raj.khem@gmail.com>
9---
10 .../clang/Basic/DiagnosticDriverKinds.td | 4 +-
11 clang/include/clang/Driver/Options.td | 6 +++
12 clang/include/clang/Lex/PreprocessorOptions.h | 3 ++
13 clang/lib/CodeGen/CGDebugInfo.cpp | 9 +++--
14 clang/lib/CodeGen/CGDebugInfo.h | 2 +-
15 clang/lib/Driver/ToolChains/Clang.cpp | 20 +++++++++-
16 clang/lib/Driver/ToolChains/FreeBSD.cpp | 14 +++++++
17 clang/lib/Driver/ToolChains/Gnu.cpp | 12 ++++++
18 clang/lib/Frontend/CompilerInvocation.cpp | 3 ++
19 clang/lib/Lex/PPMacroExpansion.cpp | 13 ++++++-
20 clang/test/CodeGen/debug-prefix-map.c | 2 +
21 clang/test/Driver/debug-prefix-map.S | 1 +
22 clang/test/Driver/debug-prefix-map.c | 37 ++++++++++++++-----
23 clang/test/Preprocessor/file_test.c | 22 +++++++++++
24 clang/test/Preprocessor/file_test.h | 2 +
25 15 files changed, 132 insertions(+), 18 deletions(-)
26 create mode 100644 clang/test/Preprocessor/file_test.c
27 create mode 100644 clang/test/Preprocessor/file_test.h
28
29diff --git a/clang/include/clang/Basic/DiagnosticDriverKinds.td b/clang/include/clang/Basic/DiagnosticDriverKinds.td
30index 12f1a7f6c48..0f8e94dad66 100644
31--- a/clang/include/clang/Basic/DiagnosticDriverKinds.td
32+++ b/clang/include/clang/Basic/DiagnosticDriverKinds.td
33@@ -141,8 +141,8 @@ def err_drv_missing_arg_mtp : Error<
34 "missing argument to '%0'">;
35 def err_drv_invalid_libcxx_deployment : Error<
36 "invalid deployment target for -stdlib=libc++ (requires %0 or later)">;
37-def err_drv_invalid_argument_to_fdebug_prefix_map : Error<
38- "invalid argument '%0' to -fdebug-prefix-map">;
39+def err_drv_invalid_argument_to_option : Error<
40+ "invalid argument '%0' to -%1">;
41 def err_drv_malformed_sanitizer_blacklist : Error<
42 "malformed sanitizer blacklist: '%0'">;
43 def err_drv_duplicate_config : Error<
44diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td
45index 4ea8bfff097..cf73c9ca465 100644
46--- a/clang/include/clang/Driver/Options.td
47+++ b/clang/include/clang/Driver/Options.td
48@@ -1866,10 +1866,16 @@ def fsplit_dwarf_inlining: Flag <["-"], "fsplit-dwarf-inlining">, Group<f_Group>
49 Flags<[CC1Option]>, HelpText<"Provide minimal debug info in the object/executable to facilitate online symbolication/stack traces in the absence of .dwo/.dwp files when using Split DWARF">;
50 def fno_split_dwarf_inlining: Flag<["-"], "fno-split-dwarf-inlining">, Group<f_Group>,
51 Flags<[CC1Option]>;
52+def ffile_prefix_map_EQ
53+ : Joined<["-"], "ffile-prefix-map=">, Group<f_Group>, Flags<[CC1Option]>,
54+ HelpText<"remap file source paths in debug info and predefined preprocessor macros">;
55 def fdebug_prefix_map_EQ
56 : Joined<["-"], "fdebug-prefix-map=">, Group<f_Group>,
57 Flags<[CC1Option,CC1AsOption]>,
58 HelpText<"remap file source paths in debug info">;
59+def fmacro_prefix_map_EQ
60+ : Joined<["-"], "fmacro-prefix-map=">, Group<Preprocessor_Group>, Flags<[CC1Option]>,
61+ HelpText<"remap file source paths in predefined preprocessor macros">;
62 def g_Flag : Flag<["-"], "g">, Group<g_Group>,
63 HelpText<"Generate source-level debug information">;
64 def gline_tables_only : Flag<["-"], "gline-tables-only">, Group<gN_Group>,
65diff --git a/clang/include/clang/Lex/PreprocessorOptions.h b/clang/include/clang/Lex/PreprocessorOptions.h
66index 1480548c7fb..712b423e679 100644
67--- a/clang/include/clang/Lex/PreprocessorOptions.h
68+++ b/clang/include/clang/Lex/PreprocessorOptions.h
69@@ -169,6 +169,9 @@ public:
70 /// build it again.
71 std::shared_ptr<FailedModulesSet> FailedModules;
72
73+ /// A prefix map for __FILE__ and __BASE_FILE__
74+ std::map<std::string, std::string, std::greater<std::string>> MacroPrefixMap;
75+
76 public:
77 PreprocessorOptions() : PrecompiledPreambleBytes(0, false) {}
78
79diff --git a/clang/lib/CodeGen/CGDebugInfo.cpp b/clang/lib/CodeGen/CGDebugInfo.cpp
80index f6ee7ee26d4..8a190558533 100644
81--- a/clang/lib/CodeGen/CGDebugInfo.cpp
82+++ b/clang/lib/CodeGen/CGDebugInfo.cpp
83@@ -475,10 +475,13 @@ CGDebugInfo::createFile(StringRef FileName,
84 }
85
86 std::string CGDebugInfo::remapDIPath(StringRef Path) const {
87+ SmallString<256> p = Path;
88 for (const auto &Entry : DebugPrefixMap)
89- if (Path.startswith(Entry.first))
90- return (Twine(Entry.second) + Path.substr(Entry.first.size())).str();
91- return Path.str();
92+ if (llvm::sys::path::replace_path_prefix(p, Entry.first, Entry.second))
93+ break;
94+ while (llvm::sys::path::is_separator(p.back()))
95+ p.set_size(p.size() - 1);
96+ return p.str();
97 }
98
99 unsigned CGDebugInfo::getLineNumber(SourceLocation Loc) {
100diff --git a/clang/lib/CodeGen/CGDebugInfo.h b/clang/lib/CodeGen/CGDebugInfo.h
101index 7edbea86633..7077d0f043c 100644
102--- a/clang/lib/CodeGen/CGDebugInfo.h
103+++ b/clang/lib/CodeGen/CGDebugInfo.h
104@@ -83,7 +83,7 @@ class CGDebugInfo {
105 /// Cache of previously constructed Types.
106 llvm::DenseMap<const void *, llvm::TrackingMDRef> TypeCache;
107
108- llvm::SmallDenseMap<llvm::StringRef, llvm::StringRef> DebugPrefixMap;
109+ std::map<llvm::StringRef, llvm::StringRef, std::greater<llvm::StringRef>> DebugPrefixMap;
110
111 /// Cache that maps VLA types to size expressions for that type,
112 /// represented by instantiated Metadata nodes.
113diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp
114index dd461a1976d..08165a60206 100644
115--- a/clang/lib/Driver/ToolChains/Clang.cpp
116+++ b/clang/lib/Driver/ToolChains/Clang.cpp
117@@ -618,16 +618,30 @@ static void addDebugCompDirArg(const ArgList &Args, ArgStringList &CmdArgs) {
118
119 /// Add a CC1 and CC1AS option to specify the debug file path prefix map.
120 static void addDebugPrefixMapArg(const Driver &D, const ArgList &Args, ArgStringList &CmdArgs) {
121- for (const Arg *A : Args.filtered(options::OPT_fdebug_prefix_map_EQ)) {
122+ for (const Arg *A : Args.filtered(options::OPT_ffile_prefix_map_EQ,
123+ options::OPT_fdebug_prefix_map_EQ)) {
124 StringRef Map = A->getValue();
125 if (Map.find('=') == StringRef::npos)
126- D.Diag(diag::err_drv_invalid_argument_to_fdebug_prefix_map) << Map;
127+ D.Diag(diag::err_drv_invalid_argument_to_option) << Map << A->getOption().getName();
128 else
129 CmdArgs.push_back(Args.MakeArgString("-fdebug-prefix-map=" + Map));
130 A->claim();
131 }
132 }
133
134+/// Add a CC1 and CC1AS option to specify the macro file path prefix map.
135+static void addMacroPrefixMapArg(const Driver &D, const ArgList &Args, ArgStringList &CmdArgs) {
136+ for (const Arg *A : Args.filtered(options::OPT_ffile_prefix_map_EQ,
137+ options::OPT_fmacro_prefix_map_EQ)) {
138+ StringRef Map = A->getValue();
139+ if (Map.find('=') == StringRef::npos)
140+ D.Diag(diag::err_drv_invalid_argument_to_option) << Map << A->getOption().getName();
141+ else
142+ CmdArgs.push_back(Args.MakeArgString("-fmacro-prefix-map=" + Map));
143+ A->claim();
144+ }
145+}
146+
147 /// Vectorize at all optimization levels greater than 1 except for -Oz.
148 /// For -Oz the loop vectorizer is disabled, while the slp vectorizer is
149 /// enabled.
150@@ -1317,6 +1331,8 @@ void Clang::AddPreprocessingOptions(Compilation &C, const JobAction &JA,
151 // For IAMCU add special include arguments.
152 getToolChain().AddIAMCUIncludeArgs(Args, CmdArgs);
153 }
154+
155+ addMacroPrefixMapArg(D, Args, CmdArgs);
156 }
157
158 // FIXME: Move to target hook.
159diff --git a/clang/lib/Driver/ToolChains/FreeBSD.cpp b/clang/lib/Driver/ToolChains/FreeBSD.cpp
160index 3a0bab8d07f..6eea9f04620 100644
161--- a/clang/lib/Driver/ToolChains/FreeBSD.cpp
162+++ b/clang/lib/Driver/ToolChains/FreeBSD.cpp
163@@ -12,6 +12,7 @@
164 #include "Arch/Sparc.h"
165 #include "CommonArgs.h"
166 #include "clang/Driver/Compilation.h"
167+#include "clang/Driver/DriverDiagnostic.h"
168 #include "clang/Driver/Options.h"
169 #include "clang/Driver/SanitizerArgs.h"
170 #include "llvm/Option/ArgList.h"
171@@ -30,6 +31,7 @@ void freebsd::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
172 const char *LinkingOutput) const {
173 claimNoWarnArgs(Args);
174 ArgStringList CmdArgs;
175+ const auto &D = getToolChain().getDriver();
176
177 // When building 32-bit code on FreeBSD/amd64, we have to explicitly
178 // instruct as in the base system to assemble 32-bit code.
179@@ -103,6 +105,18 @@ void freebsd::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
180 }
181 }
182
183+ for (const Arg *A : Args.filtered(options::OPT_ffile_prefix_map_EQ,
184+ options::OPT_fdebug_prefix_map_EQ)) {
185+ StringRef Map = A->getValue();
186+ if (Map.find('=') == StringRef::npos)
187+ D.Diag(diag::err_drv_invalid_argument_to_option) << Map << A->getOption().getName();
188+ else {
189+ CmdArgs.push_back(Args.MakeArgString("--debug-prefix-map"));
190+ CmdArgs.push_back(Args.MakeArgString(Map));
191+ }
192+ A->claim();
193+ }
194+
195 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, options::OPT_Xassembler);
196
197 CmdArgs.push_back("-o");
198diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp
199index 20517a369f7..ebb315d9c15 100644
200--- a/clang/lib/Driver/ToolChains/Gnu.cpp
201+++ b/clang/lib/Driver/ToolChains/Gnu.cpp
202@@ -874,6 +874,18 @@ void tools::gnutools::Assembler::ConstructJob(Compilation &C,
203 }
204 }
205
206+ for (const Arg *A : Args.filtered(options::OPT_ffile_prefix_map_EQ,
207+ options::OPT_fdebug_prefix_map_EQ)) {
208+ StringRef Map = A->getValue();
209+ if (Map.find('=') == StringRef::npos)
210+ D.Diag(diag::err_drv_invalid_argument_to_option) << Map << A->getOption().getName();
211+ else {
212+ CmdArgs.push_back(Args.MakeArgString("--debug-prefix-map"));
213+ CmdArgs.push_back(Args.MakeArgString(Map));
214+ }
215+ A->claim();
216+ }
217+
218 Args.AddAllArgs(CmdArgs, options::OPT_I);
219 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, options::OPT_Xassembler);
220
221diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp
222index bc54e38a1a6..ff68adb865d 100644
223--- a/clang/lib/Frontend/CompilerInvocation.cpp
224+++ b/clang/lib/Frontend/CompilerInvocation.cpp
225@@ -3180,6 +3180,9 @@ static void ParsePreprocessorArgs(PreprocessorOptions &Opts, ArgList &Args,
226 for (const auto *A : Args.filtered(OPT_error_on_deserialized_pch_decl))
227 Opts.DeserializedPCHDeclsToErrorOn.insert(A->getValue());
228
229+ for (const auto &A : Args.getAllArgValues(OPT_fmacro_prefix_map_EQ))
230+ Opts.MacroPrefixMap.insert(StringRef(A).split('='));
231+
232 if (const Arg *A = Args.getLastArg(OPT_preamble_bytes_EQ)) {
233 StringRef Value(A->getValue());
234 size_t Comma = Value.find(',');
235diff --git a/clang/lib/Lex/PPMacroExpansion.cpp b/clang/lib/Lex/PPMacroExpansion.cpp
236index 687b9a9d3b7..9fffe35d924 100644
237--- a/clang/lib/Lex/PPMacroExpansion.cpp
238+++ b/clang/lib/Lex/PPMacroExpansion.cpp
239@@ -28,6 +28,7 @@
240 #include "clang/Lex/MacroInfo.h"
241 #include "clang/Lex/Preprocessor.h"
242 #include "clang/Lex/PreprocessorLexer.h"
243+#include "clang/Lex/PreprocessorOptions.h"
244 #include "clang/Lex/Token.h"
245 #include "llvm/ADT/ArrayRef.h"
246 #include "llvm/ADT/DenseMap.h"
247@@ -1436,6 +1437,15 @@ static bool isTargetEnvironment(const TargetInfo &TI,
248 return TI.getTriple().getEnvironment() == Env.getEnvironment();
249 }
250
251+static void remapMacroPath(
252+ SmallString<256> &Path,
253+ const std::map<std::string, std::string, std::greater<std::string>>
254+ &MacroPrefixMap) {
255+ for (const auto &Entry : MacroPrefixMap)
256+ if (llvm::sys::path::replace_path_prefix(Path, Entry.first, Entry.second))
257+ break;
258+}
259+
260 /// ExpandBuiltinMacro - If an identifier token is read that is to be expanded
261 /// as a builtin macro, handle it and return the next token as 'Tok'.
262 void Preprocessor::ExpandBuiltinMacro(Token &Tok) {
263@@ -1502,7 +1512,7 @@ void Preprocessor::ExpandBuiltinMacro(Token &Tok) {
264 }
265
266 // Escape this filename. Turn '\' -> '\\' '"' -> '\"'
267- SmallString<128> FN;
268+ SmallString<256> FN;
269 if (PLoc.isValid()) {
270 // __FILE_NAME__ is a Clang-specific extension that expands to the
271 // the last part of __FILE__.
272@@ -1518,6 +1528,7 @@ void Preprocessor::ExpandBuiltinMacro(Token &Tok) {
273 FN += PLoc.getFilename();
274 }
275 Lexer::Stringify(FN);
276+ remapMacroPath(FN, PPOpts->MacroPrefixMap);
277 OS << '"' << FN << '"';
278 }
279 Tok.setKind(tok::string_literal);
280diff --git a/clang/test/CodeGen/debug-prefix-map.c b/clang/test/CodeGen/debug-prefix-map.c
281index f755ba47a29..e57808f03f9 100644
282--- a/clang/test/CodeGen/debug-prefix-map.c
283+++ b/clang/test/CodeGen/debug-prefix-map.c
284@@ -2,6 +2,8 @@
285 // RUN: %clang_cc1 -debug-info-kind=standalone -fdebug-prefix-map=%p=/UNLIKELY_PATH=empty %s -emit-llvm -o - | FileCheck %s -check-prefix CHECK-EVIL
286 // RUN: %clang_cc1 -debug-info-kind=standalone -fdebug-prefix-map=%p=/UNLIKELY_PATH/empty %s -emit-llvm -o - -main-file-name debug-prefix-map.c | FileCheck %s
287 // RUN: %clang_cc1 -debug-info-kind=standalone -fdebug-prefix-map=%p=/UNLIKELY_PATH/empty %s -emit-llvm -o - -fdebug-compilation-dir %p | FileCheck %s -check-prefix CHECK-COMPILATION-DIR
288+// RUN: %clang -g -fdebug-prefix-map=%p=/UNLIKELY_PATH/empty -S -c %s -emit-llvm -o - | FileCheck %s
289+// RUN: %clang -g -ffile-prefix-map=%p=/UNLIKELY_PATH/empty -S -c %s -emit-llvm -o - | FileCheck %s
290
291 #include "Inputs/stdio.h"
292
293diff --git a/clang/test/Driver/debug-prefix-map.S b/clang/test/Driver/debug-prefix-map.S
294index 2ba66be0edf..7d12a174797 100644
295--- a/clang/test/Driver/debug-prefix-map.S
296+++ b/clang/test/Driver/debug-prefix-map.S
297@@ -1,4 +1,5 @@
298 // RUN: %clang -### -g -fdebug-prefix-map=old=new %s 2>&1 | FileCheck %s
299+// RUN: %clang -### -g -ffile-prefix-map=old=new %s 2>&1 | FileCheck %s
300
301 // CHECK: cc1as
302 // CHECK-SAME: -fdebug-prefix-map=old=new
303diff --git a/clang/test/Driver/debug-prefix-map.c b/clang/test/Driver/debug-prefix-map.c
304index b4f3859f982..f2c87cb7c11 100644
305--- a/clang/test/Driver/debug-prefix-map.c
306+++ b/clang/test/Driver/debug-prefix-map.c
307@@ -1,9 +1,28 @@
308-// RUN: %clang -### -fdebug-prefix-map=old %s 2>&1 | FileCheck %s -check-prefix CHECK-INVALID
309-// RUN: %clang -### -fdebug-prefix-map=old=new %s 2>&1 | FileCheck %s -check-prefix CHECK-SIMPLE
310-// RUN: %clang -### -fdebug-prefix-map=old=n=ew %s 2>&1 | FileCheck %s -check-prefix CHECK-COMPLEX
311-// RUN: %clang -### -fdebug-prefix-map=old= %s 2>&1 | FileCheck %s -check-prefix CHECK-EMPTY
312-
313-// CHECK-INVALID: error: invalid argument 'old' to -fdebug-prefix-map
314-// CHECK-SIMPLE: fdebug-prefix-map=old=new
315-// CHECK-COMPLEX: fdebug-prefix-map=old=n=ew
316-// CHECK-EMPTY: fdebug-prefix-map=old=
317+// RUN: %clang -### -fdebug-prefix-map=old %s 2>&1 | FileCheck %s -check-prefix CHECK-DEBUG-INVALID
318+// RUN: %clang -### -fmacro-prefix-map=old %s 2>&1 | FileCheck %s -check-prefix CHECK-MACRO-INVALID
319+// RUN: %clang -### -ffile-prefix-map=old %s 2>&1 | FileCheck %s -check-prefix CHECK-FILE-INVALID
320+
321+// RUN: %clang -### -fdebug-prefix-map=old=new %s 2>&1 | FileCheck %s -check-prefix CHECK-DEBUG-SIMPLE
322+// RUN: %clang -### -fmacro-prefix-map=old=new %s 2>&1 | FileCheck %s -check-prefix CHECK-MACRO-SIMPLE
323+// RUN: %clang -### -ffile-prefix-map=old=new %s 2>&1 | FileCheck %s -check-prefix CHECK-DEBUG-SIMPLE
324+// RUN: %clang -### -ffile-prefix-map=old=new %s 2>&1 | FileCheck %s -check-prefix CHECK-MACRO-SIMPLE
325+
326+// RUN: %clang -### -fdebug-prefix-map=old=n=ew %s 2>&1 | FileCheck %s -check-prefix CHECK-DEBUG-COMPLEX
327+// RUN: %clang -### -fmacro-prefix-map=old=n=ew %s 2>&1 | FileCheck %s -check-prefix CHECK-MACRO-COMPLEX
328+// RUN: %clang -### -ffile-prefix-map=old=n=ew %s 2>&1 | FileCheck %s -check-prefix CHECK-DEBUG-COMPLEX
329+// RUN: %clang -### -ffile-prefix-map=old=n=ew %s 2>&1 | FileCheck %s -check-prefix CHECK-MACRO-COMPLEX
330+
331+// RUN: %clang -### -fdebug-prefix-map=old= %s 2>&1 | FileCheck %s -check-prefix CHECK-DEBUG-EMPTY
332+// RUN: %clang -### -fmacro-prefix-map=old= %s 2>&1 | FileCheck %s -check-prefix CHECK-MACRO-EMPTY
333+// RUN: %clang -### -ffile-prefix-map=old= %s 2>&1 | FileCheck %s -check-prefix CHECK-DEBUG-EMPTY
334+// RUN: %clang -### -ffile-prefix-map=old= %s 2>&1 | FileCheck %s -check-prefix CHECK-MACRO-EMPTY
335+
336+// CHECK-DEBUG-INVALID: error: invalid argument 'old' to -fdebug-prefix-map
337+// CHECK-MACRO-INVALID: error: invalid argument 'old' to -fmacro-prefix-map
338+// CHECK-FILE-INVALID: error: invalid argument 'old' to -ffile-prefix-map
339+// CHECK-DEBUG-SIMPLE: fdebug-prefix-map=old=new
340+// CHECK-MACRO-SIMPLE: fmacro-prefix-map=old=new
341+// CHECK-DEBUG-COMPLEX: fdebug-prefix-map=old=n=ew
342+// CHECK-MACRO-COMPLEX: fmacro-prefix-map=old=n=ew
343+// CHECK-DEBUG-EMPTY: fdebug-prefix-map=old=
344+// CHECK-MACRO-EMPTY: fmacro-prefix-map=old=
345diff --git a/clang/test/Preprocessor/file_test.c b/clang/test/Preprocessor/file_test.c
346new file mode 100644
347index 00000000000..bdc5f1df659
348--- /dev/null
349+++ b/clang/test/Preprocessor/file_test.c
350@@ -0,0 +1,22 @@
351+// RUN: %clang -E -ffile-prefix-map=%p=/UNLIKELY_PATH/empty -c -o - %s | FileCheck %s
352+// RUN: %clang -E -fmacro-prefix-map=%p=/UNLIKELY_PATH/empty -c -o - %s | FileCheck %s
353+// RUN: %clang -E -fmacro-prefix-map=%p=/UNLIKELY_PATH=empty -c -o - %s | FileCheck %s -check-prefix CHECK-EVIL
354+// RUN: %clang -E -fmacro-prefix-map=%p/= -c -o - %s | FileCheck %s --check-prefix CHECK-REMOVE
355+
356+filename: __FILE__
357+#include "file_test.h"
358+
359+// CHECK: filename: "/UNLIKELY_PATH/empty{{[/\\]}}file_test.c"
360+// CHECK: filename: "/UNLIKELY_PATH/empty{{[/\\]}}file_test.h"
361+// CHECK: basefile: "/UNLIKELY_PATH/empty{{[/\\]}}file_test.c"
362+// CHECK-NOT: filename:
363+
364+// CHECK-EVIL: filename: "/UNLIKELY_PATH=empty{{[/\\]}}file_test.c"
365+// CHECK-EVIL: filename: "/UNLIKELY_PATH=empty{{[/\\]}}file_test.h"
366+// CHECK-EVIL: basefile: "/UNLIKELY_PATH=empty{{[/\\]}}file_test.c"
367+// CHECK-EVIL-NOT: filename:
368+
369+// CHECK-REMOVE: filename: "file_test.c"
370+// CHECK-REMOVE: filename: "file_test.h"
371+// CHECK-REMOVE: basefile: "file_test.c"
372+// CHECK-REMOVE-NOT: filename:
373diff --git a/clang/test/Preprocessor/file_test.h b/clang/test/Preprocessor/file_test.h
374new file mode 100644
375index 00000000000..c289e5c8362
376--- /dev/null
377+++ b/clang/test/Preprocessor/file_test.h
378@@ -0,0 +1,2 @@
379+filename: __FILE__
380+basefile: __BASE_FILE__
diff --git a/recipes-devtools/clang/clang/0024-Check-for-atomic-double-intrinsics.patch b/recipes-devtools/clang/clang/0019-Check-for-atomic-double-intrinsics.patch
index 842002e..d552d9c 100644
--- a/recipes-devtools/clang/clang/0024-Check-for-atomic-double-intrinsics.patch
+++ b/recipes-devtools/clang/clang/0019-Check-for-atomic-double-intrinsics.patch
@@ -1,4 +1,4 @@
1From 376f2f44fbfb5d08742e478b193a9da667dab9bd Mon Sep 17 00:00:00 2001 1From b6594af3414070fae4d2fd66a1b92a31c5fd3234 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Mon, 18 Nov 2019 17:00:29 -0800 3Date: Mon, 18 Nov 2019 17:00:29 -0800
4Subject: [PATCH] Check for atomic<double> intrinsics 4Subject: [PATCH] Check for atomic<double> intrinsics
@@ -15,7 +15,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
15 1 file changed, 2 insertions(+), 1 deletion(-) 15 1 file changed, 2 insertions(+), 1 deletion(-)
16 16
17diff --git a/llvm/cmake/modules/CheckAtomic.cmake b/llvm/cmake/modules/CheckAtomic.cmake 17diff --git a/llvm/cmake/modules/CheckAtomic.cmake b/llvm/cmake/modules/CheckAtomic.cmake
18index 9a4cdf12a62..e70ce924df9 100644 18index 29f3bdd57f0..6460842cf63 100644
19--- a/llvm/cmake/modules/CheckAtomic.cmake 19--- a/llvm/cmake/modules/CheckAtomic.cmake
20+++ b/llvm/cmake/modules/CheckAtomic.cmake 20+++ b/llvm/cmake/modules/CheckAtomic.cmake
21@@ -26,9 +26,10 @@ function(check_working_cxx_atomics64 varname) 21@@ -26,9 +26,10 @@ function(check_working_cxx_atomics64 varname)
diff --git a/recipes-devtools/clang/clang/0020-clang-Enable-SSP-and-PIE-by-default.patch b/recipes-devtools/clang/clang/0020-clang-Enable-SSP-and-PIE-by-default.patch
new file mode 100644
index 0000000..29bb041
--- /dev/null
+++ b/recipes-devtools/clang/clang/0020-clang-Enable-SSP-and-PIE-by-default.patch
@@ -0,0 +1,313 @@
1From 9fd60731726031748f2640ae9daae10ad479fb81 Mon Sep 17 00:00:00 2001
2From: Evangelos Foutras <evangelos@foutrelis.com>
3Date: Thu, 26 Dec 2019 15:46:19 -0800
4Subject: [PATCH] clang: Enable SSP and PIE by default
5
6This is a minimal set of changes needed to make clang use SSP and PIE by
7default on Arch Linux. Tests that were easy to adjust have been changed
8accordingly; only test/Driver/linux-ld.c has been marked as "expected
9failure" due to the number of changes it would require (mostly replacing
10crtbegin.o with crtbeginS.o).
11
12Doing so is needed in order to align clang with the new default GCC
13behavior in Arch which generates PIE executables by default and also
14defaults to -fstack-protector-strong. It is not meant to be a long term
15solution, but a simple temporary fix.
16
17Hopefully these changes will be obsoleted by the introduction upstream
18of a compile-time option (https://bugs.llvm.org/show_bug.cgi?id=13410)
19
20Taken from ArchLinux - https://git.archlinux.org/svntogit/packages.git/plain/trunk/enable-SSP-and-PIE-by-default.patch?h=packages/clang
21
22Signed-off-by: Khem Raj <raj.khem@gmail.com>
23---
24 clang/lib/Driver/ToolChains/Linux.cpp | 14 ++++++++++++--
25 clang/lib/Driver/ToolChains/Linux.h | 1 +
26 clang/test/Driver/cross-linux.c | 16 ++++++++--------
27 clang/test/Driver/env.c | 2 +-
28 clang/test/Driver/fsanitize.c | 14 +++++++-------
29 clang/test/Driver/gcc-toolchain.cpp | 2 +-
30 clang/test/Driver/hexagon-toolchain-elf.c | 2 +-
31 clang/test/Driver/linux-as.c | 4 ++--
32 clang/test/Driver/linux-ld.c | 2 ++
33 clang/test/Driver/ppc-abi.c | 4 ++--
34 clang/test/Driver/riscv32-toolchain.c | 4 ++--
35 clang/test/Driver/riscv64-toolchain.c | 4 ++--
36 clang/test/Driver/stack-protector.c | 4 ++--
37 13 files changed, 43 insertions(+), 30 deletions(-)
38
39diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp
40index 0a4644dab9f..fb579e7ad60 100644
41--- a/clang/lib/Driver/ToolChains/Linux.cpp
42+++ b/clang/lib/Driver/ToolChains/Linux.cpp
43@@ -941,8 +941,18 @@ void Linux::AddIAMCUIncludeArgs(const ArgList &DriverArgs,
44 }
45
46 bool Linux::isPIEDefault() const {
47- return (getTriple().isAndroid() && !getTriple().isAndroidVersionLT(16)) ||
48- getTriple().isMusl() || getSanitizerArgs().requiresPIE();
49+ const bool IsMips = getTriple().isMIPS();
50+ const bool IsAndroid = getTriple().isAndroid();
51+
52+ if (IsMips || IsAndroid)
53+ return (getTriple().isAndroid() && !getTriple().isAndroidVersionLT(16)) ||
54+ getTriple().isMusl() || getSanitizerArgs().requiresPIE();
55+
56+ return true;
57+}
58+
59+unsigned Linux::GetDefaultStackProtectorLevel(bool KernelOrKext) const {
60+ return 2;
61 }
62
63 bool Linux::isNoExecStackDefault() const {
64diff --git a/clang/lib/Driver/ToolChains/Linux.h b/clang/lib/Driver/ToolChains/Linux.h
65index f5518eac218..2d4973cf40c 100644
66--- a/clang/lib/Driver/ToolChains/Linux.h
67+++ b/clang/lib/Driver/ToolChains/Linux.h
68@@ -37,6 +37,7 @@ public:
69 bool isPIEDefault() const override;
70 bool isNoExecStackDefault() const override;
71 bool IsMathErrnoDefault() const override;
72+ unsigned GetDefaultStackProtectorLevel(bool KernelOrKext) const override;
73 SanitizerMask getSupportedSanitizers() const override;
74 void addProfileRTLibs(const llvm::opt::ArgList &Args,
75 llvm::opt::ArgStringList &CmdArgs) const override;
76diff --git a/clang/test/Driver/cross-linux.c b/clang/test/Driver/cross-linux.c
77index 6c2dab26069..c28c5653e34 100644
78--- a/clang/test/Driver/cross-linux.c
79+++ b/clang/test/Driver/cross-linux.c
80@@ -42,8 +42,8 @@
81 // CHECK-MULTI32-I386: "{{.*}}/Inputs/multilib_32bit_linux_tree/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/bin{{/|\\\\}}ld"
82 // CHECK-MULTI32-I386: "--sysroot=[[sysroot:.*/Inputs/basic_linux_tree]]"
83 // CHECK-MULTI32-I386: "-m" "elf_i386"
84-// CHECK-MULTI32-I386: "crti.o" "[[gcc_install:.*/Inputs/multilib_32bit_linux_tree/usr/lib/gcc/i386-unknown-linux/4.6.0]]{{/|\\\\}}crtbegin.o"
85-// CHECK-MULTI32-I386: "-L[[gcc_install]]"
86+// CHECK-MULTI32-I386: "crti.o" "crtbeginS.o"
87+// CHECK-MULTI32-I386: "-L[[gcc_install:.*/Inputs/multilib_32bit_linux_tree/usr/lib/gcc/i386-unknown-linux/4.6.0]]"
88 // CHECK-MULTI32-I386: "-L[[gcc_install]]/../../../../i386-unknown-linux/lib/../lib32"
89 // CHECK-MULTI32-I386: "-L[[gcc_install]]/../../../../i386-unknown-linux/lib"
90 // CHECK-MULTI32-I386: "-L[[sysroot]]/lib"
91@@ -60,8 +60,8 @@
92 // CHECK-MULTI32-X86-64: "{{.*}}/Inputs/multilib_32bit_linux_tree/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/bin{{/|\\\\}}ld"
93 // CHECK-MULTI32-X86-64: "--sysroot=[[sysroot:.*/Inputs/basic_linux_tree]]"
94 // CHECK-MULTI32-X86-64: "-m" "elf_x86_64"
95-// CHECK-MULTI32-X86-64: "crti.o" "[[gcc_install:.*/Inputs/multilib_32bit_linux_tree/usr/lib/gcc/i386-unknown-linux/4.6.0]]/64{{/|\\\\}}crtbegin.o"
96-// CHECK-MULTI32-X86-64: "-L[[gcc_install]]/64"
97+// CHECK-MULTI32-X86-64: "crti.o" "crtbeginS.o"
98+// CHECK-MULTI32-X86-64: "-L[[gcc_install:.*/Inputs/multilib_32bit_linux_tree/usr/lib/gcc/i386-unknown-linux/4.6.0]]/64"
99 // CHECK-MULTI32-X86-64: "-L[[gcc_install]]/../../../../i386-unknown-linux/lib/../lib64"
100 // CHECK-MULTI32-X86-64: "-L[[gcc_install]]"
101 // CHECK-MULTI32-X86-64: "-L[[gcc_install]]/../../../../i386-unknown-linux/lib"
102@@ -79,8 +79,8 @@
103 // CHECK-MULTI64-I386: "{{.*}}/Inputs/multilib_64bit_linux_tree/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/bin{{/|\\\\}}ld"
104 // CHECK-MULTI64-I386: "--sysroot=[[sysroot:.*/Inputs/basic_linux_tree]]"
105 // CHECK-MULTI64-I386: "-m" "elf_i386"
106-// CHECK-MULTI64-I386: "crti.o" "[[gcc_install:.*/Inputs/multilib_64bit_linux_tree/usr/lib/gcc/x86_64-unknown-linux/4.6.0]]/32{{/|\\\\}}crtbegin.o"
107-// CHECK-MULTI64-I386: "-L[[gcc_install]]/32"
108+// CHECK-MULTI64-I386: "crti.o" "crtbeginS.o"
109+// CHECK-MULTI64-I386: "-L[[gcc_install:.*/Inputs/multilib_64bit_linux_tree/usr/lib/gcc/x86_64-unknown-linux/4.6.0]]/32"
110 // CHECK-MULTI64-I386: "-L[[gcc_install]]/../../../../x86_64-unknown-linux/lib/../lib32"
111 // CHECK-MULTI64-I386: "-L[[gcc_install]]"
112 // CHECK-MULTI64-I386: "-L[[gcc_install]]/../../../../x86_64-unknown-linux/lib"
113@@ -98,8 +98,8 @@
114 // CHECK-MULTI64-X86-64: "{{.*}}/Inputs/multilib_64bit_linux_tree/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/bin{{/|\\\\}}ld"
115 // CHECK-MULTI64-X86-64: "--sysroot=[[sysroot:.*/Inputs/basic_linux_tree]]"
116 // CHECK-MULTI64-X86-64: "-m" "elf_x86_64"
117-// CHECK-MULTI64-X86-64: "crti.o" "[[gcc_install:.*/Inputs/multilib_64bit_linux_tree/usr/lib/gcc/x86_64-unknown-linux/4.6.0]]{{/|\\\\}}crtbegin.o"
118-// CHECK-MULTI64-X86-64: "-L[[gcc_install]]"
119+// CHECK-MULTI64-X86-64: "crti.o" "crtbeginS.o"
120+// CHECK-MULTI64-X86-64: "-L[[gcc_install:.*/Inputs/multilib_64bit_linux_tree/usr/lib/gcc/x86_64-unknown-linux/4.6.0]]"
121 // CHECK-MULTI64-X86-64: "-L[[gcc_install]]/../../../../x86_64-unknown-linux/lib/../lib64"
122 // CHECK-MULTI64-X86-64: "-L[[gcc_install]]/../../../../x86_64-unknown-linux/lib"
123 // CHECK-MULTI64-X86-64: "-L[[sysroot]]/lib"
124diff --git a/clang/test/Driver/env.c b/clang/test/Driver/env.c
125index 0371bc91c4a..ea89f525121 100644
126--- a/clang/test/Driver/env.c
127+++ b/clang/test/Driver/env.c
128@@ -20,7 +20,7 @@
129 //
130 // CHECK-LD-32-NOT: warning:
131 // CHECK-LD-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
132-// CHECK-LD-32: "{{.*}}/usr/lib/gcc/i386-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
133+// CHECK-LD-32: "crtbeginS.o"
134 // CHECK-LD-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0"
135 // CHECK-LD-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib"
136 // CHECK-LD-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../.."
137diff --git a/clang/test/Driver/fsanitize.c b/clang/test/Driver/fsanitize.c
138index f02f94d8c5a..358917588c7 100644
139--- a/clang/test/Driver/fsanitize.c
140+++ b/clang/test/Driver/fsanitize.c
141@@ -328,15 +328,15 @@
142 // RUN: %clang -target x86_64-linux-gnu -fsanitize=vptr -fno-sanitize=vptr -fsanitize=undefined,address %s -### 2>&1
143 // OK
144
145-// RUN: %clang -target x86_64-linux-gnu -fsanitize=thread %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-NO-PIE
146-// RUN: %clang -target x86_64-linux-gnu -fsanitize=memory %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-NO-PIE
147+// RUN: %clang -target x86_64-linux-gnu -fsanitize=thread %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-PIE
148+// RUN: %clang -target x86_64-linux-gnu -fsanitize=memory %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-PIE
149 // RUN: %clang -target x86_64-unknown-freebsd -fsanitize=memory %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-PIE
150 // RUN: %clang -target aarch64-linux-gnu -fsanitize=memory %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-PIE
151 // RUN: %clang -target arm-linux-androideabi -fsanitize=address %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-PIC-NO-PIE
152 // RUN: %clang -target arm-linux-androideabi24 -fsanitize=address %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-PIE
153 // RUN: %clang -target aarch64-linux-android -fsanitize=address %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-PIE
154-// RUN: %clang -target x86_64-linux-gnu -fsanitize=address %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-NO-PIE
155-// RUN: %clang -target i386-linux-gnu -fsanitize=address %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-NO-PIE
156+// RUN: %clang -target x86_64-linux-gnu -fsanitize=address %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-PIE
157+// RUN: %clang -target i386-linux-gnu -fsanitize=address %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-PIE
158
159 // CHECK-NO-PIE-NOT: "-pie"
160 // CHECK-NO-PIE: "-mrelocation-model" "static"
161@@ -661,12 +661,12 @@
162 // RUN: %clang -fno-sanitize=safe-stack -### %s 2>&1 | FileCheck %s -check-prefix=NOSP
163 // NOSP-NOT: "-fsanitize=safe-stack"
164
165-// RUN: %clang -target x86_64-linux-gnu -fsanitize=safe-stack -### %s 2>&1 | FileCheck %s -check-prefix=NO-SP
166+// RUN: %clang -target x86_64-linux-gnu -fsanitize=safe-stack -### %s 2>&1 | FileCheck %s -check-prefix=SP
167 // RUN: %clang -target x86_64-linux-gnu -fsanitize=address,safe-stack -### %s 2>&1 | FileCheck %s -check-prefix=SP-ASAN
168 // RUN: %clang -target x86_64-linux-gnu -fstack-protector -fsanitize=safe-stack -### %s 2>&1 | FileCheck %s -check-prefix=SP
169 // RUN: %clang -target x86_64-linux-gnu -fsanitize=safe-stack -fstack-protector-all -### %s 2>&1 | FileCheck %s -check-prefix=SP
170-// RUN: %clang -target arm-linux-androideabi -fsanitize=safe-stack -### %s 2>&1 | FileCheck %s -check-prefix=NO-SP
171-// RUN: %clang -target aarch64-linux-android -fsanitize=safe-stack -### %s 2>&1 | FileCheck %s -check-prefix=NO-SP
172+// RUN: %clang -target arm-linux-androideabi -fsanitize=safe-stack -### %s 2>&1 | FileCheck %s -check-prefix=SP
173+// RUN: %clang -target aarch64-linux-android -fsanitize=safe-stack -### %s 2>&1 | FileCheck %s -check-prefix=SP
174 // RUN: %clang -target i386-contiki-unknown -fsanitize=safe-stack -### %s 2>&1 | FileCheck %s -check-prefix=NO-SP
175 // NO-SP-NOT: stack-protector
176 // NO-SP: "-fsanitize=safe-stack"
177diff --git a/clang/test/Driver/gcc-toolchain.cpp b/clang/test/Driver/gcc-toolchain.cpp
178index 6c872f4255c..f5006d1dd9a 100644
179--- a/clang/test/Driver/gcc-toolchain.cpp
180+++ b/clang/test/Driver/gcc-toolchain.cpp
181@@ -26,6 +26,6 @@
182 // the same precise formatting of the path as the '-internal-system' flags
183 // above, so we just blanket wildcard match the 'crtbegin.o'.
184 // CHECK: "{{[^"]*}}ld{{(.exe)?}}"
185-// CHECK: "{{[^"]*}}/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
186+// CHECK: "crtbeginS.o"
187 // CHECK: "-L[[TOOLCHAIN]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5"
188 // CHECK: "-L[[TOOLCHAIN]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/../../../.."
189diff --git a/clang/test/Driver/hexagon-toolchain-elf.c b/clang/test/Driver/hexagon-toolchain-elf.c
190index 44bff6f703a..6575d032f5d 100644
191--- a/clang/test/Driver/hexagon-toolchain-elf.c
192+++ b/clang/test/Driver/hexagon-toolchain-elf.c
193@@ -470,7 +470,7 @@
194 // RUN: %s 2>&1 \
195 // RUN: | FileCheck -check-prefix=CHECK042 %s
196 // CHECK042: "-cc1"
197-// CHECK042: "-mrelocation-model" "static"
198+// CHECK042: "-mrelocation-model" "pic"
199 // CHECK042: "-mllvm" "-hexagon-small-data-threshold=8"
200 // CHECK042-NEXT: llvm-mc
201 // CHECK042: "-gpsize=8"
202diff --git a/clang/test/Driver/linux-as.c b/clang/test/Driver/linux-as.c
203index 77ac05f3094..cb474f32898 100644
204--- a/clang/test/Driver/linux-as.c
205+++ b/clang/test/Driver/linux-as.c
206@@ -164,7 +164,7 @@
207 // CHECK-PPC-NO-MCPU-NOT: as{{.*}} "-mcpu=invalid-cpu"
208 //
209 // RUN: %clang -target sparc64-linux -mcpu=invalid-cpu -### \
210-// RUN: -no-integrated-as -c %s 2>&1 \
211+// RUN: -no-integrated-as -fno-pic -c %s 2>&1 \
212 // RUN: | FileCheck -check-prefix=CHECK-SPARCV9 %s
213 // CHECK-SPARCV9: as
214 // CHECK-SPARCV9: -64
215@@ -173,7 +173,7 @@
216 // CHECK-SPARCV9: -o
217 //
218 // RUN: %clang -target sparc64-linux -mcpu=invalid-cpu -### \
219-// RUN: -no-integrated-as -fpic -c %s 2>&1 \
220+// RUN: -no-integrated-as -c %s 2>&1 \
221 // RUN: | FileCheck -check-prefix=CHECK-SPARCV9PIC %s
222 // CHECK-SPARCV9PIC: as
223 // CHECK-SPARCV9PIC: -64
224diff --git a/clang/test/Driver/linux-ld.c b/clang/test/Driver/linux-ld.c
225index 51227550b52..d01d6627131 100644
226--- a/clang/test/Driver/linux-ld.c
227+++ b/clang/test/Driver/linux-ld.c
228@@ -1,3 +1,5 @@
229+// XFAIL: linux
230+
231 // General tests that ld invocations on Linux targets sane. Note that we use
232 // sysroot to make these tests independent of the host system.
233 //
234diff --git a/clang/test/Driver/ppc-abi.c b/clang/test/Driver/ppc-abi.c
235index acc4981a2ee..0d465516762 100644
236--- a/clang/test/Driver/ppc-abi.c
237+++ b/clang/test/Driver/ppc-abi.c
238@@ -32,11 +32,11 @@
239
240 // CHECK-ELFv1: "-mrelocation-model" "static"
241 // CHECK-ELFv1: "-target-abi" "elfv1"
242-// CHECK-ELFv1-LE: "-mrelocation-model" "static"
243+// CHECK-ELFv1-LE: "-mrelocation-model" "pic" "-pic-level" "2"
244 // CHECK-ELFv1-LE: "-target-abi" "elfv1"
245 // CHECK-ELFv1-QPX: "-mrelocation-model" "static"
246 // CHECK-ELFv1-QPX: "-target-abi" "elfv1-qpx"
247-// CHECK-ELFv2: "-mrelocation-model" "static"
248+// CHECK-ELFv2: "-mrelocation-model" "pic" "-pic-level" "2"
249 // CHECK-ELFv2: "-target-abi" "elfv2"
250 // CHECK-ELFv2-BE: "-mrelocation-model" "static"
251 // CHECK-ELFv2-BE: "-target-abi" "elfv2"
252diff --git a/clang/test/Driver/riscv32-toolchain.c b/clang/test/Driver/riscv32-toolchain.c
253index 2ff3a585bda..f923b728c0f 100644
254--- a/clang/test/Driver/riscv32-toolchain.c
255+++ b/clang/test/Driver/riscv32-toolchain.c
256@@ -76,7 +76,7 @@
257 // C-RV32-LINUX-MULTI-ILP32: "--sysroot={{.*}}/Inputs/multilib_riscv_linux_sdk/sysroot"
258 // C-RV32-LINUX-MULTI-ILP32: "-m" "elf32lriscv"
259 // C-RV32-LINUX-MULTI-ILP32: "-dynamic-linker" "/lib/ld-linux-riscv32-ilp32.so.1"
260-// C-RV32-LINUX-MULTI-ILP32: "{{.*}}/Inputs/multilib_riscv_linux_sdk/lib/gcc/riscv64-unknown-linux-gnu/7.2.0/lib32/ilp32{{/|\\\\}}crtbegin.o"
261+// C-RV32-LINUX-MULTI-ILP32: "crtbeginS.o"
262 // C-RV32-LINUX-MULTI-ILP32: "-L{{.*}}/Inputs/multilib_riscv_linux_sdk/lib/gcc/riscv64-unknown-linux-gnu/7.2.0/lib32/ilp32"
263 // C-RV32-LINUX-MULTI-ILP32: "-L{{.*}}/Inputs/multilib_riscv_linux_sdk/sysroot/lib32/ilp32"
264 // C-RV32-LINUX-MULTI-ILP32: "-L{{.*}}/Inputs/multilib_riscv_linux_sdk/sysroot/usr/lib32/ilp32"
265@@ -91,7 +91,7 @@
266 // C-RV32-LINUX-MULTI-ILP32D: "--sysroot={{.*}}/Inputs/multilib_riscv_linux_sdk/sysroot"
267 // C-RV32-LINUX-MULTI-ILP32D: "-m" "elf32lriscv"
268 // C-RV32-LINUX-MULTI-ILP32D: "-dynamic-linker" "/lib/ld-linux-riscv32-ilp32d.so.1"
269-// C-RV32-LINUX-MULTI-ILP32D: "{{.*}}/Inputs/multilib_riscv_linux_sdk/lib/gcc/riscv64-unknown-linux-gnu/7.2.0/lib32/ilp32d{{/|\\\\}}crtbegin.o"
270+// C-RV32-LINUX-MULTI-ILP32D: "crtbeginS.o"
271 // C-RV32-LINUX-MULTI-ILP32D: "-L{{.*}}/Inputs/multilib_riscv_linux_sdk/lib/gcc/riscv64-unknown-linux-gnu/7.2.0/lib32/ilp32d"
272 // C-RV32-LINUX-MULTI-ILP32D: "-L{{.*}}/Inputs/multilib_riscv_linux_sdk/sysroot/lib32/ilp32d"
273 // C-RV32-LINUX-MULTI-ILP32D: "-L{{.*}}/Inputs/multilib_riscv_linux_sdk/sysroot/usr/lib32/ilp32d"
274diff --git a/clang/test/Driver/riscv64-toolchain.c b/clang/test/Driver/riscv64-toolchain.c
275index 42cac51de59..42a05e02fcc 100644
276--- a/clang/test/Driver/riscv64-toolchain.c
277+++ b/clang/test/Driver/riscv64-toolchain.c
278@@ -76,7 +76,7 @@
279 // C-RV64-LINUX-MULTI-LP64: "--sysroot={{.*}}/Inputs/multilib_riscv_linux_sdk/sysroot"
280 // C-RV64-LINUX-MULTI-LP64: "-m" "elf64lriscv"
281 // C-RV64-LINUX-MULTI-LP64: "-dynamic-linker" "/lib/ld-linux-riscv64-lp64.so.1"
282-// C-RV64-LINUX-MULTI-LP64: "{{.*}}/Inputs/multilib_riscv_linux_sdk/lib/gcc/riscv64-unknown-linux-gnu/7.2.0/lib64/lp64{{/|\\\\}}crtbegin.o"
283+// C-RV64-LINUX-MULTI-LP64: "crtbeginS.o"
284 // C-RV64-LINUX-MULTI-LP64: "-L{{.*}}/Inputs/multilib_riscv_linux_sdk/lib/gcc/riscv64-unknown-linux-gnu/7.2.0/lib64/lp64"
285 // C-RV64-LINUX-MULTI-LP64: "-L{{.*}}/Inputs/multilib_riscv_linux_sdk/sysroot/lib64/lp64"
286 // C-RV64-LINUX-MULTI-LP64: "-L{{.*}}/Inputs/multilib_riscv_linux_sdk/sysroot/usr/lib64/lp64"
287@@ -91,7 +91,7 @@
288 // C-RV64-LINUX-MULTI-LP64D: "--sysroot={{.*}}/Inputs/multilib_riscv_linux_sdk/sysroot"
289 // C-RV64-LINUX-MULTI-LP64D: "-m" "elf64lriscv"
290 // C-RV64-LINUX-MULTI-LP64D: "-dynamic-linker" "/lib/ld-linux-riscv64-lp64d.so.1"
291-// C-RV64-LINUX-MULTI-LP64D: "{{.*}}/Inputs/multilib_riscv_linux_sdk/lib/gcc/riscv64-unknown-linux-gnu/7.2.0/lib64/lp64d{{/|\\\\}}crtbegin.o"
292+// C-RV64-LINUX-MULTI-LP64D: "crtbeginS.o"
293 // C-RV64-LINUX-MULTI-LP64D: "-L{{.*}}/Inputs/multilib_riscv_linux_sdk/lib/gcc/riscv64-unknown-linux-gnu/7.2.0/lib64/lp64d"
294 // C-RV64-LINUX-MULTI-LP64D: "-L{{.*}}/Inputs/multilib_riscv_linux_sdk/sysroot/lib64/lp64d"
295 // C-RV64-LINUX-MULTI-LP64D: "-L{{.*}}/Inputs/multilib_riscv_linux_sdk/sysroot/usr/lib64/lp64d"
296diff --git a/clang/test/Driver/stack-protector.c b/clang/test/Driver/stack-protector.c
297index a3e40b50eed..dfffe0d6cf8 100644
298--- a/clang/test/Driver/stack-protector.c
299+++ b/clang/test/Driver/stack-protector.c
300@@ -3,11 +3,11 @@
301 // NOSSP-NOT: "-stack-protector-buffer-size"
302
303 // RUN: %clang -target i386-unknown-linux -fstack-protector -### %s 2>&1 | FileCheck %s -check-prefix=SSP
304-// SSP: "-stack-protector" "1"
305+// SSP: "-stack-protector" "2"
306 // SSP-NOT: "-stack-protector-buffer-size"
307
308 // RUN: %clang -target i386-unknown-linux -fstack-protector --param ssp-buffer-size=16 -### %s 2>&1 | FileCheck %s -check-prefix=SSP-BUF
309-// SSP-BUF: "-stack-protector" "1"
310+// SSP-BUF: "-stack-protector" "2"
311 // SSP-BUF: "-stack-protector-buffer-size" "16"
312
313 // RUN: %clang -target i386-pc-openbsd -### %s 2>&1 | FileCheck %s -check-prefix=OPENBSD
diff --git a/recipes-devtools/clang/clang/0020-clang-default-to-lp64d-ABI-and-rv64gc-ISA.patch b/recipes-devtools/clang/clang/0020-clang-default-to-lp64d-ABI-and-rv64gc-ISA.patch
deleted file mode 100644
index f9d4733..0000000
--- a/recipes-devtools/clang/clang/0020-clang-default-to-lp64d-ABI-and-rv64gc-ISA.patch
+++ /dev/null
@@ -1,49 +0,0 @@
1From a11464585a13998f97e837a62b299bf66e2f90f0 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Mon, 12 Aug 2019 08:59:28 -0700
4Subject: [PATCH] clang: default to lp64d ABI and rv64gc ISA
5
6Signed-off-by: Khem Raj <raj.khem@gmail.com>
7---
8 clang/lib/Driver/ToolChains/Arch/RISCV.cpp | 9 ++++++++-
9 clang/lib/Driver/ToolChains/Clang.cpp | 2 +-
10 2 files changed, 9 insertions(+), 2 deletions(-)
11
12diff --git a/clang/lib/Driver/ToolChains/Arch/RISCV.cpp b/clang/lib/Driver/ToolChains/Arch/RISCV.cpp
13index b6768de4d29..9671ea270ef 100644
14--- a/clang/lib/Driver/ToolChains/Arch/RISCV.cpp
15+++ b/clang/lib/Driver/ToolChains/Arch/RISCV.cpp
16@@ -350,6 +350,13 @@ void riscv::getRISCVTargetFeatures(const Driver &D, const ArgList &Args,
17
18 // Handle all other types of extensions.
19 getExtensionFeatures(D, Args, Features, MArch, OtherExts);
20+ } else {
21+ // Default to imafdc aka gc
22+ Features.push_back("+m");
23+ Features.push_back("+a");
24+ Features.push_back("+f");
25+ Features.push_back("+d");
26+ Features.push_back("+c");
27 }
28
29 // -mrelax is default, unless -mno-relax is specified.
30@@ -375,5 +382,5 @@ StringRef riscv::getRISCVABI(const ArgList &Args, const llvm::Triple &Triple) {
31 if (Arg *A = Args.getLastArg(options::OPT_mabi_EQ))
32 return A->getValue();
33
34- return Triple.getArch() == llvm::Triple::riscv32 ? "ilp32" : "lp64";
35+ return Triple.getArch() == llvm::Triple::riscv32 ? "ilp32" : "lp64d";
36 }
37diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp
38index 08165a60206..c6882f74e93 100644
39--- a/clang/lib/Driver/ToolChains/Clang.cpp
40+++ b/clang/lib/Driver/ToolChains/Clang.cpp
41@@ -1878,7 +1878,7 @@ void Clang::AddRISCVTargetArgs(const ArgList &Args,
42 else if (Triple.getArch() == llvm::Triple::riscv32)
43 ABIName = "ilp32";
44 else if (Triple.getArch() == llvm::Triple::riscv64)
45- ABIName = "lp64";
46+ ABIName = "lp64d";
47 else
48 llvm_unreachable("Unexpected triple!");
49
diff --git a/recipes-devtools/clang/clang/0021-RISCV-Add-support-for-floating-point-registers-in-in.patch b/recipes-devtools/clang/clang/0021-RISCV-Add-support-for-floating-point-registers-in-in.patch
deleted file mode 100644
index b36d260..0000000
--- a/recipes-devtools/clang/clang/0021-RISCV-Add-support-for-floating-point-registers-in-in.patch
+++ /dev/null
@@ -1,103 +0,0 @@
1From 19de4c98078a98a0663e945d419fa2147a70fe9c Mon Sep 17 00:00:00 2001
2From: Simon Cook <simon.cook@embecosm.com>
3Date: Wed, 31 Jul 2019 09:12:00 +0000
4Subject: [PATCH] [RISCV] Add support for floating point registers in inlineasm
5
6This adds support for parsing/emitting in IR the floating-point RISC-V
7registers in inline assembly clobber lists.
8
9Differential Revision: https://reviews.llvm.org/D64737
10
11llvm-svn: 367399
12---
13 clang/lib/Basic/Targets/RISCV.cpp | 33 ++++++++++++++++++++++---------
14 clang/test/Sema/riscv-asm.c | 28 ++++++++++++++++++++++++++
15 2 files changed, 52 insertions(+), 9 deletions(-)
16 create mode 100644 clang/test/Sema/riscv-asm.c
17
18diff --git a/clang/lib/Basic/Targets/RISCV.cpp b/clang/lib/Basic/Targets/RISCV.cpp
19index 930b825e94d..d1166d90df4 100644
20--- a/clang/lib/Basic/Targets/RISCV.cpp
21+++ b/clang/lib/Basic/Targets/RISCV.cpp
22@@ -19,23 +19,38 @@ using namespace clang::targets;
23
24 ArrayRef<const char *> RISCVTargetInfo::getGCCRegNames() const {
25 static const char *const GCCRegNames[] = {
26+ // Integer registers
27 "x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7",
28 "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15",
29 "x16", "x17", "x18", "x19", "x20", "x21", "x22", "x23",
30- "x24", "x25", "x26", "x27", "x28", "x29", "x30", "x31"};
31+ "x24", "x25", "x26", "x27", "x28", "x29", "x30", "x31",
32+
33+ // Floating point registers
34+ "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7",
35+ "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15",
36+ "f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23",
37+ "f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31"};
38 return llvm::makeArrayRef(GCCRegNames);
39 }
40
41 ArrayRef<TargetInfo::GCCRegAlias> RISCVTargetInfo::getGCCRegAliases() const {
42 static const TargetInfo::GCCRegAlias GCCRegAliases[] = {
43- {{"zero"}, "x0"}, {{"ra"}, "x1"}, {{"sp"}, "x2"}, {{"gp"}, "x3"},
44- {{"tp"}, "x4"}, {{"t0"}, "x5"}, {{"t1"}, "x6"}, {{"t2"}, "x7"},
45- {{"s0"}, "x8"}, {{"s1"}, "x9"}, {{"a0"}, "x10"}, {{"a1"}, "x11"},
46- {{"a2"}, "x12"}, {{"a3"}, "x13"}, {{"a4"}, "x14"}, {{"a5"}, "x15"},
47- {{"a6"}, "x16"}, {{"a7"}, "x17"}, {{"s2"}, "x18"}, {{"s3"}, "x19"},
48- {{"s4"}, "x20"}, {{"s5"}, "x21"}, {{"s6"}, "x22"}, {{"s7"}, "x23"},
49- {{"s8"}, "x24"}, {{"s9"}, "x25"}, {{"s10"}, "x26"}, {{"s11"}, "x27"},
50- {{"t3"}, "x28"}, {{"t4"}, "x29"}, {{"t5"}, "x30"}, {{"t6"}, "x31"}};
51+ {{"zero"}, "x0"}, {{"ra"}, "x1"}, {{"sp"}, "x2"}, {{"gp"}, "x3"},
52+ {{"tp"}, "x4"}, {{"t0"}, "x5"}, {{"t1"}, "x6"}, {{"t2"}, "x7"},
53+ {{"s0"}, "x8"}, {{"s1"}, "x9"}, {{"a0"}, "x10"}, {{"a1"}, "x11"},
54+ {{"a2"}, "x12"}, {{"a3"}, "x13"}, {{"a4"}, "x14"}, {{"a5"}, "x15"},
55+ {{"a6"}, "x16"}, {{"a7"}, "x17"}, {{"s2"}, "x18"}, {{"s3"}, "x19"},
56+ {{"s4"}, "x20"}, {{"s5"}, "x21"}, {{"s6"}, "x22"}, {{"s7"}, "x23"},
57+ {{"s8"}, "x24"}, {{"s9"}, "x25"}, {{"s10"}, "x26"}, {{"s11"}, "x27"},
58+ {{"t3"}, "x28"}, {{"t4"}, "x29"}, {{"t5"}, "x30"}, {{"t6"}, "x31"},
59+ {{"ft0"}, "f0"}, {{"ft1"}, "f1"}, {{"ft2"}, "f2"}, {{"ft3"}, "f3"},
60+ {{"ft4"}, "f4"}, {{"ft5"}, "f5"}, {{"ft6"}, "f6"}, {{"ft7"}, "f7"},
61+ {{"fs0"}, "f8"}, {{"fs1"}, "f9"}, {{"fa0"}, "f10"}, {{"fa1"}, "f11"},
62+ {{"fa2"}, "f12"}, {{"fa3"}, "f13"}, {{"fa4"}, "f14"}, {{"fa5"}, "f15"},
63+ {{"fa6"}, "f16"}, {{"fa7"}, "f17"}, {{"fs2"}, "f18"}, {{"fs3"}, "f19"},
64+ {{"fs4"}, "f20"}, {{"fs5"}, "f21"}, {{"fs6"}, "f22"}, {{"fs7"}, "f23"},
65+ {{"fs8"}, "f24"}, {{"fs9"}, "f25"}, {{"fs10"}, "f26"}, {{"fs11"}, "f27"},
66+ {{"ft8"}, "f28"}, {{"ft9"}, "f29"}, {{"ft10"}, "f30"}, {{"ft11"}, "f31"}};
67 return llvm::makeArrayRef(GCCRegAliases);
68 }
69
70diff --git a/clang/test/Sema/riscv-asm.c b/clang/test/Sema/riscv-asm.c
71new file mode 100644
72index 00000000000..82664c01317
73--- /dev/null
74+++ b/clang/test/Sema/riscv-asm.c
75@@ -0,0 +1,28 @@
76+// RUN: %clang_cc1 %s -triple riscv32 -verify -fsyntax-only
77+// RUN: %clang_cc1 %s -triple riscv64 -verify -fsyntax-only
78+
79+// expected-no-diagnostics
80+
81+void i (void) {
82+ asm volatile ("" ::: "x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7");
83+ asm volatile ("" ::: "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15");
84+ asm volatile ("" ::: "x16", "x17", "x18", "x19", "x20", "x21", "x22", "x23");
85+ asm volatile ("" ::: "x24", "x25", "x26", "x27", "x28", "x29", "x30", "x31");
86+
87+ asm volatile ("" ::: "zero", "ra", "sp", "gp", "tp", "t0", "t1", "t2");
88+ asm volatile ("" ::: "s0", "s1", "a0", "a1", "a2", "a3", "a4", "a5");
89+ asm volatile ("" ::: "a6", "a7", "s2", "s3", "s4", "s5", "s6", "s7");
90+ asm volatile ("" ::: "s8", "s9", "s10", "s11", "t3", "t4", "t5", "t6");
91+}
92+
93+void f (void) {
94+ asm volatile ("" ::: "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7");
95+ asm volatile ("" ::: "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15");
96+ asm volatile ("" ::: "f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23");
97+ asm volatile ("" ::: "f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31");
98+
99+ asm volatile ("" ::: "ft0", "ft1", "ft2", "ft3", "ft4", "ft5", "ft6", "ft7");
100+ asm volatile ("" ::: "fs0", "fs1", "fa0", "fa1", "fa2", "fa3", "fa4", "fa5");
101+ asm volatile ("" ::: "fa6", "fa7", "fs2", "fs3", "fs4", "fs5", "fs6", "fs7");
102+ asm volatile ("" ::: "fs8", "fs9", "fs10", "fs11", "ft8", "ft9", "ft10", "ft11");
103+}
diff --git a/recipes-devtools/clang/clang/0021-llvm-Add-lz-to-linker-cmdline-if-enabled.patch b/recipes-devtools/clang/clang/0021-llvm-Add-lz-to-linker-cmdline-if-enabled.patch
new file mode 100644
index 0000000..8a8d35a
--- /dev/null
+++ b/recipes-devtools/clang/clang/0021-llvm-Add-lz-to-linker-cmdline-if-enabled.patch
@@ -0,0 +1,28 @@
1From d46267d3d548dbfae92f4958090af4567778c4bd Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Sat, 4 Jan 2020 01:00:06 -0800
4Subject: [PATCH] llvm: Add -lz to linker cmdline if enabled
5
6cmake's detection mechanism confuses libz.so during cross build and ends
7up linking with libz from build host which could be a different
8architecture and fail link
9
10see
11https://reviews.llvm.org/D70764#1803559
12
13Signed-off-by: Khem Raj <raj.khem@gmail.com>
14---
15 llvm/lib/Support/CMakeLists.txt | 2 +-
16 1 file changed, 1 insertion(+), 1 deletion(-)
17
18diff --git a/llvm/lib/Support/CMakeLists.txt b/llvm/lib/Support/CMakeLists.txt
19index 26332d4f539..8b58516330b 100644
20--- a/llvm/lib/Support/CMakeLists.txt
21+++ b/llvm/lib/Support/CMakeLists.txt
22@@ -1,5 +1,5 @@
23 if(LLVM_ENABLE_ZLIB)
24- set(system_libs ${ZLIB_LIBRARY})
25+ set(system_libs z)
26 endif()
27
28 if( MSVC OR MINGW )
diff --git a/recipes-devtools/clang/clang/0022-libcxx-Add-compiler-runtime-library-to-link-step-for.patch b/recipes-devtools/clang/clang/0022-libcxx-Add-compiler-runtime-library-to-link-step-for.patch
new file mode 100644
index 0000000..9cdce5b
--- /dev/null
+++ b/recipes-devtools/clang/clang/0022-libcxx-Add-compiler-runtime-library-to-link-step-for.patch
@@ -0,0 +1,37 @@
1From ecde714829d04ed0a3ee30827e60502aabc516b0 Mon Sep 17 00:00:00 2001
2From: Jeremy Puhlman <jpuhlman@mvista.com>
3Date: Thu, 16 Jan 2020 21:16:10 +0000
4Subject: [PATCH] libcxx: Add compiler runtime library to link step for libcxx
5
6This corrects "undefined reference to __divti3"
7
8Upstream-Status: Inappropriate [configuration]
9
10Signed-off-by: Jeremy Puhlman <jpuhlman@mvista.com>
11Signed-off-by: Khem Raj <raj.khem@gmail.com>
12---
13 libcxx/src/CMakeLists.txt | 4 ++--
14 1 file changed, 2 insertions(+), 2 deletions(-)
15
16diff --git a/libcxx/src/CMakeLists.txt b/libcxx/src/CMakeLists.txt
17index 120505fe18d..b337fa2e403 100644
18--- a/libcxx/src/CMakeLists.txt
19+++ b/libcxx/src/CMakeLists.txt
20@@ -160,7 +160,7 @@ if (LIBCXX_ENABLE_SHARED)
21 if(COMMAND llvm_setup_rpath)
22 llvm_setup_rpath(cxx_shared)
23 endif()
24- target_link_libraries(cxx_shared PRIVATE ${LIBCXX_LIBRARIES})
25+ target_link_libraries(cxx_shared PRIVATE ${LIBCXX_LIBRARIES} "$$($$CC --print-libgcc-file-name)")
26 set_target_properties(cxx_shared
27 PROPERTIES
28 COMPILE_FLAGS "${LIBCXX_COMPILE_FLAGS}"
29@@ -238,7 +238,7 @@ endif()
30 # Build the static library.
31 if (LIBCXX_ENABLE_STATIC)
32 add_library(cxx_static STATIC ${exclude_from_all} ${LIBCXX_SOURCES} ${LIBCXX_HEADERS})
33- target_link_libraries(cxx_static PRIVATE ${LIBCXX_LIBRARIES})
34+ target_link_libraries(cxx_static PRIVATE ${LIBCXX_LIBRARIES} "$$($$CC --print-libgcc-file-name)")
35 set(CMAKE_STATIC_LIBRARY_PREFIX "lib")
36 set_target_properties(cxx_static
37 PROPERTIES
diff --git a/recipes-devtools/clang/clang/0029-clang-llvm-cmake-Fix-configure-for-packages-using-fi.patch b/recipes-devtools/clang/clang/0023-clang-llvm-cmake-Fix-configure-for-packages-using-fi.patch
index fd27440..c97158e 100644
--- a/recipes-devtools/clang/clang/0029-clang-llvm-cmake-Fix-configure-for-packages-using-fi.patch
+++ b/recipes-devtools/clang/clang/0023-clang-llvm-cmake-Fix-configure-for-packages-using-fi.patch
@@ -1,4 +1,4 @@
1From b79837a3b7aa677b44110de4e9e7576fa34a96e3 Mon Sep 17 00:00:00 2001 1From 8c28658ad591489e35690a245f82b519ae37929e Mon Sep 17 00:00:00 2001
2From: Ovidiu Panait <ovidiu.panait@windriver.com> 2From: Ovidiu Panait <ovidiu.panait@windriver.com>
3Date: Fri, 31 Jan 2020 10:56:11 +0200 3Date: Fri, 31 Jan 2020 10:56:11 +0200
4Subject: [PATCH] clang,llvm: cmake: Fix configure for packages using 4Subject: [PATCH] clang,llvm: cmake: Fix configure for packages using
@@ -26,16 +26,16 @@ Upstream-Status: Innapropriate [oe-specific]
26 26
27Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com> 27Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
28--- 28---
29 clang/cmake/modules/AddClang.cmake | 9 --------- 29 clang/cmake/modules/AddClang.cmake | 8 --------
30 llvm/cmake/modules/AddLLVM.cmake | 20 -------------------- 30 llvm/cmake/modules/AddLLVM.cmake | 18 ------------------
31 llvm/cmake/modules/TableGen.cmake | 8 -------- 31 llvm/cmake/modules/TableGen.cmake | 7 -------
32 3 files changed, 37 deletions(-) 32 3 files changed, 33 deletions(-)
33 33
34diff --git a/clang/cmake/modules/AddClang.cmake b/clang/cmake/modules/AddClang.cmake 34diff --git a/clang/cmake/modules/AddClang.cmake b/clang/cmake/modules/AddClang.cmake
35index cbd618e18af..b864c2b2303 100644 35index 577cc11ab01..5c859d86069 100644
36--- a/clang/cmake/modules/AddClang.cmake 36--- a/clang/cmake/modules/AddClang.cmake
37+++ b/clang/cmake/modules/AddClang.cmake 37+++ b/clang/cmake/modules/AddClang.cmake
38@@ -146,15 +146,7 @@ macro(add_clang_tool name) 38@@ -151,15 +151,8 @@ macro(add_clang_tool name)
39 add_dependencies(${name} clang-resource-headers) 39 add_dependencies(${name} clang-resource-headers)
40 40
41 if (CLANG_BUILD_TOOLS) 41 if (CLANG_BUILD_TOOLS)
@@ -45,13 +45,13 @@ index cbd618e18af..b864c2b2303 100644
45- set(export_to_clangtargets EXPORT ClangTargets) 45- set(export_to_clangtargets EXPORT ClangTargets)
46- set_property(GLOBAL PROPERTY CLANG_HAS_EXPORTS True) 46- set_property(GLOBAL PROPERTY CLANG_HAS_EXPORTS True)
47- endif() 47- endif()
48- 48
49 install(TARGETS ${name} 49 install(TARGETS ${name}
50- ${export_to_clangtargets} 50- ${export_to_clangtargets}
51 RUNTIME DESTINATION bin 51 RUNTIME DESTINATION bin
52 COMPONENT ${name}) 52 COMPONENT ${name})
53 53
54@@ -163,7 +155,6 @@ macro(add_clang_tool name) 54@@ -168,7 +161,6 @@ macro(add_clang_tool name)
55 DEPENDS ${name} 55 DEPENDS ${name}
56 COMPONENT ${name}) 56 COMPONENT ${name})
57 endif() 57 endif()
@@ -60,10 +60,10 @@ index cbd618e18af..b864c2b2303 100644
60 endmacro() 60 endmacro()
61 61
62diff --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake 62diff --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake
63index 619e986b8aa..ab4b2234fa5 100644 63index fce36ba2125..554ad0b4ade 100644
64--- a/llvm/cmake/modules/AddLLVM.cmake 64--- a/llvm/cmake/modules/AddLLVM.cmake
65+++ b/llvm/cmake/modules/AddLLVM.cmake 65+++ b/llvm/cmake/modules/AddLLVM.cmake
66@@ -898,15 +898,7 @@ macro(add_llvm_tool name) 66@@ -1033,15 +1033,8 @@ macro(add_llvm_tool name)
67 67
68 if ( ${name} IN_LIST LLVM_TOOLCHAIN_TOOLS OR NOT LLVM_INSTALL_TOOLCHAIN_ONLY) 68 if ( ${name} IN_LIST LLVM_TOOLCHAIN_TOOLS OR NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
69 if( LLVM_BUILD_TOOLS ) 69 if( LLVM_BUILD_TOOLS )
@@ -73,13 +73,13 @@ index 619e986b8aa..ab4b2234fa5 100644
73- set(export_to_llvmexports EXPORT LLVMExports) 73- set(export_to_llvmexports EXPORT LLVMExports)
74- set_property(GLOBAL PROPERTY LLVM_HAS_EXPORTS True) 74- set_property(GLOBAL PROPERTY LLVM_HAS_EXPORTS True)
75- endif() 75- endif()
76- 76
77 install(TARGETS ${name} 77 install(TARGETS ${name}
78- ${export_to_llvmexports} 78- ${export_to_llvmexports}
79 RUNTIME DESTINATION ${LLVM_TOOLS_INSTALL_DIR} 79 RUNTIME DESTINATION ${LLVM_TOOLS_INSTALL_DIR}
80 COMPONENT ${name}) 80 COMPONENT ${name})
81 81
82@@ -917,9 +909,6 @@ macro(add_llvm_tool name) 82@@ -1052,9 +1045,6 @@ macro(add_llvm_tool name)
83 endif() 83 endif()
84 endif() 84 endif()
85 endif() 85 endif()
@@ -89,7 +89,7 @@ index 619e986b8aa..ab4b2234fa5 100644
89 set_target_properties(${name} PROPERTIES FOLDER "Tools") 89 set_target_properties(${name} PROPERTIES FOLDER "Tools")
90 endmacro(add_llvm_tool name) 90 endmacro(add_llvm_tool name)
91 91
92@@ -946,15 +935,7 @@ macro(add_llvm_utility name) 92@@ -1092,15 +1082,8 @@ macro(add_llvm_utility name)
93 set_target_properties(${name} PROPERTIES FOLDER "Utils") 93 set_target_properties(${name} PROPERTIES FOLDER "Utils")
94 if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY) 94 if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
95 if (LLVM_INSTALL_UTILS AND LLVM_BUILD_UTILS) 95 if (LLVM_INSTALL_UTILS AND LLVM_BUILD_UTILS)
@@ -99,13 +99,13 @@ index 619e986b8aa..ab4b2234fa5 100644
99- set(export_to_llvmexports EXPORT LLVMExports) 99- set(export_to_llvmexports EXPORT LLVMExports)
100- set_property(GLOBAL PROPERTY LLVM_HAS_EXPORTS True) 100- set_property(GLOBAL PROPERTY LLVM_HAS_EXPORTS True)
101- endif() 101- endif()
102- 102
103 install(TARGETS ${name} 103 install(TARGETS ${name}
104- ${export_to_llvmexports} 104- ${export_to_llvmexports}
105 RUNTIME DESTINATION ${LLVM_UTILS_INSTALL_DIR} 105 RUNTIME DESTINATION ${LLVM_UTILS_INSTALL_DIR}
106 COMPONENT ${name}) 106 COMPONENT ${name})
107 107
108@@ -963,7 +944,6 @@ macro(add_llvm_utility name) 108@@ -1109,7 +1092,6 @@ macro(add_llvm_utility name)
109 DEPENDS ${name} 109 DEPENDS ${name}
110 COMPONENT ${name}) 110 COMPONENT ${name})
111 endif() 111 endif()
@@ -114,25 +114,27 @@ index 619e986b8aa..ab4b2234fa5 100644
114 set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS_BUILDTREE_ONLY ${name}) 114 set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS_BUILDTREE_ONLY ${name})
115 endif() 115 endif()
116diff --git a/llvm/cmake/modules/TableGen.cmake b/llvm/cmake/modules/TableGen.cmake 116diff --git a/llvm/cmake/modules/TableGen.cmake b/llvm/cmake/modules/TableGen.cmake
117index 36c026b5c0f..c588ce6e38b 100644 117index 9d2fcd9a793..acdb898149d 100644
118--- a/llvm/cmake/modules/TableGen.cmake 118--- a/llvm/cmake/modules/TableGen.cmake
119+++ b/llvm/cmake/modules/TableGen.cmake 119+++ b/llvm/cmake/modules/TableGen.cmake
120@@ -148,15 +148,7 @@ macro(add_tablegen target project) 120@@ -161,14 +161,8 @@ macro(add_tablegen target project)
121 endif() 121 endif()
122 122
123 if (${project} STREQUAL LLVM AND NOT LLVM_INSTALL_TOOLCHAIN_ONLY AND LLVM_BUILD_UTILS) 123 if ((${project} STREQUAL LLVM OR ${project} STREQUAL MLIR) AND NOT LLVM_INSTALL_TOOLCHAIN_ONLY AND LLVM_BUILD_UTILS)
124- set(export_to_llvmexports) 124- set(export_to_llvmexports)
125- if(${target} IN_LIST LLVM_DISTRIBUTION_COMPONENTS OR 125- if(${target} IN_LIST LLVM_DISTRIBUTION_COMPONENTS OR
126- NOT LLVM_DISTRIBUTION_COMPONENTS) 126- NOT LLVM_DISTRIBUTION_COMPONENTS)
127- set(export_to_llvmexports EXPORT LLVMExports) 127- set(export_to_llvmexports EXPORT LLVMExports)
128- endif() 128- endif()
129- 129
130 install(TARGETS ${target} 130 install(TARGETS ${target}
131- ${export_to_llvmexports} 131- ${export_to_llvmexports}
132 COMPONENT ${target}
132 RUNTIME DESTINATION ${LLVM_TOOLS_INSTALL_DIR}) 133 RUNTIME DESTINATION ${LLVM_TOOLS_INSTALL_DIR})
134 if(NOT LLVM_ENABLE_IDE)
135@@ -177,5 +171,4 @@ macro(add_tablegen target project)
136 COMPONENT ${target})
137 endif()
133 endif() 138 endif()
134- set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${target}) 139- set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${target})
135 endmacro() 140 endmacro()
136--
1372.17.1
138
diff --git a/recipes-devtools/clang/clang/0023-openmp-Recognise-ARMv7ve-machine-arch.patch b/recipes-devtools/clang/clang/0023-openmp-Recognise-ARMv7ve-machine-arch.patch
deleted file mode 100644
index 59ee7b6..0000000
--- a/recipes-devtools/clang/clang/0023-openmp-Recognise-ARMv7ve-machine-arch.patch
+++ /dev/null
@@ -1,28 +0,0 @@
1From 68d9f584ed5e3b65af21548fb1a9f3547a14cd59 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Sat, 5 Oct 2019 14:47:37 -0700
4Subject: [PATCH] openmp: Recognise ARMv7ve machine arch
5
6-march in clang when set to armv7ve emits __ARM_ARCH_7VE__ internal
7define and not __ARM_ARCH_7A__, hence the condition fails and openmp can
8not be compiled, this makes sure that __ARM_ARCH_7VE__ is taken into
9consideration as KMP_ARCH_ARMV7 as well
10
11Signed-off-by: Khem Raj <raj.khem@gmail.com>
12---
13 openmp/runtime/src/kmp_platform.h | 2 +-
14 1 file changed, 1 insertion(+), 1 deletion(-)
15
16diff --git a/openmp/runtime/src/kmp_platform.h b/openmp/runtime/src/kmp_platform.h
17index e4f2e06b962..335b91f3575 100644
18--- a/openmp/runtime/src/kmp_platform.h
19+++ b/openmp/runtime/src/kmp_platform.h
20@@ -139,7 +139,7 @@
21 #endif
22
23 #if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7R__) || \
24- defined(__ARM_ARCH_7A__)
25+ defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7VE__)
26 #define KMP_ARCH_ARMV7 1
27 #endif
28
diff --git a/recipes-devtools/clang/clang/0025-llvm-Let-llvm-ar-name-contain-lib.patch b/recipes-devtools/clang/clang/0025-llvm-Let-llvm-ar-name-contain-lib.patch
deleted file mode 100644
index 0d5baab..0000000
--- a/recipes-devtools/clang/clang/0025-llvm-Let-llvm-ar-name-contain-lib.patch
+++ /dev/null
@@ -1,150 +0,0 @@
1From e709fa8c221d21bce717b22fa4076c94d51f011e Mon Sep 17 00:00:00 2001
2From: Fangrui Song <maskray@google.com>
3Date: Tue, 10 Dec 2019 15:56:05 -0800
4Subject: [PATCH] llvm: Let llvm-ar name contain 'lib'
5
6In cross-compile cases canonical names are created using symlinks but
7they fail to execute because the name confuses 'lib' instead of toolname
8
9In multilib(lib32) case, the arm-pokymllib32-linux-gnueabi-llvm-ar (${TARGET_PREFIX}llvm-ar) gives:
10qc: no such file or directory
11
12Which is because when the llvm-ar symbol link's name contains "lib", it would be considered as llvm-lib:
13
14Signed-off-by: Fangrui Song <maskray@google.com>
15Signed-off-by: Khem Raj <raj.khem@gmail.com>
16---
17 llvm/test/tools/llvm-ar/tool-name.test | 15 ++++++++++++++
18 llvm/test/tools/llvm-dlltool/tool-name.test | 13 ++++++++++++
19 llvm/test/tools/llvm-lib/tool-name.test | 14 +++++++++++++
20 llvm/test/tools/llvm-ranlib/tool-name.test | 13 ++++++++++++
21 llvm/tools/llvm-ar/llvm-ar.cpp | 23 ++++++++++++++-------
22 5 files changed, 71 insertions(+), 7 deletions(-)
23 create mode 100644 llvm/test/tools/llvm-ar/tool-name.test
24 create mode 100644 llvm/test/tools/llvm-dlltool/tool-name.test
25 create mode 100644 llvm/test/tools/llvm-lib/tool-name.test
26 create mode 100644 llvm/test/tools/llvm-ranlib/tool-name.test
27
28diff --git a/llvm/test/tools/llvm-ar/tool-name.test b/llvm/test/tools/llvm-ar/tool-name.test
29new file mode 100644
30index 00000000000..cb656d3b47f
31--- /dev/null
32+++ b/llvm/test/tools/llvm-ar/tool-name.test
33@@ -0,0 +1,15 @@
34+## Don't make symlinks on Windows.
35+# UNSUPPORTED: system-windows
36+
37+# RUN: rm -rf %t
38+# RUN: mkdir %t
39+# RUN: ln -s llvm-ar %t/llvm-ar-9
40+# RUN: ln -s llvm-ar %t/ar.exe
41+# RUN: ln -s llvm-ar %t/arm-pokymllib32-linux-gnueabi-llvm-ar-9
42+
43+# RUN: llvm-ar h | FileCheck %s
44+# RUN: %t/llvm-ar-9 h | FileCheck %s
45+# RUN: %t/ar.exe h | FileCheck %s
46+# RUN: %t/arm-pokymllib32-linux-gnueabi-llvm-ar-9 h | FileCheck %s
47+
48+# CHECK: USAGE: llvm-ar
49diff --git a/llvm/test/tools/llvm-dlltool/tool-name.test b/llvm/test/tools/llvm-dlltool/tool-name.test
50new file mode 100644
51index 00000000000..e9d8680322d
52--- /dev/null
53+++ b/llvm/test/tools/llvm-dlltool/tool-name.test
54@@ -0,0 +1,13 @@
55+## Don't make symlinks on Windows.
56+# UNSUPPORTED: system-windows
57+
58+# RUN: rm -rf %t
59+# RUN: mkdir %t
60+# RUN: ln -s llvm-dlltool %t/dlltool.exe
61+# RUN: ln -s llvm-dlltool %t/dlltool-10
62+
63+# RUN: not llvm-dlltool 2>&1 | FileCheck %s
64+# RUN: not %t/dlltool.exe 2>&1 | FileCheck %s
65+# RUN: not %t/dlltool-10 2>&1 | FileCheck %s
66+
67+# CHECK: USAGE: llvm-dlltool
68diff --git a/llvm/test/tools/llvm-lib/tool-name.test b/llvm/test/tools/llvm-lib/tool-name.test
69new file mode 100644
70index 00000000000..9c0f7b5de73
71--- /dev/null
72+++ b/llvm/test/tools/llvm-lib/tool-name.test
73@@ -0,0 +1,14 @@
74+## Don't make symlinks on Windows.
75+# UNSUPPORTED: system-windows
76+
77+# RUN: rm -rf %t
78+# RUN: mkdir %t
79+## See D44808, MSBuild runs Lib.exe
80+# RUN: ln -s llvm-lib %t/Lib.exe
81+# RUN: ln -s llvm-lib %t/llvm-lib-10
82+
83+# RUN: llvm-lib '/?' | FileCheck %s
84+# RUN: %t/Lib.exe '/?' | FileCheck %s
85+# RUN: %t/llvm-lib-10 '/?' | FileCheck %s
86+
87+# CHECK: USAGE: llvm-lib
88diff --git a/llvm/test/tools/llvm-ranlib/tool-name.test b/llvm/test/tools/llvm-ranlib/tool-name.test
89new file mode 100644
90index 00000000000..bd2b4965331
91--- /dev/null
92+++ b/llvm/test/tools/llvm-ranlib/tool-name.test
93@@ -0,0 +1,13 @@
94+## Don't make symlinks on Windows.
95+# UNSUPPORTED: system-windows
96+
97+# RUN: rm -rf %t
98+# RUN: mkdir %t
99+# RUN: ln -s llvm-ranlib %t/llvm-ranlib-9
100+# RUN: ln -s llvm-ranlib %t/ranlib.exe
101+
102+# RUN: llvm-ranlib -h | FileCheck %s
103+# RUN: %t/llvm-ranlib-9 -h | FileCheck %s
104+# RUN: %t/ranlib.exe -h | FileCheck %s
105+
106+# CHECK: USAGE: llvm-ranlib
107diff --git a/llvm/tools/llvm-ar/llvm-ar.cpp b/llvm/tools/llvm-ar/llvm-ar.cpp
108index 91746d0fab3..a7118371f1e 100644
109--- a/llvm/tools/llvm-ar/llvm-ar.cpp
110+++ b/llvm/tools/llvm-ar/llvm-ar.cpp
111@@ -11,6 +11,7 @@
112 //
113 //===----------------------------------------------------------------------===//
114
115+#include "llvm/ADT/StringExtras.h"
116 #include "llvm/ADT/StringSwitch.h"
117 #include "llvm/ADT/Triple.h"
118 #include "llvm/IR/LLVMContext.h"
119@@ -1125,16 +1126,24 @@ int main(int argc, char **argv) {
120 llvm::InitializeAllAsmParsers();
121
122 Stem = sys::path::stem(ToolName);
123- if (Stem.contains_lower("dlltool"))
124+ auto Is = [](StringRef Tool) {
125+ // We need to recognize the following filenames.
126+ //
127+ // Lib.exe -> lib (see D44808, MSBuild runs Lib.exe)
128+ // dlltool.exe -> dlltool
129+ // arm-pokymllib32-linux-gnueabi-llvm-ar-10 -> ar
130+ auto I = Stem.rfind_lower(Tool);
131+ return I != StringRef::npos &&
132+ (I + Tool.size() == Stem.size() || !isAlnum(Stem[I + Tool.size()]));
133+ };
134+
135+ if (Is("dlltool"))
136 return dlltoolDriverMain(makeArrayRef(argv, argc));
137-
138- if (Stem.contains_lower("ranlib"))
139+ if (Is("ranlib"))
140 return ranlib_main(argc, argv);
141-
142- if (Stem.contains_lower("lib"))
143+ if (Is("lib"))
144 return libDriverMain(makeArrayRef(argv, argc));
145-
146- if (Stem.contains_lower("ar"))
147+ if (Is("ar"))
148 return ar_main(argc, argv);
149 fail("Not ranlib, ar, lib or dlltool!");
150 }
diff --git a/recipes-devtools/clang/clang/0027-Fix-sanitizer-common-build-with-glibc-2.31.patch b/recipes-devtools/clang/clang/0027-Fix-sanitizer-common-build-with-glibc-2.31.patch
deleted file mode 100644
index 4c05fc6..0000000
--- a/recipes-devtools/clang/clang/0027-Fix-sanitizer-common-build-with-glibc-2.31.patch
+++ /dev/null
@@ -1,81 +0,0 @@
1From 322766bb272ca8f818fe26a74ac1254a3d2b0201 Mon Sep 17 00:00:00 2001
2From: Evgenii Stepanov <eugenis@google.com>
3Date: Mon, 25 Nov 2019 13:52:17 -0800
4Subject: [PATCH] Fix sanitizer-common build with glibc 2.31
5
6Summary:
7As mentioned in D69104, glibc changed ABI recently with the [[ https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=2f959dfe849e0646e27403f2e4091536496ac0f0| 2f959dfe ]] change.
8D69104 dealt with just 32-bit ARM, but that is just one of the many affected architectures.
9E.g. x86_64, i?86, riscv64, sparc 32-bit, s390 31-bit are affected too (and various others).
10
11This patch instead of adding a long list of further architectures that wouldn't be checked ever next to arm 32-bit changes the structures to match the 2.31 layout and performs the checking on Linux for ipc_perm mode position/size only on non-Linux or on Linux with glibc 2.31 or later. I think this matches what is done for aarch64 already.
12If needed, we could list architectures that haven't changed ABI (e.g. powerpc), so that they would be checked even with older glibcs. AFAIK sanitizers don't actually use ipc_perm.mode and
13so all they care about is the size and alignment of the whole structure.
14
15Note, s390 31-bit and arm 32-bit big-endian changed ABI even further, there will now be shmctl with old symbol version and shmctl@@GLIBC_2.31 which will be incompatible. I'm afraid this isn't really solvable unless the sanitizer libraries are symbol versioned and use matching symbol versions to glibc symbols for stuff they intercept, plus use dlvsym.
16This patch doesn't try to address that.
17
18Patch by Jakub Jelinek.
19
20Reviewers: kcc, eugenis, dvyukov
21
22Reviewed By: eugenis
23
24Subscribers: jyknight, kristof.beyls, fedor.sergeev, simoncook, PkmX, s.egerton, steven.zhang, #sanitizers, llvm-commits
25
26Tags: #sanitizers, #llvm
27
28Differential Revision: https://reviews.llvm.org/D70662
29---
30 .../sanitizer_platform_limits_posix.cc | 5 +++--
31 .../sanitizer_platform_limits_posix.h | 15 +--------------
32 2 files changed, 4 insertions(+), 16 deletions(-)
33
34diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
35index b7fa6e8f7e0..abdf7941b5c 100644
36--- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
37+++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
38@@ -1126,8 +1126,9 @@ CHECK_SIZE_AND_OFFSET(ipc_perm, uid);
39 CHECK_SIZE_AND_OFFSET(ipc_perm, gid);
40 CHECK_SIZE_AND_OFFSET(ipc_perm, cuid);
41 CHECK_SIZE_AND_OFFSET(ipc_perm, cgid);
42-#if !defined(__aarch64__) || !SANITIZER_LINUX || __GLIBC_PREREQ (2, 21)
43-/* On aarch64 glibc 2.20 and earlier provided incorrect mode field. */
44+#if !SANITIZER_LINUX || __GLIBC_PREREQ (2, 31)
45+/* glibc 2.30 and earlier provided 16-bit mode field instead of 32-bit
46+ on many architectures. */
47 CHECK_SIZE_AND_OFFSET(ipc_perm, mode);
48 #endif
49
50diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
51index f1a4fd7d370..029a209fc03 100644
52--- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
53+++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
54@@ -203,26 +203,13 @@ namespace __sanitizer {
55 u64 __unused1;
56 u64 __unused2;
57 #elif defined(__sparc__)
58-#if defined(__arch64__)
59 unsigned mode;
60- unsigned short __pad1;
61-#else
62- unsigned short __pad1;
63- unsigned short mode;
64 unsigned short __pad2;
65-#endif
66 unsigned short __seq;
67 unsigned long long __unused1;
68 unsigned long long __unused2;
69-#elif defined(__mips__) || defined(__aarch64__) || defined(__s390x__)
70- unsigned int mode;
71- unsigned short __seq;
72- unsigned short __pad1;
73- unsigned long __unused1;
74- unsigned long __unused2;
75 #else
76- unsigned short mode;
77- unsigned short __pad1;
78+ unsigned int mode;
79 unsigned short __seq;
80 unsigned short __pad2;
81 #if defined(__x86_64__) && !defined(_LP64)
diff --git a/recipes-devtools/clang/clang/0028-Add-libgcc-to-link-step-for-libcxx.patch b/recipes-devtools/clang/clang/0028-Add-libgcc-to-link-step-for-libcxx.patch
deleted file mode 100644
index 9316599..0000000
--- a/recipes-devtools/clang/clang/0028-Add-libgcc-to-link-step-for-libcxx.patch
+++ /dev/null
@@ -1,30 +0,0 @@
1From 397bd558b83ce7ff3ea69c1c8fb6f36c624b9ca6 Mon Sep 17 00:00:00 2001
2From: Jeremy Puhlman <jpuhlman@mvista.com>
3Date: Thu, 16 Jan 2020 21:16:10 +0000
4Subject: [PATCH] Add libgcc to link step for libcxx
5
6This corrects "undefined reference to __divti3"
7
8Upstream-Status: Inappropriate [configuration]
9
10Signed-off-by: Jeremy Puhlman <jpuhlman@mvista.com>
11---
12 libcxx/src/CMakeLists.txt | 2 +-
13 1 file changed, 1 insertion(+), 1 deletion(-)
14
15diff --git a/libcxx/src/CMakeLists.txt b/libcxx/src/CMakeLists.txt
16index 31cd24333a5..d8ae826d7f5 100644
17--- a/libcxx/src/CMakeLists.txt
18+++ b/libcxx/src/CMakeLists.txt
19@@ -234,7 +234,7 @@ if (LIBCXX_ENABLE_SHARED)
20 llvm_setup_rpath(cxx_shared)
21 endif()
22 cxx_link_system_libraries(cxx_shared)
23- target_link_libraries(cxx_shared PRIVATE ${LIBCXX_LIBRARIES})
24+ target_link_libraries(cxx_shared PRIVATE ${LIBCXX_LIBRARIES} "$$($$CC --print-libgcc-file-name)")
25 set_target_properties(cxx_shared
26 PROPERTIES
27 COMPILE_FLAGS "${LIBCXX_COMPILE_FLAGS}"
28--
292.13.3
30
diff --git a/recipes-devtools/clang/common.inc b/recipes-devtools/clang/common.inc
index 16df75c..7b8ca85 100644
--- a/recipes-devtools/clang/common.inc
+++ b/recipes-devtools/clang/common.inc
@@ -15,28 +15,22 @@ SRC_URI = "\
15 file://0005-compiler-rt-Disable-tsan-on-OE-glibc.patch \ 15 file://0005-compiler-rt-Disable-tsan-on-OE-glibc.patch \
16 file://0006-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch \ 16 file://0006-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch \
17 file://0007-llvm-allow-env-override-of-exe-path.patch \ 17 file://0007-llvm-allow-env-override-of-exe-path.patch \
18 file://0008-llvm-Enhance-path-prefix-mapping.patch \ 18 file://0008-clang-driver-Check-sysroot-for-ldso-path.patch \
19 file://0009-clang-Enable-SSP-and-PIE-by-default.patch \ 19 file://0009-clang-Driver-tools.cpp-Add-lssp_nonshared-on-musl.patch \
20 file://0010-clang-driver-Check-sysroot-for-ldso-path.patch \ 20 file://0010-clang-musl-ppc-does-not-support-128-bit-long-double.patch \
21 file://0011-clang-Driver-tools.cpp-Add-lssp_nonshared-on-musl.patch \ 21 file://0011-clang-Prepend-trailing-to-sysroot.patch \
22 file://0012-clang-musl-ppc-does-not-support-128-bit-long-double.patch \ 22 file://0012-clang-Look-inside-the-target-sysroot-for-compiler-ru.patch \
23 file://0013-clang-Prepend-trailing-to-sysroot.patch \ 23 file://0013-clang-Define-releative-gcc-installation-dir.patch \
24 file://0014-clang-Look-inside-the-target-sysroot-for-compiler-ru.patch \ 24 file://0014-clang-Fix-ldso-for-musl-on-x86-and-x32-architectures.patch \
25 file://0015-clang-Define-releative-gcc-installation-dir.patch \ 25 file://0015-clang-scan-view-needs-python-2.x.patch \
26 file://0016-clang-Fix-ldso-for-musl-on-x86-and-x32-architectures.patch \ 26 file://0016-clang-Add-lpthread-and-ldl-along-with-lunwind-for-st.patch \
27 file://0017-clang-scan-view-needs-python-2.x.patch \ 27 file://0017-libclang-Use-CMAKE_DL_LIBS-for-deducing-libdl.patch \
28 file://0018-clang-Initial-implementation-of-fmacro-prefix-map-an.patch \ 28 file://0018-Pass-PYTHON_EXECUTABLE-when-cross-compiling-for-nati.patch \
29 file://0019-clang-Add-lpthread-and-ldl-along-with-lunwind-for-st.patch \ 29 file://0019-Check-for-atomic-double-intrinsics.patch \
30 file://0020-clang-default-to-lp64d-ABI-and-rv64gc-ISA.patch \ 30 file://0020-clang-Enable-SSP-and-PIE-by-default.patch \
31 file://0021-RISCV-Add-support-for-floating-point-registers-in-in.patch \ 31 file://0021-llvm-Add-lz-to-linker-cmdline-if-enabled.patch \
32 file://0022-Pass-PYTHON_EXECUTABLE-when-cross-compiling-for-nati.patch \ 32 file://0022-libcxx-Add-compiler-runtime-library-to-link-step-for.patch \
33 file://0023-openmp-Recognise-ARMv7ve-machine-arch.patch \ 33 file://0023-clang-llvm-cmake-Fix-configure-for-packages-using-fi.patch \
34 file://0024-Check-for-atomic-double-intrinsics.patch \
35 file://0025-llvm-Let-llvm-ar-name-contain-lib.patch \
36 file://0026-libclang-Use-CMAKE_DL_LIBS-for-deducing-libdl.patch \
37 file://0027-Fix-sanitizer-common-build-with-glibc-2.31.patch \
38 file://0028-Add-libgcc-to-link-step-for-libcxx.patch \
39 file://0029-clang-llvm-cmake-Fix-configure-for-packages-using-fi.patch \
40" 34"
41 35
42# Fallback to no-PIE if not set 36# Fallback to no-PIE if not set