mirror of
https://github.com/EnderIce2/Fennix.git
synced 2025-07-18 18:51:43 +00:00
Updated libc
This commit is contained in:
21
libc/src/InitArray.c
Normal file
21
libc/src/InitArray.c
Normal file
@@ -0,0 +1,21 @@
|
||||
extern void (*__preinit_array_start[])(void) __attribute__((weak));
|
||||
extern void (*__preinit_array_end[])(void) __attribute__((weak));
|
||||
extern void (*__init_array_start[])(void) __attribute__((weak));
|
||||
extern void (*__init_array_end[])(void) __attribute__((weak));
|
||||
extern void (*__fini_array_start []) (void) __attribute__((weak));
|
||||
extern void (*__fini_array_end []) (void) __attribute__((weak));
|
||||
|
||||
extern void _init(void);
|
||||
|
||||
void __libc_init_array(void)
|
||||
{
|
||||
unsigned long Count = __preinit_array_end - __preinit_array_start;
|
||||
for (unsigned long i = 0; i < Count; i++)
|
||||
__preinit_array_start[i]();
|
||||
|
||||
_init();
|
||||
|
||||
Count = __init_array_end - __init_array_start;
|
||||
for (unsigned long i = 0; i < Count; i++)
|
||||
__init_array_start[i]();
|
||||
}
|
@@ -8,13 +8,14 @@ OBJECT_NAME=lib$(NAME).a
|
||||
OUTPUT_DIR=../../out/system/lib/
|
||||
|
||||
CC = ../../../$(COMPILER_PATH)/$(COMPILER_ARCH)gcc
|
||||
AS = ../../../$(COMPILER_PATH)/$(COMPILER_ARCH)as
|
||||
AR = ../../../$(COMPILER_PATH)/$(COMPILER_ARCH)ar
|
||||
NASM = /usr/bin/nasm
|
||||
|
||||
C_SOURCES = $(shell find ./ -type f -name '*.c')
|
||||
S_SOURCES = $(shell find ./ -type f -name '*.s')
|
||||
S_SOURCES = $(shell find ./ -type f -name '*.S')
|
||||
ASM_SOURCES = $(shell find ./ -type f -name '*.asm')
|
||||
OBJ = ${C_SOURCES:.c=.o} ${ASM_SOURCES:.asm=.o} ${S_SOURCES:.s=.o}
|
||||
OBJ = ${C_SOURCES:.c=.o} ${ASM_SOURCES:.asm=.o} ${S_SOURCES:.S=.o}
|
||||
|
||||
INCLUDE_DIR = ../include
|
||||
|
||||
@@ -24,7 +25,7 @@ else ifeq ($(OSARCH), i686)
|
||||
ASM_ARCH := elf32
|
||||
endif
|
||||
|
||||
CFLAGS := -fPIC -I$(INCLUDE_DIR)
|
||||
CFLAGS := -fPIC -mno-red-zone -I$(INCLUDE_DIR)
|
||||
|
||||
build: $(OBJECT_NAME)
|
||||
|
||||
@@ -37,6 +38,9 @@ $(OBJECT_NAME): $(OBJ)
|
||||
%.o: %.cpp $(HEADERS) $(HEADERS2)
|
||||
$(CC) $(CFLAGS) -std=c++20 -c $< -o $@
|
||||
|
||||
%.o: %.S
|
||||
$(AS) -c $< -o $@
|
||||
|
||||
%.o: %.asm
|
||||
$(NASM) $< -f $(ASM_ARCH) -o $@
|
||||
|
||||
|
18
libc/src/Runtime.c
Normal file
18
libc/src/Runtime.c
Normal file
@@ -0,0 +1,18 @@
|
||||
|
||||
extern void __libc_init_array();
|
||||
|
||||
void __libc_init()
|
||||
{
|
||||
__libc_init_array();
|
||||
}
|
||||
|
||||
void _exit(int Code)
|
||||
{
|
||||
__asm__ __volatile__("syscall"
|
||||
:
|
||||
: "a"(0), "D"(Code)
|
||||
: "rcx", "r11", "memory");
|
||||
|
||||
while (1)
|
||||
__asm__ __volatile__("hlt");
|
||||
}
|
Reference in New Issue
Block a user