~kernel/linker.ld
.ld
Linker Script
(text/none)
OUTPUT_FORMAT(elf32-i386)
ENTRY(_start)
SECTIONS
{
	/* The kernel begins at the 1MB physical mark. */
	. = 0x00100000;

	.text ALIGN(4k) : AT(ADDR(.text))
	{
		*(.entry)
		*(.text .text.*)
	}

	.rodata ALIGN(4k) : AT(ADDR(.rodata))
	{
		*(.rodata .rodata.*)
	}

	.data ALIGN(4k) : AT(ADDR(.data))
	{
		*(.data .data.*)
	}
	
	.magic ALIGN(4k) : AT(ADDR(.magic))
	{
	  *(.magic .magic.*)
	}

	/* Not actually *in* the image. */
	.bss ALIGN(4k) : AT(ADDR(.bss))
	{
		PROVIDE(kernelBssBlockStart = .);
		*(COMMON)
		*(.bss .bss.*)
		PROVIDE(kernelBssBlockEnd = .);
	}

  .modules ALIGN(4k) : AT(ADDR(.modules))
  {
    PROVIDE(__modules_start = .);
    *(.modules*)
    PROVIDE(__modules_end = .);
  }

  /DISCARD/ : { *(.eh_frame*) }
}