Fixed everything to work with the new libc

This commit is contained in:
2024-10-26 14:40:18 +02:00
parent 21c59b28f7
commit 5d420b0d68
14 changed files with 43 additions and 27 deletions
+2
View File
@@ -1,4 +1,6 @@
/* Third stage "prekernel" */
OUTPUT_FORMAT("binary")
SECTIONS {
.text 0x50000 : {
*(entry);
+22 -8
View File
@@ -4,12 +4,26 @@
include make.defaults
bootloader: $(BOOT_DIR)/stage1.asm $(BOOT_DIR)/stage2.asm $(BOOT_DIR)/stage3.c $(LIBC) $(LIBK)
@echo "Assembling $(BOOT_DIR)/stage1.asm..."
$(AS) -fbin -o $(BIN)/stage1.bin $(BOOT_DIR)/stage1.asm $(ASFLAGS)
@echo "Assembling $(BOOT_DIR)/stage2.asm..."
$(AS) -fbin -o $(BIN)/stage2.bin $(BOOT_DIR)/stage2.asm $(ASFLAGS)
@echo "Compiling $(BOOT_DIR)/stage3.c..."
$(CC) $(CFLAGS) -I$(LIBK_INC) -I$(LIBC_INC) -o $(BIN)/boot/stage3.o -c $(BOOT_DIR)/stage3.c
$(LD) $(LDFLAGS) -T$(BOOT_DIR)/stage3.ld --oformat binary -o $(BIN)/stage3.bin $(BIN)/boot/stage3.o $(LIBC) $(LIBK)
STAGE1 = $(BIN)/stage1.bin
STAGE2 = $(BIN)/stage2.bin
STAGE3 = $(BIN)/stage3.bin
STAGE1_SRC = $(BOOT_DIR)/stage1.s
STAGE2_SRC = $(BOOT_DIR)/stage2.s
STAGE3_SRC = $(BOOT_DIR)/stage3.c
STAGE3_OBJ = $(BIN)/boot/stage3.o
bootloader: $(STAGE1) $(STAGE2) $(STAGE3)
$(STAGE1): $(STAGE1_SRC)
@echo "Assembling $<..."
$(AS) -fbin -o $@ $< $(ASFLAGS)
$(STAGE2): $(STAGE2_SRC)
@echo "Assembling $<..."
$(AS) -fbin -o $@ $< $(ASFLAGS)
$(STAGE3): $(STAGE3_SRC)
@echo "Compiling $(STAGE3_SRC)..."
$(CC) $(CFLAGS) -I$(LIBK_INC) -I$(LIBC_INC) -o $(STAGE3_OBJ) -c $<
$(LD) $(LDFLAGS) -T$(BOOT_DIR)/linker.ld -o $@ $(STAGE3_OBJ) $(LIBK)
View File
View File
-1
View File
@@ -7,7 +7,6 @@
#include <disk/disk.h>
#include <fs/impl.h>
#include <fs/fs.h>
#include <stdio.h>
__attribute__ ((section("entry")))
void main() {
+6 -6
View File
@@ -119,7 +119,7 @@ void main() {
char input[256];
char* inPtr = &input[0];
reads(inPtr);
gets(inPtr, 256);
}
}
@@ -131,7 +131,7 @@ int _m() {
char input[256];
char* inputPtr = input;
reads(input);
gets(input, 256);
if (*input == '\0') continue;
@@ -210,7 +210,7 @@ int _m() {
drawCircle(1500, 600, 300, WHITE);
fillCircle(950, 750, 75, rgb(0xa2, 0xd6, 0xf9));
getc(); // Wait until we get a keystroke
getc(stdin); // Wait until we get a keystroke
printf("\x1b[J");
} else if (strcmp(argv[0], "help") == 0) {
printf("Available Commands:\n");
@@ -286,7 +286,7 @@ int _m() {
char c = fp->_ptr[i++];
printf("%c", c < 32 ? '.' : c);
}
putc('\n');
putc('\n', stdout);
}
printf("%04x: ", i);
}
@@ -321,14 +321,14 @@ void listFiles() {
uint32_t total = 0;
while ((dentry + total)->name[0] != '\0') { total++; }
putc(' '); // TODO
putc(' ', stdout); // TODO
printf("\bTotal %d\n", total);
while (dentry->name[0] != '\0') {
inode_t* inode = (inode_t*)BOOT_FIRST_INODE_LOC + dentry->id;
printf("%s", dentry->name);
for (uint32_t pad = (16 - strlen(dentry->name)); pad > 0; pad--) { putc(' '); }
for (uint32_t pad = (16 - strlen(dentry->name)); pad > 0; pad--) { putc(' ', stdout); }
switch (inode->type) {
case FT_FILE: printf("%dB\n", inode->sizeBytes); break;
+2
View File
@@ -1,3 +1,5 @@
OUTPUT_FORMAT("binary")
SECTIONS {
.text 0xC0000000 : {
*(entry);
+1 -1
View File
@@ -7,5 +7,5 @@ include make.defaults
$(KERNEL): $(KERNEL_SRC) $(LIBC) $(LIBK)
@echo "Compiling $(KERNEL_SRC)..."
$(CC) $(CFLAGS) -I$(LIBK_INC) -I$(LIBC_INC) -o $(BIN)/kernel/kernel.o -c $(KERNEL_SRC)
$(LD) $(LDFLAGS) -T$(KERNEL_DIR)/kernel.ld --oformat binary -o $(BIN)/kernel.bin $(BIN)/kernel/kernel.o $(LIBC) $(LIBK)
$(LD) $(LDFLAGS) -T$(KERNEL_DIR)/linker.ld -o $@ $(BIN)/kernel/kernel.o $(LIBK)
+1 -1
View File
@@ -2,10 +2,10 @@
#include <fs/fs.h>
#include <memory/addresses.h>
#include <disk/disk.h>
#include <syscall.h>
#include <stdint.h>
#include <string.h>
#include <stdlib.h>
#include <fcntl.h>
superblock_t* impl_superblock = (superblock_t*)SUPERBLOCK_LOC;
fsInfo_t* fsInfo = (fsInfo_t*)FS_INFO_LOC;
+2 -2
View File
@@ -6,12 +6,12 @@ include make.defaults
LIBK_ASM=$(LIBK_DIR)/interrupt/isr.s
$(LIBK): $(LIBK_SRC) $(LIBK_ASM)
$(LIBK): $(LIBK_SRC) $(LIBK_ASM) $(LIBC)
@echo "Building $(LIBK)..."
nasm -felf32 -o $(BIN)/libk/isr_asm.o $(LIBK_ASM)
for f in $(LIBK_SRC); do\
filename=$$(basename $$f .c);\
$(CC) $(CFLAGS) -I$(LIBC_INC) -I$(LIBK_INC) -o $(BIN)/libk/$$filename.o -c $$f;\
done
$(LD) $(LDFLAGS) -r -o $(LIBK) $(BIN)/libk/**.o
$(LD) $(LDFLAGS) -r -o $(LIBK) $(LIBC) $(BIN)/libk/**.o
+1 -1
View File
@@ -4,7 +4,7 @@
int sys_read(intFrame_t* iframe) {
char* s = (char*)iframe->ebx;
reads(s);
gets(s, 0xffffffff);
return 0;
}
+2 -2
View File
@@ -4,7 +4,7 @@
#include <syscall.h>
// System call table
int (*syscalls[MAX_SYSCALLS])(intFrame_t*) = {
int (*syscalls[SYSCALL_COUNT])(intFrame_t*) = {
[SYS_EXIT] = sys_exit,
[SYS_READ] = sys_read,
[SYS_WRITE] = sys_write,
@@ -18,7 +18,7 @@ int (*syscalls[MAX_SYSCALLS])(intFrame_t*) = {
// Syscall handler
int syscallHandler(intFrame_t* iframe) {
if (iframe->eax > MAX_SYSCALLS-1) { // Syscall doesn't exist
if (iframe->eax > SYSCALL_COUNT-1) { // Syscall doesn't exist
debugf("Error: Syscall(%d) does not exist!\n", iframe->eax);
return -1;
}
+2 -2
View File
@@ -1,5 +1,5 @@
#
# Makfile variables
# Makefile variables
#
# Tools
@@ -14,7 +14,7 @@ CFLAGS = -Wall -Wextra -Wno-pointer-sign -Wno-pointer-arith -Wno-unused-param
-Os -std=c17 -nostdinc -g -Werror\
-ffreestanding -fno-stack-protector -fno-builtin -fno-pie -fcommon\
-m32 -march=i386
LDFLAGS = -z notext -melf_i386 -nostdlib
LDFLAGS = -z notext -nostdlib -melf_i386
ASFLAGS =
# Directories
+1 -2
View File
@@ -2,8 +2,7 @@
# Main kern makefile
#
# Version
export VERSION = 0.2.0
export VERSION = 0.2.1
# Configurable variables (eg. CC, CFLAGS, ...)
include make.defaults