[cfarm-users] Same binary behaves differently on cfarm435 and cfarm121, both big-endian powerpc64-linux machines

Pierre Muller pierre at freepascal.org
Sat Apr 18 19:57:39 CEST 2026


   Hi,

I wanted to share with you a surprising result when I tried to use cfarm435.
The only difference I saw on
https://portal.cfarm.net/machines/list/
is that PAGESIZE=64k for cfarm435
while the default seems to be PAGESIZE=4k
(which is the case of cfarm436, nothing is said about cfarm121...)

As this is a big-endian powerpc64-linux test machine,
I simply copied over some software (the latest release of Free Pascal version 3.2.2).


Most things seems 'normal' with similar behavior.
But when I wanted to try to use the 32-bit binary that I installed into
/home/muller/pas/fpc-3.2.2-32/bin/ppcppc

I got a surprising failure, due to the fact that even a simple call with
ppcppc -iV
  we is supposed to output a single line containing just the version, i.e. "3.2.2" in that case,
I do get a different result on gcc435.

muller at cfarm121:~$  pas/fpc-3.2.2-32/bin/ppcppc -iV
3.2.2

But on
muller at cfarm435:~$  pas/fpc-3.2.2-32/bin/ppcppc -iV
Warning: Target is already registered!
Warning: Target is already registered!
Warning: Target is already registered!
Warning: Target is already registered!
Warning: Target is already registered!
Warning: Target is already registered!
3.2.2

Using GDB on that binary the written warning is clearly due to
the fact that some memory in .data section seems to be filled with zeroes
on gcc435, while the contain normally a record (pascal equivalent of a struct)
with lots of non-zero fields...

The value of the first field is a index (from 1 to 103), for all systems (combination of CPU and OS) used.
The fact that a function called RegisterTarget gets called several time
with the same empty record leads to this strange behavior.

Is there a known issue about using 32-bit executable on 64k page-size powerpc64 linux OS?
Using a 64 to 32bit cross-compiler, I was able to generate 32-bit newer versions
of the compiler (main and fixes_3_2 gitlab branches),
these two executables seem to work as expected.

Does anyone have any clue on this strange behavior?

Pierre Muller
member of the core developer team of Free Pascal




More information about the cfarm-users mailing list