|
From: <sv...@va...> - 2012-02-21 08:42:40
|
Author: sewardj
Date: 2012-02-21 08:38:04 +0000 (Tue, 21 Feb 2012)
New Revision: 12394
Log:
x86: don't forget to initialise guest %es from the host %es when
constructing the initial guest register state. Fixes #291253.
Modified:
trunk/coregrind/m_initimg/initimg-linux.c
Modified: trunk/coregrind/m_initimg/initimg-linux.c
===================================================================
--- trunk/coregrind/m_initimg/initimg-linux.c 2012-02-20 15:33:24 UTC (rev 12393)
+++ trunk/coregrind/m_initimg/initimg-linux.c 2012-02-21 08:38:04 UTC (rev 12394)
@@ -986,10 +986,11 @@
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);
|