diff options
author | aqua <aqua@iserlohn-fortress.net> | 2024-03-08 17:24:49 +0200 |
---|---|---|
committer | aqua <aqua@iserlohn-fortress.net> | 2024-03-08 22:00:07 +0200 |
commit | 20b97ea7c0dbbdc13800e12ff5c86c00c4a342ec (patch) | |
tree | 473281e5fc8b256827ce1a678573444e1aa5f669 /arch/i386/linker.ld | |
parent | Generate src/conf.h (diff) | |
download | kernel-20b97ea7c0dbbdc13800e12ff5c86c00c4a342ec.tar.xz |
Bazel build
Diffstat (limited to 'arch/i386/linker.ld')
-rw-r--r-- | arch/i386/linker.ld | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/arch/i386/linker.ld b/arch/i386/linker.ld new file mode 100644 index 0000000..61a3be9 --- /dev/null +++ b/arch/i386/linker.ld @@ -0,0 +1,54 @@ +ENTRY(_start) +OUTPUT_FORMAT(elf32-i386) + +MULTIBOOT_SIZE = 0x2000; +VADDR_BASE = 0xc0000000; + +SECTIONS +{ + /* First put the multiboot header, as it is required to be put very early in the image or the bootloader won't * + * recognize the file format. * + * Once the MMU is set up, this section is no longer needed and should be unmapped. */ + . = 0; + .bootstrap : { + . = ALIGN(8); + __multiboot_begin = .; + KEEP(*(.multiboot.header)) + KEEP(*(.multiboot.text)) + KEEP(*(.multiboot.pages)) + __multiboot_end = .; + } + + . = VADDR_BASE; + + .text ALIGN(4K) : AT(ADDR(.text) - VADDR_BASE + MULTIBOOT_SIZE) { + __text_begin = .; + *(.text*) + __text_end = .; + } + + /* Read-only data. */ + .rodata ALIGN(4K) : AT(ADDR(.rodata) - VADDR_BASE + MULTIBOOT_SIZE) { + __rodata_begin = .; + *(.constinit) + *(.rodata*) + __rodata_end = .; + } + + /* Read-write data (uninitialized) and stack */ + .bss ALIGN(4K) : AT(ADDR(.bss) - VADDR_BASE + MULTIBOOT_SIZE) { + __bss_begin = .; + *(.stack) + *(.pages) + *(.bss*) + __bss_end = .; + } + + /* Read-write data (initialized) */ + .data ALIGN(4K) : AT(ADDR(.data) - VADDR_BASE + MULTIBOOT_SIZE) { + __data_begin = .; + *(.init) + *(.data) + __data_end = .; + } +} |