| OUTPUT_FORMAT(elf32-i386) | |
| OUTPUT_ARCH(i386) | |
| ENTRY(entry) | |
| /* Initial load address | |
| * To be loaded by GRUB, this must be >= 1MB | |
| */ | |
| BASE_ADDR = 0x100000; | |
| /* 16KB heap and stack */ | |
| HEAP_SIZE = 16384; | |
| STACK_SIZE = 16384; | |
| SECTIONS | |
| { | |
| . = BASE_ADDR; | |
| /* Put Multiboot header near beginning of file, if any. */ | |
| .hdr : { *(.hdr) *(.hdr.*) } | |
| /* Start of the program. | |
| * Now the version string is in the note, we must include it | |
| * in the program. Otherwise we lose the string after relocation. */ | |
| . = ALIGN(16); | |
| _start = .; | |
| /* Putting ELF notes near beginning of file might help bootloaders. | |
| * We discard .note sections other than .note.ELFBoot, | |
| * because some versions of GCC generates useless ones. */ | |
| .note : { *(.note.ELFBoot) } | |
| /* Normal sections */ | |
| .text : { *(.text) *(.text.*) } | |
| .rodata : { | |
| . = ALIGN(4); | |
| sound_drivers_start = .; | |
| *(.rodata.sound_drivers) | |
| sound_drivers_end = .; | |
| *(.rodata) | |
| *(.rodata.*) | |
| } | |
| .data : { *(.data) *(.data.*) } | |
| .bss : { | |
| *(.bss) | |
| *(.bss.*) | |
| *(COMMON) | |
| /* Put heap and stack here, so they are included in PT_LOAD segment | |
| * and the bootloader is aware of it. */ | |
| . = ALIGN(16); | |
| _heap = .; | |
| . += HEAP_SIZE; | |
| . = ALIGN(16); | |
| _eheap = .; | |
| _stack = .; | |
| . += STACK_SIZE; | |
| . = ALIGN(16); | |
| _estack = .; | |
| } | |
| .initctx : { | |
| /* Initial contents of stack. This MUST BE just after the stack. */ | |
| *(.initctx) | |
| } | |
| _end = .; | |
| /DISCARD/ : { *(.comment) *(.note) } | |
| } |