[fpc-pascal] ppc64le ABI problem

tobiasgiesen at gmail.com tobiasgiesen at gmail.com
Tue Aug 27 01:37:51 CEST 2019


Hi Pierre,

wow that was fast and it works now! Lazarus (trunk) now compiles and
runs without any changes on a POWER9 machine in little endian mode :=)

Very beautiful! I couldn't be happier. Good work everyone!

I'm running it on Ubuntu but I have also installed a few other Linux
distributions, all with GUI on this machine. One of them runs with both
little and big endian flavors (Void Linux). Will test Lazarus on all of
them soon (not sure if big endian will work though, but that's not
important). If anybody would like a near silent POWER9 system at home,
I can really recommend the new Blackbird mainboard with CPU bundles
from Raptor CS. The lower cost 4-core CPU uses so little power you
hardly even need a fan for it.

Cheers,
Tobias


----

On Mon, 26 Aug 2019 23:22:01 +0200
Pierre Muller <pierre at freepascal.org> wrote:

> 
> 
> Le 26/08/2019 à 22:46, tobiasgiesen at gmail.com a écrit :
> > Hi Jonas,
> > 
> > fantastic, that looks great. I think now I can just wait until Pierre
> > Muller's snapshot is updated :=)
> 
> 
>   As I followed the thread, I made a special issue for you,
> you should find the new snapshot of ftp site:
> 
> 
> $ cat  ftp/snapshot/trunk/powerpc64-linux/README-powerpc64-linux
> This  snapshot was generated 2019-08-26 using:
> make distclean singlezipinstall SNAPSHOT=1 NOGDB=1 DEBUG=1 NOWPOCYCLE=1 OPT=" -Fl/usr/lib64 -Fl/lib64 -Fd -Fl/usr/lib/gcc/ppc64le-redhat-linux/4.8.5"
> started using /home/muller/pas/fpc-3.3.1/bin/ppcppc64
> ppcppc64 -iVDW output is: 3.3.1 2019/08/26 3.3.1
> 
> uname -a of the machine is:
> Linux gcc2-power8.osuosl.org 3.10.0-957.10.1.el7.ppc64le #1 SMP Thu Mar 14 11:25:48 GMT 2019 ppc64le ppc64le ppc64le GNU/Linux
> 
> "svnversion -c ." output is: 1:1415
> 
> "svnversion -c fpcsrc" output is: 1:42841M
> 
> Enjoy,
> 
> Pierre Muller
> 
> PS: note that I do have local modifications that I did not have time to really check...
> Most are probably not significant, but:
> 
> [muller at gcc2-power8 fpcsrc]$ svn diff
> Index: rtl/linux/ostypes.inc
> ===================================================================
> --- rtl/linux/ostypes.inc       (revision 42841)
> +++ rtl/linux/ostypes.inc       (working copy)
> @@ -170,8 +170,8 @@
>     FLock     = Record
>                  l_type  : cshort;       { lock type: read/write, etc. }
>                  l_whence: cshort;       { type of l_start }
> -                l_start : kernel_off_t; { starting offset }
> -                l_len   : kernel_off_t; { len = 0 means until end of file }
> +                l_start : off_t;        { starting offset }
> +                l_len   : off_t;        { len = 0 means until end of file }
>                  l_pid   : pid_t;        { lock owner }
>  {$if defined(cpusparc) or defined(cpusparc64)}
>                  __pad   : cshort;
> @@ -386,7 +386,7 @@
>    RLIMIT_LOCKS = 10;    { maximum file locks held  }
> 
>  type
> -  rlim_t = cULong;
> +  rlim_t = cULongLong;
>    PRLimit = ^TRLimit;
>    TRLimit = record
>      rlim_cur : rlim_t;
> Index: rtl/linux/powerpc/stat.inc
> ===================================================================
> --- rtl/linux/powerpc/stat.inc  (revision 42841)
> +++ rtl/linux/powerpc/stat.inc  (working copy)
> @@ -35,9 +35,9 @@
>          st_rdev   : culonglong;
>          __pad2_    : cushort;
>          st_size   : clonglong;
> -        st_blksize: clong;
> +        st_blksize: blksize_t;
> 
> -        st_blocks : clonglong;
> +        st_blocks : culonglong;
>          st_atime  : clong;
>          st_atime_nsec : culong;
>          st_mtime  : clong;
> Index: rtl/linux/powerpc64/stat.inc
> ===================================================================
> --- rtl/linux/powerpc64/stat.inc        (revision 42841)
> +++ rtl/linux/powerpc64/stat.inc        (working copy)
> @@ -43,5 +43,7 @@
>        st_mtime_nsec : cULong;
>        st_ctime : cULong;
>        st_ctime_nsec : cULong;
> -      __unused : array[0..2] of cULong;
> +      __unused4 : culong;
> +      __unused5 : culong;
> +      __unused6 : culong;
>    end;
> Index: rtl/linux/ptypes.inc
> ===================================================================
> --- rtl/linux/ptypes.inc        (revision 42841)
> +++ rtl/linux/ptypes.inc        (working copy)
> @@ -206,7 +206,7 @@
>      bfree,             { free blocks in system }
>      bavail,            { Available free blocks to non-root users }
>      files,             { File nodes in system }
> -    ffree   : culong;  { Free file nodes in system }
> +    ffree   :{$ifdef cpupowerpc}culonglong{$else}culong{$endif};  { Free file nodes in system }
>      fsid    : array[0..1] of cint;          { File system ID }
>      namelen,           { Maximum name length in system }
>      frsize  : cint;
> _______________________________________________
> fpc-pascal maillist  -  fpc-pascal at lists.freepascal.org
> https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Kind Regards,
Tobias Giesen

Super Flexible Software GmbH & Co. KG
Buddenstr. 29-31
48143 Münster, Germany
www.superflexible.com
www.tgtools.com

-----------------------------------------------------------
Registered at register court Münster as HRA 9716
Liability / general partner: TGTools GmbH
Registered at register court Münster as HRB 17763
Directors: Tobias Giesen and Claudia Giesen



More information about the fpc-pascal mailing list