0
爲mips平臺交叉編譯Valgrind-3.9.0,使用-g選項交叉編譯'Hello World'程序,仍然出現此錯誤。 --track-origins = yes沒有幫助 相同的代碼在Linux中正常工作。請讓我知道如何繼續有條件跳轉或移動取決於未初始化的值 - mips平臺
# valgrind ./executeApp
==522== Memcheck, a memory error detector
==522== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
==522== Using Valgrind-3.9.0 and LibVEX; rerun with -h for copyright info
==522== Command: ./executeApp
==522== Conditional jump or move depends on uninitialised value(s)
==522== at 0x4006250: ??? (in /lib/ld-uClibc-0.9.29.so)
==522== by 0x400101C: _start (in /lib/ld-uClibc-0.9.29.so)
==522==
IR SANITY CHECK FAILURE
IRSB {
t0:I32 t1:I1
IR-NoOp
IR-NoOp
IR-NoOp
IR-NoOp
IR-NoOp
IR-NoOp
IR-NoOp
IR-NoOp
IR-NoOp
IR-NoOp
IR-NoOp
IR-NoOp
IR-NoOp
IR-NoOp
IR-NoOp
------ IMark(0x483C658, 4, 0) ------
PUT(40) = Add32(0x0:I32,0x0:I32)
PUT(128) = 0x483C65C:I32
------ IMark(0x483C65C, 4, 0) ------
PUT(32) = Add32(0x0:I32,0x1:I32)
PUT(128) = 0x483C660:I32
------ IMark(0x483C660, 4, 0) ------
t0 = DIRTY 1:I1 ::: mips32_dirtyhelper_mfc0{0x38341e58}(BBPTR,0xF:I32,0x0:I32)
PUT(40) = t0
PUT(128) = 0x483C664:I32
------ IMark(0x483C664, 4, 0) ------
PUT(48) = Add32(0x0:I32,0xFFFFFFE0:I32)
PUT(128) = 0x483C668:I32
------ IMark(0x483C668, 4, 0) ------
PUT(36) = 0x20000:I32
PUT(128) = 0x483C66C:I32
------ IMark(0x483C66C, 4, 0) ------
PUT(36) = Or32(GET:I32(36),0xA040:I32)
PUT(128) = 0x483C670:I32
------ IMark(0x483C670, 4, 0) ------
PUT(40) = And32(GET:I32(40),GET:I32(48))
PUT(128) = 0x483C674:I32
------ IMark(0x483C674, 4, 0) ------
t1 = CmpNE32(GET:I32(40),GET:I32(36))
if (t1) { PUT(128) = 0x483C67C:I32; exit-Boring }
PUT(128) = 0x483C678:I32
------ IMark(0x483C678, 4, 0) ------
PUT(32) = Add32(0x0:I32,0x111C:I32)
PUT(128) = 0x483C67C:I32
PUT(128) = GET:I32(128); exit-Boring
}
IN STATEMENT:
t0 = DIRTY 1:I1 ::: mips32_dirtyhelper_mfc0{0x38341e58}(BBPTR,0xF:I32,0x0:I32)
ERROR = IRStmt.Dirty.args: BBPTR requested, but no fxState declared
vex: the `impossible' happened:
sanityCheckFail: exiting due to bad IR
vex storage: T total 14676136 bytes allocated
vex storage: P total 0 bytes allocated
valgrind: the 'impossible' happened:
LibVEX called failure_exit().
==522== at 0x38042DF0: report_and_quit (m_libcassert.c:260)
==522== by 0x38043060: panic (m_libcassert.c:350)
==522== by 0x380430B4: vgPlain_core_panic_at (m_libcassert.c:355)
==522== by 0x380430D8: vgPlain_core_panic (m_libcassert.c:360)
==522== by 0x38066B48: failure_exit (m_translate.c:731)
==522== by 0x381353B8: vpanic (main_util.c:226)
==522== by 0x38141E0C: sanityCheckFail (ir_defs.c:3589)
==522== by 0x38143308: sanityCheckIRSB (ir_defs.c:4411)
==522== by 0x381338E4: LibVEX_Translate (main_main.c:719)
==522== by 0x380674E8: vgPlain_translate (m_translate.c:1602)
==522== by 0x380AB604: handle_chain_me (scheduler.c:1032)
==522== by 0x380AC5C0: vgPlain_scheduler (scheduler.c:1336)
==522== by 0x380C39B8: run_a_thread_NORETURN (syswrap-linux.c:103)
==522== by 0x380C3F48: vgPlain_main_thread_wrapper_NORETURN (syswrap-linux.c:395)
sched status:
running_tid=1
Thread 1: status = VgTs_Runnable
==522== at 0x483C658: memcpy (in /lib/libuClibc-0.9.29.so)
==522== by 0x4821E8C: ??? (in /lib/libuClibc-0.9.29.so)
======================== END ================