summaryrefslogtreecommitdiff
path: root/kernel/cxx
diff options
context:
space:
mode:
authorSamuel Johnson <[email protected]>2025-06-27 17:46:28 -0400
committerSamuel Johnson <[email protected]>2025-06-27 17:46:28 -0400
commit12fd3a91f138bf90520134682e38bf3b0341e660 (patch)
tree66b3f4a19f50a0f9883ca3f5a286a1e8dc3bc8c6 /kernel/cxx
parent6e65e584a3baf2dfe8906c2d847ca5169b91b3fc (diff)
Create kernel build infrastructure
Diffstat (limited to 'kernel/cxx')
-rw-r--r--kernel/cxx/constructors.cxx18
-rw-r--r--kernel/cxx/gcc_required_functions.cxx1
-rw-r--r--kernel/cxx/icxxabi.cxx0
-rw-r--r--kernel/cxx/icxxabi.h0
4 files changed, 19 insertions, 0 deletions
diff --git a/kernel/cxx/constructors.cxx b/kernel/cxx/constructors.cxx
new file mode 100644
index 0000000..8c21453
--- /dev/null
+++ b/kernel/cxx/constructors.cxx
@@ -0,0 +1,18 @@
+extern void (*_ctors_start[0])(void), (*_ctors_end[0])(void);
+extern void (*_dtors_start[0])(void), (*_dtors_end[0])(void);
+
+void init (void)
+{
+ for (void (**ctor)(void) = _ctors_start; ctor != _ctors_end; ctor++)
+ {
+ (*ctor)();
+ }
+}
+
+void fini (void)
+{
+ for (void (**dtor)(void) = _dtors_start; dtor != _dtors_end; dtor++)
+ {
+ (*dtor)();
+ }
+}
diff --git a/kernel/cxx/gcc_required_functions.cxx b/kernel/cxx/gcc_required_functions.cxx
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/kernel/cxx/gcc_required_functions.cxx
@@ -0,0 +1 @@
+
diff --git a/kernel/cxx/icxxabi.cxx b/kernel/cxx/icxxabi.cxx
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/kernel/cxx/icxxabi.cxx
diff --git a/kernel/cxx/icxxabi.h b/kernel/cxx/icxxabi.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/kernel/cxx/icxxabi.h