mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-14 01:04:38 +03:00
08ff25f4ef
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.
50 lines
917 B
Plaintext
50 lines
917 B
Plaintext
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 = .;
|
|
}
|