aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/cxxsupp/libcxxmsvc/glibcxx_eh_cxx17.cpp
diff options
context:
space:
mode:
authormaxim-yurchuk <maxim-yurchuk@yandex-team.com>2024-10-09 12:29:46 +0300
committermaxim-yurchuk <maxim-yurchuk@yandex-team.com>2024-10-09 13:14:22 +0300
commit9731d8a4bb7ee2cc8554eaf133bb85498a4c7d80 (patch)
treea8fb3181d5947c0d78cf402aa56e686130179049 /contrib/libs/cxxsupp/libcxxmsvc/glibcxx_eh_cxx17.cpp
parenta44b779cd359f06c3ebbef4ec98c6b38609d9d85 (diff)
downloadydb-9731d8a4bb7ee2cc8554eaf133bb85498a4c7d80.tar.gz
publishFullContrib: true for ydb
<HIDDEN_URL> commit_hash:c82a80ac4594723cebf2c7387dec9c60217f603e
Diffstat (limited to 'contrib/libs/cxxsupp/libcxxmsvc/glibcxx_eh_cxx17.cpp')
-rw-r--r--contrib/libs/cxxsupp/libcxxmsvc/glibcxx_eh_cxx17.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/contrib/libs/cxxsupp/libcxxmsvc/glibcxx_eh_cxx17.cpp b/contrib/libs/cxxsupp/libcxxmsvc/glibcxx_eh_cxx17.cpp
new file mode 100644
index 0000000000..5e5ad083ba
--- /dev/null
+++ b/contrib/libs/cxxsupp/libcxxmsvc/glibcxx_eh_cxx17.cpp
@@ -0,0 +1,17 @@
+#include <cxxabi.h>
+
+/**
+ * libc++ expects std::uncaught_exceptions() to be provided by C++ runtime library.
+ *
+ * GCC versions prior to GCC 6 did not provide this function yet, but it can be
+ * implemented using its API.
+ *
+ * This implementation should cover ubuntu-12, ubuntu-14, ubuntu-16.
+ */
+
+namespace std {
+ int uncaught_exceptions() noexcept {
+ const auto* globals{__cxxabiv1::__cxa_get_globals()};
+ return static_cast<int>(globals->uncaughtExceptions);
+ }
+}