Voxia OS v0.0.1
Hobby Project Operating System Targeting x86-64
Loading...
Searching...
No Matches
sanitizer.c
Go to the documentation of this file.
1#include "console/console.h"
2#include "libk/serial.h"
3#include <type.h>
4#include <type.h>
5
6uintptr_t __stack_chk_guard = 0x595e9fbd94fda766;
7
8__attribute__((noreturn, used, visibility("default"), section(".export"))) void
9__stack_chk_fail(void);
10
11typedef struct stackframe {
12 struct stackframe* rbp;
13 uint64_t rip;
15
16static void stacktrace(void) {
17 stackframe_t* frame;
18
19 asm volatile("mov %%rbp, %0" : "=r"(frame));
20
21 while (frame) {
22 serial2_printf("0x%p ", frame->rip);
23 frame = frame->rbp;
24 }
25}
26
27__attribute__((noreturn, used, visibility("default"), section(".export"))) void
28__stack_chk_fail(void) {
29 serial2_printf("STACK CORRUPTION DETECTED\n");
30 console_printf("STACK CORRUPTION DETECTED\n");
31
32 stacktrace();
33
34 while (1) {
35 __asm__ volatile("cli");
36 __asm__ volatile("hlt");
37 }
38}
void console_printf(const char *fmt,...)
Definition console.c:315
uintptr_t __stack_chk_guard
Definition sanitizer.c:6
boolean_t used
Definition ehci.hpp:6
typedef __attribute__
Definition msi.c:47
void serial2_printf(const char *fmt,...)
stackframe_t
Definition sanitizer.c:14
static void stacktrace(void)
Definition sanitizer.c:16
unsigned long uintptr_t
Definition type.h:73
unsigned long uint64_t
Definition type.h:25