From: James Hogan <james.hogan@imgtec.com>
To: Leon Alrae <leon.alrae@imgtec.com>, qemu-devel@nongnu.org
Cc: riku.voipio@iki.fi, aurelien@aurel32.net
Subject: Re: [Qemu-devel] [PATCH] linux-user: correct stat structure in MIPS N32
Date: Mon, 9 Feb 2015 12:06:43 +0000 [thread overview]
Message-ID: <54D8A2D3.6050603@imgtec.com> (raw)
In-Reply-To: <1422630485-29975-1-git-send-email-leon.alrae@imgtec.com>
[-- Attachment #1: Type: text/plain, Size: 3933 bytes --]
Hi Leon,
On 30/01/15 15:08, Leon Alrae wrote:
> Simple "hello world" MIPS N32 userland program crashes with segfault due to
> incorrectly defined stat structure in QEMU.
>
> Correct "target_stat" definition to match kernel's "stat64" as in MIPS N32
> there are only plain "stat" syscalls using 64-bit structure.
>
> Reported-by: Daniel Sanders <daniel.sanders@imgtec.com>
> Signed-off-by: Leon Alrae <leon.alrae@imgtec.com>
> Tested-by: Daniel Sanders <daniel.sanders@imgtec.com>
Reviewed-by: James Hogan <james.hogan@imgtec.com>
Cheers
James
> ---
> linux-user/syscall_defs.h | 86 +++++++++++------------------------------------
> 1 file changed, 19 insertions(+), 67 deletions(-)
>
> diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
> index ebb3be1..0fc4317 100644
> --- a/linux-user/syscall_defs.h
> +++ b/linux-user/syscall_defs.h
> @@ -1600,73 +1600,25 @@ struct target_stat {
> #elif defined(TARGET_ABI_MIPSN32)
>
> struct target_stat {
> - unsigned st_dev;
> - int st_pad1[3]; /* Reserved for network id */
> - unsigned int st_ino;
> - unsigned int st_mode;
> - unsigned int st_nlink;
> - int st_uid;
> - int st_gid;
> - unsigned st_rdev;
> - unsigned int st_pad2[2];
> - unsigned int st_size;
> - unsigned int st_pad3;
> - /*
> - * Actually this should be timestruc_t st_atime, st_mtime and st_ctime
> - * but we don't have it under Linux.
> - */
> - unsigned int target_st_atime;
> - unsigned int target_st_atime_nsec;
> - unsigned int target_st_mtime;
> - unsigned int target_st_mtime_nsec;
> - unsigned int target_st_ctime;
> - unsigned int target_st_ctime_nsec;
> - unsigned int st_blksize;
> - unsigned int st_blocks;
> - unsigned int st_pad4[14];
> -};
> -
> -/*
> - * This matches struct stat64 in glibc2.1, hence the absolutely insane
> - * amounts of padding around dev_t's. The memory layout is the same as of
> - * struct stat of the 64-bit kernel.
> - */
> -
> -#define TARGET_HAS_STRUCT_STAT64
> -struct target_stat64 {
> - unsigned int st_dev;
> - unsigned int st_pad0[3]; /* Reserved for st_dev expansion */
> -
> - target_ulong st_ino;
> -
> - unsigned int st_mode;
> - unsigned int st_nlink;
> -
> - int st_uid;
> - int st_gid;
> -
> - unsigned int st_rdev;
> - unsigned int st_pad1[3]; /* Reserved for st_rdev expansion */
> -
> - int st_size;
> -
> - /*
> - * Actually this should be timestruc_t st_atime, st_mtime and st_ctime
> - * but we don't have it under Linux.
> - */
> - int target_st_atime;
> - unsigned int target_st_atime_nsec; /* Reserved for st_atime expansion */
> -
> - int target_st_mtime;
> - unsigned int target_st_mtime_nsec; /* Reserved for st_mtime expansion */
> -
> - int target_st_ctime;
> - unsigned int target_st_ctime_nsec; /* Reserved for st_ctime expansion */
> -
> - unsigned int st_blksize;
> - unsigned int st_pad2;
> -
> - int st_blocks;
> + abi_ulong st_dev;
> + abi_ulong st_pad0[3]; /* Reserved for st_dev expansion */
> + uint64_t st_ino;
> + unsigned int st_mode;
> + unsigned int st_nlink;
> + int st_uid;
> + int st_gid;
> + abi_ulong st_rdev;
> + abi_ulong st_pad1[3]; /* Reserved for st_rdev expansion */
> + int64_t st_size;
> + abi_long target_st_atime;
> + abi_ulong target_st_atime_nsec; /* Reserved for st_atime expansion */
> + abi_long target_st_mtime;
> + abi_ulong target_st_mtime_nsec; /* Reserved for st_mtime expansion */
> + abi_long target_st_ctime;
> + abi_ulong target_st_ctime_nsec; /* Reserved for st_ctime expansion */
> + abi_ulong st_blksize;
> + abi_ulong st_pad2;
> + int64_t st_blocks;
> };
>
> #elif defined(TARGET_ABI_MIPSO32)
>
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
prev parent reply other threads:[~2015-02-09 12:06 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-30 15:08 [Qemu-devel] [PATCH] linux-user: correct stat structure in MIPS N32 Leon Alrae
2015-02-09 12:06 ` James Hogan [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=54D8A2D3.6050603@imgtec.com \
--to=james.hogan@imgtec.com \
--cc=aurelien@aurel32.net \
--cc=leon.alrae@imgtec.com \
--cc=qemu-devel@nongnu.org \
--cc=riku.voipio@iki.fi \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.