On 11/08/2022 23.38, Pierre Muller wrote:

   I am using qemu to check code generated by Free Pascal compiler
for various CPUs.

   Recently, this allowed me to find out that Free Pascal was generating
wrong instructions, leading to SIGBUS errors using qemu-mips.
   The same binaries worked without troubles on mips test machines,
probably because SIGBUS is handled directly inside the kernel.

   Here I would like to report the problem I get when trying to run
powerpc executables using shared libs generated on gcc110 machine.

   I copied over the needed libraries into a sys-root directory.

   The problem is that the code crashes with a Illegal Instruction
after only a very few instructions:

muller@gcc186:~/pas/check$ ~/sys-root/bin/qemu-ppc -cpu g2 -d in_asm -L ~/sys-root/powerpc-linux ./twide1
[...]
0x3ffc1d60:  f00004d7  xxlxor   v0, v0, v0

qemu: uncaught target signal 4 (Illegal instruction) - core dumped

The problem is the the 'xxlxor' instruction is a VSX extension instruction.

 There is apparently no cpu in the powerpc cpu list that enabled this extension.
The output of cat /proc/cpuinfo on gcc110 gives that:
.....
processor       : 63
cpu             : POWER7 (architected), altivec supported
clock           : 3550.000000MHz
revision        : 2.1 (pvr 003f 0201)

timebase        : 512000000
platform        : pSeries
model           : IBM,8231-E2B
machine         : CHRP IBM,8231-E2B

  Is there a way to enable cpu features separately for ppc like is done for x86_64?
Or would it be possible to define a new cpu inside qemu source that would match
the description above?

So you are building on a POWER7 host and try to run the binaries on an emulated G2? That sounds weird. Why don't you use

 qemu-ppc64 -cpu power7 ...

?

 Thomas



Reply via email to