mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-11 13:36:13 +03:00
DynamicLoader: Ensure that backtrace computation stops at _start
If we don't set FP and LR to 0, the Kernel might not stop generating backtraces when it reaches `_start`'s stack frame, and might continue by reading garbage memory instead. This leads to a kernel panic, as SafeMem access faults aren't handled properly in the AArch64 kernel yet. We might want to ensure that the kernel zeroes out all registers when a new process is created.
This commit is contained in:
parent
ff2fa72e28
commit
f18e7659a6
Notes:
sideshowbarker
2024-07-17 04:21:32 +09:00
Author: https://github.com/BertalanD Commit: https://github.com/SerenityOS/serenity/commit/f18e7659a6 Pull-request: https://github.com/SerenityOS/serenity/pull/18466 Reviewed-by: https://github.com/nico ✅
@ -63,7 +63,11 @@ void _entry(int, char**, char**) __attribute__((used));
|
||||
NAKED void _start(int, char**, char**)
|
||||
{
|
||||
#if ARCH(AARCH64)
|
||||
// Make sure backtrace computation stops here by setting FP and LR to 0.
|
||||
// FIXME: The kernel should ensure that registers are zeroed on program start
|
||||
asm(
|
||||
"mov x29, 0\n"
|
||||
"mov x30, 0\n"
|
||||
"bl _entry\n");
|
||||
#else
|
||||
asm(
|
||||
|
Loading…
Reference in New Issue
Block a user