Using `-fvisibility=hidden` when building the kernel, and then `--discard-all` when stripping it, we shave almost 100KiB off of the resulting ELF file. Also dropped some unused symbols from the linker script, and rearranged the sections so that the file is able to be mapped directly into memory instead of having each section copied.
60 lines
1.1 KiB
YAML
60 lines
1.1 KiB
YAML
---
|
|
extends: base
|
|
|
|
variables:
|
|
asflags: [ "-I${source_root}/src/kernel/" ]
|
|
|
|
ccflags: [
|
|
"--target=x86_64-jsix-elf",
|
|
"-fno-stack-protector",
|
|
|
|
"-I${source_root}/external",
|
|
|
|
"-nostdinc",
|
|
"-nostdlib",
|
|
"-ffreestanding",
|
|
"-nodefaultlibs",
|
|
"-fno-builtin",
|
|
"-fno-plt",
|
|
|
|
"-mno-sse",
|
|
"-fno-omit-frame-pointer",
|
|
"-mno-red-zone",
|
|
"-mcmodel=kernel",
|
|
"-fvisibility=hidden",
|
|
"-fvisibility-inlines-hidden",
|
|
|
|
"-g3",
|
|
"-ggdb",
|
|
|
|
"-D__ELF__",
|
|
"-D__jsix__",
|
|
"-D__j6kernel",
|
|
"-U__linux",
|
|
"-U__linux__",
|
|
"-DPRINTF_ALIAS_STANDARD_FUNCTION_NAMES=1",
|
|
"-DPRINTF_INCLUDE_CONFIG_H=1",
|
|
|
|
"-isystem${build_root}/include/libc",
|
|
"-isystem${source_root}/sysroot/include",
|
|
"--sysroot='${source_root}/sysroot'" ]
|
|
|
|
|
|
cflags: [ '-nostdinc' ]
|
|
|
|
cxxflags: [
|
|
"-fno-exceptions",
|
|
"-fno-rtti",
|
|
"-nostdinc",
|
|
"-isystem${source_root}/sysroot/include/c++/v1" ]
|
|
|
|
ldflags: [
|
|
"-g",
|
|
"-m", "elf_x86_64",
|
|
"-nostdlib",
|
|
"-Bstatic",
|
|
"--no-eh-frame-hdr",
|
|
"-z", "norelro",
|
|
"-z", "separate-code" ]
|
|
|