From 036398ab051f2df5b70303e03f4f6506d36cb6eb Mon Sep 17 00:00:00 2001 From: Nic Gaffney Date: Sun, 5 Nov 2023 06:13:22 -0600 Subject: Initial Commit --- src/linker.ld | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/linker.ld (limited to 'src/linker.ld') 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 */ +} -- cgit v1.2.3