From 207eb771601969177b41a72615aab09d2c9ed98b Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 3 Mar 2023 16:14:13 +0200 Subject: [PATCH] Debug messages --- Architecture/amd64/cpu/GlobalDescriptorTable.cpp | 13 +++++++------ Core/StackGuard.cpp | 8 ++++++++ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/Architecture/amd64/cpu/GlobalDescriptorTable.cpp b/Architecture/amd64/cpu/GlobalDescriptorTable.cpp index 77fc100..878a5c4 100644 --- a/Architecture/amd64/cpu/GlobalDescriptorTable.cpp +++ b/Architecture/amd64/cpu/GlobalDescriptorTable.cpp @@ -115,6 +115,7 @@ namespace GlobalDescriptorTable : "memory", "rax"); CPUStackPointer[Core] = KernelAllocator.RequestPages(TO_PAGES(STACK_SIZE)); + debug("CPU %d Stack Pointer: %#lx", Core, CPUStackPointer[Core]); uint64_t Base = (uint64_t)&tss[Core]; uint64_t Limit = Base + sizeof(TaskStateSegment); @@ -136,12 +137,12 @@ namespace GlobalDescriptorTable asmv("mov %%rsp, %0" : "=r"(tss[Core].StackPointer[0])); - trace("GDT_KERNEL_CODE: %#lx", GDT_KERNEL_CODE); - trace("GDT_KERNEL_DATA: %#lx", GDT_KERNEL_DATA); - trace("GDT_USER_CODE: %#lx", GDT_USER_CODE); - trace("GDT_USER_DATA: %#lx", GDT_USER_DATA); - trace("GDT_TSS: %#lx", GDT_TSS); - trace("Global Descriptor Table initialized"); + debug("GDT_KERNEL_CODE: %#lx", GDT_KERNEL_CODE); + debug("GDT_KERNEL_DATA: %#lx", GDT_KERNEL_DATA); + debug("GDT_USER_CODE: %#lx", GDT_USER_CODE); + debug("GDT_USER_DATA: %#lx", GDT_USER_DATA); + debug("GDT_TSS: %#lx", GDT_TSS); + debug("Global Descriptor Table initialized"); } SafeFunction void SetKernelStack(void *Stack) diff --git a/Core/StackGuard.cpp b/Core/StackGuard.cpp index 00c0f9b..ae6a58a 100644 --- a/Core/StackGuard.cpp +++ b/Core/StackGuard.cpp @@ -42,12 +42,19 @@ EXTERNC __attribute__((weak, noreturn, no_stack_protector)) void __stack_chk_fai error("Stack smashing detected!"); debug("Current stack check guard value: %#lx", __stack_chk_guard); KPrint("\eFF0000Stack smashing detected!"); + #if defined(__amd64__) || defined(__i386__) + void *Stack = nullptr; + asmv("movq %%rsp, %0" + : "=r"(Stack)); + error("Stack address: %#lx", Stack); + while (1) asmv("cli; hlt"); #elif defined(__aarch64__) asmv("wfe"); #endif + CPU::Stop(); } // https://github.com/gcc-mirror/gcc/blob/master/libssp/ssp.c @@ -57,6 +64,7 @@ EXTERNC __attribute__((weak, noreturn, no_stack_protector)) void __chk_fail(void for (short i = 0; i < 10; i++) error("Buffer overflow detected!"); KPrint("\eFF0000Buffer overflow detected!"); + #if defined(__amd64__) || defined(__i386__) while (1) asmv("cli; hlt");