From 6b43662debfc752772268c9d48689ad5dbf9aa8a Mon Sep 17 00:00:00 2001 From: Julian Seward Date: Tue, 21 Feb 2012 08:38:04 +0000 Subject: [PATCH] x86: don't forget to initialise guest %es from the host %es when constructing the initial guest register state. Fixes #291253. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12394 --- coregrind/m_initimg/initimg-linux.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/coregrind/m_initimg/initimg-linux.c b/coregrind/m_initimg/initimg-linux.c index eccdd2b7f..1e1338e1a 100644 --- a/coregrind/m_initimg/initimg-linux.c +++ b/coregrind/m_initimg/initimg-linux.c @@ -986,10 +986,11 @@ void VG_(ii_finalise_image)( IIFinaliseImageInfo iifii ) arch->vex.guest_EIP = iifii.initial_client_IP; /* initialise %cs, %ds and %ss to point at the operating systems - default code, data and stack segments */ + default code, data and stack segments. Also %es (see #291253). */ asm volatile("movw %%cs, %0" : : "m" (arch->vex.guest_CS)); asm volatile("movw %%ds, %0" : : "m" (arch->vex.guest_DS)); asm volatile("movw %%ss, %0" : : "m" (arch->vex.guest_SS)); + asm volatile("movw %%es, %0" : : "m" (arch->vex.guest_ES)); # elif defined(VGP_amd64_linux) vg_assert(0 == sizeof(VexGuestAMD64State) % 16);