From nobody Sun May 19 06:50:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1562080990; cv=none; d=zoho.com; s=zohoarc; b=K+hq3w2nJzlt/AOY3sUAlEAYS1TabH3cCsebfgFg/vBIYZL7HNAGpTCpnOq5Qyvv2WazM1GqUoWkNKA/55ktX7EzISxojZWDDAk+zF23Ilp3+BbyYCXlvjgIRVQXWib9CM3PeKwkcFk+je55TGzCnExzvd8HPeg8EpRG1sGXErc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1562080990; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=XG751eaMqVajJCN1JWjtBzHrhIDYJlW7pOXX2Ldks7k=; b=Bbl20cKjRXyMbpZoM+nAmeL8ZVTMQEqX3fYhpbXla7U8UqI+LAPMwCBvd7dbDbjXHsuhoTR9+BKkN67Cahr4Ai+I0yjFiLWPs7+cWvkWkrAMf0nh3F6RfR/zE2ErdCbR35VxWhpDQbO/CincIDJR8KIZrru3jUKSb6vYVgJlTUY= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 156208099080451.345602339670336; Tue, 2 Jul 2019 08:23:10 -0700 (PDT) Received: from localhost ([::1]:54442 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hiKcc-00040r-Mw for importer@patchew.org; Tue, 02 Jul 2019 11:23:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58184) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hiKMY-0005Kv-Td for qemu-devel@nongnu.org; Tue, 02 Jul 2019 11:06:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hiKMW-0007zo-Ou for qemu-devel@nongnu.org; Tue, 02 Jul 2019 11:06:30 -0400 Received: from mout.kundenserver.de ([212.227.17.13]:52929) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hiKMU-0007rr-OO for qemu-devel@nongnu.org; Tue, 02 Jul 2019 11:06:28 -0400 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MCsDe-1hr5nP2YyW-008qRP; Tue, 02 Jul 2019 17:05:56 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Tue, 2 Jul 2019 17:05:40 +0200 Message-Id: <20190702150545.1872-2-laurent@vivier.eu> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190702150545.1872-1-laurent@vivier.eu> References: <20190702150545.1872-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:0DtDsipeI5xlKBzZ5zAjkIoh/fOmHbm+Y2u1jqMhF9/ErZnybl6 nimhTIyeJOFlqkhWenc65zY4vtN8K6PFHbp/r3RJkWKFjFgOvK0FgzmtM/XXdOxvqLIwmf1 WqTTuDtUZ85AXOZjAnxoe//RLdy/8UqFgBru9SfwbF0lycVwoFEU1+EPSuG+MarR0ZgVSFz qvdESXFrxQ/SI0o60T9qA== X-UI-Out-Filterresults: notjunk:1;V03:K0:Os+IG9qFYuE=:mrU00nF2eURaZnr3yl9LZR e5aYe8GEJtUFxbhcsMkazkiNcSh3jT6fOhOxKaDLK91V/5XcG8TrW+MRA7Z3Cpkfg49h72GV7 22jRsrqRXnt8TaktN7uCmSOY0Sw2WyYZmUKu5VSjobhg3VU652iejA2NNucrtSAACNgzWbXJV PGQEYJLBhjZswHmnDZflTIoyA63J85vWkYQgUE1zNJfcH9w3T6hPXm9fhk3qGkU2f/H4r1GFN qCGo+XMxx99Oqmdk2eM5VwqP8lx6oQxnof/g0MuJF10HV/iarwpHArnbs1S1XOcvipkbaiRyy MUSfLfcqXs80MEQs77oZBQOAnTETFDSILwdv3CTrgQKg+XPbjKLQ8KBVdEFzDRvn0pQSruTRp g0zGXtoRwYJhMmf7mUpHrD0eHS/kCjKIpoJgKoUbh/g+4irn9xj3FhO19uY4YeTgE+aD63b0T nqBjh11jAK3XuE8yH9fSxSEVgHuhilYXteAThJXtpYY8TI2TrtjlrK0JcP/uacm7ULFd56UaI VfkrD6nGdndD90jfm/tAMI4aNnX8BSaydZ2EonQH0DcyZFulg9MlVRvfnw8e+NHHc47XLgxR3 u1g1y6zV4A4BcO0T7OstEId55MBzEokguaDXZ3LQQNF/RKVEFB18BBRh7MhHZ9aQPuy5J4xWl i6/nUMxeHABLAfOwY8sQoRGGnM2BImUPjqEqzGT2wcLjf0ZoOXB3OwqKZBcR3ek1dCMbjZ/da yyODuQbetmN9RRlxAI0WgugRGor4STPsERkaxg== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 212.227.17.13 Subject: [Qemu-devel] [PULL 1/6] linux-user: Add support for translation of statx() syscall X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Aleksandar Markovic , Riku Voipio , Laurent Vivier , Aurelien Jarno Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Aleksandar Rikalo Implement support for translation of system call statx(). The implementation is based on "best effort" approach: if host is capable of executing statx(), host statx() is used. If not, the implementation includes invoking a more mature system call fstatat() on the host side to achieve as close as possible functionality. Support for statx() in kernel and glibc was, however, introduced at different points of time (the difference is more than a year): - kernel: Linux 4.11 (30 April 2017) - glibc: glibc 2.28 (1 Aug 2018) In this patch, the availability of statx() support is established via __NR_statx (if it is defined, statx() is considered available). This coincedes with statx() introduction in kernel. However, the structure statx definition may not be available in any header for hosts with glibc older than 2.28 (and it is, by design, to be defined in one of glibc headers), even though the full statx() functionality may be supported in kernel. Hence, a structure "target_statx" is defined in this patch, to remove that dependency on glibc headers, and to use statx() functionality as soon as the host kernel is capable of supporting it. Such statx structure definition is used for both target and host structures statx (of course, this doesn't mean the endian arrangement is the same on target and host - the endian conversion is done in all necessary cases). Signed-off-by: Aleksandar Rikalo Signed-off-by: Aleksandar Markovic Reviewed-by: Laurent Vivier Message-Id: <1561718618-20218-2-git-send-email-aleksandar.markovic@rt-rk.co= m> Signed-off-by: Laurent Vivier --- linux-user/syscall.c | 115 +++++++++++++++++++++++++++++++++++++- linux-user/syscall_defs.h | 37 ++++++++++++ 2 files changed, 151 insertions(+), 1 deletion(-) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index d2c9817938c9..39a37496fed5 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -238,6 +238,7 @@ static type name (type1 arg1,type2 arg2,type3 arg3,type= 4 arg4,type5 arg5, \ #define __NR_sys_inotify_init __NR_inotify_init #define __NR_sys_inotify_add_watch __NR_inotify_add_watch #define __NR_sys_inotify_rm_watch __NR_inotify_rm_watch +#define __NR_sys_statx __NR_statx =20 #if defined(__alpha__) || defined(__x86_64__) || defined(__s390x__) #define __NR__llseek __NR_lseek @@ -316,6 +317,14 @@ _syscall5(int, kcmp, pid_t, pid1, pid_t, pid2, int, ty= pe, unsigned long, idx1, unsigned long, idx2) #endif =20 +/* + * It is assumed that struct statx is architecture independent. + */ +#if defined(TARGET_NR_statx) && defined(__NR_statx) +_syscall5(int, sys_statx, int, dirfd, const char *, pathname, int, flags, + unsigned int, mask, struct target_statx *, statxbuf) +#endif + static bitmask_transtbl fcntl_flags_tbl[] =3D { { TARGET_O_ACCMODE, TARGET_O_WRONLY, O_ACCMODE, O_WRONLY, }, { TARGET_O_ACCMODE, TARGET_O_RDWR, O_ACCMODE, O_RDWR, }, @@ -6516,6 +6525,48 @@ static inline abi_long host_to_target_stat64(void *c= pu_env, } #endif =20 +#if defined(TARGET_NR_statx) && defined(__NR_statx) +static inline abi_long host_to_target_statx(struct target_statx *host_stx, + abi_ulong target_addr) +{ + struct target_statx *target_stx; + + if (!lock_user_struct(VERIFY_WRITE, target_stx, target_addr, 0)) { + return -TARGET_EFAULT; + } + memset(target_stx, 0, sizeof(*target_stx)); + + __put_user(host_stx->stx_mask, &target_stx->stx_mask); + __put_user(host_stx->stx_blksize, &target_stx->stx_blksize); + __put_user(host_stx->stx_attributes, &target_stx->stx_attributes); + __put_user(host_stx->stx_nlink, &target_stx->stx_nlink); + __put_user(host_stx->stx_uid, &target_stx->stx_uid); + __put_user(host_stx->stx_gid, &target_stx->stx_gid); + __put_user(host_stx->stx_mode, &target_stx->stx_mode); + __put_user(host_stx->stx_ino, &target_stx->stx_ino); + __put_user(host_stx->stx_size, &target_stx->stx_size); + __put_user(host_stx->stx_blocks, &target_stx->stx_blocks); + __put_user(host_stx->stx_attributes_mask, &target_stx->stx_attributes_= mask); + __put_user(host_stx->stx_atime.tv_sec, &target_stx->stx_atime.tv_sec); + __put_user(host_stx->stx_atime.tv_nsec, &target_stx->stx_atime.tv_nsec= ); + __put_user(host_stx->stx_btime.tv_sec, &target_stx->stx_atime.tv_sec); + __put_user(host_stx->stx_btime.tv_nsec, &target_stx->stx_atime.tv_nsec= ); + __put_user(host_stx->stx_ctime.tv_sec, &target_stx->stx_atime.tv_sec); + __put_user(host_stx->stx_ctime.tv_nsec, &target_stx->stx_atime.tv_nsec= ); + __put_user(host_stx->stx_mtime.tv_sec, &target_stx->stx_atime.tv_sec); + __put_user(host_stx->stx_mtime.tv_nsec, &target_stx->stx_atime.tv_nsec= ); + __put_user(host_stx->stx_rdev_major, &target_stx->stx_rdev_major); + __put_user(host_stx->stx_rdev_minor, &target_stx->stx_rdev_minor); + __put_user(host_stx->stx_dev_major, &target_stx->stx_dev_major); + __put_user(host_stx->stx_dev_minor, &target_stx->stx_dev_minor); + + unlock_user_struct(target_stx, target_addr, 1); + + return 0; +} +#endif + + /* ??? Using host futex calls even when target atomic operations are not really atomic probably breaks things. However implementing futexes locally would make futexes shared between multiple processes @@ -7094,7 +7145,8 @@ static abi_long do_syscall1(void *cpu_env, int num, a= bi_long arg1, abi_long ret; #if defined(TARGET_NR_stat) || defined(TARGET_NR_stat64) \ || defined(TARGET_NR_lstat) || defined(TARGET_NR_lstat64) \ - || defined(TARGET_NR_fstat) || defined(TARGET_NR_fstat64) + || defined(TARGET_NR_fstat) || defined(TARGET_NR_fstat64) \ + || defined(TARGET_NR_statx) struct stat st; #endif #if defined(TARGET_NR_statfs) || defined(TARGET_NR_statfs64) \ @@ -10172,6 +10224,67 @@ static abi_long do_syscall1(void *cpu_env, int num= , abi_long arg1, ret =3D host_to_target_stat64(cpu_env, arg3, &st); return ret; #endif +#if defined(TARGET_NR_statx) + case TARGET_NR_statx: + { + struct target_statx *target_stx; + int dirfd =3D arg1; + int flags =3D arg3; + + p =3D lock_user_string(arg2); + if (p =3D=3D NULL) { + return -TARGET_EFAULT; + } +#if defined(__NR_statx) + { + /* + * It is assumed that struct statx is architecture indepen= dent. + */ + struct target_statx host_stx; + int mask =3D arg4; + + ret =3D get_errno(sys_statx(dirfd, p, flags, mask, &host_s= tx)); + if (!is_error(ret)) { + if (host_to_target_statx(&host_stx, arg5) !=3D 0) { + unlock_user(p, arg2, 0); + return -TARGET_EFAULT; + } + } + + if (ret !=3D -TARGET_ENOSYS) { + unlock_user(p, arg2, 0); + return ret; + } + } +#endif + ret =3D get_errno(fstatat(dirfd, path(p), &st, flags)); + unlock_user(p, arg2, 0); + + if (!is_error(ret)) { + if (!lock_user_struct(VERIFY_WRITE, target_stx, arg5, 0)) { + return -TARGET_EFAULT; + } + memset(target_stx, 0, sizeof(*target_stx)); + __put_user(major(st.st_dev), &target_stx->stx_dev_major); + __put_user(minor(st.st_dev), &target_stx->stx_dev_minor); + __put_user(st.st_ino, &target_stx->stx_ino); + __put_user(st.st_mode, &target_stx->stx_mode); + __put_user(st.st_uid, &target_stx->stx_uid); + __put_user(st.st_gid, &target_stx->stx_gid); + __put_user(st.st_nlink, &target_stx->stx_nlink); + __put_user(major(st.st_rdev), &target_stx->stx_rdev_major); + __put_user(minor(st.st_rdev), &target_stx->stx_rdev_minor); + __put_user(st.st_size, &target_stx->stx_size); + __put_user(st.st_blksize, &target_stx->stx_blksize); + __put_user(st.st_blocks, &target_stx->stx_blocks); + __put_user(st.st_atime, &target_stx->stx_atime.tv_sec); + __put_user(st.st_mtime, &target_stx->stx_mtime.tv_sec); + __put_user(st.st_ctime, &target_stx->stx_ctime.tv_sec); + unlock_user_struct(target_stx, arg5, 1); + } + } + return ret; +#endif #ifdef TARGET_NR_lchown case TARGET_NR_lchown: if (!(p =3D lock_user_string(arg1))) diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index 3175440e9dd9..fffa89f2564b 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -2537,4 +2537,41 @@ struct target_user_cap_data { /* Return size of the log buffer */ #define TARGET_SYSLOG_ACTION_SIZE_BUFFER 10 =20 +struct target_statx_timestamp { + int64_t tv_sec; + uint32_t tv_nsec; + int32_t __reserved; +}; + +struct target_statx { + /* 0x00 */ + uint32_t stx_mask; /* What results were written [uncond] */ + uint32_t stx_blksize; /* Preferred general I/O size [uncond] */ + uint64_t stx_attributes; /* Flags conveying information about the file = */ + /* 0x10 */ + uint32_t stx_nlink; /* Number of hard links */ + uint32_t stx_uid; /* User ID of owner */ + uint32_t stx_gid; /* Group ID of owner */ + uint16_t stx_mode; /* File mode */ + uint16_t __spare0[1]; + /* 0x20 */ + uint64_t stx_ino; /* Inode number */ + uint64_t stx_size; /* File size */ + uint64_t stx_blocks; /* Number of 512-byte blocks allocated */ + uint64_t stx_attributes_mask; /* Mask to show what is supported */ + /* 0x40 */ + struct target_statx_timestamp stx_atime; /* Last access time */ + struct target_statx_timestamp stx_btime; /* File creation time */ + struct target_statx_timestamp stx_ctime; /* Last attribute change tim= e */ + struct target_statx_timestamp stx_mtime; /* Last data modification ti= me */ + /* 0x80 */ + uint32_t stx_rdev_major; /* Device ID of special file [if bdev/cdev] = */ + uint32_t stx_rdev_minor; + uint32_t stx_dev_major; /* ID of device containing file [uncond] */ + uint32_t stx_dev_minor; + /* 0x90 */ + uint64_t __spare2[14]; /* Spare space for future expansion */ + /* 0x100 */ +}; + #endif --=20 2.21.0 From nobody Sun May 19 06:50:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1562081135; cv=none; d=zoho.com; s=zohoarc; b=oAiWjaeN2D7ot6fFQI6WPKJyGLXR5zhWo6s4lSzDK1p0Vcr9S/cjcnK5khYF7FAtf+F0oF0LjgyjbNiFvbRf8fr/1ZrQT/kpIApbBM3tx8jH13mioJSx+CugACaryQLPRp0JqTXMfku0m5jnmb3dkv66m3PyB31dQZg24nV7fWc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1562081135; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=KCRYTzCpTcAX0Vs/nUMlr/fRaclS49bEVp4PMpvuGtA=; b=lW36onikfrpjuyP8Pio0jU7IcPVH87g5pMzFiaxXxMqtFtlSmnuFY2LRH4RBEBtt9hg65K48/mv90BCUxz9nbTsMtI2yRKq8kLcpWEkKcO81YZqLxxabSMgo13iz0BCfWm/kqxbeQCCtLvtzSJL9ifSl2JNgj5MFLWZ4Sg03LDQ= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1562081135993203.38484832963843; Tue, 2 Jul 2019 08:25:35 -0700 (PDT) Received: from localhost ([::1]:54468 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hiKex-0007ZI-RR for importer@patchew.org; Tue, 02 Jul 2019 11:25:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58213) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hiKMa-0005M2-Ur for qemu-devel@nongnu.org; Tue, 02 Jul 2019 11:06:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hiKMY-000814-Pp for qemu-devel@nongnu.org; Tue, 02 Jul 2019 11:06:32 -0400 Received: from mout.kundenserver.de ([217.72.192.73]:56767) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hiKMW-0007x0-Kk for qemu-devel@nongnu.org; Tue, 02 Jul 2019 11:06:28 -0400 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MEVqu-1hjvrD0O3W-00G06r; Tue, 02 Jul 2019 17:05:57 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Tue, 2 Jul 2019 17:05:41 +0200 Message-Id: <20190702150545.1872-3-laurent@vivier.eu> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190702150545.1872-1-laurent@vivier.eu> References: <20190702150545.1872-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:WK8GzMOzuu7ZumYWYKMbijZeysgQ9adw2JnZv0538E96Ct/A1RY y/lFXI6iSDGUCmqV1pjEW7ZFBHNQSqUd7aEtbzQsD49pG329j7m7vdaYN6w3CsUN7revIpA INNqqChDHH8Ygn/oAItveIvdcn5Z59PD3PuD8RT7f3eu5ykhtxDDIPVi5q1iJArXL2FSQ7i LW62UnzgWiuurlePSwEiw== X-UI-Out-Filterresults: notjunk:1;V03:K0:YBjUpnuuTto=:TrE3IbLKhViCag4t6cuXrw g0THmM7DOp1knZqUwHmkWSk/2yyIwpf4C5Wt6wV/fEOttxG5AbR6iaPhLetSg6v53Cr/wSxbD MfPPmGO+yyi3QwbIPzGCNuK+DUWOw0If9TACasaG2RI5DRdYvpGaNrL8zSUpdihDfrbqTXYwA VLbI2XbfBIf9cDi01LOtUSLANUB5T+zhjwfBNA6BpTAe7/QljKZdxBLSbOMqvzzqBkuo/Mkop MNFNeSE31lvlMuOtnrZatUBBghmlpJEnfGD+qaNlpjt4S26xy3Oi+QGWJ93ChCZL4XiQju/9b fwbfQkMEEhj9+QCeq+XemvsrZQwbJcNnCRx8UZYDE/P/IdZ1MlIofXt7lUb2nmq6cHH+l+f1a frlkmdhnDJNfJL3cr7mV8BqU2IjEJEPV9n3wD2CtDDoexLkBsYGA9M9Wu0llP3aKwHDo1ssk6 ZSYy/P87Gs609w/ls90vnchCFVp7bWlvqI+u7GI2AevZVuw7Ect8mT8aKxrr7LElBDdB5S0wK mlWrnNWqmHojO8WSxCM2e/Am2q7nXM9HnaSCD7JhIASaccbQDqyK17TgTeSv/m236apCdGOFO 32PH2480oeXti0sqnJjiIsQ+G7K4zYSrYmXQprboby+V+OST21hayu6Q4Mbp5/2dtQFDa0/+U SQoZ1VXFJEH7PMBazxeSjPDswShSqo4TLnstz9XYvjepLgPXmTf5hPBqnEXi5ehYaCepXEfDB nodjDIgij9LeLFzumMUfx9/HJ0/IYIpEjKn83A== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 217.72.192.73 Subject: [Qemu-devel] [PULL 2/6] linux-user: Add support for strace for statx() syscall X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Riku Voipio , Laurent Vivier , Aleksandar Markovic , Aurelien Jarno , Jim Wilson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Jim Wilson All of the flags need to be conditional as old systems don't have statx support. Otherwise it works the same as other stat family syscalls. This requires the pending patch to add statx support. Tested on Ubuntu 16.04 (no host statx) and Ubuntu 19.04 (with host statx) using a riscv32-linux toolchain. Signed-off-by: Jim Wilson Signed-off-by: Aleksandar Markovic Reviewed-by: Laurent Vivier Message-Id: <1561718618-20218-3-git-send-email-aleksandar.markovic@rt-rk.co= m> Signed-off-by: Laurent Vivier --- linux-user/strace.c | 86 ++++++++++++++++++++++++++++++++++++++++++ linux-user/strace.list | 3 ++ 2 files changed, 89 insertions(+) diff --git a/linux-user/strace.c b/linux-user/strace.c index 6f72a74c0918..c80e93b5db8a 100644 --- a/linux-user/strace.c +++ b/linux-user/strace.c @@ -976,6 +976,76 @@ UNUSED static struct flags msg_flags[] =3D { FLAG_END, }; =20 +UNUSED static struct flags statx_flags[] =3D { +#ifdef AT_EMPTY_PATH + FLAG_GENERIC(AT_EMPTY_PATH), +#endif +#ifdef AT_NO_AUTOMOUNT + FLAG_GENERIC(AT_NO_AUTOMOUNT), +#endif +#ifdef AT_SYMLINK_NOFOLLOW + FLAG_GENERIC(AT_SYMLINK_NOFOLLOW), +#endif +#ifdef AT_STATX_SYNC_AS_STAT + FLAG_GENERIC(AT_STATX_SYNC_AS_STAT), +#endif +#ifdef AT_STATX_FORCE_SYNC + FLAG_GENERIC(AT_STATX_FORCE_SYNC), +#endif +#ifdef AT_STATX_DONT_SYNC + FLAG_GENERIC(AT_STATX_DONT_SYNC), +#endif + FLAG_END, +}; + +UNUSED static struct flags statx_mask[] =3D { +/* This must come first, because it includes everything. */ +#ifdef STATX_ALL + FLAG_GENERIC(STATX_ALL), +#endif +/* This must come second; it includes everything except STATX_BTIME. */ +#ifdef STATX_BASIC_STATS + FLAG_GENERIC(STATX_BASIC_STATS), +#endif +#ifdef STATX_TYPE + FLAG_GENERIC(STATX_TYPE), +#endif +#ifdef STATX_MODE + FLAG_GENERIC(STATX_MODE), +#endif +#ifdef STATX_NLINK + FLAG_GENERIC(STATX_NLINK), +#endif +#ifdef STATX_UID + FLAG_GENERIC(STATX_UID), +#endif +#ifdef STATX_GID + FLAG_GENERIC(STATX_GID), +#endif +#ifdef STATX_ATIME + FLAG_GENERIC(STATX_ATIME), +#endif +#ifdef STATX_MTIME + FLAG_GENERIC(STATX_MTIME), +#endif +#ifdef STATX_CTIME + FLAG_GENERIC(STATX_CTIME), +#endif +#ifdef STATX_INO + FLAG_GENERIC(STATX_INO), +#endif +#ifdef STATX_SIZE + FLAG_GENERIC(STATX_SIZE), +#endif +#ifdef STATX_BLOCKS + FLAG_GENERIC(STATX_BLOCKS), +#endif +#ifdef STATX_BTIME + FLAG_GENERIC(STATX_BTIME), +#endif + FLAG_END, +}; + /* * print_xxx utility functions. These are used to print syscall * parameters in certain format. All of these have parameter @@ -2611,6 +2681,22 @@ print_tgkill(const struct syscallname *name, } #endif =20 +#ifdef TARGET_NR_statx +static void +print_statx(const struct syscallname *name, + abi_long arg0, abi_long arg1, abi_long arg2, + abi_long arg3, abi_long arg4, abi_long arg5) +{ + print_syscall_prologue(name); + print_at_dirfd(arg0, 0); + print_string(arg1, 0); + print_flags(statx_flags, arg2, 0); + print_flags(statx_mask, arg3, 0); + print_pointer(arg4, 1); + print_syscall_epilogue(name); +} +#endif + /* * An array of all of the syscalls we know about */ diff --git a/linux-user/strace.list b/linux-user/strace.list index db21ce41779f..63a946642d29 100644 --- a/linux-user/strace.list +++ b/linux-user/strace.list @@ -1650,3 +1650,6 @@ #ifdef TARGET_NR_atomic_barrier { TARGET_NR_atomic_barrier, "atomic_barrier", NULL, NULL, NULL }, #endif +#ifdef TARGET_NR_statx +{ TARGET_NR_statx, "statx", NULL, print_statx, NULL }, +#endif --=20 2.21.0 From nobody Sun May 19 06:50:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1562083398; cv=none; d=zoho.com; s=zohoarc; b=I6MP84lX1Ud65f5e/QYKa9F/Z6xzl5UEUqU3rB5BeRyqLeVd5NBbzxpPn1i3K9sY4eyw0XZ8iYSkmCYoTssjjXIVIs1S2D1wBcdebfDOo7nnujY4EotigoC7fmPyKfgN9e/k0ob0XHOJojaameTF6abDasqzrrqEUykwcMGgqaE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1562083398; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=ZT5EIJK4sjNHEMIZeIJ3xVXUfmISSDhoYxF+MejM7D8=; b=RYrWAEbjtjNrtW29pj8vRdn7R8vmK4TEjJ3Z/MsPynoNTyr6scZSMFUkEbV3nlczDWxw2GadH9szT4dhx9Vf33x6XdDyF0YzXgMmOf7KIFc1wAzymmaJwgTZ5vhdX7Z8alW2ygXJtcnTDablnSgaZ8USBAWQBGRh5VoBXPB0Vlg= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1562083398418512.1486948417628; Tue, 2 Jul 2019 09:03:18 -0700 (PDT) Received: from localhost ([::1]:54812 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hiLFR-00011e-Rr for importer@patchew.org; Tue, 02 Jul 2019 12:03:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59660) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hiKS3-0002aB-2n for qemu-devel@nongnu.org; Tue, 02 Jul 2019 11:12:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hiKRz-0004Ez-7q for qemu-devel@nongnu.org; Tue, 02 Jul 2019 11:12:10 -0400 Received: from mout.kundenserver.de ([212.227.17.24]:35063) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hiKRv-0004AO-EW for qemu-devel@nongnu.org; Tue, 02 Jul 2019 11:12:05 -0400 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1N3sRi-1ihxOo27SC-00zqfT; Tue, 02 Jul 2019 17:05:58 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Tue, 2 Jul 2019 17:05:42 +0200 Message-Id: <20190702150545.1872-4-laurent@vivier.eu> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190702150545.1872-1-laurent@vivier.eu> References: <20190702150545.1872-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:Qh3lIEilbINRqqWJ8tE+vEEDPyShIUvBAe/hhcAzW3e4k3kKbCj 87phJebBmGvTWyozClUTP2zqQaHDnpVKn2eyWO8wF+u7KumW50MfnF7k8jjKOFzyX4frgJQ 0EFeh2IHk+fWfjiTk4sBpI4smwgEU3PFvPEZqEgnBXkAbZjlp9PNZsmu+5ilVYrpM3Gh7dd RgzMjDcNxSC/PFl3n5UVw== X-UI-Out-Filterresults: notjunk:1;V03:K0:zRoAzvmd5YQ=:S62X/HLjgnVFoPwdjUNBdI mV+0VGWRdbDkvdCNCtGa9CrSpPM31l8rP7napusIZaM23O0oW1Hlsmgbo775kMKRfTQHd/cu6 ea9YYXe2PntWcYJhHduJi3PFqh0HzPirEBH1Urh5MwwE8/4xP6LlXOUS8khlBn2kvn5rfs2c9 jCYLblGRzZi4t3KBYTrSQchJhD1ImeKQk7xox4ujWhs8NS24lJhCcZxXfu5mCRFD49SNPXH91 FJUL7FO+cf0SmgTOg9RuNjAH1Uok9L4WZzlNJchaq7tHykGpAg7DC7lD2d3r0xMG4tmJcUyS4 IEM/GLeaMcmsR5IpAnKZFzV2Supen0sYCzxbdZQZghLzW9BOM/7MTKIuVUu2ayYhoP2bbIqI2 C8qjBJVhDAlqEHyKp+M11y44JrQ60M6Tycv78waoHn9KcWQKp5+RRXPkYGLBAG7dKTniUggXG E6kLP2uUKYBTSo04MflRnMI72fq4CsjqdkSCs6sOW01YR5gAkcruojMOYKSc9nNTxRoq9wxNN WvV/YCmG9MailWkC+0NYlys9nIh+T46hNvXeu86/Xr3JqgMg/r3TDgSdw37ZaJK8J7hRSwMyB pAGoXW/N7zbRQBp7FA8BANkqLmxGNtCmTn3FtFCfOy8K26trxUD6dh8/l77b2SlXDonFLQtj/ iSttciOxzUrXeMwK86SXi+Lvkad2NdzgH2I7VnbZA8ouimPnLo71nHAO6Rc9fE1iuo/VFbyFJ 0eLn0xbxdYnTg7wLTT1NOVZSBPPnqEFWOXa+Jw== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 212.227.17.24 Subject: [Qemu-devel] [PULL 3/6] linux-user: Fix target_flock structure for MIPS O64 ABI X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Dragan Mladjenovic , Aleksandar Rikalo , Riku Voipio , Laurent Vivier , Aleksandar Markovic , Aurelien Jarno Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Aleksandar Markovic Among MIPS ABIs, only MIPS O32 and N32 have special (different than other architectures) definition of structure flock in kernel. Bring target_flock definition in QEMU for MIPS O64 ABI to the correct state, which is currently different than the most common definition, and it should actually be the same. Reported-by: Dragan Mladjenovic Signed-off-by: Aleksandar Markovic Reviewed-by: Laurent Vivier Message-Id: <1561718618-20218-4-git-send-email-aleksandar.markovic@rt-rk.co= m> Signed-off-by: Laurent Vivier --- linux-user/generic/fcntl.h | 2 +- linux-user/mips/target_fcntl.h | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/linux-user/generic/fcntl.h b/linux-user/generic/fcntl.h index a775a491e9e0..1b48ddeb99fe 100644 --- a/linux-user/generic/fcntl.h +++ b/linux-user/generic/fcntl.h @@ -129,7 +129,7 @@ struct target_flock { short l_whence; abi_long l_start; abi_long l_len; -#if defined(TARGET_MIPS) +#if defined(TARGET_MIPS) && (TARGET_ABI_BITS =3D=3D 32) abi_long l_sysid; #endif int l_pid; diff --git a/linux-user/mips/target_fcntl.h b/linux-user/mips/target_fcntl.h index 000527cc955e..795bba754b5a 100644 --- a/linux-user/mips/target_fcntl.h +++ b/linux-user/mips/target_fcntl.h @@ -27,7 +27,11 @@ #define TARGET_F_SETOWN 24 /* for sockets. */ #define TARGET_F_GETOWN 23 /* for sockets. */ =20 +#if (TARGET_ABI_BITS =3D=3D 32) #define TARGET_ARCH_FLOCK_PAD abi_long pad[4]; +#else +#define TARGET_ARCH_FLOCK_PAD +#endif #define TARGET_ARCH_FLOCK64_PAD =20 #define TARGET_F_GETLK64 33 /* using 'struct flock64' */ --=20 2.21.0 From nobody Sun May 19 06:50:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1562081325; cv=none; d=zoho.com; s=zohoarc; b=JpPicseI98uK/lI0Vqy8UKWA18WgNiVKIpXwFPxWhEE4DEC9wsT0xmw0yUJF1Wo23LwRxUD4ROg6s/b8aJjlcX4BxBUznAO0JxfGfiZ6dSc/fZ02mYhUbxTMID2nxf7cifUh1E2e4DnxLaOVQJc9wNEL/D6UyghgpLC1nltetVE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1562081325; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=f8vRuRrMoAS5Kgg3eZLaY40qdFMt4G1LqrUCQgKZZmo=; b=ZZ9yJFYLGjJGEzc1G7cehJaNex24bivyTshybcDtwRLuO2/sFfoOs3Rn+H2rw8GWUTXMJbdBuswKWKWJBydunJEWEKDLT4p0fsjp2JY1zQPhctxqggmEz4KGtgeLHd0ZeKcQvkCIL39dR2FTmXmFlNjnpLBJhg35gOhGn/MAbqs= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1562081325770733.010079088993; Tue, 2 Jul 2019 08:28:45 -0700 (PDT) Received: from localhost ([::1]:54492 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hiKi2-0002lI-QA for importer@patchew.org; Tue, 02 Jul 2019 11:28:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58275) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hiKMi-0005cs-6c for qemu-devel@nongnu.org; Tue, 02 Jul 2019 11:06:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hiKMd-000856-6H for qemu-devel@nongnu.org; Tue, 02 Jul 2019 11:06:40 -0400 Received: from mout.kundenserver.de ([212.227.17.13]:55155) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hiKMc-00084Q-TA for qemu-devel@nongnu.org; Tue, 02 Jul 2019 11:06:35 -0400 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1Mrggc-1iN79w05hs-00nhZ9; Tue, 02 Jul 2019 17:06:00 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Tue, 2 Jul 2019 17:05:43 +0200 Message-Id: <20190702150545.1872-5-laurent@vivier.eu> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190702150545.1872-1-laurent@vivier.eu> References: <20190702150545.1872-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:x14aztnEoJ8Aj53zH1yYn1m+xeqRcxvNs7cr2rZYVnQceKJxgqg ARpnvZD6xKVZdeZ/tuK6+SO2EL+9ikTX2qnLzsCF0jVj5KCLTV3zKKMyYzBnoyLET4ph/D3 x81+Yvp1EI2oZzQ+wr5hbVb3UL+S1lg2Njmouy8GhW7OpUnzmE+JlZRGk/TFHIJuUTNxX7m vQA8ymEO3BjYkKi4ngqtg== X-UI-Out-Filterresults: notjunk:1;V03:K0:VCvjpiZoLPM=:zbsC3mj2VU/PcXz/9JCYoZ kneTJTYddxpNNvjew+mycz6866l1ae2C767nym1Th6hSrLjViHS8MXdUvkE/NiIoFA2+fLLMu HFazIb+GG7O7DfUZeanWY4C0rsfmbz4PFLcg4mcmLqrm1szGnKlCt4BKhehsmn44gdSzlZ1x7 5yxh+jMkWU/euCMRrTYFsQhGRjBK8tmmXLu12EijvDCcdim3875sgOgfwRzsTKo3kN9Bbow4H VoN+y7IMZRGlR8jzIO/WLWGC2rArcCivFOxew2RXJwmCBCsQ2kESGQ+Yx2RoRSL5yQ2AWsC8Q 6sng0yt3DZcUASPc1NKsuY5MqcT1kYPE8DqPP1jn/Y0fJF/7265Y+BW9vdasLYxwWDuQwWI2W 7vAJi6CY+sqCVv0Lnp3NHAHYVCYjVtJnKb0q21yej02cxiobuMD24XImprbGGqYr6ksEYMphi bebVk8gGHEjGZCdFxIzWZvRi/Y+fn3WfqPFAJl2Bz49CnpN+aqGKD7eFGubyvVan1cNyHEWGB w7gYpv7vOBkCWLdqMvyavxa1bH7rH+zSlT9I05TAabVtcCsynmcdwaGgqTtXprkPAkxEUGCY7 JE3lmnqXXd42NvHqVolnBMRRmQF/ja4ravTkWNCygQm8b1zvy4T8RB8aV1pYljNeIYxK/cWCs EWaQBz1wnjmnkYCG9QE5binVzFjZRsyaJ2IHjP3QWacP21w0lU4GnmESB3t7M9uJQB4V34czQ FdJIJDFyyIW/eNwZeLvTGLAmViTyEAn145hooQ== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 212.227.17.13 Subject: [Qemu-devel] [PULL 4/6] linux-user: Introduce TARGET_HAVE_ARCH_STRUCT_FLOCK X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Aleksandar Markovic , Riku Voipio , Laurent Vivier , Aurelien Jarno Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Aleksandar Markovic Bring target_flock definitions to be more in sync with the way flock is defined in kernel. Basically, the rules from the kernel are: 1. Majority of architectures have a common flock definition. 2. Architectures with 32-bit MIPS ABIs have a sligtly different flock definition; those architectures are the only arcitectures that have HAVE_ARCH_STRUCT_FLOCK defined, and that preprocessor constant is used in the common header as a flag for including or not including common flock definition. 3. Sparc architectures also have a sligtly different flock definition, but the difference is only the padding at the end of the structure. The presence of that padding is determined by preprocessor constants __ARCH_FLOCK6_PAD and __ARCH_FLOCK64_PAD. QEMU linux-user already implements rules 1. and 3. in a very similar way as they are implemented in kernel. However, rule 2. is implemented in a dissimilar way (for example, the constant TARGET_HAVE_ARCH_STRUCT_FLOCK is missing), and this patch brings QEMU implementation much closer to the kernel implementation. TARGET_HAVE_ARCH_STRUCT_FLOCK64 constant is also introduced to mimic HAVE_ARCH_STRUCT_FLOCK64 from kernel, but it is not defined anywhere, however, this is the case with HAVE_ARCH_STRUCT_FLOCK64 in kernel as well. Signed-off-by: Aleksandar Markovic Reviewed-by: Laurent Vivier Message-Id: <1561718618-20218-5-git-send-email-aleksandar.markovic@rt-rk.co= m> Signed-off-by: Laurent Vivier --- linux-user/generic/fcntl.h | 8 +++++--- linux-user/mips/target_fcntl.h | 17 +++++++++++++---- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/linux-user/generic/fcntl.h b/linux-user/generic/fcntl.h index 1b48ddeb99fe..9f727d4df2c8 100644 --- a/linux-user/generic/fcntl.h +++ b/linux-user/generic/fcntl.h @@ -120,6 +120,7 @@ struct target_f_owner_ex { #define TARGET_F_SHLCK 8 #endif =20 +#ifndef TARGET_HAVE_ARCH_STRUCT_FLOCK #ifndef TARGET_ARCH_FLOCK_PAD #define TARGET_ARCH_FLOCK_PAD #endif @@ -129,13 +130,12 @@ struct target_flock { short l_whence; abi_long l_start; abi_long l_len; -#if defined(TARGET_MIPS) && (TARGET_ABI_BITS =3D=3D 32) - abi_long l_sysid; -#endif int l_pid; TARGET_ARCH_FLOCK_PAD }; +#endif =20 +#ifndef TARGET_HAVE_ARCH_STRUCT_FLOCK64 #ifndef TARGET_ARCH_FLOCK64_PAD #define TARGET_ARCH_FLOCK64_PAD #endif @@ -149,3 +149,5 @@ struct target_flock64 { TARGET_ARCH_FLOCK64_PAD }; #endif + +#endif diff --git a/linux-user/mips/target_fcntl.h b/linux-user/mips/target_fcntl.h index 795bba754b5a..6fc7b8a12bfc 100644 --- a/linux-user/mips/target_fcntl.h +++ b/linux-user/mips/target_fcntl.h @@ -28,11 +28,20 @@ #define TARGET_F_GETOWN 23 /* for sockets. */ =20 #if (TARGET_ABI_BITS =3D=3D 32) -#define TARGET_ARCH_FLOCK_PAD abi_long pad[4]; -#else -#define TARGET_ARCH_FLOCK_PAD + +struct target_flock { + short l_type; + short l_whence; + abi_long l_start; + abi_long l_len; + abi_long l_sysid; + int l_pid; + abi_long pad[4]; +}; + +#define TARGET_HAVE_ARCH_STRUCT_FLOCK + #endif -#define TARGET_ARCH_FLOCK64_PAD =20 #define TARGET_F_GETLK64 33 /* using 'struct flock64' */ #define TARGET_F_SETLK64 34 --=20 2.21.0 From nobody Sun May 19 06:50:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1562081152; cv=none; d=zoho.com; s=zohoarc; b=MrPDlnFGCI9pHMsh+4YPOi6xDmNvL9z2hkE63+Fney5GNY5mfe8iq1wZ58vfTaDqmxxhobOvw0oaV+bK9ciZdnWvIePn3IV2OVGKViI0hc0IZWjDcNOvN/hFGOSUpV2J3QZMUCBO5fuZD6Rp94NGer+oN8fk7l+s/h0OfmfVSCI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1562081152; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=bpwN1vYrxp9a6ixos33PlnIbKmb19DQeNoQqxdCS3p4=; b=ZR3IvP8noZmGBmIFRRKFo9BlcFG2Ml8oV9HmzOMZNEgGR0CMiw3h7zo7JZuYCvkk3JYTsPjHq9o3yaDb2UCTRRI6rbIw0VbL7F8Bi1htF+1XLPjmOMJ0lR7J6AKy3egnc0iMX6vw838z+VIp1iJNlplniXykUv4f4Md/5ciW2Ds= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1562081152548354.8307720425637; Tue, 2 Jul 2019 08:25:52 -0700 (PDT) Received: from localhost ([::1]:54474 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hiKfE-0008CG-GW for importer@patchew.org; Tue, 02 Jul 2019 11:25:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58258) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hiKMg-0005ZQ-H0 for qemu-devel@nongnu.org; Tue, 02 Jul 2019 11:06:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hiKMf-00086V-Eb for qemu-devel@nongnu.org; Tue, 02 Jul 2019 11:06:38 -0400 Received: from mout.kundenserver.de ([212.227.17.10]:33937) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hiKMf-00085l-4x for qemu-devel@nongnu.org; Tue, 02 Jul 2019 11:06:37 -0400 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1N7yuz-1iciKo1zT1-0155SS; Tue, 02 Jul 2019 17:06:01 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Tue, 2 Jul 2019 17:05:44 +0200 Message-Id: <20190702150545.1872-6-laurent@vivier.eu> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190702150545.1872-1-laurent@vivier.eu> References: <20190702150545.1872-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:LpFHEjXWJe5+hRGgrK2NrzsSaOpSu+hwWG7OjaIimd1T4tX+Csn Ie3vTDldEy5z4aVrkRr7tJFm5yWBYoyRXzYFicWRoNEtLp6i/m0IJMzyPsTtn9nQrfvIxgO StvzYFVcZQ5L3VjU6PN9pfndmRbedeQac+eJouMmSfxzr+F5BwA2Y5iQABQIj7y2Fz81LZz tVPB+ELlzZtVsjrDEFh2Q== X-UI-Out-Filterresults: notjunk:1;V03:K0:0NMXCd/tQnw=:xw0KuALeq6XT6z+GFu9Sa+ 3FztXlRi7XXH6N8EnlXRinkrvISFoa04CrpzQndcj6gnLYz79EGrnFiRyIlr3knOi41mYHAeZ Tb88AuJP3MTY5ix55X++LHr1wF4yv0031gmvV29bYs+KIIgQmxC+2oAczF1YAdxPkJN4SkK8x HfX5fzOkNEzhlEayEH2qRmoEk4q6vp13xpthSHHLT5SejwnuMERto1Pbv9bB8ay2aDCy0YZWy StXte9neNiraZwUESDVNjHOQ/hcx+lbIdqMSZUUY99j2XQGcWdNPFga4BzFVnUO70S6GMgcVp JIjuTFTezan7kJ8tKvvBU5Xl6+wz4h4gNbCI4beY0WDPASChpfwS+ijti/FYTjg/3OxQ+R0zr he0ZxmqjPRVRL4XN2eIOkx4QtEtJUCYZMKzgIPcW9qabKNg0LPeiI8HgnNWdIHhiKzWfYyqCz sSMUXmVGyxzPuPsaN1/ToPKXunOjNzAAgFtDt3TJ7mYWyJLi3mtV6SJ3ifPt5ducGP14d4Pgk t+5T41xmrTiizKI0eOcS53tfrnM2XLo0+2enar04qRAyVY45+LZGsLPIqfhqhOng2JXm5P5/E 4AZE4dj497SYGv2ME4Uhv+geDqwqw0+k2hfjqGX0qeg1i5XJc9hmz0pXzh/Bv0wxnUFYpWYoT yn4Ptv3w9T/DQI7dPFi7/VwPtCzCdZIUeS+Q6lvmkufhZJUfMS7kEKTtL6HKM2imM1qHwMO5q XfAFV/WMZgoD+khoKeIi2AB41gYSiCquhvd/Sg== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 212.227.17.10 Subject: [Qemu-devel] [PULL 5/6] linux-user: Handle EXCP_FPE properly for MIPS X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Riku Voipio , Yunqiang Su , Laurent Vivier , Aleksandar Markovic , Aurelien Jarno Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Aleksandar Markovic Handle EXCP_FPE properly for MIPS in cpu loop. Note that a vast majority of FP instructions are not affected by the absence of the code in this patch, as they use alternative code paths for handling floating point exceptions (see, for example, invocations of update_fcr31()) - they rely on softfloat library for keeping track on exceptions that needs to be raised. However, there are few MIPS FP instructions (an example is CTC1) that use function do_raise_exception() directly, and they need the case that is added in this patch to propagate the FPE exception as designed. The code is based on kernel's function force_fcr31_sig() in arch/mips/kernel.traps.c. Reported-by: Yunqiang Su Signed-off-by: Aleksandar Markovic Reviewed-by: Laurent Vivier Message-Id: <1561718618-20218-6-git-send-email-aleksandar.markovic@rt-rk.co= m> Signed-off-by: Laurent Vivier --- linux-user/mips/cpu_loop.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/linux-user/mips/cpu_loop.c b/linux-user/mips/cpu_loop.c index 43ba26754736..0ba894fa7aa5 100644 --- a/linux-user/mips/cpu_loop.c +++ b/linux-user/mips/cpu_loop.c @@ -540,6 +540,23 @@ done_syscall: info.si_code =3D TARGET_ILL_ILLOPC; queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); break; + case EXCP_FPE: + info.si_signo =3D TARGET_SIGFPE; + info.si_errno =3D 0; + info.si_code =3D TARGET_FPE_FLTUNK; + if (GET_FP_CAUSE(env->active_fpu.fcr31) & FP_INVALID) { + info.si_code =3D TARGET_FPE_FLTINV; + } else if (GET_FP_CAUSE(env->active_fpu.fcr31) & FP_DIV0) { + info.si_code =3D TARGET_FPE_FLTDIV; + } else if (GET_FP_CAUSE(env->active_fpu.fcr31) & FP_OVERFLOW) { + info.si_code =3D TARGET_FPE_FLTOVF; + } else if (GET_FP_CAUSE(env->active_fpu.fcr31) & FP_UNDERFLOW)= { + info.si_code =3D TARGET_FPE_FLTUND; + } else if (GET_FP_CAUSE(env->active_fpu.fcr31) & FP_INEXACT) { + info.si_code =3D TARGET_FPE_FLTRES; + } + queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); + break; /* The code below was inspired by the MIPS Linux kernel trap * handling code in arch/mips/kernel/traps.c. */ --=20 2.21.0 From nobody Sun May 19 06:50:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1562081005; cv=none; d=zoho.com; s=zohoarc; b=PAQI/pFXUICqGNGYuVmX+43w6Wni+hle8rLmEZJ4yl4CezcXQd3EMz+lf+YqwG1QcoJexbxoC9QqXM9MSYiCu/fX6FX7YI2RinEUf3EziD6XTdgRlVNtWcuDpV5Xih+8LzzinSl1MgRjy9czXDDgJE8FN6qGpT4ZY/N8WFo0lqw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1562081005; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=hQkBDNigXKRFkh2GXnIgxCDkpJuBw/x4KWpNnPW0FtI=; b=nNuSv0quId6TZhpwvw7sJ3uzPatehdp89vLPEB63OI1+cvVeBMdNn5MASe+E7j0+jJHmcpPTMEhzTjZ380DhuJfRkG+r014ZdypKmncy3bjZib+YjVSkodV4ejhcUUCVu15/XfM/Uhu/PRH9l7XGwpUh55RLz6IDO4NztjrVXOY= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 156208100580473.84371225380073; Tue, 2 Jul 2019 08:23:25 -0700 (PDT) Received: from localhost ([::1]:54450 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hiKcs-0004dD-Rj for importer@patchew.org; Tue, 02 Jul 2019 11:23:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58183) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hiKMY-0005Ku-T6 for qemu-devel@nongnu.org; Tue, 02 Jul 2019 11:06:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hiKMW-0007zj-OW for qemu-devel@nongnu.org; Tue, 02 Jul 2019 11:06:30 -0400 Received: from mout.kundenserver.de ([212.227.17.13]:56399) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hiKMU-0007vk-Ny for qemu-devel@nongnu.org; Tue, 02 Jul 2019 11:06:28 -0400 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1McYP5-1iGIj93lev-00curO; Tue, 02 Jul 2019 17:06:03 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Tue, 2 Jul 2019 17:05:45 +0200 Message-Id: <20190702150545.1872-7-laurent@vivier.eu> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190702150545.1872-1-laurent@vivier.eu> References: <20190702150545.1872-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:SVXugMnuhSklwwTuZulGZNB0tLMT7GqBN8M8EkeLw7mqoRRR2ci z/YuVZ3NSKA+gYcNRNS+FWNLHe7l9x2ERBhDJUw0DyJbtA4AAYq2e/sHyuo5vs9WWcgoKga Q/5OuRoB8MyH6QzR4TjisPeoec1zfTc8kzwG1KQckgKWvp8sVd6xEywOVg0zWstfvkQTMer 4e3G4fVxjmL5Pw7pXSzcw== X-UI-Out-Filterresults: notjunk:1;V03:K0:9H01oSAYfS4=:nY4Z39eL8SBo8v5CCVU26T ZvocLj2dTogc28gQbRwOOJd/KjHucbS/Zw9gShtdTbhiBd/EkoxV9JfYlK2hLhS63Ogre4Lpm fQxG7Z9qo2ZJIbgCepYUnKIwNUoxX9eo1wMMPbWOTEassu5uKbOCIFk5sn4Iby+IUkaYgazA8 ulOIboK6IxZS3OwQhQtmmATLV5neYEogLBmLOYiA/NYGUaK+XV9s080MukcmEhr8ZY4O4+VQW D72RlG1ARBMW9Y7fiPxGTKjbMxb+i85mwFEPV1LYpncUhM+t7kyF1kuMOGZJhv0HbmhkfwxKm /zDv54h4skesBU82+auCOQM5xSPHsOKfzkDYkxDaxQOJSCk68Yv7w4a/AHqumRrHRcf8BhmgI uJOke+We6/iBrgDI4Ca6eREL+R9cV7NCNU0l3Q//gU+63Adsn+2BHR1jtI9txaJPziRulisC6 hD0xHdterPd04TK+Hj3jc2WCZJOmYpDzEtWY7KgXg9cj+bvJxhhGlvC4Ebu5euO7VSPH4BtbF +G6PepxLpGnC9pwAqk8sdj0P2Zcor23VuZ/K1BJLLvljA8obK+t7KwKvmBXeIVzp1vYTQFoAC 3sMYMjBc2nUYSEDC0Nad6fg2h/QRA+rA24d7VI6+b8P8JFAR5mCim8npbzy9DDzCAuMmEfcd9 DxXHH5aWr0efvpURw1E4Gs6lm2QDGJSQ6vQ4CSexsseORH/EFz+iqHuoKCabK6VFfCPsuTiG0 UA87li9Inw1i6GrwrqaRV/6RyJEMV3IlrZ5x5w== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 212.227.17.13 Subject: [Qemu-devel] [PULL 6/6] linux-user: move QEMU_IFLA_BR_MULTI_BOOLOPT to the good function X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Aleksandar Markovic , Riku Voipio , Laurent Vivier , Aurelien Jarno Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" QEMU_IFLA_BR_MULTI_BOOLOPT has been added to the wrong function host_to_target_slave_data_bridge_nlattr(). Move it to host_to_target_data_bridge_nlattr(). This fixes following error: Unknown QEMU_IFLA_BR type 46 Fixes: 61b463fbf6cb ("linux-user: add new netlink types") Message-Id: <20190626150855.27446-1-laurent@vivier.eu> Signed-off-by: Laurent Vivier --- linux-user/fd-trans.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/linux-user/fd-trans.c b/linux-user/fd-trans.c index 612819c1b1ec..60077ce5319d 100644 --- a/linux-user/fd-trans.c +++ b/linux-user/fd-trans.c @@ -483,6 +483,12 @@ static abi_long host_to_target_data_bridge_nlattr(stru= ct nlattr *nlattr, case QEMU_IFLA_BR_ROOT_ID: case QEMU_IFLA_BR_BRIDGE_ID: break; + /* br_boolopt_multi { uint32_t, uint32_t } */ + case QEMU_IFLA_BR_MULTI_BOOLOPT: + u32 =3D NLA_DATA(nlattr); + u32[0] =3D tswap32(u32[0]); /* optval */ + u32[1] =3D tswap32(u32[1]); /* optmask */ + break; default: gemu_log("Unknown QEMU_IFLA_BR type %d\n", nlattr->nla_type); break; @@ -546,12 +552,6 @@ static abi_long host_to_target_slave_data_bridge_nlatt= r(struct nlattr *nlattr, case QEMU_IFLA_BRPORT_ROOT_ID: case QEMU_IFLA_BRPORT_BRIDGE_ID: break; - /* br_boolopt_multi { uint32_t, uint32_t } */ - case QEMU_IFLA_BR_MULTI_BOOLOPT: - u32 =3D NLA_DATA(nlattr); - u32[0] =3D tswap32(u32[0]); /* optval */ - u32[1] =3D tswap32(u32[1]); /* optmask */ - break; default: gemu_log("Unknown QEMU_IFLA_BRPORT type %d\n", nlattr->nla_type); break; --=20 2.21.0