mirror of
https://github.com/Fennix-Project/Userspace.git
synced 2025-05-28 07:24:25 +00:00
Toolchain
This commit is contained in:
parent
096564b586
commit
397d4f9c5e
@ -5,11 +5,11 @@ FILENAME = echo.elf
|
|||||||
|
|
||||||
SYSROOT = --sysroot=../../../out/system/
|
SYSROOT = --sysroot=../../../out/system/
|
||||||
|
|
||||||
CC = ../../../../$(COMPILER_PATH)/$(COMPILER_ARCH)gcc
|
CC = ../../../../$(TC_COMPILER_PATH)/$(TC_COMPILER_ARCH)gcc
|
||||||
CPP = ../../../../$(COMPILER_PATH)/$(COMPILER_ARCH)g++
|
CPP = ../../../../$(TC_COMPILER_PATH)/$(TC_COMPILER_ARCH)g++
|
||||||
LD = ../../../../$(COMPILER_PATH)/$(COMPILER_ARCH)ld
|
LD = ../../../../$(TC_COMPILER_PATH)/$(TC_COMPILER_ARCH)ld
|
||||||
AS = ../../../../$(COMPILER_PATH)/$(COMPILER_ARCH)as
|
AS = ../../../../$(TC_COMPILER_PATH)/$(TC_COMPILER_ARCH)as
|
||||||
OBJDUMP = ../../../../$(COMPILER_PATH)/$(COMPILER_ARCH)objdump
|
OBJDUMP = ../../../../$(TC_COMPILER_PATH)/$(TC_COMPILER_ARCH)objdump
|
||||||
|
|
||||||
GIT_COMMIT = $(shell git rev-parse HEAD)
|
GIT_COMMIT = $(shell git rev-parse HEAD)
|
||||||
GIT_COMMIT_SHORT = $(shell git rev-parse --short HEAD)
|
GIT_COMMIT_SHORT = $(shell git rev-parse --short HEAD)
|
||||||
|
@ -5,11 +5,11 @@ FILENAME = init.elf
|
|||||||
|
|
||||||
SYSROOT = --sysroot=../../../out/system/
|
SYSROOT = --sysroot=../../../out/system/
|
||||||
|
|
||||||
CC = ../../../../$(COMPILER_PATH)/$(COMPILER_ARCH)gcc
|
CC = ../../../../$(TC_COMPILER_PATH)/$(TC_COMPILER_ARCH)gcc
|
||||||
CPP = ../../../../$(COMPILER_PATH)/$(COMPILER_ARCH)g++
|
CPP = ../../../../$(TC_COMPILER_PATH)/$(TC_COMPILER_ARCH)g++
|
||||||
LD = ../../../../$(COMPILER_PATH)/$(COMPILER_ARCH)ld
|
LD = ../../../../$(TC_COMPILER_PATH)/$(TC_COMPILER_ARCH)ld
|
||||||
AS = ../../../../$(COMPILER_PATH)/$(COMPILER_ARCH)as
|
AS = ../../../../$(TC_COMPILER_PATH)/$(TC_COMPILER_ARCH)as
|
||||||
OBJDUMP = ../../../../$(COMPILER_PATH)/$(COMPILER_ARCH)objdump
|
OBJDUMP = ../../../../$(TC_COMPILER_PATH)/$(TC_COMPILER_ARCH)objdump
|
||||||
|
|
||||||
GIT_COMMIT = $(shell git rev-parse HEAD)
|
GIT_COMMIT = $(shell git rev-parse HEAD)
|
||||||
GIT_COMMIT_SHORT = $(shell git rev-parse --short HEAD)
|
GIT_COMMIT_SHORT = $(shell git rev-parse --short HEAD)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
build:
|
build:
|
||||||
cp include/* ../out/system/include
|
cp -r include/* ../out/system/include
|
||||||
make --quiet -C runtime build
|
make --quiet -C runtime build
|
||||||
make --quiet -C src build
|
make --quiet -C src build
|
||||||
|
|
||||||
|
@ -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:
|
|
||||||
|
|
@ -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:
|
|
||||||
|
|
@ -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");
|
|
||||||
}
|
|
@ -1,8 +1,8 @@
|
|||||||
# Config file
|
# Config file
|
||||||
include ../../../Makefile.conf
|
include ../../../Makefile.conf
|
||||||
|
|
||||||
CC = ../../../$(COMPILER_PATH)/$(COMPILER_ARCH)gcc
|
CC = ../../../$(TC_COMPILER_PATH)/$(TC_COMPILER_ARCH)gcc
|
||||||
AS = ../../../$(COMPILER_PATH)/$(COMPILER_ARCH)as
|
AS = ../../../$(TC_COMPILER_PATH)/$(TC_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')
|
||||||
@ -16,8 +16,14 @@ else ifeq ($(OSARCH), i686)
|
|||||||
ASM_ARCH := elf32
|
ASM_ARCH := elf32
|
||||||
endif
|
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)
|
build: $(OBJ)
|
||||||
mv $^ ../../out/system/lib/
|
mv $^ ../../out/system/lib/
|
||||||
|
cp $(CRTBEGIN_PATH) $(CRTEND_PATH) $(CRTI_PATH) $(CRTN_PATH) ../../out/system/lib/
|
||||||
|
|
||||||
%.o: %.c
|
%.o: %.c
|
||||||
$(CC) -nostdlib -mno-red-zone -std=c17 -c $< -o $@
|
$(CC) -nostdlib -mno-red-zone -std=c17 -c $< -o $@
|
||||||
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -1,7 +0,0 @@
|
|||||||
.section .init
|
|
||||||
popq %rbp
|
|
||||||
ret
|
|
||||||
|
|
||||||
.section .fini
|
|
||||||
popq %rbp
|
|
||||||
ret
|
|
@ -7,38 +7,14 @@ OBJECT_NAME=lib$(NAME).a
|
|||||||
|
|
||||||
OUTPUT_DIR=../../out/system/lib/
|
OUTPUT_DIR=../../out/system/lib/
|
||||||
|
|
||||||
CC = ../../../$(COMPILER_PATH)/$(COMPILER_ARCH)gcc
|
CC = ../../../$(TC_COMPILER_PATH)/$(TC_COMPILER_ARCH)gcc
|
||||||
AR = ../../../$(COMPILER_PATH)/$(COMPILER_ARCH)ar
|
|
||||||
NASM = /usr/bin/nasm
|
|
||||||
|
|
||||||
C_SOURCES = $(shell find ./ -type f -name '*.c')
|
CRTBEGIN_PATH = $(shell $(CC) -print-file-name=libgcc.a)
|
||||||
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)
|
build: $(OBJECT_NAME)
|
||||||
|
|
||||||
$(OBJECT_NAME): $(OBJ)
|
$(OBJECT_NAME):
|
||||||
$(AR) rcs $(OUTPUT_DIR)$@ $(OBJ)
|
cp $(CRTBEGIN_PATH) $(OUTPUT_DIR)
|
||||||
|
|
||||||
%.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:
|
clean:
|
||||||
|
|
||||||
|
@ -7,8 +7,8 @@ OBJECT_NAME=lib$(NAME).a
|
|||||||
|
|
||||||
OUTPUT_DIR=../../out/system/lib/
|
OUTPUT_DIR=../../out/system/lib/
|
||||||
|
|
||||||
CC = ../../../$(COMPILER_PATH)/$(COMPILER_ARCH)gcc
|
CC = ../../../$(TC_COMPILER_PATH)/$(TC_COMPILER_ARCH)gcc
|
||||||
AR = ../../../$(COMPILER_PATH)/$(COMPILER_ARCH)ar
|
AR = ../../../$(TC_COMPILER_PATH)/$(TC_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')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user