| 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) } |
| } |