|
From: Dan K. <da...@ke...> - 2007-11-07 23:50:29
|
On Nov 7, 2007 1:50 PM, Julian Seward <js...@ac...> wrote:
> Sounds like you've got an IR helper call with an argument type
> which isn't handled by the backend (instruction selector). Find
> the basic block containing the problem insn
Here y'go. Thanks,
Dan
==== BB 47752 (0x758580) BBs exec'd 68579743 ====
------------------------ Front end ------------------------
0x758580: pushl %ebp
------ IMark(0x758580, 1) ------
t0 = GET:I32(20)
t1 = Sub32(GET:I32(16),0x4:I32)
PUT(16) = t1
STle(t1) = t0
0x758581: movl %esp,%ebp
------ IMark(0x758581, 2) ------
PUT(60) = 0x758581:I32
PUT(20) = GET:I32(16)
0x758583: pushl %ecx
------ IMark(0x758583, 1) ------
PUT(60) = 0x758583:I32
t2 = GET:I32(4)
t3 = Sub32(GET:I32(16),0x4:I32)
PUT(16) = t3
STle(t3) = t2
0x758584: pushl %ebx
------ IMark(0x758584, 1) ------
PUT(60) = 0x758584:I32
t4 = GET:I32(12)
t5 = Sub32(GET:I32(16),0x4:I32)
PUT(16) = t5
STle(t5) = t4
0x758585: movl $0x0, -4(%ebp)
------ IMark(0x758585, 7) ------
PUT(60) = 0x758585:I32
t6 = Add32(GET:I32(20),0xFFFFFFFC:I32)
STle(t6) = 0x0:I32
0x75858C: pushw %bp
------ IMark(0x75858C, 2) ------
PUT(60) = 0x75858C:I32
t7 = GET:I16(20)
t8 = Sub32(GET:I32(16),0x2:I32)
PUT(16) = t8
STle(t8) = t7
0x75858E: movw %sp,%bp
------ IMark(0x75858E, 3) ------
PUT(60) = 0x75858E:I32
PUT(20) = GET:I16(16)
0x758591: subw $0x28, %sp
------ IMark(0x758591, 4) ------
PUT(60) = 0x758591:I32
t11 = GET:I16(16)
t10 = 0x28:I16
t9 = Sub16(t11,t10)
PUT(32) = 0x5:I32
PUT(36) = 16Uto32(t11)
PUT(40) = 16Uto32(t10)
PUT(44) = 0x0:I32
PUT(16) = t9
0x758595: pushl %eax
------ IMark(0x758595, 1) ------
PUT(60) = 0x758595:I32
t12 = GET:I32(0)
t13 = Sub32(GET:I32(16),0x4:I32)
PUT(16) = t13
STle(t13) = t12
0x758596: pushl %ebx
------ IMark(0x758596, 1) ------
PUT(60) = 0x758596:I32
t14 = GET:I32(12)
t15 = Sub32(GET:I32(16),0x4:I32)
PUT(16) = t15
STle(t15) = t14
0x758597: pushfl
------ IMark(0x758597, 1) ------
PUT(60) = 0x758597:I32
t16 = Sub32(GET:I32(16),0x4:I32)
PUT(16) = t16
t17 =
Or32(x86g_calculate_eflags_all[mcx=0x9]{0x380aab50}(GET:I32(32),GET:I32(36),GET:I32(40),GET:I32(44)):I32,0x202:I32)
t18 = Or32(t17,And32(GET:I32(48),0x400:I32))
t19 = Or32(t18,And32(Shl32(GET:I32(52),0x15:I8),0x200000:I32))
t20 = Or32(t19,And32(Shl32(GET:I32(56),0x12:I8),0x40000:I32))
STle(t16) = t20
0x758598: popl %eax
------ IMark(0x758598, 1) ------
PUT(60) = 0x758598:I32
t22 = GET:I32(16)
t21 = LDle:I32(t22)
PUT(16) = Add32(t22,0x4:I32)
PUT(0) = t21
0x758599: movl %eax,%ebx
------ IMark(0x758599, 2) ------
PUT(60) = 0x758599:I32
PUT(12) = GET:I32(0)
0x75859B: xorl $0x200000, %eax
------ IMark(0x75859B, 5) ------
PUT(60) = 0x75859B:I32
t23 = GET:I32(0)
t24 = 0x200000:I32
t25 = Xor32(t23,t24)
PUT(32) = 0xF:I32
PUT(36) = t25
PUT(40) = 0x0:I32
PUT(44) = 0x0:I32
PUT(0) = t25
0x7585A0: pushl %eax
------ IMark(0x7585A0, 1) ------
PUT(60) = 0x7585A0:I32
t26 = GET:I32(0)
t27 = Sub32(GET:I32(16),0x4:I32)
PUT(16) = t27
STle(t27) = t26
0x7585A1: popfl
------ IMark(0x7585A1, 1) ------
PUT(60) = 0x7585A1:I32
t29 = GET:I32(16)
t28 = LDle:I32(t29)
PUT(16) = Add32(t29,0x4:I32)
PUT(32) = 0x0:I32
PUT(40) = 0x0:I32
PUT(36) = And32(t28,0x8D5:I32)
PUT(44) = 0x0:I32
PUT(48) =
Mux0X(32to8(And32(Shr32(t28,0xA:I8),0x1:I32)),0x1:I32,0xFFFFFFFF:I32)
PUT(52) =
Mux0X(32to8(And32(Shr32(t28,0x15:I8),0x1:I32)),0x0:I32,0x1:I32)
PUT(56) =
Mux0X(32to8(And32(Shr32(t28,0x12:I8),0x1:I32)),0x0:I32,0x1:I32)
PUT(300) = 0x6:I32
if (CmpNE32(And32(t28,0x40000:I32),0x0:I32)) goto
{EmWarn} 0x7585A2:I32
0x7585A2: pushfl
------ IMark(0x7585A2, 1) ------
PUT(60) = 0x7585A2:I32
t30 = Sub32(GET:I32(16),0x4:I32)
PUT(16) = t30
t31 =
Or32(x86g_calculate_eflags_all[mcx=0x9]{0x380aab50}(GET:I32(32),GET:I32(36),GET:I32(40),GET:I32(44)):I32,0x202:I32)
t32 = Or32(t31,And32(GET:I32(48),0x400:I32))
t33 = Or32(t32,And32(Shl32(GET:I32(52),0x15:I8),0x200000:I32))
t34 = Or32(t33,And32(Shl32(GET:I32(56),0x12:I8),0x40000:I32))
STle(t30) = t34
0x7585A3: popl %eax
------ IMark(0x7585A3, 1) ------
PUT(60) = 0x7585A3:I32
t36 = GET:I32(16)
t35 = LDle:I32(t36)
PUT(16) = Add32(t36,0x4:I32)
PUT(0) = t35
0x7585A4: pushl %ebx
------ IMark(0x7585A4, 1) ------
PUT(60) = 0x7585A4:I32
t37 = GET:I32(12)
t38 = Sub32(GET:I32(16),0x4:I32)
PUT(16) = t38
STle(t38) = t37
0x7585A5: popfl
------ IMark(0x7585A5, 1) ------
PUT(60) = 0x7585A5:I32
t40 = GET:I32(16)
t39 = LDle:I32(t40)
PUT(16) = Add32(t40,0x4:I32)
PUT(32) = 0x0:I32
PUT(40) = 0x0:I32
PUT(36) = And32(t39,0x8D5:I32)
PUT(44) = 0x0:I32
PUT(48) =
Mux0X(32to8(And32(Shr32(t39,0xA:I8),0x1:I32)),0x1:I32,0xFFFFFFFF:I32)
PUT(52) =
Mux0X(32to8(And32(Shr32(t39,0x15:I8),0x1:I32)),0x0:I32,0x1:I32)
PUT(56) =
Mux0X(32to8(And32(Shr32(t39,0x12:I8),0x1:I32)),0x0:I32,0x1:I32)
PUT(300) = 0x6:I32
if (CmpNE32(And32(t39,0x40000:I32),0x0:I32)) goto
{EmWarn} 0x7585A6:I32
0x7585A6: xorl %ebx,%eax
------ IMark(0x7585A6, 2) ------
PUT(60) = 0x7585A6:I32
t43 = GET:I32(0)
t42 = GET:I32(12)
t41 = Xor32(t43,t42)
PUT(32) = 0xF:I32
PUT(36) = t41
PUT(40) = 0x0:I32
PUT(44) = 0x0:I32
PUT(0) = t41
0x7585A8: popl %ebx
------ IMark(0x7585A8, 1) ------
PUT(60) = 0x7585A8:I32
t45 = GET:I32(16)
t44 = LDle:I32(t45)
PUT(16) = Add32(t45,0x4:I32)
PUT(12) = t44
0x7585A9: popl %eax
------ IMark(0x7585A9, 1) ------
PUT(60) = 0x7585A9:I32
t47 = GET:I32(16)
t46 = LDle:I32(t47)
PUT(16) = Add32(t47,0x4:I32)
PUT(0) = t46
0x7585AA: jz-8 0x7585B2
------ IMark(0x7585AA, 2) ------
PUT(60) = 0x7585AA:I32
if
(32to1(x86g_calculate_condition[mcx=0x13]{0x380aa9f0}(0x4:I32,GET:I32(32),GET:I32(36),GET:I32(40),GET:I32(44)):I32))
goto {Boring} 0x7585B2:I32
goto {Boring} 0x7585AC:I32
. 0 758580 44
. 55 8B EC 51 53 C7 45 FC 00 00 00 00 66 55 66 8B EC 66 83 EC 28 50 53
9C 58 8B D8 35 00 00 20 00 50 9D 9C 58 53 9D 33 C3 5B 58 74 06
vex: priv/host-x86/isel.c:510 (doHelperCall): Assertion
`typeOfIRExpr(env->type_env, args[i]) == Ity_I32' failed.
vex storage: T total 1290621308 bytes allocated
valgrind: the 'impossible' happened:
LibVEX called failure_exit().
==6889== at 0x380165D9: report_and_quit (m_libcassert.c:136)
==6889== by 0x3: ???
==6889== by 0x3: ???
==6889== by 0x621B99F3: ???
==6889== by 0x621B9A63: ???
==6889== by 0x38017D1F: vgPlain_vprintf (m_libcprint.c:103)
==6889== by 0x38017EB1: vgPlain_message (m_libcprint.c:340)
==6889== by 0x621B99F3: ???
==6889== by 0x3812FA62: (within
/usr/local/valgrind-3.2.3-wine/lib/valgrind/x86-linux/memcheck)
==6889== by 0x621B9A93: ???
==6889== by 0xA646573: ???
sched status:
running_tid=1
Thread 1: status = VgTs_Runnable
==6889== at 0x758580: ???
==6889== by 0x4522C2D: start_process (process.c:839)
==6889== by 0x402D9D6: (within /home/dank/wine-git/libs/wine/libwine.so.1.0)
|