ladybird/Kernel/linker.ld
Tom 08ff25f4ef Kernel: Invoke heap constructors separately early on
By having a separate list of constructors for the kernel heap
code, we can properly use constructors without re-running them
after the heap was already initialized. This solves some problems
where values were wiped out because they were overwritten by
running their constructors later in the initialization process.
2020-08-10 20:05:18 +02:00

49 lines
917 B
Text

ENTRY(start)
SECTIONS
{
. = 0xc0100000;
start_of_kernel_image = .;
.text ALIGN(4K) : AT (ADDR(.text) - 0xc0000000)
{
$<TARGET_OBJECTS:boot>
*(.multiboot)
start_of_kernel_text = .;
*(.text)
*(.text.startup)
end_of_kernel_text = .;
}
.rodata ALIGN(4K) : AT (ADDR(.rodata) - 0xc0000000)
{
start_heap_ctors = .;
*libkernel_heap.a:*(.ctors)
end_heap_ctors = .;
start_ctors = .;
*(.ctors)
end_ctors = .;
*(.rodata)
}
.data ALIGN(4K) : AT (ADDR(.data) - 0xc0000000)
{
start_of_kernel_data = .;
*(.data)
end_of_kernel_data = .;
}
.bss ALIGN(4K) : AT (ADDR(.bss) - 0xc0000000)
{
start_of_kernel_bss = .;
*(page_tables)
*(COMMON)
*(.bss)
end_of_kernel_bss = .;
}
end_of_kernel_image = .;
}