mirror of
https://github.com/Fennix-Project/Userspace.git
synced 2025-05-28 15:34:26 +00:00
Updated libc
This commit is contained in:
parent
bc92258a5f
commit
2b57c3126a
6
Makefile
6
Makefile
@ -4,6 +4,7 @@ build:
|
|||||||
mkdir -p out/system/lib
|
mkdir -p out/system/lib
|
||||||
mkdir -p out/system/include
|
mkdir -p out/system/include
|
||||||
make --quiet -C libc build
|
make --quiet -C libc build
|
||||||
|
make --quiet -C libs build
|
||||||
make --quiet -C apps build
|
make --quiet -C apps build
|
||||||
|
|
||||||
prepare:
|
prepare:
|
||||||
@ -11,5 +12,6 @@ prepare:
|
|||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf out
|
rm -rf out
|
||||||
make --quiet -C libc clean
|
make -C libc clean
|
||||||
make --quiet -C apps clean
|
make -C libs clean
|
||||||
|
make -C apps clean
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
build:
|
build:
|
||||||
make --quiet -C system build
|
make --quiet -C system build
|
||||||
|
make --quiet -C base build
|
||||||
make --quiet -C user build
|
make --quiet -C user build
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
make --quiet -C system clean
|
make -C system clean
|
||||||
make --quiet -C user clean
|
make -C base clean
|
||||||
|
make -C user clean
|
||||||
|
5
apps/base/Makefile
Normal file
5
apps/base/Makefile
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
build:
|
||||||
|
make --quiet -C echo build
|
||||||
|
|
||||||
|
clean:
|
||||||
|
make -C echo clean
|
83
apps/base/echo/Makefile
Normal file
83
apps/base/echo/Makefile
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
# Config file
|
||||||
|
include ../../../../Makefile.conf
|
||||||
|
|
||||||
|
FILENAME = echo.elf
|
||||||
|
|
||||||
|
SYSROOT = --sysroot=../../../out/system/
|
||||||
|
|
||||||
|
CC = ../../../../$(COMPILER_PATH)/$(COMPILER_ARCH)gcc
|
||||||
|
CPP = ../../../../$(COMPILER_PATH)/$(COMPILER_ARCH)g++
|
||||||
|
LD = ../../../../$(COMPILER_PATH)/$(COMPILER_ARCH)ld
|
||||||
|
AS = ../../../../$(COMPILER_PATH)/$(COMPILER_ARCH)as
|
||||||
|
OBJDUMP = ../../../../$(COMPILER_PATH)/$(COMPILER_ARCH)objdump
|
||||||
|
|
||||||
|
GIT_COMMIT = $(shell git rev-parse HEAD)
|
||||||
|
GIT_COMMIT_SHORT = $(shell git rev-parse --short HEAD)
|
||||||
|
|
||||||
|
ifeq ($(OSARCH), amd64)
|
||||||
|
S_SOURCES = $(shell find ./ -type f -name '*.S' -not -path "./arch/i686/*" -not -path "./arch/aarch64/*")
|
||||||
|
C_SOURCES = $(shell find ./ -type f -name '*.c' -not -path "./arch/i686/*" -not -path "./arch/aarch64/*")
|
||||||
|
CPP_SOURCES = $(shell find ./ -type f -name '*.cpp' -not -path "./arch/i686/*" -not -path "./arch/aarch64/*")
|
||||||
|
else ifeq ($(OSARCH), i686)
|
||||||
|
S_SOURCES = $(shell find ./ -type f -name '*.S' -not -path "./arch/amd64/*" -not -path "./arch/aarch64/*")
|
||||||
|
C_SOURCES = $(shell find ./ -type f -name '*.c' -not -path "./arch/amd64/*" -not -path "./arch/aarch64/*")
|
||||||
|
CPP_SOURCES = $(shell find ./ -type f -name '*.cpp' -not -path "./arch/amd64/*" -not -path "./arch/aarch64/*")
|
||||||
|
else ifeq ($(OSARCH), aarch64)
|
||||||
|
S_SOURCES = $(shell find ./ -type f -name '*.S' -not -path "./arch/amd64/*" -not -path "./arch/i686/*")
|
||||||
|
C_SOURCES = $(shell find ./ -type f -name '*.c' -not -path "./arch/amd64/*" -not -path "./arch/i686/*")
|
||||||
|
CPP_SOURCES = $(shell find ./ -type f -name '*.cpp' -not -path "./arch/amd64/*" -not -path "./arch/i686/*")
|
||||||
|
endif
|
||||||
|
HEADERS = $(sort $(dir $(wildcard ../../../out/system/include/*)))
|
||||||
|
OBJ = $(C_SOURCES:.c=.o) $(CPP_SOURCES:.cpp=.o) $(ASM_SOURCES:.asm=.o) $(S_SOURCES:.S=.o) $(PSF_SOURCES:.psf=.o) $(BMP_SOURCES:.bmp=.o)
|
||||||
|
INCLUDE_DIR = ../../../out/system/include
|
||||||
|
|
||||||
|
LDFLAGS := -Wl,-Map file.map
|
||||||
|
|
||||||
|
WARNCFLAG = -Wall -Wextra -Wno-builtin-declaration-mismatch
|
||||||
|
|
||||||
|
CFLAGS := \
|
||||||
|
-I$(INCLUDE_DIR) \
|
||||||
|
-DGIT_COMMIT='"$(GIT_COMMIT)"' \
|
||||||
|
-DGIT_COMMIT_SHORT='"$(GIT_COMMIT_SHORT)"'
|
||||||
|
|
||||||
|
ifeq ($(OSARCH), amd64)
|
||||||
|
|
||||||
|
CFLAGS += -march=x86-64
|
||||||
|
|
||||||
|
else ifeq ($(OSARCH), i686)
|
||||||
|
|
||||||
|
CFLAGS += -march=i686
|
||||||
|
|
||||||
|
else ifeq ($(OSARCH), aarch64)
|
||||||
|
|
||||||
|
CFLAGS += -pipe
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
build: $(FILENAME)
|
||||||
|
$(OBJDUMP) -d $(FILENAME) > file_dump.map
|
||||||
|
mv $(FILENAME) ../../../out/system/$(FILENAME)
|
||||||
|
|
||||||
|
$(FILENAME): $(OBJ)
|
||||||
|
$(CC) $(LDFLAGS) $(SYSROOT) $(OBJ) -o $@
|
||||||
|
|
||||||
|
%.o: %.c $(HEADERS)
|
||||||
|
$(info Compiling $<)
|
||||||
|
$(CC) $(CFLAGS) $(WARNCFLAG) -std=c17 -c $< -o $@
|
||||||
|
|
||||||
|
%.o: %.cpp $(HEADERS)
|
||||||
|
$(info Compiling $<)
|
||||||
|
$(CPP) $(CFLAGS) $(WARNCFLAG) -std=c++20 -fexceptions -c $< -o $@ -fno-rtti
|
||||||
|
|
||||||
|
%.o: %.S
|
||||||
|
$(info Compiling $<)
|
||||||
|
ifeq ($(OSARCH), amd64)
|
||||||
|
$(AS) -o $@ $<
|
||||||
|
else ifeq ($(OSARCH), i686)
|
||||||
|
$(AS) -o $@ $<
|
||||||
|
else ifeq ($(OSARCH), aarch64)
|
||||||
|
$(AS) -o $@ $<
|
||||||
|
endif
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *.o file.map file_dump.map $(OBJ)
|
21
apps/base/echo/echo.cpp
Normal file
21
apps/base/echo/echo.cpp
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
static inline long syscall2(int sc, long arg1, long arg2)
|
||||||
|
{
|
||||||
|
long ret;
|
||||||
|
__asm__ __volatile__("syscall"
|
||||||
|
: "=a"(ret)
|
||||||
|
: "a"(sc), "D"(arg1), "S"(arg2)
|
||||||
|
: "rcx", "r11", "memory");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
// TODO: Change this to use stdout
|
||||||
|
for (int i = 1; i < argc; i++)
|
||||||
|
{
|
||||||
|
for (int j = 0; argv[i][j]; j++)
|
||||||
|
syscall2(1, argv[i][j], 0);
|
||||||
|
syscall2(1, ' ', 0);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
@ -2,4 +2,4 @@ build:
|
|||||||
make --quiet -C init build
|
make --quiet -C init build
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
make --quiet -C init clean
|
make -C init clean
|
||||||
|
@ -31,7 +31,7 @@ HEADERS = $(sort $(dir $(wildcard ../../../out/system/include/*)))
|
|||||||
OBJ = $(C_SOURCES:.c=.o) $(CPP_SOURCES:.cpp=.o) $(ASM_SOURCES:.asm=.o) $(S_SOURCES:.S=.o) $(PSF_SOURCES:.psf=.o) $(BMP_SOURCES:.bmp=.o)
|
OBJ = $(C_SOURCES:.c=.o) $(CPP_SOURCES:.cpp=.o) $(ASM_SOURCES:.asm=.o) $(S_SOURCES:.S=.o) $(PSF_SOURCES:.psf=.o) $(BMP_SOURCES:.bmp=.o)
|
||||||
INCLUDE_DIR = ../../../out/system/include
|
INCLUDE_DIR = ../../../out/system/include
|
||||||
|
|
||||||
LDFLAGS := -fPIC -Wl,-Map file.map
|
LDFLAGS := -Wl,-Map file.map
|
||||||
|
|
||||||
WARNCFLAG = -Wall -Wextra -Wno-builtin-declaration-mismatch
|
WARNCFLAG = -Wall -Wextra -Wno-builtin-declaration-mismatch
|
||||||
|
|
||||||
@ -42,15 +42,15 @@ CFLAGS := \
|
|||||||
|
|
||||||
ifeq ($(OSARCH), amd64)
|
ifeq ($(OSARCH), amd64)
|
||||||
|
|
||||||
CFLAGS += -fPIC -march=x86-64 -fstack-protector-all -fstack-clash-protection
|
CFLAGS += -march=x86-64 -fstack-protector-all -fstack-clash-protection
|
||||||
|
|
||||||
else ifeq ($(OSARCH), i686)
|
else ifeq ($(OSARCH), i686)
|
||||||
|
|
||||||
CFLAGS += -fPIC -march=i686
|
CFLAGS += -march=i686
|
||||||
|
|
||||||
else ifeq ($(OSARCH), aarch64)
|
else ifeq ($(OSARCH), aarch64)
|
||||||
|
|
||||||
CFLAGS += -pipe -fPIC
|
CFLAGS += -pipe
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -59,7 +59,7 @@ build: $(FILENAME)
|
|||||||
mv $(FILENAME) ../../../out/system/$(FILENAME)
|
mv $(FILENAME) ../../../out/system/$(FILENAME)
|
||||||
|
|
||||||
$(FILENAME): $(OBJ)
|
$(FILENAME): $(OBJ)
|
||||||
$(CC) $(LDFLAGS) $(SYSROOT) $(OBJ) -o $@
|
$(CC) $(LDFLAGS) $(SYSROOT) $(OBJ) -lssp -o $@
|
||||||
|
|
||||||
%.o: %.c $(HEADERS)
|
%.o: %.c $(HEADERS)
|
||||||
$(info Compiling $<)
|
$(info Compiling $<)
|
||||||
|
@ -58,16 +58,16 @@ static inline long syscall2(int sc, long arg1, long arg2)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" void putchar(char c) { syscall2(1, c, 0); }
|
void putchar(char c) { syscall2(1, c, 0); }
|
||||||
|
|
||||||
int main(int argc, char *argv[], char *envp[])
|
int main(int argc, char *argv[], char *envp[])
|
||||||
{
|
{
|
||||||
printf_("Hello World!\n");
|
printf_("Hello World!\n");
|
||||||
printf_("I have %d arguments\n", argc);
|
printf_("I have %d arguments\n", argc);
|
||||||
for (int i = 0; i < argc; i++)
|
for (int i = 0; i < argc; i++)
|
||||||
printf_("argv[%d] = %s\n", i, argv[i]);
|
printf_("argv[%d] = (%p) %s\n", i, argv[i], argv[i]);
|
||||||
for (int i = 0; envp[i]; i++)
|
for (int i = 0; envp[i]; i++)
|
||||||
printf_("envp[%d] = %s\n", i, envp[i]);
|
printf_("envp[%d] = (%p) %s\n", i, envp[i], envp[i]);
|
||||||
Elf64_auxv_t *auxv;
|
Elf64_auxv_t *auxv;
|
||||||
while (*envp++ != NULL)
|
while (*envp++ != NULL)
|
||||||
;
|
;
|
8
apps/system/init/log
Normal file
8
apps/system/init/log
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
919707 execve("../../../../tools/cross/bin/amd64-elf-gcc", ["../../../../tools/cross/bin/amd6"..., "-Wl,-Map", "file.map", "-shared", "--sysroot=../../../out/system/", "./printf.o", "./ssp.o", "./init.o", "-o", "init.elf"], ["GDK_BACKEND=x11", "GNOME_SHELL_SESSION_MODE=ubuntu", "SSH_AGENT_LAUNCHER=gnome-keyring", "GJS_DEBUG_OUTPUT=stderr", "MANDATORY_PATH=/usr/share/gconf/"..., "WINDOWPATH=2", "LIBVIRT_DEFAULT_URI=qemu:///syst"..., "GTK3_MODULES=xapp-gtk3-module", "QT_ACCESSIBILITY=1", "VSCODE_GIT_ASKPASS_EXTRA_ARGS=--"..., "PWD=/media/enderice2/SSD250/Fenn"..., "XDG_DATA_DIRS=/usr/share/ubuntu-"..., "LANG=ro_RO.UTF-8", "XAUTHORITY=/run/user/1000/gdm/Xa"..., "MAKEFLAGS=s", "LESSOPEN=| /usr/bin/lesspipe %s", "MFLAGS=-s", "SSH_AUTH_SOCK=/run/user/1000/key"..., "XDG_CONFIG_DIRS=/etc/xdg/xdg-ubu"..., "GIT_ASKPASS=/usr/share/code/reso"..., "XDG_SESSION_DESKTOP=ubuntu-xorg", "ENABLE_VKBASALT=1", "XDG_SESSION_TYPE=x11", "SESSION_MANAGER=local/enderice2-"..., "CHROME_DESKTOP=code-url-handler."..., "DBUS_SESSION_BUS_ADDRESS=unix:pa"..., "GNOME_DESKTOP_SESSION_ID=this-is"..., "SHELL=/bin/bash", "XMODIFIERS=@im=ibus", "DOTNET_BUNDLE_EXTRACT_BASE_DIR=/"..., "GJS_DEBUG_TOPICS=JS ERROR;JS LOG", "SHLVL=1", "PATH=/home/enderice2/.local/bin:"..., "VSCODE_GIT_IPC_HANDLE=/run/user/"..., "VSCODE_GIT_ASKPASS_NODE=/usr/sha"..., "VSCODE_GIT_ASKPASS_MAIN=/usr/sha"..., "INVOCATION_ID=ec0726044e7e4279b4"..., "USERNAME=enderice2", "TERM_PROGRAM=vscode", "LESSCLOSE=/usr/bin/lesspipe %s %"..., "XDG_CURRENT_DESKTOP=Unity", "LS_COLORS=rs=0:di=01;34:ln=01;36"..., "DESKTOP_SESSION=ubuntu-xorg", "ORIGINAL_XDG_CURRENT_DESKTOP=ubu"..., "LOGNAME=enderice2", "GIO_LAUNCHED_DESKTOP_FILE=/usr/s"..., "SYSTEMD_EXEC_PID=3170", "DISPLAY=:0", "GTK_MODULES=gail:atk-bridge:appm"..., "USER=enderice2", "DEFAULTS_PATH=/usr/share/gconf/u"..., "QT_FONT_DPI=96", "MANAGERPID=2831", "GIO_LAUNCHED_DESKTOP_FILE_PID=10"..., "QT_STYLE_OVERRIDE=kvantum", "_=/usr/bin/make", "MAKE_TERMOUT=/dev/pts/1", "XDG_RUNTIME_DIR=/run/user/1000", "GPG_AGENT_INFO=/run/user/1000/gn"..., "COLORTERM=truecolor", "JOURNAL_STREAM=8:44860", "MAKE_TERMERR=/dev/pts/1", "XDG_SESSION_CLASS=user", "HOME=/home/enderice2", "QT_IM_MODULE=ibus", "TERM=xterm-256color", "IM_CONFIG_PHASE=1", "XDG_MENU_PREFIX=gnome-", "TERM_PROGRAM_VERSION=1.73.1", "DOTNET_ROOT=/usr/lib/dotnet/dotn"..., "GDMSESSION=ubuntu-xorg", "MAKELEVEL=5"]) = 0
|
||||||
|
919708 execve("/media/enderice2/SSD250/Fennix/tools/cross/libexec/gcc/amd64-elf/13.0.0/collect2", ["/media/enderice2/SSD250/Fennix/t"..., "-plugin", "/media/enderice2/SSD250/Fennix/t"..., "-plugin-opt=/media/enderice2/SSD"..., "-plugin-opt=-fresolution=/tmp/cc"..., "-plugin-opt=-pass-through=-lgcc", "-plugin-opt=-pass-through=-lgcc", "--sysroot=../../../out/system/", "-o", "init.elf", "../../../out/system/lib/crtbegin"..., "-L/media/enderice2/SSD250/Fennix"..., "-L/media/enderice2/SSD250/Fennix"..., "-L../../../out/system/lib", "-Map", "file.map", "./printf.o", "./ssp.o", "./init.o", "-lgcc", "-lgcc", "../../../out/system/lib/crtend.o"], ["GDK_BACKEND=x11", "GNOME_SHELL_SESSION_MODE=ubuntu", "SSH_AGENT_LAUNCHER=gnome-keyring", "GJS_DEBUG_OUTPUT=stderr", "MANDATORY_PATH=/usr/share/gconf/"..., "WINDOWPATH=2", "LIBVIRT_DEFAULT_URI=qemu:///syst"..., "GTK3_MODULES=xapp-gtk3-module", "QT_ACCESSIBILITY=1", "VSCODE_GIT_ASKPASS_EXTRA_ARGS=--"..., "PWD=/media/enderice2/SSD250/Fenn"..., "XDG_DATA_DIRS=/usr/share/ubuntu-"..., "LANG=ro_RO.UTF-8", "XAUTHORITY=/run/user/1000/gdm/Xa"..., "MAKEFLAGS=s", "LESSOPEN=| /usr/bin/lesspipe %s", "MFLAGS=-s", "SSH_AUTH_SOCK=/run/user/1000/key"..., "XDG_CONFIG_DIRS=/etc/xdg/xdg-ubu"..., "GIT_ASKPASS=/usr/share/code/reso"..., "XDG_SESSION_DESKTOP=ubuntu-xorg", "ENABLE_VKBASALT=1", "XDG_SESSION_TYPE=x11", "SESSION_MANAGER=local/enderice2-"..., "CHROME_DESKTOP=code-url-handler."..., "DBUS_SESSION_BUS_ADDRESS=unix:pa"..., "GNOME_DESKTOP_SESSION_ID=this-is"..., "SHELL=/bin/bash", "XMODIFIERS=@im=ibus", "DOTNET_BUNDLE_EXTRACT_BASE_DIR=/"..., "GJS_DEBUG_TOPICS=JS ERROR;JS LOG", "SHLVL=1", "PATH=/home/enderice2/.local/bin:"..., "VSCODE_GIT_IPC_HANDLE=/run/user/"..., "VSCODE_GIT_ASKPASS_NODE=/usr/sha"..., "VSCODE_GIT_ASKPASS_MAIN=/usr/sha"..., "INVOCATION_ID=ec0726044e7e4279b4"..., "USERNAME=enderice2", "TERM_PROGRAM=vscode", "LESSCLOSE=/usr/bin/lesspipe %s %"..., "XDG_CURRENT_DESKTOP=Unity", "LS_COLORS=rs=0:di=01;34:ln=01;36"..., "DESKTOP_SESSION=ubuntu-xorg", "ORIGINAL_XDG_CURRENT_DESKTOP=ubu"..., "LOGNAME=enderice2", "GIO_LAUNCHED_DESKTOP_FILE=/usr/s"..., "SYSTEMD_EXEC_PID=3170", "DISPLAY=:0", "GTK_MODULES=gail:atk-bridge:appm"..., "USER=enderice2", "DEFAULTS_PATH=/usr/share/gconf/u"..., "QT_FONT_DPI=96", "MANAGERPID=2831", "GIO_LAUNCHED_DESKTOP_FILE_PID=10"..., "QT_STYLE_OVERRIDE=kvantum", "_=/usr/bin/make", "MAKE_TERMOUT=/dev/pts/1", "XDG_RUNTIME_DIR=/run/user/1000", "GPG_AGENT_INFO=/run/user/1000/gn"..., "COLORTERM=truecolor", "JOURNAL_STREAM=8:44860", "MAKE_TERMERR=/dev/pts/1", "XDG_SESSION_CLASS=user", "HOME=/home/enderice2", "QT_IM_MODULE=ibus", "TERM=xterm-256color", "IM_CONFIG_PHASE=1", "XDG_MENU_PREFIX=gnome-", "TERM_PROGRAM_VERSION=1.73.1", "DOTNET_ROOT=/usr/lib/dotnet/dotn"..., "GDMSESSION=ubuntu-xorg", "MAKELEVEL=5", "COLLECT_GCC=../../../../tools/cr"..., "COLLECT_LTO_WRAPPER=/media/ender"..., "COMPILER_PATH=/media/enderice2/S"..., "LIBRARY_PATH=/media/enderice2/SS"..., "COLLECT_GCC_OPTIONS='-shared' '-"...]) = 0
|
||||||
|
919709 execve("/media/enderice2/SSD250/Fennix/tools/cross/lib/gcc/amd64-elf/13.0.0/../../../../amd64-elf/bin/ld", ["/media/enderice2/SSD250/Fennix/t"..., "-plugin", "/media/enderice2/SSD250/Fennix/t"..., "-plugin-opt=/media/enderice2/SSD"..., "-plugin-opt=-fresolution=/tmp/cc"..., "-plugin-opt=-pass-through=-lgcc", "-plugin-opt=-pass-through=-lgcc", "--sysroot=../../../out/system/", "-o", "init.elf", "../../../out/system/lib/crtbegin"..., "-L/media/enderice2/SSD250/Fennix"..., "-L/media/enderice2/SSD250/Fennix"..., "-L../../../out/system/lib", "-Map", "file.map", "./printf.o", "./ssp.o", "./init.o", "-lgcc", "-lgcc", "../../../out/system/lib/crtend.o"], ["GDK_BACKEND=x11", "GNOME_SHELL_SESSION_MODE=ubuntu", "SSH_AGENT_LAUNCHER=gnome-keyring", "GJS_DEBUG_OUTPUT=stderr", "MANDATORY_PATH=/usr/share/gconf/"..., "WINDOWPATH=2", "LIBVIRT_DEFAULT_URI=qemu:///syst"..., "GTK3_MODULES=xapp-gtk3-module", "QT_ACCESSIBILITY=1", "VSCODE_GIT_ASKPASS_EXTRA_ARGS=--"..., "PWD=/media/enderice2/SSD250/Fenn"..., "XDG_DATA_DIRS=/usr/share/ubuntu-"..., "LANG=ro_RO.UTF-8", "XAUTHORITY=/run/user/1000/gdm/Xa"..., "MAKEFLAGS=s", "LESSOPEN=| /usr/bin/lesspipe %s", "MFLAGS=-s", "SSH_AUTH_SOCK=/run/user/1000/key"..., "XDG_CONFIG_DIRS=/etc/xdg/xdg-ubu"..., "GIT_ASKPASS=/usr/share/code/reso"..., "XDG_SESSION_DESKTOP=ubuntu-xorg", "ENABLE_VKBASALT=1", "XDG_SESSION_TYPE=x11", "SESSION_MANAGER=local/enderice2-"..., "CHROME_DESKTOP=code-url-handler."..., "DBUS_SESSION_BUS_ADDRESS=unix:pa"..., "GNOME_DESKTOP_SESSION_ID=this-is"..., "SHELL=/bin/bash", "XMODIFIERS=@im=ibus", "DOTNET_BUNDLE_EXTRACT_BASE_DIR=/"..., "GJS_DEBUG_TOPICS=JS ERROR;JS LOG", "SHLVL=1", "PATH=/home/enderice2/.local/bin:"..., "VSCODE_GIT_IPC_HANDLE=/run/user/"..., "VSCODE_GIT_ASKPASS_NODE=/usr/sha"..., "VSCODE_GIT_ASKPASS_MAIN=/usr/sha"..., "INVOCATION_ID=ec0726044e7e4279b4"..., "USERNAME=enderice2", "TERM_PROGRAM=vscode", "LESSCLOSE=/usr/bin/lesspipe %s %"..., "XDG_CURRENT_DESKTOP=Unity", "LS_COLORS=rs=0:di=01;34:ln=01;36"..., "DESKTOP_SESSION=ubuntu-xorg", "ORIGINAL_XDG_CURRENT_DESKTOP=ubu"..., "LOGNAME=enderice2", "GIO_LAUNCHED_DESKTOP_FILE=/usr/s"..., "SYSTEMD_EXEC_PID=3170", "DISPLAY=:0", "GTK_MODULES=gail:atk-bridge:appm"..., "USER=enderice2", "DEFAULTS_PATH=/usr/share/gconf/u"..., "QT_FONT_DPI=96", "MANAGERPID=2831", "GIO_LAUNCHED_DESKTOP_FILE_PID=10"..., "QT_STYLE_OVERRIDE=kvantum", "_=/usr/bin/make", "MAKE_TERMOUT=/dev/pts/1", "XDG_RUNTIME_DIR=/run/user/1000", "GPG_AGENT_INFO=/run/user/1000/gn"..., "COLORTERM=truecolor", "JOURNAL_STREAM=8:44860", "MAKE_TERMERR=/dev/pts/1", "XDG_SESSION_CLASS=user", "HOME=/home/enderice2", "QT_IM_MODULE=ibus", "TERM=xterm-256color", "IM_CONFIG_PHASE=1", "XDG_MENU_PREFIX=gnome-", "TERM_PROGRAM_VERSION=1.73.1", "DOTNET_ROOT=/usr/lib/dotnet/dotn"..., "GDMSESSION=ubuntu-xorg", "MAKELEVEL=5", "COLLECT_GCC=../../../../tools/cr"..., "COLLECT_LTO_WRAPPER=/media/ender"..., "COMPILER_PATH=/media/enderice2/S"..., "LIBRARY_PATH=/media/enderice2/SS"..., "COLLECT_GCC_OPTIONS='-shared' '-"..., "COLLECT_NO_DEMANGLE=1"]) = 0
|
||||||
|
919709 +++ exited with 0 +++
|
||||||
|
919708 --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=919709, si_uid=1000, si_status=0, si_utime=0, si_stime=0} ---
|
||||||
|
919708 +++ exited with 0 +++
|
||||||
|
919707 --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=919708, si_uid=1000, si_status=0, si_utime=0, si_stime=0} ---
|
||||||
|
919707 +++ exited with 0 +++
|
@ -1,12 +1,8 @@
|
|||||||
build:
|
build:
|
||||||
cp include/* ../out/system/include
|
cp include/* ../out/system/include
|
||||||
make --quiet -C runtime build
|
make --quiet -C runtime build
|
||||||
make --quiet -C libgcc build
|
|
||||||
make --quiet -C libssp build
|
|
||||||
make --quiet -C src build
|
make --quiet -C src build
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
make --quiet -C runtime clean
|
make -C runtime clean
|
||||||
make --quiet -C libgcc clean
|
make -C src clean
|
||||||
make --quiet -C libssp clean
|
|
||||||
make --quiet -C src clean
|
|
||||||
|
@ -2,12 +2,13 @@
|
|||||||
include ../../../Makefile.conf
|
include ../../../Makefile.conf
|
||||||
|
|
||||||
CC = ../../../$(COMPILER_PATH)/$(COMPILER_ARCH)gcc
|
CC = ../../../$(COMPILER_PATH)/$(COMPILER_ARCH)gcc
|
||||||
|
AS = ../../../$(COMPILER_PATH)/$(COMPILER_ARCH)as
|
||||||
NASM = /usr/bin/nasm
|
NASM = /usr/bin/nasm
|
||||||
|
|
||||||
C_SOURCES = $(shell find ./ -type f -name '*.c')
|
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')
|
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}
|
||||||
|
|
||||||
ifeq ($(OSARCH), amd64)
|
ifeq ($(OSARCH), amd64)
|
||||||
ASM_ARCH := elf64
|
ASM_ARCH := elf64
|
||||||
@ -19,13 +20,13 @@ build: $(OBJ)
|
|||||||
mv $^ ../../out/system/lib/
|
mv $^ ../../out/system/lib/
|
||||||
|
|
||||||
%.o: %.c
|
%.o: %.c
|
||||||
$(CC) -nostdlib -std=c17 -c $< -o $@
|
$(CC) -nostdlib -mno-red-zone -std=c17 -c $< -o $@
|
||||||
|
|
||||||
%.o: %.asm
|
%.o: %.asm
|
||||||
$(NASM) $< -f $(ASM_ARCH) -o $@
|
$(NASM) $< -f $(ASM_ARCH) -o $@
|
||||||
|
|
||||||
%.bin: %.s
|
%.o: %.S
|
||||||
$(NASM) $< -f $(ASM_ARCH) -o $@
|
$(AS) -c $< -o $@
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
|
|
||||||
|
23
libc/runtime/crt0.S
Normal file
23
libc/runtime/crt0.S
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# https://wiki.osdev.org/Creating_a_C_Library
|
||||||
|
.section .text
|
||||||
|
|
||||||
|
.global _start
|
||||||
|
_start:
|
||||||
|
movq $0, %rbp
|
||||||
|
pushq %rbp
|
||||||
|
pushq %rbp
|
||||||
|
movq %rsp, %rbp
|
||||||
|
|
||||||
|
pushq %rsi
|
||||||
|
pushq %rdi
|
||||||
|
|
||||||
|
call __libc_init
|
||||||
|
call _init
|
||||||
|
|
||||||
|
popq %rdi
|
||||||
|
popq %rsi
|
||||||
|
|
||||||
|
call main
|
||||||
|
movl %eax, %edi
|
||||||
|
call _exit
|
||||||
|
.size _start, . - _start
|
@ -1,15 +0,0 @@
|
|||||||
int main(int argc, char *argv[], char *envp[]);
|
|
||||||
|
|
||||||
void _start()
|
|
||||||
{
|
|
||||||
register int argc __asm__("rdi");
|
|
||||||
register char **argv __asm__("rsi");
|
|
||||||
register char **envp __asm__("rdx");
|
|
||||||
int mainret = main((int)argc, (char **)argv, (char **)envp);
|
|
||||||
__asm__ __volatile__("syscall"
|
|
||||||
:
|
|
||||||
: "a"(0), "D"(mainret)
|
|
||||||
: "rcx", "r11", "memory");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// C stuff
|
|
23
libc/runtime/crt1.S
Normal file
23
libc/runtime/crt1.S
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# https://wiki.osdev.org/Creating_a_C_Library
|
||||||
|
.section .text
|
||||||
|
|
||||||
|
.global _start
|
||||||
|
_start:
|
||||||
|
movq $0, %rbp
|
||||||
|
pushq %rbp
|
||||||
|
pushq %rbp
|
||||||
|
movq %rsp, %rbp
|
||||||
|
|
||||||
|
pushq %rsi
|
||||||
|
pushq %rdi
|
||||||
|
|
||||||
|
call __libc_init
|
||||||
|
call _init
|
||||||
|
|
||||||
|
popq %rdi
|
||||||
|
popq %rsi
|
||||||
|
|
||||||
|
call main
|
||||||
|
movl %eax, %edi
|
||||||
|
call _exit
|
||||||
|
.size _start, . - _start
|
@ -1,15 +0,0 @@
|
|||||||
int main(int argc, char *argv[], char *envp[]);
|
|
||||||
|
|
||||||
void _start()
|
|
||||||
{
|
|
||||||
register int argc __asm__("rdi");
|
|
||||||
register char **argv __asm__("rsi");
|
|
||||||
register char **envp __asm__("rdx");
|
|
||||||
int mainret = main((int)argc, (char **)argv, (char **)envp);
|
|
||||||
__asm__ __volatile__("syscall"
|
|
||||||
:
|
|
||||||
: "a"(0), "D"(mainret)
|
|
||||||
: "rcx", "r11", "memory");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// C++ stuff
|
|
14
libc/runtime/crtbegin.S
Normal file
14
libc/runtime/crtbegin.S
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
# I WILL PLACE HERE THE crti.o BECAUSE GCC REFUSE TO LINK IT AND I DON'T KNOW WHY
|
||||||
|
.section .init
|
||||||
|
.global _init
|
||||||
|
.type _init, @function
|
||||||
|
_init:
|
||||||
|
push %rbp
|
||||||
|
movq %rsp, %rbp
|
||||||
|
|
||||||
|
.section .fini
|
||||||
|
.global _fini
|
||||||
|
.type _fini, @function
|
||||||
|
_fini:
|
||||||
|
push %rbp
|
||||||
|
movq %rsp, %rbp
|
@ -1 +0,0 @@
|
|||||||
// C++ constructor/destructor stuff
|
|
8
libc/runtime/crtend.S
Normal file
8
libc/runtime/crtend.S
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
# I WILL PLACE HERE THE crtn.o BECAUSE GCC REFUSE TO LINK IT AND I DON'T KNOW WHY
|
||||||
|
.section .init
|
||||||
|
popq %rbp
|
||||||
|
ret
|
||||||
|
|
||||||
|
.section .fini
|
||||||
|
popq %rbp
|
||||||
|
ret
|
@ -1 +0,0 @@
|
|||||||
// C++ constructor/destructor stuff
|
|
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/
|
OUTPUT_DIR=../../out/system/lib/
|
||||||
|
|
||||||
CC = ../../../$(COMPILER_PATH)/$(COMPILER_ARCH)gcc
|
CC = ../../../$(COMPILER_PATH)/$(COMPILER_ARCH)gcc
|
||||||
|
AS = ../../../$(COMPILER_PATH)/$(COMPILER_ARCH)as
|
||||||
AR = ../../../$(COMPILER_PATH)/$(COMPILER_ARCH)ar
|
AR = ../../../$(COMPILER_PATH)/$(COMPILER_ARCH)ar
|
||||||
NASM = /usr/bin/nasm
|
NASM = /usr/bin/nasm
|
||||||
|
|
||||||
C_SOURCES = $(shell find ./ -type f -name '*.c')
|
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')
|
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
|
INCLUDE_DIR = ../include
|
||||||
|
|
||||||
@ -24,7 +25,7 @@ else ifeq ($(OSARCH), i686)
|
|||||||
ASM_ARCH := elf32
|
ASM_ARCH := elf32
|
||||||
endif
|
endif
|
||||||
|
|
||||||
CFLAGS := -fPIC -I$(INCLUDE_DIR)
|
CFLAGS := -fPIC -mno-red-zone -I$(INCLUDE_DIR)
|
||||||
|
|
||||||
build: $(OBJECT_NAME)
|
build: $(OBJECT_NAME)
|
||||||
|
|
||||||
@ -37,6 +38,9 @@ $(OBJECT_NAME): $(OBJ)
|
|||||||
%.o: %.cpp $(HEADERS) $(HEADERS2)
|
%.o: %.cpp $(HEADERS) $(HEADERS2)
|
||||||
$(CC) $(CFLAGS) -std=c++20 -c $< -o $@
|
$(CC) $(CFLAGS) -std=c++20 -c $< -o $@
|
||||||
|
|
||||||
|
%.o: %.S
|
||||||
|
$(AS) -c $< -o $@
|
||||||
|
|
||||||
%.o: %.asm
|
%.o: %.asm
|
||||||
$(NASM) $< -f $(ASM_ARCH) -o $@
|
$(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");
|
||||||
|
}
|
8
libs/Makefile
Normal file
8
libs/Makefile
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
build:
|
||||||
|
cp include/* ../out/system/include
|
||||||
|
make --quiet -C libgcc build
|
||||||
|
make --quiet -C libssp build
|
||||||
|
|
||||||
|
clean:
|
||||||
|
make -C libgcc clean
|
||||||
|
make -C libssp clean
|
6
libs/include/ssp.h
Normal file
6
libs/include/ssp.h
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#ifndef __FENNIX_LIBS_SSP_H__
|
||||||
|
#define __FENNIX_LIBS_SSP_H__
|
||||||
|
|
||||||
|
#include <types.h>
|
||||||
|
|
||||||
|
#endif // !__FENNIX_LIBS_SSP_H__
|
44
libs/libgcc/Makefile
Normal file
44
libs/libgcc/Makefile
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
# Config file
|
||||||
|
include ../../../Makefile.conf
|
||||||
|
|
||||||
|
NAME=gcc
|
||||||
|
|
||||||
|
OBJECT_NAME=lib$(NAME).a
|
||||||
|
|
||||||
|
OUTPUT_DIR=../../out/system/lib/
|
||||||
|
|
||||||
|
CC = ../../../$(COMPILER_PATH)/$(COMPILER_ARCH)gcc
|
||||||
|
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')
|
||||||
|
ASM_SOURCES = $(shell find ./ -type f -name '*.asm')
|
||||||
|
OBJ = ${C_SOURCES:.c=.o} ${ASM_SOURCES:.asm=.o} ${S_SOURCES:.s=.o}
|
||||||
|
|
||||||
|
INCLUDE_DIR = ../include
|
||||||
|
|
||||||
|
ifeq ($(OSARCH), amd64)
|
||||||
|
ASM_ARCH := elf64
|
||||||
|
else ifeq ($(OSARCH), i686)
|
||||||
|
ASM_ARCH := elf32
|
||||||
|
endif
|
||||||
|
|
||||||
|
CFLAGS := -fPIC -I$(INCLUDE_DIR)
|
||||||
|
|
||||||
|
build: $(OBJECT_NAME)
|
||||||
|
|
||||||
|
$(OBJECT_NAME): $(OBJ)
|
||||||
|
$(AR) rcs $(OUTPUT_DIR)$@ $(OBJ)
|
||||||
|
|
||||||
|
%.o: %.c $(HEADERS) $(HEADERS2)
|
||||||
|
$(CC) $(CFLAGS) -std=c17 -c $< -o $@
|
||||||
|
|
||||||
|
%.o: %.cpp $(HEADERS) $(HEADERS2)
|
||||||
|
$(CC) $(CFLAGS) -std=c++20 -c $< -o $@
|
||||||
|
|
||||||
|
%.o: %.asm
|
||||||
|
$(NASM) $< -f $(ASM_ARCH) -o $@
|
||||||
|
|
||||||
|
clean:
|
||||||
|
|
44
libs/libssp/Makefile
Normal file
44
libs/libssp/Makefile
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
# Config file
|
||||||
|
include ../../../Makefile.conf
|
||||||
|
|
||||||
|
NAME=ssp
|
||||||
|
|
||||||
|
OBJECT_NAME=lib$(NAME).a
|
||||||
|
|
||||||
|
OUTPUT_DIR=../../out/system/lib/
|
||||||
|
|
||||||
|
CC = ../../../$(COMPILER_PATH)/$(COMPILER_ARCH)gcc
|
||||||
|
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')
|
||||||
|
ASM_SOURCES = $(shell find ./ -type f -name '*.asm')
|
||||||
|
OBJ = ${C_SOURCES:.c=.o} ${ASM_SOURCES:.asm=.o} ${S_SOURCES:.s=.o}
|
||||||
|
|
||||||
|
INCLUDE_DIR = ../include
|
||||||
|
|
||||||
|
ifeq ($(OSARCH), amd64)
|
||||||
|
ASM_ARCH := elf64
|
||||||
|
else ifeq ($(OSARCH), i686)
|
||||||
|
ASM_ARCH := elf32
|
||||||
|
endif
|
||||||
|
|
||||||
|
CFLAGS := -fPIC -I$(INCLUDE_DIR)
|
||||||
|
|
||||||
|
build: $(OBJECT_NAME)
|
||||||
|
|
||||||
|
$(OBJECT_NAME): $(OBJ)
|
||||||
|
$(AR) rcs $(OUTPUT_DIR)$@ $(OBJ)
|
||||||
|
|
||||||
|
%.o: %.c $(HEADERS) $(HEADERS2)
|
||||||
|
$(CC) $(CFLAGS) -std=c17 -c $< -o $@
|
||||||
|
|
||||||
|
%.o: %.cpp $(HEADERS) $(HEADERS2)
|
||||||
|
$(CC) $(CFLAGS) -std=c++20 -c $< -o $@
|
||||||
|
|
||||||
|
%.o: %.asm
|
||||||
|
$(NASM) $< -f $(ASM_ARCH) -o $@
|
||||||
|
|
||||||
|
clean:
|
||||||
|
|
@ -16,22 +16,18 @@ static void __attribute__((constructor, no_stack_protector)) __guard_setup(void)
|
|||||||
|
|
||||||
__attribute__((weak, noreturn, no_stack_protector)) void __stack_chk_fail(void)
|
__attribute__((weak, noreturn, no_stack_protector)) void __stack_chk_fail(void)
|
||||||
{
|
{
|
||||||
// const char *msg = "Stack smashing detected";
|
const char *msg = "Stack smashing detected";
|
||||||
__asm__ __volatile__("syscall"
|
__asm__ __volatile__("syscall"
|
||||||
:
|
:
|
||||||
: "a"(0), "D"(0x57AC)
|
: "a"(0), "D"(0x57AC)
|
||||||
: "rcx", "r11", "memory");
|
: "rcx", "r11", "memory");
|
||||||
while (1)
|
|
||||||
;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
__attribute__((weak, noreturn, no_stack_protector)) void __chk_fail(void)
|
__attribute__((weak, noreturn, no_stack_protector)) void __chk_fail(void)
|
||||||
{
|
{
|
||||||
// const char *msg = "Buffer overflow detected";
|
const char *msg = "Buffer overflow detected";
|
||||||
__asm__ __volatile__("syscall"
|
__asm__ __volatile__("syscall"
|
||||||
:
|
:
|
||||||
: "a"(0), "D"(0xF700)
|
: "a"(0), "D"(0xF700)
|
||||||
: "rcx", "r11", "memory");
|
: "rcx", "r11", "memory");
|
||||||
while (1)
|
|
||||||
;
|
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user