From: CHEN H. l. <Hon...@al...> - 2011-07-22 01:52:00
|
The version of the valgrind I used is Release 3.6.1. I downloaded it from http://www.valgrind.org/downloads/current.html . I think it is the latest version published. Where can I find the upstream snapshot you mentioned? -----Original Message----- From: Maynard Johnson [mailto:may...@us...] Sent: 2011年7月22日 0:58 To: CHEN Hong lin Cc: John Reiser; val...@li... Subject: Re: [Valgrind-users] Segmentation fault on ppc On 07/20/2011 9:13 PM, CHEN Hong lin wrote: > Finally the issue is resolved. It needs a patch. > http://gitorious.org/~cbs/oe-lite/cbss-base/blobs/master/recipes/valgr > ind/valgrind-3.6.1/vg-ppc-feature.patch On what version of valgrind were you seeing this problem? The patch you reference above was a patch I developed and attached to a bug I opened -- https://bugs.kde.org/show_bug.cgi?id=259977. But that patch was not accepted. Julian proposed an alternative solution, which I verified as acceptable, and that's what was committed upstream. You should try an upstream snapshot and make sure that works for you. -Maynard > > > -----Original Message----- > From: John Reiser [mailto:jr...@bi...] > Sent: 2011年6月29日 10:37 > To: val...@li... > Subject: Re: [Valgrind-users] Segmentation fault on ppc > >> I managed to cross-compile valgrind for linux on ppc (MPC8313), but >> failed to run it. Below is the err info caught by strace. >> What's wrong with it? Thanks in advance. >> BTW, the configure options are like: >> configure --host=powerpc-unknown-linux >> --target=powerpc-unknown-linux --prefix=/tmp/valgrind-install >> --build=i486-cross-linux-gnu > >> --- {si_signo=SIGILL, si_code=ILL_ILLOPC, si_addr=0x38033634} >> (Illegal >> instruction) --- >> --- {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0} (Segmentation >> fault) --- >> +++ killed by SIGSEGV +++ > > strace says that the instruction at address 0x38033634 is not legal on this particular CPU model, which you say is MPC8313. > What does /proc/cpuinfo say? > > Because the culprit is known to be an illegal instruction, then run under a debugger such as gdb, and find out exactly what instruction that is. > > $ gdb valgrind > (gdb) run > <<SIGSEGV>> > (gdb) bt > (gdb) x/x $pc > (gdb) x/i $pc > (gdb) x/8i $pc-4*4 > (gdb) info reg > (gdb) x/16x $sp > |