mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-02-24 23:09:02 +00:00
libcxx: Add missing implementation source files (#1089)
Added the implementation for `std::bad_any_cast` from upstream `any.cpp`, and `std::bad_variant_access` from upstream `variant.cpp`. This fixes missing `vtable` and `typeinfo` symbols when trying to link code referencing these exception types.
This commit is contained in:
parent
1ef63eb206
commit
8834dde0c2
3 changed files with 53 additions and 0 deletions
2
third_party/libcxx/BUILD.mk
vendored
2
third_party/libcxx/BUILD.mk
vendored
|
@ -141,6 +141,7 @@ THIRD_PARTY_LIBCXX_A_HDRS = \
|
||||||
|
|
||||||
THIRD_PARTY_LIBCXX_A_SRCS_CC = \
|
THIRD_PARTY_LIBCXX_A_SRCS_CC = \
|
||||||
third_party/libcxx/algorithm.cc \
|
third_party/libcxx/algorithm.cc \
|
||||||
|
third_party/libcxx/any.cc \
|
||||||
third_party/libcxx/charconv.cc \
|
third_party/libcxx/charconv.cc \
|
||||||
third_party/libcxx/chrono.cc \
|
third_party/libcxx/chrono.cc \
|
||||||
third_party/libcxx/condition_variable.cc \
|
third_party/libcxx/condition_variable.cc \
|
||||||
|
@ -170,6 +171,7 @@ THIRD_PARTY_LIBCXX_A_SRCS_CC = \
|
||||||
third_party/libcxx/system_error.cc \
|
third_party/libcxx/system_error.cc \
|
||||||
third_party/libcxx/thread.cc \
|
third_party/libcxx/thread.cc \
|
||||||
third_party/libcxx/valarray.cc \
|
third_party/libcxx/valarray.cc \
|
||||||
|
third_party/libcxx/variant.cc \
|
||||||
third_party/libcxx/vector.cc
|
third_party/libcxx/vector.cc
|
||||||
|
|
||||||
THIRD_PARTY_LIBCXX_A_SRCS = \
|
THIRD_PARTY_LIBCXX_A_SRCS = \
|
||||||
|
|
34
third_party/libcxx/any.cc
vendored
Normal file
34
third_party/libcxx/any.cc
vendored
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
//===---------------------------- any.cpp ---------------------------------===//
|
||||||
|
//
|
||||||
|
// 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
|
||||||
|
//
|
||||||
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
|
#include "third_party/libcxx/any"
|
||||||
|
|
||||||
|
namespace std {
|
||||||
|
const char* bad_any_cast::what() const _NOEXCEPT {
|
||||||
|
return "bad any cast";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#include "third_party/libcxx/experimental/__config"
|
||||||
|
|
||||||
|
// Preserve std::experimental::any_bad_cast for ABI compatibility
|
||||||
|
// Even though it no longer exists in a header file
|
||||||
|
_LIBCPP_BEGIN_NAMESPACE_LFTS
|
||||||
|
|
||||||
|
class _LIBCPP_EXCEPTION_ABI _LIBCPP_AVAILABILITY_BAD_ANY_CAST bad_any_cast : public bad_cast
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual const char* what() const _NOEXCEPT;
|
||||||
|
};
|
||||||
|
|
||||||
|
const char* bad_any_cast::what() const _NOEXCEPT {
|
||||||
|
return "bad any cast";
|
||||||
|
}
|
||||||
|
|
||||||
|
_LIBCPP_END_NAMESPACE_LFTS
|
17
third_party/libcxx/variant.cc
vendored
Normal file
17
third_party/libcxx/variant.cc
vendored
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
//===------------------------ variant.cpp ---------------------------------===//
|
||||||
|
//
|
||||||
|
// 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
|
||||||
|
//
|
||||||
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
|
#include "third_party/libcxx/variant"
|
||||||
|
|
||||||
|
namespace std {
|
||||||
|
|
||||||
|
const char* bad_variant_access::what() const noexcept {
|
||||||
|
return "bad_variant_access";
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace std
|
Loading…
Add table
Reference in a new issue