mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-20 17:58:18 +03:00
UE: Properly align stack for signal handlers
This issue was also present in the kernel, the description of which is provided in an identically titled commit. Note that this couldn't have affected any programs running in UserspaceEmulator as we don't support SSE instructions, and don't seem to raise faults under any conditions.
This commit is contained in:
parent
db71c36657
commit
0a748de1a0
Notes:
sideshowbarker
2024-07-18 01:56:16 +09:00
Author: https://github.com/BertalanD Commit: https://github.com/SerenityOS/serenity/commit/0a748de1a05 Pull-request: https://github.com/SerenityOS/serenity/pull/10625 Issue: https://github.com/SerenityOS/serenity/issues/9291
@ -602,7 +602,7 @@ void Emulator::dispatch_one_pending_signal()
|
||||
|
||||
auto old_esp = m_cpu.esp();
|
||||
|
||||
u32 stack_alignment = (m_cpu.esp().value() - 56) % 16;
|
||||
u32 stack_alignment = (m_cpu.esp().value() - 52) % 16;
|
||||
m_cpu.set_esp(shadow_wrap_as_initialized(m_cpu.esp().value() - stack_alignment));
|
||||
|
||||
m_cpu.push32(shadow_wrap_as_initialized(m_cpu.eflags()));
|
||||
@ -621,10 +621,11 @@ void Emulator::dispatch_one_pending_signal()
|
||||
|
||||
m_cpu.push32(shadow_wrap_as_initialized((u32)signum));
|
||||
m_cpu.push32(shadow_wrap_as_initialized(handler.handler));
|
||||
m_cpu.push32(shadow_wrap_as_initialized(0u));
|
||||
|
||||
VERIFY((m_cpu.esp().value() % 16) == 0);
|
||||
|
||||
m_cpu.push32(shadow_wrap_as_initialized(0u));
|
||||
|
||||
m_cpu.set_eip(m_signal_trampoline);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user