From 55c9faaa79c34941859a8921707efd619719dbf0 Mon Sep 17 00:00:00 2001 From: "Justin C. Miller" Date: Wed, 7 Apr 2021 22:53:48 -0700 Subject: [PATCH] [libj6] Move _init_libc to _init_libj6 As part of the move of jsix-specific code from libc to libj6, all the library initialization is now libj6-specific, so move it all over. --- configs/debug.toml | 2 ++ src/libraries/{libc/arch/x86_64/init_libc.c => j6/init.cpp} | 6 +++--- src/libraries/j6/module.toml | 2 +- src/libraries/libc/arch/x86_64/crt0.s | 6 ++---- src/libraries/libc/module.toml | 1 - 5 files changed, 8 insertions(+), 9 deletions(-) rename src/libraries/{libc/arch/x86_64/init_libc.c => j6/init.cpp} (93%) diff --git a/configs/debug.toml b/configs/debug.toml index d07c05c..4e87550 100644 --- a/configs/debug.toml +++ b/configs/debug.toml @@ -64,6 +64,7 @@ ccflags = [ "-mcmodel=large", "-D__ELF__", "-D__JSIX__", + "-D_LIBCPP_HAS_THREAD_API_EXTERNAL", "-isystem${source_root}/sysroot/include", "-isystem${source_root}/src/libraries/libc/include", "--sysroot='${source_root}/sysroot'" @@ -113,6 +114,7 @@ ccflags = [ "-mcmodel=large", "-D__ELF__", "-D__JSIX__", + "-D_LIBCPP_HAS_THREAD_API_EXTERNAL", "-isystem${source_root}/sysroot/include", "-isystem${source_root}/src/libraries/libc/include", "--sysroot='${source_root}/sysroot'" diff --git a/src/libraries/libc/arch/x86_64/init_libc.c b/src/libraries/j6/init.cpp similarity index 93% rename from src/libraries/libc/arch/x86_64/init_libc.c rename to src/libraries/j6/init.cpp index 3e60dff..21309a5 100644 --- a/src/libraries/libc/arch/x86_64/init_libc.c +++ b/src/libraries/j6/init.cpp @@ -8,7 +8,7 @@ static struct j6_init_value *__initv = 0; j6_handle_t __handle_sys = j6_handle_invalid; j6_handle_t __handle_self = j6_handle_invalid; -void +extern "C" void _get_init(size_t *initc, struct j6_init_value **initv) { if (!initc) @@ -19,8 +19,8 @@ _get_init(size_t *initc, struct j6_init_value **initv) *initv = __initv; } -void -_init_libc(uint64_t *rsp) +extern "C" void +_init_libj6(uint64_t *rsp) { uint64_t argc = *rsp++; rsp += argc; diff --git a/src/libraries/j6/module.toml b/src/libraries/j6/module.toml index 5435d35..b148eb3 100644 --- a/src/libraries/j6/module.toml +++ b/src/libraries/j6/module.toml @@ -1,4 +1,4 @@ name = "j6" kind = "lib" includes = ["src/libraries/j6/include"] -sources = ["syscalls.s"] +sources = ["init.cpp", "syscalls.s"] diff --git a/src/libraries/libc/arch/x86_64/crt0.s b/src/libraries/libc/arch/x86_64/crt0.s index 222f599..d059a8b 100644 --- a/src/libraries/libc/arch/x86_64/crt0.s +++ b/src/libraries/libc/arch/x86_64/crt0.s @@ -1,17 +1,15 @@ extern main extern exit -extern _init_libc +extern _init_libj6 global _start:function (_start.end - _start) _start: mov rbp, rsp mov rdi, rsp - - call _init_libc + call _init_libj6 pop rdi mov rsi, rsp - call main mov rdi, rax diff --git a/src/libraries/libc/module.toml b/src/libraries/libc/module.toml index a0c8d70..7dd7a5b 100644 --- a/src/libraries/libc/module.toml +++ b/src/libraries/libc/module.toml @@ -7,7 +7,6 @@ deps = ["j6"] sources = [ "arch/x86_64/_Exit.s", "arch/x86_64/crt0.s", - "arch/x86_64/init_libc.c", "ctype/isalnum.c", "ctype/isalpha.c", "ctype/isblank.c",