ENTRY(start)
|
|
|
|
SECTIONS {
|
|
. = 1M; /* load the kernel at 1MiB above 0x0 */
|
|
|
|
/* Merged section for both the multiboot header and .rodata,
|
|
so we don't waste a page on the multiboot header */
|
|
.rodata : {
|
|
/* ensure the multiboot header is at the start of the binary */
|
|
KEEP(*(.multiboot_header))
|
|
|
|
/* ensure small fragments in .rodata and .rel.ro are linked together */
|
|
*(.rodata .rodata.*)
|
|
|
|
. = ALIGN(4K);
|
|
}
|
|
|
|
.text : {
|
|
/* Kernel code */
|
|
*(.text .text.*) /* .text.* ensures that all small .text fragments are linked together */
|
|
. = ALIGN(4K);
|
|
}
|
|
|
|
.data : {
|
|
*(.data .data.*)
|
|
. = ALIGN(4K);
|
|
}
|
|
|
|
.bss : {
|
|
*(.bss .bss.*)
|
|
. = ALIGN(4K);
|
|
}
|
|
|
|
.got : {
|
|
*(.got)
|
|
. = ALIGN(4K);
|
|
}
|
|
|
|
.got.plt : {
|
|
*(.got.plt)
|
|
. = ALIGN(4K);
|
|
}
|
|
|
|
.data.rel.ro : ALIGN(4K) {
|
|
*(.data.rel.ro.local*) *(.data.rel.ro .data.rel.ro.*)
|
|
. = ALIGN(4K);
|
|
}
|
|
|
|
.gcc_except_table : ALIGN(4K) {
|
|
*(.gcc_except_table)
|
|
. = ALIGN(4K);
|
|
}
|
|
}
|