OUTPUT_FORMAT(elf64-x86-64) ENTRY(_stage0) PHDRS { headers PT_PHDR PHDRS; text PT_LOAD FILEHDR PHDRS; data PT_LOAD; } SECTIONS { . = 0x0; . = 0x500; . = ALIGN(4096); _p4 = .; . += 4096; _p3 = .; . += 4096; _p2 = .; . += 4096; _p1 = .; . += 4096; _ws = .; . += 4096; . = 0x7c00; stack_top = .; boot_start = .; boot : { boot_stage0_start = .; *(boot.stage0) boot_stage0_end = .; boot_stage1_start = .; *(boot.stage1) boot_stage1_end = .; . = ALIGN(512); } .text : { KEEP (*(.text)) *(.text.*) } :text .data : { KEEP (*(.data)) *(.data.*) . = ALIGN(16); KEEP (*(.exception_array)) } :data .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } :data .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) PROVIDE_HIDDEN (__fini_array_end = .); } :data .test_array : { PROVIDE_HIDDEN (__test_array_start = .); KEEP (*(.test_array)) PROVIDE_HIDDEN (__test_array_end = .); } :data .bss : { KEEP (*(.bss)) *(.bss.*) } :data boot_end = .; }