mirror of
https://github.com/Fennix-Project/Userspace.git
synced 2025-05-27 15:04:25 +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/include
|
||||
make --quiet -C libc build
|
||||
make --quiet -C libs build
|
||||
make --quiet -C apps build
|
||||
|
||||
prepare:
|
||||
@ -11,5 +12,6 @@ prepare:
|
||||
|
||||
clean:
|
||||
rm -rf out
|
||||
make --quiet -C libc clean
|
||||
make --quiet -C apps clean
|
||||
make -C libc clean
|
||||
make -C libs clean
|
||||
make -C apps clean
|
||||
|
@ -1,7 +1,9 @@
|
||||
build:
|
||||
make --quiet -C system build
|
||||
make --quiet -C base build
|
||||
make --quiet -C user build
|
||||
|
||||
clean:
|
||||
make --quiet -C system clean
|
||||
make --quiet -C user clean
|
||||
make -C system 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
|
||||
|
||||
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)
|
||||
INCLUDE_DIR = ../../../out/system/include
|
||||
|
||||
LDFLAGS := -fPIC -Wl,-Map file.map
|
||||
LDFLAGS := -Wl,-Map file.map
|
||||
|
||||
WARNCFLAG = -Wall -Wextra -Wno-builtin-declaration-mismatch
|
||||
|
||||
@ -42,15 +42,15 @@ CFLAGS := \
|
||||
|
||||
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)
|
||||
|
||||
CFLAGS += -fPIC -march=i686
|
||||
CFLAGS += -march=i686
|
||||
|
||||
else ifeq ($(OSARCH), aarch64)
|
||||
|
||||
CFLAGS += -pipe -fPIC
|
||||
CFLAGS += -pipe
|
||||
|
||||
endif
|
||||
|
||||
@ -59,7 +59,7 @@ build: $(FILENAME)
|
||||
mv $(FILENAME) ../../../out/system/$(FILENAME)
|
||||
|
||||
$(FILENAME): $(OBJ)
|
||||
$(CC) $(LDFLAGS) $(SYSROOT) $(OBJ) -o $@
|
||||
$(CC) $(LDFLAGS) $(SYSROOT) $(OBJ) -lssp -o $@
|
||||
|
||||
%.o: %.c $(HEADERS)
|
||||
$(info Compiling $<)
|
||||
|
@ -58,16 +58,16 @@ static inline long syscall2(int sc, long arg1, long arg2)
|
||||
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[])
|
||||
{
|
||||
printf_("Hello World!\n");
|
||||
printf_("I have %d arguments\n", argc);
|
||||
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++)
|
||||
printf_("envp[%d] = %s\n", i, envp[i]);
|
||||
printf_("envp[%d] = (%p) %s\n", i, envp[i], envp[i]);
|
||||
Elf64_auxv_t *auxv;
|
||||
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:
|
||||
cp include/* ../out/system/include
|
||||
make --quiet -C runtime build
|
||||
make --quiet -C libgcc build
|
||||
make --quiet -C libssp build
|
||||
make --quiet -C src build
|
||||
|
||||
clean:
|
||||
make --quiet -C runtime clean
|
||||
make --quiet -C libgcc clean
|
||||
make --quiet -C libssp clean
|
||||
make --quiet -C src clean
|
||||
make -C runtime clean
|
||||
make -C src clean
|
||||
|
@ -2,12 +2,13 @@
|
||||
include ../../../Makefile.conf
|
||||
|
||||
CC = ../../../$(COMPILER_PATH)/$(COMPILER_ARCH)gcc
|
||||
AS = ../../../$(COMPILER_PATH)/$(COMPILER_ARCH)as
|
||||
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}
|
||||
|
||||
ifeq ($(OSARCH), amd64)
|
||||
ASM_ARCH := elf64
|
||||
@ -19,13 +20,13 @@ build: $(OBJ)
|
||||
mv $^ ../../out/system/lib/
|
||||
|
||||
%.o: %.c
|
||||
$(CC) -nostdlib -std=c17 -c $< -o $@
|
||||
$(CC) -nostdlib -mno-red-zone -std=c17 -c $< -o $@
|
||||
|
||||
%.o: %.asm
|
||||
$(NASM) $< -f $(ASM_ARCH) -o $@
|
||||
|
||||
%.bin: %.s
|
||||
$(NASM) $< -f $(ASM_ARCH) -o $@
|
||||
%.o: %.S
|
||||
$(AS) -c $< -o $@
|
||||
|
||||
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/
|
||||
|
||||
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");
|
||||
}
|
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)
|
||||
{
|
||||
// const char *msg = "Stack smashing detected";
|
||||
const char *msg = "Stack smashing detected";
|
||||
__asm__ __volatile__("syscall"
|
||||
:
|
||||
: "a"(0), "D"(0x57AC)
|
||||
: "rcx", "r11", "memory");
|
||||
while (1)
|
||||
;
|
||||
}
|
||||
|
||||
__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"
|
||||
:
|
||||
: "a"(0), "D"(0xF700)
|
||||
: "rcx", "r11", "memory");
|
||||
while (1)
|
||||
;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user