mirror of
https://github.com/RGBCube/serenity
synced 2025-05-21 14:55:07 +00:00

Without this we won't be able to detect whether .ksyms overlaps the end of the page table we set up for the kernel image.
105 lines
2.2 KiB
Text
105 lines
2.2 KiB
Text
ENTRY(start)
|
|
|
|
KERNEL_VIRTUAL_BASE = 0xc0000000;
|
|
|
|
PHDRS
|
|
{
|
|
boot_text PT_LOAD ;
|
|
boot_bss PT_LOAD ;
|
|
text PT_LOAD ;
|
|
data PT_LOAD ;
|
|
bss PT_LOAD ;
|
|
ksyms PT_LOAD ;
|
|
}
|
|
|
|
SECTIONS
|
|
{
|
|
. = KERNEL_VIRTUAL_BASE + 0x00100000;
|
|
|
|
start_of_kernel_image = .;
|
|
|
|
.boot_text ALIGN(4K) : AT (ADDR(.boot_text) - KERNEL_VIRTUAL_BASE)
|
|
{
|
|
KEEP(*(.boot_text))
|
|
KEEP(*(.multiboot))
|
|
} :boot_text
|
|
|
|
.boot_bss ALIGN(4K) (NOLOAD) : AT (ADDR(.boot_bss) - KERNEL_VIRTUAL_BASE)
|
|
{
|
|
KEEP(*(.page_tables))
|
|
KEEP(*(.stack))
|
|
*(.super_pages)
|
|
} :boot_bss
|
|
|
|
.text ALIGN(4K) : AT (ADDR(.text) - KERNEL_VIRTUAL_BASE)
|
|
{
|
|
start_of_kernel_text = .;
|
|
|
|
start_of_safemem_text = .;
|
|
KEEP(*(.text.safemem))
|
|
end_of_safemem_text = .;
|
|
start_of_safemem_atomic_text = .;
|
|
KEEP(*(.text.safemem.atomic))
|
|
end_of_safemem_atomic_text = .;
|
|
|
|
*(.text*)
|
|
} :text
|
|
|
|
.unmap_after_init ALIGN(4K) : AT (ADDR(.unmap_after_init) - KERNEL_VIRTUAL_BASE)
|
|
{
|
|
start_of_unmap_after_init = .;
|
|
*(.unmap_after_init*);
|
|
end_of_unmap_after_init = .;
|
|
|
|
end_of_kernel_text = .;
|
|
} :text
|
|
|
|
.rodata ALIGN(4K) : AT (ADDR(.rodata) - KERNEL_VIRTUAL_BASE)
|
|
{
|
|
start_heap_ctors = .;
|
|
*libkernel_heap.a:*(.ctors)
|
|
end_heap_ctors = .;
|
|
|
|
start_ctors = .;
|
|
*(.ctors)
|
|
end_ctors = .;
|
|
|
|
*(.rodata*)
|
|
} :data
|
|
|
|
.data ALIGN(4K) : AT (ADDR(.data) - KERNEL_VIRTUAL_BASE)
|
|
{
|
|
start_of_kernel_data = .;
|
|
*(.data*)
|
|
end_of_kernel_data = .;
|
|
} :data
|
|
|
|
.ro_after_init ALIGN(4K) (NOLOAD) : AT(ADDR(.ro_after_init) - KERNEL_VIRTUAL_BASE)
|
|
{
|
|
start_of_ro_after_init = .;
|
|
*(.ro_after_init);
|
|
end_of_ro_after_init = .;
|
|
} :data
|
|
|
|
.bss ALIGN(4K) (NOLOAD) : AT (ADDR(.bss) - KERNEL_VIRTUAL_BASE)
|
|
{
|
|
start_of_kernel_bss = .;
|
|
*(page_tables)
|
|
*(COMMON)
|
|
*(.bss)
|
|
end_of_kernel_bss = .;
|
|
|
|
. = ALIGN(4K);
|
|
*(.heap)
|
|
} :bss
|
|
|
|
|
|
.ksyms ALIGN(4K) : AT (ADDR(.ksyms) - KERNEL_VIRTUAL_BASE)
|
|
{
|
|
start_of_kernel_ksyms = .;
|
|
*(.kernel_symbols)
|
|
end_of_kernel_ksyms = .;
|
|
} :ksyms
|
|
|
|
end_of_kernel_image = .;
|
|
}
|