From 3a9c7ce9d4e2d5a30b36277f1881b24c9657fe2f Mon Sep 17 00:00:00 2001 From: James Mintram Date: Thu, 14 Oct 2021 20:22:45 +0100 Subject: [PATCH] Kernel: Add StdLib.cpp to aarch64 build and update stubs in dummy.cpp --- Kernel/Arch/aarch64/dummy.cpp | 46 +++++++++++++++++++++++++---------- Kernel/CMakeLists.txt | 4 +-- 2 files changed, 35 insertions(+), 15 deletions(-) diff --git a/Kernel/Arch/aarch64/dummy.cpp b/Kernel/Arch/aarch64/dummy.cpp index d82c4e96f9..c17fd8bd55 100644 --- a/Kernel/Arch/aarch64/dummy.cpp +++ b/Kernel/Arch/aarch64/dummy.cpp @@ -5,6 +5,7 @@ */ #include +#include #include #include @@ -39,25 +40,44 @@ void* operator new(size_t size) { return kmalloc(size); } void* operator new(size_t size, std::align_val_t) { return kmalloc(size); } namespace Kernel { + void dump_backtrace(PrintToScreen) { } + +// KString.cpp +KResultOr> KString::try_create_uninitialized(size_t, char*&) { return ENOMEM; } +void KString::operator delete(void*) { } + +// SafeMem.h +bool safe_memset(void*, int, size_t, void*&); +bool safe_memset(void*, int, size_t, void*&) { return false; } + +ssize_t safe_strnlen(char const*, unsigned long, void*&); +ssize_t safe_strnlen(char const*, unsigned long, void*&) { return 0; } + +bool safe_memcpy(void*, void const*, unsigned long, void*&); +bool safe_memcpy(void*, void const*, unsigned long, void*&) { return false; } + +Optional safe_atomic_compare_exchange_relaxed(volatile u32*, u32&, u32); +Optional safe_atomic_compare_exchange_relaxed(volatile u32*, u32&, u32) { return {}; } + +Optional safe_atomic_load_relaxed(volatile u32*); +Optional safe_atomic_load_relaxed(volatile u32*) { return {}; } + +Optional safe_atomic_fetch_add_relaxed(volatile u32*, u32); +Optional safe_atomic_fetch_add_relaxed(volatile u32*, u32) { return {}; } + +Optional safe_atomic_exchange_relaxed(volatile u32*, u32); +Optional safe_atomic_exchange_relaxed(volatile u32*, u32) { return {}; } + +bool safe_atomic_store_relaxed(volatile u32*, u32); +bool safe_atomic_store_relaxed(volatile u32*, u32) { return {}; } + } extern "C" { -// StdLib.cpp -[[noreturn]] void __stack_chk_fail(); -[[noreturn]] void __stack_chk_fail() -{ - for (;;) { } -} +FlatPtr kernel_mapping_base; -int memcmp(const void*, const void*, size_t); -int memcmp(const void*, const void*, size_t) { return 0; } - -int strcmp(char const*, const char*); -int strcmp(char const*, const char*) { return 0; } - -// kstdio.h void kernelputstr(const char*, size_t); void kernelputstr(const char*, size_t) { } diff --git a/Kernel/CMakeLists.txt b/Kernel/CMakeLists.txt index 26f16c433a..8e43a6b88d 100644 --- a/Kernel/CMakeLists.txt +++ b/Kernel/CMakeLists.txt @@ -371,12 +371,12 @@ else() Arch/aarch64/dummy.cpp Arch/aarch64/SmapDisabler.cpp Arch/aarch64/ScopedCritical.cpp - + StdLib.cpp UBSanitizer.cpp ) # Otherwise linker errors e.g undefined reference to `__aarch64_cas8_acq_rel' - add_compile_options(-mno-outline-atomics) + add_compile_options(-mno-outline-atomics -latomic) endif() add_compile_options(-fsigned-char)