ppc64: fix struct stat
authorAurelien Jarno <aurelien@aurel32.net>
Sat, 25 Apr 2015 12:16:16 +0000 (14:16 +0200)
committerBen Hutchings <ben@decadent.org.uk>
Sat, 30 Dec 2017 22:09:36 +0000 (22:09 +0000)
On ppc64 the struct stat defined by klibc matches the kernel one.
However it contains implicit padding before the st_rdev field due to the
64-bit alignement. For internal reasons, klibc defines st_rdev as a pair
of 32-bit values (using the __stdev64 macro). They only need to be
32-bit aligned and as a consequence st->st_rdev is incorrectly defined.

The solution is to add an explicit padding in the structure. This fixes
the resume binary on ppc64 BE and LE, and probably other things.

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Gbp-Pq: Name klibc-ppc64-fix-struct-stat.patch

usr/include/arch/ppc64/klibc/archstat.h

index 918d81021b1a931f76eb235803033fbd506f485d..0bbbff3b53b583802b0c5dc849dc4a982968a35e 100644 (file)
@@ -12,6 +12,7 @@ struct stat {
        mode_t          st_mode;
        uid_t           st_uid;
        gid_t           st_gid;
+       unsigned int    __pad1;
        __stdev64       (st_rdev);
        off_t           st_size;
        unsigned long   st_blksize;