From 361f02166cc939879b58328cbf5e75a050c93e1d Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Sun, 7 Mar 2021 21:44:12 +0200 Subject: Move multiboot header to its own section --- linker.ld | 70 +++++++++++++++++++++++++++++++-------------------------------- 1 file changed, 34 insertions(+), 36 deletions(-) (limited to 'linker.ld') diff --git a/linker.ld b/linker.ld index eaf118c..cd4139c 100644 --- a/linker.ld +++ b/linker.ld @@ -1,47 +1,45 @@ ENTRY(_start) OUTPUT_FORMAT(elf32-i386) -/* 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; + /* Begin putting sections at 1 MiB */ + . = 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 : - { - *(.multiboot) - *(.text) - } + /* 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. + */ + .multiboot : { + *(.multiboot.header) + *(.multiboot.text) + } + + .text : { + *(.text*) + } - /* Read-only data. */ - .rodata : - { - *(.rodata) - } + /* Read-only data. */ + .rodata : { + *(.rodata*) + } - /* Read-write data (initialized) */ - .data : - { - start_ctors = .; - KEEP(*(.init_array)); - KEEP(*(SORT_BY_INIT_PRIORITY(.init_array.*))); - end_ctors = .; - *(.data) - } + /* Read-write data (initialized) */ + .data : { + start_ctors = .; + KEEP(*(.init_array)); /* global constructors */ + end_ctors = .; + + begin_constinit = .; + *(.constinit) + end_constinit = .; + + *(.data) + } - /* Read-write data (uninitialized) and stack */ - .bss : - { - *(COMMON) - *(.bss) - *(.stack) - } + /* Read-write data (uninitialized) and stack */ + .bss : { + *(.bss) + *(.stack) + } - /* 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. */ } -- cgit v1.2.1