条件跳转或移动取决于未初始化的值 - mips平台

时间:2014-03-04 15:19:03

标签: valgrind

为mips平台交叉编译Valgrind-3.9.0,使用-g选项交叉编译'Hello World'程序,仍然出现此错误。 --track-originins =是没有帮助 相同的代码在Linux中运行良好。请让我知道如何继续

# 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 ================

1 个答案:

答案 0 :(得分:0)

恭喜,您在valgrind找到了一个错误。

您应该按照http://www.valgrind.org/support/bug_reports.html上的说明报告此错误,以便修复。