diff options
Diffstat (limited to 'src/linker.ld')
| -rw-r--r-- | src/linker.ld | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/linker.ld b/src/linker.ld new file mode 100644 index 0000000..8a9d5f8 --- /dev/null +++ b/src/linker.ld @@ -0,0 +1,44 @@ +/* The bootloader witll look at this image and start execution at + * the symbol desugbated as ENTRY + * + * In this case, it is _start in boot.s + */ +ENTRY (_start) + +/* Tell where the sections of the object files (.o) will be put in the + * final image + */ +SECTIONS +{ + /* Put sections at 1MiB, the conventional place for kernels to be + * loaded at by the bootloader. */ + . = 1M; + + /* First, put the multiboot header. It is required to be put + * VERY early in the image or the bootloader wont recognize the file + * format. Next, we will put the .text section*/ + .text BLOCK(4K) : ALIGN(4K) + { + *(.multiboot) + *(.text) + } + /* Read only data */ + .rodata BLOCK(4K) : ALIGN(4K) + { + *(.rodata) + } + /* Read write data (initialized) */ + .data BLOCK(4K) : ALIGN(4K) + { + *(.data) + } + /* Read write data (uninitialized) and stack */ + .bss BLOCK(4K) : ALIGN(4K) + { + *(COMMON) + *(.bss) + } + + /* The compiler may produce other sections, but they will be put in + * a section with the same name by default. Add stuff here as needed */ +} |
