diff options
| author | Nic Gaffney <gaffney_nic@protonmail.com> | 2023-11-05 06:13:22 -0600 |
|---|---|---|
| committer | Nic Gaffney <gaffney_nic@protonmail.com> | 2023-11-05 06:13:22 -0600 |
| commit | 036398ab051f2df5b70303e03f4f6506d36cb6eb (patch) | |
| tree | 0067db99aa1417bb58b3b4d65b960a47b1100475 /src/linker.ld | |
| download | gftos-036398ab051f2df5b70303e03f4f6506d36cb6eb.tar.gz | |
Initial Commit
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 */ +} |
