summaryrefslogtreecommitdiff
path: root/linker.ld
diff options
context:
space:
mode:
authorSimponic <loganthebean222@gmail.com>2021-02-20 23:24:25 -0700
committerSimponic <loganthebean222@gmail.com>2021-02-20 23:24:25 -0700
commita2a4a155c259d24101435771607b81f167b62cf3 (patch)
tree8e5dc73b21d02abbfe0f5185050c48908b3249ab /linker.ld
downloadsimponicOS-a2a4a155c259d24101435771607b81f167b62cf3.tar.gz
simponicOS-a2a4a155c259d24101435771607b81f167b62cf3.zip
Changed to nasm
Diffstat (limited to 'linker.ld')
-rw-r--r--linker.ld43
1 files changed, 43 insertions, 0 deletions
diff --git a/linker.ld b/linker.ld
new file mode 100644
index 0000000..38ddd94
--- /dev/null
+++ b/linker.ld
@@ -0,0 +1,43 @@
+/* The bootloader will look at this image and start execution at the symbol
+ designated as the entry point. */
+ENTRY(_start)
+
+/* Tell where the various sections of the object files will be put in the final
+ kernel image. */
+SECTIONS
+{
+ /* Begin putting sections at 1 MiB, a conventional place for kernels to be
+ loaded at by the bootloader. */
+ . = 1M;
+
+ /* First put the multiboot header, as it is required to be put very early
+ early in the image or the bootloader won't recognize the file format.
+ Next we'll 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, by default it will put them in
+ a segment with the same name. Simply add stuff here as needed. */
+}