// SPDX-License-Identifier: Apache-2.0 // Copyright 2024-2026, Amlal El Mahrouss (amlal@nekernel.org) // Licensed under the Apache License, Version 2.0 (see LICENSE file) // Official repository: https://github.com/ne-foss-org/nectar #pragma once #include <__abi> #include #include #include /// @author Amlal El Mahrouss (amlal@nekernel.org) namespace std::base_exception::abi { inline constexpr int __terminate_id = 33; /// @note This function is internal, don't call it. extern void __unwind_object_list(); inline void __throw_general(const char* what) { std::cout << "LibC++: Unwinding exception of kind: " << what << ", aborting here..." << std::endl; __unwind_object_list(); base_process::exit(__terminate_id); } inline void __throw_domain_error(const char* what) { __throw_general(what); __builtin_unreachable(); // prevent from continuing. } inline void __throw_bad_array_new_length(const char* what) { __throw_general(what); __builtin_unreachable(); // prevent from continuing. } } // namespace std::base_exception::abi