summaryrefslogtreecommitdiff
path: root/kernel/cxx
diff options
context:
space:
mode:
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