From cbdc7f9e416857d2c20f0c147bfa1481ccb22ddc Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Sun, 11 Jul 2021 16:57:38 +0200 Subject: [PATCH] UserspaceEmulator: Fix stack for new processes Fixes #8646. --- Userland/DevTools/UserspaceEmulator/Emulator.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Userland/DevTools/UserspaceEmulator/Emulator.cpp b/Userland/DevTools/UserspaceEmulator/Emulator.cpp index 4529bcb1a6..9dcfee8091 100644 --- a/Userland/DevTools/UserspaceEmulator/Emulator.cpp +++ b/Userland/DevTools/UserspaceEmulator/Emulator.cpp @@ -134,13 +134,15 @@ void Emulator::setup_stack(Vector aux_vector) m_cpu.push32(shadow_wrap_as_initialized(argv_entries[i])); u32 argv = m_cpu.esp().value(); - m_cpu.push32(shadow_wrap_as_initialized(0)); // (alignment) + while ((m_cpu.esp().value() + 4) % 16 != 0) + m_cpu.push32(shadow_wrap_as_initialized(0)); // (alignment) u32 argc = argv_entries.size(); m_cpu.push32(shadow_wrap_as_initialized(envp)); m_cpu.push32(shadow_wrap_as_initialized(argv)); m_cpu.push32(shadow_wrap_as_initialized(argc)); - m_cpu.push32(shadow_wrap_as_initialized(0)); // (alignment) + + VERIFY(m_cpu.esp().value() % 16 == 0); } bool Emulator::load_elf()