|
From: Uttam P. <ut...@us...> - 2006-01-10 20:57:39
|
Hi Cerion,
> Not so strange - we developed on a ppc970 :-)
>
> Ok, it's a missing instruction.
> Hmm - you're not getting the hex printouts...
> Can you change VEX/priv/guest-ppc/toIR.c thusly:
>
> vex_printf("disInstr(ppc): unhandled instruction: "
> - "0x%x\n", theInstr);
> + "%u\n", theInstr);
>
> Rebuild, run the test, and repost none/tests/ppc32/jm-insns.stderr.diff
> - To run just that one test (from dir valgrind-3.1.0):
> $ perl ./tests/vg_regtest ./none/tests/ppc32/jm-insns
With the suggested change (in file VEX/priv/guest-ppc32/toIR.c),
building and re-running that one test we get following
(jm-insns.stderr.diff output)
$ cat none/tests/ppc32/jm-insns.stderr.diff
*** jm-insns.stderr.exp 2005-11-25 04:36:08.000000000 -0800
--- jm-insns.stderr.out 2006-01-10 12:47:26.000000000 -0800
***************
*** 1 ****
--- 2,22 ----
+ disInstr(ppc32): unhandled instruction: 2080393422
+ primary 31(0x........), secondary 206(0x........)
+ disInstr(ppc32): instr: 0111 1100 0000 0000 0100 1000 1100 1110
+ disInstr(ppc32): opcode1: 011111
+ disInstr(ppc32): opcode2: 0011001110
+
+ Your program just tried to execute an instruction that Valgrind
+ did not recognise. There are two possible reasons for this.
+ 1. Your program has a bug and erroneously jumped to a non-code
+ location. If you are running Memcheck and you just saw a
+ warning about a bad jump, it's probably your program's fault.
+ 2. The instruction is legitimate but Valgrind doesn't handle it,
+ i.e. it's Valgrind's fault. If you think this is the case or
+ you are not sure, please let us know.
+ Either way, Valgrind will now raise a SIGILL signal which will
+ probably kill your program.
+
+ Process terminating with default action of signal 4 (SIGILL)
+ Illegal opcode at address 0x........
+ at 0x........: build_viargs_table (in /home/pawar/valgrind-3.1.0/none/tests/ppc32/jm-insns)
+ by 0x........: main (in /home/pawar/valgrind-3.1.0/none/tests/ppc32/jm-insns)
Also, I noticed that, after making the change to toIR.c file, I'd to clean the directory with
make clean to rebuild libvex.a (toIR.o). Without that, toIR.o wouldn't get rebuild. And the test
result would be same as the previous one. Is it the known problem?
Thanks,
Uttam
|