aboutsummaryrefslogtreecommitdiff
path: root/arch/x86_64/src/boot/entry64.s
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2025-07-24 12:28:23 +0000
committerFelix Morgner <felix.morgner@ost.ch>2025-07-24 12:28:23 +0000
commitf62b05c93c6c539d899d2656c0638d404a036f1a (patch)
tree971236e6732e0341f96f16d3e200270a68f22397 /arch/x86_64/src/boot/entry64.s
parent2ebf8d525e6a030efc8ca23bcbdf92c2d0cb8985 (diff)
downloadteachos-f62b05c93c6c539d899d2656c0638d404a036f1a.tar.xz
teachos-f62b05c93c6c539d899d2656c0638d404a036f1a.zip
x86_64: implement robust C++ global initialization
Implement a comprehensive mechanism to ensure correct C++ runtime initialization before the kernel main function is called. This replaces the previous, incomplete reliance on an `_init` function. The new design robustly handles both legacy `.ctors` and modern `.init_array` initialization schemes used by the GNU toolchain. A single C++ function, `invoke_global_constructors`, now iterates through both arrays of function pointers to ensure all types of global initializers are executed.
Diffstat (limited to 'arch/x86_64/src/boot/entry64.s')
-rw-r--r--arch/x86_64/src/boot/entry64.s4
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/x86_64/src/boot/entry64.s b/arch/x86_64/src/boot/entry64.s
index f575c50..110ced8 100644
--- a/arch/x86_64/src/boot/entry64.s
+++ b/arch/x86_64/src/boot/entry64.s
@@ -12,8 +12,8 @@ _entry64:
xor %rax, %rax
- call _init
-
+ call invoke_global_constructors
+
call main
1: