[fpc-pascal] ppc64le ABI problem

Pierre Muller pierre at freepascal.org
Mon Aug 26 23:22:01 CEST 2019



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;


More information about the fpc-pascal mailing list