summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rtl/linux/ossysc.inc3
-rw-r--r--rtl/linux/sparc64/stat.inc4
2 files changed, 4 insertions, 3 deletions
diff --git a/rtl/linux/ossysc.inc b/rtl/linux/ossysc.inc
index 6e802b480c..1d97afa4b3 100644
--- a/rtl/linux/ossysc.inc
+++ b/rtl/linux/ossysc.inc
@@ -122,7 +122,8 @@ end;
function Fpstat(path: pchar; var buf: stat):cint; [public, alias : 'FPC_SYSC_STAT'];
begin
-{$if defined(cpu64)}
+{ standard stat call is 32 bit on sparc64, so explicitly force a stat64 call }
+{$if defined(cpu64) and not(defined(cpusparc64))}
{$if defined(generic_linux_syscalls)}
Fpstat:=do_syscall(syscall_nr_fstatat,AT_FDCWD,TSysParam(path),TSysParam(@buf),0);
{$else}
diff --git a/rtl/linux/sparc64/stat.inc b/rtl/linux/sparc64/stat.inc
index 720203bb72..dcd594c2a0 100644
--- a/rtl/linux/sparc64/stat.inc
+++ b/rtl/linux/sparc64/stat.inc
@@ -12,6 +12,8 @@
**********************************************************************}
+{$PACKRECORDS C}
+
{$IFNDEF FPC_USE_LIBC}
{ do NOT declare this record as packed, because it needs to be aligned }
@@ -43,8 +45,6 @@
{$ELSE FPC_USE_LIBC}
-{$PACKRECORDS C}
-
Stat = record
st_dev : cULongLong;
st_ino : cULongLong;