[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] tools/tests: Add EIP check to test_x86_emulator.c


  • To: Jan Beulich <JBeulich@xxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
  • From: Razvan Cojocaru <rcojocaru@xxxxxxxxxxxxxxx>
  • Date: Thu, 07 Aug 2014 11:35:18 +0300
  • Cc: stefano.stabellini@xxxxxxxxxxxxx, ian.jackson@xxxxxxxxxxxxx, ian.campbell@xxxxxxxxxx, xen-devel@xxxxxxxxxxxxx
  • Comment: DomainKeys? See http://domainkeys.sourceforge.net/
  • Delivery-date: Thu, 07 Aug 2014 08:35:24 +0000
  • Domainkey-signature: a=rsa-sha1; q=dns; c=nofws; s=default; d=bitdefender.com; b=0UYe0PqcliAz0uIxhyskP/cTITsZZPz7sBUAKlj7hAHa2//D9fzP+tJwGKhGgplj2NmG4Ca3qM8ltQJH4CM9mwDkJMdshBryx+9WOjE6u11hxM8pT/TNxKgPYPipGEEiS5saeiv4jAiTG4YaNEZveF3TCp6hMIFesNwEfXrxkzl4bqRUIBYGIEX9ivmfV1sXZnmzk81Uhkwi/UZrI4DjZ7TeAJVz4s5uT7xF9f29PHA9ZijqlC1yiFYGYakJFm/1h1tm6mUsVMLW6Rt1ZmOvPIxo+ZxLZ19GyNZqgEzRy2AZqPEmSRcDswNA24n3OgWDxP214GoSC0il/2ggYeAWiw==; h=Received:Received:Received:Received:Message-ID:Date:From:User-Agent:MIME-Version:To:CC:Subject:References:In-Reply-To:Content-Type:Content-Transfer-Encoding:X-BitDefender-Scanner:X-BitDefender-Spam:X-BitDefender-SpamStamp:X-BitDefender-CF-Stamp;
  • List-id: Xen developer discussion <xen-devel.lists.xen.org>

On 08/07/2014 11:32 AM, Jan Beulich wrote:
>>>> On 07.08.14 at 10:18, <andrew.cooper3@xxxxxxxxxx> wrote:
>> On 07/08/2014 09:16, Razvan Cojocaru wrote:
>>> The test now also checks that EIP was modified after emulating
>>> instructions after (and including) the "movq %mm3,(%ecx)..."
>>> code block.
>>>
>>> Signed-off-by: Razvan Cojocaru <rcojocaru@xxxxxxxxxxxxxxx>
>>
>> These checks do check that the instruction pointer has changed, which
>> catches your problem, but doesn't check that it has changed correctly. 
>> You need to work out exactly how long the instruction is a verify that
>> eip points to first byte of the next instruction.
> 
> And apart from that this should be done for all tests, not just the
> MMX/SSE/AVX ones.

The other tests already do this, but there it's simpler to check. For
example:

218     printf("%-40s", "Testing addl %%ecx,%%eax...");
219     instr[0] = 0x01; instr[1] = 0xc8;
220     regs.eflags = 0x200;
221     regs.eip    = (unsigned long)&instr[0];
222     regs.ecx    = 0x12345678;
223     regs.eax    = 0x7FFFFFFF;
224     rc = x86_emulate(&ctxt, &emulops);
225     if ( (rc != X86EMUL_OKAY) ||
226          (regs.ecx != 0x12345678) ||
227          (regs.eax != 0x92345677) ||
228          (regs.eflags != 0xa94) ||
229          (regs.eip != (unsigned long)&instr[2]) )
230         goto fail;
231     printf("okay\n");


Thanks,
Razvan Cojocaru

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.