diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2025-07-24 12:28:23 +0000 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2025-07-24 12:28:23 +0000 |
| commit | f62b05c93c6c539d899d2656c0638d404a036f1a (patch) | |
| tree | 971236e6732e0341f96f16d3e200270a68f22397 /arch/x86_64/CMakeLists.txt | |
| parent | 2ebf8d525e6a030efc8ca23bcbdf92c2d0cb8985 (diff) | |
| download | teachos-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/CMakeLists.txt')
| -rw-r--r-- | arch/x86_64/CMakeLists.txt | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/arch/x86_64/CMakeLists.txt b/arch/x86_64/CMakeLists.txt index 6bb9e53..58daa3b 100644 --- a/arch/x86_64/CMakeLists.txt +++ b/arch/x86_64/CMakeLists.txt @@ -35,9 +35,8 @@ target_sources("arch-x86_64" PRIVATE target_sources("arch-x86_64" PRIVATE "src/boot/boot32.S" - "src/boot/crti.s" - "src/boot/crtn.s" "src/boot/entry64.s" + "src/boot/initialize_runtime.cpp" "src/boot/multiboot.s" ) |
