|
From: M Rajesh-B. <B2...@fr...> - 2011-07-09 15:13:24
|
Hi,
I tried to use valgrind-3.6.1 memcheck tool for platform ppc32-linux,
I cross compiled(CC=powerpc-none-linux-gnuspe-gcc) on my host(Ubuntu) and copied to target board.
But I facing error indicated as "valgrind: Unrecognised instruction at address 0x4018ff0",
Not only my program, I am getting similar error for any other program so thinking that there is no issue with my program.
Following is the log generated
==2069== Memcheck, a memory error detector
==2069== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al.
==2069== Using Valgrind-3.6.1 and LibVEX; rerun with -h for copyright info
==2069== Command: /root/pspmaster -f
==2069== Parent PID: 2063
==2069==
disInstr(ppc): unhandled instruction: 0x10E40301
primary 4(0x4), secondary 769(0x301)
==2069== valgrind: Unrecognised instruction at address 0x4018ff0.
==2069== Your program just tried to execute an instruction that Valgrind
==2069== did not recognize. There are two possible reasons for this.
==2069== 1. Your program has a bug and erroneously jumped to a non-code
==2069== location. If you are running Memcheck and you just saw a
==2069== warning about a bad jump, it's probably your program's fault.
==2069== 2. The instruction is legitimate but Valgrind doesn't handle it,
==2069== i.e. it's Valgrind's fault. If you think this is the case or
==2069== you are not sure, please let us know and we'll try to fix it.
==2069== Either way, Valgrind will now raise a SIGILL signal which will
==2069== probably kill your program.
==2069==
==2069== Process terminating with default action of signal 4 (SIGILL)
==2069== Illegal opcode at address 0x4018FF0
==2069== at 0x4018FF0: memcpy (in /lib/ld-2.8.so)
==2069== by 0x40021C3: _dl_start_final (in /lib/ld-2.8.so)
==2069== by 0x4015F8B: _start (in /lib/ld-2.8.so)
==2069==
==2069== HEAP SUMMARY:
==2069== in use at exit: 0 bytes in 0 blocks
==2069== total heap usage: 0 allocs, 0 frees, 0 bytes allocated
==2069==
==2069== All heap blocks were freed -- no leaks are possible
==2069==
==2069== For counts of detected and suppressed errors, rerun with: -v
==2069== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 4 from 2)
Could you please anybody suggest some clue to solve the above issue ?
Thank you,
Rajesh
|
|
From: John R. <jr...@bi...> - 2011-07-09 17:02:20
|
> I tried to use valgrind-3.6.1 memcheck tool for platform ppc32-linux, > > I cross compiled(CC=powerpc-none-linux-gnuspe-gcc) on my host(Ubuntu) and copied to target board. What model CPU chip is on your board? What does "cat /proc/cpuinfo" say? > disInstr(ppc): unhandled instruction: 0x10E40301 > > primary 4(0x4), secondary 769(0x301) That instruction seems to be: evldd r7,0(r4) which is an instruction for SPE (Signal Processing Engine): evldd[x] Vector Load Double Word into Double Word [Indexed] which is described on pdf page 513 of: http://www.st.com/stonline/products/literature/rm/13694.pdf Programmer’s reference manual for Book E processors Book E, a version of the PowerPC architecture intended for embedded processors > Could you please anybody suggest some clue to solve the above issue ? Is there a way to run the program such that the code intentionally avoids using SPE instructions? Set a shell environment variable, or temporarily move some directory of SPE support code to another name such that the SPE code is not found (such as something like "mv /lib/spe /lib/spe.save"), etc.? Your e-mail domain says freescale.com, which has been associated with a designer/fabricator/marketer of these CPU chips. What do your co-workers say? -- |
|
From: M Rajesh-B. <B2...@fr...> - 2011-07-10 06:15:31
|
Thanks John Reiser, Please find my responses inline. -Rajesh -----Original Message----- From: John Reiser [mailto:jr...@bi...] Sent: Saturday, July 09, 2011 10:33 PM To: val...@li... Subject: Re: [Valgrind-users] Unrecognized instruction at address > I tried to use valgrind-3.6.1 memcheck tool for platform ppc32-linux, > > I cross compiled(CC=powerpc-none-linux-gnuspe-gcc) on my host(Ubuntu) and copied to target board. What model CPU chip is on your board? What does "cat /proc/cpuinfo" say? [M Rajesh-B22236] Here is /proc/cpuinfo values processor : 0 cpu : e500v2 clock : 1499.985015MHz revision : 3.0 (pvr 8021 0030) bogomips : 149.50 total bogomips : 149.50 timebase : 74999251 platform : MPC8572 DS model : fsl,MPC8572DS > disInstr(ppc): unhandled instruction: 0x10E40301 > > primary 4(0x4), secondary 769(0x301) That instruction seems to be: evldd r7,0(r4) which is an instruction for SPE (Signal Processing Engine): evldd[x] Vector Load Double Word into Double Word [Indexed] which is described on pdf page 513 of: http://www.st.com/stonline/products/literature/rm/13694.pdf Programmer's reference manual for Book E processors Book E, a version of the PowerPC architecture intended for embedded processors > Could you please anybody suggest some clue to solve the above issue ? Is there a way to run the program such that the code intentionally avoids using SPE instructions? Set a shell environment variable, or temporarily move some directory of SPE support code to another name such that the SPE code is not found (such as something like "mv /lib/spe /lib/spe.save"), etc.? [M Rajesh-B22236] I don't know how to bypass SPE instruction, I will try to find out Your e-mail domain says freescale.com, which has been associated with a designer/fabricator/marketer of these CPU chips. What do your co-workers say? [M Rajesh-B22236] I works as part of Software division in India. So far didn't consulted any one. -- ------------------------------------------------------------------------------ All of the data generated in your IT infrastructure is seriously valuable. Why? It contains a definitive record of application performance, security threats, fraudulent activity, and more. Splunk takes this data and makes sense of it. IT sense. And common sense. http://p.sf.net/sfu/splunk-d2d-c2 _______________________________________________ Valgrind-users mailing list Val...@li... https://lists.sourceforge.net/lists/listinfo/valgrind-users |
|
From: John R. <jr...@bi...> - 2011-07-11 03:44:57
|
> [M Rajesh-B22236] Here is /proc/cpuinfo values > processor : 0 > cpu : e500v2 > clock : 1499.985015MHz > revision : 3.0 (pvr 8021 0030) > bogomips : 149.50 > > total bogomips : 149.50 > timebase : 74999251 > platform : MPC8572 DS > model : fsl,MPC8572DS >> disInstr(ppc): unhandled instruction: 0x10E40301 >> >> primary 4(0x4), secondary 769(0x301) > [jreiser] That instruction seems to be: > evldd r7,0(r4) > > which is an instruction for SPE (Signal Processing Engine): > evldd[x] Vector Load Double Word into Double Word [Indexed] > > which is described on pdf page 513 of: > http://www.st.com/stonline/products/literature/rm/13694.pdf > Programmer's reference manual for Book E processors > Book E, a version of the PowerPC architecture intended for embedded processors Valgrind source code VEX/priv/guest_ppc_toIR.c seems to recognize none of the SPE nor APU (Auxiliary Processing Unit) instructions. Looking carefully at Book E, it seems that a "32-bit CPU" that has SPE and APU must have 64-bit General Purpose Registers, and that the data layout is full of endian problems. The application file name "pspmaster" hints at an association with a well-known consumer electronics company. If true, then they should spend some money to implement the extensions required for VEX and valgrind. -- |