stat64 on sparc64 failed to get correct major/minor dev Description of problem: The reported device major/minor is not correct, e.g: stat /dev/zero: Reported: Device type: 0,10500000 Correct : Device type: 1,5 Steps to reproduce: 1. "stat /dev/zero" or "ls -l /dev/zero" Additional information: The problem is a missing padding into target_stat64 struct related to sparc64. Here patch to solve the issue (it also fixes some incorrect variables size): ``` --- qemu-20230327/linux-user/syscall_defs.h 2023-03-27 15:41:42.000000000 +0200 +++ qemu-20230327/linux-user/syscall_defs.h.new 2023-03-27 21:43:25.615115126 +0200 @@ -1450,7 +1450,7 @@ struct target_stat { unsigned int st_dev; abi_ulong st_ino; unsigned int st_mode; - unsigned int st_nlink; + short int st_nlink; unsigned int st_uid; unsigned int st_gid; unsigned int st_rdev; @@ -1465,8 +1465,7 @@ struct target_stat { #define TARGET_HAS_STRUCT_STAT64 struct target_stat64 { - unsigned char __pad0[6]; - unsigned short st_dev; + uint64_t st_dev; uint64_t st_ino; uint64_t st_nlink; @@ -1476,14 +1475,13 @@ struct target_stat64 { unsigned int st_uid; unsigned int st_gid; - unsigned char __pad2[6]; - unsigned short st_rdev; + unsigned int __pad0; + uint64_t st_rdev; int64_t st_size; int64_t st_blksize; - unsigned char __pad4[4]; - unsigned int st_blocks; + int64_t st_blocks; abi_ulong target_st_atime; abi_ulong target_st_atime_nsec; @@ -1522,8 +1520,7 @@ struct target_stat { #define TARGET_HAS_STRUCT_STAT64 struct target_stat64 { - unsigned char __pad0[6]; - unsigned short st_dev; + uint64_t st_dev; uint64_t st_ino; @@ -1533,8 +1530,7 @@ struct target_stat64 { unsigned int st_uid; unsigned int st_gid; - unsigned char __pad2[6]; - unsigned short st_rdev; + uint64_t st_rdev; unsigned char __pad3[8]; ```