blob: 8976c7af03be208289fedbef7c93e20c381c4d84 [file] [log] [blame]
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) }
}