|
From: Julian S. <js...@ac...> - 2006-11-01 05:10:15
|
Thanks for the logging info. I was able to construct a test case from
it and the attached patch fixes it (I assume this is on x86-linux).
Can you try it?
J
Index: priv/guest-x86/ghelpers.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
=2D-- priv/guest-x86/ghelpers.c (revision 1671)
+++ priv/guest-x86/ghelpers.c (working copy)
@@ -1161,6 +1161,23 @@
);
}
+ if (isU32(cc_op, X86G_CC_OP_COPY) && isU32(cond, X86CondP)) {
+ /* COPY, then P --> extract P from dep1, and test (P =3D=3D 1). */
+ return
+ unop(
+ Iop_1Uto32,
+ binop(
+ Iop_CmpNE32,
+ binop(
+ Iop_And32,
+ binop(Iop_Shr32, cc_dep1, mkU8(X86G_CC_SHIFT_P)),
+ mkU32(1)
+ ),
+ mkU32(0)
+ )
+ );
+ }
+
return NULL;
}
On Wednesday 01 November 2006 01:17, Rafael Esp=EDndola wrote:
> On 10/30/06, Julian Seward <js...@ac...> wrote:
> > I need to see the IR (internal intermediate representation) created for
> > these blocks. Can you run with
> >
> > --tool=3Dnone --trace-flags=3D10001000 --vex-guest-chase-thresh=3D0
> > --trace-notbelow=3D0
> >
> > which will give you many megabytes of log file. Then find and send the
> > presumably 3 blocks which pertain to this function. The blocks in the
> > log have their function name + offset attached so it is easy to find
> > them.
>
> Attached.
>
> > Thanks.
> >
> > J
>
> My pleasure!
>
> Rafael
|