Toolchain

This commit is contained in:
Alex 2022-12-08 07:45:56 +02:00
parent 096564b586
commit 397d4f9c5e
Signed by untrusted user who does not match committer: enderice2
GPG Key ID: EACC3AD603BAB4DD
15 changed files with 25 additions and 206 deletions

View File

@ -5,11 +5,11 @@ 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
CC = ../../../../$(TC_COMPILER_PATH)/$(TC_COMPILER_ARCH)gcc
CPP = ../../../../$(TC_COMPILER_PATH)/$(TC_COMPILER_ARCH)g++
LD = ../../../../$(TC_COMPILER_PATH)/$(TC_COMPILER_ARCH)ld
AS = ../../../../$(TC_COMPILER_PATH)/$(TC_COMPILER_ARCH)as
OBJDUMP = ../../../../$(TC_COMPILER_PATH)/$(TC_COMPILER_ARCH)objdump
GIT_COMMIT = $(shell git rev-parse HEAD)
GIT_COMMIT_SHORT = $(shell git rev-parse --short HEAD)

View File

@ -5,11 +5,11 @@ FILENAME = init.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
CC = ../../../../$(TC_COMPILER_PATH)/$(TC_COMPILER_ARCH)gcc
CPP = ../../../../$(TC_COMPILER_PATH)/$(TC_COMPILER_ARCH)g++
LD = ../../../../$(TC_COMPILER_PATH)/$(TC_COMPILER_ARCH)ld
AS = ../../../../$(TC_COMPILER_PATH)/$(TC_COMPILER_ARCH)as
OBJDUMP = ../../../../$(TC_COMPILER_PATH)/$(TC_COMPILER_ARCH)objdump
GIT_COMMIT = $(shell git rev-parse HEAD)
GIT_COMMIT_SHORT = $(shell git rev-parse --short HEAD)

View File

@ -1,5 +1,5 @@
build:
cp include/* ../out/system/include
cp -r include/* ../out/system/include
make --quiet -C runtime build
make --quiet -C src build

View File

@ -1,44 +0,0 @@
# 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:

View File

View File

@ -1,44 +0,0 @@
# 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:

View File

@ -1,33 +0,0 @@
#ifndef STACK_CHK_GUARD_VALUE
#if UINTPTR_MAX == UINT32_MAX
#define STACK_CHK_GUARD_VALUE 0xDEAD57AC
#else
#define STACK_CHK_GUARD_VALUE 0xDEAD57AC00000000
#endif
#endif
__UINTPTR_TYPE__ __stack_chk_guard = 0;
static void __attribute__((constructor, no_stack_protector)) __guard_setup(void)
{
if (__stack_chk_guard == 0)
__stack_chk_guard = STACK_CHK_GUARD_VALUE;
}
__attribute__((weak, noreturn, no_stack_protector)) void __stack_chk_fail(void)
{
const char *msg = "Stack smashing detected";
__asm__ __volatile__("syscall"
:
: "a"(0), "D"(0x57AC)
: "rcx", "r11", "memory");
}
__attribute__((weak, noreturn, no_stack_protector)) void __chk_fail(void)
{
const char *msg = "Buffer overflow detected";
__asm__ __volatile__("syscall"
:
: "a"(0), "D"(0xF700)
: "rcx", "r11", "memory");
}

View File

@ -1,8 +1,8 @@
# Config file
include ../../../Makefile.conf
CC = ../../../$(COMPILER_PATH)/$(COMPILER_ARCH)gcc
AS = ../../../$(COMPILER_PATH)/$(COMPILER_ARCH)as
CC = ../../../$(TC_COMPILER_PATH)/$(TC_COMPILER_ARCH)gcc
AS = ../../../$(TC_COMPILER_PATH)/$(TC_COMPILER_ARCH)as
NASM = /usr/bin/nasm
C_SOURCES = $(shell find ./ -type f -name '*.c')
@ -16,8 +16,14 @@ else ifeq ($(OSARCH), i686)
ASM_ARCH := elf32
endif
CRTBEGIN_PATH = $(shell $(CC) -print-file-name=crtbegin.o)
CRTEND_PATH = $(shell $(CC) -print-file-name=crtend.o)
CRTI_PATH = $(shell $(CC) -print-file-name=crti.o)
CRTN_PATH = $(shell $(CC) -print-file-name=crtn.o)
build: $(OBJ)
mv $^ ../../out/system/lib/
cp $(CRTBEGIN_PATH) $(CRTEND_PATH) $(CRTI_PATH) $(CRTN_PATH) ../../out/system/lib/
%.o: %.c
$(CC) -nostdlib -mno-red-zone -std=c17 -c $< -o $@

View File

@ -1,14 +0,0 @@
# 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

View File

@ -1,8 +0,0 @@
# 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

View File

@ -1,13 +0,0 @@
.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

View File

@ -1,7 +0,0 @@
.section .init
popq %rbp
ret
.section .fini
popq %rbp
ret

View File

@ -7,38 +7,14 @@ 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
CC = ../../../$(TC_COMPILER_PATH)/$(TC_COMPILER_ARCH)gcc
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)
CRTBEGIN_PATH = $(shell $(CC) -print-file-name=libgcc.a)
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 $@
$(OBJECT_NAME):
cp $(CRTBEGIN_PATH) $(OUTPUT_DIR)
clean:

View File

View File

@ -7,8 +7,8 @@ OBJECT_NAME=lib$(NAME).a
OUTPUT_DIR=../../out/system/lib/
CC = ../../../$(COMPILER_PATH)/$(COMPILER_ARCH)gcc
AR = ../../../$(COMPILER_PATH)/$(COMPILER_ARCH)ar
CC = ../../../$(TC_COMPILER_PATH)/$(TC_COMPILER_ARCH)gcc
AR = ../../../$(TC_COMPILER_PATH)/$(TC_COMPILER_ARCH)ar
NASM = /usr/bin/nasm
C_SOURCES = $(shell find ./ -type f -name '*.c')