[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] linux-user: Fix target_stat and target_stat64 f
From: |
Peter Maydell |
Subject: |
Re: [Qemu-devel] [PATCH] linux-user: Fix target_stat and target_stat64 for OpenRISC |
Date: |
Thu, 18 Jul 2013 11:18:14 +0100 |
Ping?
thanks
-- PMM
On 6 July 2013 21:44, Peter Maydell <address@hidden> wrote:
> OpenRISC uses the asm-generic versions of target_stat and
> target_stat64, but it was incorrectly using the x86/ARM/etc version
> due to a misplaced defined(TARGET_OPENRISC). The previously unused
> OpenRISC section of the ifdef ladder also defined an incorrect
> target_stat and omitted the target_stat64 definition. Fix
> target_stat, provide target_stat64, and add a comment noting that
> these are the asm-generic versions for the benefit of future ports.
>
> Signed-off-by: Peter Maydell <address@hidden>
> ---
> This fixes basic problems like "ls -l output is nonsense" and "shell
> thinks programs aren't executable and won't run them".
>
> linux-user/syscall_defs.h | 49
> ++++++++++++++++++++++++++++++++++-----------
> 1 file changed, 37 insertions(+), 12 deletions(-)
>
> diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
> index 92c01a9..cb6341f 100644
> --- a/linux-user/syscall_defs.h
> +++ b/linux-user/syscall_defs.h
> @@ -1138,8 +1138,7 @@ struct target_winsize {
> #endif
>
> #if (defined(TARGET_I386) && defined(TARGET_ABI32)) || defined(TARGET_ARM) \
> - || defined(TARGET_CRIS) || defined(TARGET_UNICORE32) \
> - || defined(TARGET_OPENRISC)
> + || defined(TARGET_CRIS) || defined(TARGET_UNICORE32)
> struct target_stat {
> unsigned short st_dev;
> unsigned short __pad1;
> @@ -1837,29 +1836,55 @@ struct target_stat {
> abi_ulong __unused[3];
> };
> #elif defined(TARGET_OPENRISC)
> +
> +/* These are the asm-generic versions of the stat and stat64 structures */
> +
> struct target_stat {
> abi_ulong st_dev;
> abi_ulong st_ino;
> - abi_ulong st_nlink;
> -
> unsigned int st_mode;
> + unsigned int st_nlink;
> unsigned int st_uid;
> unsigned int st_gid;
> - unsigned int __pad0;
> abi_ulong st_rdev;
> + abi_ulong __pad1;
> abi_long st_size;
> - abi_long st_blksize;
> - abi_long st_blocks; /* Number 512-byte blocks allocated. */
> -
> - abi_ulong target_st_atime;
> + int st_blksize;
> + int __pad2;
> + abi_long st_blocks;
> + abi_long target_st_atime;
> abi_ulong target_st_atime_nsec;
> - abi_ulong target_st_mtime;
> + abi_long target_st_mtime;
> abi_ulong target_st_mtime_nsec;
> - abi_ulong target_st_ctime;
> + abi_long target_st_ctime;
> abi_ulong target_st_ctime_nsec;
> + unsigned int __unused4;
> + unsigned int __unused5;
> +};
>
> - abi_long __unused[3];
> +struct target_stat64 {
> + uint64_t st_dev;
> + uint64_t st_ino;
> + unsigned int st_mode;
> + unsigned int st_nlink;
> + unsigned int st_uid;
> + unsigned int st_gid;
> + uint64_t st_rdev;
> + uint64_t __pad1;
> + int64_t st_size;
> + int st_blksize;
> + int __pad2;
> + int64_t st_blocks;
> + int target_st_atime;
> + unsigned int target_st_atime_nsec;
> + int target_st_mtime;
> + unsigned int target_st_mtime_nsec;
> + int target_st_ctime;
> + unsigned int target_st_ctime_nsec;
> + unsigned int __unused4;
> + unsigned int __unused5;
> };
> +
> #else
> #error unsupported CPU
> #endif
> --
> 1.7.9.5
>
>