[kernel] Hide kernel symbols by default

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.
This commit is contained in:
Justin C. Miller
2023-01-29 19:36:20 -08:00
parent e2e1696b7e
commit 5ea5978ee8
17 changed files with 126 additions and 120 deletions

View File

@@ -2,7 +2,7 @@ MAGIC equ 'j6KERNEL' ; jsix kernel header magic number
section .header
align 8
global _kernel_header
global _kernel_header: data hidden
_kernel_header:
dq MAGIC ; Kernel header magic
dw 32 ; Kernel header length
@@ -16,8 +16,8 @@ _kernel_header:
section .text
align 16
global _kernel_start:function (_kernel_start.end - _kernel_start)
global _kernel_start.real
global _kernel_start: function hidden (_kernel_start.end - _kernel_start)
global _kernel_start.real: function hidden
_kernel_start:
push rbp ; Never executed, fake function prelude
mov rbp, rsp ; to calm down gdb
@@ -36,18 +36,18 @@ _kernel_start:
; the scheduler to take over
.end:
global bsp_idle:function (bsp_idle.end - bsp_idle)
global bsp_idle: function hidden (bsp_idle.end - bsp_idle)
bsp_idle:
hlt
jmp bsp_idle
.end:
global interrupts_enable
global interrupts_enable: function hidden
interrupts_enable:
sti
ret
global interrupts_disable
global interrupts_disable: function hidden
interrupts_disable:
cli
ret
@@ -57,5 +57,5 @@ align 0x100
idle_stack_begin:
resb 0x4000 ; 16KiB stack space
global idle_stack_end
global idle_stack_end: data hidden
idle_stack_end: