qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: stat64 wrong on sparc64 user


From: Richard Henderson
Subject: Re: stat64 wrong on sparc64 user
Date: Tue, 28 Mar 2023 07:52:08 -0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0

On 3/28/23 04:48, Luca Bonissi wrote:
On qemu-sparc64 (userspace) the struct "target_stat64" is not correctly padded, so the field st_rdev is not correctly aligned and will report wrong major/minor (e.g. for /dev/zero it reports 0,0x10500000 instead of 1,5).

Here patch to solve the issue (it also fixes incorrect size on some fields):

--- 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;

All use of the normal C types is wrong for target structs.
You must use abi_{short,int,long} etc.

Otherwise, you may not get the alignment you're expecting.


r~



reply via email to

[Prev in Thread] Current Thread [Next in Thread]