|
From: Vinay C. <vin...@gm...> - 2012-04-18 01:56:24
|
Hi all,
I am trying to develop a tool using valgrind and I had to use
unsafeIRDirty_1_N for writing into a temporary register. It works fine
for integer temporary registers but fails for floating point ones. The
error message comes from line 4020 in VEX/priv/host_amd64_isel.c which
basically says that dirty call should not return floating point value.
I am not sure if the dirty call actually does not support floating
point values or if I am doing something wrong. I would appreciate any
help in this regard. The error message is as follows:
t132 = DIRTY 1:I1 ::: Dirty_Value{0x38001030}()
vex: the `impossible' happened:
iselStmt(amd64)
vex storage: T total 1058649560 bytes allocated
vex storage: P total 960 bytes allocated
valgrind: the 'impossible' happened:
LibVEX called failure_exit().
==17711== at 0x38003A77: report_and_quit (m_libcassert.c:210)
==17711== by 0x38003ADE: panic (m_libcassert.c:294)
==17711== by 0x38003B38: vgPlain_core_panic_at (m_libcassert.c:299)
==17711== by 0x38003B4A: vgPlain_core_panic (m_libcassert.c:304)
==17711== by 0x3801E602: failure_exit (m_translate.c:700)
==17711== by 0x380A2C18: vpanic (main_util.c:226)
==17711== by 0x381C6759: iselSB_AMD64 (host_amd64_isel.c:4148)
==17711== by 0x380A143B: LibVEX_Translate (main_main.c:699)
==17711== by 0x3801BF19: vgPlain_translate (m_translate.c:1544)
==17711== by 0x3804918C: vgPlain_scheduler (scheduler.c:929)
==17711== by 0x38072AC9: run_a_thread_NORETURN (syswrap-linux.c:98)
==17711== by 0x38072D5A: vgModuleLocal_start_thread_NORETURN
(syswrap-linux.c:268)
==17711== by 0x380756ED: ??? (in
/home/vchippa/valgrind/installation/lib/valgrind/char-amd64-linux)
==17711== by 0xDEADBEEFDEADBEEE: ???
==17711== by 0xDEADBEEFDEADBEEE: ???
==17711== by 0xDEADBEEFDEADBEEE: ???
Thanks,
Vinay.
|