diff options
author | Khem Raj <raj.khem@gmail.com> | 2020-01-20 09:13:11 -0800 |
---|---|---|
committer | Khem Raj <raj.khem@gmail.com> | 2020-02-21 08:25:54 -0800 |
commit | 64aa45cebb8d1dea90bf81e84a802f0ef103db14 (patch) | |
tree | 46e07b57042e7fdead8f57e10740e2659976aefa /recipes-devtools/clang/clang | |
parent | 20c73898bfc2d5111d29ac8cb39021e031f68cae (diff) | |
download | meta-clang-64aa45cebb8d1dea90bf81e84a802f0ef103db14.tar.gz |
clang: Upgrade clang to 10.x release (RC2)
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Diffstat (limited to 'recipes-devtools/clang/clang')
32 files changed, 472 insertions, 1139 deletions
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 @@ | |||
1 | From 364c720b5291ed32d14162fd2ddd5975a55fdbe9 Mon Sep 17 00:00:00 2001 | 1 | From 47e9c3e1a066cd17828b819937b1296e6ebc6403 Mon Sep 17 00:00:00 2001 |
2 | From: Khem Raj <raj.khem@gmail.com> | 2 | From: Khem Raj <raj.khem@gmail.com> |
3 | Date: Mon, 22 May 2017 17:36:16 -0700 | 3 | Date: Mon, 22 May 2017 17:36:16 -0700 |
4 | Subject: [PATCH] lldb: Add -lxml2 to linker cmdline of xml is found | 4 | Subject: [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 | ||
25 | diff --git a/lldb/source/Host/CMakeLists.txt b/lldb/source/Host/CMakeLists.txt | 25 | diff --git a/lldb/source/Host/CMakeLists.txt b/lldb/source/Host/CMakeLists.txt |
26 | index 4bb8d363b57..3b58c36c641 100644 | 26 | index 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 @@ | |||
1 | From d3caf3ac407c6d53f62f18dcec3ecb2cb33166ba Mon Sep 17 00:00:00 2001 | 1 | From 9bea240c28ad2d202b42d729f3c5a1afe175ead8 Mon Sep 17 00:00:00 2001 |
2 | From: Khem Raj <raj.khem@gmail.com> | 2 | From: Khem Raj <raj.khem@gmail.com> |
3 | Date: Sun, 27 Aug 2017 10:37:49 -0700 | 3 | Date: Sun, 27 Aug 2017 10:37:49 -0700 |
4 | Subject: [PATCH] libcxxabi: Find libunwind headers when | 4 | Subject: [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 | ||
19 | diff --git a/libcxxabi/CMakeLists.txt b/libcxxabi/CMakeLists.txt | 19 | diff --git a/libcxxabi/CMakeLists.txt b/libcxxabi/CMakeLists.txt |
20 | index aa0b124fc3c..e1503837f33 100644 | 20 | index 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 @@ | |||
1 | From 438cdfa2636eb5c180de004feb4527f70c6c1f88 Mon Sep 17 00:00:00 2001 | 1 | From dc01fa05b36c1623cdc1988be94dc6118b47cfe9 Mon Sep 17 00:00:00 2001 |
2 | From: Khem Raj <raj.khem@gmail.com> | 2 | From: Khem Raj <raj.khem@gmail.com> |
3 | Date: Sun, 19 Apr 2015 15:16:23 -0700 | 3 | Date: Sun, 19 Apr 2015 15:16:23 -0700 |
4 | Subject: [PATCH] compiler-rt: support a new embedded linux target | 4 | Subject: [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 @@ | |||
1 | From 0d904bb5f9f9876e09392cadf36e053e983951c3 Mon Sep 17 00:00:00 2001 | 1 | From 82e0350c47f0d22e7081b64caff4dec9f48e3d7f Mon Sep 17 00:00:00 2001 |
2 | From: Khem Raj <raj.khem@gmail.com> | 2 | From: Khem Raj <raj.khem@gmail.com> |
3 | Date: Thu, 19 May 2016 23:11:45 -0700 | 3 | Date: Thu, 19 May 2016 23:11:45 -0700 |
4 | Subject: [PATCH] compiler-rt: Simplify cross-compilation. Don't use | 4 | Subject: [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 | ||
22 | diff --git a/compiler-rt/CMakeLists.txt b/compiler-rt/CMakeLists.txt | 22 | diff --git a/compiler-rt/CMakeLists.txt b/compiler-rt/CMakeLists.txt |
23 | index f26ae25ada3..1c68cd96d3a 100644 | 23 | index 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 @@ | |||
1 | From c82435d462420d64e4fd249bd6673a12ef38d433 Mon Sep 17 00:00:00 2001 | 1 | From d9a483714b1ca13903024e4256b0b1beb5a1e2f6 Mon Sep 17 00:00:00 2001 |
2 | From: Khem Raj <raj.khem@gmail.com> | 2 | From: Khem Raj <raj.khem@gmail.com> |
3 | Date: Mon, 18 Jul 2016 08:05:02 +0000 | 3 | Date: Mon, 18 Jul 2016 08:05:02 +0000 |
4 | Subject: [PATCH] compiler-rt: Disable tsan on OE/glibc | 4 | Subject: [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 | ||
15 | diff --git a/compiler-rt/cmake/config-ix.cmake b/compiler-rt/cmake/config-ix.cmake | 15 | diff --git a/compiler-rt/cmake/config-ix.cmake b/compiler-rt/cmake/config-ix.cmake |
16 | index 3cc4c22304e..9da891b62e9 100644 | 16 | index 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) |
28 | diff --git a/compiler-rt/test/sanitizer_common/CMakeLists.txt b/compiler-rt/test/sanitizer_common/CMakeLists.txt | 28 | diff --git a/compiler-rt/test/sanitizer_common/CMakeLists.txt b/compiler-rt/test/sanitizer_common/CMakeLists.txt |
29 | index 48fccf05855..b4a7f0adf14 100644 | 29 | index 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 @@ | |||
1 | From 9076572a14be8f881d1395f144d07b0740f71c69 Mon Sep 17 00:00:00 2001 | 1 | From 1a61e23b599d194450cec2923e28c712d8f27fe5 Mon Sep 17 00:00:00 2001 |
2 | From: Khem Raj <raj.khem@gmail.com> | 2 | From: Khem Raj <raj.khem@gmail.com> |
3 | Date: Sat, 21 May 2016 00:33:20 +0000 | 3 | Date: Sat, 21 May 2016 00:33:20 +0000 |
4 | Subject: [PATCH] llvm: TargetLibraryInfo: Undefine libc functions if they are | 4 | Subject: [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 @@ | |||
1 | From 58d9492746d605752409824db350ce4e299c9739 Mon Sep 17 00:00:00 2001 | 1 | From ebbc3bc8bef3bdab0d11e18049fe925ea24cb8e1 Mon Sep 17 00:00:00 2001 |
2 | From: Martin Kelly <mkelly@xevo.com> | 2 | From: Martin Kelly <mkelly@xevo.com> |
3 | Date: Fri, 19 May 2017 00:22:57 -0700 | 3 | Date: Fri, 19 May 2017 00:22:57 -0700 |
4 | Subject: [PATCH] llvm: allow env override of exe path | 4 | Subject: [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 | ||
17 | diff --git a/llvm/tools/llvm-config/llvm-config.cpp b/llvm/tools/llvm-config/llvm-config.cpp | 17 | diff --git a/llvm/tools/llvm-config/llvm-config.cpp b/llvm/tools/llvm-config/llvm-config.cpp |
18 | index 7ef7c46a262..a4f7ed82c7b 100644 | 18 | index 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 @@ | |||
1 | From dad564a1081f62fe1957175e2b060ca1778ff72b Mon Sep 17 00:00:00 2001 | 1 | From d3ab7b54689301d94d3fa8eacfe56c1395cf2c23 Mon Sep 17 00:00:00 2001 |
2 | From: Dan McGregor <dan.mcgregor@usask.ca> | 2 | From: Dan McGregor <dan.mcgregor@usask.ca> |
3 | Date: Wed, 26 Apr 2017 20:29:41 -0600 | 3 | Date: Wed, 26 Apr 2017 20:29:41 -0600 |
4 | Subject: [PATCH] clang: driver: Check sysroot for ldso path | 4 | Subject: [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 | |||
8 | there, check /lib. | 8 | there, check /lib. |
9 | 9 | ||
10 | Signed-off-by: Dan McGregor <dan.mcgregor@usask.ca> | 10 | Signed-off-by: Dan McGregor <dan.mcgregor@usask.ca> |
11 | Signed-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 | ||
15 | diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp | 16 | diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp |
16 | index ed907549929..6adf581a882 100644 | 17 | index 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 @@ | |||
1 | From 8fe2337421af15dee7f0d2af7ed27695e2967723 Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Fri, 15 Feb 2019 11:32:09 -0800 | ||
4 | Subject: [PATCH] llvm: Enhance path prefix mapping | ||
5 | |||
6 | Upstream-Status: Submitted [https://reviews.llvm.org/D56769] | ||
7 | Signed-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 | |||
14 | diff --git a/llvm/include/llvm/Support/Path.h b/llvm/include/llvm/Support/Path.h | ||
15 | index 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 | /// | ||
58 | diff --git a/llvm/lib/Support/Path.cpp b/llvm/lib/Support/Path.cpp | ||
59 | index 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) { | ||
125 | diff --git a/llvm/unittests/Support/Path.cpp b/llvm/unittests/Support/Path.cpp | ||
126 | index 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 @@ | |||
1 | From 3beedc96c33d7c7b0e3b1f9c402b7cda71764d4b Mon Sep 17 00:00:00 2001 | 1 | From 8a7e28da4aa95eb2e19dce222542e787f79a444c Mon Sep 17 00:00:00 2001 |
2 | From: Khem Raj <raj.khem@gmail.com> | 2 | From: Khem Raj <raj.khem@gmail.com> |
3 | Date: Thu, 19 May 2016 21:11:06 -0700 | 3 | Date: Thu, 19 May 2016 21:11:06 -0700 |
4 | Subject: [PATCH] clang: Driver/tools.cpp: Add -lssp_nonshared on musl | 4 | Subject: [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 | ||
15 | diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp | 15 | diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp |
16 | index 33cdd3585c2..8b14b8ea9cb 100644 | 16 | index 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 @@ | |||
1 | From 421fd7dbd379d6d2d89ee58527eca10da8cc643c Mon Sep 17 00:00:00 2001 | ||
2 | From: Evangelos Foutras <evangelos@foutrelis.com> | ||
3 | Date: Thu, 20 Sep 2018 06:20:28 +0300 | ||
4 | Subject: [PATCH] clang: Enable SSP and PIE by default | ||
5 | |||
6 | This is a minimal set of changes needed to make clang use SSP and PIE by | ||
7 | default on Arch Linux. Tests that were easy to adjust have been changed | ||
8 | accordingly; only test/Driver/linux-ld.c has been marked as "expected | ||
9 | failure" due to the number of changes it would require (mostly replacing | ||
10 | crtbegin.o with crtbeginS.o). | ||
11 | |||
12 | Doing so is needed in order to align clang with the new default GCC | ||
13 | behavior in Arch which generates PIE executables by default and also | ||
14 | defaults to -fstack-protector-strong. It is not meant to be a long term | ||
15 | solution, but a simple temporary fix. | ||
16 | |||
17 | Hopefully these changes will be obsoleted by the introduction upstream | ||
18 | of 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 | |||
24 | diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp | ||
25 | index 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 { | ||
49 | diff --git a/clang/lib/Driver/ToolChains/Linux.h b/clang/lib/Driver/ToolChains/Linux.h | ||
50 | index 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 @@ | |||
1 | From 971efedff8fa505ac8c3786e190bec7e3bd2a544 Mon Sep 17 00:00:00 2001 | 1 | From 978921116f4f0947b1131767743a0a093c7d2b72 Mon Sep 17 00:00:00 2001 |
2 | From: Khem Raj <raj.khem@gmail.com> | 2 | From: Khem Raj <raj.khem@gmail.com> |
3 | Date: Tue, 10 May 2016 02:00:11 -0700 | 3 | Date: Tue, 10 May 2016 02:00:11 -0700 |
4 | Subject: [PATCH] clang: musl/ppc does not support 128-bit long double | 4 | Subject: [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 | ||
11 | diff --git a/clang/lib/Basic/Targets/PPC.h b/clang/lib/Basic/Targets/PPC.h | 11 | diff --git a/clang/lib/Basic/Targets/PPC.h b/clang/lib/Basic/Targets/PPC.h |
12 | index 6e5df097921..107cef297e2 100644 | 12 | index 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 @@ | |||
1 | From cfc6e9f9deb0ef42ac024762cd2e7052641a0515 Mon Sep 17 00:00:00 2001 | 1 | From 29b016e8af2283abd9dbbe5c229727c3facb8b4c Mon Sep 17 00:00:00 2001 |
2 | From: Khem Raj <raj.khem@gmail.com> | 2 | From: Khem Raj <raj.khem@gmail.com> |
3 | Date: Thu, 16 Mar 2017 09:02:13 -0700 | 3 | Date: Thu, 16 Mar 2017 09:02:13 -0700 |
4 | Subject: [PATCH] clang: Prepend trailing '/' to sysroot | 4 | Subject: [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 | ||
26 | diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp | 26 | diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp |
27 | index 8cee2490cc7..33037dafb57 100644 | 27 | index 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 @@ | |||
1 | From e4b89d394dec7b9019faf2d3ad788142032b34b4 Mon Sep 17 00:00:00 2001 | 1 | From c9802082e3c3014e68040efdc7520a4cee1a38f6 Mon Sep 17 00:00:00 2001 |
2 | From: Khem Raj <raj.khem@gmail.com> | 2 | From: Khem Raj <raj.khem@gmail.com> |
3 | Date: Thu, 16 Mar 2017 19:06:26 -0700 | 3 | Date: Thu, 16 Mar 2017 19:06:26 -0700 |
4 | Subject: [PATCH] clang: Look inside the target sysroot for compiler runtime | 4 | Subject: [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 | ||
17 | diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp | 17 | diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp |
18 | index b1fddb0af55..6eb8fbb8de4 100644 | 18 | index 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 @@ | |||
1 | From e8650cb2729787e0fa8edbfe6c32474472a673b8 Mon Sep 17 00:00:00 2001 | 1 | From 3c21ecdc6dfd9e78c6cb464826f31cd005879dd0 Mon Sep 17 00:00:00 2001 |
2 | From: Khem Raj <raj.khem@gmail.com> | 2 | From: Khem Raj <raj.khem@gmail.com> |
3 | Date: Sun, 21 May 2017 15:38:25 -0700 | 3 | Date: Sun, 21 May 2017 15:38:25 -0700 |
4 | Subject: [PATCH] clang: Define / releative gcc installation dir | 4 | Subject: [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 | ||
16 | diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp | 16 | diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp |
17 | index 8b14b8ea9cb..20517a369f7 100644 | 17 | index 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 @@ | |||
1 | From 9d30864a94bced63a95a1fc300dbfad37a3d6038 Mon Sep 17 00:00:00 2001 | 1 | From 416ec373ef2bc7df1e63e8f371cf28dc7794230a Mon Sep 17 00:00:00 2001 |
2 | From: Khem Raj <raj.khem@gmail.com> | 2 | From: Khem Raj <raj.khem@gmail.com> |
3 | Date: Wed, 16 Aug 2017 15:16:15 -0700 | 3 | Date: Wed, 16 Aug 2017 15:16:15 -0700 |
4 | Subject: [PATCH] clang: Fix ldso for musl on x86 and x32 architectures | 4 | Subject: [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 | ||
16 | diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp | 16 | diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp |
17 | index 33037dafb57..ff671fe27d2 100644 | 17 | index 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 @@ | |||
1 | From 9ec21455fc581e3755ff59af0828c7f7f9529968 Mon Sep 17 00:00:00 2001 | 1 | From cd53f8bef787fc6c3790db8d31f93916eae7be71 Mon Sep 17 00:00:00 2001 |
2 | From: Khem Raj <raj.khem@gmail.com> | 2 | From: Khem Raj <raj.khem@gmail.com> |
3 | Date: Tue, 15 May 2018 10:28:43 -0700 | 3 | Date: Tue, 15 May 2018 10:28:43 -0700 |
4 | Subject: [PATCH] clang: scan-view needs python 2.x | 4 | Subject: [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 @@ | |||
1 | From a761afb9da0223ec9475288831f35c72c145a905 Mon Sep 17 00:00:00 2001 | 1 | From 751e7b29c02c935987cc9b4d5b17a9db576737f0 Mon Sep 17 00:00:00 2001 |
2 | From: Khem Raj <raj.khem@gmail.com> | 2 | From: Khem Raj <raj.khem@gmail.com> |
3 | Date: Wed, 31 Jul 2019 22:51:39 -0700 | 3 | Date: Wed, 31 Jul 2019 22:51:39 -0700 |
4 | Subject: [PATCH] clang: Add -lpthread and -ldl along with -lunwind for static | 4 | Subject: [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 | ||
17 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | 17 | Signed-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 | ||
22 | diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp | 22 | diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp |
23 | index 99691cb43dc..92b3bfbd77f 100644 | 23 | index 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 @@ | |||
1 | From 9c37e644d96de108d931a6bcce1819a666ae91d8 Mon Sep 17 00:00:00 2001 | 1 | From 1f320fea9755b4616b12656ffa32191e8fe0aca3 Mon Sep 17 00:00:00 2001 |
2 | From: Khem Raj <raj.khem@gmail.com> | 2 | From: Khem Raj <raj.khem@gmail.com> |
3 | Date: Wed, 11 Dec 2019 10:23:15 -0800 | 3 | Date: Wed, 11 Dec 2019 10:23:15 -0800 |
4 | Subject: [PATCH] libclang: Use CMAKE_DL_LIBS for deducing libdl | 4 | Subject: [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 | ||
18 | diff --git a/clang/tools/libclang/CMakeLists.txt b/clang/tools/libclang/CMakeLists.txt | 18 | diff --git a/clang/tools/libclang/CMakeLists.txt b/clang/tools/libclang/CMakeLists.txt |
19 | index 613ead1a36b..9d5cd0ba9df 100644 | 19 | index 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 @@ | |||
1 | From 5864ac955ccfc19fc5a09f68b5a5e9961be18694 Mon Sep 17 00:00:00 2001 | 1 | From af836c13a28a7537170a59343c96eb34d2b4e7fe Mon Sep 17 00:00:00 2001 |
2 | From: Anuj Mittal <anuj.mittal@intel.com> | 2 | From: Anuj Mittal <anuj.mittal@intel.com> |
3 | Date: Wed, 18 Sep 2019 12:56:58 +0800 | 3 | Date: Thu, 26 Dec 2019 12:56:16 -0800 |
4 | Subject: [PATCH] Pass PYTHON_EXECUTABLE when cross compiling for native build | 4 | Subject: [PATCH] Pass PYTHON_EXECUTABLE when cross compiling for native build |
5 | 5 | ||
6 | Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> | 6 | Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> |
7 | Signed-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 | ||
11 | diff --git a/llvm/cmake/modules/CrossCompile.cmake b/llvm/cmake/modules/CrossCompile.cmake | 12 | diff --git a/llvm/cmake/modules/CrossCompile.cmake b/llvm/cmake/modules/CrossCompile.cmake |
12 | index d6b416131fe..7fae1080df7 100644 | 13 | index 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 @@ | |||
1 | From 3a6bf36829e16fd7ab1c2eb6b93ed6caa8210cd1 Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Fri, 15 Feb 2019 10:02:52 -0800 | ||
4 | Subject: [PATCH] clang: Initial implementation of -fmacro-prefix-map and | ||
5 | -ffile-prefix-map | ||
6 | |||
7 | Upstream-Status: Submitted [https://reviews.llvm.org/D49466] | ||
8 | Signed-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 | |||
29 | diff --git a/clang/include/clang/Basic/DiagnosticDriverKinds.td b/clang/include/clang/Basic/DiagnosticDriverKinds.td | ||
30 | index 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< | ||
44 | diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td | ||
45 | index 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>, | ||
65 | diff --git a/clang/include/clang/Lex/PreprocessorOptions.h b/clang/include/clang/Lex/PreprocessorOptions.h | ||
66 | index 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 | |||
79 | diff --git a/clang/lib/CodeGen/CGDebugInfo.cpp b/clang/lib/CodeGen/CGDebugInfo.cpp | ||
80 | index 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) { | ||
100 | diff --git a/clang/lib/CodeGen/CGDebugInfo.h b/clang/lib/CodeGen/CGDebugInfo.h | ||
101 | index 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. | ||
113 | diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp | ||
114 | index 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. | ||
159 | diff --git a/clang/lib/Driver/ToolChains/FreeBSD.cpp b/clang/lib/Driver/ToolChains/FreeBSD.cpp | ||
160 | index 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"); | ||
198 | diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp | ||
199 | index 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 | |||
221 | diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp | ||
222 | index 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(','); | ||
235 | diff --git a/clang/lib/Lex/PPMacroExpansion.cpp b/clang/lib/Lex/PPMacroExpansion.cpp | ||
236 | index 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); | ||
280 | diff --git a/clang/test/CodeGen/debug-prefix-map.c b/clang/test/CodeGen/debug-prefix-map.c | ||
281 | index 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 | |||
293 | diff --git a/clang/test/Driver/debug-prefix-map.S b/clang/test/Driver/debug-prefix-map.S | ||
294 | index 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 | ||
303 | diff --git a/clang/test/Driver/debug-prefix-map.c b/clang/test/Driver/debug-prefix-map.c | ||
304 | index 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= | ||
345 | diff --git a/clang/test/Preprocessor/file_test.c b/clang/test/Preprocessor/file_test.c | ||
346 | new file mode 100644 | ||
347 | index 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: | ||
373 | diff --git a/clang/test/Preprocessor/file_test.h b/clang/test/Preprocessor/file_test.h | ||
374 | new file mode 100644 | ||
375 | index 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 @@ | |||
1 | From 376f2f44fbfb5d08742e478b193a9da667dab9bd Mon Sep 17 00:00:00 2001 | 1 | From b6594af3414070fae4d2fd66a1b92a31c5fd3234 Mon Sep 17 00:00:00 2001 |
2 | From: Khem Raj <raj.khem@gmail.com> | 2 | From: Khem Raj <raj.khem@gmail.com> |
3 | Date: Mon, 18 Nov 2019 17:00:29 -0800 | 3 | Date: Mon, 18 Nov 2019 17:00:29 -0800 |
4 | Subject: [PATCH] Check for atomic<double> intrinsics | 4 | Subject: [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 | ||
17 | diff --git a/llvm/cmake/modules/CheckAtomic.cmake b/llvm/cmake/modules/CheckAtomic.cmake | 17 | diff --git a/llvm/cmake/modules/CheckAtomic.cmake b/llvm/cmake/modules/CheckAtomic.cmake |
18 | index 9a4cdf12a62..e70ce924df9 100644 | 18 | index 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 @@ | |||
1 | From 9fd60731726031748f2640ae9daae10ad479fb81 Mon Sep 17 00:00:00 2001 | ||
2 | From: Evangelos Foutras <evangelos@foutrelis.com> | ||
3 | Date: Thu, 26 Dec 2019 15:46:19 -0800 | ||
4 | Subject: [PATCH] clang: Enable SSP and PIE by default | ||
5 | |||
6 | This is a minimal set of changes needed to make clang use SSP and PIE by | ||
7 | default on Arch Linux. Tests that were easy to adjust have been changed | ||
8 | accordingly; only test/Driver/linux-ld.c has been marked as "expected | ||
9 | failure" due to the number of changes it would require (mostly replacing | ||
10 | crtbegin.o with crtbeginS.o). | ||
11 | |||
12 | Doing so is needed in order to align clang with the new default GCC | ||
13 | behavior in Arch which generates PIE executables by default and also | ||
14 | defaults to -fstack-protector-strong. It is not meant to be a long term | ||
15 | solution, but a simple temporary fix. | ||
16 | |||
17 | Hopefully these changes will be obsoleted by the introduction upstream | ||
18 | of a compile-time option (https://bugs.llvm.org/show_bug.cgi?id=13410) | ||
19 | |||
20 | Taken from ArchLinux - https://git.archlinux.org/svntogit/packages.git/plain/trunk/enable-SSP-and-PIE-by-default.patch?h=packages/clang | ||
21 | |||
22 | Signed-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 | |||
39 | diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp | ||
40 | index 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 { | ||
64 | diff --git a/clang/lib/Driver/ToolChains/Linux.h b/clang/lib/Driver/ToolChains/Linux.h | ||
65 | index 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; | ||
76 | diff --git a/clang/test/Driver/cross-linux.c b/clang/test/Driver/cross-linux.c | ||
77 | index 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" | ||
124 | diff --git a/clang/test/Driver/env.c b/clang/test/Driver/env.c | ||
125 | index 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/../../.." | ||
137 | diff --git a/clang/test/Driver/fsanitize.c b/clang/test/Driver/fsanitize.c | ||
138 | index 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" | ||
177 | diff --git a/clang/test/Driver/gcc-toolchain.cpp b/clang/test/Driver/gcc-toolchain.cpp | ||
178 | index 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/../../../.." | ||
189 | diff --git a/clang/test/Driver/hexagon-toolchain-elf.c b/clang/test/Driver/hexagon-toolchain-elf.c | ||
190 | index 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" | ||
202 | diff --git a/clang/test/Driver/linux-as.c b/clang/test/Driver/linux-as.c | ||
203 | index 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 | ||
224 | diff --git a/clang/test/Driver/linux-ld.c b/clang/test/Driver/linux-ld.c | ||
225 | index 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 | // | ||
234 | diff --git a/clang/test/Driver/ppc-abi.c b/clang/test/Driver/ppc-abi.c | ||
235 | index 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" | ||
252 | diff --git a/clang/test/Driver/riscv32-toolchain.c b/clang/test/Driver/riscv32-toolchain.c | ||
253 | index 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" | ||
274 | diff --git a/clang/test/Driver/riscv64-toolchain.c b/clang/test/Driver/riscv64-toolchain.c | ||
275 | index 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" | ||
296 | diff --git a/clang/test/Driver/stack-protector.c b/clang/test/Driver/stack-protector.c | ||
297 | index 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 @@ | |||
1 | From a11464585a13998f97e837a62b299bf66e2f90f0 Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Mon, 12 Aug 2019 08:59:28 -0700 | ||
4 | Subject: [PATCH] clang: default to lp64d ABI and rv64gc ISA | ||
5 | |||
6 | Signed-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 | |||
12 | diff --git a/clang/lib/Driver/ToolChains/Arch/RISCV.cpp b/clang/lib/Driver/ToolChains/Arch/RISCV.cpp | ||
13 | index 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 | } | ||
37 | diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp | ||
38 | index 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 @@ | |||
1 | From 19de4c98078a98a0663e945d419fa2147a70fe9c Mon Sep 17 00:00:00 2001 | ||
2 | From: Simon Cook <simon.cook@embecosm.com> | ||
3 | Date: Wed, 31 Jul 2019 09:12:00 +0000 | ||
4 | Subject: [PATCH] [RISCV] Add support for floating point registers in inlineasm | ||
5 | |||
6 | This adds support for parsing/emitting in IR the floating-point RISC-V | ||
7 | registers in inline assembly clobber lists. | ||
8 | |||
9 | Differential Revision: https://reviews.llvm.org/D64737 | ||
10 | |||
11 | llvm-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 | |||
18 | diff --git a/clang/lib/Basic/Targets/RISCV.cpp b/clang/lib/Basic/Targets/RISCV.cpp | ||
19 | index 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 | |||
70 | diff --git a/clang/test/Sema/riscv-asm.c b/clang/test/Sema/riscv-asm.c | ||
71 | new file mode 100644 | ||
72 | index 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 @@ | |||
1 | From d46267d3d548dbfae92f4958090af4567778c4bd Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Sat, 4 Jan 2020 01:00:06 -0800 | ||
4 | Subject: [PATCH] llvm: Add -lz to linker cmdline if enabled | ||
5 | |||
6 | cmake's detection mechanism confuses libz.so during cross build and ends | ||
7 | up linking with libz from build host which could be a different | ||
8 | architecture and fail link | ||
9 | |||
10 | see | ||
11 | https://reviews.llvm.org/D70764#1803559 | ||
12 | |||
13 | Signed-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 | |||
18 | diff --git a/llvm/lib/Support/CMakeLists.txt b/llvm/lib/Support/CMakeLists.txt | ||
19 | index 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 @@ | |||
1 | From ecde714829d04ed0a3ee30827e60502aabc516b0 Mon Sep 17 00:00:00 2001 | ||
2 | From: Jeremy Puhlman <jpuhlman@mvista.com> | ||
3 | Date: Thu, 16 Jan 2020 21:16:10 +0000 | ||
4 | Subject: [PATCH] libcxx: Add compiler runtime library to link step for libcxx | ||
5 | |||
6 | This corrects "undefined reference to __divti3" | ||
7 | |||
8 | Upstream-Status: Inappropriate [configuration] | ||
9 | |||
10 | Signed-off-by: Jeremy Puhlman <jpuhlman@mvista.com> | ||
11 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
12 | --- | ||
13 | libcxx/src/CMakeLists.txt | 4 ++-- | ||
14 | 1 file changed, 2 insertions(+), 2 deletions(-) | ||
15 | |||
16 | diff --git a/libcxx/src/CMakeLists.txt b/libcxx/src/CMakeLists.txt | ||
17 | index 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 @@ | |||
1 | From b79837a3b7aa677b44110de4e9e7576fa34a96e3 Mon Sep 17 00:00:00 2001 | 1 | From 8c28658ad591489e35690a245f82b519ae37929e Mon Sep 17 00:00:00 2001 |
2 | From: Ovidiu Panait <ovidiu.panait@windriver.com> | 2 | From: Ovidiu Panait <ovidiu.panait@windriver.com> |
3 | Date: Fri, 31 Jan 2020 10:56:11 +0200 | 3 | Date: Fri, 31 Jan 2020 10:56:11 +0200 |
4 | Subject: [PATCH] clang,llvm: cmake: Fix configure for packages using | 4 | Subject: [PATCH] clang,llvm: cmake: Fix configure for packages using |
@@ -26,16 +26,16 @@ Upstream-Status: Innapropriate [oe-specific] | |||
26 | 26 | ||
27 | Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com> | 27 | Signed-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 | ||
34 | diff --git a/clang/cmake/modules/AddClang.cmake b/clang/cmake/modules/AddClang.cmake | 34 | diff --git a/clang/cmake/modules/AddClang.cmake b/clang/cmake/modules/AddClang.cmake |
35 | index cbd618e18af..b864c2b2303 100644 | 35 | index 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 | ||
62 | diff --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake | 62 | diff --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake |
63 | index 619e986b8aa..ab4b2234fa5 100644 | 63 | index 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() |
116 | diff --git a/llvm/cmake/modules/TableGen.cmake b/llvm/cmake/modules/TableGen.cmake | 116 | diff --git a/llvm/cmake/modules/TableGen.cmake b/llvm/cmake/modules/TableGen.cmake |
117 | index 36c026b5c0f..c588ce6e38b 100644 | 117 | index 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 | -- | ||
137 | 2.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 @@ | |||
1 | From 68d9f584ed5e3b65af21548fb1a9f3547a14cd59 Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Sat, 5 Oct 2019 14:47:37 -0700 | ||
4 | Subject: [PATCH] openmp: Recognise ARMv7ve machine arch | ||
5 | |||
6 | -march in clang when set to armv7ve emits __ARM_ARCH_7VE__ internal | ||
7 | define and not __ARM_ARCH_7A__, hence the condition fails and openmp can | ||
8 | not be compiled, this makes sure that __ARM_ARCH_7VE__ is taken into | ||
9 | consideration as KMP_ARCH_ARMV7 as well | ||
10 | |||
11 | Signed-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 | |||
16 | diff --git a/openmp/runtime/src/kmp_platform.h b/openmp/runtime/src/kmp_platform.h | ||
17 | index 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 @@ | |||
1 | From e709fa8c221d21bce717b22fa4076c94d51f011e Mon Sep 17 00:00:00 2001 | ||
2 | From: Fangrui Song <maskray@google.com> | ||
3 | Date: Tue, 10 Dec 2019 15:56:05 -0800 | ||
4 | Subject: [PATCH] llvm: Let llvm-ar name contain 'lib' | ||
5 | |||
6 | In cross-compile cases canonical names are created using symlinks but | ||
7 | they fail to execute because the name confuses 'lib' instead of toolname | ||
8 | |||
9 | In multilib(lib32) case, the arm-pokymllib32-linux-gnueabi-llvm-ar (${TARGET_PREFIX}llvm-ar) gives: | ||
10 | qc: no such file or directory | ||
11 | |||
12 | Which is because when the llvm-ar symbol link's name contains "lib", it would be considered as llvm-lib: | ||
13 | |||
14 | Signed-off-by: Fangrui Song <maskray@google.com> | ||
15 | Signed-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 | |||
28 | diff --git a/llvm/test/tools/llvm-ar/tool-name.test b/llvm/test/tools/llvm-ar/tool-name.test | ||
29 | new file mode 100644 | ||
30 | index 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 | ||
49 | diff --git a/llvm/test/tools/llvm-dlltool/tool-name.test b/llvm/test/tools/llvm-dlltool/tool-name.test | ||
50 | new file mode 100644 | ||
51 | index 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 | ||
68 | diff --git a/llvm/test/tools/llvm-lib/tool-name.test b/llvm/test/tools/llvm-lib/tool-name.test | ||
69 | new file mode 100644 | ||
70 | index 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 | ||
88 | diff --git a/llvm/test/tools/llvm-ranlib/tool-name.test b/llvm/test/tools/llvm-ranlib/tool-name.test | ||
89 | new file mode 100644 | ||
90 | index 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 | ||
107 | diff --git a/llvm/tools/llvm-ar/llvm-ar.cpp b/llvm/tools/llvm-ar/llvm-ar.cpp | ||
108 | index 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 @@ | |||
1 | From 322766bb272ca8f818fe26a74ac1254a3d2b0201 Mon Sep 17 00:00:00 2001 | ||
2 | From: Evgenii Stepanov <eugenis@google.com> | ||
3 | Date: Mon, 25 Nov 2019 13:52:17 -0800 | ||
4 | Subject: [PATCH] Fix sanitizer-common build with glibc 2.31 | ||
5 | |||
6 | Summary: | ||
7 | As mentioned in D69104, glibc changed ABI recently with the [[ https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=2f959dfe849e0646e27403f2e4091536496ac0f0| 2f959dfe ]] change. | ||
8 | D69104 dealt with just 32-bit ARM, but that is just one of the many affected architectures. | ||
9 | E.g. x86_64, i?86, riscv64, sparc 32-bit, s390 31-bit are affected too (and various others). | ||
10 | |||
11 | This 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. | ||
12 | If 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 | ||
13 | so all they care about is the size and alignment of the whole structure. | ||
14 | |||
15 | Note, 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. | ||
16 | This patch doesn't try to address that. | ||
17 | |||
18 | Patch by Jakub Jelinek. | ||
19 | |||
20 | Reviewers: kcc, eugenis, dvyukov | ||
21 | |||
22 | Reviewed By: eugenis | ||
23 | |||
24 | Subscribers: jyknight, kristof.beyls, fedor.sergeev, simoncook, PkmX, s.egerton, steven.zhang, #sanitizers, llvm-commits | ||
25 | |||
26 | Tags: #sanitizers, #llvm | ||
27 | |||
28 | Differential 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 | |||
34 | diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc | ||
35 | index 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 | |||
50 | diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h | ||
51 | index 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 @@ | |||
1 | From 397bd558b83ce7ff3ea69c1c8fb6f36c624b9ca6 Mon Sep 17 00:00:00 2001 | ||
2 | From: Jeremy Puhlman <jpuhlman@mvista.com> | ||
3 | Date: Thu, 16 Jan 2020 21:16:10 +0000 | ||
4 | Subject: [PATCH] Add libgcc to link step for libcxx | ||
5 | |||
6 | This corrects "undefined reference to __divti3" | ||
7 | |||
8 | Upstream-Status: Inappropriate [configuration] | ||
9 | |||
10 | Signed-off-by: Jeremy Puhlman <jpuhlman@mvista.com> | ||
11 | --- | ||
12 | libcxx/src/CMakeLists.txt | 2 +- | ||
13 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
14 | |||
15 | diff --git a/libcxx/src/CMakeLists.txt b/libcxx/src/CMakeLists.txt | ||
16 | index 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 | -- | ||
29 | 2.13.3 | ||
30 | |||