/* 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.*) } }