sysroot and cross-compiler based build WIP

This commit is contained in:
Justin C. Miller
2019-01-17 00:51:45 -08:00
parent 591ca7c83c
commit 523d0b3b8c
17 changed files with 664 additions and 14 deletions

View File

@@ -33,5 +33,18 @@ SECTIONS
__bss_end = .;
}
.eh_frame : {
__eh_frame_start = .;
KEEP(*(.eh_frame))
__eh_frame_end = .;
}
.eh_frame_hdr : {
KEEP(*(.eh_frame_hdr))
}
__eh_frame_hdr_start = SIZEOF(.eh_frame_hdr) > 0 ? ADDR(.eh_frame_hdr) : 0;
__eh_frame_hdr_end = SIZEOF(.eh_frame_hdr) > 0 ? . : 0;
kernel_end = ALIGN(4096);
}

View File

@@ -18,3 +18,9 @@ __kernel_assert(const char *file, unsigned line, const char *message)
__asm__ ( "int $0e7h" );
while (1) __asm__ ("hlt");
}
extern "C" [[noreturn]] void
__assert_fail(const char *message, const char *file, unsigned int line, const char *function)
{
__kernel_assert(file, line, message);
}

View File

@@ -3,7 +3,6 @@
#include "kutil/memory.h"
#include "console.h"
#include "font.h"
#include "memory.h"
#include "screen.h"
#include "serial.h"

View File

@@ -1,7 +1,6 @@
#include <stddef.h>
#include <stdint.h>
#include "ahci/driver.h"
#include "kutil/assert.h"
#include "kutil/memory.h"
#include "acpi_tables.h"
@@ -10,7 +9,6 @@
#include "device_manager.h"
#include "interrupts.h"
#include "log.h"
#include "memory.h"
#include "page_manager.h"

View File

@@ -3,17 +3,17 @@ extern g_gdtr
global idt_write
idt_write:
lidt [rel g_idtr]
lidt [g_idtr]
ret
global idt_load
idt_load:
sidt [rel g_idtr]
sidt [g_idtr]
ret
global gdt_write
gdt_write:
lgdt [rel g_gdtr]
lgdt [g_gdtr]
mov ax, si ; second arg is data segment
mov ds, ax
mov es, ax
@@ -30,6 +30,6 @@ gdt_write:
global gdt_load
gdt_load:
sgdt [rel g_gdtr]
sgdt [g_gdtr]
ret

View File

@@ -13,7 +13,6 @@
#include "io.h"
#include "kernel_data.h"
#include "log.h"
#include "memory.h"
#include "page_manager.h"
#include "scheduler.h"
#include "screen.h"

View File

@@ -0,0 +1,12 @@
Import('target')
env = target.Clone()
env.Append(
CPPPATH = ['.', 'include', '#src/libraries/kutil/include'],
)
lib = env.Library('elf', Glob('*.cpp'))
Return('lib')
# vim: ft=python et

View File

@@ -0,0 +1,12 @@
Import('target')
env = target.Clone()
env.Append(
CPPPATH = ['.', 'include', '#src/libraries/kutil/include'],
)
lib = env.Library('initrd', Glob('*.cpp'))
Return('lib')
# vim: ft=python et

View File

@@ -0,0 +1,12 @@
Import('target')
env = target.Clone()
env.Append(
CPPPATH = ['.', 'include'],
)
lib = env.Library('kutil', Glob('*.cpp'))
Return('lib')
# vim: ft=python et

View File

@@ -1,12 +1,15 @@
#include "kutil/memory.h"
#include "kutil/memory_manager.h"
#include "kutil/type_macros.h"
__weak void * operator new (size_t, void *p) noexcept { return p; }
__weak void * operator new (size_t n) { return kutil::malloc(n); }
__weak void * operator new[] (size_t n) { return kutil::malloc(n); }
__weak void operator delete (void *p) noexcept { return kutil::free(p); }
__weak void operator delete[] (void *p) noexcept { return kutil::free(p); }
namespace std {
enum class __attribute__ ((__type_visibility("default"))) align_val_t : size_t { };
}
void * operator new(size_t n, std::align_val_t) { return kutil::malloc(n); }
void * operator new (size_t n) { return kutil::malloc(n); }
void * operator new[] (size_t n) { return kutil::malloc(n); }
void operator delete (void *p) noexcept { return kutil::free(p); }
void operator delete[] (void *p) noexcept { return kutil::free(p); }
namespace kutil {