ENTRY(loader) /* ENTRY(kmain) */ SECTIONS { /* 0xffffffff80000000 is the kernel virtual memory load address */ . = 0xffffffff80000000; .text : AT(ADDR(.text) - 0xffffffff80000000) { _code = .; *(.text) *(.rodata*) . = ALIGN(4096); } .data : AT(ADDR(.data) - 0xffffffff80000000) { _data = .; *(.data) . = ALIGN(4096); } .eh_frame : AT(ADDR(.eh_frame) - 0xffffffff80000000) { _ehframe = .; *(.eh_frame) . = ALIGN(4096); } .bss : AT(ADDR(.bss) - 0xffffffff80000000) { _bss = .; *(.bss) /* * You usually need to include generated COMMON symbols * under kernel BSS section or use gcc's -fno-common */ *(COMMON) . = ALIGN(4096); } _end = .; /DISCARD/ : { *(.comment) } }