UserspaceEmulator: Fix stack for new processes

Fixes #8646.
This commit is contained in:
Gunnar Beutner 2021-07-11 16:57:38 +02:00 committed by Andreas Kling
parent 1455604b13
commit cbdc7f9e41
Notes: sideshowbarker 2024-07-18 09:11:48 +09:00

View file

@ -134,13 +134,15 @@ void Emulator::setup_stack(Vector<ELF::AuxiliaryValue> 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<u32>(0)); // (alignment)
while ((m_cpu.esp().value() + 4) % 16 != 0)
m_cpu.push32(shadow_wrap_as_initialized<u32>(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<u32>(0)); // (alignment)
VERIFY(m_cpu.esp().value() % 16 == 0);
}
bool Emulator::load_elf()