changed debian/source/format to native

This commit is contained in:
Lu zhiping 2022-06-27 14:59:03 +08:00
parent 2869bc2ee2
commit 9445527a49
102 changed files with 1 additions and 12660 deletions

View File

@ -1,31 +0,0 @@
From d0d969074f6e0f975ad53d21e7ce6c7b40cf2957 Mon Sep 17 00:00:00 2001
From: Peter Wu <peter@lekensteyn.nl>
Date: Fri, 4 May 2018 15:43:06 +0200
Subject: [PATCH] [llvm] cmake: resolve symlinks in LLVMConfig.cmake
Ensure that symlinks such as /usr/lib/llvm-X.Y/cmake (pointing to
lib/cmake/llvm) are resolved. This ensures that LLVM_INSTALL_PREFIX
becomes /usr/lib/llvm-X.Y instead of /usr.
Partially addresses PR37128
---
llvm/cmake/modules/CMakeLists.txt | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Index: llvm-toolchain-9_9.0.0/llvm/cmake/modules/CMakeLists.txt
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/cmake/modules/CMakeLists.txt
+++ llvm-toolchain-9_9.0.0/llvm/cmake/modules/CMakeLists.txt
@@ -88,10 +88,10 @@ file(COPY .
# Generate LLVMConfig.cmake for the install tree.
set(LLVM_CONFIG_CODE "
# Compute the installation prefix from this LLVMConfig.cmake file location.
-get_filename_component(LLVM_INSTALL_PREFIX \"\${CMAKE_CURRENT_LIST_FILE}\" PATH)")
+get_filename_component(LLVM_INSTALL_PREFIX \"\${CMAKE_CURRENT_LIST_FILE}\" REALPATH)")
# Construct the proper number of get_filename_component(... PATH)
# calls to compute the installation prefix.
-string(REGEX REPLACE "/" ";" _count "${LLVM_INSTALL_PACKAGE_DIR}")
+string(REGEX REPLACE "/" ";" _count "prefix/${LLVM_INSTALL_PACKAGE_DIR}")
foreach(p ${_count})
set(LLVM_CONFIG_CODE "${LLVM_CONFIG_CODE}
get_filename_component(LLVM_INSTALL_PREFIX \"\${LLVM_INSTALL_PREFIX}\" PATH)")

View File

@ -1,31 +0,0 @@
From c830d84bc802ca1e9219415a5784c4ad97a34819 Mon Sep 17 00:00:00 2001
From: Peter Wu <peter@lekensteyn.nl>
Date: Fri, 4 May 2018 15:55:26 +0200
Subject: [PATCH] [clang] cmake: resolve symlinks in ClangConfig.cmake
Ensure that symlinks such as /usr/lib/cmake/clang-X.Y (pointing to
/usr/lib/llvm-X.Y/lib/cmake/llvm) are resolved. This ensures that
CLANG_INSTALL_PREFIX ends up to be /usr/lib/llvm-X.Y instead of /usr.
Partially addresses PR37128
---
cmake/modules/CMakeLists.txt | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Index: llvm-toolchain-9_9.0.0/clang/cmake/modules/CMakeLists.txt
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/cmake/modules/CMakeLists.txt
+++ llvm-toolchain-9_9.0.0/clang/cmake/modules/CMakeLists.txt
@@ -30,10 +30,10 @@ set(CLANG_CONFIG_EXPORTS_FILE)
# Generate ClangConfig.cmake for the install tree.
set(CLANG_CONFIG_CODE "
# Compute the installation prefix from this LLVMConfig.cmake file location.
-get_filename_component(CLANG_INSTALL_PREFIX \"\${CMAKE_CURRENT_LIST_FILE}\" PATH)")
+get_filename_component(CLANG_INSTALL_PREFIX \"\${CMAKE_CURRENT_LIST_FILE}\" REALPATH)")
# Construct the proper number of get_filename_component(... PATH)
# calls to compute the installation prefix.
-string(REGEX REPLACE "/" ";" _count "${CLANG_INSTALL_PACKAGE_DIR}")
+string(REGEX REPLACE "/" ";" _count "prefix/${CLANG_INSTALL_PACKAGE_DIR}")
foreach(p ${_count})
set(CLANG_CONFIG_CODE "${CLANG_CONFIG_CODE}
get_filename_component(CLANG_INSTALL_PREFIX \"\${CLANG_INSTALL_PREFIX}\" PATH)")

View File

@ -1,19 +0,0 @@
---
lib/Support/CommandLine.cpp | 4 ++++
1 file changed, 4 insertions(+)
Index: llvm-toolchain-9_9.0.0/llvm/lib/Support/CommandLine.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/lib/Support/CommandLine.cpp
+++ llvm-toolchain-9_9.0.0/llvm/lib/Support/CommandLine.cpp
@@ -2378,6 +2378,10 @@ public:
OS << " " << LLVM_VERSION_INFO;
#endif
OS << "\n ";
+#ifdef LLVM_DEBIAN_INFO
+ OS << LLVM_DEBIAN_INFO;
+#endif
+ OS << "\n ";
#ifndef __OPTIMIZE__
OS << "DEBUG build";
#else

View File

@ -1,31 +0,0 @@
---
clang/tools/libclang/CMakeLists.txt | 2 +-
tools/llvm-shlib/CMakeLists.txt | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
Index: llvm-toolchain-9_9.0.0/clang/tools/libclang/CMakeLists.txt
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/tools/libclang/CMakeLists.txt
+++ llvm-toolchain-9_9.0.0/clang/tools/libclang/CMakeLists.txt
@@ -94,7 +94,7 @@ if (UNIX AND ${CMAKE_SYSTEM_NAME} MATCHE
remove_definitions("-D_XOPEN_SOURCE=700")
endif()
-add_clang_library(libclang ${ENABLE_SHARED} ${ENABLE_STATIC} INSTALL_WITH_TOOLCHAIN
+add_clang_library(libclang ${ENABLE_SHARED} ${ENABLE_STATIC} INSTALL_WITH_TOOLCHAIN SONAME
OUTPUT_NAME ${output_name}
${SOURCES}
DEPENDS clang-resource-headers
Index: llvm-toolchain-9_9.0.0/llvm/tools/llvm-shlib/CMakeLists.txt
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/tools/llvm-shlib/CMakeLists.txt
+++ llvm-toolchain-9_9.0.0/llvm/tools/llvm-shlib/CMakeLists.txt
@@ -44,6 +44,8 @@ if(LLVM_BUILD_LLVM_DYLIB)
endif()
add_llvm_library(LLVM SHARED DISABLE_LLVM_LINK_LLVM_DYLIB SONAME ${INSTALL_WITH_TOOLCHAIN} ${SOURCES})
+ set_property(TARGET LLVM PROPERTY VERSION "1") # Append .1 to SONAME
+
list(REMOVE_DUPLICATES LIB_NAMES)
if(("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") OR (MINGW) OR (HAIKU)
OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD")

View File

@ -1,50 +0,0 @@
From: Nicholas D Steeves <nsteeves@gmail.com>
Date: Sat, 10 Feb 2018 21:00:55 -0500
Subject: Set html_static_path = ['_static'] everywhere.
---
clang-tools-extra/docs/conf.py | 2 +-
clang/docs/analyzer/conf.py | 2 +-
clang/docs/conf.py | 2 +-
polly/docs/conf.py | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
Index: llvm-toolchain-9_9.0.0/clang/docs/analyzer/conf.py
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/docs/analyzer/conf.py
+++ llvm-toolchain-9_9.0.0/clang/docs/analyzer/conf.py
@@ -121,7 +121,7 @@ html_theme = 'haiku'
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = []
+html_static_path = ['_static']
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
Index: llvm-toolchain-9_9.0.0/clang/docs/conf.py
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/docs/conf.py
+++ llvm-toolchain-9_9.0.0/clang/docs/conf.py
@@ -122,7 +122,7 @@ html_theme = 'haiku'
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = []
+html_static_path = ['_static']
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
Index: llvm-toolchain-9_9.0.0/polly/docs/conf.py
===================================================================
--- llvm-toolchain-9_9.0.0.orig/polly/docs/conf.py
+++ llvm-toolchain-9_9.0.0/polly/docs/conf.py
@@ -127,7 +127,7 @@ except ImportError:
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = []
+html_static_path = ['_static']
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.

View File

@ -1,109 +0,0 @@
From: Nicholas D Steeves <nsteeves@gmail.com>
Date: Sat, 10 Feb 2018 21:02:17 -0500
Subject: Use Debian-provided MathJax everywhere.
---
clang-tools-extra/docs/Doxyfile | 2 +-
clang-tools-extra/docs/conf.py | 3 +++
clang-tools-extra/docs/doxygen.cfg.in | 2 +-
clang/docs/analyzer/conf.py | 3 +++
clang/docs/conf.py | 3 +++
clang/docs/doxygen.cfg.in | 2 +-
docs/doxygen.cfg.in | 2 +-
polly/docs/doxygen.cfg.in | 2 +-
8 files changed, 14 insertions(+), 5 deletions(-)
Index: llvm-toolchain-9_9.0.0/clang-tools-extra/docs/conf.py
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang-tools-extra/docs/conf.py
+++ llvm-toolchain-9_9.0.0/clang-tools-extra/docs/conf.py
@@ -123,6 +123,9 @@ html_theme = 'haiku'
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['_static']
+# Use Debian-provided MathJax
+mathjax_path = '/usr/share/javascript/mathjax/MathJax.js?config=TeX-AMS-MML_HTMLorMML'
+
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
#html_last_updated_fmt = '%b %d, %Y'
Index: llvm-toolchain-9_9.0.0/clang-tools-extra/docs/doxygen.cfg.in
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang-tools-extra/docs/doxygen.cfg.in
+++ llvm-toolchain-9_9.0.0/clang-tools-extra/docs/doxygen.cfg.in
@@ -1443,7 +1443,7 @@ MATHJAX_FORMAT = HTML-CSS
# The default value is: http://cdn.mathjax.org/mathjax/latest.
# This tag requires that the tag USE_MATHJAX is set to YES.
-MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
+MATHJAX_RELPATH = /usr/share/javascript/mathjax
# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
# extension names that should be enabled during MathJax rendering. For example
Index: llvm-toolchain-9_9.0.0/clang/docs/analyzer/conf.py
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/docs/analyzer/conf.py
+++ llvm-toolchain-9_9.0.0/clang/docs/analyzer/conf.py
@@ -123,6 +123,9 @@ html_theme = 'haiku'
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['_static']
+# Use Debian-provided MathJax
+mathjax_path = '/usr/share/javascript/mathjax/MathJax.js?config=TeX-AMS-MML_HTMLorMML'
+
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
#html_last_updated_fmt = '%b %d, %Y'
Index: llvm-toolchain-9_9.0.0/clang/docs/conf.py
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/docs/conf.py
+++ llvm-toolchain-9_9.0.0/clang/docs/conf.py
@@ -124,6 +124,9 @@ html_theme = 'haiku'
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['_static']
+# Use Debian-provided MathJax
+mathjax_path = '/usr/share/javascript/mathjax/MathJax.js?config=TeX-AMS-MML_HTMLorMML'
+
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
#html_last_updated_fmt = '%b %d, %Y'
Index: llvm-toolchain-9_9.0.0/clang/docs/doxygen.cfg.in
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/docs/doxygen.cfg.in
+++ llvm-toolchain-9_9.0.0/clang/docs/doxygen.cfg.in
@@ -1432,7 +1432,7 @@ MATHJAX_FORMAT = HTML-CSS
# The default value is: http://cdn.mathjax.org/mathjax/latest.
# This tag requires that the tag USE_MATHJAX is set to YES.
-MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
+MATHJAX_RELPATH = /usr/share/javascript/mathjax
# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
# extension names that should be enabled during MathJax rendering. For example
Index: llvm-toolchain-9_9.0.0/llvm/docs/doxygen.cfg.in
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/docs/doxygen.cfg.in
+++ llvm-toolchain-9_9.0.0/llvm/docs/doxygen.cfg.in
@@ -1433,7 +1433,7 @@ MATHJAX_FORMAT = HTML-CSS
# The default value is: http://cdn.mathjax.org/mathjax/latest.
# This tag requires that the tag USE_MATHJAX is set to YES.
-MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
+MATHJAX_RELPATH = /usr/share/javascript/mathjax
# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
# extension names that should be enabled during MathJax rendering. For example
Index: llvm-toolchain-9_9.0.0/polly/docs/doxygen.cfg.in
===================================================================
--- llvm-toolchain-9_9.0.0.orig/polly/docs/doxygen.cfg.in
+++ llvm-toolchain-9_9.0.0/polly/docs/doxygen.cfg.in
@@ -1433,7 +1433,7 @@ MATHJAX_FORMAT = HTML-CSS
# The default value is: http://cdn.mathjax.org/mathjax/latest.
# This tag requires that the tag USE_MATHJAX is set to YES.
-MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
+MATHJAX_RELPATH = /usr/share/javascript/mathjax
# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
# extension names that should be enabled during MathJax rendering. For example

View File

@ -1,21 +0,0 @@
Index: llvm-toolchain-9_9.0.0/clang/lib/Basic/Version.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/lib/Basic/Version.cpp
+++ llvm-toolchain-9_9.0.0/clang/lib/Basic/Version.cpp
@@ -14,6 +14,7 @@
#include "clang/Basic/LLVM.h"
#include "clang/Config/config.h"
#include "llvm/Support/raw_ostream.h"
+#include "clang/Debian/debian_path.h"
#include <cstdlib>
#include <cstring>
@@ -124,7 +125,7 @@ std::string getClangToolFullVersion(Stri
#ifdef CLANG_VENDOR
OS << CLANG_VENDOR;
#endif
- OS << ToolName << " version " CLANG_VERSION_STRING " "
+ OS << ToolName << " version " CLANG_VERSION_STRING "-" DEB_PATCHSETVERSION " "
<< getClangFullRepositoryVersion();
// If vendor supplied, include the base LLVM version as well.

View File

@ -1,211 +0,0 @@
---
clang/include/clang/Basic/Builtins.def | 8 +-
clang/lib/AST/Decl.cpp | 12 +--
clang/lib/Sema/SemaChecking.cpp | 11 +-
clang/lib/StaticAnalyzer/Checkers/GenericTaintChecker.cpp | 6 -
clang/test/Sema/builtins.c | 11 +-
clang/test/Sema/warn-strlcpycat-size.c | 55 --------------
6 files changed, 25 insertions(+), 78 deletions(-)
Index: llvm-toolchain-9_9.0.0/clang/include/clang/Basic/Builtins.def
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/include/clang/Basic/Builtins.def
+++ llvm-toolchain-9_9.0.0/clang/include/clang/Basic/Builtins.def
@@ -525,8 +525,8 @@ BUILTIN(__builtin___memset_chk, "v*v*izz
BUILTIN(__builtin___stpcpy_chk, "c*c*cC*z", "nF")
BUILTIN(__builtin___strcat_chk, "c*c*cC*z", "nF")
BUILTIN(__builtin___strcpy_chk, "c*c*cC*z", "nF")
-BUILTIN(__builtin___strlcat_chk, "zc*cC*zz", "nF")
-BUILTIN(__builtin___strlcpy_chk, "zc*cC*zz", "nF")
+//BUILTIN(__builtin___strlcat_chk, "zc*cC*zz", "nF")
+//BUILTIN(__builtin___strlcpy_chk, "zc*cC*zz", "nF")
BUILTIN(__builtin___strncat_chk, "c*c*cC*zz", "nF")
BUILTIN(__builtin___strncpy_chk, "c*c*cC*zz", "nF")
BUILTIN(__builtin___stpncpy_chk, "c*c*cC*zz", "nF")
@@ -992,8 +992,8 @@ LIBBUILTIN(getcontext, "iK*", "fj",
LIBBUILTIN(_longjmp, "vJi", "fr", "setjmp.h", ALL_GNU_LANGUAGES)
LIBBUILTIN(siglongjmp, "vSJi", "fr", "setjmp.h", ALL_GNU_LANGUAGES)
// non-standard but very common
-LIBBUILTIN(strlcpy, "zc*cC*z", "f", "string.h", ALL_GNU_LANGUAGES)
-LIBBUILTIN(strlcat, "zc*cC*z", "f", "string.h", ALL_GNU_LANGUAGES)
+//LIBBUILTIN(strlcpy, "zc*cC*z", "f", "string.h", ALL_GNU_LANGUAGES)
+//LIBBUILTIN(strlcat, "zc*cC*z", "f", "string.h", ALL_GNU_LANGUAGES)
// id objc_msgSend(id, SEL, ...)
LIBBUILTIN(objc_msgSend, "GGH.", "f", "objc/message.h", OBJC_LANG)
// long double objc_msgSend_fpret(id self, SEL op, ...)
Index: llvm-toolchain-9_9.0.0/clang/lib/AST/Decl.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/lib/AST/Decl.cpp
+++ llvm-toolchain-9_9.0.0/clang/lib/AST/Decl.cpp
@@ -3775,13 +3775,13 @@ unsigned FunctionDecl::getMemoryFunction
case Builtin::BImemmove:
return Builtin::BImemmove;
- case Builtin::BIstrlcpy:
- case Builtin::BI__builtin___strlcpy_chk:
- return Builtin::BIstrlcpy;
+// case Builtin::BIstrlcpy:
+// case Builtin::BI__builtin___strlcpy_chk:
+// return Builtin::BIstrlcpy;
- case Builtin::BIstrlcat:
- case Builtin::BI__builtin___strlcat_chk:
- return Builtin::BIstrlcat;
+// case Builtin::BIstrlcat:
+// case Builtin::BI__builtin___strlcat_chk:
+// return Builtin::BIstrlcat;
case Builtin::BI__builtin_memcmp:
case Builtin::BImemcmp:
Index: llvm-toolchain-9_9.0.0/clang/lib/Sema/SemaChecking.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/lib/Sema/SemaChecking.cpp
+++ llvm-toolchain-9_9.0.0/clang/lib/Sema/SemaChecking.cpp
@@ -335,8 +335,8 @@ void Sema::checkFortifiedBuiltinMemoryFu
case Builtin::BI__builtin___memcpy_chk:
case Builtin::BI__builtin___memmove_chk:
case Builtin::BI__builtin___memset_chk:
- case Builtin::BI__builtin___strlcat_chk:
- case Builtin::BI__builtin___strlcpy_chk:
+// case Builtin::BI__builtin___strlcat_chk:
+// case Builtin::BI__builtin___strlcpy_chk:
case Builtin::BI__builtin___strncat_chk:
case Builtin::BI__builtin___strncpy_chk:
case Builtin::BI__builtin___stpncpy_chk:
@@ -4349,9 +4349,10 @@ bool Sema::CheckFunctionCall(FunctionDec
return false;
// Handle memory setting and copying functions.
- if (CMId == Builtin::BIstrlcpy || CMId == Builtin::BIstrlcat)
- CheckStrlcpycatArguments(TheCall, FnInfo);
- else if (CMId == Builtin::BIstrncat)
+// if (CMId == Builtin::BIstrlcpy || CMId == Builtin::BIstrlcat)
+// CheckStrlcpycatArguments(TheCall, FnInfo);
+// else
+ if (CMId == Builtin::BIstrncat)
CheckStrncatArguments(TheCall, FnInfo);
else
CheckMemaccessArguments(TheCall, CMId, FnInfo);
Index: llvm-toolchain-9_9.0.0/clang/lib/StaticAnalyzer/Checkers/GenericTaintChecker.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/lib/StaticAnalyzer/Checkers/GenericTaintChecker.cpp
+++ llvm-toolchain-9_9.0.0/clang/lib/StaticAnalyzer/Checkers/GenericTaintChecker.cpp
@@ -262,9 +262,9 @@ GenericTaintChecker::TaintPropagationRul
case Builtin::BIstrncpy:
case Builtin::BIstrncat:
return TaintPropagationRule({1, 2}, {0, ReturnValueIndex});
- case Builtin::BIstrlcpy:
- case Builtin::BIstrlcat:
- return TaintPropagationRule({1, 2}, {0});
+// case Builtin::BIstrlcpy:
+// case Builtin::BIstrlcat:
+// return TaintPropagationRule({1, 2}, {0});
case Builtin::BIstrndup:
return TaintPropagationRule({0, 1}, {ReturnValueIndex});
Index: llvm-toolchain-9_9.0.0/clang/test/Sema/builtins.c
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/test/Sema/builtins.c
+++ llvm-toolchain-9_9.0.0/clang/test/Sema/builtins.c
@@ -199,11 +199,9 @@ void test18() {
ptr = __builtin___memccpy_chk(dst, src, '\037', sizeof(src), sizeof(dst));
result = __builtin___strlcpy_chk(dst, src, sizeof(dst), sizeof(dst));
- result = __builtin___strlcat_chk(dst, src, sizeof(dst), sizeof(dst));
ptr = __builtin___memccpy_chk(dst, src, '\037', sizeof(src)); // expected-error {{too few arguments to function call}}
ptr = __builtin___strlcpy_chk(dst, src, sizeof(dst), sizeof(dst)); // expected-warning {{incompatible integer to pointer conversion}}
- ptr = __builtin___strlcat_chk(dst, src, sizeof(dst), sizeof(dst)); // expected-warning {{incompatible integer to pointer conversion}}
}
void no_ms_builtins() {
@@ -217,29 +215,6 @@ void unavailable() {
__builtin_operator_delete(0); // expected-error {{'__builtin_operator_delete' is only available in C++}}
}
-// rdar://18259539
-size_t strlcpy(char * restrict dst, const char * restrict src, size_t size);
-size_t strlcat(char * restrict dst, const char * restrict src, size_t size);
-
-void Test19(void)
-{
- static char b[40];
- static char buf[20];
-
- strlcpy(buf, b, sizeof(b)); // expected-warning {{size argument in 'strlcpy' call appears to be size of the source; expected the size of the destination}} \\
- // expected-note {{change size argument to be the size of the destination}}
- __builtin___strlcpy_chk(buf, b, sizeof(b), __builtin_object_size(buf, 0)); // expected-warning {{size argument in '__builtin___strlcpy_chk' call appears to be size of the source; expected the size of the destination}} \
- // expected-note {{change size argument to be the size of the destination}} \
- // expected-warning {{'strlcpy' will always overflow; destination buffer has size 20, but size argument is 40}}
-
- strlcat(buf, b, sizeof(b)); // expected-warning {{size argument in 'strlcat' call appears to be size of the source; expected the size of the destination}} \
- // expected-note {{change size argument to be the size of the destination}}
-
- __builtin___strlcat_chk(buf, b, sizeof(b), __builtin_object_size(buf, 0)); // expected-warning {{size argument in '__builtin___strlcat_chk' call appears to be size of the source; expected the size of the destination}} \
- // expected-note {{change size argument to be the size of the destination}} \
- // expected-warning {{'strlcat' will always overflow; destination buffer has size 20, but size argument is 40}}
-}
-
// rdar://11076881
char * Test20(char *p, const char *in, unsigned n)
{
Index: llvm-toolchain-9_9.0.0/clang/test/Sema/warn-strlcpycat-size.c
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/test/Sema/warn-strlcpycat-size.c
+++ /dev/null
@@ -1,55 +0,0 @@
-// RUN: %clang_cc1 -Wstrlcpy-strlcat-size -verify -fsyntax-only %s
-
-typedef __SIZE_TYPE__ size_t;
-size_t strlcpy (char * restrict dst, const char * restrict src, size_t size);
-size_t strlcat (char * restrict dst, const char * restrict src, size_t size);
-size_t strlen (const char *s);
-
-char s1[100];
-char s2[200];
-char * s3;
-
-struct {
- char f1[100];
- char f2[100][3];
-} s4, **s5;
-
-int x;
-
-void f(void)
-{
- strlcpy(s1, s2, sizeof(s1)); // no warning
- strlcpy(s1, s2, sizeof(s2)); // expected-warning {{size argument in 'strlcpy' call appears to be size of the source; expected the size of the destination}} expected-note {{change size argument to be the size of the destination}}
- strlcpy(s1, s3, strlen(s3)+1); // expected-warning {{size argument in 'strlcpy' call appears to be size of the source; expected the size of the destination}} expected-note {{change size argument to be the size of the destination}}
- strlcat(s2, s3, sizeof(s3)); // expected-warning {{size argument in 'strlcat' call appears to be size of the source; expected the size of the destination}} expected-note {{change size argument to be the size of the destination}}
- strlcpy(s4.f1, s2, sizeof(s2)); // expected-warning {{size argument in 'strlcpy' call appears to be size of the source; expected the size of the destination}} expected-note {{change size argument to be the size of the destination}}
- strlcpy((*s5)->f2[x], s2, sizeof(s2)); // expected-warning {{size argument in 'strlcpy' call appears to be size of the source; expected the size of the destination}} expected-note {{change size argument to be the size of the destination}}
- strlcpy(s1+3, s2, sizeof(s2)); // expected-warning {{size argument in 'strlcpy' call appears to be size of the source; expected the size of the destination}}
-}
-
-// Don't issue FIXIT for flexible arrays.
-struct S {
- int y;
- char x[];
-};
-
-void flexible_arrays(struct S *s) {
- char str[] = "hi";
- strlcpy(s->x, str, sizeof(str)); // expected-warning {{size argument in 'strlcpy' call appears to be size of the source; expected the size of the destination}}
-}
-
-// Don't issue FIXIT for destinations of size 1.
-void size_1() {
- char z[1];
- char str[] = "hi";
-
- strlcpy(z, str, sizeof(str)); // expected-warning {{size argument in 'strlcpy' call appears to be size of the source; expected the size of the destination}}
-}
-
-// Support VLAs.
-void vlas(int size) {
- char z[size];
- char str[] = "hi";
-
- strlcpy(z, str, sizeof(str)); // expected-warning {{size argument in 'strlcpy' call appears to be size of the source; expected the size of the destination}} expected-note {{change size argument to be the size of the destination}}
-}

View File

@ -1,33 +0,0 @@
Description: set correct float abi settings for armel and armhf
debian armel supports systems that don't have a fpu so should use a "float abi"
setting of soft by default.
Debian armhf needs a float abi setting of "hard"
Author: Peter Michael Green <plugwash@debian.org>
---
The information above should follow the Patch Tagging Guidelines, please
checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
are templates for supplementary fields that you might want to add:
Origin: <vendor|upstream|other>, <url of original patch>
Bug: <url in upstream bugtracker>
Bug-Debian: http://bugs.debian.org/<bugnumber>
Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
Forwarded: <no|not-needed|url proving that it has been forwarded>
Reviewed-By: <name and email of someone who approved the patch>
Last-Update: <YYYY-MM-DD>
Index: llvm-toolchain-9_9.0.0/clang/lib/Driver/ToolChains/Arch/ARM.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/lib/Driver/ToolChains/Arch/ARM.cpp
+++ llvm-toolchain-9_9.0.0/clang/lib/Driver/ToolChains/Arch/ARM.cpp
@@ -249,7 +249,7 @@ arm::FloatABI arm::getARMFloatABI(const
case llvm::Triple::MuslEABI:
case llvm::Triple::EABI:
// EABI is always AAPCS, and if it was not marked 'hard', it's softfp
- ABI = FloatABI::SoftFP;
+ ABI = FloatABI::Soft;
break;
case llvm::Triple::Android:
ABI = (SubArch >= 7) ? FloatABI::SoftFP : FloatABI::Soft;

View File

@ -1,13 +0,0 @@
Index: llvm-toolchain-9_9.0.0/llvm/lib/Support/Triple.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/lib/Support/Triple.cpp
+++ llvm-toolchain-9_9.0.0/llvm/lib/Support/Triple.cpp
@@ -1646,7 +1646,7 @@ StringRef Triple::getARMCPUForArch(Strin
case llvm::Triple::EABIHF:
case llvm::Triple::GNUEABIHF:
case llvm::Triple::MuslEABIHF:
- return "arm1176jzf-s";
+ return "cortex-a7";
default:
return "arm7tdmi";
}

View File

@ -1,81 +0,0 @@
From 947f9692440836dcb8d88b74b69dd379d85974ce Mon Sep 17 00:00:00 2001
From: Evgenii Stepanov <eugenis@google.com>
Date: Mon, 25 Nov 2019 13:52:17 -0800
Subject: [PATCH] Fix sanitizer-common build with glibc 2.31
Summary:
As mentioned in D69104, glibc changed ABI recently with the [[ https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=2f959dfe849e0646e27403f2e4091536496ac0f0| 2f959dfe ]] change.
D69104 dealt with just 32-bit ARM, but that is just one of the many affected architectures.
E.g. x86_64, i?86, riscv64, sparc 32-bit, s390 31-bit are affected too (and various others).
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.
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
so all they care about is the size and alignment of the whole structure.
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.
This patch doesn't try to address that.
Patch by Jakub Jelinek.
Reviewers: kcc, eugenis, dvyukov
Reviewed By: eugenis
Subscribers: jyknight, kristof.beyls, fedor.sergeev, simoncook, PkmX, s.egerton, steven.zhang, #sanitizers, llvm-commits
Tags: #sanitizers, #llvm
Differential Revision: https://reviews.llvm.org/D70662
---
.../sanitizer_platform_limits_posix.cpp | 8 +++-----
.../sanitizer_platform_limits_posix.h | 15 +--------------
2 files changed, 4 insertions(+), 19 deletions(-)
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
index b4f8f67b664c..aa845df4dde4 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
@@ -1126,8 +1126,9 @@ CHECK_SIZE_AND_OFFSET(ipc_perm, uid);
CHECK_SIZE_AND_OFFSET(ipc_perm, gid);
CHECK_SIZE_AND_OFFSET(ipc_perm, cuid);
CHECK_SIZE_AND_OFFSET(ipc_perm, cgid);
-#if !defined(__aarch64__) || !SANITIZER_LINUX || __GLIBC_PREREQ (2, 21)
-/* On aarch64 glibc 2.20 and earlier provided incorrect mode field. */
+#if !SANITIZER_LINUX || __GLIBC_PREREQ (2, 31)
+/* glibc 2.30 and earlier provided 16-bit mode field instead of 32-bit
+ on many architectures. */
CHECK_SIZE_AND_OFFSET(ipc_perm, mode);
#endif
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
index 7789bc5887a4..5337b26b29b8 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
@@ -203,26 +203,13 @@ namespace __sanitizer {
u64 __unused1;
u64 __unused2;
#elif defined(__sparc__)
-#if defined(__arch64__)
unsigned mode;
- unsigned short __pad1;
-#else
- unsigned short __pad1;
- unsigned short mode;
unsigned short __pad2;
-#endif
unsigned short __seq;
unsigned long long __unused1;
unsigned long long __unused2;
-#elif defined(__mips__) || defined(__aarch64__) || defined(__s390x__)
- unsigned int mode;
- unsigned short __seq;
- unsigned short __pad1;
- unsigned long __unused1;
- unsigned long __unused2;
#else
- unsigned short mode;
- unsigned short __pad1;
+ unsigned int mode;
unsigned short __seq;
unsigned short __pad2;
#if defined(__x86_64__) && !defined(_LP64)

View File

@ -1,126 +0,0 @@
commit 41449c58c58e466bcf9cdc4f7415950382bad8d7
Author: Roger Ferrer Ibanez <roger.ferrer@bsc.es>
Date: Fri Nov 8 08:26:30 2019 +0000
[RISCV] Fix evaluation of %pcrel_lo
The following testcase
function:
.Lpcrel_label1:
auipc a0, %pcrel_hi(other_function)
addi a1, a0, %pcrel_lo(.Lpcrel_label1)
.p2align 2 # Causes a new fragment to be emitted
.type other_function,@function
other_function:
ret
exposes an odd behaviour in which only the %pcrel_hi relocation is
evaluated but not the %pcrel_lo.
$ llvm-mc -triple riscv64 -filetype obj t.s | llvm-objdump -d -r -
<stdin>: file format ELF64-riscv
Disassembly of section .text:
0000000000000000 function:
0: 17 05 00 00 auipc a0, 0
4: 93 05 05 00 mv a1, a0
0000000000000004: R_RISCV_PCREL_LO12_I other_function+4
0000000000000008 other_function:
8: 67 80 00 00 ret
The reason seems to be that in RISCVAsmBackend::shouldForceRelocation we
only consider the fragment but in RISCVMCExpr::evaluatePCRelLo we
consider the section. This usually works but there are cases where the
section may still be the same but the fragment may be another one. In
that case we end forcing a %pcrel_lo relocation without any %pcrel_hi.
This patch makes RISCVAsmBackend::shouldForceRelocation use the section,
if any, to determine if the relocation must be forced or not.
Differential Revision: https://reviews.llvm.org/D60657
diff --git a/llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.cpp b/llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.cpp
index f6b727ae37c..5881a0a86ef 100644
--- a/llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.cpp
+++ b/llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.cpp
@@ -64,11 +64,15 @@ bool RISCVAsmBackend::shouldForceRelocation(const MCAssembler &Asm,
case RISCV::fixup_riscv_tls_gd_hi20:
ShouldForce = true;
break;
- case RISCV::fixup_riscv_pcrel_hi20:
- ShouldForce = T->getValue()->findAssociatedFragment() !=
- Fixup.getValue()->findAssociatedFragment();
+ case RISCV::fixup_riscv_pcrel_hi20: {
+ MCFragment *TFragment = T->getValue()->findAssociatedFragment();
+ MCFragment *FixupFragment = Fixup.getValue()->findAssociatedFragment();
+ assert(FixupFragment && "We should have a fragment for this fixup");
+ ShouldForce =
+ !TFragment || TFragment->getParent() != FixupFragment->getParent();
break;
}
+ }
break;
}
diff --git a/llvm/test/MC/RISCV/pcrel-fixups.s b/llvm/test/MC/RISCV/pcrel-fixups.s
new file mode 100644
index 00000000000..1025988967a
--- /dev/null
+++ b/llvm/test/MC/RISCV/pcrel-fixups.s
@@ -0,0 +1,52 @@
+# RUN: llvm-mc -triple riscv32 -mattr=-relax -filetype obj %s \
+# RUN: | llvm-objdump -M no-aliases -d -r - \
+# RUN: | FileCheck --check-prefix NORELAX %s
+# RUN: llvm-mc -triple riscv32 -mattr=+relax -filetype obj %s \
+# RUN: | llvm-objdump -M no-aliases -d -r - \
+# RUN: | FileCheck --check-prefix RELAX %s
+# RUN: llvm-mc -triple riscv64 -mattr=-relax -filetype obj %s \
+# RUN: | llvm-objdump -M no-aliases -d -r - \
+# RUN: | FileCheck --check-prefix NORELAX %s
+# RUN: llvm-mc -triple riscv64 -mattr=+relax -filetype obj %s \
+# RUN: | llvm-objdump -M no-aliases -d -r - \
+# RUN: | FileCheck --check-prefix RELAX %s
+
+# Fixups for %pcrel_hi / %pcrel_lo can be evaluated within a section,
+# regardless of the fragment containing the target address.
+
+function:
+.Lpcrel_label1:
+ auipc a0, %pcrel_hi(other_function)
+ addi a1, a0, %pcrel_lo(.Lpcrel_label1)
+# NORELAX: auipc a0, 0
+# NORELAX-NOT: R_RISCV
+# NORELAX: addi a1, a0, 16
+# NORELAX-NOT: R_RISCV
+
+# RELAX: auipc a0, 0
+# RELAX: R_RISCV_PCREL_HI20 other_function
+# RELAX: R_RISCV_RELAX *ABS*
+# RELAX: addi a1, a0, 0
+# RELAX: R_RISCV_PCREL_LO12_I .Lpcrel_label1
+# RELAX: R_RISCV_RELAX *ABS*
+
+ .p2align 2 # Cause a new fragment be emitted here
+.Lpcrel_label2:
+ auipc a0, %pcrel_hi(other_function)
+ addi a1, a0, %pcrel_lo(.Lpcrel_label2)
+# NORELAX: auipc a0, 0
+# NORELAX-NOT: R_RISCV
+# NORELAX: addi a1, a0, 8
+# NORELAX-NOT: R_RISCV
+
+# RELAX: auipc a0, 0
+# RELAX: R_RISCV_PCREL_HI20 other_function
+# RELAX: R_RISCV_RELAX *ABS*
+# RELAX: addi a1, a0, 0
+# RELAX: R_RISCV_PCREL_LO12_I .Lpcrel_label2
+# RELAX: R_RISCV_RELAX *ABS*
+
+ .type other_function,@function
+other_function:
+ ret
+

View File

@ -1,38 +0,0 @@
Origin: https://reviews.llvm.org/D67877
Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=941082
Index: llvm-toolchain-9_9.0.0/clang/lib/Analysis/plugins/CMakeLists.txt
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/lib/Analysis/plugins/CMakeLists.txt
+++ llvm-toolchain-9_9.0.0/clang/lib/Analysis/plugins/CMakeLists.txt
@@ -1,4 +1,4 @@
-if(CLANG_ENABLE_STATIC_ANALYZER AND LLVM_ENABLE_PLUGINS)
+if(CLANG_ENABLE_STATIC_ANALYZER AND LLVM_ENABLE_PLUGINS AND CLANG_BUILD_EXAMPLES)
add_subdirectory(SampleAnalyzer)
add_subdirectory(CheckerDependencyHandling)
add_subdirectory(CheckerOptionHandling)
Index: llvm-toolchain-9_9.0.0/clang/test/CMakeLists.txt
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/test/CMakeLists.txt
+++ llvm-toolchain-9_9.0.0/clang/test/CMakeLists.txt
@@ -123,14 +123,12 @@ if( NOT CLANG_BUILT_STANDALONE )
endif()
endif()
-if (CLANG_ENABLE_STATIC_ANALYZER)
- if (LLVM_ENABLE_PLUGINS)
- list(APPEND CLANG_TEST_DEPS
- SampleAnalyzerPlugin
- CheckerDependencyHandlingAnalyzerPlugin
- CheckerOptionHandlingAnalyzerPlugin
- )
- endif()
+if (CLANG_ENABLE_STATIC_ANALYZER AND CLANG_BUILD_EXAMPLES AND LLVM_ENABLE_PLUGINS)
+ list(APPEND CLANG_TEST_DEPS
+ SampleAnalyzerPlugin
+ CheckerDependencyHandlingAnalyzerPlugin
+ CheckerOptionHandlingAnalyzerPlugin
+ )
endif()
add_custom_target(clang-test-depends DEPENDS ${CLANG_TEST_DEPS})

File diff suppressed because it is too large Load Diff

View File

@ -1,189 +0,0 @@
From 616289ed29225c0ddfe5699c7fdf42a0fcbe0ab4 Mon Sep 17 00:00:00 2001
From: Jessica Clarke <jrtc27@jrtc27.com>
Date: Wed, 1 Apr 2020 15:50:47 +0100
Subject: [PATCH] [LegalizeTypes][RISCV] Correctly sign-extend comparison for
ATOMIC_CMP_XCHG
Summary:
Currently, the comparison argument used for ATOMIC_CMP_XCHG is legalised
with GetPromotedInteger, which leaves the upper bits of the value
undefind. Since this is used for comparing in an LR/SC loop with a
full-width comparison, we must sign extend it. We introduce a new
getExtendForAtomicCmpSwapArg to complement getExtendForAtomicOps, since
many targets have compare-and-swap instructions (or pseudos) that
correctly handle an any-extend input, and the existing function
determines the extension of the result, whereas we are concerned with
the input.
This is related to https://reviews.llvm.org/D58829, which solved the
issue for ATOMIC_CMP_SWAP_WITH_SUCCESS, but not the simpler
ATOMIC_CMP_SWAP.
Reviewers: asb, lenary, efriedma
Reviewed By: asb
Subscribers: arichardson, hiraditya, rbar, johnrusso, simoncook, sabuasal, niosHD, kito-cheng, shiva0217, MaskRay, zzheng, edward-jones, rogfer01, MartinMosbeck, brucehoult, the_o, rkruppe, jfb, PkmX, jocewei, psnobl, benna, Jim, s.egerton, pzheng, sameer.abuasal, apazos, luismarques, evandro, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D74453
---
llvm/include/llvm/CodeGen/TargetLowering.h | 12 ++++++++++++
.../SelectionDAG/LegalizeIntegerTypes.cpp | 18 +++++++++++++++++-
llvm/lib/Target/RISCV/RISCVISelLowering.h | 4 ++++
llvm/test/CodeGen/RISCV/atomic-cmpxchg.ll | 10 ++++++++++
4 files changed, 43 insertions(+), 1 deletion(-)
diff --git a/llvm/include/llvm/CodeGen/TargetLowering.h b/llvm/include/llvm/CodeGen/TargetLowering.h
index fefa8daa60a1..99601c436651 100644
--- a/llvm/include/llvm/CodeGen/TargetLowering.h
+++ b/llvm/include/llvm/CodeGen/TargetLowering.h
@@ -1962,6 +1962,18 @@ class TargetLoweringBase {
return ISD::ZERO_EXTEND;
}
+ /// Returns how the platform's atomic compare and swap expects its comparison
+ /// value to be extended (ZERO_EXTEND, SIGN_EXTEND, or ANY_EXTEND). This is
+ /// separate from getExtendForAtomicOps, which is concerned with the
+ /// sign-extension of the instruction's output, whereas here we are concerned
+ /// with the sign-extension of the input. For targets with compare-and-swap
+ /// instructions (or sub-word comparisons in their LL/SC loop expansions),
+ /// the input can be ANY_EXTEND, but the output will still have a specific
+ /// extension.
+ virtual ISD::NodeType getExtendForAtomicCmpSwapArg() const {
+ return ISD::ANY_EXTEND;
+ }
+
/// @}
/// Returns true if we should normalize
diff --git a/llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp b/llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
index 0248b5121e3f..ed67f7dc8ea3 100644
--- a/llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
@@ -278,8 +278,24 @@ SDValue DAGTypeLegalizer::PromoteIntRes_AtomicCmpSwap(AtomicSDNode *N,
return Res.getValue(1);
}
- SDValue Op2 = GetPromotedInteger(N->getOperand(2));
+ // Op2 is used for the comparison and thus must be extended according to the
+ // target's atomic operations. Op3 is merely stored and so can be left alone.
+ SDValue Op2 = N->getOperand(2);
SDValue Op3 = GetPromotedInteger(N->getOperand(3));
+ switch (TLI.getExtendForAtomicCmpSwapArg()) {
+ case ISD::SIGN_EXTEND:
+ Op2 = SExtPromotedInteger(Op2);
+ break;
+ case ISD::ZERO_EXTEND:
+ Op2 = ZExtPromotedInteger(Op2);
+ break;
+ case ISD::ANY_EXTEND:
+ Op2 = GetPromotedInteger(Op2);
+ break;
+ default:
+ llvm_unreachable("Invalid atomic op extension");
+ }
+
SDVTList VTs =
DAG.getVTList(Op2.getValueType(), N->getValueType(1), MVT::Other);
SDValue Res = DAG.getAtomicCmpSwap(
diff --git a/llvm/lib/Target/RISCV/RISCVISelLowering.h b/llvm/lib/Target/RISCV/RISCVISelLowering.h
index 929169dd62d9..f76abf22e4db 100644
--- a/llvm/lib/Target/RISCV/RISCVISelLowering.h
+++ b/llvm/lib/Target/RISCV/RISCVISelLowering.h
@@ -129,6 +129,10 @@ class RISCVTargetLowering : public TargetLowering {
return ISD::SIGN_EXTEND;
}
+ ISD::NodeType getExtendForAtomicCmpSwapArg() const override {
+ return ISD::SIGN_EXTEND;
+ }
+
bool shouldExpandShift(SelectionDAG &DAG, SDNode *N) const override {
if (DAG.getMachineFunction().getFunction().hasMinSize())
return false;
diff --git a/llvm/test/CodeGen/RISCV/atomic-cmpxchg.ll b/llvm/test/CodeGen/RISCV/atomic-cmpxchg.ll
index 43da05ebe7c7..f2691ba1a771 100644
--- a/llvm/test/CodeGen/RISCV/atomic-cmpxchg.ll
+++ b/llvm/test/CodeGen/RISCV/atomic-cmpxchg.ll
@@ -1628,6 +1628,7 @@ define void @cmpxchg_i32_monotonic_monotonic(i32* %ptr, i32 %cmp, i32 %val) noun
;
; RV64IA-LABEL: cmpxchg_i32_monotonic_monotonic:
; RV64IA: # %bb.0:
+; RV64IA-NEXT: sext.w a1, a1
; RV64IA-NEXT: .LBB20_1: # =>This Inner Loop Header: Depth=1
; RV64IA-NEXT: lr.w a3, (a0)
; RV64IA-NEXT: bne a3, a1, .LBB20_3
@@ -1680,6 +1681,7 @@ define void @cmpxchg_i32_acquire_monotonic(i32* %ptr, i32 %cmp, i32 %val) nounwi
;
; RV64IA-LABEL: cmpxchg_i32_acquire_monotonic:
; RV64IA: # %bb.0:
+; RV64IA-NEXT: sext.w a1, a1
; RV64IA-NEXT: .LBB21_1: # =>This Inner Loop Header: Depth=1
; RV64IA-NEXT: lr.w.aq a3, (a0)
; RV64IA-NEXT: bne a3, a1, .LBB21_3
@@ -1732,6 +1734,7 @@ define void @cmpxchg_i32_acquire_acquire(i32* %ptr, i32 %cmp, i32 %val) nounwind
;
; RV64IA-LABEL: cmpxchg_i32_acquire_acquire:
; RV64IA: # %bb.0:
+; RV64IA-NEXT: sext.w a1, a1
; RV64IA-NEXT: .LBB22_1: # =>This Inner Loop Header: Depth=1
; RV64IA-NEXT: lr.w.aq a3, (a0)
; RV64IA-NEXT: bne a3, a1, .LBB22_3
@@ -1784,6 +1787,7 @@ define void @cmpxchg_i32_release_monotonic(i32* %ptr, i32 %cmp, i32 %val) nounwi
;
; RV64IA-LABEL: cmpxchg_i32_release_monotonic:
; RV64IA: # %bb.0:
+; RV64IA-NEXT: sext.w a1, a1
; RV64IA-NEXT: .LBB23_1: # =>This Inner Loop Header: Depth=1
; RV64IA-NEXT: lr.w a3, (a0)
; RV64IA-NEXT: bne a3, a1, .LBB23_3
@@ -1836,6 +1840,7 @@ define void @cmpxchg_i32_release_acquire(i32* %ptr, i32 %cmp, i32 %val) nounwind
;
; RV64IA-LABEL: cmpxchg_i32_release_acquire:
; RV64IA: # %bb.0:
+; RV64IA-NEXT: sext.w a1, a1
; RV64IA-NEXT: .LBB24_1: # =>This Inner Loop Header: Depth=1
; RV64IA-NEXT: lr.w a3, (a0)
; RV64IA-NEXT: bne a3, a1, .LBB24_3
@@ -1888,6 +1893,7 @@ define void @cmpxchg_i32_acq_rel_monotonic(i32* %ptr, i32 %cmp, i32 %val) nounwi
;
; RV64IA-LABEL: cmpxchg_i32_acq_rel_monotonic:
; RV64IA: # %bb.0:
+; RV64IA-NEXT: sext.w a1, a1
; RV64IA-NEXT: .LBB25_1: # =>This Inner Loop Header: Depth=1
; RV64IA-NEXT: lr.w.aq a3, (a0)
; RV64IA-NEXT: bne a3, a1, .LBB25_3
@@ -1940,6 +1946,7 @@ define void @cmpxchg_i32_acq_rel_acquire(i32* %ptr, i32 %cmp, i32 %val) nounwind
;
; RV64IA-LABEL: cmpxchg_i32_acq_rel_acquire:
; RV64IA: # %bb.0:
+; RV64IA-NEXT: sext.w a1, a1
; RV64IA-NEXT: .LBB26_1: # =>This Inner Loop Header: Depth=1
; RV64IA-NEXT: lr.w.aq a3, (a0)
; RV64IA-NEXT: bne a3, a1, .LBB26_3
@@ -1992,6 +1999,7 @@ define void @cmpxchg_i32_seq_cst_monotonic(i32* %ptr, i32 %cmp, i32 %val) nounwi
;
; RV64IA-LABEL: cmpxchg_i32_seq_cst_monotonic:
; RV64IA: # %bb.0:
+; RV64IA-NEXT: sext.w a1, a1
; RV64IA-NEXT: .LBB27_1: # =>This Inner Loop Header: Depth=1
; RV64IA-NEXT: lr.w.aqrl a3, (a0)
; RV64IA-NEXT: bne a3, a1, .LBB27_3
@@ -2044,6 +2052,7 @@ define void @cmpxchg_i32_seq_cst_acquire(i32* %ptr, i32 %cmp, i32 %val) nounwind
;
; RV64IA-LABEL: cmpxchg_i32_seq_cst_acquire:
; RV64IA: # %bb.0:
+; RV64IA-NEXT: sext.w a1, a1
; RV64IA-NEXT: .LBB28_1: # =>This Inner Loop Header: Depth=1
; RV64IA-NEXT: lr.w.aqrl a3, (a0)
; RV64IA-NEXT: bne a3, a1, .LBB28_3
@@ -2096,6 +2105,7 @@ define void @cmpxchg_i32_seq_cst_seq_cst(i32* %ptr, i32 %cmp, i32 %val) nounwind
;
; RV64IA-LABEL: cmpxchg_i32_seq_cst_seq_cst:
; RV64IA: # %bb.0:
+; RV64IA-NEXT: sext.w a1, a1
; RV64IA-NEXT: .LBB29_1: # =>This Inner Loop Header: Depth=1
; RV64IA-NEXT: lr.w.aqrl a3, (a0)
; RV64IA-NEXT: bne a3, a1, .LBB29_3

View File

@ -1,25 +0,0 @@
---
clang/lib/Basic/Targets.cpp | 14 ++++++++++++++
clang/test/CodeGen/linux-arm-atomic.c | 10 ++++++++++
2 files changed, 24 insertions(+)
Index: llvm-toolchain-9_9.0.0/clang/test/CodeGen/linux-arm-atomic.c
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/test/CodeGen/linux-arm-atomic.c
+++ llvm-toolchain-9_9.0.0/clang/test/CodeGen/linux-arm-atomic.c
@@ -1,5 +1,15 @@
// RUN: %clang_cc1 %s -emit-llvm -o - -triple=armv7-unknown-linux | FileCheck %s
// RUN: %clang_cc1 %s -emit-llvm -o - -triple=armv6-unknown-linux | FileCheck %s
+
+typedef int _Atomic_word;
+_Atomic_word exchange_and_add(volatile _Atomic_word *__mem, int __val) {
+ return __atomic_fetch_add(__mem, __val, __ATOMIC_ACQ_REL);
+}
+
+// CHECK: define {{.*}} @exchange_and_add
+// CHECK: atomicrmw {{.*}} add
+// RUN: %clang_cc1 %s -emit-llvm -o - -triple=armv7-unknown-linux | FileCheck %s
+// RUN: %clang_cc1 %s -emit-llvm -o - -triple=armv6-unknown-linux | FileCheck %s
// RUN: %clang_cc1 %s -emit-llvm -o - -triple=thumbv7-unknown-linux | FileCheck %s
// RUN: %clang_cc1 %s -emit-llvm -o - -triple=armv6-unknown-freebsd | FileCheck %s

View File

@ -1,41 +0,0 @@
When doing a bootstrap, we use a newly built clang.
When this one is used, if already installed on the system,
we have clang header in two places:
llvm-toolchain-7-7/build-llvm/lib/clang/7.0.0/include/inttypes.h
and
/usr/include/clang/7.0.0/include/inttypes.h
Because clang expects only one of his headers to be available, it uses
include_next to get the glibc (libc6-dev package) header.
However, in the previous example, because we have inttypes.h twice in the
include search path, clang's header will call itself without any effect.
Therefore, it will do include_next until the define from the libc is existing (ex: _INTTYPES_H)
Index: llvm-toolchain-9_9.0.0/clang/lib/Headers/inttypes.h
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/lib/Headers/inttypes.h
+++ llvm-toolchain-9_9.0.0/clang/lib/Headers/inttypes.h
@@ -6,7 +6,7 @@
*
\*===----------------------------------------------------------------------===*/
-#ifndef __CLANG_INTTYPES_H
+#if !defined(__CLANG_INTTYPES_H) || !defined(_INTTYPES_H)
// AIX system headers need inttypes.h to be re-enterable while _STD_TYPES_T
// is defined until an inclusion of it without _STD_TYPES_T occurs, in which
// case the header guard macro is defined.
Index: llvm-toolchain-9_9.0.0/clang/lib/Headers/limits.h
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/lib/Headers/limits.h
+++ llvm-toolchain-9_9.0.0/clang/lib/Headers/limits.h
@@ -6,7 +6,7 @@
*
\*===----------------------------------------------------------------------===*/
-#ifndef __CLANG_LIMITS_H
+#if !defined(__CLANG_LIMITS_H) || !defined(_LIBC_LIMITS_H_)
#define __CLANG_LIMITS_H
/* The system's limits.h may, in turn, try to #include_next GCC's limits.h.

View File

@ -1,25 +0,0 @@
# Force the version of clang in the analyzer
# This was causing the static analyzer to fail silently if the clang & clang++ are
# not installed
Index: llvm-toolchain-9_9.0.0/clang/tools/scan-build/libexec/ccc-analyzer
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/tools/scan-build/libexec/ccc-analyzer
+++ llvm-toolchain-9_9.0.0/clang/tools/scan-build/libexec/ccc-analyzer
@@ -90,7 +90,7 @@ if ($FindBin::Script =~ /c\+\+-analyzer/
if (!defined $Compiler || (! -x $Compiler && ! SearchInPath($Compiler))) { $Compiler = $DefaultCXXCompiler; }
$Clang = $ENV{'CLANG_CXX'};
- if (!defined $Clang || ! -x $Clang) { $Clang = 'clang++'; }
+ if (!defined $Clang || ! -x $Clang) { $Clang = 'clang++-9'; }
$IsCXX = 1
}
@@ -99,7 +99,7 @@ else {
if (!defined $Compiler || (! -x $Compiler && ! SearchInPath($Compiler))) { $Compiler = $DefaultCCompiler; }
$Clang = $ENV{'CLANG'};
- if (!defined $Clang || ! -x $Clang) { $Clang = 'clang'; }
+ if (!defined $Clang || ! -x $Clang) { $Clang = 'clang-9'; }
$IsCXX = 0
}

View File

@ -1,27 +0,0 @@
Index: llvm-toolchain-9_9.0.0/llvm/include/llvm/Support/ARMTargetParser.def
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/include/llvm/Support/ARMTargetParser.def
+++ llvm-toolchain-9_9.0.0/llvm/include/llvm/Support/ARMTargetParser.def
@@ -76,7 +76,7 @@ ARM_ARCH("armv6kz", ARMV6KZ, "6KZ", "v6k
ARM_ARCH("armv6-m", ARMV6M, "6-M", "v6m", ARMBuildAttrs::CPUArch::v6_M,
FK_NONE, ARM::AEK_NONE)
ARM_ARCH("armv7-a", ARMV7A, "7-A", "v7", ARMBuildAttrs::CPUArch::v7,
- FK_NEON, ARM::AEK_DSP)
+ FK_VFPV3_D16 /* Hard float */, ARM::AEK_DSP)
ARM_ARCH("armv7ve", ARMV7VE, "7VE", "v7ve", ARMBuildAttrs::CPUArch::v7,
FK_NEON, (ARM::AEK_SEC | ARM::AEK_MP | ARM::AEK_VIRT |
ARM::AEK_HWDIVARM | ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP))
Index: llvm-toolchain-9_9.0.0/llvm/lib/Target/ARM/ARM.td
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/lib/Target/ARM/ARM.td
+++ llvm-toolchain-9_9.0.0/llvm/lib/Target/ARM/ARM.td
@@ -654,7 +654,8 @@ def ARMv6sm : Architecture<"armv6s-m",
FeatureStrictAlign]>;
def ARMv7a : Architecture<"armv7-a", "ARMv7a", [HasV7Ops,
- FeatureNEON,
+ FeatureVFP3,
+ FeatureVFP3_D16,
FeatureDB,
FeatureDSP,
FeatureAClass]>;

View File

@ -1,15 +0,0 @@
Index: llvm-toolchain-9_9.0.0/clang/lib/Driver/ToolChains/Arch/X86.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/lib/Driver/ToolChains/Arch/X86.cpp
+++ llvm-toolchain-9_9.0.0/clang/lib/Driver/ToolChains/Arch/X86.cpp
@@ -100,8 +100,8 @@ const char *x86::getX86TargetCPU(const A
case llvm::Triple::Haiku:
return "i586";
default:
- // Fallback to p4.
- return "pentium4";
+ // Fallback to i686.
+ return "i686";
}
}

View File

@ -1,45 +0,0 @@
---
clang/tools/clang-format/clang-format-diff.py | 2 +-
clang/tools/clang-format/clang-format.el | 2 +-
clang/tools/clang-format/clang-format.py | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
Index: llvm-toolchain-9_9.0.0/clang/tools/clang-format/clang-format-diff.py
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/tools/clang-format/clang-format-diff.py
+++ llvm-toolchain-9_9.0.0/clang/tools/clang-format/clang-format-diff.py
@@ -58,7 +58,7 @@ def main():
parser.add_argument('-style',
help='formatting style to apply (LLVM, Google, Chromium, '
'Mozilla, WebKit)')
- parser.add_argument('-binary', default='clang-format',
+ parser.add_argument('-binary', default='clang-format-9',
help='location of binary to use for clang-format')
args = parser.parse_args()
Index: llvm-toolchain-9_9.0.0/clang/tools/clang-format/clang-format.el
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/tools/clang-format/clang-format.el
+++ llvm-toolchain-9_9.0.0/clang/tools/clang-format/clang-format.el
@@ -36,7 +36,7 @@
:group 'tools)
(defcustom clang-format-executable
- (or (executable-find "clang-format")
+ (or (executable-find "clang-format-9")
"clang-format")
"Location of the clang-format executable.
Index: llvm-toolchain-9_9.0.0/clang/tools/clang-format/clang-format.py
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/tools/clang-format/clang-format.py
+++ llvm-toolchain-9_9.0.0/clang/tools/clang-format/clang-format.py
@@ -36,7 +36,7 @@ import vim
# set g:clang_format_path to the path to clang-format if it is not on the path
# Change this to the full path if clang-format is not on the path.
-binary = 'clang-format'
+binary = 'clang-format-9'
if vim.eval('exists("g:clang_format_path")') == "1":
binary = vim.eval('g:clang_format_path')

View File

@ -1,34 +0,0 @@
Index: llvm-toolchain-9_9.0.0/clang/lib/Driver/ToolChains/Linux.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/lib/Driver/ToolChains/Linux.cpp
+++ llvm-toolchain-9_9.0.0/clang/lib/Driver/ToolChains/Linux.cpp
@@ -151,6 +151,10 @@ static std::string getMultiarchTriple(co
if (D.getVFS().exists(SysRoot + "/lib/powerpc64le-linux-gnu"))
return "powerpc64le-linux-gnu";
break;
+ case llvm::Triple::riscv64:
+ if (D.getVFS().exists(SysRoot + "/lib/riscv64-linux-gnu"))
+ return "riscv64-linux-gnu";
+ break;
case llvm::Triple::sparc:
if (D.getVFS().exists(SysRoot + "/lib/sparc-linux-gnu"))
return "sparc-linux-gnu";
@@ -759,6 +763,8 @@ void Linux::AddClangSystemIncludeArgs(co
"/usr/include/powerpc64-linux-gnu"};
const StringRef PPC64LEMultiarchIncludeDirs[] = {
"/usr/include/powerpc64le-linux-gnu"};
+ const StringRef RISCV64MultiarchIncludeDirs[] = {
+ "/usr/include/riscv64-linux-gnu"};
const StringRef SparcMultiarchIncludeDirs[] = {
"/usr/include/sparc-linux-gnu"};
const StringRef Sparc64MultiarchIncludeDirs[] = {
@@ -834,6 +840,9 @@ void Linux::AddClangSystemIncludeArgs(co
case llvm::Triple::ppc64le:
MultiarchIncludeDirs = PPC64LEMultiarchIncludeDirs;
break;
+ case llvm::Triple::riscv64:
+ MultiarchIncludeDirs = RISCV64MultiarchIncludeDirs;
+ break;
case llvm::Triple::sparc:
MultiarchIncludeDirs = SparcMultiarchIncludeDirs;
break;

View File

@ -1,38 +0,0 @@
Index: llvm-toolchain-9_9.0.0/clang/lib/Driver/ToolChains/Arch/RISCV.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/lib/Driver/ToolChains/Arch/RISCV.cpp
+++ llvm-toolchain-9_9.0.0/clang/lib/Driver/ToolChains/Arch/RISCV.cpp
@@ -350,6 +350,13 @@ void riscv::getRISCVTargetFeatures(const
// Handle all other types of extensions.
getExtensionFeatures(D, Args, Features, MArch, OtherExts);
+ } else {
+ // Default to imafdc aka gc
+ Features.push_back("+m");
+ Features.push_back("+a");
+ Features.push_back("+f");
+ Features.push_back("+d");
+ Features.push_back("+c");
}
// -mrelax is default, unless -mno-relax is specified.
@@ -375,5 +382,5 @@ StringRef riscv::getRISCVABI(const ArgLi
if (Arg *A = Args.getLastArg(options::OPT_mabi_EQ))
return A->getValue();
- return Triple.getArch() == llvm::Triple::riscv32 ? "ilp32" : "lp64";
+ return Triple.getArch() == llvm::Triple::riscv32 ? "ilp32" : "lp64d";
}
Index: llvm-toolchain-9_9.0.0/clang/lib/Driver/ToolChains/Clang.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/lib/Driver/ToolChains/Clang.cpp
+++ llvm-toolchain-9_9.0.0/clang/lib/Driver/ToolChains/Clang.cpp
@@ -1862,7 +1862,7 @@ void Clang::AddRISCVTargetArgs(const Arg
else if (Triple.getArch() == llvm::Triple::riscv32)
ABIName = "ilp32";
else if (Triple.getArch() == llvm::Triple::riscv64)
- ABIName = "lp64";
+ ABIName = "lp64d";
else
llvm_unreachable("Unexpected triple!");

View File

@ -1,17 +0,0 @@
Index: llvm-toolchain-9_9.0.0/clang-tools-extra/clang-tidy/tool/run-clang-tidy.py
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang-tools-extra/clang-tidy/tool/run-clang-tidy.py
+++ llvm-toolchain-9_9.0.0/clang-tools-extra/clang-tidy/tool/run-clang-tidy.py
@@ -180,10 +180,10 @@ def main():
'clang-tidy and clang-apply-replacements in '
'$PATH.')
parser.add_argument('-clang-tidy-binary', metavar='PATH',
- default='clang-tidy',
+ default='clang-tidy-9',
help='path to clang-tidy binary')
parser.add_argument('-clang-apply-replacements-binary', metavar='PATH',
- default='clang-apply-replacements',
+ default='clang-apply-replacements-9',
help='path to clang-apply-replacements binary')
parser.add_argument('-checks', default=None,
help='checks filter, when not specified, use clang-tidy '

View File

@ -1,16 +0,0 @@
Index: llvm-toolchain-9_9.0.0/clang-tools-extra/clangd/CMakeLists.txt
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang-tools-extra/clangd/CMakeLists.txt
+++ llvm-toolchain-9_9.0.0/clang-tools-extra/clangd/CMakeLists.txt
@@ -34,6 +34,11 @@ if(NOT HAVE_CXX_ATOMICS64_WITHOUT_LIB)
list(APPEND CLANGD_ATOMIC_LIB "atomic")
endif()
+if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "i386" OR
+ CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "i686")
+ list(APPEND CLANGD_ATOMIC_LIB "atomic")
+endif()
+
add_clang_library(clangDaemon
AST.cpp
Cancellation.cpp

View File

@ -1,15 +0,0 @@
Index: llvm-toolchain-9_9.0.0/llvm/lib/ExecutionEngine/PerfJITEvents/PerfJITEventListener.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/lib/ExecutionEngine/PerfJITEvents/PerfJITEventListener.cpp
+++ llvm-toolchain-9_9.0.0/llvm/lib/ExecutionEngine/PerfJITEvents/PerfJITEventListener.cpp
@@ -300,8 +300,8 @@ bool PerfJITEventListener::InitDebugging
// search for location to dump data to
if (const char *BaseDir = getenv("JITDUMPDIR"))
Path.append(BaseDir);
- else if (!sys::path::home_directory(Path))
- Path = ".";
+ else
+ sys::path::system_temp_directory(/*ErasedOnReboot*/ true, Path);
// create debug directory
Path += "/.debug/jit/";

View File

@ -1,17 +0,0 @@
---
llvm/lib/Support/Unix/Memory.inc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: llvm-toolchain-9_9.0.0/llvm/lib/Support/Unix/Memory.inc
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/lib/Support/Unix/Memory.inc
+++ llvm-toolchain-9_9.0.0/llvm/lib/Support/Unix/Memory.inc
@@ -256,7 +256,7 @@ void Memory::InvalidateInstructionCache(
// FIXME: Can we safely always call this for __GNUC__ everywhere?
const char *Start = static_cast<const char *>(Addr);
const char *End = Start + Len;
- __clear_cache(const_cast<char *>(Start), const_cast<char *>(End));
+ __builtin___clear_cache(const_cast<char *>(Start), const_cast<char *>(End));
# endif
#endif // end apple

View File

@ -1,17 +0,0 @@
Index: llvm-toolchain-9_9.0.0/lldb/third_party/Python/module/unittest2/unittest2/runner.py
===================================================================
--- llvm-toolchain-9_9.0.0.orig/lldb/third_party/Python/module/unittest2/unittest2/runner.py
+++ llvm-toolchain-9_9.0.0/lldb/third_party/Python/module/unittest2/unittest2/runner.py
@@ -174,9 +174,9 @@ class TextTestRunner(unittest.TextTestRu
if hasattr(result, 'separator2'):
self.stream.writeln(result.separator2)
run = result.testsRun
- self.stream.writeln("Ran %d test%s in %.3fs" %
- (run, run != 1 and "s" or "", timeTaken))
- self.stream.writeln()
+# self.stream.writeln("Ran %d test%s in %.3fs" %
+# (run, run != 1 and "s" or "", timeTaken))
+# self.stream.writeln()
expectedFails = unexpectedSuccesses = skipped = passed = failed = errored = 0
try:

View File

@ -1,13 +0,0 @@
Index: llvm-toolchain-9_9.0.0/compiler-rt/lib/xray/xray_tsc.h
===================================================================
--- llvm-toolchain-9_9.0.0.orig/compiler-rt/lib/xray/xray_tsc.h
+++ llvm-toolchain-9_9.0.0/compiler-rt/lib/xray/xray_tsc.h
@@ -82,8 +82,6 @@ inline uint64_t getTSCFrequency() XRAY_N
} // namespace __xray
-#else
-#error Target architecture is not supported.
#endif // CPU architecture
#endif // SANITIZER_FUCHSIA

View File

@ -1,43 +0,0 @@
Index: llvm-toolchain-9-9.0.0/compiler-rt/lib/CMakeLists.txt
===================================================================
--- llvm-toolchain-9-9.0.0.orig/compiler-rt/lib/CMakeLists.txt
+++ llvm-toolchain-9-9.0.0/compiler-rt/lib/CMakeLists.txt
@@ -57,5 +57,8 @@ if(COMPILER_RT_BUILD_XRAY)
endif()
if(COMPILER_RT_BUILD_LIBFUZZER)
- compiler_rt_build_runtime(fuzzer)
+ if(NOT CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "i386" AND
+ NOT CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "i686")
+ compiler_rt_build_runtime(fuzzer)
+ endif()
endif()
Index: llvm-toolchain-9-9.0.0/clang/runtime/CMakeLists.txt
===================================================================
--- llvm-toolchain-9-9.0.0.orig/clang/runtime/CMakeLists.txt
+++ llvm-toolchain-9-9.0.0/clang/runtime/CMakeLists.txt
@@ -130,7 +130,7 @@ if(LLVM_BUILD_EXTERNAL_COMPILER_RT AND E
FileCheck count not llvm-nm llvm-objdump llvm-symbolizer)
# Add top-level targets for various compiler-rt test suites.
- set(COMPILER_RT_TEST_SUITES check-fuzzer check-asan check-hwasan check-asan-dynamic check-dfsan
+ set(COMPILER_RT_TEST_SUITES check-asan check-hwasan check-asan-dynamic check-dfsan
check-lsan check-msan check-sanitizer check-tsan check-ubsan check-ubsan-minimal
check-profile check-cfi check-cfi-and-supported check-safestack check-gwp_asan)
foreach(test_suite ${COMPILER_RT_TEST_SUITES})
Index: llvm-toolchain-9-9.0.0/compiler-rt/test/CMakeLists.txt
===================================================================
--- llvm-toolchain-9-9.0.0.orig/compiler-rt/test/CMakeLists.txt
+++ llvm-toolchain-9-9.0.0/compiler-rt/test/CMakeLists.txt
@@ -57,7 +57,10 @@ if(COMPILER_RT_CAN_EXECUTE_TESTS)
# OpenBSD not supporting asan, cannot run the tests
if(COMPILER_RT_BUILD_LIBFUZZER AND NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "OpenBSD" AND NOT ANDROID)
- compiler_rt_test_runtime(fuzzer)
+ if(NOT CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "i386" AND
+ NOT CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "i686")
+ compiler_rt_test_runtime(fuzzer)
+ endif()
endif()
foreach(sanitizer ${COMPILER_RT_SANITIZERS_TO_BUILD})

View File

@ -1,10 +0,0 @@
Index: llvm-toolchain-9_9.0.0/lldb/utils/lit-cpuid/CMakeLists.txt
===================================================================
--- llvm-toolchain-9_9.0.0.orig/lldb/utils/lit-cpuid/CMakeLists.txt
+++ llvm-toolchain-9_9.0.0/lldb/utils/lit-cpuid/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_llvm_utility(lit-cpuid
+add_lldb_executable(lit-cpuid
lit-cpuid.cpp
)

View File

@ -1,25 +0,0 @@
Description: Silent a test failing on yakkety amd64
/tmp/buildd/llvm-toolchain-snapshot-4.0~svn279801/test/tools/llvm-symbolizer/print_context.c:16:11: error: expected string not found in input
// CHECK: inc
^
<stdin>:1:1: note: scanning from here
_fini
^
<stdin>:1:3: note: possible intended match here
_fini
^
Author: Sylvestre <sylvestre@debian.org>
Last-Update: 2016-08-26
Index: llvm-toolchain-9_9.0.0/llvm/test/tools/llvm-symbolizer/print_context.c
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/tools/llvm-symbolizer/print_context.c
+++ llvm-toolchain-9_9.0.0/llvm/test/tools/llvm-symbolizer/print_context.c
@@ -18,6 +18,7 @@ int main() {
// Inputs/print_context.o built with plain -g -c from this source file
// Specifying -Xclang -fdebug-compilation-dir -Xclang . to make the debug info
// location independent.
+// XFAIL: *
// CHECK: inc
// CHECK: print_context.c:3

View File

@ -1,29 +0,0 @@
Index: llvm-toolchain-9_9.0.0/llvm/unittests/Support/Path.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/unittests/Support/Path.cpp
+++ llvm-toolchain-9_9.0.0/llvm/unittests/Support/Path.cpp
@@ -436,7 +436,7 @@ protected:
sys::path::append(NonExistantFile, "1B28B495C16344CB9822E588CD4C3EF0");
}
- void TearDown() override { ASSERT_NO_ERROR(fs::remove(TestDirectory.str())); }
+// void TearDown() override { ASSERT_NO_ERROR(fs::remove(TestDirectory.str())); }
};
TEST_F(FileSystemTest, Unique) {
@@ -518,13 +518,13 @@ TEST_F(FileSystemTest, RealPath) {
// This can fail if $HOME is not set and getpwuid fails.
bool Result = llvm::sys::path::home_directory(HomeDir);
- if (Result) {
+/* if (Result) {
ASSERT_NO_ERROR(fs::real_path(HomeDir, Expected));
ASSERT_NO_ERROR(fs::real_path("~", Actual, true));
EXPECT_EQ(Expected, Actual);
ASSERT_NO_ERROR(fs::real_path("~/", Actual, true));
EXPECT_EQ(Expected, Actual);
- }
+ }*/
ASSERT_NO_ERROR(fs::remove_directories(Twine(TestDirectory) + "/test1"));
}

View File

@ -1,13 +0,0 @@
Index: llvm-toolchain-9_9.0.0/clang/include/clang/Basic/X86Target.def
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/include/clang/Basic/X86Target.def
+++ llvm-toolchain-9_9.0.0/clang/include/clang/Basic/X86Target.def
@@ -307,7 +307,7 @@ CPU_SPECIFIC("pentium_mmx", 'D', "+mmx")
CPU_SPECIFIC("pentium_ii", 'E', "+cmov,+mmx")
CPU_SPECIFIC("pentium_iii", 'H', "+cmov,+mmx,+sse")
CPU_SPECIFIC_ALIAS("pentium_iii_no_xmm_regs", "pentium_iii")
-CPU_SPECIFIC("pentium_4", 'J', "+cmov,+mmx,+sse,+sse2")
+CPU_SPECIFIC("pentium_4", 'J', "+cmov,+mmx,+sse")
CPU_SPECIFIC("pentium_m", 'K', "+cmov,+mmx,+sse,+sse2")
CPU_SPECIFIC("pentium_4_sse3", 'L', "+cmov,+mmx,+sse,+sse2,+sse3")
CPU_SPECIFIC("core_2_duo_ssse3", 'M', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3")

View File

@ -1,13 +0,0 @@
Index: llvm-toolchain-9_9.0.0/llvm/utils/lit/lit/Test.py
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/utils/lit/lit/Test.py
+++ llvm-toolchain-9_9.0.0/llvm/utils/lit/lit/Test.py
@@ -32,7 +32,7 @@ PASS = ResultCode('PASS', False)
FLAKYPASS = ResultCode('FLAKYPASS', False)
XFAIL = ResultCode('XFAIL', False)
FAIL = ResultCode('FAIL', True)
-XPASS = ResultCode('XPASS', True)
+XPASS = ResultCode('XPASS', False)
UNRESOLVED = ResultCode('UNRESOLVED', True)
UNSUPPORTED = ResultCode('UNSUPPORTED', False)
TIMEOUT = ResultCode('TIMEOUT', True)

View File

@ -1,33 +0,0 @@
Index: llvm-toolchain-9_9~+20191120040145+0f34f1b9318/clang/lib/Driver/ToolChains/Linux.cpp
===================================================================
--- llvm-toolchain-9_9~+20191120040145+0f34f1b9318.orig/clang/lib/Driver/ToolChains/Linux.cpp
+++ llvm-toolchain-9_9~+20191120040145+0f34f1b9318/clang/lib/Driver/ToolChains/Linux.cpp
@@ -12,6 +12,7 @@
#include "Arch/PPC.h"
#include "Arch/RISCV.h"
#include "CommonArgs.h"
+#include "clang/Basic/Version.h"
#include "clang/Config/config.h"
#include "clang/Driver/Distro.h"
#include "clang/Driver/Driver.h"
@@ -661,8 +662,18 @@ void Linux::AddClangSystemIncludeArgs(co
SmallString<128> ResourceDirInclude(D.ResourceDir);
llvm::sys::path::append(ResourceDirInclude, "include");
if (!DriverArgs.hasArg(options::OPT_nobuiltininc) &&
- (!getTriple().isMusl() || DriverArgs.hasArg(options::OPT_nostdlibinc)))
- addSystemInclude(DriverArgs, CC1Args, ResourceDirInclude);
+ (!getTriple().isMusl() || DriverArgs.hasArg(options::OPT_nostdlibinc))) {
+ if (llvm::sys::fs::exists(ResourceDirInclude)) {
+ /* Include the build include directory only
+ * Otherwise, it fails with stage2 when clang headers are available on the system
+ * they usually fail because of the include_next. Two llvm/clang headers are found
+ * while we are waiting for the lib C++ (std or not)
+ */
+ addSystemInclude(DriverArgs, CC1Args, ResourceDirInclude);
+ } else {
+ addSystemInclude(DriverArgs, CC1Args, "/usr/include/clang/" + std::string(CLANG_VERSION_STRING) + "/include/");
+ }
+ }
if (DriverArgs.hasArg(options::OPT_nostdlibinc))
return;

View File

@ -1,20 +0,0 @@
---
llvm/tools/llvm-config/llvm-config.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Index: llvm-toolchain-9_9.0.0/llvm/tools/llvm-config/llvm-config.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/tools/llvm-config/llvm-config.cpp
+++ llvm-toolchain-9_9.0.0/llvm/tools/llvm-config/llvm-config.cpp
@@ -557,9 +557,9 @@ int main(int argc, char **argv) {
} else if (Arg == "--shared-mode") {
PrintSharedMode = true;
} else if (Arg == "--obj-root") {
- OS << ActivePrefix << '\n';
+ OS << ActivePrefix << "/build/" << '\n';
} else if (Arg == "--src-root") {
- OS << LLVM_SRC_ROOT << '\n';
+ OS << ActivePrefix << "/build/" << '\n';
} else if (Arg == "--ignore-libllvm") {
LinkDyLib = false;
LinkMode = BuiltSharedLibs ? LinkModeShared : LinkModeAuto;

View File

@ -1,21 +0,0 @@
Index: llvm-toolchain-9_9.0.0/clang/tools/scan-view/bin/scan-view
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/tools/scan-view/bin/scan-view
+++ llvm-toolchain-9_9.0.0/clang/tools/scan-view/bin/scan-view
@@ -28,6 +28,7 @@ kDefaultPort = 8181
kMaxPortsToTry = 100
###
+BASE_DIR = '/usr/share/clang/scan-view-9'
def url_is_up(url):
@@ -65,7 +66,7 @@ def start_browser(port, options):
def run(port, options, root):
# Prefer to look relative to the installed binary
- share = os.path.dirname(__file__) + "/../share/"
+ share = os.path.join(BASE_DIR, 'share')
if not os.path.isdir(share):
# Otherwise look relative to the source
share = os.path.dirname(__file__) + "/../../scan-view/share"

View File

@ -1,291 +0,0 @@
hurd: find c++ headers
This should be factorized with Linux.cpp and the GNU/kFreeBSD case.
Index: llvm-toolchain-9-9.0.0/clang/lib/Driver/ToolChains/Hurd.cpp
===================================================================
--- llvm-toolchain-9-9.0.0.orig/clang/lib/Driver/ToolChains/Hurd.cpp
+++ llvm-toolchain-9-9.0.0/clang/lib/Driver/ToolChains/Hurd.cpp
@@ -61,17 +61,107 @@ static StringRef getOSLibDir(const llvm:
return Triple.isArch32Bit() ? "lib" : "lib64";
}
+static void addMultilibsFilePaths(const Driver &D, const MultilibSet &Multilibs,
+ const Multilib &Multilib,
+ StringRef InstallPath,
+ ToolChain::path_list &Paths) {
+ if (const auto &PathsCallback = Multilibs.filePathsCallback())
+ for (const auto &Path : PathsCallback(Multilib))
+ addPathIfExists(D, InstallPath + Path, Paths);
+}
+
Hurd::Hurd(const Driver &D, const llvm::Triple &Triple,
const ArgList &Args)
: Generic_ELF(D, Triple, Args) {
+ GCCInstallation.init(Triple, Args);
+ Multilibs = GCCInstallation.getMultilibs();
+ SelectedMultilib = GCCInstallation.getMultilib();
std::string SysRoot = computeSysRoot();
+
+ // Cross-compiling binutils and GCC installations (vanilla and openSUSE at
+ // least) put various tools in a triple-prefixed directory off of the parent
+ // of the GCC installation. We use the GCC triple here to ensure that we end
+ // up with tools that support the same amount of cross compiling as the
+ // detected GCC installation. For example, if we find a GCC installation
+ // targeting x86_64, but it is a bi-arch GCC installation, it can also be
+ // used to target i386.
+ // FIXME: This seems unlikely to be Linux- or Hurd-specific.
+ ToolChain::path_list &PPaths = getProgramPaths();
+ if (GCCInstallation.isValid()) {
+ PPaths.push_back(Twine(GCCInstallation.getParentLibPath() + "/../" +
+ GCCInstallation.getTriple().str() + "/bin")
+ .str());
+ }
+
+#ifdef ENABLE_LINKER_BUILD_ID
+ ExtraOpts.push_back("--build-id");
+#endif
+
+ // The selection of paths to try here is designed to match the patterns which
+ // the GCC driver itself uses, as this is part of the GCC-compatible driver.
+ // This was determined by running GCC in a fake filesystem, creating all
+ // possible permutations of these directories, and seeing which ones it added
+ // to the link paths.
path_list &Paths = getFilePaths();
const std::string OSLibDir = getOSLibDir(Triple, Args);
const std::string MultiarchTriple = getMultiarchTriple(D, Triple, SysRoot);
- // If we are currently running Clang inside of the requested system root, add
- // its parent library paths to those searched.
+ // Add the multilib suffixed paths where they are available.
+ if (GCCInstallation.isValid()) {
+ const llvm::Triple &GCCTriple = GCCInstallation.getTriple();
+ const std::string &LibPath = GCCInstallation.getParentLibPath();
+
+ // Add toolchain / multilib specific file paths.
+ addMultilibsFilePaths(D, Multilibs, SelectedMultilib,
+ GCCInstallation.getInstallPath(), Paths);
+
+ // Sourcery CodeBench MIPS toolchain holds some libraries under
+ // a biarch-like suffix of the GCC installation.
+ addPathIfExists(
+ D, GCCInstallation.getInstallPath() + SelectedMultilib.gccSuffix(),
+ Paths);
+
+ // GCC cross compiling toolchains will install target libraries which ship
+ // as part of the toolchain under <prefix>/<triple>/<libdir> rather than as
+ // any part of the GCC installation in
+ // <prefix>/<libdir>/gcc/<triple>/<version>. This decision is somewhat
+ // debatable, but is the reality today. We need to search this tree even
+ // when we have a sysroot somewhere else. It is the responsibility of
+ // whomever is doing the cross build targeting a sysroot using a GCC
+ // installation that is *not* within the system root to ensure two things:
+ //
+ // 1) Any DSOs that are linked in from this tree or from the install path
+ // above must be present on the system root and found via an
+ // appropriate rpath.
+ // 2) There must not be libraries installed into
+ // <prefix>/<triple>/<libdir> unless they should be preferred over
+ // those within the system root.
+ //
+ // Note that this matches the GCC behavior. See the below comment for where
+ // Clang diverges from GCC's behavior.
+ addPathIfExists(D, LibPath + "/../" + GCCTriple.str() + "/lib/../" +
+ OSLibDir + SelectedMultilib.osSuffix(),
+ Paths);
+
+ // If the GCC installation we found is inside of the sysroot, we want to
+ // prefer libraries installed in the parent prefix of the GCC installation.
+ // It is important to *not* use these paths when the GCC installation is
+ // outside of the system root as that can pick up unintended libraries.
+ // This usually happens when there is an external cross compiler on the
+ // host system, and a more minimal sysroot available that is the target of
+ // the cross. Note that GCC does include some of these directories in some
+ // configurations but this seems somewhere between questionable and simply
+ // a bug.
+ if (StringRef(LibPath).startswith(SysRoot)) {
+ addPathIfExists(D, LibPath + "/" + MultiarchTriple, Paths);
+ addPathIfExists(D, LibPath + "/../" + OSLibDir, Paths);
+ }
+ }
+
+ // Similar to the logic for GCC above, if we currently running Clang inside
+ // of the requested system root, add its parent library paths to
+ // those searched.
// FIXME: It's not clear whether we should use the driver's installed
// directory ('Dir' below) or the ResourceDir.
if (StringRef(D.Dir).startswith(SysRoot)) {
@@ -85,8 +175,40 @@ Hurd::Hurd(const Driver &D, const llvm::
addPathIfExists(D, SysRoot + "/usr/lib/" + MultiarchTriple, Paths);
addPathIfExists(D, SysRoot + "/usr/lib/../" + OSLibDir, Paths);
- // If we are currently running Clang inside of the requested system root, add
- // its parent library path to those searched.
+ // Try walking via the GCC triple path in case of biarch or multiarch GCC
+ // installations with strange symlinks.
+ if (GCCInstallation.isValid()) {
+ addPathIfExists(D,
+ SysRoot + "/usr/lib/" + GCCInstallation.getTriple().str() +
+ "/../../" + OSLibDir,
+ Paths);
+
+ // Add the 'other' biarch variant path
+ Multilib BiarchSibling;
+ if (GCCInstallation.getBiarchSibling(BiarchSibling)) {
+ addPathIfExists(D, GCCInstallation.getInstallPath() +
+ BiarchSibling.gccSuffix(),
+ Paths);
+ }
+
+ // See comments above on the multilib variant for details of why this is
+ // included even from outside the sysroot.
+ const std::string &LibPath = GCCInstallation.getParentLibPath();
+ const llvm::Triple &GCCTriple = GCCInstallation.getTriple();
+ const Multilib &Multilib = GCCInstallation.getMultilib();
+ addPathIfExists(D, LibPath + "/../" + GCCTriple.str() + "/lib" +
+ Multilib.osSuffix(),
+ Paths);
+
+ // See comments above on the multilib variant for details of why this is
+ // only included from within the sysroot.
+ if (StringRef(LibPath).startswith(SysRoot))
+ addPathIfExists(D, LibPath, Paths);
+ }
+
+ // Similar to the logic for GCC above, if we are currently running Clang
+ // inside of the requested system root, add its parent library path to those
+ // searched.
// FIXME: It's not clear whether we should use the driver's installed
// directory ('Dir' below) or the ResourceDir.
if (StringRef(D.Dir).startswith(SysRoot))
@@ -153,6 +275,17 @@ void Hurd::AddClangSystemIncludeArgs(con
// Lacking those, try to detect the correct set of system includes for the
// target triple.
+
+ // Add include directories specific to the selected multilib set and multilib.
+ if (GCCInstallation.isValid()) {
+ const auto &Callback = Multilibs.includeDirsCallback();
+ if (Callback) {
+ for (const auto &Path : Callback(GCCInstallation.getMultilib()))
+ addExternCSystemIncludeIfExists(
+ DriverArgs, CC1Args, GCCInstallation.getInstallPath() + Path);
+ }
+ }
+
if (getTriple().getArch() == llvm::Triple::x86) {
std::string Path = SysRoot + "/usr/include/i386-gnu";
if (D.getVFS().exists(Path))
@@ -166,3 +299,94 @@ void Hurd::AddClangSystemIncludeArgs(con
addExternCSystemInclude(DriverArgs, CC1Args, SysRoot + "/usr/include");
}
+
+static std::string DetectLibcxxIncludePath(llvm::vfs::FileSystem &vfs,
+ StringRef base) {
+ std::error_code EC;
+ int MaxVersion = 0;
+ std::string MaxVersionString = "";
+ for (llvm::vfs::directory_iterator LI = vfs.dir_begin(base, EC), LE;
+ !EC && LI != LE; LI = LI.increment(EC)) {
+ StringRef VersionText = llvm::sys::path::filename(LI->path());
+ int Version;
+ if (VersionText[0] == 'v' &&
+ !VersionText.slice(1, StringRef::npos).getAsInteger(10, Version)) {
+ if (Version > MaxVersion) {
+ MaxVersion = Version;
+ MaxVersionString = VersionText;
+ }
+ }
+ }
+ return MaxVersion ? (base + "/" + MaxVersionString).str() : "";
+}
+
+void Hurd::addLibCxxIncludePaths(const llvm::opt::ArgList &DriverArgs,
+ llvm::opt::ArgStringList &CC1Args) const {
+ const std::string& SysRoot = computeSysRoot();
+ const std::string LibCXXIncludePathCandidates[] = {
+ DetectLibcxxIncludePath(getVFS(), getDriver().Dir + "/../include/c++"),
+ // If this is a development, non-installed, clang, libcxx will
+ // not be found at ../include/c++ but it likely to be found at
+ // one of the following two locations:
+ DetectLibcxxIncludePath(getVFS(), SysRoot + "/usr/local/include/c++"),
+ DetectLibcxxIncludePath(getVFS(), SysRoot + "/usr/include/c++") };
+ for (const auto &IncludePath : LibCXXIncludePathCandidates) {
+ if (IncludePath.empty() || !getVFS().exists(IncludePath))
+ continue;
+ // Use the first candidate that exists.
+ addSystemInclude(DriverArgs, CC1Args, IncludePath);
+ return;
+ }
+}
+
+void Hurd::addLibStdCxxIncludePaths(const llvm::opt::ArgList &DriverArgs,
+ llvm::opt::ArgStringList &CC1Args) const {
+ // We need a detected GCC installation on Hurd to provide libstdc++'s
+ // headers.
+ if (!GCCInstallation.isValid())
+ return;
+
+ // By default, look for the C++ headers in an include directory adjacent to
+ // the lib directory of the GCC installation. Note that this is expect to be
+ // equivalent to '/usr/include/c++/X.Y' in almost all cases.
+ StringRef LibDir = GCCInstallation.getParentLibPath();
+ StringRef InstallDir = GCCInstallation.getInstallPath();
+ StringRef TripleStr = GCCInstallation.getTriple().str();
+ const Multilib &Multilib = GCCInstallation.getMultilib();
+ const std::string GCCMultiarchTriple = getMultiarchTriple(
+ getDriver(), GCCInstallation.getTriple(), getDriver().SysRoot);
+ const std::string TargetMultiarchTriple =
+ getMultiarchTriple(getDriver(), getTriple(), getDriver().SysRoot);
+ const GCCVersion &Version = GCCInstallation.getVersion();
+
+ // The primary search for libstdc++ supports multiarch variants.
+ if (addLibStdCXXIncludePaths(LibDir.str() + "/../include",
+ "/c++/" + Version.Text, TripleStr,
+ GCCMultiarchTriple, TargetMultiarchTriple,
+ Multilib.includeSuffix(), DriverArgs, CC1Args))
+ return;
+
+ // Otherwise, fall back on a bunch of options which don't use multiarch
+ // layouts for simplicity.
+ const std::string LibStdCXXIncludePathCandidates[] = {
+ // Gentoo is weird and places its headers inside the GCC install,
+ // so if the first attempt to find the headers fails, try these patterns.
+ InstallDir.str() + "/include/g++-v" + Version.Text,
+ InstallDir.str() + "/include/g++-v" + Version.MajorStr + "." +
+ Version.MinorStr,
+ InstallDir.str() + "/include/g++-v" + Version.MajorStr,
+ // Android standalone toolchain has C++ headers in yet another place.
+ LibDir.str() + "/../" + TripleStr.str() + "/include/c++/" + Version.Text,
+ // Freescale SDK C++ headers are directly in <sysroot>/usr/include/c++,
+ // without a subdirectory corresponding to the gcc version.
+ LibDir.str() + "/../include/c++",
+ };
+
+ for (const auto &IncludePath : LibStdCXXIncludePathCandidates) {
+ if (addLibStdCXXIncludePaths(IncludePath, /*Suffix*/ "", TripleStr,
+ /*GCCMultiarchTriple*/ "",
+ /*TargetMultiarchTriple*/ "",
+ Multilib.includeSuffix(), DriverArgs, CC1Args))
+ break;
+ }
+}
Index: llvm-toolchain-9-9.0.0/clang/lib/Driver/ToolChains/Hurd.h
===================================================================
--- llvm-toolchain-9-9.0.0.orig/clang/lib/Driver/ToolChains/Hurd.h
+++ llvm-toolchain-9-9.0.0/clang/lib/Driver/ToolChains/Hurd.h
@@ -26,6 +26,12 @@ public:
void
AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,
llvm::opt::ArgStringList &CC1Args) const override;
+ void addLibCxxIncludePaths(
+ const llvm::opt::ArgList &DriverArgs,
+ llvm::opt::ArgStringList &CC1Args) const override;
+ void addLibStdCxxIncludePaths(
+ const llvm::opt::ArgList &DriverArgs,
+ llvm::opt::ArgStringList &CC1Args) const override;
virtual std::string computeSysRoot() const;

View File

@ -1,32 +0,0 @@
Index: llvm-toolchain-9_9.0.0/lldb/include/lldb/lldb-defines.h
===================================================================
--- llvm-toolchain-9_9.0.0.orig/lldb/include/lldb/lldb-defines.h
+++ llvm-toolchain-9_9.0.0/lldb/include/lldb/lldb-defines.h
@@ -27,6 +27,11 @@
#define INT32_MAX 2147483647
#endif
+// For GNU Hurd
+#if defined(__GNU__) && !defined(PATH_MAX)
+# define PATH_MAX 4096
+#endif
+
#if !defined(UINT32_MAX)
#define UINT32_MAX 4294967295U
#endif
Index: llvm-toolchain-9_9.0.0/polly/lib/External/ppcg/cuda_common.c
===================================================================
--- llvm-toolchain-9_9.0.0.orig/polly/lib/External/ppcg/cuda_common.c
+++ llvm-toolchain-9_9.0.0/polly/lib/External/ppcg/cuda_common.c
@@ -15,6 +15,11 @@
#include "cuda_common.h"
#include "ppcg.h"
+// For GNU Hurd
+#if defined(__GNU__) && !defined(PATH_MAX)
+# define PATH_MAX 4096
+#endif
+
/* Open the host .cu file and the kernel .hu and .cu files for writing.
* Add the necessary includes.
*/

View File

@ -1,13 +0,0 @@
Index: llvm-toolchain-9_9.0.0/llvm/lib/Support/Unix/Path.inc
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/lib/Support/Unix/Path.inc
+++ llvm-toolchain-9_9.0.0/llvm/lib/Support/Unix/Path.inc
@@ -203,7 +203,7 @@ std::string getMainExecutable(const char
// If we don't have procfs mounted, fall back to argv[0]
if (getprogpath(exe_path, argv0) != NULL)
return exe_path;
-#elif defined(__linux__) || defined(__CYGWIN__)
+#elif defined(__linux__) || defined(__CYGWIN__) || defined(__GNU__)
char exe_path[MAXPATHLEN];
StringRef aPath("/proc/self/exe");
if (sys::fs::exists(aPath)) {

View File

@ -1,16 +0,0 @@
---
clang/tools/CMakeLists.txt | 1 +
1 file changed, 1 insertion(+)
Index: llvm-toolchain-9_9.0.0/clang/tools/CMakeLists.txt
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/tools/CMakeLists.txt
+++ llvm-toolchain-9_9.0.0/clang/tools/CMakeLists.txt
@@ -27,6 +27,7 @@ if(CLANG_ENABLE_STATIC_ANALYZER)
add_clang_subdirectory(clang-check)
add_clang_subdirectory(clang-extdef-mapping)
add_clang_subdirectory(scan-build)
+ add_clang_subdirectory(scan-build-py)
add_clang_subdirectory(scan-view)
endif()

View File

@ -1,13 +0,0 @@
Index: llvm-toolchain-9_9.0.0/llvm/CMakeLists.txt
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/CMakeLists.txt
+++ llvm-toolchain-9_9.0.0/llvm/CMakeLists.txt
@@ -857,7 +857,7 @@ if(LLVM_TARGET_IS_CROSSCOMPILE_HOST)
# (this is a variable that CrossCompile sets on recursive invocations)
endif()
-if(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBSD|DragonFly)")
+if( ${CMAKE_SYSTEM_NAME} MATCHES "(FreeBSD|DragonFly)" AND NOT "kFreeBSD" )
# On FreeBSD, /usr/local/* is not used by default. In order to build LLVM
# with libxml2, iconv.h, etc., we must add /usr/local paths.
include_directories(SYSTEM "/usr/local/include")

View File

@ -1,48 +0,0 @@
Index: llvm-toolchain-9_9.0.0/clang/lib/Basic/Targets.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/lib/Basic/Targets.cpp
+++ llvm-toolchain-9_9.0.0/clang/lib/Basic/Targets.cpp
@@ -459,8 +459,8 @@ TargetInfo *AllocateTarget(const llvm::T
return new OpenBSDI386TargetInfo(Triple, Opts);
case llvm::Triple::FreeBSD:
return new FreeBSDTargetInfo<X86_32TargetInfo>(Triple, Opts);
- case llvm::Triple::KFreeBSD:
- return new KFreeBSDTargetInfo<X86_32TargetInfo>(Triple, Opts);
+ case llvm::Triple::kFreeBSD:
+ return new kFreeBSDTargetInfo<X86_32TargetInfo>(Triple, Opts);
case llvm::Triple::Minix:
return new MinixTargetInfo<X86_32TargetInfo>(Triple, Opts);
case llvm::Triple::Solaris:
@@ -518,8 +518,8 @@ TargetInfo *AllocateTarget(const llvm::T
return new FreeBSDTargetInfo<X86_64TargetInfo>(Triple, Opts);
case llvm::Triple::Fuchsia:
return new FuchsiaTargetInfo<X86_64TargetInfo>(Triple, Opts);
- case llvm::Triple::KFreeBSD:
- return new KFreeBSDTargetInfo<X86_64TargetInfo>(Triple, Opts);
+ case llvm::Triple::kFreeBSD:
+ return new kFreeBSDTargetInfo<X86_64TargetInfo>(Triple, Opts);
case llvm::Triple::Solaris:
return new SolarisTargetInfo<X86_64TargetInfo>(Triple, Opts);
case llvm::Triple::Win32: {
Index: llvm-toolchain-9_9.0.0/clang/lib/Basic/Targets/OSTargets.h
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/lib/Basic/Targets/OSTargets.h
+++ llvm-toolchain-9_9.0.0/clang/lib/Basic/Targets/OSTargets.h
@@ -265,7 +265,7 @@ public:
// GNU/kFreeBSD Target
template <typename Target>
-class LLVM_LIBRARY_VISIBILITY KFreeBSDTargetInfo : public OSTargetInfo<Target> {
+class LLVM_LIBRARY_VISIBILITY kFreeBSDTargetInfo : public OSTargetInfo<Target> {
protected:
void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple,
MacroBuilder &Builder) const override {
@@ -282,7 +282,7 @@ protected:
}
public:
- KFreeBSDTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
+ kFreeBSDTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
: OSTargetInfo<Target>(Triple, Opts) {}
};

View File

@ -1,374 +0,0 @@
Index: llvm-toolchain-9_9.0.0/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc
===================================================================
--- llvm-toolchain-9_9.0.0.orig/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc
+++ llvm-toolchain-9_9.0.0/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc
@@ -83,9 +83,14 @@
extern "C" {
// <sys/umtx.h> must be included after <errno.h> and <sys/types.h> on
// FreeBSD 9.2 and 10.0.
+#if SANITIZER_KFREEBSD
+#include <bsd/sys/cdefs.h>
+#endif
#include <sys/umtx.h>
}
+#if !SANITIZER_KFREEBSD
#include <sys/thr.h>
+#endif
#endif // SANITIZER_FREEBSD
#if SANITIZER_NETBSD
@@ -461,10 +466,12 @@ bool FileExists(const char *filename) {
#if !SANITIZER_NETBSD
tid_t GetTid() {
-#if SANITIZER_FREEBSD
+#if SANITIZER_FREEBSD && !SANITIZER_KFREEBSD
long Tid;
thr_self(&Tid);
return Tid;
+#elif SANITIZER_KFREEBSD
+ return (uptr)pthread_self();
#elif SANITIZER_OPENBSD
return internal_syscall(SYSCALL(getthrid));
#elif SANITIZER_SOLARIS
@@ -1148,10 +1155,10 @@ bool LibraryNameIs(const char *full_name
// Call cb for each region mapped by map.
void ForEachMappedRegion(link_map *map, void (*cb)(const void *, uptr)) {
CHECK_NE(map, nullptr);
-#if !SANITIZER_FREEBSD && !SANITIZER_OPENBSD
+#if !SANITIZER_FREEBSD && !SANITIZER_OPENBSD || SANITIZER_KFREEBSD
typedef ElfW(Phdr) Elf_Phdr;
typedef ElfW(Ehdr) Elf_Ehdr;
-#endif // !SANITIZER_FREEBSD && !SANITIZER_OPENBSD
+#endif // !SANITIZER_FREEBSD && !SANITIZER_OPENBSD || SANITIZER_KFREEBSD
char *base = (char *)map->l_addr;
Elf_Ehdr *ehdr = (Elf_Ehdr *)base;
char *phdrs = base + ehdr->e_phoff;
Index: llvm-toolchain-9_9.0.0/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc
===================================================================
--- llvm-toolchain-9_9.0.0.orig/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc
+++ llvm-toolchain-9_9.0.0/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc
@@ -35,10 +35,12 @@
#include <syslog.h>
#if SANITIZER_FREEBSD
-#include <pthread_np.h>
+# if !SANITIZER_KFREEBSD
+# include <pthread_np.h>
+# define pthread_getattr_np pthread_attr_get_np
+# endif
#include <osreldate.h>
#include <sys/sysctl.h>
-#define pthread_getattr_np pthread_attr_get_np
#endif
#if SANITIZER_OPENBSD
@@ -528,9 +530,9 @@ void GetThreadStackAndTls(bool main, upt
#endif
}
-#if !SANITIZER_FREEBSD && !SANITIZER_OPENBSD
+#if !SANITIZER_FREEBSD && !SANITIZER_OPENBSD || SANITIZER_KFREEBSD
typedef ElfW(Phdr) Elf_Phdr;
-#elif SANITIZER_WORDSIZE == 32 && __FreeBSD_version <= 902001 // v9.2
+#elif SANITIZER_WORDSIZE == 32 && !SANITIZER_KFREEBSD && __FreeBSD_version <= 902001 // v9.2
#define Elf_Phdr XElf32_Phdr
#define dl_phdr_info xdl_phdr_info
#define dl_iterate_phdr(c, b) xdl_iterate_phdr((c), (b))
Index: llvm-toolchain-9_9.0.0/compiler-rt/lib/sanitizer_common/sanitizer_platform.h
===================================================================
--- llvm-toolchain-9_9.0.0.orig/compiler-rt/lib/sanitizer_common/sanitizer_platform.h
+++ llvm-toolchain-9_9.0.0/compiler-rt/lib/sanitizer_common/sanitizer_platform.h
@@ -15,7 +15,7 @@
#if !defined(__linux__) && !defined(__FreeBSD__) && !defined(__NetBSD__) && \
!defined(__OpenBSD__) && !defined(__APPLE__) && !defined(_WIN32) && \
!defined(__Fuchsia__) && !defined(__rtems__) && \
- !(defined(__sun__) && defined(__svr4__))
+ !(defined(__sun__) && defined(__svr4__)) && !defined(__FreeBSD_kernel__)
# error "This operating system is not supported"
#endif
@@ -25,12 +25,18 @@
# define SANITIZER_LINUX 0
#endif
-#if defined(__FreeBSD__)
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
# define SANITIZER_FREEBSD 1
#else
# define SANITIZER_FREEBSD 0
#endif
+#if defined(__FreeBSD_kernel__)
+# define SANITIZER_KFREEBSD 1
+#else
+# define SANITIZER_KFREEBSD 0
+#endif
+
#if defined(__NetBSD__)
# define SANITIZER_NETBSD 1
#else
@@ -112,7 +118,8 @@
#define SANITIZER_POSIX \
(SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_MAC || \
- SANITIZER_NETBSD || SANITIZER_OPENBSD || SANITIZER_SOLARIS)
+ SANITIZER_NETBSD || SANITIZER_OPENBSD || SANITIZER_SOLARIS || \
+ SANITIZER_KFREEBSD)
#if __LP64__ || defined(_WIN64)
# define SANITIZER_WORDSIZE 64
Index: llvm-toolchain-9_9.0.0/compiler-rt/lib/asan/asan_linux.cc
===================================================================
--- llvm-toolchain-9_9.0.0.orig/compiler-rt/lib/asan/asan_linux.cc
+++ llvm-toolchain-9_9.0.0/compiler-rt/lib/asan/asan_linux.cc
@@ -37,7 +37,7 @@
#include <unistd.h>
#include <unwind.h>
-#if SANITIZER_FREEBSD
+#if SANITIZER_FREEBSD && !SANITIZER_KFREEBSD
#include <sys/link_elf.h>
#endif
@@ -47,7 +47,11 @@
#if SANITIZER_ANDROID || SANITIZER_FREEBSD || SANITIZER_SOLARIS
#include <ucontext.h>
+#if SANITIZER_KFREEBSD
+#include <link.h>
+#else
extern "C" void* _DYNAMIC;
+#endif
#elif SANITIZER_NETBSD
#include <link_elf.h>
#include <ucontext.h>
@@ -60,7 +64,7 @@ extern Elf_Dyn _DYNAMIC;
// x86-64 FreeBSD 9.2 and older define 'ucontext_t' incorrectly in
// 32-bit mode.
#if SANITIZER_FREEBSD && (SANITIZER_WORDSIZE == 32) && \
- __FreeBSD_version <= 902001 // v9.2
+ !SANITIZER_KFREEBSD && __FreeBSD_version <= 902001 // v9.2
#define ucontext_t xucontext_t
#endif
Index: llvm-toolchain-9_9.0.0/compiler-rt/lib/ubsan/ubsan_platform.h
===================================================================
--- llvm-toolchain-9_9.0.0.orig/compiler-rt/lib/ubsan/ubsan_platform.h
+++ llvm-toolchain-9_9.0.0/compiler-rt/lib/ubsan/ubsan_platform.h
@@ -14,7 +14,7 @@
// Other platforms should be easy to add, and probably work as-is.
#if defined(__linux__) || defined(__FreeBSD__) || defined(__APPLE__) || \
- defined(__NetBSD__) || defined(__OpenBSD__) || \
+ defined(__NetBSD__) || defined(__OpenBSD__) || defined(__FreeBSD_kernel__) || \
(defined(__sun__) && defined(__svr4__)) || \
defined(_WIN32) || defined(__Fuchsia__) || defined(__rtems__)
# define CAN_SANITIZE_UB 1
Index: llvm-toolchain-9_9.0.0/compiler-rt/lib/tsan/rtl/tsan_rtl_amd64.S
===================================================================
--- llvm-toolchain-9_9.0.0.orig/compiler-rt/lib/tsan/rtl/tsan_rtl_amd64.S
+++ llvm-toolchain-9_9.0.0/compiler-rt/lib/tsan/rtl/tsan_rtl_amd64.S
@@ -192,7 +192,7 @@ ASM_SYMBOL_INTERCEPTOR(setjmp):
// obtain SP, store in %rdi, first argument to `void __tsan_setjmp(uptr sp)`
#if defined(__FreeBSD__) || defined(__NetBSD__)
lea 8(%rsp), %rdi
-#elif defined(__linux__) || defined(__APPLE__)
+#elif defined(__linux__) || defined(__FreeBSD_kernel__) || defined(__APPLE__)
lea 16(%rsp), %rdi
#else
# error "Unknown platform"
@@ -233,7 +233,7 @@ ASM_SYMBOL_INTERCEPTOR(_setjmp):
// obtain SP, store in %rdi, first argument to `void __tsan_setjmp(uptr sp)`
#if defined(__FreeBSD__) || defined(__NetBSD__)
lea 8(%rsp), %rdi
-#elif defined(__linux__) || defined(__APPLE__)
+#elif defined(__linux__) || defined(__FreeBSD_kernel__) || defined(__APPLE__)
lea 16(%rsp), %rdi
#else
# error "Unknown platform"
@@ -281,7 +281,7 @@ ASM_SYMBOL_INTERCEPTOR(sigsetjmp):
// obtain SP, store in %rdi, first argument to `void __tsan_setjmp(uptr sp)`
#if defined(__FreeBSD__) || defined(__NetBSD__)
lea 24(%rsp), %rdi
-#elif defined(__linux__) || defined(__APPLE__)
+#elif defined(__linux__) || defined(__FreeBSD_kernel__) || defined(__APPLE__)
lea 32(%rsp), %rdi
#else
# error "Unknown platform"
Index: llvm-toolchain-9_9.0.0/compiler-rt/lib/fuzzer/FuzzerDefs.h
===================================================================
--- llvm-toolchain-9_9.0.0.orig/compiler-rt/lib/fuzzer/FuzzerDefs.h
+++ llvm-toolchain-9_9.0.0/compiler-rt/lib/fuzzer/FuzzerDefs.h
@@ -27,6 +27,7 @@
#define LIBFUZZER_LINUX 1
#define LIBFUZZER_NETBSD 0
#define LIBFUZZER_FREEBSD 0
+#define LIBFUZZER_KFREEBSD 1
#define LIBFUZZER_OPENBSD 0
#define LIBFUZZER_WINDOWS 0
#elif __APPLE__
@@ -53,6 +54,15 @@
#define LIBFUZZER_FREEBSD 1
#define LIBFUZZER_OPENBSD 0
#define LIBFUZZER_WINDOWS 0
+#elif __FreeBSD_kernel__
+#define LIBFUZZER_APPLE 0
+#define LIBFUZZER_FUCHSIA 0
+#define LIBFUZZER_LINUX 0
+#define LIBFUZZER_NETBSD 0
+#define LIBFUZZER_FREEBSD 0
+#define LIBFUZZER_KFREEBSD 1
+#define LIBFUZZER_OPENBSD 0
+#define LIBFUZZER_WINDOWS 0
#elif __OpenBSD__
#define LIBFUZZER_APPLE 0
#define LIBFUZZER_FUCHSIA 0
@@ -94,7 +104,7 @@
#define LIBFUZZER_POSIX \
(LIBFUZZER_APPLE || LIBFUZZER_LINUX || LIBFUZZER_NETBSD || \
- LIBFUZZER_FREEBSD || LIBFUZZER_OPENBSD)
+ LIBFUZZER_FREEBSD || LIBFUZZER_OPENBSD || LIBFUZZER_KFREEBSD)
#ifdef __x86_64
# if __has_attribute(target)
Index: llvm-toolchain-9_9.0.0/compiler-rt/lib/fuzzer/FuzzerUtilPosix.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/compiler-rt/lib/fuzzer/FuzzerUtilPosix.cpp
+++ llvm-toolchain-9_9.0.0/compiler-rt/lib/fuzzer/FuzzerUtilPosix.cpp
@@ -139,7 +139,7 @@ size_t GetPeakRSSMb() {
if (getrusage(RUSAGE_SELF, &usage))
return 0;
if (LIBFUZZER_LINUX || LIBFUZZER_FREEBSD || LIBFUZZER_NETBSD ||
- LIBFUZZER_OPENBSD) {
+ LIBFUZZER_OPENBSD || LIBFUZZER_KFREEBSD) {
// ru_maxrss is in KiB
return usage.ru_maxrss >> 10;
} else if (LIBFUZZER_APPLE) {
Index: llvm-toolchain-9_9.0.0/compiler-rt/lib/fuzzer/FuzzerExtraCounters.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/compiler-rt/lib/fuzzer/FuzzerExtraCounters.cpp
+++ llvm-toolchain-9_9.0.0/compiler-rt/lib/fuzzer/FuzzerExtraCounters.cpp
@@ -11,7 +11,7 @@
#include "FuzzerDefs.h"
#if LIBFUZZER_LINUX || LIBFUZZER_NETBSD || LIBFUZZER_FREEBSD || \
- LIBFUZZER_OPENBSD
+ LIBFUZZER_OPENBSD || LIBFUZZER_KFREEBSD
__attribute__((weak)) extern uint8_t __start___libfuzzer_extra_counters;
__attribute__((weak)) extern uint8_t __stop___libfuzzer_extra_counters;
Index: llvm-toolchain-9_9.0.0/compiler-rt/lib/fuzzer/FuzzerExtFunctionsWeak.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/compiler-rt/lib/fuzzer/FuzzerExtFunctionsWeak.cpp
+++ llvm-toolchain-9_9.0.0/compiler-rt/lib/fuzzer/FuzzerExtFunctionsWeak.cpp
@@ -13,7 +13,7 @@
//===----------------------------------------------------------------------===//
#include "FuzzerDefs.h"
#if LIBFUZZER_LINUX || LIBFUZZER_NETBSD || LIBFUZZER_FUCHSIA || \
- LIBFUZZER_FREEBSD || LIBFUZZER_OPENBSD
+ LIBFUZZER_FREEBSD || LIBFUZZER_OPENBSD || LIBFUZZER_KFREEBSD
#include "FuzzerExtFunctions.h"
#include "FuzzerIO.h"
Index: llvm-toolchain-9_9.0.0/compiler-rt/lib/fuzzer/FuzzerUtilLinux.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/compiler-rt/lib/fuzzer/FuzzerUtilLinux.cpp
+++ llvm-toolchain-9_9.0.0/compiler-rt/lib/fuzzer/FuzzerUtilLinux.cpp
@@ -9,7 +9,7 @@
//===----------------------------------------------------------------------===//
#include "FuzzerDefs.h"
#if LIBFUZZER_LINUX || LIBFUZZER_NETBSD || LIBFUZZER_FREEBSD || \
- LIBFUZZER_OPENBSD
+ LIBFUZZER_OPENBSD || LIBFUZZER_KFREEBSD
#include "FuzzerCommand.h"
#include <stdlib.h>
Index: llvm-toolchain-9_9.0.0/compiler-rt/lib/sanitizer_common/sanitizer_freebsd.h
===================================================================
--- llvm-toolchain-9_9.0.0.orig/compiler-rt/lib/sanitizer_common/sanitizer_freebsd.h
+++ llvm-toolchain-9_9.0.0/compiler-rt/lib/sanitizer_common/sanitizer_freebsd.h
@@ -20,7 +20,7 @@
// 32-bit mode.
#if SANITIZER_FREEBSD && (SANITIZER_WORDSIZE == 32)
# include <osreldate.h>
-# if __FreeBSD_version <= 902001 // v9.2
+# if !SANITIZER_KFREEBSD && __FreeBSD_version <= 902001 // v9.2
# include <link.h>
# include <sys/param.h>
# include <ucontext.h>
Index: llvm-toolchain-9_9.0.0/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_bsd.cc
===================================================================
--- llvm-toolchain-9_9.0.0.orig/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_bsd.cc
+++ llvm-toolchain-9_9.0.0/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_bsd.cc
@@ -37,7 +37,7 @@
// Fix 'kinfo_vmentry' definition on FreeBSD prior v9.2 in 32-bit mode.
#if SANITIZER_FREEBSD && (SANITIZER_WORDSIZE == 32)
#include <osreldate.h>
-#if __FreeBSD_version <= 902001 // v9.2
+#if !SANITIZER_KFREEBSD && __FreeBSD_version <= 902001 // v9.2
#define kinfo_vmentry xkinfo_vmentry
#endif
#endif
Index: llvm-toolchain-9_9.0.0/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
===================================================================
--- llvm-toolchain-9_9.0.0.orig/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
+++ llvm-toolchain-9_9.0.0/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
@@ -19,7 +19,9 @@
#include "sanitizer_internal_defs.h"
#include "sanitizer_platform.h"
+#if !SANITIZER_KFREEBSD
# define GET_LINK_MAP_BY_DLOPEN_HANDLE(handle) ((link_map*)(handle))
+#endif
#ifndef __GLIBC_PREREQ
#define __GLIBC_PREREQ(x, y) 0
Index: llvm-toolchain-9_9.0.0/compiler-rt/lib/sanitizer_common/sanitizer_syscall_generic.inc
===================================================================
--- llvm-toolchain-9_9.0.0.orig/compiler-rt/lib/sanitizer_common/sanitizer_syscall_generic.inc
+++ llvm-toolchain-9_9.0.0/compiler-rt/lib/sanitizer_common/sanitizer_syscall_generic.inc
@@ -19,7 +19,7 @@
# define SYSCALL(name) __NR_ ## name
#endif
-#if defined(__x86_64__) && (SANITIZER_FREEBSD || SANITIZER_MAC)
+#if defined(__x86_64__) && ((SANITIZER_FREEBSD && !SANITIZER_KFREEBSD) || SANITIZER_MAC)
# define internal_syscall __syscall
# else
# define internal_syscall syscall
Index: llvm-toolchain-9_9.0.0/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
===================================================================
--- llvm-toolchain-9_9.0.0.orig/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
+++ llvm-toolchain-9_9.0.0/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
@@ -105,10 +105,14 @@ typedef struct user_fpregs elf_fpregset_
#include <wordexp.h>
#endif
-#if SANITIZER_LINUX && !SANITIZER_ANDROID
+#if (SANITIZER_LINUX && !SANITIZER_ANDROID) || SANITIZER_KFREEBSD
#include <glob.h>
#include <obstack.h>
+#if SANITIZER_KFREEBSD
+#include <sys/mqueue.h>
+#else
#include <mqueue.h>
+#endif
#include <net/if_ppp.h>
#include <netax25/ax25.h>
#include <netipx/ipx.h>
@@ -145,8 +149,12 @@ typedef struct user_fpregs elf_fpregset_
#include <linux/if_ppp.h>
#endif
-#if SANITIZER_LINUX
+#if SANITIZER_LINUX || SANITIZER_KFREEBSD
+#if SANITIZER_KFREEBSD
+#include <sys/link.h>
+#else
#include <link.h>
+#endif
#include <sys/vfs.h>
#include <sys/epoll.h>
#include <linux/capability.h>

View File

@ -1,33 +0,0 @@
Index: llvm-toolchain-9_9.0.0/llvm/include/llvm/ADT/Triple.h
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/include/llvm/ADT/Triple.h
+++ llvm-toolchain-9_9.0.0/llvm/include/llvm/ADT/Triple.h
@@ -161,7 +161,7 @@ public:
FreeBSD,
Fuchsia,
IOS,
- KFreeBSD,
+ kFreeBSD,
Linux,
Lv2, // PS3
MacOSX,
@@ -588,8 +588,8 @@ public:
}
/// Tests whether the OS is kFreeBSD.
- bool isOSKFreeBSD() const {
- return getOS() == Triple::KFreeBSD;
+ bool isOSkFreeBSD() const {
+ return getOS() == Triple::kFreeBSD;
}
/// Tests whether the OS is Hurd.
@@ -609,7 +609,7 @@ public:
/// Tests whether the OS uses glibc.
bool isOSGlibc() const {
- return (getOS() == Triple::Linux || getOS() == Triple::KFreeBSD ||
+ return (getOS() == Triple::Linux || getOS() == Triple::kFreeBSD ||
getOS() == Triple::Hurd) &&
!isAndroid();
}

View File

@ -1,12 +0,0 @@
Index: llvm-toolchain-9_9.0.0/libcxx/include/__config
===================================================================
--- llvm-toolchain-9_9.0.0.orig/libcxx/include/__config
+++ llvm-toolchain-9_9.0.0/libcxx/include/__config
@@ -1065,6 +1065,7 @@ _LIBCPP_FUNC_VIS extern "C" void __sanit
!defined(_LIBCPP_HAS_THREAD_API_WIN32) && \
!defined(_LIBCPP_HAS_THREAD_API_EXTERNAL)
# if defined(__FreeBSD__) || \
+ defined(__FreeBSD_kernel__) || \
defined(__Fuchsia__) || \
defined(__wasi__) || \
defined(__NetBSD__) || \

View File

@ -1,129 +0,0 @@
Index: llvm-toolchain-9_9.0.0/openmp/runtime/src/kmp.h
===================================================================
--- llvm-toolchain-9_9.0.0.orig/openmp/runtime/src/kmp.h
+++ llvm-toolchain-9_9.0.0/openmp/runtime/src/kmp.h
@@ -1142,6 +1142,10 @@ extern kmp_uint64 __kmp_now_nsec();
/* TODO: tune for KMP_OS_OPENBSD */
#define KMP_INIT_WAIT 1024U /* initial number of spin-tests */
#define KMP_NEXT_WAIT 512U /* susequent number of spin-tests */
+#elif KMP_OS_KFREEBSD
+/* TODO: tune for KMP_OS_KFREEBSD */
+#define KMP_INIT_WAIT 1024U /* initial number of spin-tests */
+#define KMP_NEXT_WAIT 512U /* susequent number of spin-tests */
#endif
#if KMP_ARCH_X86 || KMP_ARCH_X86_64
Index: llvm-toolchain-9_9.0.0/openmp/runtime/src/kmp_ftn_entry.h
===================================================================
--- llvm-toolchain-9_9.0.0.orig/openmp/runtime/src/kmp_ftn_entry.h
+++ llvm-toolchain-9_9.0.0/openmp/runtime/src/kmp_ftn_entry.h
@@ -531,7 +531,7 @@ int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_
int gtid;
#if KMP_OS_DARWIN || KMP_OS_DRAGONFLY || KMP_OS_FREEBSD || KMP_OS_NETBSD || \
- KMP_OS_HURD
+ KMP_OS_HURD || KMP_OS_KFREEBSD
gtid = __kmp_entry_gtid();
#elif KMP_OS_WINDOWS
if (!__kmp_init_parallel ||
Index: llvm-toolchain-9_9.0.0/openmp/runtime/src/kmp_platform.h
===================================================================
--- llvm-toolchain-9_9.0.0.orig/openmp/runtime/src/kmp_platform.h
+++ llvm-toolchain-9_9.0.0/openmp/runtime/src/kmp_platform.h
@@ -18,6 +18,7 @@
#define KMP_OS_LINUX 0
#define KMP_OS_DRAGONFLY 0
#define KMP_OS_FREEBSD 0
+#define KMP_OS_KFREEBSD 0
#define KMP_OS_NETBSD 0
#define KMP_OS_OPENBSD 0
#define KMP_OS_DARWIN 0
@@ -56,6 +57,11 @@
#define KMP_OS_FREEBSD 1
#endif
+#if (defined __FreeBSD_kernel__)
+#undef KMP_OS_KFREEBSD
+#define KMP_OS_KFREEBSD 1
+#endif
+
#if (defined __NetBSD__)
#undef KMP_OS_NETBSD
#define KMP_OS_NETBSD 1
@@ -78,12 +84,12 @@
#if (1 != \
KMP_OS_LINUX + KMP_OS_DRAGONFLY + KMP_OS_FREEBSD + KMP_OS_NETBSD + \
- KMP_OS_OPENBSD + KMP_OS_DARWIN + KMP_OS_WINDOWS + KMP_OS_HURD)
+ KMP_OS_OPENBSD + KMP_OS_DARWIN + KMP_OS_WINDOWS + KMP_OS_HURD + KMP_OS_KFREEBSD)
#error Unknown OS
#endif
#if KMP_OS_LINUX || KMP_OS_DRAGONFLY || KMP_OS_FREEBSD || KMP_OS_NETBSD || \
- KMP_OS_OPENBSD || KMP_OS_DARWIN || KMP_OS_HURD
+ KMP_OS_OPENBSD || KMP_OS_DARWIN || KMP_OS_HURD || KMP_OS_KFREEBSD
#undef KMP_OS_UNIX
#define KMP_OS_UNIX 1
#endif
Index: llvm-toolchain-9_9.0.0/openmp/runtime/src/kmp_runtime.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/openmp/runtime/src/kmp_runtime.cpp
+++ llvm-toolchain-9_9.0.0/openmp/runtime/src/kmp_runtime.cpp
@@ -8026,7 +8026,7 @@ __kmp_determine_reduction_method(
#if KMP_ARCH_X86_64 || KMP_ARCH_PPC64 || KMP_ARCH_AARCH64 || KMP_ARCH_MIPS64
#if KMP_OS_LINUX || KMP_OS_DRAGONFLY || KMP_OS_FREEBSD || KMP_OS_NETBSD || \
- KMP_OS_OPENBSD || KMP_OS_WINDOWS || KMP_OS_DARWIN || KMP_OS_HURD
+ KMP_OS_OPENBSD || KMP_OS_WINDOWS || KMP_OS_DARWIN || KMP_OS_HURD || KMP_OS_KFREEBSD
int teamsize_cutoff = 4;
@@ -8054,7 +8054,7 @@ __kmp_determine_reduction_method(
#elif KMP_ARCH_X86 || KMP_ARCH_ARM || KMP_ARCH_AARCH || KMP_ARCH_MIPS
-#if KMP_OS_LINUX || KMP_OS_FREEBSD || KMP_OS_WINDOWS || KMP_OS_HURD
+#if KMP_OS_LINUX || KMP_OS_FREEBSD || KMP_OS_WINDOWS || KMP_OS_HURD || KMP_OS_KFREEBSD
// basic tuning
Index: llvm-toolchain-9_9.0.0/openmp/runtime/src/z_Linux_util.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/openmp/runtime/src/z_Linux_util.cpp
+++ llvm-toolchain-9_9.0.0/openmp/runtime/src/z_Linux_util.cpp
@@ -447,7 +447,7 @@ void __kmp_terminate_thread(int gtid) {
static kmp_int32 __kmp_set_stack_info(int gtid, kmp_info_t *th) {
int stack_data;
#if KMP_OS_LINUX || KMP_OS_DRAGONFLY || KMP_OS_FREEBSD || KMP_OS_NETBSD || \
- KMP_OS_HURD
+ KMP_OS_HURD || KMP_OS_KFREEBSD
pthread_attr_t attr;
int status;
size_t size = 0;
@@ -501,7 +501,7 @@ static void *__kmp_launch_worker(void *t
#endif /* KMP_BLOCK_SIGNALS */
void *exit_val;
#if KMP_OS_LINUX || KMP_OS_DRAGONFLY || KMP_OS_FREEBSD || KMP_OS_NETBSD || \
- KMP_OS_OPENBSD || KMP_OS_HURD
+ KMP_OS_OPENBSD || KMP_OS_HURD || KMP_OS_KFREEBSD
void *volatile padding = 0;
#endif
int gtid;
@@ -1766,7 +1766,7 @@ static int __kmp_get_xproc(void) {
int r = 0;
#if KMP_OS_LINUX || KMP_OS_DRAGONFLY || KMP_OS_FREEBSD || KMP_OS_NETBSD || \
- KMP_OS_OPENBSD || KMP_OS_HURD
+ KMP_OS_OPENBSD || KMP_OS_HURD || KMP_OS_KFREEBSD
r = sysconf(_SC_NPROCESSORS_ONLN);
@@ -1972,7 +1972,7 @@ int __kmp_is_address_mapped(void *addr)
int found = 0;
int rc;
-#if KMP_OS_LINUX || KMP_OS_FREEBSD || KMP_OS_HURD
+#if KMP_OS_LINUX || KMP_OS_FREEBSD || KMP_OS_HURD || KMP_OS_KFREEBSD
/* On GNUish OSes, read the /proc/<pid>/maps pseudo-file to get all the address
ranges mapped into the address space. */

View File

@ -1,13 +0,0 @@
Index: llvm-toolchain-9_9.0.0/libcxx/src/thread.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/libcxx/src/thread.cpp
+++ llvm-toolchain-9_9.0.0/libcxx/src/thread.cpp
@@ -18,7 +18,7 @@
#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
# include <sys/param.h>
-# if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__APPLE__)
+# if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__APPLE__) || defined(__FreeBSD_kernel__)
# include <sys/sysctl.h>
# endif
#endif // defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))

View File

@ -1,615 +0,0 @@
Index: llvm-toolchain-9_9.0.0/clang/lib/Driver/CMakeLists.txt
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/lib/Driver/CMakeLists.txt
+++ llvm-toolchain-9_9.0.0/clang/lib/Driver/CMakeLists.txt
@@ -49,6 +49,7 @@ add_clang_library(clangDriver
ToolChains/HIP.cpp
ToolChains/Hexagon.cpp
ToolChains/Hurd.cpp
+ ToolChains/KFreeBSD.cpp
ToolChains/Linux.cpp
ToolChains/MipsLinux.cpp
ToolChains/MinGW.cpp
Index: llvm-toolchain-9_9.0.0/clang/lib/Driver/Driver.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/lib/Driver/Driver.cpp
+++ llvm-toolchain-9_9.0.0/clang/lib/Driver/Driver.cpp
@@ -26,6 +26,7 @@
#include "ToolChains/Haiku.h"
#include "ToolChains/Hexagon.h"
#include "ToolChains/Hurd.h"
+#include "ToolChains/KFreeBSD.h"
#include "ToolChains/Lanai.h"
#include "ToolChains/Linux.h"
#include "ToolChains/MSP430.h"
@@ -4617,6 +4618,9 @@ const ToolChain &Driver::getToolChain(co
case llvm::Triple::FreeBSD:
TC = llvm::make_unique<toolchains::FreeBSD>(*this, Target, Args);
break;
+ case llvm::Triple::kFreeBSD:
+ TC = llvm::make_unique<toolchains::kFreeBSD>(*this, Target, Args);
+ break;
case llvm::Triple::Minix:
TC = llvm::make_unique<toolchains::Minix>(*this, Target, Args);
break;
Index: llvm-toolchain-9_9.0.0/clang/lib/Driver/ToolChains/Clang.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/lib/Driver/ToolChains/Clang.cpp
+++ llvm-toolchain-9_9.0.0/clang/lib/Driver/ToolChains/Clang.cpp
@@ -538,7 +538,7 @@ static bool useFramePointerForTargetByDe
}
if (Triple.isOSLinux() || Triple.getOS() == llvm::Triple::CloudABI ||
- Triple.isOSHurd()) {
+ Triple.isOSHurd() || Triple.isOSkFreeBSD()) {
switch (Triple.getArch()) {
// Don't use a frame pointer on linux if optimizing for certain targets.
case llvm::Triple::mips64:
Index: llvm-toolchain-9_9.0.0/clang/lib/Driver/ToolChains/Gnu.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/lib/Driver/ToolChains/Gnu.cpp
+++ llvm-toolchain-9_9.0.0/clang/lib/Driver/ToolChains/Gnu.cpp
@@ -574,6 +574,20 @@ void tools::gnutools::Linker::ConstructJ
if (!Args.hasArg(options::OPT_nolibc))
CmdArgs.push_back("-lc");
+ CmdArgs.push_back("-lc");
+
+ if (getToolChain().getTriple().isOSkFreeBSD()) {
+ switch (getToolChain().getArch()) {
+ case llvm::Triple::x86_64:
+ CmdArgs.push_back("-rpath-link=/lib/x86_64-kfreebsd-gnu");
+ break;
+ case llvm::Triple::x86:
+ CmdArgs.push_back("-rpath-link=/lib/i386-kfreebsd-gnu");
+ break;
+ default:
+ break;
+ }
+ }
// Add IAMCU specific libs, if needed.
if (IsIAMCU)
@@ -1955,7 +1969,8 @@ void Generic_GCC::GCCInstallationDetecto
"x86_64-redhat-linux", "x86_64-suse-linux",
"x86_64-manbo-linux-gnu", "x86_64-linux-gnu",
"x86_64-slackware-linux", "x86_64-unknown-linux",
- "x86_64-amazon-linux", "x86_64-linux-android"};
+ "x86_64-amazon-linux", "x86_64-linux-android",
+ "x86_64-kfreebsd-gnu", "x86_64-pc-kfreebsd-gnu"};
static const char *const X32LibDirs[] = {"/libx32"};
static const char *const X86LibDirs[] = {"/lib32", "/lib"};
static const char *const X86Triples[] = {
@@ -1964,7 +1979,9 @@ void Generic_GCC::GCCInstallationDetecto
"i586-redhat-linux", "i386-redhat-linux", "i586-suse-linux",
"i486-slackware-linux", "i686-montavista-linux", "i586-linux-gnu",
"i686-linux-android", "i386-gnu", "i486-gnu",
- "i586-gnu", "i686-gnu"};
+ "i586-gnu", "i686-gnu",
+ "i686-kfreebsd-gnu", "i686-pc-kfreebsd-gnu", "i486-kfreebsd-gnu",
+ "i386-kfreebsd-gnu" };
static const char *const MIPSLibDirs[] = {"/lib"};
static const char *const MIPSTriples[] = {
Index: llvm-toolchain-9_9.0.0/clang/lib/Driver/ToolChains/KFreeBSD.cpp
===================================================================
--- /dev/null
+++ llvm-toolchain-9_9.0.0/clang/lib/Driver/ToolChains/KFreeBSD.cpp
@@ -0,0 +1,458 @@
+//===--- KFreeBSD.cpp - kFreeBSD ToolChain Implementations --------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "KFreeBSD.h"
+#include "CommonArgs.h"
+#include "llvm/Support/VirtualFileSystem.h"
+#include "clang/Config/config.h"
+#include "clang/Driver/Driver.h"
+#include "clang/Driver/Options.h"
+#include "clang/Driver/SanitizerArgs.h"
+#include "llvm/Option/ArgList.h"
+#include "llvm/ProfileData/InstrProf.h"
+#include "llvm/Support/Path.h"
+
+using namespace clang::driver;
+using namespace clang::driver::toolchains;
+using namespace clang;
+using namespace llvm::opt;
+
+using tools::addPathIfExists;
+
+/// Get our best guess at the multiarch triple for a target.
+///
+/// Debian-based systems are starting to use a multiarch setup where they use
+/// a target-triple directory in the library and header search paths.
+/// Unfortunately, this triple does not align with the vanilla target triple,
+/// so we provide a rough mapping here.
+static std::string getMultiarchTriple(const Driver &D,
+ const llvm::Triple &TargetTriple,
+ StringRef SysRoot) {
+ // For most architectures, just use whatever we have rather than trying to be
+ // clever.
+ switch (TargetTriple.getArch()) {
+ default:
+ break;
+
+ // We use the existence of '/lib/<triple>' as a directory to detect
+ // some common kfreebsd triples that don't quite match the Clang
+ // triple for both 32-bit and 64-bit targets. Multiarch fixes its
+ // install triples to these regardless of what the actual target
+ // triple is.
+ case llvm::Triple::x86_64:
+ if (D.getVFS().exists(SysRoot + "/lib/x86_64-kfreebsd-gnu"))
+ return "x86_64-kfreebsd-gnu";
+ break;
+ case llvm::Triple::x86:
+ if (D.getVFS().exists(SysRoot + "/lib/i386-kfreebsd-gnu"))
+ return "i386-kfreebsd-gnu";
+ break;
+ }
+
+ return TargetTriple.str();
+}
+
+static StringRef getOSLibDir(const llvm::Triple &Triple, const ArgList &Args) {
+ // It happens that only x86 and PPC use the 'lib32' variant of oslibdir, and
+ // using that variant while targeting other architectures causes problems
+ // because the libraries are laid out in shared system roots that can't cope
+ // with a 'lib32' library search path being considered. So we only enable
+ // them when we know we may need it.
+ //
+ // FIXME: This is a bit of a hack. We should really unify this code for
+ // reasoning about oslibdir spellings with the lib dir spellings in the
+ // GCCInstallationDetector, but that is a more significant refactoring.
+
+ if (Triple.getArch() == llvm::Triple::x86)
+ return "lib";
+
+ if (Triple.getArch() == llvm::Triple::x86_64)
+ return "lib";
+
+ return Triple.isArch32Bit() ? "lib" : "lib64";
+}
+
+static void addMultilibsFilePaths(const Driver &D, const MultilibSet &Multilibs,
+ const Multilib &Multilib,
+ StringRef InstallPath,
+ ToolChain::path_list &Paths) {
+ if (const auto &PathsCallback = Multilibs.filePathsCallback())
+ for (const auto &Path : PathsCallback(Multilib))
+ addPathIfExists(D, InstallPath + Path, Paths);
+}
+
+kFreeBSD::kFreeBSD(const Driver &D, const llvm::Triple &Triple,
+ const ArgList &Args)
+ : Generic_ELF(D, Triple, Args) {
+ GCCInstallation.init(Triple, Args);
+ Multilibs = GCCInstallation.getMultilibs();
+ std::string SysRoot = computeSysRoot();
+
+ // Cross-compiling binutils and GCC installations (vanilla and openSUSE at
+ // least) put various tools in a triple-prefixed directory off of the parent
+ // of the GCC installation. We use the GCC triple here to ensure that we end
+ // up with tools that support the same amount of cross compiling as the
+ // detected GCC installation. For example, if we find a GCC installation
+ // targeting x86_64, but it is a bi-arch GCC installation, it can also be
+ // used to target i386.
+ // FIXME: This seems unlikely to be Linux-, kFreeBSD- or Hurd-specific.
+ ToolChain::path_list &PPaths = getProgramPaths();
+ PPaths.push_back(Twine(GCCInstallation.getParentLibPath() + "/../" +
+ GCCInstallation.getTriple().str() + "/bin")
+ .str());
+
+#ifdef ENABLE_LINKER_BUILD_ID
+ ExtraOpts.push_back("--build-id");
+#endif
+
+ // The selection of paths to try here is designed to match the patterns which
+ // the GCC driver itself uses, as this is part of the GCC-compatible driver.
+ // This was determined by running GCC in a fake filesystem, creating all
+ // possible permutations of these directories, and seeing which ones it added
+ // to the link paths.
+ path_list &Paths = getFilePaths();
+
+ const std::string OSLibDir = getOSLibDir(Triple, Args);
+ const std::string MultiarchTriple = getMultiarchTriple(D, Triple, SysRoot);
+
+ // Add the multilib suffixed paths where they are available.
+ if (GCCInstallation.isValid()) {
+ const llvm::Triple &GCCTriple = GCCInstallation.getTriple();
+ const std::string &LibPath = GCCInstallation.getParentLibPath();
+ const Multilib &Multilib = GCCInstallation.getMultilib();
+ const MultilibSet &Multilibs = GCCInstallation.getMultilibs();
+
+ // Add toolchain / multilib specific file paths.
+ addMultilibsFilePaths(D, Multilibs, Multilib,
+ GCCInstallation.getInstallPath(), Paths);
+
+ // Sourcery CodeBench MIPS toolchain holds some libraries under
+ // a biarch-like suffix of the GCC installation.
+ addPathIfExists(D, GCCInstallation.getInstallPath() + Multilib.gccSuffix(),
+ Paths);
+
+ // GCC cross compiling toolchains will install target libraries which ship
+ // as part of the toolchain under <prefix>/<triple>/<libdir> rather than as
+ // any part of the GCC installation in
+ // <prefix>/<libdir>/gcc/<triple>/<version>. This decision is somewhat
+ // debatable, but is the reality today. We need to search this tree even
+ // when we have a sysroot somewhere else. It is the responsibility of
+ // whomever is doing the cross build targeting a sysroot using a GCC
+ // installation that is *not* within the system root to ensure two things:
+ //
+ // 1) Any DSOs that are linked in from this tree or from the install path
+ // above must be present on the system root and found via an
+ // appropriate rpath.
+ // 2) There must not be libraries installed into
+ // <prefix>/<triple>/<libdir> unless they should be preferred over
+ // those within the system root.
+ //
+ // Note that this matches the GCC behavior. See the below comment for where
+ // Clang diverges from GCC's behavior.
+ addPathIfExists(D, LibPath + "/../" + GCCTriple.str() + "/lib/../" +
+ OSLibDir + Multilib.osSuffix(),
+ Paths);
+
+ // If the GCC installation we found is inside of the sysroot, we want to
+ // prefer libraries installed in the parent prefix of the GCC installation.
+ // It is important to *not* use these paths when the GCC installation is
+ // outside of the system root as that can pick up unintended libraries.
+ // This usually happens when there is an external cross compiler on the
+ // host system, and a more minimal sysroot available that is the target of
+ // the cross. Note that GCC does include some of these directories in some
+ // configurations but this seems somewhere between questionable and simply
+ // a bug.
+ if (StringRef(LibPath).startswith(SysRoot)) {
+ addPathIfExists(D, LibPath + "/" + MultiarchTriple, Paths);
+ addPathIfExists(D, LibPath + "/../" + OSLibDir, Paths);
+ }
+ }
+
+ // Similar to the logic for GCC above, if we currently running Clang inside
+ // of the requested system root, add its parent library paths to
+ // those searched.
+ // FIXME: It's not clear whether we should use the driver's installed
+ // directory ('Dir' below) or the ResourceDir.
+ if (StringRef(D.Dir).startswith(SysRoot)) {
+ addPathIfExists(D, D.Dir + "/../lib/" + MultiarchTriple, Paths);
+ addPathIfExists(D, D.Dir + "/../" + OSLibDir, Paths);
+ }
+
+ addPathIfExists(D, SysRoot + "/lib/" + MultiarchTriple, Paths);
+ addPathIfExists(D, SysRoot + "/lib/../" + OSLibDir, Paths);
+
+ addPathIfExists(D, SysRoot + "/usr/lib/" + MultiarchTriple, Paths);
+ addPathIfExists(D, SysRoot + "/usr/lib/../" + OSLibDir, Paths);
+
+ // Try walking via the GCC triple path in case of biarch or multiarch GCC
+ // installations with strange symlinks.
+ if (GCCInstallation.isValid()) {
+ addPathIfExists(D,
+ SysRoot + "/usr/lib/" + GCCInstallation.getTriple().str() +
+ "/../../" + OSLibDir,
+ Paths);
+
+ // Add the 'other' biarch variant path
+ Multilib BiarchSibling;
+ if (GCCInstallation.getBiarchSibling(BiarchSibling)) {
+ addPathIfExists(D, GCCInstallation.getInstallPath() +
+ BiarchSibling.gccSuffix(),
+ Paths);
+ }
+
+ // See comments above on the multilib variant for details of why this is
+ // included even from outside the sysroot.
+ const std::string &LibPath = GCCInstallation.getParentLibPath();
+ const llvm::Triple &GCCTriple = GCCInstallation.getTriple();
+ const Multilib &Multilib = GCCInstallation.getMultilib();
+ addPathIfExists(D, LibPath + "/../" + GCCTriple.str() + "/lib" +
+ Multilib.osSuffix(),
+ Paths);
+
+ // See comments above on the multilib variant for details of why this is
+ // only included from within the sysroot.
+ if (StringRef(LibPath).startswith(SysRoot))
+ addPathIfExists(D, LibPath, Paths);
+ }
+
+ // Similar to the logic for GCC above, if we are currently running Clang
+ // inside of the requested system root, add its parent library path to those
+ // searched.
+ // FIXME: It's not clear whether we should use the driver's installed
+ // directory ('Dir' below) or the ResourceDir.
+ if (StringRef(D.Dir).startswith(SysRoot))
+ addPathIfExists(D, D.Dir + "/../lib", Paths);
+
+ addPathIfExists(D, SysRoot + "/lib", Paths);
+ addPathIfExists(D, SysRoot + "/usr/lib", Paths);
+}
+
+bool kFreeBSD::HasNativeLLVMSupport() const { return true; }
+
+Tool *kFreeBSD::buildLinker() const { return new tools::gnutools::Linker(*this); }
+
+Tool *kFreeBSD::buildAssembler() const {
+ return new tools::gnutools::Assembler(*this);
+}
+
+std::string kFreeBSD::computeSysRoot() const {
+ if (!getDriver().SysRoot.empty())
+ return getDriver().SysRoot;
+
+ return std::string();
+}
+
+std::string kFreeBSD::getDynamicLinker(const ArgList &Args) const {
+ const llvm::Triple::ArchType Arch = getArch();
+
+ if (Arch == llvm::Triple::x86_64)
+ return "/lib/ld-kfreebsd-x86-64.so.1";
+
+ if (Arch == llvm::Triple::x86)
+ return "/lib/ld.so.1";
+
+ llvm_unreachable("unsupported architecture");
+}
+
+void kFreeBSD::AddClangSystemIncludeArgs(const ArgList &DriverArgs,
+ ArgStringList &CC1Args) const {
+ const Driver &D = getDriver();
+ std::string SysRoot = computeSysRoot();
+
+ if (DriverArgs.hasArg(clang::driver::options::OPT_nostdinc))
+ return;
+
+ if (!DriverArgs.hasArg(options::OPT_nostdlibinc))
+ addSystemInclude(DriverArgs, CC1Args, SysRoot + "/usr/local/include");
+
+ if (!DriverArgs.hasArg(options::OPT_nobuiltininc)) {
+ SmallString<128> P(D.ResourceDir);
+ llvm::sys::path::append(P, "include");
+ addSystemInclude(DriverArgs, CC1Args, P);
+ }
+
+ if (DriverArgs.hasArg(options::OPT_nostdlibinc))
+ return;
+
+ // Check for configure-time C include directories.
+ StringRef CIncludeDirs(C_INCLUDE_DIRS);
+ if (CIncludeDirs != "") {
+ SmallVector<StringRef, 5> dirs;
+ CIncludeDirs.split(dirs, ":");
+ for (StringRef dir : dirs) {
+ StringRef Prefix =
+ llvm::sys::path::is_absolute(dir) ? StringRef(SysRoot) : "";
+ addExternCSystemInclude(DriverArgs, CC1Args, Prefix + dir);
+ }
+ // addExternCSystemInclude(DriverArgs, CC1Args, SysRoot + "/usr/include");
+ return;
+ }
+
+ // Lacking those, try to detect the correct set of system includes for the
+ // target triple.
+
+ // Add include directories specific to the selected multilib set and multilib.
+ if (GCCInstallation.isValid()) {
+ const auto &Callback = Multilibs.includeDirsCallback();
+ if (Callback) {
+ for (const auto &Path : Callback(GCCInstallation.getMultilib()))
+ addExternCSystemIncludeIfExists(
+ DriverArgs, CC1Args, GCCInstallation.getInstallPath() + Path);
+ }
+ }
+
+ // Implement generic Debian multiarch support.
+ const StringRef X86_64MultiarchIncludeDirs[] = {
+ "/usr/include/x86_64-kfreebsd-gnu"};
+
+ // CHECK
+ const StringRef X86MultiarchIncludeDirs[] = {
+ "/usr/include/i386-kfreebsd-gnu"};
+
+ ArrayRef<StringRef> MultiarchIncludeDirs;
+ switch (getTriple().getArch()) {
+ case llvm::Triple::x86:
+ MultiarchIncludeDirs = X86MultiarchIncludeDirs;
+ break;
+ case llvm::Triple::x86_64:
+ MultiarchIncludeDirs = X86_64MultiarchIncludeDirs;
+ break;
+ default:
+ break;
+ }
+
+ for (StringRef Dir : MultiarchIncludeDirs) {
+ if (D.getVFS().exists(SysRoot + Dir)) {
+ addExternCSystemInclude(DriverArgs, CC1Args, SysRoot + Dir);
+ break;
+ }
+ }
+
+ // Add an include of '/include' directly. This isn't provided by default by
+ // system GCCs, but is often used with cross-compiling GCCs, and harmless to
+ // add even when Clang is acting as-if it were a system compiler.
+ addExternCSystemInclude(DriverArgs, CC1Args, SysRoot + "/include");
+
+ addExternCSystemInclude(DriverArgs, CC1Args, SysRoot + "/usr/include");
+}
+
+static std::string DetectLibcxxIncludePath(StringRef base) {
+ std::error_code EC;
+ int MaxVersion = 0;
+ std::string MaxVersionString = "";
+ for (llvm::sys::fs::directory_iterator LI(base, EC), LE; !EC && LI != LE;
+ LI = LI.increment(EC)) {
+ StringRef VersionText = llvm::sys::path::filename(LI->path());
+ int Version;
+ if (VersionText[0] == 'v' &&
+ !VersionText.slice(1, StringRef::npos).getAsInteger(10, Version)) {
+ if (Version > MaxVersion) {
+ MaxVersion = Version;
+ MaxVersionString = VersionText;
+ }
+ }
+ }
+ return MaxVersion ? (base + "/" + MaxVersionString).str() : "";
+}
+
+void kFreeBSD::addLibCxxIncludePaths(const llvm::opt::ArgList &DriverArgs,
+ llvm::opt::ArgStringList &CC1Args) const {
+ const std::string& SysRoot = computeSysRoot();
+ const std::string LibCXXIncludePathCandidates[] = {
+ DetectLibcxxIncludePath(getDriver().ResourceDir + "/include/c++"),
+ DetectLibcxxIncludePath(getDriver().Dir + "/../include/c++"),
+ // If this is a development, non-installed, clang, libcxx will
+ // not be found at ../include/c++ but it likely to be found at
+ // one of the following two locations:
+ DetectLibcxxIncludePath(SysRoot + "/usr/local/include/c++"),
+ DetectLibcxxIncludePath(SysRoot + "/usr/include/c++") };
+ for (const auto &IncludePath : LibCXXIncludePathCandidates) {
+ if (IncludePath.empty() || !getVFS().exists(IncludePath))
+ continue;
+ // Use the first candidate that exists.
+ addSystemInclude(DriverArgs, CC1Args, IncludePath);
+ return;
+ }
+}
+
+void kFreeBSD::addLibStdCxxIncludePaths(const llvm::opt::ArgList &DriverArgs,
+ llvm::opt::ArgStringList &CC1Args) const {
+ // We need a detected GCC installation on kFreeBSD to provide libstdc++'s
+ // headers.
+ if (!GCCInstallation.isValid())
+ return;
+
+ // By default, look for the C++ headers in an include directory adjacent to
+ // the lib directory of the GCC installation. Note that this is expect to be
+ // equivalent to '/usr/include/c++/X.Y' in almost all cases.
+ StringRef LibDir = GCCInstallation.getParentLibPath();
+ StringRef InstallDir = GCCInstallation.getInstallPath();
+ StringRef TripleStr = GCCInstallation.getTriple().str();
+ const Multilib &Multilib = GCCInstallation.getMultilib();
+ const std::string GCCMultiarchTriple = getMultiarchTriple(
+ getDriver(), GCCInstallation.getTriple(), getDriver().SysRoot);
+ const std::string TargetMultiarchTriple =
+ getMultiarchTriple(getDriver(), getTriple(), getDriver().SysRoot);
+ const GCCVersion &Version = GCCInstallation.getVersion();
+
+ // The primary search for libstdc++ supports multiarch variants.
+ if (addLibStdCXXIncludePaths(LibDir.str() + "/../include",
+ "/c++/" + Version.Text, TripleStr,
+ GCCMultiarchTriple, TargetMultiarchTriple,
+ Multilib.includeSuffix(), DriverArgs, CC1Args))
+ return;
+
+ // Otherwise, fall back on a bunch of options which don't use multiarch
+ // layouts for simplicity.
+ const std::string LibStdCXXIncludePathCandidates[] = {
+ // Gentoo is weird and places its headers inside the GCC install,
+ // so if the first attempt to find the headers fails, try these patterns.
+ InstallDir.str() + "/include/g++-v" + Version.Text,
+ InstallDir.str() + "/include/g++-v" + Version.MajorStr + "." +
+ Version.MinorStr,
+ InstallDir.str() + "/include/g++-v" + Version.MajorStr,
+ // Android standalone toolchain has C++ headers in yet another place.
+ LibDir.str() + "/../" + TripleStr.str() + "/include/c++/" + Version.Text,
+ // Freescale SDK C++ headers are directly in <sysroot>/usr/include/c++,
+ // without a subdirectory corresponding to the gcc version.
+ LibDir.str() + "/../include/c++",
+ };
+
+ for (const auto &IncludePath : LibStdCXXIncludePathCandidates) {
+ if (addLibStdCXXIncludePaths(IncludePath, /*Suffix*/ "", TripleStr,
+ /*GCCMultiarchTriple*/ "",
+ /*TargetMultiarchTriple*/ "",
+ Multilib.includeSuffix(), DriverArgs, CC1Args))
+ break;
+ }
+}
+
+/* FIXME:
+/home/srs/DEBs/llvm-toolchain-7/llvm-toolchain-7-7.0.1~+rc2-7/clang/lib/Driver/ToolChains/KFreeBSD.cpp:431:15: error: no declaration matches clang::SanitizerMask clang::driver::toolchains::kFreeBSD::getSupportedSanitizers() const
+ SanitizerMask kFreeBSD::getSupportedSanitizers() const {
+*/
+SanitizerMask kFreeBSD::getSupportedSanitizers() const {
+ const bool IsX86 = getTriple().getArch() == llvm::Triple::x86;
+ const bool IsX86_64 = getTriple().getArch() == llvm::Triple::x86_64;
+ SanitizerMask Res = ToolChain::getSupportedSanitizers();
+ // FIXME: Add here!!
+ if (IsX86_64) {
+ Res |= SanitizerKind::DataFlow;
+ Res |= SanitizerKind::Leak;
+ Res |= SanitizerKind::Thread;
+ Res |= SanitizerKind::Scudo;
+ Res |= SanitizerKind::HWAddress;
+ Res |= SanitizerKind::KernelHWAddress;
+ }
+ if (IsX86 || IsX86_64)
+ Res |= SanitizerKind::Function;
+
+ return Res;
+}
+
Index: llvm-toolchain-9_9.0.0/clang/lib/Driver/ToolChains/KFreeBSD.h
===================================================================
--- /dev/null
+++ llvm-toolchain-9_9.0.0/clang/lib/Driver/ToolChains/KFreeBSD.h
@@ -0,0 +1,54 @@
+//===--- KFreeBSD.h - kFreeBSD ToolChain Implementations ----------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_KFreeBSD_H
+#define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_KFreeBSD_H
+
+#include "Gnu.h"
+#include "clang/Driver/ToolChain.h"
+
+namespace clang {
+namespace driver {
+namespace toolchains {
+
+class LLVM_LIBRARY_VISIBILITY kFreeBSD : public Generic_ELF {
+public:
+ kFreeBSD(const Driver &D, const llvm::Triple &Triple,
+ const llvm::opt::ArgList &Args);
+
+ bool HasNativeLLVMSupport() const override;
+
+ void
+ AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,
+ llvm::opt::ArgStringList &CC1Args) const override;
+ void addLibCxxIncludePaths(
+ const llvm::opt::ArgList &DriverArgs,
+ llvm::opt::ArgStringList &CC1Args) const override;
+ void addLibStdCxxIncludePaths(
+ const llvm::opt::ArgList &DriverArgs,
+ llvm::opt::ArgStringList &CC1Args) const override;
+
+ SanitizerMask getSupportedSanitizers() const override;
+
+ virtual std::string computeSysRoot() const;
+
+ virtual std::string getDynamicLinker(const llvm::opt::ArgList &Args) const;
+
+ std::vector<std::string> ExtraOpts;
+
+protected:
+ Tool *buildAssembler() const override;
+ Tool *buildLinker() const override;
+};
+
+} // end namespace toolchains
+} // end namespace driver
+} // end namespace clang
+
+#endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_KFreeBSD_H

View File

@ -1,23 +0,0 @@
Index: llvm-toolchain-9_9.0.0/llvm/unittests/ADT/TripleTest.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/unittests/ADT/TripleTest.cpp
+++ llvm-toolchain-9_9.0.0/llvm/unittests/ADT/TripleTest.cpp
@@ -98,6 +98,18 @@ TEST(TripleTest, ParsedIDs) {
EXPECT_EQ(Triple::Hurd, T.getOS());
EXPECT_EQ(Triple::GNU, T.getEnvironment());
+ T = Triple("i386-pc-kfreebsd-gnu");
+ EXPECT_EQ(Triple::x86, T.getArch());
+ EXPECT_EQ(Triple::PC, T.getVendor());
+ EXPECT_EQ(Triple::kFreeBSD, T.getOS());
+ EXPECT_EQ(Triple::GNU, T.getEnvironment());
+
+ T = Triple("x86_64-pc-kfreebsd-gnu");
+ EXPECT_EQ(Triple::x86_64, T.getArch());
+ EXPECT_EQ(Triple::PC, T.getVendor());
+ EXPECT_EQ(Triple::kFreeBSD, T.getOS());
+ EXPECT_EQ(Triple::GNU, T.getEnvironment());
+
T = Triple("x86_64-pc-linux-gnu");
EXPECT_EQ(Triple::x86_64, T.getArch());
EXPECT_EQ(Triple::PC, T.getVendor());

View File

@ -1,35 +0,0 @@
Index: llvm-toolchain-9_9.0.0/llvm/lib/Support/Triple.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/lib/Support/Triple.cpp
+++ llvm-toolchain-9_9.0.0/llvm/lib/Support/Triple.cpp
@@ -183,7 +183,7 @@ StringRef Triple::getOSTypeName(OSType K
case FreeBSD: return "freebsd";
case Fuchsia: return "fuchsia";
case IOS: return "ios";
- case KFreeBSD: return "kfreebsd";
+ case kFreeBSD: return "kfreebsd";
case Linux: return "linux";
case Lv2: return "lv2";
case MacOSX: return "macosx";
@@ -488,7 +488,7 @@ static Triple::OSType parseOS(StringRef
.StartsWith("freebsd", Triple::FreeBSD)
.StartsWith("fuchsia", Triple::Fuchsia)
.StartsWith("ios", Triple::IOS)
- .StartsWith("kfreebsd", Triple::KFreeBSD)
+ .StartsWith("kfreebsd", Triple::kFreeBSD)
.StartsWith("linux", Triple::Linux)
.StartsWith("lv2", Triple::Lv2)
.StartsWith("macos", Triple::MacOSX)
Index: llvm-toolchain-9_9.0.0/llvm/lib/Support/Unix/Path.inc
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/lib/Support/Unix/Path.inc
+++ llvm-toolchain-9_9.0.0/llvm/lib/Support/Unix/Path.inc
@@ -62,7 +62,7 @@
#define FSTATVFS fstatvfs
#define STATVFS_F_FRSIZE(vfs) vfs.f_frsize
#else
-#if defined(__OpenBSD__) || defined(__FreeBSD__)
+#if defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
#include <sys/mount.h>
#include <sys/param.h>
#elif defined(__linux__)

View File

@ -1,26 +0,0 @@
Index: llvm-toolchain-9_9.0.0/llvm/lib/Target/X86/X86Subtarget.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/lib/Target/X86/X86Subtarget.cpp
+++ llvm-toolchain-9_9.0.0/llvm/lib/Target/X86/X86Subtarget.cpp
@@ -290,7 +290,7 @@ void X86Subtarget::initSubtargetFeatures
if (StackAlignOverride)
stackAlignment = StackAlignOverride;
else if (isTargetDarwin() || isTargetLinux() || isTargetSolaris() ||
- isTargetKFreeBSD() || In64BitMode)
+ isTargetkFreeBSD() || In64BitMode)
stackAlignment = 16;
// Some CPUs have more overhead for gather. The specified overhead is relative
Index: llvm-toolchain-9_9.0.0/llvm/lib/Target/X86/X86Subtarget.h
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/lib/Target/X86/X86Subtarget.h
+++ llvm-toolchain-9_9.0.0/llvm/lib/Target/X86/X86Subtarget.h
@@ -758,7 +758,7 @@ public:
bool isTargetMachO() const { return TargetTriple.isOSBinFormatMachO(); }
bool isTargetLinux() const { return TargetTriple.isOSLinux(); }
- bool isTargetKFreeBSD() const { return TargetTriple.isOSKFreeBSD(); }
+ bool isTargetkFreeBSD() const { return TargetTriple.isOSkFreeBSD(); }
bool isTargetGlibc() const { return TargetTriple.isOSGlibc(); }
bool isTargetAndroid() const { return TargetTriple.isAndroid(); }
bool isTargetNaCl() const { return TargetTriple.isOSNaCl(); }

View File

@ -1,18 +0,0 @@
Index: llvm-toolchain-9_9.0.0/lldb/source/Host/freebsd/Host.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/lldb/source/Host/freebsd/Host.cpp
+++ llvm-toolchain-9_9.0.0/lldb/source/Host/freebsd/Host.cpp
@@ -10,6 +10,13 @@
#include <sys/types.h>
#include <sys/exec.h>
+#ifdef __FreeBSD_kernel__
+# ifdef __amd64__
+# include </usr/include/x86_64-kfreebsd-gnu/sys/kglue/sys/types.h>
+# else
+# include </usr/include/i386-kfreebsd-gnu/sys/kglue/sys/types.h>
+# endif
+#endif
#include <sys/proc.h>
#include <sys/ptrace.h>
#include <sys/sysctl.h>

View File

@ -1,28 +0,0 @@
Index: llvm-toolchain-9_9.0.0/lldb/source/Plugins/Process/FreeBSD/FreeBSDThread.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/lldb/source/Plugins/Process/FreeBSD/FreeBSDThread.cpp
+++ llvm-toolchain-9_9.0.0/lldb/source/Plugins/Process/FreeBSD/FreeBSDThread.cpp
@@ -8,7 +8,9 @@
#include <errno.h>
#include <pthread.h>
+#ifndef __FreeBSD_kernel__
#include <pthread_np.h>
+#endif
#include <stdlib.h>
#include <sys/sysctl.h>
#include <sys/types.h>
Index: llvm-toolchain-9_9.0.0/lldb/source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/lldb/source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp
+++ llvm-toolchain-9_9.0.0/lldb/source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp
@@ -9,7 +9,9 @@
#include <errno.h>
#include <pthread.h>
+#ifndef __FreeBSD_kernel__
#include <pthread_np.h>
+#endif
#include <stdlib.h>
#include <sys/sysctl.h>
#include <sys/types.h>

View File

@ -1,12 +0,0 @@
Index: llvm-toolchain-9_9.0.0/llvm/tools/llvm-shlib/CMakeLists.txt
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/tools/llvm-shlib/CMakeLists.txt
+++ llvm-toolchain-9_9.0.0/llvm/tools/llvm-shlib/CMakeLists.txt
@@ -49,6 +49,7 @@ if(LLVM_BUILD_LLVM_DYLIB)
list(REMOVE_DUPLICATES LIB_NAMES)
if(("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") OR (MINGW) OR (HAIKU)
OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD")
+ OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "kFreeBSD")
OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "GNU")
OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "OpenBSD")
OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "Fuchsia")

View File

@ -1,81 +0,0 @@
commit 09e6304440c08fe72b6ac05f922ab9d8b7f1e387
Author: Roger Ferrer Ibanez <rofirrim@gmail.com>
Date: Wed Jul 24 05:33:46 2019 +0000
[RISCV] Implement benchmark::cycleclock::Now
This is a cherrypick of D64237 onto llvm/utils/benchmark and
libcxx/utils/google-benchmark.
Differential Revision: https://reviews.llvm.org/D65142
llvm-svn: 366868
--- a/libcxx/utils/google-benchmark/README.LLVM
+++ b/libcxx/utils/google-benchmark/README.LLVM
@@ -4,3 +4,9 @@ LLVM notes
This directory contains the Google Benchmark source code with some unnecessary
files removed. Note that this directory is under a different license than
libc++.
+
+Changes:
+* https://github.com/google/benchmark/commit/4abdfbb802d1b514703223f5f852ce4a507d32d2
+ is applied on top of
+ https://github.com/google/benchmark/commit/4528c76b718acc9b57956f63069c699ae21edcab
+ to add RISC-V timer support.
--- a/libcxx/utils/google-benchmark/src/cycleclock.h
+++ b/libcxx/utils/google-benchmark/src/cycleclock.h
@@ -164,6 +164,21 @@ inline BENCHMARK_ALWAYS_INLINE int64_t Now() {
uint64_t tsc;
asm("stck %0" : "=Q"(tsc) : : "cc");
return tsc;
+#elif defined(__riscv) // RISC-V
+ // Use RDCYCLE (and RDCYCLEH on riscv32)
+#if __riscv_xlen == 32
+ uint64_t cycles_low, cycles_hi0, cycles_hi1;
+ asm("rdcycleh %0" : "=r"(cycles_hi0));
+ asm("rdcycle %0" : "=r"(cycles_lo));
+ asm("rdcycleh %0" : "=r"(cycles_hi1));
+ // This matches the PowerPC overflow detection, above
+ cycles_lo &= -static_cast<int64_t>(cycles_hi0 == cycles_hi1);
+ return (cycles_hi1 << 32) | cycles_lo;
+#else
+ uint64_t cycles;
+ asm("rdcycle %0" : "=r"(cycles));
+ return cycles;
+#endif
#else
// The soft failover to a generic implementation is automatic only for ARM.
// For other platforms the developer is expected to make an attempt to create
--- a/utils/benchmark/README.LLVM
+++ b/utils/benchmark/README.LLVM
@@ -23,3 +23,5 @@ Changes:
is applied to disable exceptions in Microsoft STL when exceptions are disabled
* Disabled CMake get_git_version as it is meaningless for this in-tree build,
and hardcoded a null version
+* https://github.com/google/benchmark/commit/4abdfbb802d1b514703223f5f852ce4a507d32d2
+ is applied on top of v1.4.1 to add RISC-V timer support.
--- a/utils/benchmark/src/cycleclock.h
+++ b/utils/benchmark/src/cycleclock.h
@@ -164,6 +164,21 @@ inline BENCHMARK_ALWAYS_INLINE int64_t Now() {
uint64_t tsc;
asm("stck %0" : "=Q" (tsc) : : "cc");
return tsc;
+#elif defined(__riscv) // RISC-V
+ // Use RDCYCLE (and RDCYCLEH on riscv32)
+#if __riscv_xlen == 32
+ uint64_t cycles_low, cycles_hi0, cycles_hi1;
+ asm("rdcycleh %0" : "=r"(cycles_hi0));
+ asm("rdcycle %0" : "=r"(cycles_lo));
+ asm("rdcycleh %0" : "=r"(cycles_hi1));
+ // This matches the PowerPC overflow detection, above
+ cycles_lo &= -static_cast<int64_t>(cycles_hi0 == cycles_hi1);
+ return (cycles_hi1 << 32) | cycles_lo;
+#else
+ uint64_t cycles;
+ asm("rdcycle %0" : "=r"(cycles));
+ return cycles;
+#endif
#else
// The soft failover to a generic implementation is automatic only for ARM.
// For other platforms the developer is expected to make an attempt to create

View File

@ -1,25 +0,0 @@
Index: llvm-toolchain-9_9.0.0/libcxx/test/std/thread/thread.condition/thread.condition.condvar/wait_for.pass.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/libcxx/test/std/thread/thread.condition/thread.condition.condvar/wait_for.pass.cpp
+++ llvm-toolchain-9_9.0.0/libcxx/test/std/thread/thread.condition/thread.condition.condvar/wait_for.pass.cpp
@@ -7,6 +7,7 @@
//===----------------------------------------------------------------------===//
//
// UNSUPPORTED: libcpp-has-no-threads
+// XFAIL: *
// FLAKY_TEST.
Index: llvm-toolchain-9_9.0.0/libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/lock.pass.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/lock.pass.cpp
+++ llvm-toolchain-9_9.0.0/libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/lock.pass.cpp
@@ -8,7 +8,7 @@
//
// UNSUPPORTED: libcpp-has-no-threads
// UNSUPPORTED: c++98, c++03, c++11
-// XFAIL: dylib-has-no-shared_mutex
+// XFAIL: *
// FLAKY_TEST.

View File

@ -1,13 +0,0 @@
Index: llvm-toolchain-9_9.0.0/libcxx/test/libcxx/atomics/atomics.align/align.pass.sh.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/libcxx/test/libcxx/atomics/atomics.align/align.pass.sh.cpp
+++ llvm-toolchain-9_9.0.0/libcxx/test/libcxx/atomics/atomics.align/align.pass.sh.cpp
@@ -13,7 +13,7 @@
//
// GCC currently fails because it needs -fabi-version=6 to fix mangling of
// std::atomic when used with __attribute__((vector(X))).
-// XFAIL: gcc
+// XFAIL: *
// <atomic>

View File

@ -1,51 +0,0 @@
Index: llvm-toolchain-9_9.0.0/libcxx/test/std/numerics/rand/rand.util/rand.util.canonical/generate_canonical.pass.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/libcxx/test/std/numerics/rand/rand.util/rand.util.canonical/generate_canonical.pass.cpp
+++ llvm-toolchain-9_9.0.0/libcxx/test/std/numerics/rand/rand.util/rand.util.canonical/generate_canonical.pass.cpp
@@ -11,6 +11,8 @@
// template<class RealType, size_t bits, class URNG>
// RealType generate_canonical(URNG& g);
+// XFAIL: *
+
#include <random>
#include <cassert>
Index: llvm-toolchain-9_9.0.0/libcxx/test/std/re/re.traits/isctype.pass.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/libcxx/test/std/re/re.traits/isctype.pass.cpp
+++ llvm-toolchain-9_9.0.0/libcxx/test/std/re/re.traits/isctype.pass.cpp
@@ -15,6 +15,7 @@
// TODO(EricWF): This test takes 40+ minutes to build with Clang 3.8 under ASAN or MSAN.
// UNSUPPORTED: asan, msan
+// XFAIL: *
#include <regex>
#include <cassert>
Index: llvm-toolchain-9_9.0.0/libcxxabi/test/catch_multi_level_pointer.pass.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/libcxxabi/test/catch_multi_level_pointer.pass.cpp
+++ llvm-toolchain-9_9.0.0/libcxxabi/test/catch_multi_level_pointer.pass.cpp
@@ -8,6 +8,8 @@
// UNSUPPORTED: libcxxabi-no-exceptions
+// XFAIL: *
+
#include <cassert>
#include <cstdlib>
#include <iostream>
Index: llvm-toolchain-9_9.0.0/libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.members/construct.pass.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.members/construct.pass.cpp
+++ llvm-toolchain-9_9.0.0/libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.members/construct.pass.cpp
@@ -15,6 +15,8 @@
// template <class T, class... Args> void construct(T* p, Args&&... args);
+// XFAIL: *
+
#include <scoped_allocator>
#include <cassert>
#include <string>

View File

@ -1,58 +0,0 @@
Clang 3.9 regression causes a bug when generating code for
std::atomic_compare_and_exchange*(std::atomic<long long>,...) without
optimizations. If same code is compiled with -O2 tests pass without problems.
Atomics are implement in headers with builtin functions which makes this
affect application code instead of libc++ library code.
libcxx tests default to -O0 compilation so these test need to be marked failing
on arm to allow installing packages. Use cases is so borderline failure that it
shouldn't prevent building the package. (64bit atomics in 32bit mode)
Index: llvm-toolchain-9_9.0.0/libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_strong.pass.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_strong.pass.cpp
+++ llvm-toolchain-9_9.0.0/libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_strong.pass.cpp
@@ -7,6 +7,7 @@
//===----------------------------------------------------------------------===//
//
// UNSUPPORTED: libcpp-has-no-threads
+// XFAIL: arm
// ... assertion fails line 34
// <atomic>
Index: llvm-toolchain-9_9.0.0/libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_strong_explicit.pass.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_strong_explicit.pass.cpp
+++ llvm-toolchain-9_9.0.0/libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_strong_explicit.pass.cpp
@@ -7,6 +7,7 @@
//===----------------------------------------------------------------------===//
//
// UNSUPPORTED: libcpp-has-no-threads
+// XFAIL: arm
// ... assertion fails line 38
// <atomic>
Index: llvm-toolchain-9_9.0.0/libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_weak.pass.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_weak.pass.cpp
+++ llvm-toolchain-9_9.0.0/libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_weak.pass.cpp
@@ -7,6 +7,7 @@
//===----------------------------------------------------------------------===//
//
// UNSUPPORTED: libcpp-has-no-threads
+// XFAIL: arm
// ... assertion fails line 34
// <atomic>
Index: llvm-toolchain-9_9.0.0/libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_weak_explicit.pass.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_weak_explicit.pass.cpp
+++ llvm-toolchain-9_9.0.0/libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_weak_explicit.pass.cpp
@@ -7,6 +7,7 @@
//===----------------------------------------------------------------------===//
//
// UNSUPPORTED: libcpp-has-no-threads
+// XFAIL: arm
// ... assertion fails line 38
// <atomic>

View File

@ -1,31 +0,0 @@
Lock is_always_lock free test fails on i386 because std::atomic is aligned
to 8 bytes while long long is aligned to 4 bytes. clang can't generate inline
code for unaligned 8 byte atomics even tough instruction set and gcc support
it.
That makes it expected thaqt ATOMIC_LLONG_LOCK_FREE and
std::atomic<long long>::is_always_lock_free don't match on i386. Correct test
for std::atomic<long long> is to check if target cpu support cmpxchg8 instruction.
To set instruction support one can check __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 define.
Bug: https://llvm.org/bugs/show_bug.cgi?id=19355
Index: llvm-toolchain-9_9.0.0/libcxx/test/std/atomics/atomics.lockfree/isalwayslockfree.pass.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/libcxx/test/std/atomics/atomics.lockfree/isalwayslockfree.pass.cpp
+++ llvm-toolchain-9_9.0.0/libcxx/test/std/atomics/atomics.lockfree/isalwayslockfree.pass.cpp
@@ -21,6 +21,14 @@
# error Feature test macro missing.
#endif
+#if defined(__i386__) && defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8)
+/* Fix for clang setting __GCC_ATOMIC_LLONG_LOCK_FREE incorecctly for x86
+ * https://llvm.org/bugs/show_bug.cgi?id=19355
+ */
+#undef ATOMIC_LLONG_LOCK_FREE
+#define ATOMIC_LLONG_LOCK_FREE 2
+#endif
+
template <typename T> void checkAlwaysLockFree() {
if (std::atomic<T>::is_always_lock_free)
assert(std::atomic<T>().is_lock_free());

View File

@ -1,118 +0,0 @@
Fix arm EHABI code to work. armhf had exception test failing without EHABI support.
No known upstream bug about this. Actual code change is more like workaround than
something that upstream would accept. Proper fix would be adding _Unwind_Control_Block
to clang unwind.h. _Unwind_Control_Block should also extend _Unwind_Exception to make
sure their ABI stays in sync.
No known upstream bug about this.
Index: llvm-toolchain-9_9.0.0/libcxxabi/src/cxa_exception.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/libcxxabi/src/cxa_exception.cpp
+++ llvm-toolchain-9_9.0.0/libcxxabi/src/cxa_exception.cpp
@@ -276,15 +276,16 @@ __cxa_throw(void *thrown_object, std::ty
#ifdef __USING_SJLJ_EXCEPTIONS__
_Unwind_SjLj_RaiseException(&exception_header->unwindHeader);
-#else
+#elif !LIBCXXABI_ARM_EHABI
_Unwind_RaiseException(&exception_header->unwindHeader);
+#else
+ _Unwind_RaiseException(exception_header->unwindHeader);
#endif
// This only happens when there is no handler, or some unexpected unwinding
// error happens.
failed_throw(exception_header);
}
-
// 2.5.3 Exception Handlers
/*
The adjusted pointer is computed by the personality routine during phase 1
@@ -547,7 +548,11 @@ void __cxa_end_catch() {
// to touch a foreign exception in any way, that is undefined
// behavior. They likely can't since the only way to catch
// a foreign exception is with catch (...)!
+#if !LIBCXXABI_ARM_EHABI
_Unwind_DeleteException(&globals->caughtExceptions->unwindHeader);
+#else
+ _Unwind_DeleteException(globals->caughtExceptions->unwindHeader);
+#endif
globals->caughtExceptions = 0;
}
}
@@ -604,8 +609,10 @@ void __cxa_rethrow() {
}
#ifdef __USING_SJLJ_EXCEPTIONS__
_Unwind_SjLj_RaiseException(&exception_header->unwindHeader);
-#else
+#elif !LIBCXXABI_ARM_EHABI
_Unwind_RaiseException(&exception_header->unwindHeader);
+#else
+ _Unwind_RaiseException(exception_header->unwindHeader);
#endif
// If we get here, some kind of unwinding error has occurred.
@@ -729,8 +736,10 @@ __cxa_rethrow_primary_exception(void* th
dep_exception_header->unwindHeader.exception_cleanup = dependent_exception_cleanup;
#ifdef __USING_SJLJ_EXCEPTIONS__
_Unwind_SjLj_RaiseException(&dep_exception_header->unwindHeader);
+#elif !LIBCXXABI_ARM_EHABI
+ _Unwind_RaiseException(&dep_exception_header->unwindHeader);
#else
- _Unwind_RaiseException(&dep_exception_header->unwindHeader);
+ _Unwind_RaiseException(dep_exception_header->unwindHeader);
#endif
// Some sort of unwinding error. Note that terminate is a handler.
__cxa_begin_catch(&dep_exception_header->unwindHeader);
Index: llvm-toolchain-9_9.0.0/libcxxabi/src/cxa_exception.hpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/libcxxabi/src/cxa_exception.hpp
+++ llvm-toolchain-9_9.0.0/libcxxabi/src/cxa_exception.hpp
@@ -27,6 +27,45 @@ uint64_t __getExceptionClass (const _Un
void __setExceptionClass ( _Unwind_Exception*, uint64_t);
bool __isOurExceptionClass(const _Unwind_Exception*);
+#if LIBCXXABI_ARM_EHABI
+// GCC has _Unwind_Control_Block in unwind.h (unwind_arm_common.h)
+#if defined(__clang__)
+struct _Unwind_Control_Block
+{
+ uint64_t exception_class;
+ void (*exception_cleanup)(_Unwind_Reason_Code, _Unwind_Control_Block *);
+ struct {
+ _Unwind_Word reserved1;
+ _Unwind_Word reserved2;
+ _Unwind_Word reserved3;
+ _Unwind_Word reserved4;
+ _Unwind_Word reserved5;
+ } unwinder_cache;
+ struct {
+ _Unwind_Word sp;
+ _Unwind_Word bitpattern[5];
+ } barrier_cache;
+ struct {
+ _Unwind_Word bitpattern[4];
+ } cleanup_cache;
+ struct {
+ _Unwind_Word fnstart;
+ _Unwind_Word *ehtp;
+ _Unwind_Word additional;
+ _Unwind_Word reserved1;
+ } pr_cache;
+ long long int :0;
+ operator _Unwind_Exception*() noexcept
+ {
+ return reinterpret_cast<_Unwind_Exception*>(this);
+ }
+};
+
+#endif
+
+#define _Unwind_Exception _Unwind_Control_Block
+#endif
+
struct _LIBCXXABI_HIDDEN __cxa_exception {
#if defined(__LP64__) || defined(_LIBCXXABI_ARM_EHABI)
// This is a new field to support C++ 0x exception_ptr.

View File

@ -1,17 +0,0 @@
Powerpc has extended double that doesn't match x86 coding. Power format would
need special tests to verify correctness but for now it is enough to prevent
incorrect test from running.
Index: llvm-toolchain-9_9.0.0/libcxxabi/test/test_demangle.pass.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/libcxxabi/test/test_demangle.pass.cpp
+++ llvm-toolchain-9_9.0.0/libcxxabi/test/test_demangle.pass.cpp
@@ -29817,7 +29817,7 @@ const char* invalid_cases[] =
"NSoERj5E=Y1[uM:ga",
"Aon_PmKVPDk7?fg4XP5smMUL6;<WsI_mgbf23cCgsHbT<l8EE\0uVRkNOoXDrgdA4[8IU>Vl<>IL8ayHpiVDDDXTY;^o9;i",
"_ZNSt16allocator_traitsISaIN4llvm3sys2fs18directory_iteratorEEE9constructIS3_IS3_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS4_PT_DpOS7_",
-#if !LDBL_FP80
+#if !LDBL_FP80 && __LDBL_MANT_DIG__ < 64
"_ZN5test01hIfEEvRAcvjplstT_Le4001a000000000000000E_c",
#endif
// The following test cases were found by libFuzzer+ASAN

View File

@ -1,17 +0,0 @@
---
lldb/scripts/Python/finishSwigPythonLLDB.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: llvm-toolchain-9_9.0.0/lldb/scripts/Python/finishSwigPythonLLDB.py
===================================================================
--- llvm-toolchain-9_9.0.0.orig/lldb/scripts/Python/finishSwigPythonLLDB.py
+++ llvm-toolchain-9_9.0.0/lldb/scripts/Python/finishSwigPythonLLDB.py
@@ -443,7 +443,7 @@ def make_symlink_liblldb(
if eOSType == utilsOsType.EnumOsType.Darwin:
strLibFileExtn = ".dylib"
else:
- strLibFileExtn = ".so"
+ strLibFileExtn = "-9.so"
strSrc = os.path.join(vstrLldbLibDir, "liblldb" + strLibFileExtn)
bOk, strErrMsg = make_symlink(

View File

@ -1,43 +0,0 @@
---
lldb/source/API/CMakeLists.txt | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
Index: llvm-toolchain-9_9.0.0/lldb/source/API/CMakeLists.txt
===================================================================
--- llvm-toolchain-9_9.0.0.orig/lldb/source/API/CMakeLists.txt
+++ llvm-toolchain-9_9.0.0/lldb/source/API/CMakeLists.txt
@@ -13,7 +13,12 @@ if(LLDB_BUILD_FRAMEWORK)
set(option_install_prefix INSTALL_PREFIX ${LLDB_FRAMEWORK_INSTALL_DIR})
endif()
-add_lldb_library(liblldb SHARED
+set(output_name lldb)
+if (CMAKE_SYSTEM_NAME MATCHES "Windows")
+ set(output_name liblldb)
+endif()
+
+add_lldb_library(liblldb SHARED OUTPUT_NAME ${output_name} SONAME
SBAddress.cpp
SBAttachInfo.cpp
SBBlock.cpp
@@ -130,7 +135,7 @@ endif()
set_target_properties(liblldb
PROPERTIES
- VERSION ${LLDB_VERSION}
+ VERSION 1
)
if (NOT CMAKE_SYSTEM_NAME MATCHES "Windows")
@@ -155,11 +160,6 @@ if ( CMAKE_SYSTEM_NAME MATCHES "Windows"
if (MSVC AND NOT LLDB_DISABLE_PYTHON)
target_link_libraries(liblldb PRIVATE ${PYTHON_LIBRARY})
endif()
-else()
- set_target_properties(liblldb
- PROPERTIES
- OUTPUT_NAME lldb
- )
endif()
if (NOT LLDB_BUILT_STANDALONE)

View File

@ -1,34 +0,0 @@
lldb-server exec users always /usr/bin/lldb-server. Server is required
for any debugging with lldb which makes it unusable unless default version
package has been installed. Small changes to code and debian/rules allows
a workaround for lldb-server start up.
To use this one needs to add cmake definition during configure. eg
-DDEBIAN_VERSION_SUFFIX=-$(LLVM_VERSION)
Better implementation would be to use /usr/share/llvm-$(VERSION)/bin but
that change seems to require a big change to the path handling code
which could then break something else.
This probably should have upstream bug but I couldn't find any existing report.
Index: llvm-toolchain-9_9.0.0/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp
+++ llvm-toolchain-9_9.0.0/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp
@@ -33,13 +33,14 @@
#include "lldb/Utility/StreamString.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/Support/ScopedPrinter.h"
+#include "llvm/Config/llvm-config.h"
#include "ProcessGDBRemoteLog.h"
#if defined(__APPLE__)
#define DEBUGSERVER_BASENAME "debugserver"
#else
-#define DEBUGSERVER_BASENAME "lldb-server"
+# define DEBUGSERVER_BASENAME "lldb-server-" LLVM_VERSION_STRING
#endif
#if defined(HAVE_LIBCOMPRESSION)

View File

@ -1,13 +0,0 @@
Index: llvm-toolchain-9_9.0.0/lldb/scripts/lldb.swig
===================================================================
--- llvm-toolchain-9_9.0.0.orig/lldb/scripts/lldb.swig
+++ llvm-toolchain-9_9.0.0/lldb/scripts/lldb.swig
@@ -50,7 +50,7 @@ except ImportError:
%enddef
// These versions will not generate working python modules, so error out early.
#if SWIG_VERSION >= 0x030009 && SWIG_VERSION < 0x030011
-#error Swig versions 3.0.9 and 3.0.10 are incompatible with lldb.
+#warning Swig versions 3.0.9 and 3.0.10 are incompatible with lldb.
#endif
// The name of the module to be created.

View File

@ -1,26 +0,0 @@
Description: Link with -latomic when mips* processor is detected
Author: Gianfranco Costamagna <locutusofborg@debian.org>
Last-Update: 2016-07-27
---
lldb/cmake/LLDBDependencies.cmake | 6 ++++++
1 file changed, 6 insertions(+)
Index: llvm-toolchain-9_9.0.0/lldb/source/Utility/CMakeLists.txt
===================================================================
--- llvm-toolchain-9_9.0.0.orig/lldb/source/Utility/CMakeLists.txt
+++ llvm-toolchain-9_9.0.0/lldb/source/Utility/CMakeLists.txt
@@ -2,6 +2,13 @@ set(LLDB_SYSTEM_LIBS)
list(APPEND LLDB_SYSTEM_LIBS ${system_libs})
+if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "mips" OR
+ CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "mipsel" OR
+ CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "mips64el" OR
+ CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "powerpcspe")
+ list(APPEND LLDB_SYSTEM_LIBS atomic)
+endif()
+
if (CMAKE_SYSTEM_NAME MATCHES "Windows")
list(APPEND LLDB_SYSTEM_LIBS ws2_32 rpcrt4)
endif ()

View File

@ -1,23 +0,0 @@
Index: llvm-toolchain-9_9.0.0/lldb/tools/argdumper/CMakeLists.txt
===================================================================
--- llvm-toolchain-9_9.0.0.orig/lldb/tools/argdumper/CMakeLists.txt
+++ llvm-toolchain-9_9.0.0/lldb/tools/argdumper/CMakeLists.txt
@@ -4,3 +4,6 @@ add_lldb_tool(lldb-argdumper ADD_TO_FRAM
LINK_LIBS
lldbUtility
)
+
+install(TARGETS lldb-argdumper
+ RUNTIME DESTINATION bin)
Index: llvm-toolchain-9_9.0.0/lldb/tools/lldb-server/CMakeLists.txt
===================================================================
--- llvm-toolchain-9_9.0.0.orig/lldb/tools/lldb-server/CMakeLists.txt
+++ llvm-toolchain-9_9.0.0/lldb/tools/lldb-server/CMakeLists.txt
@@ -77,3 +77,7 @@ add_lldb_tool(lldb-server
)
target_link_libraries(lldb-server PRIVATE ${LLDB_SYSTEM_LIBS})
+
+install(TARGETS lldb-server
+ RUNTIME DESTINATION bin)
+

View File

@ -1,76 +0,0 @@
commit c6b09bff5671600f8e764d3847023d0996f328d9
Author: Luís Marques <luismarques@lowrisc.org>
Date: Thu Nov 14 18:27:42 2019 +0000
[RISCV] Fix wrong CFI directives
Summary: Removes CFI CFA directives that could incorrectly propagate
beyond the basic block they were inteded for. Specifically it removes
the epilogue CFI directives. See the branch_and_tail_call test for an
example of the issue. Should fix the stack unwinding issues caused by
the incorrect directives.
Reviewers: asb, lenary, shiva0217
Reviewed By: lenary
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D69723
--- a/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp
+++ b/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp
@@ -205,7 +205,6 @@
MachineFrameInfo &MFI = MF.getFrameInfo();
auto *RVFI = MF.getInfo<RISCVMachineFunctionInfo>();
DebugLoc DL = MBBI->getDebugLoc();
- const RISCVInstrInfo *TII = STI.getInstrInfo();
unsigned FPReg = getFPReg(STI);
unsigned SPReg = getSPReg(STI);
@@ -225,48 +224,9 @@
adjustReg(MBB, LastFrameDestroy, DL, SPReg, FPReg, -FPOffset,
MachineInstr::FrameDestroy);
}
-
- if (hasFP(MF)) {
- // To find the instruction restoring FP from stack.
- for (auto &I = LastFrameDestroy; I != MBBI; ++I) {
- if (I->mayLoad() && I->getOperand(0).isReg()) {
- unsigned DestReg = I->getOperand(0).getReg();
- if (DestReg == FPReg) {
- // If there is frame pointer, after restoring $fp registers, we
- // need adjust CFA to ($sp - FPOffset).
- // Emit ".cfi_def_cfa $sp, -FPOffset"
- unsigned CFIIndex = MF.addFrameInst(MCCFIInstruction::createDefCfa(
- nullptr, RI->getDwarfRegNum(SPReg, true), -FPOffset));
- BuildMI(MBB, std::next(I), DL,
- TII->get(TargetOpcode::CFI_INSTRUCTION))
- .addCFIIndex(CFIIndex);
- break;
- }
- }
- }
- }
-
- // Add CFI directives for callee-saved registers.
- const std::vector<CalleeSavedInfo> &CSI = MFI.getCalleeSavedInfo();
- // Iterate over list of callee-saved registers and emit .cfi_restore
- // directives.
- for (const auto &Entry : CSI) {
- unsigned Reg = Entry.getReg();
- unsigned CFIIndex = MF.addFrameInst(MCCFIInstruction::createRestore(
- nullptr, RI->getDwarfRegNum(Reg, true)));
- BuildMI(MBB, MBBI, DL, TII->get(TargetOpcode::CFI_INSTRUCTION))
- .addCFIIndex(CFIIndex);
- }
// Deallocate stack
adjustReg(MBB, MBBI, DL, SPReg, SPReg, StackSize, MachineInstr::FrameDestroy);
-
- // After restoring $sp, we need to adjust CFA to $(sp + 0)
- // Emit ".cfi_def_cfa_offset 0"
- unsigned CFIIndex =
- MF.addFrameInst(MCCFIInstruction::createDefCfaOffset(nullptr, 0));
- BuildMI(MBB, MBBI, DL, TII->get(TargetOpcode::CFI_INSTRUCTION))
- .addCFIIndex(CFIIndex);
}
int RISCVFrameLowering::getFrameIndexReference(const MachineFunction &MF,

View File

@ -1,17 +0,0 @@
Index: llvm-toolchain-9_9.0.0/clang/lib/Driver/ToolChains/Arch/Mips.cpp
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/lib/Driver/ToolChains/Arch/Mips.cpp
+++ llvm-toolchain-9_9.0.0/clang/lib/Driver/ToolChains/Arch/Mips.cpp
@@ -455,10 +455,10 @@ bool mips::isFP64ADefault(const llvm::Tr
bool mips::isFPXXDefault(const llvm::Triple &Triple, StringRef CPUName,
StringRef ABIName, mips::FloatABI FloatABI) {
- if (Triple.getVendor() != llvm::Triple::ImaginationTechnologies &&
+/* if (Triple.getVendor() != llvm::Triple::ImaginationTechnologies &&
Triple.getVendor() != llvm::Triple::MipsTechnologies &&
!Triple.isAndroid())
- return false;
+ return false;*/
if (ABIName != "32")
return false;

View File

@ -1,44 +0,0 @@
Description: cgi method is deprecated, use html instead
Author: Gianfranco Costamagna <locutusofborg@debian.org>
Last-Update: 2020-02-25
--- llvm-toolchain-10-10.0.0~+rc2.orig/llvm/tools/opt-viewer/opt-viewer.py
+++ llvm-toolchain-10-10.0.0~+rc2/llvm/tools/opt-viewer/opt-viewer.py
@@ -3,7 +3,7 @@
from __future__ import print_function
import argparse
-import cgi
+import html
import codecs
import errno
import functools
@@ -200,7 +200,7 @@ class IndexRenderer:
self.max_hottest_remarks_on_index = max_hottest_remarks_on_index
def render_entry(self, r, odd):
- escaped_name = cgi.escape(r.DemangledFunctionName)
+ escaped_name = html.escape(r.DemangledFunctionName)
print(u'''
<tr>
<td class=\"column-entry-{odd}\"><a href={r.Link}>{r.DebugLocString}</a></td>
--- llvm-toolchain-10-10.0.0~+rc2.orig/llvm/tools/opt-viewer/optrecord.py
+++ llvm-toolchain-10-10.0.0~+rc2/llvm/tools/opt-viewer/optrecord.py
@@ -10,7 +10,7 @@ except ImportError:
print("For faster parsing, you may want to install libYAML for PyYAML")
from yaml import Loader
-import cgi
+import html
from collections import defaultdict
import fnmatch
import functools
@@ -158,7 +158,7 @@ class Remark(yaml.YAMLObject):
(key, value) = list(mapping.items())[0]
if key == 'Caller' or key == 'Callee' or key == 'DirectCallee':
- value = cgi.escape(self.demangle(value))
+ value = html.escape(self.demangle(value))
if dl and key != 'Caller':
dl_dict = dict(list(dl))

View File

@ -1,47 +0,0 @@
Description:
Disable z3 to avoid pulling ocaml into main.
For some reason the cmake option LLVM_ENABLE_Z3_SOLVER was not taken into account
Author: Gianfranco Costamagna <locutusofborg@debian.org>
Last-Update: 2019-11-26
Index: llvm-toolchain-9-9.0.0/llvm/CMakeLists.txt
===================================================================
--- llvm-toolchain-9-9.0.0.orig/llvm/CMakeLists.txt
+++ llvm-toolchain-9-9.0.0/llvm/CMakeLists.txt
@@ -340,24 +340,22 @@
set(LLVM_Z3_INSTALL_DIR "" CACHE STRING "Install directory of the Z3 solver.")
-find_package(Z3 4.7.1)
-
-if (LLVM_Z3_INSTALL_DIR)
- if (NOT Z3_FOUND)
- message(FATAL_ERROR "Z3 >= 4.7.1 has not been found in LLVM_Z3_INSTALL_DIR: ${LLVM_Z3_INSTALL_DIR}.")
- endif()
-endif()
-
-set(LLVM_ENABLE_Z3_SOLVER_DEFAULT "${Z3_FOUND}")
-
option(LLVM_ENABLE_Z3_SOLVER
"Enable Support for the Z3 constraint solver in LLVM."
- ${LLVM_ENABLE_Z3_SOLVER_DEFAULT}
+ ON
)
if (LLVM_ENABLE_Z3_SOLVER)
- if (NOT Z3_FOUND)
- message(FATAL_ERROR "LLVM_ENABLE_Z3_SOLVER cannot be enabled when Z3 is not available.")
+ find_package(Z3 4.7.1)
+
+ if (LLVM_Z3_INSTALL_DIR)
+ if (NOT Z3_FOUND)
+ message(FATAL_ERROR "Z3 >= 4.7.1 has not been found in LLVM_Z3_INSTALL_DIR: ${LLVM_Z3_INSTALL_DIR}.")
+ endif()
+ else()
+ if (NOT Z3_FOUND)
+ message(FATAL_ERROR "LLVM_ENABLE_Z3_SOLVER cannot be enabled when Z3 is not available.")
+ endif()
endif()
set(LLVM_WITH_Z3 1)

View File

@ -1,14 +0,0 @@
Index: llvm-toolchain-9_9.0.0/openmp/runtime/CMakeLists.txt
===================================================================
--- llvm-toolchain-9_9.0.0.orig/openmp/runtime/CMakeLists.txt
+++ llvm-toolchain-9_9.0.0/openmp/runtime/CMakeLists.txt
@@ -338,7 +338,8 @@ else()
set(LIBOMP_INSTALL_KIND ARCHIVE)
endif()
-set(LIBOMP_LIB_FILE ${LIBOMP_LIB_NAME}${LIBOMP_LIBRARY_SUFFIX})
+set(LIBOMP_LIB_FILE ${LIBOMP_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}.${LIBOMP_VERSION_MAJOR})
+
# Optional backwards compatibility aliases.
set(LIBOMP_INSTALL_ALIASES TRUE CACHE BOOL

View File

@ -1,14 +0,0 @@
Index: llvm-toolchain-9_9.0.0/openmp/runtime/src/CMakeLists.txt
===================================================================
--- llvm-toolchain-9_9.0.0.orig/openmp/runtime/src/CMakeLists.txt
+++ llvm-toolchain-9_9.0.0/openmp/runtime/src/CMakeLists.txt
@@ -170,7 +170,8 @@ endif()
# Linking command will include libraries in LIBOMP_CONFIGURED_LIBFLAGS
libomp_get_libflags(LIBOMP_CONFIGURED_LIBFLAGS)
-target_link_libraries(omp ${LIBOMP_CONFIGURED_LIBFLAGS} ${CMAKE_DL_LIBS})
+target_link_libraries(omp ${LIBOMP_CONFIGURED_LIBFLAGS} ${CMAKE_DL_LIBS}
+ "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/exports_so.txt")
# Create *.inc before compiling any sources
# objects depend on : .inc files

View File

@ -1,14 +0,0 @@
Index: llvm-toolchain-9_9.0.0/openmp/runtime/tools/check-execstack.pl
===================================================================
--- llvm-toolchain-9_9.0.0.orig/openmp/runtime/tools/check-execstack.pl
+++ llvm-toolchain-9_9.0.0/openmp/runtime/tools/check-execstack.pl
@@ -45,7 +45,8 @@ sub execstack($) {
# GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RWE 0x4
# Linux* OS Intel(R) 64:
# GNU_STACK 0x000000 0x0000000000000000 0x0000000000000000 0x000000 0x000000 RWE 0x8
- if ( $stack[ 0 ] !~ m{\A\s*(?:GNU_)?STACK(?:\s+0x[0-9a-f]+){5}\s+([R ][W ][E ])\s+0x[0-9a-f]+\s*\z} ) {
+# if ( $stack[ 0 ] !~ m{\A\s*(?:GNU_)?STACK(?:\s+0x[0-9a-f]+){5}\s+([R ][W ][E ])\s+0x[0-9a-f]+\s*\z} ) {
+ if ( $stack[ 0 ] !~ m{\A\s*(?:GNU_)?STACK(?:\s+0x[0-9a-f]+){5}\s+([R ][W ][E ])\s+0(?:x[0-9a-f]+)*\s*\z} ) {
runtime_error( "$file: Cannot parse stack segment line:", ">>> $stack[ 0 ]" );
}; # if
my $attrs = $1;

View File

@ -1,56 +0,0 @@
Index: llvm-toolchain-9_9.0.0/openmp/runtime/src/kmp_affinity.h
===================================================================
--- llvm-toolchain-9_9.0.0.orig/openmp/runtime/src/kmp_affinity.h
+++ llvm-toolchain-9_9.0.0/openmp/runtime/src/kmp_affinity.h
@@ -210,28 +210,29 @@ public:
#elif __NR_sched_getaffinity != 223
#error Wrong code for getaffinity system call.
#endif /* __NR_sched_getaffinity */
-#elif KMP_ARCH_MIPS
-#ifndef __NR_sched_setaffinity
-#define __NR_sched_setaffinity 4239
-#elif __NR_sched_setaffinity != 4239
-#error Wrong code for setaffinity system call.
-#endif /* __NR_sched_setaffinity */
-#ifndef __NR_sched_getaffinity
-#define __NR_sched_getaffinity 4240
-#elif __NR_sched_getaffinity != 4240
-#error Wrong code for getaffinity system call.
-#endif /* __NR_sched_getaffinity */
-#elif KMP_ARCH_MIPS64
-#ifndef __NR_sched_setaffinity
-#define __NR_sched_setaffinity 5195
-#elif __NR_sched_setaffinity != 5195
-#error Wrong code for setaffinity system call.
-#endif /* __NR_sched_setaffinity */
-#ifndef __NR_sched_getaffinity
-#define __NR_sched_getaffinity 5196
-#elif __NR_sched_getaffinity != 5196
-#error Wrong code for getaffinity system call.
-#endif /* __NR_sched_getaffinity */
+# elif KMP_ARCH_MIPS
+# ifndef __NR_sched_setaffinity
+# define __NR_sched_setaffinity 4239
+# elif __NR_sched_setaffinity != 4239
+# error Wrong code for setaffinity system call.
+# endif /* __NR_sched_setaffinity */
+# ifndef __NR_sched_getaffinity
+# define __NR_sched_getaffinity 4240
+# elif __NR_sched_getaffinity != 4240
+# error Wrong code for getaffinity system call.
+# endif /* __NR_sched_getaffinity */
+# elif KMP_ARCH_MIPS64
+# ifndef __NR_sched_setaffinity
+# define __NR_sched_setaffinity 5195
+# elif __NR_sched_setaffinity != 5195
+# error Wrong code for setaffinity system call.
+# endif /* __NR_sched_setaffinity */
+# ifndef __NR_sched_getaffinity
+# define __NR_sched_getaffinity 5196
+# elif __NR_sched_getaffinity != 5196
+# error Wrong code for getaffinity system call.
+# endif /* __NR_sched_getaffinity */
+# else
#error Unknown or unsupported architecture
#endif /* KMP_ARCH_* */
class KMPNativeAffinity : public KMPAffinity {

View File

@ -1,164 +0,0 @@
Description: Add -m(no-)spe, and e500 CPU definitions and support to clang
Author: Justin Hibbits <jrh29@alumni.cwru.edu>
Origin: https://reviews.llvm.org/D49754
Last-Update: 2019-02-14
--- llvm-toolchain-snapshot-9~svn351420.orig/clang/include/clang/Driver/Options.td
+++ llvm-toolchain-snapshot-9~svn351420/clang/include/clang/Driver/Options.td
@@ -2180,6 +2180,8 @@ def faltivec : Flag<["-"], "faltivec">,
def fno_altivec : Flag<["-"], "fno-altivec">, Group<f_Group>, Flags<[DriverOption]>;
def maltivec : Flag<["-"], "maltivec">, Group<m_ppc_Features_Group>;
def mno_altivec : Flag<["-"], "mno-altivec">, Group<m_ppc_Features_Group>;
+def mspe : Flag<["-"], "mspe">, Group<m_ppc_Features_Group>;
+def mno_spe : Flag<["-"], "mno-spe">, Group<m_ppc_Features_Group>;
def mvsx : Flag<["-"], "mvsx">, Group<m_ppc_Features_Group>;
def mno_vsx : Flag<["-"], "mno-vsx">, Group<m_ppc_Features_Group>;
def msecure_plt : Flag<["-"], "msecure-plt">, Group<m_ppc_Features_Group>;
--- llvm-toolchain-snapshot-9~svn351420.orig/clang/lib/Basic/Targets/PPC.cpp
+++ llvm-toolchain-snapshot-9~svn351420/clang/lib/Basic/Targets/PPC.cpp
@@ -54,6 +54,10 @@ bool PPCTargetInfo::handleTargetFeatures
HasFloat128 = true;
} else if (Feature == "+power9-vector") {
HasP9Vector = true;
+ } else if (Feature == "+spe") {
+ HasSPE = true;
+ LongDoubleWidth = LongDoubleAlign = 64;
+ LongDoubleFormat = &llvm::APFloat::IEEEdouble();
}
// TODO: Finish this list and add an assert that we've handled them
// all.
@@ -161,6 +165,10 @@ void PPCTargetInfo::getTargetDefines(con
Builder.defineMacro("__VEC__", "10206");
Builder.defineMacro("__ALTIVEC__");
}
+ if (HasSPE) {
+ Builder.defineMacro("__SPE__");
+ Builder.defineMacro("__NO_FPRS__");
+ }
if (HasVSX)
Builder.defineMacro("__VSX__");
if (HasP8Vector)
@@ -306,6 +314,11 @@ bool PPCTargetInfo::initFeatureMap(
.Case("pwr8", true)
.Default(false);
+ Features["spe"] = llvm::StringSwitch<bool>(CPU)
+ .Case("e500", true)
+ .Case("8548", true)
+ .Default(false);
+
if (!ppcUserFeaturesCheck(Diags, FeaturesVec))
return false;
@@ -334,6 +347,7 @@ bool PPCTargetInfo::hasFeature(StringRef
.Case("extdiv", HasExtDiv)
.Case("float128", HasFloat128)
.Case("power9-vector", HasP9Vector)
+ .Case("spe", HasSPE)
.Default(false);
}
@@ -443,16 +457,16 @@ ArrayRef<TargetInfo::AddlRegName> PPCTar
}
static constexpr llvm::StringLiteral ValidCPUNames[] = {
- {"generic"}, {"440"}, {"450"}, {"601"}, {"602"},
- {"603"}, {"603e"}, {"603ev"}, {"604"}, {"604e"},
- {"620"}, {"630"}, {"g3"}, {"7400"}, {"g4"},
- {"7450"}, {"g4+"}, {"750"}, {"970"}, {"g5"},
- {"a2"}, {"a2q"}, {"e500mc"}, {"e5500"}, {"power3"},
- {"pwr3"}, {"power4"}, {"pwr4"}, {"power5"}, {"pwr5"},
- {"power5x"}, {"pwr5x"}, {"power6"}, {"pwr6"}, {"power6x"},
- {"pwr6x"}, {"power7"}, {"pwr7"}, {"power8"}, {"pwr8"},
- {"power9"}, {"pwr9"}, {"powerpc"}, {"ppc"}, {"powerpc64"},
- {"ppc64"}, {"powerpc64le"}, {"ppc64le"},
+ {"generic"}, {"440"}, {"450"}, {"601"}, {"602"},
+ {"603"}, {"603e"}, {"603ev"}, {"604"}, {"604e"},
+ {"620"}, {"630"}, {"g3"}, {"7400"}, {"g4"},
+ {"7450"}, {"g4+"}, {"750"}, {"8548"}, {"970"},
+ {"g5"}, {"a2"}, {"a2q"}, {"e500"}, {"e500mc"},
+ {"e5500"}, {"power3"}, {"pwr3"}, {"power4"}, {"pwr4"},
+ {"power5"}, {"pwr5"}, {"power5x"}, {"pwr5x"}, {"power6"},
+ {"pwr6"}, {"power6x"}, {"pwr6x"}, {"power7"}, {"pwr7"},
+ {"power8"}, {"pwr8"}, {"power9"}, {"pwr9"}, {"powerpc"},
+ {"ppc"}, {"powerpc64"}, {"ppc64"}, {"powerpc64le"}, {"ppc64le"},
};
bool PPCTargetInfo::isValidCPUName(StringRef Name) const {
--- llvm-toolchain-snapshot-9~svn351420.orig/clang/lib/Basic/Targets/PPC.h
+++ llvm-toolchain-snapshot-9~svn351420/clang/lib/Basic/Targets/PPC.h
@@ -45,7 +45,8 @@ class LLVM_LIBRARY_VISIBILITY PPCTargetI
ArchDefinePwr8 = 1 << 12,
ArchDefinePwr9 = 1 << 13,
ArchDefineA2 = 1 << 14,
- ArchDefineA2q = 1 << 15
+ ArchDefineA2q = 1 << 15,
+ ArchDefine500v2 = 1 << 16
} ArchDefineTypes;
@@ -66,6 +67,7 @@ class LLVM_LIBRARY_VISIBILITY PPCTargetI
bool HasBPERMD = false;
bool HasExtDiv = false;
bool HasP9Vector = false;
+ bool HasSPE = false;
protected:
std::string ABI;
@@ -145,6 +147,8 @@ public:
ArchDefinePwr6x | ArchDefinePwr6 | ArchDefinePwr5x |
ArchDefinePwr5 | ArchDefinePwr4 | ArchDefinePpcgr |
ArchDefinePpcsq)
+ .Cases("e500", "e500v2",
+ ArchDefineName | ArchDefine500v2)
.Default(ArchDefineNone);
}
return CPUKnown;
--- llvm-toolchain-snapshot-9~svn351420.orig/clang/lib/CodeGen/TargetInfo.cpp
+++ llvm-toolchain-snapshot-9~svn351420/clang/lib/CodeGen/TargetInfo.cpp
@@ -9316,7 +9316,8 @@ const TargetCodeGenInfo &CodeGenModule::
case llvm::Triple::ppc:
return SetCGInfo(
- new PPC32TargetCodeGenInfo(Types, CodeGenOpts.FloatABI == "soft"));
+ new PPC32TargetCodeGenInfo(Types, CodeGenOpts.FloatABI == "soft" ||
+ getTarget().hasFeature("spe")));
case llvm::Triple::ppc64:
if (Triple.isOSBinFormatELF()) {
PPC64_SVR4_ABIInfo::ABIKind Kind = PPC64_SVR4_ABIInfo::ELFv1;
--- llvm-toolchain-snapshot-9~svn351420.orig/clang/test/Driver/ppc-features.cpp
+++ llvm-toolchain-snapshot-9~svn351420/clang/test/Driver/ppc-features.cpp
@@ -168,6 +168,9 @@
// RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-invariant-function-descriptors -minvariant-function-descriptors -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-INVFUNCDESC %s
// CHECK-INVFUNCDESC: "-target-feature" "+invariant-function-descriptors"
+// RUN: %clang -target powerpc-unknown-linux-gnu %s -mno-spe -mspe -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-SPE %s
+// CHECK-SPE: "-target-feature" "+spe"
+
// Assembler features
// RUN: %clang -target powerpc64-unknown-linux-gnu %s -### -o %t.o -no-integrated-as 2>&1 | FileCheck -check-prefix=CHECK_BE_AS_ARGS %s
// CHECK_BE_AS_ARGS: "-mppc64"
--- llvm-toolchain-snapshot-9~svn351420.orig/clang/test/Misc/target-invalid-cpu-note.c
+++ llvm-toolchain-snapshot-9~svn351420/clang/test/Misc/target-invalid-cpu-note.c
@@ -79,7 +79,7 @@
// PPC: error: unknown target CPU 'not-a-cpu'
// PPC: note: valid target CPU values are: generic, 440, 450, 601, 602, 603,
// PPC-SAME: 603e, 603ev, 604, 604e, 620, 630, g3, 7400, g4, 7450, g4+, 750,
-// PPC-SAME: 970, g5, a2, a2q, e500mc, e5500, power3, pwr3, power4, pwr4,
+// PPC-SAME: 970, g5, a2, a2q, e500, e500mc, e5500, power3, pwr3, power4, pwr4,
// PPC-SAME: power5, pwr5, power5x, pwr5x, power6, pwr6, power6x, pwr6x, power7,
// PPC-SAME: pwr7, power8, pwr8, power9, pwr9, powerpc, ppc, powerpc64, ppc64,
// PPC-SAME: powerpc64le, ppc64le
--- llvm-toolchain-snapshot-9~svn351420.orig/clang/test/Preprocessor/init.c
+++ llvm-toolchain-snapshot-9~svn351420/clang/test/Preprocessor/init.c
@@ -7016,6 +7016,10 @@
//
// PPC32-LINUX-NOT: _CALL_LINUX
//
+// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc-unknown-linux-gnu -target-feature +spe < /dev/null | FileCheck -match-full-lines -check-prefix PPC32-SPE %s
+//
+// PPC32-SPE:#define __SPE__ 1
+//
// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc-apple-darwin8 < /dev/null | FileCheck -match-full-lines -check-prefix PPC-DARWIN %s
//
// PPC-DARWIN:#define _ARCH_PPC 1

View File

@ -1,420 +0,0 @@
Description: PowerPC: Optimize SPE double parameter calling setup
Author: Justin Hibbits <jrh29@alumni.cwru.edu>
Origin: https://reviews.llvm.org/D54583
Last-Update: 2019-02-14
--- llvm-toolchain-snapshot-9~svn351420.orig/lib/Target/PowerPC/PPCCallingConv.td
+++ llvm-toolchain-snapshot-9~svn351420/lib/Target/PowerPC/PPCCallingConv.td
@@ -90,7 +90,7 @@ def RetCC_PPC : CallingConv<[
CCIfSubtarget<"hasSPE()",
CCIfType<[f32], CCAssignToReg<[R3, R4, R5, R6, R7, R8, R9, R10]>>>,
CCIfSubtarget<"hasSPE()",
- CCIfType<[f64], CCAssignToReg<[S3, S4, S5, S6, S7, S8, S9, S10]>>>,
+ CCIfType<[f64], CCCustom<"CC_PPC32_SPE_RetF64">>>,
// For P9, f128 are passed in vector registers.
CCIfType<[f128],
@@ -179,6 +179,9 @@ def CC_PPC32_SVR4_Common : CallingConv<[
CCIfType<[i32],
CCIfSplit<CCIfNotSubtarget<"useSoftFloat()",
CCCustom<"CC_PPC32_SVR4_Custom_AlignArgRegs">>>>,
+ CCIfType<[f64],
+ CCIfSubtarget<"hasSPE()",
+ CCCustom<"CC_PPC32_SVR4_Custom_AlignArgRegs">>>,
CCIfSplit<CCIfSubtarget<"useSoftFloat()",
CCIfOrigArgWasPPCF128<CCCustom<
"CC_PPC32_SVR4_Custom_SkipLastArgRegsPPCF128">>>>,
@@ -199,7 +202,7 @@ def CC_PPC32_SVR4_Common : CallingConv<[
CCAssignToReg<[F1, F2, F3, F4, F5, F6, F7, F8]>>>,
CCIfType<[f64],
CCIfSubtarget<"hasSPE()",
- CCAssignToReg<[S3, S4, S5, S6, S7, S8, S9, S10]>>>,
+ CCCustom<"CC_PPC32_SPE_CustomSplitFP64">>>,
CCIfType<[f32],
CCIfSubtarget<"hasSPE()",
CCAssignToReg<[R3, R4, R5, R6, R7, R8, R9, R10]>>>,
--- llvm-toolchain-snapshot-9~svn351420.orig/lib/Target/PowerPC/PPCISelLowering.cpp
+++ llvm-toolchain-snapshot-9~svn351420/lib/Target/PowerPC/PPCISelLowering.cpp
@@ -1232,22 +1232,6 @@ unsigned PPCTargetLowering::getByValType
return Align;
}
-unsigned PPCTargetLowering::getNumRegistersForCallingConv(LLVMContext &Context,
- CallingConv:: ID CC,
- EVT VT) const {
- if (Subtarget.hasSPE() && VT == MVT::f64)
- return 2;
- return PPCTargetLowering::getNumRegisters(Context, VT);
-}
-
-MVT PPCTargetLowering::getRegisterTypeForCallingConv(LLVMContext &Context,
- CallingConv:: ID CC,
- EVT VT) const {
- if (Subtarget.hasSPE() && VT == MVT::f64)
- return MVT::i32;
- return PPCTargetLowering::getRegisterType(Context, VT);
-}
-
bool PPCTargetLowering::useSoftFloat() const {
return Subtarget.useSoftFloat();
}
@@ -1365,6 +1349,8 @@ const char *PPCTargetLowering::getTarget
case PPCISD::QBFLT: return "PPCISD::QBFLT";
case PPCISD::QVLFSb: return "PPCISD::QVLFSb";
case PPCISD::BUILD_FP128: return "PPCISD::BUILD_FP128";
+ case PPCISD::BUILD_SPE64: return "PPCISD::BUILD_SPE64";
+ case PPCISD::EXTRACT_SPE: return "PPCISD::EXTRACT_SPE";
case PPCISD::EXTSWSLI: return "PPCISD::EXTSWSLI";
}
return nullptr;
@@ -3162,6 +3148,58 @@ bool llvm::CC_PPC32_SVR4_Custom_Dummy(un
return true;
}
+bool llvm::CC_PPC32_SPE_CustomSplitFP64(unsigned &ValNo, MVT &ValVT,
+ MVT &LocVT,
+ CCValAssign::LocInfo &LocInfo,
+ ISD::ArgFlagsTy &ArgFlags,
+ CCState &State) {
+ static const MCPhysReg HiRegList[] = { PPC::R3, PPC::R5, PPC::R7, PPC::R9 };
+ static const MCPhysReg LoRegList[] = { PPC::R4, PPC::R6, PPC::R8, PPC::R10 };
+
+ // Try to get the first register.
+ unsigned Reg = State.AllocateReg(HiRegList);
+ if (!Reg)
+ return false;
+
+ unsigned i;
+ for (i = 0; i < sizeof(HiRegList) / sizeof(HiRegList[0]); ++i)
+ if (HiRegList[i] == Reg)
+ break;
+
+ unsigned T = State.AllocateReg(LoRegList[i]);
+ (void)T;
+ assert(T == LoRegList[i] && "Could not allocate register");
+
+ State.addLoc(CCValAssign::getCustomReg(ValNo, ValVT, Reg, LocVT, LocInfo));
+ State.addLoc(CCValAssign::getCustomReg(ValNo, ValVT, LoRegList[i],
+ LocVT, LocInfo));
+ return true;
+}
+
+bool llvm::CC_PPC32_SPE_RetF64(unsigned &ValNo, MVT &ValVT,
+ MVT &LocVT,
+ CCValAssign::LocInfo &LocInfo,
+ ISD::ArgFlagsTy &ArgFlags,
+ CCState &State) {
+ static const MCPhysReg HiRegList[] = { PPC::R3, PPC::R5, PPC::R7, PPC::R9 };
+ static const MCPhysReg LoRegList[] = { PPC::R4, PPC::R6, PPC::R8, PPC::R10 };
+
+ // Try to get the first register.
+ unsigned Reg = State.AllocateReg(HiRegList);
+ if (!Reg)
+ return false;
+
+ unsigned i;
+ for (i = 0; i < sizeof(HiRegList) / sizeof(HiRegList[0]); ++i)
+ if (HiRegList[i] == Reg)
+ break;
+
+ State.addLoc(CCValAssign::getCustomReg(ValNo, ValVT, Reg, LocVT, LocInfo));
+ State.addLoc(CCValAssign::getCustomReg(ValNo, ValVT, LoRegList[i],
+ LocVT, LocInfo));
+ return true;
+}
+
bool llvm::CC_PPC32_SVR4_Custom_AlignArgRegs(unsigned &ValNo, MVT &ValVT,
MVT &LocVT,
CCValAssign::LocInfo &LocInfo,
@@ -3449,7 +3487,7 @@ SDValue PPCTargetLowering::LowerFormalAr
// Reserve space for the linkage area on the stack.
unsigned LinkageSize = Subtarget.getFrameLowering()->getLinkageSize();
CCInfo.AllocateStack(LinkageSize, PtrByteSize);
- if (useSoftFloat() || hasSPE())
+ if (useSoftFloat())
CCInfo.PreAnalyzeFormalArguments(Ins);
CCInfo.AnalyzeFormalArguments(Ins, CC_PPC32_SVR4);
@@ -3482,7 +3520,8 @@ SDValue PPCTargetLowering::LowerFormalAr
if (Subtarget.hasVSX())
RC = &PPC::VSFRCRegClass;
else if (Subtarget.hasSPE())
- RC = &PPC::SPERCRegClass;
+ // SPE passes doubles in GPR pairs.
+ RC = &PPC::GPRCRegClass;
else
RC = &PPC::F8RCRegClass;
break;
@@ -3506,13 +3545,30 @@ SDValue PPCTargetLowering::LowerFormalAr
break;
}
- // Transform the arguments stored in physical registers into virtual ones.
- unsigned Reg = MF.addLiveIn(VA.getLocReg(), RC);
- SDValue ArgValue = DAG.getCopyFromReg(Chain, dl, Reg,
- ValVT == MVT::i1 ? MVT::i32 : ValVT);
+ SDValue ArgValue;
+ if (VA.getLocVT() == MVT::f64 && Subtarget.hasSPE()) {
+ // Transform the arguments stored in physical registers into
+ // virtual ones.
+ unsigned Reg = MF.addLiveIn(VA.getLocReg(), RC);
+ ArgValue = DAG.getCopyFromReg(Chain, dl, Reg, MVT::i32);
+
+ SDValue ArgValue2;
+ Reg = MF.addLiveIn(ArgLocs[++i].getLocReg(), RC);
+ ArgValue2 = DAG.getCopyFromReg(Chain, dl, Reg, MVT::i32);
+ if (!Subtarget.isLittleEndian())
+ std::swap (ArgValue, ArgValue2);
+ ArgValue = DAG.getNode(PPCISD::BUILD_SPE64, dl, MVT::f64, ArgValue,
+ ArgValue2);
+ } else {
- if (ValVT == MVT::i1)
- ArgValue = DAG.getNode(ISD::TRUNCATE, dl, MVT::i1, ArgValue);
+ // Transform the arguments stored in physical registers into
+ // virtual ones.
+ unsigned Reg = MF.addLiveIn(VA.getLocReg(), RC);
+ ArgValue = DAG.getCopyFromReg(Chain, dl, Reg,
+ ValVT == MVT::i1 ? MVT::i32 : ValVT);
+ if (ValVT == MVT::i1)
+ ArgValue = DAG.getNode(ISD::TRUNCATE, dl, MVT::i1, ArgValue);
+ }
InVals.push_back(ArgValue);
} else {
@@ -5129,10 +5185,27 @@ SDValue PPCTargetLowering::LowerCallResu
CCValAssign &VA = RVLocs[i];
assert(VA.isRegLoc() && "Can only return in registers!");
- SDValue Val = DAG.getCopyFromReg(Chain, dl,
- VA.getLocReg(), VA.getLocVT(), InFlag);
- Chain = Val.getValue(1);
- InFlag = Val.getValue(2);
+ SDValue Val;
+
+ if (Subtarget.hasSPE() && VA.getLocVT() == MVT::f64) {
+ SDValue Lo = DAG.getCopyFromReg(Chain, dl, VA.getLocReg(), MVT::i32,
+ InFlag);
+ Chain = Lo.getValue(1);
+ InFlag = Lo.getValue(2);
+ VA = RVLocs[++i]; // skip ahead to next loc
+ SDValue Hi = DAG.getCopyFromReg(Chain, dl, VA.getLocReg(), MVT::i32,
+ InFlag);
+ Chain = Hi.getValue(1);
+ InFlag = Hi.getValue(2);
+ if (!Subtarget.isLittleEndian())
+ std::swap (Lo, Hi);
+ Val = DAG.getNode(PPCISD::BUILD_SPE64, dl, MVT::f64, Lo, Hi);
+ } else {
+ Val = DAG.getCopyFromReg(Chain, dl,
+ VA.getLocReg(), VA.getLocVT(), InFlag);
+ Chain = Val.getValue(1);
+ InFlag = Val.getValue(2);
+ }
switch (VA.getLocInfo()) {
default: llvm_unreachable("Unknown loc info!");
@@ -5444,12 +5517,12 @@ SDValue PPCTargetLowering::LowerCall_32S
bool seenFloatArg = false;
// Walk the register/memloc assignments, inserting copies/loads.
- for (unsigned i = 0, j = 0, e = ArgLocs.size();
+ for (unsigned i = 0, realI = 0, j = 0, e = ArgLocs.size();
i != e;
- ++i) {
+ ++i, ++realI) {
CCValAssign &VA = ArgLocs[i];
- SDValue Arg = OutVals[i];
- ISD::ArgFlagsTy Flags = Outs[i].Flags;
+ SDValue Arg = OutVals[realI];
+ ISD::ArgFlagsTy Flags = Outs[realI].Flags;
if (Flags.isByVal()) {
// Argument is an aggregate which is passed by value, thus we need to
@@ -5498,7 +5571,18 @@ SDValue PPCTargetLowering::LowerCall_32S
if (VA.isRegLoc()) {
seenFloatArg |= VA.getLocVT().isFloatingPoint();
// Put argument in a physical register.
- RegsToPass.push_back(std::make_pair(VA.getLocReg(), Arg));
+ if (Subtarget.hasSPE() && Arg.getValueType() == MVT::f64) {
+ unsigned id = Subtarget.isLittleEndian() ? 0 : 1;
+ SDValue SVal = DAG.getNode(PPCISD::EXTRACT_SPE, dl, MVT::i32, Arg,
+ DAG.getIntPtrConstant(id, dl));
+ RegsToPass.push_back(std::make_pair(VA.getLocReg(), SVal.getValue(0)));
+ SVal = DAG.getNode(PPCISD::EXTRACT_SPE, dl, MVT::i32, Arg,
+ DAG.getIntPtrConstant(1 - id, dl));
+
+ RegsToPass.push_back(std::make_pair(ArgLocs[++i].getLocReg(),
+ SVal.getValue(0)));
+ } else
+ RegsToPass.push_back(std::make_pair(VA.getLocReg(), Arg));
} else {
// Put argument in the parameter list area of the current stack frame.
assert(VA.isMemLoc());
@@ -6644,11 +6728,11 @@ PPCTargetLowering::LowerReturn(SDValue C
SmallVector<SDValue, 4> RetOps(1, Chain);
// Copy the result values into the output registers.
- for (unsigned i = 0; i != RVLocs.size(); ++i) {
+ for (unsigned i = 0, realI = 0; i != RVLocs.size(); ++i, ++realI) {
CCValAssign &VA = RVLocs[i];
assert(VA.isRegLoc() && "Can only return in registers!");
- SDValue Arg = OutVals[i];
+ SDValue Arg = OutVals[realI];
switch (VA.getLocInfo()) {
default: llvm_unreachable("Unknown loc info!");
@@ -6663,8 +6747,21 @@ PPCTargetLowering::LowerReturn(SDValue C
Arg = DAG.getNode(ISD::SIGN_EXTEND, dl, VA.getLocVT(), Arg);
break;
}
-
- Chain = DAG.getCopyToReg(Chain, dl, VA.getLocReg(), Arg, Flag);
+ if (Subtarget.hasSPE() && VA.getLocVT() == MVT::f64) {
+ bool isLittleEndian = Subtarget.isLittleEndian();
+ // Legalize ret f64 -> ret 2 x i32.
+ SDValue SVal =
+ DAG.getNode(PPCISD::EXTRACT_SPE, dl, MVT::i32, Arg,
+ DAG.getIntPtrConstant(isLittleEndian ? 0 : 1, dl));
+ Chain = DAG.getCopyToReg(Chain, dl, VA.getLocReg(), SVal, Flag);
+ RetOps.push_back(DAG.getRegister(VA.getLocReg(), VA.getLocVT()));
+ SVal = DAG.getNode(PPCISD::EXTRACT_SPE, dl, MVT::i32, Arg,
+ DAG.getIntPtrConstant(isLittleEndian ? 1 : 0, dl));
+ Flag = Chain.getValue(1);
+ VA = RVLocs[++i]; // skip ahead to next loc
+ Chain = DAG.getCopyToReg(Chain, dl, VA.getLocReg(), SVal, Flag);
+ } else
+ Chain = DAG.getCopyToReg(Chain, dl, VA.getLocReg(), Arg, Flag);
Flag = Chain.getValue(1);
RetOps.push_back(DAG.getRegister(VA.getLocReg(), VA.getLocVT()));
}
--- llvm-toolchain-snapshot-9~svn351420.orig/lib/Target/PowerPC/PPCISelLowering.h
+++ llvm-toolchain-snapshot-9~svn351420/lib/Target/PowerPC/PPCISelLowering.h
@@ -196,6 +196,15 @@ namespace llvm {
/// Direct move of 2 consective GPR to a VSX register.
BUILD_FP128,
+ /// BUILD_SPE64 and EXTRACT_SPE are analogous to BUILD_PAIR and
+ /// EXTRACT_ELEMENT but take f64 arguments instead of i64, as i64 is
+ /// unsupported for this target.
+ /// Merge 2 GPRs to a single SPE register.
+ BUILD_SPE64,
+
+ /// Extract SPE register component, second argument is high or low.
+ EXTRACT_SPE,
+
/// Extract a subvector from signed integer vector and convert to FP.
/// It is primarily used to convert a (widened) illegal integer vector
/// type to a legal floating point vector type.
@@ -898,14 +907,6 @@ namespace llvm {
unsigned JTI,
MCContext &Ctx) const override;
- unsigned getNumRegistersForCallingConv(LLVMContext &Context,
- CallingConv:: ID CC,
- EVT VT) const override;
-
- MVT getRegisterTypeForCallingConv(LLVMContext &Context,
- CallingConv:: ID CC,
- EVT VT) const override;
-
private:
struct ReuseLoadInfo {
SDValue Ptr;
@@ -1110,6 +1111,7 @@ namespace llvm {
SDValue lowerEH_SJLJ_SETJMP(SDValue Op, SelectionDAG &DAG) const;
SDValue lowerEH_SJLJ_LONGJMP(SDValue Op, SelectionDAG &DAG) const;
SDValue LowerBITCAST(SDValue Op, SelectionDAG &DAG) const;
+ SDValue LowerEXTRACT_ELEMENT(SDValue Op, SelectionDAG &DAG) const;
SDValue DAGCombineExtBoolTrunc(SDNode *N, DAGCombinerInfo &DCI) const;
SDValue DAGCombineBuildVector(SDNode *N, DAGCombinerInfo &DCI) const;
@@ -1187,6 +1189,17 @@ namespace llvm {
ISD::ArgFlagsTy &ArgFlags,
CCState &State);
+ bool CC_PPC32_SPE_CustomSplitFP64(unsigned &ValNo, MVT &ValVT,
+ MVT &LocVT,
+ CCValAssign::LocInfo &LocInfo,
+ ISD::ArgFlagsTy &ArgFlags,
+ CCState &State);
+ bool CC_PPC32_SPE_RetF64(unsigned &ValNo, MVT &ValVT,
+ MVT &LocVT,
+ CCValAssign::LocInfo &LocInfo,
+ ISD::ArgFlagsTy &ArgFlags,
+ CCState &State);
+
bool CC_PPC32_SVR4_Custom_AlignFPArgRegs(unsigned &ValNo, MVT &ValVT,
MVT &LocVT,
CCValAssign::LocInfo &LocInfo,
--- llvm-toolchain-snapshot-9~svn351420.orig/lib/Target/PowerPC/PPCInstrInfo.td
+++ llvm-toolchain-snapshot-9~svn351420/lib/Target/PowerPC/PPCInstrInfo.td
@@ -231,6 +231,17 @@ def PPCbuild_fp128: SDNode<"PPCISD::BUIL
SDTCisSameAs<1,2>]>,
[]>;
+def PPCbuild_spe64: SDNode<"PPCISD::BUILD_SPE64",
+ SDTypeProfile<1, 2,
+ [SDTCisFP<0>, SDTCisSameSizeAs<1,2>,
+ SDTCisSameAs<1,2>]>,
+ []>;
+
+def PPCextract_spe : SDNode<"PPCISD::EXTRACT_SPE",
+ SDTypeProfile<1, 2,
+ [SDTCisInt<0>, SDTCisFP<1>, SDTCisPtrTy<2>]>,
+ []>;
+
// These are target-independent nodes, but have target-specific formats.
def callseq_start : SDNode<"ISD::CALLSEQ_START", SDT_PPCCallSeqStart,
[SDNPHasChain, SDNPOutGlue]>;
--- llvm-toolchain-snapshot-9~svn351420.orig/lib/Target/PowerPC/PPCInstrSPE.td
+++ llvm-toolchain-snapshot-9~svn351420/lib/Target/PowerPC/PPCInstrSPE.td
@@ -512,7 +512,7 @@ def EVLWWSPLATX : EVXForm_1<792, (out
def EVMERGEHI : EVXForm_1<556, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB),
"evmergehi $RT, $RA, $RB", IIC_VecGeneral, []>;
-def EVMERGELO : EVXForm_1<557, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB),
+def EVMERGELO : EVXForm_1<557, (outs sperc:$RT), (ins gprc:$RA, gprc:$RB),
"evmergelo $RT, $RA, $RB", IIC_VecGeneral, []>;
def EVMERGEHILO : EVXForm_1<558, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB),
"evmergehilo $RT, $RA, $RB", IIC_VecGeneral, []>;
@@ -887,4 +887,14 @@ def : Pat<(f64 (selectcc i1:$lhs, i1:$rh
(SELECT_SPE (CRANDC $lhs, $rhs), $tval, $fval)>;
def : Pat<(f64 (selectcc i1:$lhs, i1:$rhs, f64:$tval, f64:$fval, SETNE)),
(SELECT_SPE (CRXOR $lhs, $rhs), $tval, $fval)>;
+
+
+def : Pat<(f64 (PPCbuild_spe64 i32:$rB, i32:$rA)),
+ (f64 (COPY_TO_REGCLASS (EVMERGELO $rA, $rB), SPERC))>;
+
+def : Pat<(i32 (PPCextract_spe f64:$rA, 1)),
+ (i32 (EXTRACT_SUBREG (EVMERGEHI $rA, $rA), sub_32))>;
+def : Pat<(i32 (PPCextract_spe f64:$rA, 0)),
+ (i32 (EXTRACT_SUBREG $rA, sub_32))>;
+
}
--- llvm-toolchain-snapshot-9~svn351420.orig/test/CodeGen/PowerPC/spe.ll
+++ llvm-toolchain-snapshot-9~svn351420/test/CodeGen/PowerPC/spe.ll
@@ -472,10 +472,8 @@ entry:
; CHECK-LABEL: test_dselect
; CHECK: andi.
; CHECK: bc
-; CHECK: evldd
-; CHECK: b
-; CHECK: evldd
-; CHECK: evstdd
+; CHECK: evor
+; CHECK: evmergehi
; CHECK: blr
}
@@ -519,7 +517,7 @@ entry:
%1 = call i32 asm sideeffect "efdctsi $0, $1", "=d,d"(double %0)
ret i32 %1
; CHECK-LABEL: test_dasmconst
-; CHECK: evldd
+; CHECK: evmergelo
; CHECK: #APP
; CHECK: efdctsi
; CHECK: #NO_APP

View File

@ -1,137 +0,0 @@
Description: PowerPC/SPE: Fix register spilling for SPE registers
Author: Justin Hibbits <jrh29@alumni.cwru.edu>
Origin: https://reviews.llvm.org/D56703
Last-Update: 2019-02-14
--- llvm-toolchain-snapshot-9~svn351420.orig/lib/Target/PowerPC/PPCCallingConv.td
+++ llvm-toolchain-snapshot-9~svn351420/lib/Target/PowerPC/PPCCallingConv.td
@@ -346,15 +346,22 @@ def CSR_NoRegs : CalleeSavedRegs<(add)>;
// and value may be altered by inter-library calls.
// Do not include r12 as it is used as a scratch register.
// Do not include return registers r3, f1, v2.
-def CSR_SVR32_ColdCC : CalleeSavedRegs<(add (sequence "R%u", 4, 10),
- (sequence "R%u", 14, 31),
- F0, (sequence "F%u", 2, 31),
- (sequence "CR%u", 0, 7))>;
+def CSR_SVR32_ColdCC_Common : CalleeSavedRegs<(add (sequence "R%u", 4, 10),
+ (sequence "R%u", 14, 31),
+ (sequence "CR%u", 0, 7))>;
+
+def CSR_SVR32_ColdCC : CalleeSavedRegs<(add CSR_SVR32_ColdCC_Common,
+ F0, (sequence "F%u", 2, 31))>;
+
def CSR_SVR32_ColdCC_Altivec : CalleeSavedRegs<(add CSR_SVR32_ColdCC,
(sequence "V%u", 0, 1),
(sequence "V%u", 3, 31))>;
+def CSR_SVR32_ColdCC_SPE : CalleeSavedRegs<(add CSR_SVR32_ColdCC_Common,
+ (sequence "S%u", 4, 10),
+ (sequence "S%u", 14, 31))>;
+
def CSR_SVR64_ColdCC : CalleeSavedRegs<(add (sequence "X%u", 4, 10),
(sequence "X%u", 14, 31),
F0, (sequence "F%u", 2, 31),
--- llvm-toolchain-snapshot-9~svn351420.orig/lib/Target/PowerPC/PPCInstrInfo.cpp
+++ llvm-toolchain-snapshot-9~svn351420/lib/Target/PowerPC/PPCInstrInfo.cpp
@@ -996,6 +996,8 @@ void PPCInstrInfo::copyPhysReg(MachineBa
Opc = PPC::QVFMRb;
else if (PPC::CRBITRCRegClass.contains(DestReg, SrcReg))
Opc = PPC::CROR;
+ else if (PPC::SPE4RCRegClass.contains(DestReg, SrcReg))
+ Opc = PPC::OR;
else if (PPC::SPERCRegClass.contains(DestReg, SrcReg))
Opc = PPC::EVOR;
else
@@ -1026,10 +1028,10 @@ unsigned PPCInstrInfo::getStoreOpcodeFor
OpcodeIndex = SOK_Float8Spill;
} else if (PPC::F4RCRegClass.hasSubClassEq(RC)) {
OpcodeIndex = SOK_Float4Spill;
- } else if (PPC::SPERCRegClass.hasSubClassEq(RC)) {
- OpcodeIndex = SOK_SPESpill;
} else if (PPC::SPE4RCRegClass.hasSubClassEq(RC)) {
OpcodeIndex = SOK_SPE4Spill;
+ } else if (PPC::SPERCRegClass.hasSubClassEq(RC)) {
+ OpcodeIndex = SOK_SPESpill;
} else if (PPC::CRRCRegClass.hasSubClassEq(RC)) {
OpcodeIndex = SOK_CRSpill;
} else if (PPC::CRBITRCRegClass.hasSubClassEq(RC)) {
@@ -1066,6 +1068,10 @@ unsigned PPCInstrInfo::getStoreOpcodeFor
OpcodeIndex = SOK_Float8Spill;
} else if (PPC::F4RCRegClass.contains(Reg)) {
OpcodeIndex = SOK_Float4Spill;
+ } else if (PPC::SPE4RCRegClass.contains(Reg)) {
+ OpcodeIndex = SOK_SPE4Spill;
+ } else if (PPC::SPERCRegClass.contains(Reg)) {
+ OpcodeIndex = SOK_SPESpill;
} else if (PPC::CRRCRegClass.contains(Reg)) {
OpcodeIndex = SOK_CRSpill;
} else if (PPC::CRBITRCRegClass.contains(Reg)) {
@@ -1112,10 +1118,10 @@ PPCInstrInfo::getLoadOpcodeForSpill(unsi
OpcodeIndex = SOK_Float8Spill;
} else if (PPC::F4RCRegClass.hasSubClassEq(RC)) {
OpcodeIndex = SOK_Float4Spill;
- } else if (PPC::SPERCRegClass.hasSubClassEq(RC)) {
- OpcodeIndex = SOK_SPESpill;
} else if (PPC::SPE4RCRegClass.hasSubClassEq(RC)) {
OpcodeIndex = SOK_SPE4Spill;
+ } else if (PPC::SPERCRegClass.hasSubClassEq(RC)) {
+ OpcodeIndex = SOK_SPESpill;
} else if (PPC::CRRCRegClass.hasSubClassEq(RC)) {
OpcodeIndex = SOK_CRSpill;
} else if (PPC::CRBITRCRegClass.hasSubClassEq(RC)) {
@@ -1152,6 +1158,10 @@ PPCInstrInfo::getLoadOpcodeForSpill(unsi
OpcodeIndex = SOK_Float8Spill;
} else if (PPC::F4RCRegClass.contains(Reg)) {
OpcodeIndex = SOK_Float4Spill;
+ } else if (PPC::SPE4RCRegClass.hasSubClassEq(RC)) {
+ OpcodeIndex = SOK_SPE4Spill;
+ } else if (PPC::SPERCRegClass.hasSubClassEq(RC)) {
+ OpcodeIndex = SOK_SPESpill;
} else if (PPC::CRRCRegClass.contains(Reg)) {
OpcodeIndex = SOK_CRSpill;
} else if (PPC::CRBITRCRegClass.contains(Reg)) {
--- llvm-toolchain-snapshot-9~svn351420.orig/lib/Target/PowerPC/PPCRegisterInfo.cpp
+++ llvm-toolchain-snapshot-9~svn351420/lib/Target/PowerPC/PPCRegisterInfo.cpp
@@ -167,7 +167,9 @@ PPCRegisterInfo::getCalleeSavedRegs(cons
: (SaveR2 ? CSR_SVR64_ColdCC_R2_SaveList
: CSR_SVR64_ColdCC_SaveList))
: (Subtarget.hasAltivec() ? CSR_SVR32_ColdCC_Altivec_SaveList
- : CSR_SVR32_ColdCC_SaveList);
+ : (Subtarget.hasSPE()
+ ? CSR_SVR32_ColdCC_SPE_SaveList
+ : CSR_SVR32_ColdCC_SaveList));
}
return TM.isPPC64()
@@ -176,7 +178,9 @@ PPCRegisterInfo::getCalleeSavedRegs(cons
: CSR_SVR464_Altivec_SaveList)
: (SaveR2 ? CSR_SVR464_R2_SaveList : CSR_SVR464_SaveList))
: (Subtarget.hasAltivec() ? CSR_SVR432_Altivec_SaveList
- : CSR_SVR432_SaveList);
+ : (Subtarget.hasSPE()
+ ? CSR_SVR432_SPE_SaveList
+ : CSR_SVR432_SaveList));
}
const MCPhysReg *
@@ -226,13 +230,17 @@ PPCRegisterInfo::getCallPreservedMask(co
return TM.isPPC64() ? (Subtarget.hasAltivec() ? CSR_SVR64_ColdCC_Altivec_RegMask
: CSR_SVR64_ColdCC_RegMask)
: (Subtarget.hasAltivec() ? CSR_SVR32_ColdCC_Altivec_RegMask
- : CSR_SVR32_ColdCC_RegMask);
+ : (Subtarget.hasSPE()
+ ? CSR_SVR32_ColdCC_SPE_RegMask
+ : CSR_SVR32_ColdCC_RegMask));
}
return TM.isPPC64() ? (Subtarget.hasAltivec() ? CSR_SVR464_Altivec_RegMask
: CSR_SVR464_RegMask)
: (Subtarget.hasAltivec() ? CSR_SVR432_Altivec_RegMask
- : CSR_SVR432_RegMask);
+ : (Subtarget.hasSPE()
+ ? CSR_SVR432_SPE_RegMask
+ : CSR_SVR432_RegMask));
}
const uint32_t*

View File

@ -1,22 +0,0 @@
Author: Gianfranco Costamagna <locutusofborg@debian.org>
Last-Update: 2020-01-21
Index: llvm-toolchain-9-9.0.1/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
===================================================================
--- llvm-toolchain-9-9.0.1.orig/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
+++ llvm-toolchain-9-9.0.1/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
@@ -336,10 +336,11 @@
llvm::sys::path::remove_filename(path, style);
llvm::sys::path::append(path, style, LLDB_PYTHON_RELATIVE_LIBDIR);
#else
+ llvm::sys::path::remove_filename(path, style);
llvm::sys::path::append(path, style,
- "python" + llvm::Twine(PY_MAJOR_VERSION) + "." +
- llvm::Twine(PY_MINOR_VERSION),
- "site-packages");
+ "python3"/* + llvm::Twine(PY_MAJOR_VERSION) + "." +
+ llvm::Twine(PY_MINOR_VERSION)*/,
+ "dist-packages");
#endif
}

View File

@ -1,17 +0,0 @@
---
clang/bindings/python/clang/cindex.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: llvm-toolchain-9_9.0.0/clang/bindings/python/clang/cindex.py
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/bindings/python/clang/cindex.py
+++ llvm-toolchain-9_9.0.0/clang/bindings/python/clang/cindex.py
@@ -4160,7 +4160,7 @@ class Config(object):
elif name == 'Windows':
file = 'libclang.dll'
else:
- file = 'libclang.so'
+ file = 'libclang-9.so'
if Config.library_path:
file = Config.library_path + '/' + file

File diff suppressed because it is too large Load Diff

View File

@ -1,38 +0,0 @@
Index: llvm-toolchain-9_9.0.0/clang/docs/CommandGuide/clang.rst
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/docs/CommandGuide/clang.rst
+++ llvm-toolchain-9_9.0.0/clang/docs/CommandGuide/clang.rst
@@ -310,20 +310,10 @@ Clang fully supports cross compilation a
Depending on how your version of Clang is configured, it may have support for a
number of cross compilers, or may only support a native target.
-.. option:: -arch <architecture>
+.. option:: -target <architecture>
Specify the architecture to build for.
-.. option:: -mmacosx-version-min=<version>
-
- When building for macOS, specify the minimum version supported by your
- application.
-
-.. option:: -miphoneos-version-min
-
- When building for iPhone OS, specify the minimum version supported by your
- application.
-
.. option:: --print-supported-cpus
Print out a list of supported processors for the given target (specified
@@ -626,11 +616,6 @@ ENVIRONMENT
These environment variables specify additional paths, as for :envvar:`CPATH`, which are
only used when processing the appropriate language.
-.. envvar:: MACOSX_DEPLOYMENT_TARGET
-
- If :option:`-mmacosx-version-min` is unspecified, the default deployment
- target is read from this environment variable. This option only affects
- Darwin targets.
BUGS
----

View File

@ -1,34 +0,0 @@
Index: llvm-toolchain-9_9.0.0/compiler-rt/test/sanitizer_common/TestCases/Linux/sysconf_interceptor_bypass_test.cc
===================================================================
--- llvm-toolchain-9_9.0.0.orig/compiler-rt/test/sanitizer_common/TestCases/Linux/sysconf_interceptor_bypass_test.cc
+++ llvm-toolchain-9_9.0.0/compiler-rt/test/sanitizer_common/TestCases/Linux/sysconf_interceptor_bypass_test.cc
@@ -1,29 +0,0 @@
-// RUN: %clangxx -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
-
-#include <stdio.h>
-
-#if !defined(__GLIBC_PREREQ)
-#define __GLIBC_PREREQ(a, b) 0
-#endif
-
-// getauxval() used instead of sysconf() in GetPageSize() is defined starting
-// glbc version 2.16.
-#if __GLIBC_PREREQ(2, 16)
-extern "C" long sysconf(int name) {
- fprintf(stderr, "sysconf wrapper called\n");
- return 0;
-}
-#endif // defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 16)
-
-int main() {
- // All we need to check is that the sysconf() interceptor defined above was
- // not called. Should it get called, it will crash right there, any
- // instrumented code executed before sanitizer init is finished will crash
- // accessing non-initialized sanitizer internals. Even if it will not crash
- // in some configuration, it should never be called anyway.
- fprintf(stderr, "Passed\n");
- // CHECK-NOT: sysconf wrapper called
- // CHECK: Passed
- // CHECK-NOT: sysconf wrapper called
- return 0;
-}

View File

@ -1,51 +0,0 @@
Index: llvm-toolchain-9-9.0.1/clang/lib/Driver/ToolChains/Gnu.cpp
===================================================================
--- llvm-toolchain-9-9.0.1.orig/clang/lib/Driver/ToolChains/Gnu.cpp
+++ llvm-toolchain-9-9.0.1/clang/lib/Driver/ToolChains/Gnu.cpp
@@ -1502,11 +1502,12 @@ static bool findMSP430Multilibs(const Dr
return false;
}
-static void findRISCVMultilibs(const Driver &D,
+static bool findRISCVMultilibs(const Driver &D,
const llvm::Triple &TargetTriple, StringRef Path,
const ArgList &Args, DetectedMultilibs &Result) {
FilterNonExistent NonExistent(Path, "/crtbegin.o", D.getVFS());
+ Multilib Default;
Multilib Ilp32 = makeMultilib("lib32/ilp32").flag("+m32").flag("+mabi=ilp32");
Multilib Ilp32f =
makeMultilib("lib32/ilp32f").flag("+m32").flag("+mabi=ilp32f");
@@ -1517,7 +1518,7 @@ static void findRISCVMultilibs(const Dri
Multilib Lp64d = makeMultilib("lib64/lp64d").flag("+m64").flag("+mabi=lp64d");
MultilibSet RISCVMultilibs =
MultilibSet()
- .Either({Ilp32, Ilp32f, Ilp32d, Lp64, Lp64f, Lp64d})
+ .Either({Default, Ilp32, Ilp32f, Ilp32d, Lp64, Lp64f, Lp64d})
.FilterOut(NonExistent);
Multilib::flags_list Flags;
@@ -1533,8 +1534,11 @@ static void findRISCVMultilibs(const Dri
addMultilibFlag(ABIName == "lp64f", "mabi=lp64f", Flags);
addMultilibFlag(ABIName == "lp64d", "mabi=lp64d", Flags);
- if (RISCVMultilibs.select(Flags, Result.SelectedMultilib))
- Result.Multilibs = RISCVMultilibs;
+ if (!RISCVMultilibs.select(Flags, Result.SelectedMultilib))
+ return false;
+
+ Result.Multilibs = RISCVMultilibs;
+ return true;
}
static bool findBiarchMultilibs(const Driver &D,
@@ -2309,7 +2313,8 @@ bool Generic_GCC::GCCInstallationDetecto
if (!findMIPSMultilibs(D, TargetTriple, Path, Args, Detected))
return false;
} else if (TargetTriple.isRISCV()) {
- findRISCVMultilibs(D, TargetTriple, Path, Args, Detected);
+ if (!findRISCVMultilibs(D, TargetTriple, Path, Args, Detected))
+ return false;
} else if (isMSP430(TargetArch)) {
findMSP430Multilibs(D, TargetTriple, Path, Args, Detected);
} else if (TargetArch == llvm::Triple::avr) {

View File

@ -1,17 +0,0 @@
---
clang/tools/scan-build/bin/scan-build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: llvm-toolchain-9_9.0.0/clang/tools/scan-build/bin/scan-build
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/tools/scan-build/bin/scan-build
+++ llvm-toolchain-9_9.0.0/clang/tools/scan-build/bin/scan-build
@@ -1477,7 +1477,7 @@ sub FindClang {
if (!defined $Options{AnalyzerDiscoveryMethod}) {
$Clang = Cwd::realpath("$RealBin/bin/clang") if (-f "$RealBin/bin/clang");
if (!defined $Clang || ! -x $Clang) {
- $Clang = Cwd::realpath("$RealBin/clang") if (-f "$RealBin/clang");
+ $Clang = Cwd::realpath("/usr/lib/llvm-9/bin/clang");
if (!defined $Clang || ! -x $Clang) {
# When an Xcode toolchain is present, look for a clang in the sibling bin
# of the parent of the bin directory. So if scan-build is at

View File

@ -1,13 +0,0 @@
Index: llvm-toolchain-9_9.0.0/clang/tools/scan-view/bin/scan-view
===================================================================
--- llvm-toolchain-9_9.0.0.orig/clang/tools/scan-view/bin/scan-view
+++ llvm-toolchain-9_9.0.0/clang/tools/scan-view/bin/scan-view
@@ -65,7 +65,7 @@ def start_browser(port, options):
def run(port, options, root):
# Prefer to look relative to the installed binary
- share = os.path.dirname(__file__) + "/../share/scan-view"
+ share = os.path.dirname(__file__) + "/../share/"
if not os.path.isdir(share):
# Otherwise look relative to the source
share = os.path.dirname(__file__) + "/../../scan-view/share"

147
debian/patches/series vendored
View File

@ -1,147 +0,0 @@
# Debian versions
19-clang_debian_version.patch
0003-Debian-version-info-and-bugreport.patch
clang-format-version.diff
clang-analyzer-force-version.diff
# Disabling features
23-strlcpy_strlcat_warning_removed.diff
declare_clear_cache.diff
unwind-chain-inclusion.diff
atomic_library_1.diff
# Path updates
python-clangpath.diff
fix-clang-path-and-build.diff
0048-Set-html_static_path-_static-everywhere.patch
symbolizer-path.diff
clang-tidy-run-bin.diff
0001-tools-clang-cmake-resolve-symlinks-in-ClangConfig.cmake.patch
debug-jit-path.diff
# commented because of bug 903709
#force-gcc-header-obj.diff
do-not-fail-on-unexpected-pass.diff
disable-display-PASS-UNSUPPORTED-XFAIL.diff
# llvm-config
fix-llvm-config-obj-src-root.patch
0001-llvm-cmake-resolve-symlinks-in-LLVMConfig.cmake.patch
# Lib names
0044-soname.diff
lldb-soname.diff
lldb-libname.diff
openmp-soname.diff
# Disable some tests
silent-gold-test.diff
silent-more-tests.diff
silent-MCJIIT-tests.diff
silent-gold-utils.diff
silent-test-failing-codeverage.diff
silent-amd-tet.diff
silent-test-macho.diff
silent-llvm-isel-fuzzer.diff
remove-test-freezing.diff
disable-llvm-symbolizer-test.diff
disable-path-test-failing.diff
# Decrease the freq for the keep alive
test-keep-alive.diff
# scan-build
scan-build-clang-path.diff
install-scan-build-py.diff
scan-view-fix-path.diff
fix-scan-view-path.diff
# lldb
lldb/lldb-link-atomic-cmake.patch
lldb/lldb-addversion-suffix-to-llvm-server-exec.patch
lldb/lldb-missing-install.diff
lldb/lldb-disable-swig-error.diff
# Fix arch issue
disable-error-xray.diff
# OpenMP
openmp/openmp-check-execstack.diff
openmp/openmp-mips-affinity.patch
openmp/bootstrap-with-openmp-version-export-missing.diff
# libcxx
libcxx/libcxxabi-test-don-t-fail-extended-long-double.patch
libcxx/libcxx-test-fix-lockfree-test-for-i386.patch
libcxx/libcxxabi-arm-ehabi-fix.patch
libcxx/libcxx-test-atomics-set-compare-exchange-to-be-expected-fails-on-arm.patch
libcxx/libcxx-silent-test-libcxx.diff
libcxx/libcxx-silent-failure-ppc64el.diff
libcxx/libcxx-silent-failure-arm64.diff
# Change default optims
mips-fpxx-enable.diff
26-set-correct-float-abi.diff
clang-baseline-fix-i386.patch
disable-sse2-old-x86.diff
clang-arm-default-vfp3-on-armv7a.patch
# For the bootstrap
clangd-atomic-cmake.patch
# Fix docs
# https://reviews.llvm.org/D60380
remove-apple-clang-manpage.diff
0049-Use-Debian-provided-MathJax-everywhere.patch
# Hurd port
hurd/hurd-pathmax.diff
hurd/impl-path-hurd.diff
hurd/hurd-cxx-paths.diff
# powerpcspe
#powerpcspe/D49754-powerpcspe-clang.diff
#powerpcspe/D54583-powerpcspe-double-parameter.diff
#powerpcspe/D56703-powerpcspe-register-spilling.diff
# kfreebsd
# kfreebsd/clang_lib_Basic_Targets.diff
# kfreebsd/CMakeLists.txt.diff
# kfreebsd/compiler-rt_lib.diff
# kfreebsd/include_llvm_ADT_Triple.h.diff
# kfreebsd/kfreebsd-libcxx-threads-detection.diff
# kfreebsd/kfreebsd-openmp.diff
# kfreebsd/kfreebsd-threads-build.diff
# kfreebsd/kfreebsd-triple-clang.diff
# kfreebsd/kfreebsd-triple.diff
# kfreebsd/lib_Support.diff
# kfreebsd/lib_Target_X86.diff
# kfreebsd/lldb_source_Host_freebsd_Host.cpp.diff
# kfreebsd/lldb_source_Plugins_Process_FreeBSD.diff
# kfreebsd/tools_llvm-shlib_CMakeLists.txt.diff
930008-arm.diff
bootstrap-fix-include-next.diff
# riscv64
clang-riscv64-multiarch.diff
clang-riscv64-rv64gc.diff
llvm-riscv64-fix-cffi.diff
D60657-riscv-pcrel_lo.diff
D74453-riscv-atomic_cmp_xchg.diff
#try-to-unbreak-thinlto.diff
D67877.patch
disable-lit-cpuid-install.diff
disable-fuzzer-compiler-rt.diff
no-z3.patch
# bug #946874
D71028-mips-rust-test.diff
python3-shebang.patch
print-lldb-path.patch
no-cgi.patch
947f9692440836dcb8d88b74b69dd379d85974ce.patch
riscv64-multilib-empty.patch

View File

@ -1,190 +0,0 @@
---
test/BugPoint/crash-narrowfunctiontest.ll | 1 -
test/BugPoint/remove_arguments_test.ll | 1 -
test/ExecutionEngine/MCJIT/cross-module-sm-pic-a.ll | 2 +-
test/ExecutionEngine/MCJIT/eh-lg-pic.ll | 2 +-
test/ExecutionEngine/MCJIT/multi-module-sm-pic-a.ll | 2 +-
test/ExecutionEngine/MCJIT/stubs-sm-pic.ll | 2 +-
test/ExecutionEngine/MCJIT/test-global-init-nonzero-sm-pic.ll | 2 +-
test/ExecutionEngine/MCJIT/test-ptr-reloc-sm-pic.ll | 2 +-
test/ExecutionEngine/OrcMCJIT/cross-module-sm-pic-a.ll | 2 +-
test/ExecutionEngine/OrcMCJIT/eh-lg-pic.ll | 2 +-
test/ExecutionEngine/OrcMCJIT/multi-module-sm-pic-a.ll | 2 +-
test/ExecutionEngine/OrcMCJIT/remote/test-global-init-nonzero-sm-pic.ll | 2 +-
test/ExecutionEngine/OrcMCJIT/remote/test-ptr-reloc-sm-pic.ll | 2 +-
test/ExecutionEngine/OrcMCJIT/stubs-sm-pic.ll | 2 +-
test/ExecutionEngine/OrcMCJIT/test-global-init-nonzero-sm-pic.ll | 2 +-
test/ExecutionEngine/OrcMCJIT/test-ptr-reloc-sm-pic.ll | 2 +-
test/Feature/load_module.ll | 1 -
17 files changed, 14 insertions(+), 17 deletions(-)
Index: llvm-toolchain-9_9.0.0/llvm/test/ExecutionEngine/MCJIT/cross-module-sm-pic-a.ll
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/ExecutionEngine/MCJIT/cross-module-sm-pic-a.ll
+++ llvm-toolchain-9_9.0.0/llvm/test/ExecutionEngine/MCJIT/cross-module-sm-pic-a.ll
@@ -1,5 +1,5 @@
; RUN: %lli -extra-module=%p/Inputs/cross-module-b.ll -relocation-model=pic -code-model=small %s > /dev/null
-; XFAIL: mips-, mipsel-, i686, i386
+; XFAIL: *
declare i32 @FB()
Index: llvm-toolchain-9_9.0.0/llvm/test/ExecutionEngine/MCJIT/eh-lg-pic.ll
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/ExecutionEngine/MCJIT/eh-lg-pic.ll
+++ llvm-toolchain-9_9.0.0/llvm/test/ExecutionEngine/MCJIT/eh-lg-pic.ll
@@ -1,6 +1,6 @@
; REQUIRES: cxx-shared-library
; RUN: %lli -relocation-model=pic -code-model=large %s
-; XFAIL: cygwin, windows-msvc, windows-gnu, mips-, mipsel-, i686, i386, aarch64, arm
+; XFAIL: *
declare i8* @__cxa_allocate_exception(i64)
declare void @__cxa_throw(i8*, i8*, i8*)
declare i32 @__gxx_personality_v0(...)
Index: llvm-toolchain-9_9.0.0/llvm/test/ExecutionEngine/MCJIT/multi-module-sm-pic-a.ll
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/ExecutionEngine/MCJIT/multi-module-sm-pic-a.ll
+++ llvm-toolchain-9_9.0.0/llvm/test/ExecutionEngine/MCJIT/multi-module-sm-pic-a.ll
@@ -1,5 +1,5 @@
; RUN: %lli -extra-module=%p/Inputs/multi-module-b.ll -extra-module=%p/Inputs/multi-module-c.ll -relocation-model=pic -code-model=small %s > /dev/null
-; XFAIL: mips-, mipsel-, i686, i386
+; XFAIL: *
declare i32 @FB()
Index: llvm-toolchain-9_9.0.0/llvm/test/ExecutionEngine/MCJIT/stubs-sm-pic.ll
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/ExecutionEngine/MCJIT/stubs-sm-pic.ll
+++ llvm-toolchain-9_9.0.0/llvm/test/ExecutionEngine/MCJIT/stubs-sm-pic.ll
@@ -1,5 +1,5 @@
; RUN: %lli -disable-lazy-compilation=false -relocation-model=pic -code-model=small %s
-; XFAIL: mips-, mipsel-, i686, i386, aarch64, arm
+; XFAIL: mips-, mipsel-, i686, i386, aarch64, arm, x86_64
define i32 @main() nounwind {
entry:
Index: llvm-toolchain-9_9.0.0/llvm/test/ExecutionEngine/MCJIT/test-global-init-nonzero-sm-pic.ll
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/ExecutionEngine/MCJIT/test-global-init-nonzero-sm-pic.ll
+++ llvm-toolchain-9_9.0.0/llvm/test/ExecutionEngine/MCJIT/test-global-init-nonzero-sm-pic.ll
@@ -1,5 +1,5 @@
; RUN: %lli -relocation-model=pic -code-model=small %s > /dev/null
-; XFAIL: mips-, mipsel-, aarch64, arm, i686, i386
+; XFAIL: mips-, mipsel-, aarch64, arm, i686, i386, x86_64
@count = global i32 1, align 4
Index: llvm-toolchain-9_9.0.0/llvm/test/ExecutionEngine/MCJIT/test-ptr-reloc-sm-pic.ll
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/ExecutionEngine/MCJIT/test-ptr-reloc-sm-pic.ll
+++ llvm-toolchain-9_9.0.0/llvm/test/ExecutionEngine/MCJIT/test-ptr-reloc-sm-pic.ll
@@ -1,5 +1,5 @@
; RUN: %lli -O0 -relocation-model=pic -code-model=small %s
-; XFAIL: mips-, mipsel-, aarch64, arm, i686, i386
+; XFAIL: mips-, mipsel-, aarch64, arm, i686, i386, x86_64
@.str = private unnamed_addr constant [6 x i8] c"data1\00", align 1
@ptr = global i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i32 0, i32 0), align 4
Index: llvm-toolchain-9_9.0.0/llvm/test/ExecutionEngine/OrcMCJIT/cross-module-sm-pic-a.ll
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/ExecutionEngine/OrcMCJIT/cross-module-sm-pic-a.ll
+++ llvm-toolchain-9_9.0.0/llvm/test/ExecutionEngine/OrcMCJIT/cross-module-sm-pic-a.ll
@@ -1,5 +1,5 @@
; RUN: %lli -jit-kind=orc-mcjit -extra-module=%p/Inputs/cross-module-b.ll -relocation-model=pic -code-model=small %s > /dev/null
-; XFAIL: mips-, mipsel-, i686, i386
+; XFAIL: *
declare i32 @FB()
Index: llvm-toolchain-9_9.0.0/llvm/test/ExecutionEngine/OrcMCJIT/eh-lg-pic.ll
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/ExecutionEngine/OrcMCJIT/eh-lg-pic.ll
+++ llvm-toolchain-9_9.0.0/llvm/test/ExecutionEngine/OrcMCJIT/eh-lg-pic.ll
@@ -1,6 +1,6 @@
; REQUIRES: cxx-shared-library
; RUN: %lli -jit-kind=orc-mcjit -relocation-model=pic -code-model=large %s
-; XFAIL: cygwin, windows-msvc, windows-gnu, mips-, mipsel-, i686, i386, aarch64, arm
+; XFAIL: *
declare i8* @__cxa_allocate_exception(i64)
declare void @__cxa_throw(i8*, i8*, i8*)
declare i32 @__gxx_personality_v0(...)
Index: llvm-toolchain-9_9.0.0/llvm/test/ExecutionEngine/OrcMCJIT/multi-module-sm-pic-a.ll
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/ExecutionEngine/OrcMCJIT/multi-module-sm-pic-a.ll
+++ llvm-toolchain-9_9.0.0/llvm/test/ExecutionEngine/OrcMCJIT/multi-module-sm-pic-a.ll
@@ -1,5 +1,5 @@
; RUN: %lli -jit-kind=orc-mcjit -extra-module=%p/Inputs/multi-module-b.ll -extra-module=%p/Inputs/multi-module-c.ll -relocation-model=pic -code-model=small %s > /dev/null
-; XFAIL: mips-, mipsel-, i686, i386
+; XFAIL: *
declare i32 @FB()
Index: llvm-toolchain-9_9.0.0/llvm/test/ExecutionEngine/OrcMCJIT/remote/test-global-init-nonzero-sm-pic.ll
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/ExecutionEngine/OrcMCJIT/remote/test-global-init-nonzero-sm-pic.ll
+++ llvm-toolchain-9_9.0.0/llvm/test/ExecutionEngine/OrcMCJIT/remote/test-global-init-nonzero-sm-pic.ll
@@ -1,6 +1,6 @@
; RUN: %lli -jit-kind=orc-mcjit -remote-mcjit -mcjit-remote-process=lli-child-target%exeext \
; RUN: -relocation-model=pic -code-model=small %s > /dev/null
-; XFAIL: mips-, mipsel-, aarch64, arm, i686, i386, windows-gnu, windows-msvc
+; XFAIL: *
; UNSUPPORTED: powerpc64-unknown-linux-gnu
; Remove UNSUPPORTED for powerpc64-unknown-linux-gnu if problem caused by r266663 is fixed
Index: llvm-toolchain-9_9.0.0/llvm/test/ExecutionEngine/OrcMCJIT/remote/test-ptr-reloc-sm-pic.ll
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/ExecutionEngine/OrcMCJIT/remote/test-ptr-reloc-sm-pic.ll
+++ llvm-toolchain-9_9.0.0/llvm/test/ExecutionEngine/OrcMCJIT/remote/test-ptr-reloc-sm-pic.ll
@@ -1,6 +1,6 @@
; RUN: %lli -jit-kind=orc-mcjit -remote-mcjit -mcjit-remote-process=lli-child-target%exeext \
; RUN: -O0 -relocation-model=pic -code-model=small %s
-; XFAIL: mips-, mipsel-, aarch64, arm, i686, i386, windows-gnu, windows-msvc
+; XFAIL: *
; UNSUPPORTED: powerpc64-unknown-linux-gnu
; Remove UNSUPPORTED for powerpc64-unknown-linux-gnu if problem caused by r266663 is fixed
Index: llvm-toolchain-9_9.0.0/llvm/test/ExecutionEngine/OrcMCJIT/stubs-sm-pic.ll
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/ExecutionEngine/OrcMCJIT/stubs-sm-pic.ll
+++ llvm-toolchain-9_9.0.0/llvm/test/ExecutionEngine/OrcMCJIT/stubs-sm-pic.ll
@@ -1,5 +1,5 @@
; RUN: %lli -jit-kind=orc-mcjit -disable-lazy-compilation=false -relocation-model=pic -code-model=small %s
-; XFAIL: mips-, mipsel-, i686, i386, aarch64, arm
+; XFAIL: mips-, mipsel-, i686, i386, aarch64, arm, x86_64
define i32 @main() nounwind {
entry:
Index: llvm-toolchain-9_9.0.0/llvm/test/ExecutionEngine/OrcMCJIT/test-global-init-nonzero-sm-pic.ll
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/ExecutionEngine/OrcMCJIT/test-global-init-nonzero-sm-pic.ll
+++ llvm-toolchain-9_9.0.0/llvm/test/ExecutionEngine/OrcMCJIT/test-global-init-nonzero-sm-pic.ll
@@ -1,5 +1,5 @@
; RUN: %lli -jit-kind=orc-mcjit -relocation-model=pic -code-model=small %s > /dev/null
-; XFAIL: mips-, mipsel-, aarch64, arm, i686, i386
+; XFAIL: mips-, mipsel-, aarch64, arm, i686, i386, x86_64
@count = global i32 1, align 4
Index: llvm-toolchain-9_9.0.0/llvm/test/ExecutionEngine/OrcMCJIT/test-ptr-reloc-sm-pic.ll
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/ExecutionEngine/OrcMCJIT/test-ptr-reloc-sm-pic.ll
+++ llvm-toolchain-9_9.0.0/llvm/test/ExecutionEngine/OrcMCJIT/test-ptr-reloc-sm-pic.ll
@@ -1,5 +1,5 @@
; RUN: %lli -jit-kind=orc-mcjit -O0 -relocation-model=pic -code-model=small %s
-; XFAIL: mips-, mipsel-, aarch64, arm, i686, i386
+; XFAIL: mips-, mipsel-, aarch64, arm, i686, i386, x86_64
@.str = private unnamed_addr constant [6 x i8] c"data1\00", align 1
@ptr = global i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i32 0, i32 0), align 4
Index: llvm-toolchain-9_9.0.0/llvm/test/Feature/load_module.ll
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/Feature/load_module.ll
+++ llvm-toolchain-9_9.0.0/llvm/test/Feature/load_module.ll
@@ -3,7 +3,6 @@
; RUN: -disable-output 2>&1 | grep Hello
; REQUIRES: plugins
; FIXME: On Cygming, it might fail without building LLVMHello manually.
-; XFAIL: *
@junk = global i32 0

View File

@ -1,11 +0,0 @@
Index: llvm-toolchain-9_9.0.0/llvm/test/MC/AMDGPU/hsa.s
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/MC/AMDGPU/hsa.s
+++ llvm-toolchain-9_9.0.0/llvm/test/MC/AMDGPU/hsa.s
@@ -1,5 +1,6 @@
// RUN: llvm-mc -triple amdgcn--amdhsa -mcpu=kaveri -mattr=-code-object-v3 -show-encoding %s | FileCheck %s --check-prefix=ASM
// RUN: llvm-mc -filetype=obj -triple amdgcn--amdhsa -mcpu=kaveri -mattr=-code-object-v3 -show-encoding %s | llvm-readobj --symbols -S --sd | FileCheck %s --check-prefix=ELF
+// XFAIL: *
// ELF: Section {
// ELF: Name: .text

View File

@ -1,38 +0,0 @@
Description: fails on debian unstable amd64
Command Output (stderr):
--
/build/llvm-toolchain-snapshot-4.0~svn279916/llvm/test/tools/gold/X86/start-lib-common.ll:22:10: error: expected string not found in input
; CHECK: @x = common global i32 0, align 8
^
<stdin>:1:1: note: scanning from here
; ModuleID = '/build/llvm-toolchain-snapshot-4.0~svn279916/build-llvm/llvm/test/tools/gold/X86/Output/start-lib-common.ll.tmp3.o'
^
<stdin>:4:1: note: possible intended match here
@x = common global i32 0, align 4
^
Index: llvm-toolchain-9_9.0.0/llvm/test/tools/gold/X86/start-lib-common.ll
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/tools/gold/X86/start-lib-common.ll
+++ llvm-toolchain-9_9.0.0/llvm/test/tools/gold/X86/start-lib-common.ll
@@ -9,6 +9,7 @@
; RUN: -shared %t1.o --start-lib %t2.o --end-lib -o %t3.o
; RUN: llvm-dis %t3.o -o - | FileCheck %s
+; XFAIL: *
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
@x = common global i32 0, align 4
Index: llvm-toolchain-9_9.0.0/llvm/test/tools/gold/X86/comdat.ll
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/tools/gold/X86/comdat.ll
+++ llvm-toolchain-9_9.0.0/llvm/test/tools/gold/X86/comdat.ll
@@ -5,6 +5,7 @@
; RUN: -plugin-opt=save-temps
; RUN: FileCheck --check-prefix=RES %s < %t3.o.resolution.txt
; RUN: llvm-readobj --symbols %t3.o | FileCheck --check-prefix=OBJ %s
+; XFAIL: *
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

View File

@ -1,190 +0,0 @@
---
test/tools/gold/X86/common_thinlto.ll | 1 +
test/tools/gold/X86/emit-llvm.ll | 2 ++
test/tools/gold/X86/parallel.ll | 1 +
test/tools/gold/X86/pr19901_thinlto.ll | 1 +
test/tools/gold/X86/slp-vectorize.ll | 1 +
test/tools/gold/X86/strip_names.ll | 1 +
test/tools/gold/X86/thinlto.ll | 2 ++
test/tools/gold/X86/thinlto_archive.ll | 1 +
test/tools/gold/X86/thinlto_internalize.ll | 2 ++
test/tools/gold/X86/thinlto_linkonceresolution.ll | 2 ++
test/tools/gold/X86/thinlto_weak_resolution.ll | 3 ++-
test/tools/gold/X86/type-merge2.ll | 2 +-
test/tools/gold/X86/vectorize.ll | 1 +
test/tools/gold/X86/visibility.ll | 1 +
14 files changed, 19 insertions(+), 2 deletions(-)
Index: llvm-toolchain-9_9.0.0/llvm/test/tools/gold/X86/common_thinlto.ll
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/tools/gold/X86/common_thinlto.ll
+++ llvm-toolchain-9_9.0.0/llvm/test/tools/gold/X86/common_thinlto.ll
@@ -17,6 +17,7 @@
; RUN: llvm-nm %t3 | FileCheck %s --check-prefix=NM
; NM: bar
+; XFAIL: *
source_filename = "common1.c"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
Index: llvm-toolchain-9_9.0.0/llvm/test/tools/gold/X86/emit-llvm.ll
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/tools/gold/X86/emit-llvm.ll
+++ llvm-toolchain-9_9.0.0/llvm/test/tools/gold/X86/emit-llvm.ll
@@ -21,6 +21,8 @@
; RUN: not test -a %t4.o
; NM: T f3
+; XFAIL: *
+
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
Index: llvm-toolchain-9_9.0.0/llvm/test/tools/gold/X86/parallel.ll
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/tools/gold/X86/parallel.ll
+++ llvm-toolchain-9_9.0.0/llvm/test/tools/gold/X86/parallel.ll
@@ -5,6 +5,7 @@
; RUN: llvm-dis %t.1.5.precodegen.bc -o - | FileCheck --check-prefix=CHECK-BC1 %s
; RUN: llvm-nm %t.o | FileCheck --check-prefix=CHECK0 %s
; RUN: llvm-nm %t.o1 | FileCheck --check-prefix=CHECK1 %s
+; XFAIL: *
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
Index: llvm-toolchain-9_9.0.0/llvm/test/tools/gold/X86/pr19901_thinlto.ll
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/tools/gold/X86/pr19901_thinlto.ll
+++ llvm-toolchain-9_9.0.0/llvm/test/tools/gold/X86/pr19901_thinlto.ll
@@ -4,6 +4,7 @@
; RUN: --plugin-opt=thinlto \
; RUN: -shared -m elf_x86_64 -o %t.so %t2.o %t.o
; RUN: llvm-readobj --symbols %t.so | FileCheck %s
+; XFAIL: i686, i386
; CHECK: Symbol {
; CHECK: Name: f
Index: llvm-toolchain-9_9.0.0/llvm/test/tools/gold/X86/slp-vectorize.ll
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/tools/gold/X86/slp-vectorize.ll
+++ llvm-toolchain-9_9.0.0/llvm/test/tools/gold/X86/slp-vectorize.ll
@@ -7,6 +7,7 @@
; test that the vectorizer is run.
; CHECK: fadd <4 x float>
+; XFAIL: *
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
Index: llvm-toolchain-9_9.0.0/llvm/test/tools/gold/X86/strip_names.ll
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/tools/gold/X86/strip_names.ll
+++ llvm-toolchain-9_9.0.0/llvm/test/tools/gold/X86/strip_names.ll
@@ -25,6 +25,7 @@
; NONAME: %2 = load i32, i32* @GlobalValueName
; NONAME: %3 = add i32 %0, %2
; NONAME: ret i32 %3
+; XFAIL: *
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
Index: llvm-toolchain-9_9.0.0/llvm/test/tools/gold/X86/thinlto.ll
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/tools/gold/X86/thinlto.ll
+++ llvm-toolchain-9_9.0.0/llvm/test/tools/gold/X86/thinlto.ll
@@ -141,6 +141,8 @@
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
+; XFAIL: i686, i386
+
declare void @g(...)
define void @f() {
Index: llvm-toolchain-9_9.0.0/llvm/test/tools/gold/X86/thinlto_archive.ll
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/tools/gold/X86/thinlto_archive.ll
+++ llvm-toolchain-9_9.0.0/llvm/test/tools/gold/X86/thinlto_archive.ll
@@ -15,6 +15,7 @@
; RUN: --plugin-opt=jobs=1 \
; RUN: -shared %t.o %t.a -o %t4 2>&1 | FileCheck %s
; RUN: llvm-nm %t4 | FileCheck %s --check-prefix=NM
+; XFAIL: i686, i386
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
Index: llvm-toolchain-9_9.0.0/llvm/test/tools/gold/X86/thinlto_internalize.ll
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/tools/gold/X86/thinlto_internalize.ll
+++ llvm-toolchain-9_9.0.0/llvm/test/tools/gold/X86/thinlto_internalize.ll
@@ -14,6 +14,8 @@
; h() should be internalized after promotion, and eliminated after inlining
; CHECK-NOT: @h.llvm.
+; XFAIL: i686, i386
+
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
define i32 @g() {
Index: llvm-toolchain-9_9.0.0/llvm/test/tools/gold/X86/thinlto_linkonceresolution.ll
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/tools/gold/X86/thinlto_linkonceresolution.ll
+++ llvm-toolchain-9_9.0.0/llvm/test/tools/gold/X86/thinlto_linkonceresolution.ll
@@ -23,6 +23,8 @@
; OPT-NOT: @f()
; OPT2: define weak_odr hidden void @f()
+; XFAIL: i686, i386
+
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
define i32 @g() {
Index: llvm-toolchain-9_9.0.0/llvm/test/tools/gold/X86/thinlto_weak_resolution.ll
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/tools/gold/X86/thinlto_weak_resolution.ll
+++ llvm-toolchain-9_9.0.0/llvm/test/tools/gold/X86/thinlto_weak_resolution.ll
@@ -9,6 +9,7 @@
; RUN: --plugin-opt=save-temps \
; RUN: -shared \
; RUN: -o %t3.o %t.o %t2.o
+; XFAIL: i686, i386
; RUN: llvm-nm %t3.o | FileCheck %s
; CHECK: weakfunc
Index: llvm-toolchain-9_9.0.0/llvm/test/tools/gold/X86/type-merge2.ll
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/tools/gold/X86/type-merge2.ll
+++ llvm-toolchain-9_9.0.0/llvm/test/tools/gold/X86/type-merge2.ll
@@ -6,6 +6,8 @@
; RUN: -shared %t.o %t2.o -o %t3.o
; RUN: llvm-dis %t3.o.0.2.internalize.bc -o - | FileCheck %s
+; XFAIL: *
+
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
Index: llvm-toolchain-9_9.0.0/llvm/test/tools/gold/X86/vectorize.ll
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/tools/gold/X86/vectorize.ll
+++ llvm-toolchain-9_9.0.0/llvm/test/tools/gold/X86/vectorize.ll
@@ -7,6 +7,7 @@
; test that the vectorizer is run.
; CHECK: fadd <4 x float>
+; XFAIL: *
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
Index: llvm-toolchain-9_9.0.0/llvm/test/tools/gold/X86/visibility.ll
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/tools/gold/X86/visibility.ll
+++ llvm-toolchain-9_9.0.0/llvm/test/tools/gold/X86/visibility.ll
@@ -16,6 +16,7 @@
; CHECK-NEXT: Other [
; CHECK-NEXT: STV_PROTECTED
; CHECK-NEXT: ]
+; XFAIL: *
; IR: define dso_local void @foo

View File

@ -1,24 +0,0 @@
Index: llvm-toolchain-9_9.0.0/llvm/test/tools/llvm-isel-fuzzer/aarch64-execname-options.ll
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/tools/llvm-isel-fuzzer/aarch64-execname-options.ll
+++ llvm-toolchain-9_9.0.0/llvm/test/tools/llvm-isel-fuzzer/aarch64-execname-options.ll
@@ -2,6 +2,7 @@
; without copying the whole lib dir or polluting the build dir.
; REQUIRES: static-libs
; REQUIRES: aarch64-registered-target
+: XFAIL: *
; The above also applies if the binary is built with libc++.
; UNSUPPORTED: libcxx-used
Index: llvm-toolchain-9_9.0.0/llvm/test/tools/llvm-isel-fuzzer/execname-options.ll
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/tools/llvm-isel-fuzzer/execname-options.ll
+++ llvm-toolchain-9_9.0.0/llvm/test/tools/llvm-isel-fuzzer/execname-options.ll
@@ -1,6 +1,7 @@
; If the binary looks up libraries using an rpath, we can't test this
; without copying the whole lib dir or polluting the build dir.
; REQUIRES: static-libs
+: XFAIL: *
; The above also applies if the binary is built with libc++.
; UNSUPPORTED: libcxx-used

View File

@ -1,36 +0,0 @@
# Comment the tests for the code coverage (fails otherwise)
---
test/BugPoint/crash-narrowfunctiontest.ll | 1 +
test/BugPoint/metadata.ll | 3 ++-
test/BugPoint/remove_arguments_test.ll | 1 +
test/Feature/load_module.ll | 1 +
4 files changed, 5 insertions(+), 1 deletion(-)
Index: llvm-toolchain-9_9.0.0/llvm/test/BugPoint/metadata.ll
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/BugPoint/metadata.ll
+++ llvm-toolchain-9_9.0.0/llvm/test/BugPoint/metadata.ll
@@ -7,7 +7,8 @@
;
; RUN: bugpoint -load %llvmshlibdir/BugpointPasses%shlibext %s -output-prefix %t-notype -bugpoint-crashcalls -silence-passes -disable-namedmd-remove -disable-strip-debuginfo > /dev/null
; RUN: llvm-dis %t-notype-reduced-simplified.bc -o - | FileCheck %s --check-prefix=NOTYPE
-;
+; XFAIL: *
+
; Bugpoint should keep the call's metadata attached to the call.
; CHECK: call void @foo(), !dbg ![[LOC:[0-9]+]], !attach ![[CALL:[0-9]+]]
Index: llvm-toolchain-9_9.0.0/llvm/test/Feature/load_module.ll
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/Feature/load_module.ll
+++ llvm-toolchain-9_9.0.0/llvm/test/Feature/load_module.ll
@@ -3,6 +3,7 @@
; RUN: -disable-output 2>&1 | grep Hello
; REQUIRES: plugins
; FIXME: On Cygming, it might fail without building LLVMHello manually.
+; XFAIL: *
@junk = global i32 0

View File

@ -1,13 +0,0 @@
Index: llvm-toolchain-9_9.0.0/llvm/test/ThinLTO/X86/autoupgrade.ll
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/ThinLTO/X86/autoupgrade.ll
+++ llvm-toolchain-9_9.0.0/llvm/test/ThinLTO/X86/autoupgrade.ll
@@ -19,6 +19,8 @@
; SUMMARYNAMES: ^2 = gv: (name: "globalfunc2",
; SUMMARYNAMES: ^3 = gv: (name: "globalfunc1"
+; XFAIL: *
+
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx10.11.0"

View File

@ -1,14 +0,0 @@
Index: llvm-toolchain-9_9.0.0/llvm/test/Object/macho-invalid.test
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/test/Object/macho-invalid.test
+++ llvm-toolchain-9_9.0.0/llvm/test/Object/macho-invalid.test
@@ -284,9 +284,6 @@ INVALID-DYLIB-WRONG-FILETYPE: macho-inva
RUN: not llvm-objdump --macho --private-headers %p/Inputs/macho-invalid-dylib-no-id 2>&1 | FileCheck -check-prefix INVALID-DYLIB-NO-ID %s
INVALID-DYLIB-NO-ID: macho-invalid-dylib-no-id': truncated or malformed object (no LC_ID_DYLIB load command in dynamic library filetype)
-RUN: not llvm-objdump --macho --private-headers %p/Inputs/macho-invalid-dylib-cmdsize-past-eof 2>&1 | FileCheck -check-prefix INVALID-DYLIB-CMDSIZE %s
-INVALID-DYLIB-CMDSIZE: macho-invalid-dylib-cmdsize-past-eof': truncated or malformed object (load command 0 extends past end of file)
-
RUN: not llvm-objdump --macho --private-headers %p/Inputs/macho-invalid-uuid-more-than-one 2>&1 | FileCheck -check-prefix INVALID-UUID-MORE-THAN-ONE %s
INVALID-UUID-MORE-THAN-ONE: macho-invalid-uuid-more-than-one': truncated or malformed object (more than one LC_UUID command)

View File

@ -1,24 +0,0 @@
Index: llvm-toolchain-9_9.0.0/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc
===================================================================
--- llvm-toolchain-9_9.0.0.orig/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc
+++ llvm-toolchain-9_9.0.0/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc
@@ -25,6 +25,10 @@
#include "sanitizer_symbolizer_internal.h"
#include "sanitizer_symbolizer_libbacktrace.h"
#include "sanitizer_symbolizer_mac.h"
+#include "llvm/Config/llvm-config.h" // for LLVM_VERSION_MAJOR
+
+#define TOSTR2(X) #X
+#define TOSTR(X) TOSTR2(X)
#include <dlfcn.h> // for dlsym()
#include <errno.h>
@@ -480,7 +484,7 @@ static SymbolizerTool *ChooseExternalSym
return new(*allocator) AtosSymbolizer(found_path, allocator);
}
#endif // SANITIZER_MAC
- if (const char *found_path = FindPathToBinary("llvm-symbolizer")) {
+ if (const char *found_path = "/usr/bin/llvm-symbolizer-" TOSTR(LLVM_VERSION_MAJOR)) {
VReport(2, "Using llvm-symbolizer found at: %s\n", found_path);
return new(*allocator) LLVMSymbolizer(found_path, allocator);
}

View File

@ -1,21 +0,0 @@
Index: llvm-toolchain-9_9.0.0/llvm/utils/lit/lit/ProgressBar.py
===================================================================
--- llvm-toolchain-9_9.0.0.orig/llvm/utils/lit/lit/ProgressBar.py
+++ llvm-toolchain-9_9.0.0/llvm/utils/lit/lit/ProgressBar.py
@@ -189,15 +189,7 @@ class SimpleProgressBar:
return
for i in range(self.atIndex, next):
- idx = i % 5
- if idx == 0:
- sys.stdout.write('%-2d' % (i*2))
- elif idx == 1:
- pass # Skip second char
- elif idx < 4:
- sys.stdout.write('.')
- else:
- sys.stdout.write(' ')
+ sys.stdout.write('%-2d ' % (i*2))
sys.stdout.flush()
self.atIndex = next

Some files were not shown because too many files have changed in this diff Show More