aboutsummaryrefslogtreecommitdiff
path: root/linker.ld
diff options
context:
space:
mode:
Diffstat (limited to 'linker.ld')
-rw-r--r--linker.ld70
1 files changed, 34 insertions, 36 deletions
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. */
}