From bbe2c77243c541ca7e0075149f5be3262eb89523 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Mon, 24 Nov 2025 03:05:29 +0100 Subject: feat! breaking changes on necti sources. Signed-off-by: Amlal El Mahrouss --- src/LibC++/base_exception.h | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/LibC++/base_exception.h (limited to 'src/LibC++/base_exception.h') diff --git a/src/LibC++/base_exception.h b/src/LibC++/base_exception.h new file mode 100644 index 0000000..8747688 --- /dev/null +++ b/src/LibC++/base_exception.h @@ -0,0 +1,37 @@ +/* ======================================== + + Copyright (C) 2024-2025 Amlal El Mahrouss, Licensed under the Apache 2.0 license. + +======================================== */ + +#pragma once + +#include +#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 -- cgit v1.2.3