aboutsummaryrefslogtreecommitdiff
path: root/arch/x86_64
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2024-11-19 17:30:53 +0100
committerFelix Morgner <felix.morgner@ost.ch>2024-11-19 17:30:53 +0100
commit27cd88e4d39489a845483e574f79fd67ef3d4fcd (patch)
treede63a5f8ab11c6f8055466b3506b02c7c029c9e7 /arch/x86_64
parentd1baeb7ec209ddf205dc90d39a5de4c7ecf9fe81 (diff)
downloadteachos-27cd88e4d39489a845483e574f79fd67ef3d4fcd.tar.xz
teachos-27cd88e4d39489a845483e574f79fd67ef3d4fcd.zip
runtime: catch pure virtual function calls
Diffstat (limited to 'arch/x86_64')
-rw-r--r--arch/x86_64/CMakeLists.txt1
-rw-r--r--arch/x86_64/src/exception_handling/pure_virtual.cpp6
2 files changed, 7 insertions, 0 deletions
diff --git a/arch/x86_64/CMakeLists.txt b/arch/x86_64/CMakeLists.txt
index f868b4e..1444054 100644
--- a/arch/x86_64/CMakeLists.txt
+++ b/arch/x86_64/CMakeLists.txt
@@ -65,6 +65,7 @@ target_sources("_exception" PRIVATE
"src/exception_handling/assert.cpp"
"src/exception_handling/abort.cpp"
"src/exception_handling/panic.cpp"
+ "src/exception_handling/pure_virtual.cpp"
)
#[============================================================================[
diff --git a/arch/x86_64/src/exception_handling/pure_virtual.cpp b/arch/x86_64/src/exception_handling/pure_virtual.cpp
new file mode 100644
index 0000000..67772f7
--- /dev/null
+++ b/arch/x86_64/src/exception_handling/pure_virtual.cpp
@@ -0,0 +1,6 @@
+#include "arch/exception_handling/panic.hpp"
+
+extern "C" auto __cxa_pure_virtual() -> void
+{
+ teachos::arch::exception_handling::panic("Runtime", "Tried to call a pure virtual function!");
+}