mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-22 23:50:19 +00:00
3cbe805486
The kernel ignored the first 8 MiB of RAM while parsing the memory map because the kmalloc heaps and the super physical pages lived here. Move all that stuff inside the .bss segment so that those memory regions are accounted for, otherwise we risk overwriting boot modules placed next to the kernel.
62 lines
1.2 KiB
Text
62 lines
1.2 KiB
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)
|
|
|
|
start_of_safemem_text = .;
|
|
*(.text.safemem)
|
|
end_of_safemem_text = .;
|
|
start_of_safemem_atomic_text = .;
|
|
*(.text.safemem.atomic)
|
|
end_of_safemem_atomic_text = .;
|
|
|
|
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) (NOLOAD) : AT (ADDR(.bss) - 0xc0000000)
|
|
{
|
|
start_of_kernel_bss = .;
|
|
*(page_tables)
|
|
*(COMMON)
|
|
*(.bss)
|
|
end_of_kernel_bss = .;
|
|
|
|
. = ALIGN(4K);
|
|
*(.heap)
|
|
. = ALIGN(4K);
|
|
*(.super_pages)
|
|
}
|
|
|
|
end_of_kernel_image = .;
|
|
}
|