x86emul/test: drop an undue conditional

Gating the main part of what do_test() does is wrong: As it stands, the
"memory" forms of BNDC{L,N,U} weren't tested because of this mistake.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
This commit is contained in:
Jan Beulich committed 2024-11-07 12:51:04 +01:00
1 parent 1ceabff115
commit 00e074834e
1 file changed
+27 -32
+27 -32
View File
@@ -2213,42 +2213,37 @@ void do_test(uint8_t *instr, unsigned int len, unsigned int modrm,
unsigned int bytes,
struct x86_emulate_ctxt *ctxt))
{
struct x86_emulate_state *s;
struct x86_emulate_state *s = x86_decode_insn(ctxt, fetch);
if ( !modrm || mem != mem_none )
if ( !s )
{
s = x86_decode_insn(ctxt, fetch);
if ( !s )
{
print_insn(instr, len);
printf(" failed to decode\n");
return;
}
if ( x86_insn_length(s, ctxt) != len )
{
print_insn(instr, len);
printf(" length %u (expected %u)\n", x86_insn_length(s, ctxt), len);
}
if ( x86_insn_is_mem_access(s, ctxt) != (mem != mem_none) )
{
print_insn(instr, len);
printf(" mem access %d (expected %d)\n",
x86_insn_is_mem_access(s, ctxt), mem != mem_none);
}
if ( x86_insn_is_mem_write(s, ctxt) != (mem == mem_write) )
{
print_insn(instr, len);
printf(" mem write %d (expected %d)\n",
x86_insn_is_mem_write(s, ctxt), mem == mem_write);
}
x86_emulate_free_state(s);
print_insn(instr, len);
printf(" failed to decode\n");
return;
}
if ( x86_insn_length(s, ctxt) != len )
{
print_insn(instr, len);
printf(" length %u (expected %u)\n", x86_insn_length(s, ctxt), len);
}
if ( x86_insn_is_mem_access(s, ctxt) != (mem != mem_none) )
{
print_insn(instr, len);
printf(" mem access %d (expected %d)\n",
x86_insn_is_mem_access(s, ctxt), mem != mem_none);
}
if ( x86_insn_is_mem_write(s, ctxt) != (mem == mem_write) )
{
print_insn(instr, len);
printf(" mem write %d (expected %d)\n",
x86_insn_is_mem_write(s, ctxt), mem == mem_write);
}
x86_emulate_free_state(s);
if ( modrm )
{
instr[modrm] |= 0xc0;
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.