INCLUDE memory.ld ENTRY(_start) /*Pass this symbols via CMake*/ MAGIC = 0x1BADB002; FLAGS = 0; CHECKSUM = -(MAGIC + FLAGS); SECTIONS { /* It's a raw solution. */ /* Automatic generation of filling .multiboot section needs. */ .multiboot ALIGN(START_ADDR, CONSTANT(MAXPAGESIZE)) : ALIGN(CONSTANT(MAXPAGESIZE)) { LONG(MAGIC); LONG(FLAGS); LONG(CHECKSUM) } > REGION_MULTIBOOT .text ALIGN(CONSTANT(MAXPAGESIZE)) : ALIGN(CONSTANT(MAXPAGESIZE)) { _text = .; *(.text*) _etext = .; } > REGION_TEXT .rodata ALIGN(CONSTANT(MAXPAGESIZE)): ALIGN(CONSTANT(MAXPAGESIZE)) { _rodata = .; *(.rodata*) _erodata = .; } > REGION_RODATA .data : { _data = .; *(.data) _edata = .; } > REGION_DATA .bss : { _bss = .; *(.bss) *(COMMON) _ebss = .; } > REGION_BSS .stack ALIGN(CONSTANT(MAXPAGESIZE)) : ALIGN(CONSTANT(MAXPAGESIZE)) { _stack = ABSOLUTE(.); . += 4 * CONSTANT(MAXPAGESIZE); _estack = ABSOLUTE(.); } > REGION_DATA .kheap ALIGN(CONSTANT(MAXPAGESIZE)) : ALIGN(CONSTANT(MAXPAGESIZE)) { _startKheap = ABSOLUTE(.); . += CONSTANT(MAXPAGESIZE); _endKheap = ABSOLUTE(.); } > REGION_DATA .eh_frame : { _eh_frame = .; *(.eh_frame) _e_eh_frame = .; } > REGION_COMMON .ctors : { SORT_BY_NAME(CONSTRUCTORS) } > REGION_COMMON }