ENTRY(_start) OUTPUT_FORMAT(elf32-i386) VADDR_BASE = 0xc0000000; SECTIONS { /* * First put the multiboot header, as it is required to be put very early * early in the image or the bootloader won't recognize the file format. */ . = 0; _kernel_start = .; .multiboot : { *(.multiboot.header) *(.multiboot.text) } /* Begin putting sections at 1 MiB */ . = VADDR_BASE + 1M; .text ALIGN(4K) : AT(ADDR(.text) - VADDR_BASE) { *(.text*) } /* Read-only data. */ .rodata ALIGN(4K) : AT(ADDR(.rodata) - VADDR_BASE) { *(.rodata*) } /* Read-write data (initialized) */ .data ALIGN(4K) : AT(ADDR(.data) - VADDR_BASE) { begin_ctors = .; KEEP(*(.init_array)); /* global constructors */ end_ctors = .; begin_constinit = .; *(.constinit) end_constinit = .; *(.data) } /* Read-write data (uninitialized) and stack */ .bss ALIGN(4K) : AT(ADDR(.bss) - VADDR_BASE) { *(.pages) *(.bss) *(.stack) } _kernel_end = .; }