diff options
Diffstat (limited to 'third_party/libcxx/include/c++/v1/__assert')
| -rw-r--r-- | third_party/libcxx/include/c++/v1/__assert | 118 |
1 files changed, 0 insertions, 118 deletions
diff --git a/third_party/libcxx/include/c++/v1/__assert b/third_party/libcxx/include/c++/v1/__assert deleted file mode 100644 index a9451da..0000000 --- a/third_party/libcxx/include/c++/v1/__assert +++ /dev/null @@ -1,118 +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 -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP___ASSERT -#define _LIBCPP___ASSERT - -#include <__assertion_handler> // Note: this include is generated by CMake and is potentially vendor-provided. -#include <__config> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -# pragma GCC system_header -#endif - -#define _LIBCPP_ASSERT(expression, message) \ - (__builtin_expect(static_cast<bool>(expression), 1) \ - ? (void)0 \ - : _LIBCPP_ASSERTION_HANDLER(__FILE__ ":" _LIBCPP_TOSTRING( \ - __LINE__) ": libc++ Hardening assertion " _LIBCPP_TOSTRING(expression) " failed: " message "\n")) - -// WARNING: __builtin_assume can currently inhibit optimizations. Only add assumptions with a clear -// optimization intent. See https://discourse.llvm.org/t/llvm-assume-blocks-optimization/71609 for a -// discussion. -#if __has_builtin(__builtin_assume) -# define _LIBCPP_ASSUME(expression) \ - (_LIBCPP_DIAGNOSTIC_PUSH _LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wassume") \ - __builtin_assume(static_cast<bool>(expression)) _LIBCPP_DIAGNOSTIC_POP) -#else -# define _LIBCPP_ASSUME(expression) ((void)0) -#endif - -// clang-format off -// Fast hardening mode checks. - -#if _LIBCPP_HARDENING_MODE == _LIBCPP_HARDENING_MODE_FAST - -// Enabled checks. -# define _LIBCPP_ASSERT_VALID_INPUT_RANGE(expression, message) _LIBCPP_ASSERT(expression, message) -# define _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(expression, message) _LIBCPP_ASSERT(expression, message) -// Disabled checks. -// On most modern platforms, dereferencing a null pointer does not lead to an actual memory access. -# define _LIBCPP_ASSERT_NON_NULL(expression, message) ((void)0) -// Overlapping ranges will make algorithms produce incorrect results but don't directly lead to a security -// vulnerability. -# define _LIBCPP_ASSERT_NON_OVERLAPPING_RANGES(expression, message) ((void)0) -# define _LIBCPP_ASSERT_VALID_DEALLOCATION(expression, message) ((void)0) -# define _LIBCPP_ASSERT_VALID_EXTERNAL_API_CALL(expression, message) ((void)0) -# define _LIBCPP_ASSERT_COMPATIBLE_ALLOCATOR(expression, message) ((void)0) -# define _LIBCPP_ASSERT_ARGUMENT_WITHIN_DOMAIN(expression, message) ((void)0) -# define _LIBCPP_ASSERT_PEDANTIC(expression, message) ((void)0) -# define _LIBCPP_ASSERT_SEMANTIC_REQUIREMENT(expression, message) ((void)0) -# define _LIBCPP_ASSERT_INTERNAL(expression, message) ((void)0) -# define _LIBCPP_ASSERT_UNCATEGORIZED(expression, message) ((void)0) - -// Extensive hardening mode checks. - -#elif _LIBCPP_HARDENING_MODE == _LIBCPP_HARDENING_MODE_EXTENSIVE - -// Enabled checks. -# define _LIBCPP_ASSERT_VALID_INPUT_RANGE(expression, message) _LIBCPP_ASSERT(expression, message) -# define _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(expression, message) _LIBCPP_ASSERT(expression, message) -# define _LIBCPP_ASSERT_NON_NULL(expression, message) _LIBCPP_ASSERT(expression, message) -# define _LIBCPP_ASSERT_NON_OVERLAPPING_RANGES(expression, message) _LIBCPP_ASSERT(expression, message) -# define _LIBCPP_ASSERT_VALID_DEALLOCATION(expression, message) _LIBCPP_ASSERT(expression, message) -# define _LIBCPP_ASSERT_VALID_EXTERNAL_API_CALL(expression, message) _LIBCPP_ASSERT(expression, message) -# define _LIBCPP_ASSERT_COMPATIBLE_ALLOCATOR(expression, message) _LIBCPP_ASSERT(expression, message) -# define _LIBCPP_ASSERT_ARGUMENT_WITHIN_DOMAIN(expression, message) _LIBCPP_ASSERT(expression, message) -# define _LIBCPP_ASSERT_PEDANTIC(expression, message) _LIBCPP_ASSERT(expression, message) -# define _LIBCPP_ASSERT_UNCATEGORIZED(expression, message) _LIBCPP_ASSERT(expression, message) -// Disabled checks. -# define _LIBCPP_ASSERT_SEMANTIC_REQUIREMENT(expression, message) ((void)0) -# define _LIBCPP_ASSERT_INTERNAL(expression, message) ((void)0) - -// Debug hardening mode checks. - -#elif _LIBCPP_HARDENING_MODE == _LIBCPP_HARDENING_MODE_DEBUG - -// All checks enabled. -# define _LIBCPP_ASSERT_VALID_INPUT_RANGE(expression, message) _LIBCPP_ASSERT(expression, message) -# define _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(expression, message) _LIBCPP_ASSERT(expression, message) -# define _LIBCPP_ASSERT_NON_NULL(expression, message) _LIBCPP_ASSERT(expression, message) -# define _LIBCPP_ASSERT_NON_OVERLAPPING_RANGES(expression, message) _LIBCPP_ASSERT(expression, message) -# define _LIBCPP_ASSERT_VALID_DEALLOCATION(expression, message) _LIBCPP_ASSERT(expression, message) -# define _LIBCPP_ASSERT_VALID_EXTERNAL_API_CALL(expression, message) _LIBCPP_ASSERT(expression, message) -# define _LIBCPP_ASSERT_COMPATIBLE_ALLOCATOR(expression, message) _LIBCPP_ASSERT(expression, message) -# define _LIBCPP_ASSERT_ARGUMENT_WITHIN_DOMAIN(expression, message) _LIBCPP_ASSERT(expression, message) -# define _LIBCPP_ASSERT_PEDANTIC(expression, message) _LIBCPP_ASSERT(expression, message) -# define _LIBCPP_ASSERT_SEMANTIC_REQUIREMENT(expression, message) _LIBCPP_ASSERT(expression, message) -# define _LIBCPP_ASSERT_INTERNAL(expression, message) _LIBCPP_ASSERT(expression, message) -# define _LIBCPP_ASSERT_UNCATEGORIZED(expression, message) _LIBCPP_ASSERT(expression, message) - -// Disable all checks if hardening is not enabled. - -#else - -// All checks disabled. -# define _LIBCPP_ASSERT_VALID_INPUT_RANGE(expression, message) ((void)0) -# define _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(expression, message) ((void)0) -# define _LIBCPP_ASSERT_NON_NULL(expression, message) ((void)0) -# define _LIBCPP_ASSERT_NON_OVERLAPPING_RANGES(expression, message) ((void)0) -# define _LIBCPP_ASSERT_VALID_DEALLOCATION(expression, message) ((void)0) -# define _LIBCPP_ASSERT_VALID_EXTERNAL_API_CALL(expression, message) ((void)0) -# define _LIBCPP_ASSERT_COMPATIBLE_ALLOCATOR(expression, message) ((void)0) -# define _LIBCPP_ASSERT_ARGUMENT_WITHIN_DOMAIN(expression, message) ((void)0) -# define _LIBCPP_ASSERT_PEDANTIC(expression, message) ((void)0) -# define _LIBCPP_ASSERT_SEMANTIC_REQUIREMENT(expression, message) ((void)0) -# define _LIBCPP_ASSERT_INTERNAL(expression, message) ((void)0) -# define _LIBCPP_ASSERT_UNCATEGORIZED(expression, message) ((void)0) - -#endif // _LIBCPP_HARDENING_MODE == _LIBCPP_HARDENING_MODE_FAST -// clang-format on - -#endif // _LIBCPP___ASSERT |
