]> git.dujemihanovic.xyz Git - nameless-os.git/commitdiff
Define start and end of each section
authorDuje Mihanović <duje.mihanovic@skole.hr>
Mon, 9 May 2022 14:41:31 +0000 (16:41 +0200)
committerDuje Mihanović <duje.mihanovic@skole.hr>
Wed, 22 Jun 2022 16:05:58 +0000 (18:05 +0200)
This is needed so the kernel knows what are all the memory ranges that need to
be mapped in the paging tables.

kernel/linker.ld

index 645a82421029a638d8ea58a86e8282852af09936..82f6e4af44dc08723874e8fbe5e6983ec161c6a4 100644 (file)
@@ -6,11 +6,17 @@ SECTIONS
        . = 0x100000;
        __KERNEL_BASE__ = .;
 
-       .text : ALIGN(4K) { 
+       .text : ALIGN(4K) {
+               __TEXT_BASE__ = .;
                kernel/entry.o (.text)
-               *(.text) 
+               *(.text)
+               __TEXT_END__ = .;
+       }
+       .rodata : ALIGN(4K) {
+               __RODATA_BASE__ = .;
+               *(.rodata)
+               __RODATA_END__ = .;
        }
-       .rodata : ALIGN(4K) { *(.rodata) }
 
        /* .rodata is put after .text so that the read-only entry in the program
         * header covers .rodata as well. When .rodata is after .data, that entry
@@ -21,12 +27,18 @@ SECTIONS
         * matter yet because we (currently) assume that the NX bit is not
         * supported anyway. */
 
-       .data : ALIGN(4K) { *(.data) }
-       .bss : ALIGN(4K) { 
+       .data : ALIGN(4K) {
+               __DATA_BASE__ = .;
+               *(.data)
+               __DATA_END__ = .;
+       }
+       .bss : ALIGN(4K) {
+               __BSS_BASE__ = .;
                *(.bss)
                /* Reserving 16KiB for the stack. A __STACK_TOP__ is not really
                 * needed (yet). */
-               . += 16K; 
+               . += 16K;
                __STACK_BOTTOM__ = .;
+               __BSS_END__ = .;
        }
 }