74 lines
1.4 KiB
Text
74 lines
1.4 KiB
Text
|
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) }
|
||
|
}
|