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. |