mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 11:37:34 +00:00
Kernel: Make sure the kernel's ELF PHDRs don't use rwx
This doesn't really matter in terms of writability for the kernel text because we set up proper page mappings anyway which prohibit writing to the text segment. However, this makes the profiler happy which previously died when validating the kernel's ELF program headers.
This commit is contained in:
parent
f86e241699
commit
c980a51776
3 changed files with 29 additions and 27 deletions
|
@ -2,22 +2,33 @@ ENTRY(start)
|
|||
|
||||
KERNEL_VIRTUAL_BASE = 0xc0000000;
|
||||
|
||||
PHDRS
|
||||
{
|
||||
boot_text PT_LOAD ;
|
||||
boot_bss PT_LOAD ;
|
||||
text PT_LOAD ;
|
||||
data PT_LOAD ;
|
||||
bss PT_LOAD ;
|
||||
}
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
. = KERNEL_VIRTUAL_BASE + 0x00100000;
|
||||
|
||||
start_of_kernel_image = .;
|
||||
|
||||
.boot ALIGN(4K) : AT (ADDR(.boot) - KERNEL_VIRTUAL_BASE)
|
||||
.boot_text ALIGN(4K) : AT (ADDR(.boot_text) - KERNEL_VIRTUAL_BASE)
|
||||
{
|
||||
$<TARGET_OBJECTS:boot>
|
||||
*(.multiboot)
|
||||
}
|
||||
KEEP(*(.boot_text))
|
||||
KEEP(*(.multiboot))
|
||||
} :boot_text
|
||||
|
||||
.super_pages ALIGN(4K) : AT (ADDR(.super_pages) - KERNEL_VIRTUAL_BASE)
|
||||
.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)
|
||||
{
|
||||
|
@ -31,7 +42,7 @@ SECTIONS
|
|||
end_of_safemem_atomic_text = .;
|
||||
|
||||
*(.text*)
|
||||
}
|
||||
} :text
|
||||
|
||||
.unmap_after_init ALIGN(4K) : AT (ADDR(.unmap_after_init) - KERNEL_VIRTUAL_BASE)
|
||||
{
|
||||
|
@ -40,7 +51,7 @@ SECTIONS
|
|||
end_of_unmap_after_init = .;
|
||||
|
||||
end_of_kernel_text = .;
|
||||
}
|
||||
} :text
|
||||
|
||||
.rodata ALIGN(4K) : AT (ADDR(.rodata) - KERNEL_VIRTUAL_BASE)
|
||||
{
|
||||
|
@ -53,21 +64,21 @@ SECTIONS
|
|||
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)
|
||||
{
|
||||
|
@ -79,7 +90,7 @@ SECTIONS
|
|||
|
||||
. = ALIGN(4K);
|
||||
*(.heap)
|
||||
}
|
||||
} :bss
|
||||
|
||||
end_of_kernel_image = .;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue