From d8b53a78fcb131235c1e83fe7d6600ab50560420 Mon Sep 17 00:00:00 2001 From: hachem Date: Thu, 10 Sep 2026 05:49:32 +0200 Subject: setup: initialize repo + limine as a bootloader --- boot/linker.ld | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 boot/linker.ld (limited to 'boot/linker.ld') diff --git a/boot/linker.ld b/boot/linker.ld new file mode 100644 index 0000000..e15ed10 --- /dev/null +++ b/boot/linker.ld @@ -0,0 +1,52 @@ +/* the higher half of the kernel link maps + * at the top 2 GiB is where Limine maps us. */ + +OUTPUT_FORMAT(elf64-x86-64) +ENTRY(_start) + +PHDRS +{ + limine_requests PT_LOAD; + text PT_LOAD; + rodata PT_LOAD; + data PT_LOAD; +} + +SECTIONS +{ + . = 0xffffffff80000000; + + /* The loader hunts for the magic numbers here + * these are referenced in `boot/` */ + .limine_requests : { + KEEP(*(.limine_requests_start)) + KEEP(*(.limine_requests)) + KEEP(*(.limine_requests_end)) + } :limine_requests + + . = ALIGN(CONSTANT(MAXPAGESIZE)); + .text : { + *(.text .text.*) + } :text + + . = ALIGN(CONSTANT(MAXPAGESIZE)); + .rodata : { + *(.rodata .rodata.*) + } :rodata + + . = ALIGN(CONSTANT(MAXPAGESIZE)); + .data : { + *(.data .data.*) + } :data + + .bss : { + *(.bss .bss.*) + *(COMMON) + } :data + + /* no unwind tables or note sections. */ + /DISCARD/ : { + *(.eh_frame*) + *(.note .note.*) + } +} -- cgit v1.3