diff options
Diffstat (limited to '')
| -rw-r--r-- | kernel/linker.ld | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/kernel/linker.ld b/kernel/linker.ld new file mode 100644 index 0000000..43f8a15 --- /dev/null +++ b/kernel/linker.ld @@ -0,0 +1,51 @@ +ENTRY(loader) +/* ENTRY(kmain) */ + +SECTIONS +{ + /* 0xffffffff80000000 is the kernel virtual memory load address */ + . = 0xffffffff80000000; + + .text : AT(ADDR(.text) - 0xffffffff80000000) + { + _code = .; + *(.text) + *(.rodata*) + . = ALIGN(4096); + } + + .data : AT(ADDR(.data) - 0xffffffff80000000) + { + _data = .; + *(.data) + . = ALIGN(4096); + } + + .eh_frame : AT(ADDR(.eh_frame) - 0xffffffff80000000) + { + _ehframe = .; + *(.eh_frame) + . = ALIGN(4096); + } + + .bss : AT(ADDR(.bss) - 0xffffffff80000000) + { + _bss = .; + *(.bss) + + /* + * You usually need to include generated COMMON symbols + * under kernel BSS section or use gcc's -fno-common + */ + + *(COMMON) + . = ALIGN(4096); + } + + _end = .; + + /DISCARD/ : + { + *(.comment) + } +} |
