changed debian/source/format to native
This commit is contained in:
parent
2869bc2ee2
commit
9445527a49
|
@ -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)")
|
|
@ -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)")
|
|
@ -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
|
|
@ -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")
|
|
@ -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.
|
|
@ -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
|
|
@ -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.
|
|
@ -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}}
|
||||
-}
|
|
@ -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;
|
|
@ -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";
|
||||
}
|
|
@ -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)
|
|
@ -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
|
||||
+
|
|
@ -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
|
@ -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
|
|
@ -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
|
||||
|
|
@ -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.
|
|
@ -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
|
||||
}
|
|
@ -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]>;
|
|
@ -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";
|
||||
}
|
||||
}
|
||||
|
|
@ -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')
|
||||
|
|
@ -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;
|
|
@ -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!");
|
||||
|
|
@ -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 '
|
|
@ -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
|
|
@ -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/";
|
|
@ -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
|
|
@ -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:
|
|
@ -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
|
||||
|
|
@ -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})
|
|
@ -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
|
||||
)
|
||||
|
|
@ -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
|
|
@ -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"));
|
||||
}
|
|
@ -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")
|
|
@ -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)
|
|
@ -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;
|
|
@ -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;
|
|
@ -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"
|
|
@ -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;
|
||||
|
|
@ -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.
|
||||
*/
|
|
@ -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)) {
|
|
@ -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()
|
||||
|
|
@ -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")
|
|
@ -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) {}
|
||||
};
|
||||
|
|
@ -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>
|
|
@ -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();
|
||||
}
|
|
@ -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__) || \
|
|
@ -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. */
|
|
@ -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__))
|
|
@ -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
|
|
@ -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());
|
|
@ -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__)
|
|
@ -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(); }
|
|
@ -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>
|
|
@ -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>
|
|
@ -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")
|
|
@ -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
|
|
@ -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.
|
||||
|
|
@ -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>
|
||||
|
|
@ -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>
|
|
@ -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>
|
|
@ -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());
|
|
@ -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.
|
|
@ -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
|
|
@ -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(
|
|
@ -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)
|
|
@ -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)
|
|
@ -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.
|
|
@ -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 ()
|
|
@ -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)
|
||||
+
|
|
@ -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,
|
|
@ -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;
|
|
@ -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))
|
|
@ -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)
|
|
@ -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
|
|
@ -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
|
|
@ -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;
|
|
@ -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 {
|
|
@ -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
|
|
@ -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
|
|
@ -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*
|
|
@ -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
|
||||
}
|
||||
|
|
@ -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
|
@ -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
|
||||
----
|
|
@ -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;
|
||||
-}
|
|
@ -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) {
|
|
@ -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
|
|
@ -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"
|
|
@ -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
|
|
@ -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
|
||||
|
|
@ -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
|
|
@ -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"
|
|
@ -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
|
||||
|
|
@ -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
|
|
@ -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
|
||||
|
|
@ -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"
|
||||
|
|
@ -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)
|
||||
|
|
@ -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);
|
||||
}
|
|
@ -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
Loading…
Reference in New Issue