Created attachment 81535 [details] Patch to fix this bug The following instructions were introduced in the Power ISA 2.05 (i.e., POWER6) - lfdp - stfdp - lfdpx - stfdpx These instructions were promptly deprecated (phased out) in ISA 2.06 (i.e., POWER7). Recent updates in binutils no longer supports these instructions unless the assembler is invoked with '-mpower6'. When 'make check' is run on valgrind when using such a newer binutils and running on a ppc64 system newer than POWER6, you get the following build error: pc64_linux=1 -DVGPV_ppc64_linux_vanilla=1 -DVGA_SEC_ppc32=1 -DVGP_SEC_ppc64_linux=1 -Winline -Wall -Wshadow -g -Winline -Wall -Wshadow -g -I../../../include -m64 -Wno-long-long -Wwrite-strings -fno-stack-protector -Wno-write-strings -MT power_ISA2_05-power_ISA2_05.o -MD -MP -MF .deps/power_ISA2_05-power_ISA2_05.Tpo -c -o power_ISA2_05-power_ISA2_05.o `test -f 'power_ISA2_05.c' || echo './'`power_ISA2_05.c /tmp/cciGIkGG.s: Assembler messages: /tmp/cciGIkGG.s:387: Error: operand out of domain (31 is not a multiple of 4) /tmp/cciGIkGG.s:387: Error: syntax error; found `,', expected `(' /tmp/cciGIkGG.s:387: Error: junk at end of line: `,9' /tmp/cciGIkGG.s:478: Error: operand out of domain (31 is not a multiple of 4) /tmp/cciGIkGG.s:478: Error: syntax error; found `,', expected `(' /tmp/cciGIkGG.s:478: Error: junk at end of line: `,9' make[2]: *** [power_ISA2_05-power_ISA2_05.o] Error 1 make[2]: Leaving directory `/tmp/Valgrind_review/valgrind_ISA2_05/memcheck/tests/ppc64' make[1]: *** [check-am] Error 2 make[1]: Leaving directory `/tmp/Valgrind_review/valgrind_ISA2_05/memcheck/tests/ppc64' make: *** [check-recursive] Error 1 ============================================= The patch that I will attach to this bug report fixes the problem by adding a configure check to determine if these phased out instructions are supported by the binutils, and the result of that configure check is used to decide whether or not to compile in the source for testing these instructions. Once I fixed the build problem, I encountered some runtime problems with the testcase. The testcase was improperly using registers in asm statements where it assumed those regs were not being clobbered in between the asm's, so I changed it to use variables.
Currently in SVN, there are two distinct source files for power_ISA2_05.c in memcheck/tests/ppc64 and memcheck/tests/ppc32. There was no reason for this, and it just makes for maintenance issues, so I fixed up the testcase source to be exactly the same for ppc32 and ppc64. If possible, we should remove one of these physical source files from SVN and make a symbolic link to the other.
The patch was tested and committed. The commit id is 13490.
I created a link from memcheck/tests/ppc32/power_ISA2_05.stdout.exp_Without_FPPO to memcheck/tests/ppc64/power_ISA2_05.stdout.exp_Without_FPPO thinking the files were identical. The files were not in fact identical. My mistake. I removed the link in commit 13505 and added the real file in commit 13506.