diff options
author | robot-piglet <robot-piglet@yandex-team.com> | 2024-10-03 13:59:29 +0300 |
---|---|---|
committer | robot-piglet <robot-piglet@yandex-team.com> | 2024-10-03 14:10:31 +0300 |
commit | 58e24167b404650b5a636bfa016b291d24d9830d (patch) | |
tree | f36e8d0e3fcd08796c161a66bbb040273d08d08a /contrib/libs | |
parent | 223eb8b552472beee7730264ec0f7f7a7496524a (diff) | |
download | ydb-58e24167b404650b5a636bfa016b291d24d9830d.tar.gz |
Intermediate changes
commit_hash:607a58b7a4640ebb7f3b73b52018f8dca4f92df5
Diffstat (limited to 'contrib/libs')
-rw-r--r-- | contrib/libs/cxxsupp/libcxxmsvc/src/new.cpp | 300 | ||||
-rw-r--r-- | contrib/libs/cxxsupp/libcxxmsvc/src/support/runtime/new_handler_fallback.ipp | 28 | ||||
-rw-r--r-- | contrib/libs/cxxsupp/libcxxmsvc/ya.make | 2 |
3 files changed, 2 insertions, 328 deletions
diff --git a/contrib/libs/cxxsupp/libcxxmsvc/src/new.cpp b/contrib/libs/cxxsupp/libcxxmsvc/src/new.cpp deleted file mode 100644 index 937e860337..0000000000 --- a/contrib/libs/cxxsupp/libcxxmsvc/src/new.cpp +++ /dev/null @@ -1,300 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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 <new> -#include <stdlib.h> - -#if defined(_LIBCPP_ABI_MICROSOFT) -# if !defined(_LIBCPP_ABI_VCRUNTIME) -# include "support/runtime/new_handler_fallback.ipp" -# endif -#elif defined(LIBCXX_BUILDING_LIBCXXABI) -# include <cxxabi.h> -#elif defined(LIBCXX_BUILDING_LIBCXXRT) -# include <cxxabi.h> -# include "support/runtime/new_handler_fallback.ipp" -#elif defined(__GLIBCXX__) - // nothing to do -#else -# include "support/runtime/new_handler_fallback.ipp" -#endif - -namespace std -{ - -#ifndef __GLIBCXX__ -const nothrow_t nothrow{}; -#endif - -#ifndef LIBSTDCXX - -void -__throw_bad_alloc() -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - throw bad_alloc(); -#else - _VSTD::abort(); -#endif -} - -#endif // !LIBSTDCXX - -} // std - -#if !defined(__GLIBCXX__) && \ - !defined(_LIBCPP_ABI_VCRUNTIME) && \ - !defined(_LIBCPP_DISABLE_NEW_DELETE_DEFINITIONS) - -// Implement all new and delete operators as weak definitions -// in this shared library, so that they can be overridden by programs -// that define non-weak copies of the functions. - -_LIBCPP_WEAK -void * -operator new(std::size_t size) _THROW_BAD_ALLOC -{ - if (size == 0) - size = 1; - void* p; - while ((p = ::malloc(size)) == nullptr) - { - // If malloc fails and there is a new_handler, - // call it to try free up memory. - std::new_handler nh = std::get_new_handler(); - if (nh) - nh(); - else -#ifndef _LIBCPP_NO_EXCEPTIONS - throw std::bad_alloc(); -#else -#ifdef __EMSCRIPTEN__ - // Abort here so that when exceptions are disabled, we do not just - // return 0 when malloc returns 0. - // We could also do this with set_new_handler, but that adds a - // global constructor and a table entry, overhead that we can avoid - // by doing it this way. - abort(); -#else - break; -#endif -#endif - } - return p; -} - -_LIBCPP_WEAK -void* -operator new(size_t size, const std::nothrow_t&) noexcept -{ - void* p = nullptr; -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - p = ::operator new(size); -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - } -#endif // _LIBCPP_NO_EXCEPTIONS - return p; -} - -_LIBCPP_WEAK -void* -operator new[](size_t size) _THROW_BAD_ALLOC -{ - return ::operator new(size); -} - -_LIBCPP_WEAK -void* -operator new[](size_t size, const std::nothrow_t&) noexcept -{ - void* p = nullptr; -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - p = ::operator new[](size); -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - } -#endif // _LIBCPP_NO_EXCEPTIONS - return p; -} - -_LIBCPP_WEAK -void -operator delete(void* ptr) noexcept -{ - ::free(ptr); -} - -_LIBCPP_WEAK -void -operator delete(void* ptr, const std::nothrow_t&) noexcept -{ - ::operator delete(ptr); -} - -_LIBCPP_WEAK -void -operator delete(void* ptr, size_t) noexcept -{ - ::operator delete(ptr); -} - -_LIBCPP_WEAK -void -operator delete[] (void* ptr) noexcept -{ - ::operator delete(ptr); -} - -_LIBCPP_WEAK -void -operator delete[] (void* ptr, const std::nothrow_t&) noexcept -{ - ::operator delete[](ptr); -} - -_LIBCPP_WEAK -void -operator delete[] (void* ptr, size_t) noexcept -{ - ::operator delete[](ptr); -} - -#if !defined(_LIBCPP_HAS_NO_LIBRARY_ALIGNED_ALLOCATION) - -_LIBCPP_WEAK -void * -operator new(std::size_t size, std::align_val_t alignment) _THROW_BAD_ALLOC -{ - if (size == 0) - size = 1; - if (static_cast<size_t>(alignment) < sizeof(void*)) - alignment = std::align_val_t(sizeof(void*)); - - // Try allocating memory. If allocation fails and there is a new_handler, - // call it to try free up memory, and try again until it succeeds, or until - // the new_handler decides to terminate. - // - // If allocation fails and there is no new_handler, we throw bad_alloc - // (or return nullptr if exceptions are disabled). - void* p; - while ((p = std::__libcpp_aligned_alloc(static_cast<std::size_t>(alignment), size)) == nullptr) - { - std::new_handler nh = std::get_new_handler(); - if (nh) - nh(); - else { -#ifndef _LIBCPP_NO_EXCEPTIONS - throw std::bad_alloc(); -#else - break; -#endif - } - } - return p; -} - -_LIBCPP_WEAK -void* -operator new(size_t size, std::align_val_t alignment, const std::nothrow_t&) noexcept -{ - void* p = nullptr; -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - p = ::operator new(size, alignment); -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - } -#endif // _LIBCPP_NO_EXCEPTIONS - return p; -} - -_LIBCPP_WEAK -void* -operator new[](size_t size, std::align_val_t alignment) _THROW_BAD_ALLOC -{ - return ::operator new(size, alignment); -} - -_LIBCPP_WEAK -void* -operator new[](size_t size, std::align_val_t alignment, const std::nothrow_t&) noexcept -{ - void* p = nullptr; -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - p = ::operator new[](size, alignment); -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - } -#endif // _LIBCPP_NO_EXCEPTIONS - return p; -} - -_LIBCPP_WEAK -void -operator delete(void* ptr, std::align_val_t) noexcept -{ - std::__libcpp_aligned_free(ptr); -} - -_LIBCPP_WEAK -void -operator delete(void* ptr, std::align_val_t alignment, const std::nothrow_t&) noexcept -{ - ::operator delete(ptr, alignment); -} - -_LIBCPP_WEAK -void -operator delete(void* ptr, size_t, std::align_val_t alignment) noexcept -{ - ::operator delete(ptr, alignment); -} - -_LIBCPP_WEAK -void -operator delete[] (void* ptr, std::align_val_t alignment) noexcept -{ - ::operator delete(ptr, alignment); -} - -_LIBCPP_WEAK -void -operator delete[] (void* ptr, std::align_val_t alignment, const std::nothrow_t&) noexcept -{ - ::operator delete[](ptr, alignment); -} - -_LIBCPP_WEAK -void -operator delete[] (void* ptr, size_t, std::align_val_t alignment) noexcept -{ - ::operator delete[](ptr, alignment); -} - -#endif // !_LIBCPP_HAS_NO_LIBRARY_ALIGNED_ALLOCATION -#endif // !__GLIBCXX__ && !_LIBCPP_ABI_VCRUNTIME && !_LIBCPP_DISABLE_NEW_DELETE_DEFINITIONS diff --git a/contrib/libs/cxxsupp/libcxxmsvc/src/support/runtime/new_handler_fallback.ipp b/contrib/libs/cxxsupp/libcxxmsvc/src/support/runtime/new_handler_fallback.ipp deleted file mode 100644 index 7556f693a9..0000000000 --- a/contrib/libs/cxxsupp/libcxxmsvc/src/support/runtime/new_handler_fallback.ipp +++ /dev/null @@ -1,28 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// 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 "../../include/atomic_support.h" - -namespace std { - -static _LIBCPP_CONSTINIT std::new_handler __new_handler = nullptr; - -new_handler -set_new_handler(new_handler handler) noexcept -{ - return __libcpp_atomic_exchange(&__new_handler, handler); -} - -new_handler -get_new_handler() noexcept -{ - return __libcpp_atomic_load(&__new_handler); -} - -} // namespace std diff --git a/contrib/libs/cxxsupp/libcxxmsvc/ya.make b/contrib/libs/cxxsupp/libcxxmsvc/ya.make index 160c722f74..db9c8f112d 100644 --- a/contrib/libs/cxxsupp/libcxxmsvc/ya.make +++ b/contrib/libs/cxxsupp/libcxxmsvc/ya.make @@ -2,6 +2,8 @@ LIBRARY() +BUILD_ONLY_IF(OS_WINDOWS) + LICENSE( Apache-2.0 AND Apache-2.0 WITH LLVM-exception AND |