Update libcxx to 12.0.0 release
and remove the temporary patch since all patch is in the mainline now Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
This commit is contained in:
parent
9980a1c27d
commit
a81166aef6
|
@ -108,14 +108,15 @@ CPPFLAGS := $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) \
|
|||
AFLAGS := $(CFLAGS) -D__ASSEMBLY__
|
||||
|
||||
ifeq ($(CONFIG_LIBCXX),y)
|
||||
# Why c++14?
|
||||
# Why c++17?
|
||||
# * libcxx seems to require c++11.
|
||||
# * The compiler defaults varies:
|
||||
# clang/macOS (from xcode): 199711L
|
||||
# gcc/ubuntu: 201402L
|
||||
# * There is a precedent to use c++14.
|
||||
# (boards/arm/stm32l4/nucleo-l476rg/scripts/Make.defs)
|
||||
CXXFLAGS += -std=c++14
|
||||
# * libs/libxx/libcxx/src/barrier.cpp depends on aligned new
|
||||
CXXFLAGS += -std=c++17
|
||||
|
||||
ifeq ($(CONFIG_HOST_MACOS),y)
|
||||
# macOS uses libc++abi
|
||||
|
|
|
@ -1,43 +0,0 @@
|
|||
From acd7be74ca12f8f08e52d6d80850a9b230109134 Mon Sep 17 00:00:00 2001
|
||||
From: YAMAMOTO Takashi <yamamoto@midokura.com>
|
||||
Date: Wed, 28 Oct 2020 15:40:16 -0400
|
||||
Subject: [PATCH] [libc++] Fix a few warnings
|
||||
|
||||
Found during a NuttX porting effort.
|
||||
But these changes are not directly relevant to NuttX.
|
||||
|
||||
Differential Revision: https://reviews.llvm.org/D90139
|
||||
---
|
||||
src/filesystem/operations.cpp | 2 +-
|
||||
src/locale.cpp | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/filesystem/operations.cpp libcxx/src/filesystem/operations.cpp
|
||||
index 95d7d0d9642..788e31b673a 100644
|
||||
--- a/src/filesystem/operations.cpp
|
||||
+++ libcxx/src/filesystem/operations.cpp
|
||||
@@ -534,7 +534,7 @@ path __canonical(path const& orig_p, error_code* ec) {
|
||||
ErrorHandler<path> err("canonical", ec, &orig_p, &cwd);
|
||||
|
||||
path p = __do_absolute(orig_p, &cwd, ec);
|
||||
-#if _POSIX_VERSION >= 200112
|
||||
+#if defined(_POSIX_VERSION) && _POSIX_VERSION >= 200112
|
||||
std::unique_ptr<char, decltype(&::free)>
|
||||
hold(::realpath(p.c_str(), nullptr), &::free);
|
||||
if (hold.get() == nullptr)
|
||||
diff --git a/src/locale.cpp libcxx/src/locale.cpp
|
||||
index b9180880e49..02dbb334ff8 100644
|
||||
--- a/src/locale.cpp
|
||||
+++ libcxx/src/locale.cpp
|
||||
@@ -1149,7 +1149,7 @@ ctype<char>::__classic_upper_table() _NOEXCEPT
|
||||
{
|
||||
return _LIBCPP_GET_C_LOCALE->__ctype_toupper;
|
||||
}
|
||||
-#elif __NetBSD__
|
||||
+#elif defined(__NetBSD__)
|
||||
const short*
|
||||
ctype<char>::__classic_lower_table() _NOEXCEPT
|
||||
{
|
||||
--
|
||||
2.17.1
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
From 81b6aa0e27abc3037c84d1ff2065bf60207f9b8b Mon Sep 17 00:00:00 2001
|
||||
From: Louis Dionne <ldionne@apple.com>
|
||||
Date: Fri, 30 Oct 2020 14:55:37 -0400
|
||||
Subject: [PATCH] [libc++] Fix tests failing with Clang after removing GCC
|
||||
warnings
|
||||
|
||||
---
|
||||
src/filesystem/filesystem_common.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/filesystem/filesystem_common.h libcxx/src/filesystem/filesystem_common.h
|
||||
index a7828ef3863..dc55f93da70 100644
|
||||
--- a/src/filesystem/filesystem_common.h
|
||||
+++ libcxx/src/filesystem/filesystem_common.h
|
||||
@@ -198,7 +198,7 @@ private:
|
||||
using chrono::duration;
|
||||
using chrono::duration_cast;
|
||||
|
||||
-using TimeSpec = std::timespec;
|
||||
+using TimeSpec = timespec;
|
||||
using StatT = struct stat;
|
||||
|
||||
template <class FileTimeT, class TimeT,
|
||||
--
|
||||
2.17.1
|
||||
|
|
@ -1,135 +0,0 @@
|
|||
From c479e0c99459e4c5596c2a22829d0937224df0bf Mon Sep 17 00:00:00 2001
|
||||
From: Louis Dionne <ldionne@apple.com>
|
||||
Date: Fri, 30 Oct 2020 11:19:07 -0400
|
||||
Subject: [PATCH] [libc++] NFC: Fix several GCC warnings in the test suite
|
||||
|
||||
- Several -Wshadow warnings
|
||||
- Several places where we did not initialize our base class explicitly
|
||||
- Unused variable warnings
|
||||
- Some tautological comparisons
|
||||
- Some places where we'd pass null arguments to functions expecting
|
||||
non-null (in unevaluated contexts)
|
||||
- Add a few pragmas to turn off spurious warnings
|
||||
- Fix warnings about declarations that don't declare anything
|
||||
- Properly disable deprecation warnings in ext/ tests (the pragmas we
|
||||
were using didn't work on GCC)
|
||||
- Disable include_as_c.sh.cpp because GCC complains about C++ flags
|
||||
when compiling as C. I couldn't find a way to fix this one properly,
|
||||
so I'm disabling the test. This isn't great, but at least we'll be
|
||||
able to enable warnings in the whole test suite with GCC.
|
||||
---
|
||||
src/filesystem/filesystem_common.h | 55 ++++++++++++-----------
|
||||
1 file changed, 28 insertions(+), 27 deletions(-)
|
||||
|
||||
diff --git a/src/filesystem/filesystem_common.h libcxx/src/filesystem/filesystem_common.h
|
||||
index fe5c42f5e6d..a7828ef3863 100644
|
||||
--- a/src/filesystem/filesystem_common.h
|
||||
+++ libcxx/src/filesystem/filesystem_common.h
|
||||
@@ -13,8 +13,9 @@
|
||||
#include "filesystem"
|
||||
#include "array"
|
||||
#include "chrono"
|
||||
-#include "cstdlib"
|
||||
#include "climits"
|
||||
+#include "cstdlib"
|
||||
+#include "ctime"
|
||||
|
||||
#include <unistd.h>
|
||||
#include <sys/stat.h>
|
||||
@@ -47,7 +48,7 @@ static string format_string_imp(const char* msg, ...) {
|
||||
struct GuardVAList {
|
||||
va_list& target;
|
||||
bool active = true;
|
||||
- GuardVAList(va_list& target) : target(target), active(true) {}
|
||||
+ GuardVAList(va_list& tgt) : target(tgt), active(true) {}
|
||||
void clear() {
|
||||
if (active)
|
||||
va_end(target);
|
||||
@@ -134,50 +135,50 @@ path error_value<path>() {
|
||||
|
||||
template <class T>
|
||||
struct ErrorHandler {
|
||||
- const char* func_name;
|
||||
- error_code* ec = nullptr;
|
||||
- const path* p1 = nullptr;
|
||||
- const path* p2 = nullptr;
|
||||
+ const char* func_name_;
|
||||
+ error_code* ec_ = nullptr;
|
||||
+ const path* p1_ = nullptr;
|
||||
+ const path* p2_ = nullptr;
|
||||
|
||||
ErrorHandler(const char* fname, error_code* ec, const path* p1 = nullptr,
|
||||
const path* p2 = nullptr)
|
||||
- : func_name(fname), ec(ec), p1(p1), p2(p2) {
|
||||
- if (ec)
|
||||
- ec->clear();
|
||||
+ : func_name_(fname), ec_(ec), p1_(p1), p2_(p2) {
|
||||
+ if (ec_)
|
||||
+ ec_->clear();
|
||||
}
|
||||
|
||||
- T report(const error_code& m_ec) const {
|
||||
- if (ec) {
|
||||
- *ec = m_ec;
|
||||
+ T report(const error_code& ec) const {
|
||||
+ if (ec_) {
|
||||
+ *ec_ = ec;
|
||||
return error_value<T>();
|
||||
}
|
||||
- string what = string("in ") + func_name;
|
||||
- switch (bool(p1) + bool(p2)) {
|
||||
+ string what = string("in ") + func_name_;
|
||||
+ switch (bool(p1_) + bool(p2_)) {
|
||||
case 0:
|
||||
- __throw_filesystem_error(what, m_ec);
|
||||
+ __throw_filesystem_error(what, ec);
|
||||
case 1:
|
||||
- __throw_filesystem_error(what, *p1, m_ec);
|
||||
+ __throw_filesystem_error(what, *p1_, ec);
|
||||
case 2:
|
||||
- __throw_filesystem_error(what, *p1, *p2, m_ec);
|
||||
+ __throw_filesystem_error(what, *p1_, *p2_, ec);
|
||||
}
|
||||
_LIBCPP_UNREACHABLE();
|
||||
}
|
||||
|
||||
template <class... Args>
|
||||
- T report(const error_code& m_ec, const char* msg, Args const&... args) const {
|
||||
- if (ec) {
|
||||
- *ec = m_ec;
|
||||
+ T report(const error_code& ec, const char* msg, Args const&... args) const {
|
||||
+ if (ec_) {
|
||||
+ *ec_ = ec;
|
||||
return error_value<T>();
|
||||
}
|
||||
string what =
|
||||
- string("in ") + func_name + ": " + format_string(msg, args...);
|
||||
- switch (bool(p1) + bool(p2)) {
|
||||
+ string("in ") + func_name_ + ": " + format_string(msg, args...);
|
||||
+ switch (bool(p1_) + bool(p2_)) {
|
||||
case 0:
|
||||
- __throw_filesystem_error(what, m_ec);
|
||||
+ __throw_filesystem_error(what, ec);
|
||||
case 1:
|
||||
- __throw_filesystem_error(what, *p1, m_ec);
|
||||
+ __throw_filesystem_error(what, *p1_, ec);
|
||||
case 2:
|
||||
- __throw_filesystem_error(what, *p1, *p2, m_ec);
|
||||
+ __throw_filesystem_error(what, *p1_, *p2_, ec);
|
||||
}
|
||||
_LIBCPP_UNREACHABLE();
|
||||
}
|
||||
@@ -197,8 +198,8 @@ private:
|
||||
using chrono::duration;
|
||||
using chrono::duration_cast;
|
||||
|
||||
-using TimeSpec = struct ::timespec;
|
||||
-using StatT = struct ::stat;
|
||||
+using TimeSpec = std::timespec;
|
||||
+using StatT = struct stat;
|
||||
|
||||
template <class FileTimeT, class TimeT,
|
||||
bool IsFloat = is_floating_point<typename FileTimeT::rep>::value>
|
||||
--
|
||||
2.17.1
|
||||
|
|
@ -1,78 +0,0 @@
|
|||
From 3e8b517a509ae043571d8d0b00625d8a03eb5d05 Mon Sep 17 00:00:00 2001
|
||||
From: Xiang Xiao <xiaoxiang@xiaomi.com>
|
||||
Date: Mon, 9 Nov 2020 21:45:57 +0800
|
||||
Subject: [PATCH] [libcxx] Check _LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE first in
|
||||
__locale
|
||||
|
||||
just like what's done in __locale.cpp
|
||||
|
||||
Co-authored-by: Chao An <anchao@xiaomi.com>
|
||||
|
||||
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
|
||||
|
||||
Differential Revision: https://reviews.llvm.org/D91074
|
||||
---
|
||||
include/__locale | 40 +++++++++++++++++++++-------------------
|
||||
1 file changed, 21 insertions(+), 19 deletions(-)
|
||||
|
||||
diff --git a/include/__locale libcxx/include/__locale
|
||||
index 125adcf68c8..e973ce52646 100644
|
||||
--- a/include/__locale
|
||||
+++ libcxx/include/__locale
|
||||
@@ -397,7 +397,26 @@ locale::operator()(const basic_string<_CharT, _Traits, _Allocator>& __x,
|
||||
class _LIBCPP_TYPE_VIS ctype_base
|
||||
{
|
||||
public:
|
||||
-#if defined(__GLIBC__)
|
||||
+#if defined(_LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE)
|
||||
+ typedef unsigned long mask;
|
||||
+ static const mask space = 1<<0;
|
||||
+ static const mask print = 1<<1;
|
||||
+ static const mask cntrl = 1<<2;
|
||||
+ static const mask upper = 1<<3;
|
||||
+ static const mask lower = 1<<4;
|
||||
+ static const mask alpha = 1<<5;
|
||||
+ static const mask digit = 1<<6;
|
||||
+ static const mask punct = 1<<7;
|
||||
+ static const mask xdigit = 1<<8;
|
||||
+ static const mask blank = 1<<9;
|
||||
+#if defined(__BIONIC__)
|
||||
+ // Historically this was a part of regex_traits rather than ctype_base. The
|
||||
+ // historical value of the constant is preserved for ABI compatibility.
|
||||
+ static const mask __regex_word = 0x8000;
|
||||
+#else
|
||||
+ static const mask __regex_word = 1<<10;
|
||||
+#endif // defined(__BIONIC__)
|
||||
+#elif defined(__GLIBC__)
|
||||
typedef unsigned short mask;
|
||||
static const mask space = _ISspace;
|
||||
static const mask print = _ISprint;
|
||||
@@ -486,24 +505,7 @@ public:
|
||||
# define _LIBCPP_CTYPE_MASK_IS_COMPOSITE_ALPHA
|
||||
# define _LIBCPP_CTYPE_MASK_IS_COMPOSITE_XDIGIT
|
||||
#else
|
||||
- typedef unsigned long mask;
|
||||
- static const mask space = 1<<0;
|
||||
- static const mask print = 1<<1;
|
||||
- static const mask cntrl = 1<<2;
|
||||
- static const mask upper = 1<<3;
|
||||
- static const mask lower = 1<<4;
|
||||
- static const mask alpha = 1<<5;
|
||||
- static const mask digit = 1<<6;
|
||||
- static const mask punct = 1<<7;
|
||||
- static const mask xdigit = 1<<8;
|
||||
- static const mask blank = 1<<9;
|
||||
-#if defined(__BIONIC__)
|
||||
- // Historically this was a part of regex_traits rather than ctype_base. The
|
||||
- // historical value of the constant is preserved for ABI compatibility.
|
||||
- static const mask __regex_word = 0x8000;
|
||||
-#else
|
||||
- static const mask __regex_word = 1<<10;
|
||||
-#endif // defined(__BIONIC__)
|
||||
+#error unkown classic_table, try _LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE
|
||||
#endif
|
||||
static const mask alnum = alpha | digit;
|
||||
static const mask graph = alnum | punct;
|
||||
--
|
||||
2.17.1
|
||||
|
|
@ -1,112 +0,0 @@
|
|||
From 6b12d8b5c30a84aa5767b1b18ecf5ba5e99a1654 Mon Sep 17 00:00:00 2001
|
||||
From: Xiang Xiao <xiaoxiang@xiaomi.com>
|
||||
Date: Fri, 2 Oct 2020 13:25:43 +0800
|
||||
Subject: [PATCH] [libcxx] Port to NuttX(https://nuttx.apache.org/) RTOS
|
||||
|
||||
Since NuttX conform to POSIX standard, the code need to add is very simple
|
||||
|
||||
Co-authored-by: YAMAMOTO Takashi <yamamoto@midokura.com>
|
||||
|
||||
Differential Revision: https://reviews.llvm.org/D88718
|
||||
---
|
||||
include/__config | 3 ++-
|
||||
include/__locale | 2 ++
|
||||
include/support/nuttx/xlocale.h | 18 ++++++++++++++++++
|
||||
src/include/config_elast.h | 4 ++++
|
||||
src/locale.cpp | 2 +-
|
||||
5 files changed, 27 insertions(+), 2 deletions(-)
|
||||
create mode 100644 include/support/nuttx/xlocale.h
|
||||
|
||||
diff --git a/include/__config libcxx/include/__config
|
||||
index eeef9c53a9f..9ace3b46028 100644
|
||||
--- a/include/__config
|
||||
+++ libcxx/include/__config
|
||||
@@ -1117,6 +1117,7 @@ _LIBCPP_FUNC_VIS extern "C" void __sanitizer_annotate_contiguous_container(
|
||||
# if defined(__FreeBSD__) || \
|
||||
defined(__wasi__) || \
|
||||
defined(__NetBSD__) || \
|
||||
+ defined(__NuttX__) || \
|
||||
defined(__linux__) || \
|
||||
defined(__GNU__) || \
|
||||
defined(__APPLE__) || \
|
||||
@@ -1219,7 +1220,7 @@ _LIBCPP_FUNC_VIS extern "C" void __sanitizer_annotate_contiguous_container(
|
||||
# endif
|
||||
#endif
|
||||
|
||||
-#if defined(__BIONIC__) || defined(__CloudABI__) || \
|
||||
+#if defined(__BIONIC__) || defined(__CloudABI__) || defined(__NuttX__) || \
|
||||
defined(__Fuchsia__) || defined(__wasi__) || defined(_LIBCPP_HAS_MUSL_LIBC)
|
||||
#define _LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE
|
||||
#endif
|
||||
diff --git a/include/__locale libcxx/include/__locale
|
||||
index 125adcf68c8..ebededf066b 100644
|
||||
--- a/include/__locale
|
||||
+++ libcxx/include/__locale
|
||||
@@ -22,6 +22,8 @@
|
||||
#if defined(_LIBCPP_MSVCRT_LIKE)
|
||||
# include <cstring>
|
||||
# include <support/win32/locale_win32.h>
|
||||
+#elif defined(__NuttX__)
|
||||
+# include <support/nuttx/xlocale.h>
|
||||
#elif defined(_AIX)
|
||||
# include <support/ibm/xlocale.h>
|
||||
#elif defined(__ANDROID__)
|
||||
diff --git a/include/support/nuttx/xlocale.h libcxx/include/support/nuttx/xlocale.h
|
||||
new file mode 100644
|
||||
index 00000000000..b70d6200504
|
||||
--- /dev/null
|
||||
+++ libcxx/include/support/nuttx/xlocale.h
|
||||
@@ -0,0 +1,18 @@
|
||||
+// -*- C++ -*-
|
||||
+//===-------------------- support/nuttx/xlocale.h -------------------------===//
|
||||
+//
|
||||
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
+// See https://llvm.org/LICENSE.txt for license information.
|
||||
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
+//
|
||||
+//===----------------------------------------------------------------------===//
|
||||
+
|
||||
+#ifndef _LIBCPP_SUPPORT_NUTTX_XLOCALE_H
|
||||
+#define _LIBCPP_SUPPORT_NUTTX_XLOCALE_H
|
||||
+
|
||||
+#if defined(__NuttX__)
|
||||
+#include <support/xlocale/__posix_l_fallback.h>
|
||||
+#include <support/xlocale/__strtonum_fallback.h>
|
||||
+#endif // __NuttX__
|
||||
+
|
||||
+#endif
|
||||
diff --git a/src/include/config_elast.h libcxx/src/include/config_elast.h
|
||||
index 501cbc4ffeb..3113f9fb5cd 100644
|
||||
--- a/src/include/config_elast.h
|
||||
+++ libcxx/src/include/config_elast.h
|
||||
@@ -17,10 +17,14 @@
|
||||
#include <errno.h>
|
||||
#endif
|
||||
|
||||
+// Note: _LIBCPP_ELAST needs to be defined only on platforms
|
||||
+// where strerror/strerror_r can't handle out-of-range errno values.
|
||||
#if defined(ELAST)
|
||||
#define _LIBCPP_ELAST ELAST
|
||||
#elif defined(_NEWLIB_VERSION)
|
||||
#define _LIBCPP_ELAST __ELASTERROR
|
||||
+#elif defined(__NuttX__)
|
||||
+// No _LIBCPP_ELAST needed on NuttX
|
||||
#elif defined(__Fuchsia__)
|
||||
// No _LIBCPP_ELAST needed on Fuchsia
|
||||
#elif defined(__wasi__)
|
||||
diff --git a/src/locale.cpp libcxx/src/locale.cpp
|
||||
index 5fdc14992f8..ed93727b544 100644
|
||||
--- a/src/locale.cpp
|
||||
+++ libcxx/src/locale.cpp
|
||||
@@ -30,7 +30,7 @@
|
||||
#include "__sso_allocator"
|
||||
#if defined(_LIBCPP_MSVCRT) || defined(__MINGW32__)
|
||||
#include "support/win32/locale_win32.h"
|
||||
-#elif !defined(__BIONIC__)
|
||||
+#elif !defined(__BIONIC__) && !defined(__NuttX__)
|
||||
#include <langinfo.h>
|
||||
#endif
|
||||
#include <stdlib.h>
|
||||
--
|
||||
2.17.1
|
||||
|
|
@ -18,7 +18,7 @@
|
|||
#
|
||||
###########################################################################
|
||||
|
||||
VERSION=11.0.0
|
||||
VERSION=12.0.0
|
||||
|
||||
libcxx-$(VERSION).src.tar.xz:
|
||||
$(Q) curl -O -L https://github.com/llvm/llvm-project/releases/download/llvmorg-$(VERSION)/libcxx-$(VERSION).src.tar.xz
|
||||
|
@ -26,11 +26,6 @@ libcxx-$(VERSION).src.tar.xz:
|
|||
libcxx: libcxx-$(VERSION).src.tar.xz
|
||||
$(Q) tar -xf libcxx-$(VERSION).src.tar.xz
|
||||
$(Q) mv libcxx-$(VERSION).src libcxx
|
||||
$(Q) patch -p0 < 0001-libc-Fix-a-few-warnings.patch
|
||||
$(Q) patch -p0 < 0001-libc-NFC-Fix-several-GCC-warnings-in-the-test-suite.patch
|
||||
$(Q) patch -p0 < 0001-libc-Fix-tests-failing-with-Clang-after-removing-GCC.patch
|
||||
$(Q) patch -p0 < 0001-libcxx-Check-_LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE-fir.patch
|
||||
$(Q) patch -p0 < 0001-libcxx-Port-to-NuttX-https-nuttx.apache.org-RTOS.patch
|
||||
$(Q) touch $@
|
||||
|
||||
$(TOPDIR)/include/libcxx: libcxx
|
||||
|
|
Loading…
Reference in New Issue