summaryrefslogtreecommitdiffhomepage
path: root/src/LibC++/base_exception.h
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-11-24 03:05:29 +0100
committerAmlal El Mahrouss <amlal@nekernel.org>2025-11-24 03:05:29 +0100
commitbbe2c77243c541ca7e0075149f5be3262eb89523 (patch)
treeae5d59d299344fd19584a2c3642bacd788e841d4 /src/LibC++/base_exception.h
parentb5adf16a96b9cbb80c74cf30404ed5bcff03ac34 (diff)
feat! breaking changes on necti sources.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'src/LibC++/base_exception.h')
-rw-r--r--src/LibC++/base_exception.h37
1 files changed, 37 insertions, 0 deletions
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 <LibC++/__abi.h>
+#include <LibC++/base_process.h>
+#include <LibC++/defines.h>
+#include <iostream>
+
+/// @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