From patchwork Mon Feb 19 17:10:30 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 875248 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zlVnR23S4z9ryn for ; Tue, 20 Feb 2018 04:18:03 +1100 (AEDT) Received: from localhost ([::1]:51479 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1enp4j-0001eO-At for incoming@patchwork.ozlabs.org; Mon, 19 Feb 2018 12:18:01 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53764) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1enoy3-00055O-Fy for qemu-devel@nongnu.org; Mon, 19 Feb 2018 12:11:09 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1enoy0-0005b3-0F for qemu-devel@nongnu.org; Mon, 19 Feb 2018 12:11:07 -0500 Received: from mout.kundenserver.de ([212.227.126.133]:51693) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1enoxz-0005aL-D9 for qemu-devel@nongnu.org; Mon, 19 Feb 2018 12:11:03 -0500 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue001 [212.227.15.167]) with ESMTPSA (Nemesis) id 0LbDeU-1eKr8s2Bty-00kxJ8; Mon, 19 Feb 2018 18:10:40 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Mon, 19 Feb 2018 18:10:30 +0100 Message-Id: <20180219171037.24539-2-laurent@vivier.eu> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180219171037.24539-1-laurent@vivier.eu> References: <20180219171037.24539-1-laurent@vivier.eu> X-Provags-ID: V03:K0:YRcoLdS2kKW/dP4YgNYC9vUjeU79/nm3wWbAq7+7YC6dwLAiBgA xv8Mgcn9fOJPqBGbECYRmD3YbSVdaq+3NEB5tmqF56liZnrFXDEZ/97q3555IqRHKvJku5f wzW1aRsvcE6oZqhEqGJK6kzHrcPix8zpKoPhewg5I6h9NRn0ts1GM8E95p4WmZEVMfaRodW cYNIufdHsuXsyClLjRNnw== X-UI-Out-Filterresults: notjunk:1; V01:K0:xF9VzusuwCM=:QvHVs9ZUXYizEmLz/9FqF6 3CIsqAJIn2vcJyfhSR2Oi7T++dGctToVHOccYRzc1q4MbzPx9h7vjWIiqEunjfynucc69kdH4 IqGs/MpHJkw1XL7Jqp9RaF72mVIv99cQpu0Ez+g+uIjo5AFKFRtMWVVpiJZPX5KmM4sbgihBo Qd6mvcAuHl+PQgApKpYqi5B5bzRSSZtFMZn32SwTgMA6LvR3RIXSpw9qW/xbuSvXBftBPLV45 rA0Z9tLE0wAJKYCwa+xw4QnbXkGpRyOtPRUnYTGd9L4eym97D+K00wWcYNFINoLJJbZqRXq0G PRAcT9BG3iFAGeoGsp25ekQ9fepAkxLFx36zPO/iNQQuZYupQPuC71gtZw78ZZIB3w+kl2bEg aD9cP/BVd0XHIXyMK+LDZX4iQd2XFhGlZylHqxhGNDZxHDdcGfX0pO/1Z0USEXqhVzCGhV+jS AJORCDTFQ4h6UKmp0ngr6hzzoCeDKe2lwF12tnpvHe/i/R2XklIBPArrab1yHxrpJHyRspd1Z WLczn7PupdFRhA+dfkSuwGDNX13sLCxTLpczr8T1gsaNxlYlsIjT3hfAlGAVo1BDi9z5yBmNO 5gsoMUQubDg7twpaOfqfleUbMJAxYqgoabpJ8CJx6LnEK+PZZkhkMVoK+gIAa1vNsoKdmcDRx F95QNuV5zsc9Aas8vyM5El0+v9H0AO6RzxoyV1MwTPDSmYdpnTyIMINHr9HoGQMEDYseeFWQZ zLgNPSpQp4DZT1Njbzrp1eokGVFMSG9IuqF8mQ== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.126.133 Subject: [Qemu-devel] [PULL 1/8] linux-user: Implement ioctl cmd TIOCGPTPEER X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Andreas Schwab , Riku Voipio , Laurent Vivier Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Andreas Schwab With glibc 2.27 the openpty function prefers the TIOCGPTPEER ioctl. Signed-off-by: Andreas Schwab Reviewed-by: Laurent Vivier Message-Id: Signed-off-by: Laurent Vivier --- linux-user/aarch64/termbits.h | 2 ++ linux-user/alpha/termbits.h | 1 + linux-user/arm/termbits.h | 1 + linux-user/cris/termbits.h | 1 + linux-user/hppa/termbits.h | 2 ++ linux-user/i386/termbits.h | 1 + linux-user/ioctls.h | 3 +++ linux-user/m68k/termbits.h | 1 + linux-user/microblaze/termbits.h | 1 + linux-user/mips/termbits.h | 1 + linux-user/nios2/termbits.h | 2 ++ linux-user/openrisc/termbits.h | 2 ++ linux-user/ppc/termbits.h | 1 + linux-user/s390x/termbits.h | 1 + linux-user/sh4/termbits.h | 1 + linux-user/sparc/termbits.h | 1 + linux-user/sparc64/termbits.h | 1 + linux-user/syscall.c | 9 +++++++++ linux-user/tilegx/termbits.h | 1 + linux-user/x86_64/termbits.h | 1 + 20 files changed, 34 insertions(+) diff --git a/linux-user/aarch64/termbits.h b/linux-user/aarch64/termbits.h index b64ba974cf..f9f80f0f37 100644 --- a/linux-user/aarch64/termbits.h +++ b/linux-user/aarch64/termbits.h @@ -187,6 +187,8 @@ struct target_termios { /* Get Pty Number (of pty-mux device) */ #define TARGET_TIOCSPTLCK TARGET_IOW('T', 0x31, int) /* Lock/unlock Pty */ +#define TARGET_TIOCGPTPEER TARGET_IO('T', 0x41) + /* Safely open the slave */ #define TARGET_FIONCLEX 0x5450 /* these numbers need to be adjusted. */ #define TARGET_FIOCLEX 0x5451 diff --git a/linux-user/alpha/termbits.h b/linux-user/alpha/termbits.h index 6406b6a799..139bc87fa6 100644 --- a/linux-user/alpha/termbits.h +++ b/linux-user/alpha/termbits.h @@ -245,6 +245,7 @@ struct target_termios { #define TARGET_TIOCGSID 0x5429 /* Return the session ID of FD */ #define TARGET_TIOCGPTN TARGET_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ #define TARGET_TIOCSPTLCK TARGET_IOW('T',0x31, int) /* Lock/unlock Pty */ +#define TARGET_TIOCGPTPEER TARGET_IO('T', 0x41) /* Safely open the slave */ #define TARGET_TIOCSERCONFIG 0x5453 #define TARGET_TIOCSERGWILD 0x5454 diff --git a/linux-user/arm/termbits.h b/linux-user/arm/termbits.h index 7772df175c..a61e138ec4 100644 --- a/linux-user/arm/termbits.h +++ b/linux-user/arm/termbits.h @@ -185,6 +185,7 @@ struct target_termios { #define TARGET_TIOCGSID 0x5429 /* Return the session ID of FD */ #define TARGET_TIOCGPTN TARGET_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ #define TARGET_TIOCSPTLCK TARGET_IOW('T',0x31, int) /* Lock/unlock Pty */ +#define TARGET_TIOCGPTPEER TARGET_IO('T', 0x41) /* Safely open the slave */ #define TARGET_FIONCLEX 0x5450 /* these numbers need to be adjusted. */ #define TARGET_FIOCLEX 0x5451 diff --git a/linux-user/cris/termbits.h b/linux-user/cris/termbits.h index fc82ca084e..c825cd2f5e 100644 --- a/linux-user/cris/termbits.h +++ b/linux-user/cris/termbits.h @@ -182,6 +182,7 @@ struct target_termios { #define TARGET_TIOCGSID 0x5429 /* Return the session ID of FD */ #define TARGET_TIOCGPTN TARGET_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ #define TARGET_TIOCSPTLCK TARGET_IOW('T',0x31, int) /* Lock/unlock Pty */ +#define TARGET_TIOCGPTPEER TARGET_IO('T', 0x41) /* Safely open the slave */ #define TARGET_FIONCLEX 0x5450 /* these numbers need to be adjusted. */ #define TARGET_FIOCLEX 0x5451 diff --git a/linux-user/hppa/termbits.h b/linux-user/hppa/termbits.h index e9633ef119..ad51c9c911 100644 --- a/linux-user/hppa/termbits.h +++ b/linux-user/hppa/termbits.h @@ -186,6 +186,8 @@ struct target_termios { /* Get Pty Number (of pty-mux device) */ #define TARGET_TIOCSPTLCK TARGET_IOW('T', 0x31, int) /* Lock/unlock Pty */ +#define TARGET_TIOCGPTPEER TARGET_IO('T', 0x41) + /* Safely open the slave */ #define TARGET_FIONCLEX 0x5450 /* these numbers need to be adjusted. */ #define TARGET_FIOCLEX 0x5451 diff --git a/linux-user/i386/termbits.h b/linux-user/i386/termbits.h index e051a3af74..32dd0dde5d 100644 --- a/linux-user/i386/termbits.h +++ b/linux-user/i386/termbits.h @@ -195,6 +195,7 @@ struct target_termios { #define TARGET_TIOCGSID 0x5429 /* Return the session ID of FD */ #define TARGET_TIOCGPTN TARGET_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ #define TARGET_TIOCSPTLCK TARGET_IOW('T',0x31, int) /* Lock/unlock Pty */ +#define TARGET_TIOCGPTPEER TARGET_IO('T', 0x41) /* Safely open the slave */ #define TARGET_FIONCLEX 0x5450 /* these numbers need to be adjusted. */ #define TARGET_FIOCLEX 0x5451 diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h index 35cad6f944..586c794639 100644 --- a/linux-user/ioctls.h +++ b/linux-user/ioctls.h @@ -40,6 +40,9 @@ IOCTL(TIOCSETD, IOC_W, MK_PTR(TYPE_INT)) IOCTL(TIOCGPTN, IOC_R, MK_PTR(TYPE_INT)) IOCTL(TIOCSPTLCK, IOC_W, MK_PTR(TYPE_INT)) +#ifdef TIOCGPTPEER + IOCTL_SPECIAL(TIOCGPTPEER, 0, do_ioctl_tiocgptpeer, TYPE_INT) +#endif IOCTL(FIOCLEX, 0, TYPE_NULL) IOCTL(FIONCLEX, 0, TYPE_NULL) IOCTL(FIOASYNC, IOC_W, MK_PTR(TYPE_INT)) diff --git a/linux-user/m68k/termbits.h b/linux-user/m68k/termbits.h index f7982fb6c2..9df58dc5cb 100644 --- a/linux-user/m68k/termbits.h +++ b/linux-user/m68k/termbits.h @@ -196,6 +196,7 @@ struct target_termios { #define TARGET_TIOCGSID 0x5429 /* Return the session ID of FD */ #define TARGET_TIOCGPTN TARGET_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ #define TARGET_TIOCSPTLCK TARGET_IOW('T',0x31, int) /* Lock/unlock Pty */ +#define TARGET_TIOCGPTPEER TARGET_IO('T', 0x41) /* Safely open the slave */ #define TARGET_FIONCLEX 0x5450 /* these numbers need to be adjusted. */ #define TARGET_FIOCLEX 0x5451 diff --git a/linux-user/microblaze/termbits.h b/linux-user/microblaze/termbits.h index fc82ca084e..c825cd2f5e 100644 --- a/linux-user/microblaze/termbits.h +++ b/linux-user/microblaze/termbits.h @@ -182,6 +182,7 @@ struct target_termios { #define TARGET_TIOCGSID 0x5429 /* Return the session ID of FD */ #define TARGET_TIOCGPTN TARGET_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ #define TARGET_TIOCSPTLCK TARGET_IOW('T',0x31, int) /* Lock/unlock Pty */ +#define TARGET_TIOCGPTPEER TARGET_IO('T', 0x41) /* Safely open the slave */ #define TARGET_FIONCLEX 0x5450 /* these numbers need to be adjusted. */ #define TARGET_FIOCLEX 0x5451 diff --git a/linux-user/mips/termbits.h b/linux-user/mips/termbits.h index a0bcad0946..49a72c5539 100644 --- a/linux-user/mips/termbits.h +++ b/linux-user/mips/termbits.h @@ -233,6 +233,7 @@ struct target_termios { #define TARGET_TIOCGPKT TARGET_IOR('T', 0x38, int) #define TARGET_TIOCGPTLCK TARGET_IOR('T', 0x39, int) #define TARGET_TIOCGEXCL TARGET_IOR('T', 0x40, int) +#define TARGET_TIOCGPTPEER TARGET_IO('T', 0x41) /* I hope the range from 0x5480 on is free ... */ #define TARGET_TIOCSCTTY 0x5480 /* become controlling tty */ diff --git a/linux-user/nios2/termbits.h b/linux-user/nios2/termbits.h index b64ba974cf..f9f80f0f37 100644 --- a/linux-user/nios2/termbits.h +++ b/linux-user/nios2/termbits.h @@ -187,6 +187,8 @@ struct target_termios { /* Get Pty Number (of pty-mux device) */ #define TARGET_TIOCSPTLCK TARGET_IOW('T', 0x31, int) /* Lock/unlock Pty */ +#define TARGET_TIOCGPTPEER TARGET_IO('T', 0x41) + /* Safely open the slave */ #define TARGET_FIONCLEX 0x5450 /* these numbers need to be adjusted. */ #define TARGET_FIOCLEX 0x5451 diff --git a/linux-user/openrisc/termbits.h b/linux-user/openrisc/termbits.h index 373af77215..231a49806b 100644 --- a/linux-user/openrisc/termbits.h +++ b/linux-user/openrisc/termbits.h @@ -245,6 +245,8 @@ struct target_termios3 { #define TARGET_TIOCGPTN TARGET_IOR('T', 0x30, unsigned int) /* Lock/unlock Pty */ #define TARGET_TIOCSPTLCK TARGET_IOW('T', 0x31, int) +/* Safely open the slave */ +#define TARGET_TIOCGPTPEER TARGET_IO('T', 0x41) /* Get primary device node of /dev/console */ #define TARGET_TIOCGDEV TARGET_IOR('T', 0x32, unsigned int) #define TARGET_TCGETX 0x5432 /* SYS5 TCGETX compatibility */ diff --git a/linux-user/ppc/termbits.h b/linux-user/ppc/termbits.h index 73e7151756..a5b1bb783b 100644 --- a/linux-user/ppc/termbits.h +++ b/linux-user/ppc/termbits.h @@ -219,6 +219,7 @@ struct target_termios { #define TARGET_TIOCGSID 0x5429 /* Return the session ID of FD */ #define TARGET_TIOCGPTN TARGET_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ #define TARGET_TIOCSPTLCK TARGET_IOW('T',0x31, int) /* Lock/unlock Pty */ +#define TARGET_TIOCGPTPEER TARGET_IO('T', 0x41) /* Safely open the slave */ #define TARGET_TIOCSERCONFIG 0x5453 #define TARGET_TIOCSERGWILD 0x5454 diff --git a/linux-user/s390x/termbits.h b/linux-user/s390x/termbits.h index 2a78a05594..8bcca89cd7 100644 --- a/linux-user/s390x/termbits.h +++ b/linux-user/s390x/termbits.h @@ -252,6 +252,7 @@ struct target_ktermios { #define TARGET_TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ #define TARGET_TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ #define TARGET_TIOCGDEV _IOR('T',0x32, unsigned int) /* Get real dev no below /dev/console */ +#define TARGET_TIOCGPTPEER TARGET_IO('T', 0x41) /* Safely open the slave */ #define TARGET_FIONCLEX 0x5450 /* these numbers need to be adjusted. */ #define TARGET_FIOCLEX 0x5451 diff --git a/linux-user/sh4/termbits.h b/linux-user/sh4/termbits.h index 2ff774f6ba..5723ed7752 100644 --- a/linux-user/sh4/termbits.h +++ b/linux-user/sh4/termbits.h @@ -250,6 +250,7 @@ ID of FD */ #define TARGET_TIOCGPTN TARGET_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-m ux device) */ #define TARGET_TIOCSPTLCK TARGET_IOW('T',0x31, int) /* Lock/unlock Pty */ +#define TARGET_TIOCGPTPEER TARGET_IO('T', 0x41) /* Safely open the slave */ #define TARGET_TIOCSERCONFIG TARGET_IO('T', 83) /* 0x5453 */ diff --git a/linux-user/sparc/termbits.h b/linux-user/sparc/termbits.h index 691600d27a..113d6dfbdb 100644 --- a/linux-user/sparc/termbits.h +++ b/linux-user/sparc/termbits.h @@ -245,6 +245,7 @@ struct target_termios { /* Get minor device of a pty master's FD -- Solaris equiv is ISPTM */ #define TARGET_TIOCGPTN TARGET_IOR('t', 134, unsigned int) /* Get Pty Number */ #define TARGET_TIOCSPTLCK TARGET_IOW('t', 135, int) /* Lock/unlock PTY */ +#define TARGET_TIOCGPTPEER TARGET_IO('t', 137) /* Safely open the slave */ /* Little f */ #define TARGET_FIOCLEX TARGET_IO('f', 1) diff --git a/linux-user/sparc64/termbits.h b/linux-user/sparc64/termbits.h index 691600d27a..113d6dfbdb 100644 --- a/linux-user/sparc64/termbits.h +++ b/linux-user/sparc64/termbits.h @@ -245,6 +245,7 @@ struct target_termios { /* Get minor device of a pty master's FD -- Solaris equiv is ISPTM */ #define TARGET_TIOCGPTN TARGET_IOR('t', 134, unsigned int) /* Get Pty Number */ #define TARGET_TIOCSPTLCK TARGET_IOW('t', 135, int) /* Lock/unlock PTY */ +#define TARGET_TIOCGPTPEER TARGET_IO('t', 137) /* Safely open the slave */ /* Little f */ #define TARGET_FIOCLEX TARGET_IO('f', 1) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 82b35a6bdf..effc3a0881 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -5636,6 +5636,15 @@ static abi_long do_ioctl_kdsigaccept(const IOCTLEntry *ie, uint8_t *buf_temp, return get_errno(safe_ioctl(fd, ie->host_cmd, sig)); } +#ifdef TIOCGPTPEER +static abi_long do_ioctl_tiocgptpeer(const IOCTLEntry *ie, uint8_t *buf_temp, + int fd, int cmd, abi_long arg) +{ + int flags = target_to_host_bitmask(arg, fcntl_flags_tbl); + return get_errno(safe_ioctl(fd, ie->host_cmd, flags)); +} +#endif + static IOCTLEntry ioctl_entries[] = { #define IOCTL(cmd, access, ...) \ { TARGET_ ## cmd, cmd, #cmd, access, 0, { __VA_ARGS__ } }, diff --git a/linux-user/tilegx/termbits.h b/linux-user/tilegx/termbits.h index 91ec23654e..966daec088 100644 --- a/linux-user/tilegx/termbits.h +++ b/linux-user/tilegx/termbits.h @@ -242,6 +242,7 @@ struct target_termios2 { #define TARGET_TIOCGPKT TARGET_IOR('T', 0x38, int) #define TARGET_TIOCGPTLCK TARGET_IOR('T', 0x39, int) #define TARGET_TIOCGEXCL TARGET_IOR('T', 0x40, int) +#define TARGET_TIOCGPTPEER TARGET_IO('T', 0x41) #define TARGET_FIONCLEX 0x5450 #define TARGET_FIOCLEX 0x5451 diff --git a/linux-user/x86_64/termbits.h b/linux-user/x86_64/termbits.h index 387e742592..f5776a8aa6 100644 --- a/linux-user/x86_64/termbits.h +++ b/linux-user/x86_64/termbits.h @@ -215,6 +215,7 @@ struct target_termios { #define TARGET_TCSETSF2 TARGET_IOW('T',0x2D, struct termios2) #define TARGET_TIOCGPTN TARGET_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ #define TARGET_TIOCSPTLCK TARGET_IOW('T',0x31, int) /* Lock/unlock Pty */ +#define TARGET_TIOCGPTPEER TARGET_IO('T', 0x41) /* Safely open the slave */ #define TARGET_FIONCLEX 0x5450 /* these numbers need to be adjusted. */ #define TARGET_FIOCLEX 0x5451 From patchwork Mon Feb 19 17:10:31 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 875245 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zlVkG6qjxz9ryn for ; Tue, 20 Feb 2018 04:15:18 +1100 (AEDT) Received: from localhost ([::1]:51455 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1enp25-00084V-25 for incoming@patchwork.ozlabs.org; Mon, 19 Feb 2018 12:15:17 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53668) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1enoxs-0004u3-Oe for qemu-devel@nongnu.org; Mon, 19 Feb 2018 12:10:57 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1enoxo-0005Rq-Ql for qemu-devel@nongnu.org; Mon, 19 Feb 2018 12:10:56 -0500 Received: from mout.kundenserver.de ([212.227.126.135]:41507) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1enoxo-0005Qv-Gd for qemu-devel@nongnu.org; Mon, 19 Feb 2018 12:10:52 -0500 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue001 [212.227.15.167]) with ESMTPSA (Nemesis) id 0Mc5lW-1f62Kt29LS-00JIcE; Mon, 19 Feb 2018 18:10:41 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Mon, 19 Feb 2018 18:10:31 +0100 Message-Id: <20180219171037.24539-3-laurent@vivier.eu> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180219171037.24539-1-laurent@vivier.eu> References: <20180219171037.24539-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K0:TL1JIVQ3q6EJn6SDr6GzGDGnvIremIiVdS8HvS4xVy8mDTS37X3 rZPlujZek6iMBGOcFqznE/jcZFFnhghORO8vSEviCgAKyk9V6KAu7FJkPovPTOFdG5QIaye 71VTWzDp6to4Fvdf/k7l18Bu45vzc+hildO8eqbGBGcfGnDR3mZ8mWpREDJzUs0Sl32IXxK dZgvYhq2hZu9ynmHkm7jw== X-UI-Out-Filterresults: notjunk:1; V01:K0:jWewu6/QFUA=:KvScR/+08SpWjiQN7fhhcj 0pjcagg6r2Ga3/54ggssjdGzo9xDw9s7Et3wdpwRZoPzXO+5fZSWhYpCdWpU0b37jXuX4Me0P wgXT+hKmwTM/B0xR0nS8z4sCc0SSGvkL197wgYn2wRNFs+Hzga34Mr7ULcYcGNZWLRVGAjilL KnK9yiOtO3G04LEcoaNjK0j6JfptEcj0QlYuhOl+P1bv9WL2OZIckvjnXAtluRuHn5ccP9UQl qgvEorfhQlLL5fWX+kLbmokD9UhQr8klUHF38cuBOP8jr8qIl+4xMC+gd62FMbidnkwy8e+FC nTK9fHqYw3GayoOAuh8eprg8nWkXnYdOMBDXUqS3n17IsHrey0cD4McywtF6xm21nxeqPO5F3 qH601yIG/m4KpJAXL+e3fs9GLqxbiPyzpXTLRvqw3CWILntfR3pXkXQyn5/cIQfDAeosjd72Z E9hfgf1AbuoYjq4RKfbLIehr8Nt7sSWwWZgZZ7U5FkqSZe2M7IJxdTOGULzjf7P6ZXbkvEGok 7eI4MoqIkiS6wsslPsB4tzpUWqzEHeviWQYdyGAIvxDNBmEiRMpJ59BR3AH/i6SH07H4scTnr 4IQ4EbXWyIKgWophJDFtMaNGv/371sMlr5c9U+8KXQr78QtNwaARVI8pzcg7sl3DVFHuit5sV /aW1ORhWHLXZ4ksK1JrYv+eKlbtRFzcX57Uvuz9HRPcrw2ojxfMHwQ47hDYVARqrHRLBywH9n BNE8N4dce48dRanMdsQ7DtmC12+/35iR7araqQgu+1+/xRuh00d/h0GwnSo= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.126.135 Subject: [Qemu-devel] [PULL 2/8] linux-user: Fix register used for 6th and 7th syscall argument on aarch64 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?utf-8?q?Guido_G=C3=BCnther?= , Riku Voipio , Laurent Vivier Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Guido Günther This unbreaks the testcase from http://lists.nongnu.org/archive/html/qemu-arm/2018-01/msg00514.html Thanks to Laurent Vivier for spotting the 7th one. Signed-off-by: Guido Günther Tested-by: Philippe Mathieu-Daudé Suggested-by: Laurent Vivier Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Richard Henderson Message-Id: <671eaa99f4e0bf3a58f76f9151f7cfa24662227f.1517565566.git.agx@sigxcpu.org> Signed-off-by: Laurent Vivier --- linux-user/host/aarch64/safe-syscall.inc.S | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/linux-user/host/aarch64/safe-syscall.inc.S b/linux-user/host/aarch64/safe-syscall.inc.S index 58a2329b37..bc1f5a9792 100644 --- a/linux-user/host/aarch64/safe-syscall.inc.S +++ b/linux-user/host/aarch64/safe-syscall.inc.S @@ -36,7 +36,7 @@ safe_syscall_base: * and return the result in x0 * and the syscall instruction needs * x8 == syscall number - * x0 ... x7 == syscall arguments + * x0 ... x6 == syscall arguments * and returns the result in x0 * Shuffle everything around appropriately. */ @@ -47,8 +47,8 @@ safe_syscall_base: mov x2, x4 mov x3, x5 mov x4, x6 - mov x6, x7 - ldr x7, [sp] + mov x5, x7 + ldr x6, [sp] /* This next sequence of code works in conjunction with the * rewind_if_safe_syscall_function(). If a signal is taken From patchwork Mon Feb 19 17:10:32 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 875235 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zlVg26yvSz9ryn for ; Tue, 20 Feb 2018 04:12:30 +1100 (AEDT) Received: from localhost ([::1]:51444 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1enozM-0005Wc-Vd for incoming@patchwork.ozlabs.org; Mon, 19 Feb 2018 12:12:29 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53663) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1enoxs-0004tz-0Z for qemu-devel@nongnu.org; Mon, 19 Feb 2018 12:10:56 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1enoxp-0005SE-30 for qemu-devel@nongnu.org; Mon, 19 Feb 2018 12:10:55 -0500 Received: from mout.kundenserver.de ([212.227.126.131]:40223) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1enoxo-0005RE-Pu for qemu-devel@nongnu.org; Mon, 19 Feb 2018 12:10:53 -0500 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue001 [212.227.15.167]) with ESMTPSA (Nemesis) id 0MRx1t-1fBr6R10cz-00SsBx; Mon, 19 Feb 2018 18:10:42 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Mon, 19 Feb 2018 18:10:32 +0100 Message-Id: <20180219171037.24539-4-laurent@vivier.eu> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180219171037.24539-1-laurent@vivier.eu> References: <20180219171037.24539-1-laurent@vivier.eu> X-Provags-ID: V03:K0:RbFZ/u26OwhjWbSsHg8fzLSWVGBGrof0ft+shli2+0gfEPpfqpf uZKB2EWh0C17MquLUPvs03NtgtcCS2ME+Ml5WVOoZTv+ixG7nuKzLAeUhZd0jYmXfmfGp4J beWQ8nemgYVt+SQAH1rZPkp9JhIF7Q+qUcpIAHKNC17Lyeh1Nm6FVJDAtS6suOOVcIvWY/L JVI/3lHOgQ3JPSQTxHimg== X-UI-Out-Filterresults: notjunk:1; V01:K0:sLxT/33TodQ=:IzaEO7muUtG16jxr4G7Qsb 8CGXzr2xEA4vNsdi1/ijmq3dxwKrizToskIlELKBgvxxL5KN1C9atAiE9drdW2Na9hCG1Ua9P 1rlOZ3vjQfgxibUvPNmkThJGxjrKVFIza4neTxh4Hln/OGzb/XP6RJN2CJcVDNk9+uLOrUoGL PN0o+X2b5slBR+oOIOzsKmruvufZe5zXLcc19axarlKXyBLujasY2dUATwMW0UNbaI6Ek4w++ 3tEVclFnkf6IiL6WtPGvgYv4kbi6kRT0J2SzRlnSgCLTtMxRQbucieqLiFuE7wKOSWJ5yPkys NyjyU2c0FLtuvu4OHRDPFRtUOtSdHc7peBTiaclHNReTotR4aYdwvmGGQmdLqTk9WjZA0CntA 8sXIOwMNIA95/MuNIhx3DELxClb8VIztOX7au9OG1vths35N4hTVmt56dPKeKM5H1c5otEx0W aWkY8Uk3nx0r7TAUiqZl0/EG9COutqLXOqCdmaiwGfw0kLaBB4kvSLnT4mPJ95ojJahgNrW37 l3dv+WPNy6noDHtz0Xlmvaw0gtH9Zkz0kYVAJ4i1RcLM5M6YkDZFnTG9M0w6bZrgjUF2+/lyX iPbvDO3tXZiU8qpSRU+LDfV7NGyyX7QL8+Nsla4ld2MG3SsNRigwR/3VPDTKoKoCqGuEIKy3o FNx7P6bQfFIdx2CK3VO9AG3YUC8cQXJ4jRRfwCixG0vO35eAFc2pzblu7mqtNbLJ8XtO3/8Jv yMRMHPJ2RVvbbW8sDaTXkWdL+kpPJdeJCPtTog== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.126.131 Subject: [Qemu-devel] [PULL 3/8] linux-user: Fix sched_getaffinity mask size X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Samuel Thibault , Riku Voipio , Laurent Vivier Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Samuel Thibault We properly computed the capped mask size to be put to the application buffer, but didn't actually used it. Also, we need to return the capped mask size instead of 0 on success. Signed-off-by: Samuel Thibault Reviewed-by: Laurent Vivier Message-Id: <20180211174704.27441-1-samuel.thibault@ens-lyon.org> Signed-off-by: Laurent Vivier --- linux-user/syscall.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index effc3a0881..e24f43c4a2 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -10502,7 +10502,9 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, ret = arg2; } - ret = host_to_target_cpu_mask(mask, mask_size, arg3, arg2); + if (host_to_target_cpu_mask(mask, mask_size, arg3, ret)) { + goto efault; + } } } break; From patchwork Mon Feb 19 17:10:33 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 875236 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zlVgG2xqZz9ryn for ; Tue, 20 Feb 2018 04:12:42 +1100 (AEDT) Received: from localhost ([::1]:51445 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1enozY-0005eT-DX for incoming@patchwork.ozlabs.org; Mon, 19 Feb 2018 12:12:40 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53662) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1enoxs-0004ty-0V for qemu-devel@nongnu.org; Mon, 19 Feb 2018 12:10:56 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1enoxo-0005RW-GV for qemu-devel@nongnu.org; Mon, 19 Feb 2018 12:10:55 -0500 Received: from mout.kundenserver.de ([212.227.126.131]:53607) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1enoxo-0005Qa-5v for qemu-devel@nongnu.org; Mon, 19 Feb 2018 12:10:52 -0500 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue001 [212.227.15.167]) with ESMTPSA (Nemesis) id 0MXRDB-1fJYjX3Rfp-00WCdV; Mon, 19 Feb 2018 18:10:43 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Mon, 19 Feb 2018 18:10:33 +0100 Message-Id: <20180219171037.24539-5-laurent@vivier.eu> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180219171037.24539-1-laurent@vivier.eu> References: <20180219171037.24539-1-laurent@vivier.eu> X-Provags-ID: V03:K0:k246KyJp9PnA8xeNYUFGur4k4uzEtmfoOimz09ygSNuIK2QKNaZ McjCvAOA3JgyyKmw7DJFOJckgLpg1l3qpjSV5LJGCt6jeyt6RMgAwqclgOds2xHfh4ksGcT fZQwZdIjM3AebtQTW2ZCJTbWlL+PJAhTIteNuQzkssQiVWC2l7v35S7/4CE1DCdL4O6DXDU kY5BMHrg7iSMD4FVf9L3w== X-UI-Out-Filterresults: notjunk:1; V01:K0:FwtkJgLn80c=:cNJHD/E27M5LXzXKj27vBJ MVCnUP3OhHUKfg6WbD5w6RgBgrbPhAUJrhPq9VXMKS8olpuNaML3OfAJkVhIwAesH8NDkSEk7 nADw2RJxkdZ1i114+Mo7MBwHCyBlQ6MNytKWweOO7/mccT8d/Yqm3pZbKECTaslclQBL7BPDr Q3Awv3J/lJAL3OLSpLN2ga+vuiZa1p24mfvRidygtbYj2JHD5cOOeHltW/9nPIHBFuiXX63CJ QRrnAN7WMBwA/FB1OnFdiN1dtcWqwXfV9aISON6Z6Tmrk9wEGCRqC4RzFFDRqG9ChtuMILAVV TVPeFU1MrKJ8zgenSx0GKDhtRZungWk0hSGcutiMlZPN7p6PJcMce/oOvOfRAUgsIxbnmFef7 aBU+Il2Mb2H7WFn8efgQl34xH84S4zNeh5KNaDgfwAaVRUF6Pr6+GNfHGUaCeA8QTLK7mPv7U A3Sw6Y9s9sRf6dfw+fxfcv+DKPCFg3DQEg/SV+maWrKC7NxzwhLuCnt71Lbx4u7F1TnbtGsAn QwNUl3MqWf+BYO8M0cj+jMrz+8kSat5CME+bb2z9HQ+XpOIuDKS9T+owV88rryvkJRXYcu07b eRl5LnzwpANT65apKuoW0iaHR4HsSkfFaWOi7lPgijqcALVyikJfB2RS1F2CwzvHyqNquyqk5 aNo4VBaNk6S6ee7coeHRWubdLtJSEN2kGWzEpmYaFvouBcUR8OjBatiH03R58Bk/Nz4LyvHog r1iPFI4ib0S5voDOh/9Lr6JCxRrmoebgtKz3sA== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.126.131 Subject: [Qemu-devel] [PULL 4/8] linux-user: Remove THREAD macro X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Riku Voipio , Laurent Vivier Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Peter Maydell Back when we used to support compiling either with or without NPTL threading library support, we used a macro THREAD which would expand either to nothing (no thread support) or to __thread (threads supported). For a long time now we have required thread support, so remove the macro and just use __thread directly as other parts of QEMU do. Signed-off-by: Peter Maydell Reviewed-by: Laurent Vivier Reviewed-by: Richard Henderson Message-Id: <20180213132246.26844-1-peter.maydell@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/main.c | 2 +- linux-user/qemu.h | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/linux-user/main.c b/linux-user/main.c index 7de0e02487..fd7900628b 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -3835,7 +3835,7 @@ void cpu_loop(CPUHPPAState *env) #endif /* TARGET_HPPA */ -THREAD CPUState *thread_cpu; +__thread CPUState *thread_cpu; bool qemu_cpu_is_self(CPUState *cpu) { diff --git a/linux-user/qemu.h b/linux-user/qemu.h index 4edd7d0c08..bc4bf35036 100644 --- a/linux-user/qemu.h +++ b/linux-user/qemu.h @@ -18,8 +18,6 @@ #include "exec/gdbstub.h" #include "qemu/queue.h" -#define THREAD __thread - /* This is the size of the host kernel's sigset_t, needed where we make * direct system calls that take a sigset_t pointer and a size. */ @@ -201,7 +199,7 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, abi_long arg5, abi_long arg6, abi_long arg7, abi_long arg8); void gemu_log(const char *fmt, ...) GCC_FMT_ATTR(1, 2); -extern THREAD CPUState *thread_cpu; +extern __thread CPUState *thread_cpu; void cpu_loop(CPUArchState *env); const char *target_strerror(int err); int get_osversion(void); From patchwork Mon Feb 19 17:10:34 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 875249 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zlVnd01Yfz9ryn for ; Tue, 20 Feb 2018 04:18:13 +1100 (AEDT) Received: from localhost ([::1]:51481 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1enp4t-0001kf-2z for incoming@patchwork.ozlabs.org; Mon, 19 Feb 2018 12:18:11 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53760) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1enoy2-00054M-8K for qemu-devel@nongnu.org; Mon, 19 Feb 2018 12:11:08 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1enoxy-0005aV-RH for qemu-devel@nongnu.org; Mon, 19 Feb 2018 12:11:06 -0500 Received: from mout.kundenserver.de ([212.227.126.131]:51573) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1enoxy-0005Zt-CF for qemu-devel@nongnu.org; Mon, 19 Feb 2018 12:11:02 -0500 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue001 [212.227.15.167]) with ESMTPSA (Nemesis) id 0LnGL0-1eHXDB16ty-00hiBe; Mon, 19 Feb 2018 18:10:43 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Mon, 19 Feb 2018 18:10:34 +0100 Message-Id: <20180219171037.24539-6-laurent@vivier.eu> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180219171037.24539-1-laurent@vivier.eu> References: <20180219171037.24539-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K0:nLk+XFRbRBKPKW4YNQmme+mN2gc90s/ksmXkhB2R7g6OizLikGT tSIl6I8cMBJRcczs0yqH6y210sc6g2wBU0i6E9WMOAMaSD7efw+c1LKRuofJq9kPyIamD/m SCxi885oVhg8A7nJQycXjjefI3eAfKMbjNfvjvpBDph0CWLTLPd4OG/+q4mCQy5Chw9DfBm 8bk/dugWHVmpt5x2WRQmQ== X-UI-Out-Filterresults: notjunk:1; V01:K0:2C2AdkYGBmE=:mXQP7IzWZvQE7rpka3PB3Z ZMzYbyAns29f6s6hX6PejTWOnuEEqi1DP6zQVomH63X5EaMFQlITjLKNSP0R1mBQrxPFkcxbs X72sZSPyorunBrivHuACfEZgjsdi2BvPA/xA2dY3zcjiP6gf2gePSpKWYgueFxGlPM5vlmoLk 1BDXszgcubUsXwqNfPyGO5ZyxHZeaktJbx2EXMkIKLZMLRDEN7YAbcCF+zN+KT3IQLOe/XCHQ luRRX6fs2YZ/ovbtB6d+51YmLDrja7P65/uYTZEEvdiy8MkdLqaucyVfcfB90l0ByxAQzupdx VOJlfvrHCJFSXv2AEYwPrGgIaFM27ZRmMayaT3tWs3+jfyoFfshm25YnS1cNYYKHPKAec3VT7 X7V0XcYigTVVUE3uEgO7OI4nY00X1mnmTLNie0CAItrmidZzWzYQS/GVQ6n8n5xeLiQBMfiL8 xSA2Ht6/nQM1QCExCkRtC+FloYhhVYzG50a+zaTiOlthyZc305gqX4wIIwOO3+6LUpf0LacT9 GhSbs4O+qQeaAifhAsIQJcH1Cur2WOERD75Nzlo/ZRkbtiNWdK3qRGMRfINuDYPkVvFMXlFrb PyZpYfz23hNk7JAriw+4qOllxO2FQdsDQiyOnsMXOBdMaFNIi0n9DKxNEOlVBluYSfrZSdTkz lPF23jMEkSjZrZ/COi3JF0W9E7JRP85pnBqc/j+Ahz7Wdx3YBd0Bcq1lLlvtdvDJai/xyqCWC MImmLcvGtfMY732FRhbCfZWNCrGuuDpcGl42nrNmLK7YicHcYTYxqkxN9fI= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.126.131 Subject: [Qemu-devel] [PULL 5/8] linux-user: Move CPU type name selection to a function X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Riku Voipio , Laurent Vivier Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Instead of a sequence of "#if ... #endif" move the selection to a function in linux-user/*/target_elf.h We can't add them in linux-user/*/target_cpu.h because we will need to include "elf.h" to use ELF flags with eflags, and including "elf.h" in "target_cpu.h" introduces some conflicts in elfload.c Suggested-by: Richard Henderson Signed-off-by: Laurent Vivier Reviewed-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20180124211301.10095-2-laurent@vivier.eu> --- linux-user/aarch64/target_elf.h | 14 +++++++++++++ linux-user/alpha/target_elf.h | 14 +++++++++++++ linux-user/arm/target_elf.h | 14 +++++++++++++ linux-user/cris/target_elf.h | 14 +++++++++++++ linux-user/hppa/target_elf.h | 14 +++++++++++++ linux-user/i386/target_elf.h | 14 +++++++++++++ linux-user/m68k/target_elf.h | 14 +++++++++++++ linux-user/main.c | 41 ++------------------------------------ linux-user/microblaze/target_elf.h | 14 +++++++++++++ linux-user/mips/target_elf.h | 14 +++++++++++++ linux-user/mips64/target_elf.h | 14 +++++++++++++ linux-user/nios2/target_elf.h | 14 +++++++++++++ linux-user/openrisc/target_elf.h | 14 +++++++++++++ linux-user/ppc/target_elf.h | 18 +++++++++++++++++ linux-user/s390x/target_elf.h | 14 +++++++++++++ linux-user/sh4/target_elf.h | 14 +++++++++++++ linux-user/sparc/target_elf.h | 14 +++++++++++++ linux-user/sparc64/target_elf.h | 14 +++++++++++++ linux-user/tilegx/target_elf.h | 14 +++++++++++++ linux-user/unicore32/target_elf.h | 14 +++++++++++++ linux-user/x86_64/target_elf.h | 14 +++++++++++++ 21 files changed, 286 insertions(+), 39 deletions(-) create mode 100644 linux-user/aarch64/target_elf.h create mode 100644 linux-user/alpha/target_elf.h create mode 100644 linux-user/arm/target_elf.h create mode 100644 linux-user/cris/target_elf.h create mode 100644 linux-user/hppa/target_elf.h create mode 100644 linux-user/i386/target_elf.h create mode 100644 linux-user/m68k/target_elf.h create mode 100644 linux-user/microblaze/target_elf.h create mode 100644 linux-user/mips/target_elf.h create mode 100644 linux-user/mips64/target_elf.h create mode 100644 linux-user/nios2/target_elf.h create mode 100644 linux-user/openrisc/target_elf.h create mode 100644 linux-user/ppc/target_elf.h create mode 100644 linux-user/s390x/target_elf.h create mode 100644 linux-user/sh4/target_elf.h create mode 100644 linux-user/sparc/target_elf.h create mode 100644 linux-user/sparc64/target_elf.h create mode 100644 linux-user/tilegx/target_elf.h create mode 100644 linux-user/unicore32/target_elf.h create mode 100644 linux-user/x86_64/target_elf.h diff --git a/linux-user/aarch64/target_elf.h b/linux-user/aarch64/target_elf.h new file mode 100644 index 0000000000..a7eb962fba --- /dev/null +++ b/linux-user/aarch64/target_elf.h @@ -0,0 +1,14 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef AARCH64_TARGET_ELF_H +#define AARCH64_TARGET_ELF_H +static inline const char *cpu_get_model(uint32_t eflags) +{ + return "any"; +} +#endif diff --git a/linux-user/alpha/target_elf.h b/linux-user/alpha/target_elf.h new file mode 100644 index 0000000000..344e9f4d39 --- /dev/null +++ b/linux-user/alpha/target_elf.h @@ -0,0 +1,14 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef ALPHA_TARGET_ELF_H +#define ALPHA_TARGET_ELF_H +static inline const char *cpu_get_model(uint32_t eflags) +{ + return "any"; +} +#endif diff --git a/linux-user/arm/target_elf.h b/linux-user/arm/target_elf.h new file mode 100644 index 0000000000..58ff6a0986 --- /dev/null +++ b/linux-user/arm/target_elf.h @@ -0,0 +1,14 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef ARM_TARGET_ELF_H +#define ARM_TARGET_ELF_H +static inline const char *cpu_get_model(uint32_t eflags) +{ + return "any"; +} +#endif diff --git a/linux-user/cris/target_elf.h b/linux-user/cris/target_elf.h new file mode 100644 index 0000000000..99eb4ec704 --- /dev/null +++ b/linux-user/cris/target_elf.h @@ -0,0 +1,14 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef CRIS_TARGET_ELF_H +#define CRIS_TARGET_ELF_H +static inline const char *cpu_get_model(uint32_t eflags) +{ + return "any"; +} +#endif diff --git a/linux-user/hppa/target_elf.h b/linux-user/hppa/target_elf.h new file mode 100644 index 0000000000..82b4e9535e --- /dev/null +++ b/linux-user/hppa/target_elf.h @@ -0,0 +1,14 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef HPPA_TARGET_ELF_H +#define HPPA_TARGET_ELF_H +static inline const char *cpu_get_model(uint32_t eflags) +{ + return "any"; +} +#endif diff --git a/linux-user/i386/target_elf.h b/linux-user/i386/target_elf.h new file mode 100644 index 0000000000..1c6142e7da --- /dev/null +++ b/linux-user/i386/target_elf.h @@ -0,0 +1,14 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef I386_TARGET_ELF_H +#define I386_TARGET_ELF_H +static inline const char *cpu_get_model(uint32_t eflags) +{ + return "qemu32"; +} +#endif diff --git a/linux-user/m68k/target_elf.h b/linux-user/m68k/target_elf.h new file mode 100644 index 0000000000..df375ad5d3 --- /dev/null +++ b/linux-user/m68k/target_elf.h @@ -0,0 +1,14 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef M68K_TARGET_ELF_H +#define M68K_TARGET_ELF_H +static inline const char *cpu_get_model(uint32_t eflags) +{ + return "any"; +} +#endif diff --git a/linux-user/main.c b/linux-user/main.c index fd7900628b..079b98235b 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -35,6 +35,7 @@ #include "elf.h" #include "exec/log.h" #include "trace/control.h" +#include "target_elf.h" char *exec_path; @@ -4344,45 +4345,7 @@ int main(int argc, char **argv, char **envp) init_qemu_uname_release(); if (cpu_model == NULL) { -#if defined(TARGET_I386) -#ifdef TARGET_X86_64 - cpu_model = "qemu64"; -#else - cpu_model = "qemu32"; -#endif -#elif defined(TARGET_ARM) - cpu_model = "any"; -#elif defined(TARGET_UNICORE32) - cpu_model = "any"; -#elif defined(TARGET_M68K) - cpu_model = "any"; -#elif defined(TARGET_SPARC) -#ifdef TARGET_SPARC64 - cpu_model = "TI UltraSparc II"; -#else - cpu_model = "Fujitsu MB86904"; -#endif -#elif defined(TARGET_MIPS) -#if defined(TARGET_ABI_MIPSN32) || defined(TARGET_ABI_MIPSN64) - cpu_model = "5KEf"; -#else - cpu_model = "24Kf"; -#endif -#elif defined TARGET_OPENRISC - cpu_model = "or1200"; -#elif defined(TARGET_PPC) -# ifdef TARGET_PPC64 - cpu_model = "POWER8"; -# else - cpu_model = "750"; -# endif -#elif defined TARGET_SH4 - cpu_model = "sh7785"; -#elif defined TARGET_S390X - cpu_model = "qemu"; -#else - cpu_model = "any"; -#endif + cpu_model = cpu_get_model(0); } tcg_exec_init(0); /* NOTE: we need to init the CPU at this stage to get diff --git a/linux-user/microblaze/target_elf.h b/linux-user/microblaze/target_elf.h new file mode 100644 index 0000000000..8a8f1debff --- /dev/null +++ b/linux-user/microblaze/target_elf.h @@ -0,0 +1,14 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef MICROBLAZE_TARGET_ELF_H +#define MICROBLAZE_TARGET_ELF_H +static inline const char *cpu_get_model(uint32_t eflags) +{ + return "any"; +} +#endif diff --git a/linux-user/mips/target_elf.h b/linux-user/mips/target_elf.h new file mode 100644 index 0000000000..bed0b43259 --- /dev/null +++ b/linux-user/mips/target_elf.h @@ -0,0 +1,14 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef MIPS_TARGET_ELF_H +#define MIPS_TARGET_ELF_H +static inline const char *cpu_get_model(uint32_t eflags) +{ + return "24Kf"; +} +#endif diff --git a/linux-user/mips64/target_elf.h b/linux-user/mips64/target_elf.h new file mode 100644 index 0000000000..5b6f4692e0 --- /dev/null +++ b/linux-user/mips64/target_elf.h @@ -0,0 +1,14 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef MIPS64_TARGET_ELF_H +#define MIPS64_TARGET_ELF_H +static inline const char *cpu_get_model(uint32_t eflags) +{ + return "5KEf"; +} +#endif diff --git a/linux-user/nios2/target_elf.h b/linux-user/nios2/target_elf.h new file mode 100644 index 0000000000..801e20afaf --- /dev/null +++ b/linux-user/nios2/target_elf.h @@ -0,0 +1,14 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef NIOS2_TARGET_ELF_H +#define NIOS2_TARGET_ELF_H +static inline const char *cpu_get_model(uint32_t eflags) +{ + return "any"; +} +#endif diff --git a/linux-user/openrisc/target_elf.h b/linux-user/openrisc/target_elf.h new file mode 100644 index 0000000000..40ceb025c9 --- /dev/null +++ b/linux-user/openrisc/target_elf.h @@ -0,0 +1,14 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef OPENRISC_TARGET_ELF_H +#define OPENRISC_TARGET_ELF_H +static inline const char *cpu_get_model(uint32_t eflags) +{ + return "or1200"; +} +#endif diff --git a/linux-user/ppc/target_elf.h b/linux-user/ppc/target_elf.h new file mode 100644 index 0000000000..576a5b9959 --- /dev/null +++ b/linux-user/ppc/target_elf.h @@ -0,0 +1,18 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef PPC_TARGET_ELF_H +#define PPC_TARGET_ELF_H +static inline const char *cpu_get_model(uint32_t eflags) +{ +#ifdef TARGET_PPC64 + return "POWER8"; +#else + return "750"; +#endif +} +#endif diff --git a/linux-user/s390x/target_elf.h b/linux-user/s390x/target_elf.h new file mode 100644 index 0000000000..8114b59c1d --- /dev/null +++ b/linux-user/s390x/target_elf.h @@ -0,0 +1,14 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef S390X_TARGET_ELF_H +#define S390X_TARGET_ELF_H +static inline const char *cpu_get_model(uint32_t eflags) +{ + return "qemu"; +} +#endif diff --git a/linux-user/sh4/target_elf.h b/linux-user/sh4/target_elf.h new file mode 100644 index 0000000000..f485e0cef2 --- /dev/null +++ b/linux-user/sh4/target_elf.h @@ -0,0 +1,14 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef SH4_TARGET_ELF_H +#define SH4_TARGET_ELF_H +static inline const char *cpu_get_model(uint32_t eflags) +{ + return "sh7785"; +} +#endif diff --git a/linux-user/sparc/target_elf.h b/linux-user/sparc/target_elf.h new file mode 100644 index 0000000000..31d508c0df --- /dev/null +++ b/linux-user/sparc/target_elf.h @@ -0,0 +1,14 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef SPARC_TARGET_ELF_H +#define SPARC_TARGET_ELF_H +static inline const char *cpu_get_model(uint32_t eflags) +{ + return "Fujitsu MB86904"; +} +#endif diff --git a/linux-user/sparc64/target_elf.h b/linux-user/sparc64/target_elf.h new file mode 100644 index 0000000000..d6e388f1cf --- /dev/null +++ b/linux-user/sparc64/target_elf.h @@ -0,0 +1,14 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef SPARC64_TARGET_ELF_H +#define SPARC64_TARGET_ELF_H +static inline const char *cpu_get_model(uint32_t eflags) +{ + return "TI UltraSparc II"; +} +#endif diff --git a/linux-user/tilegx/target_elf.h b/linux-user/tilegx/target_elf.h new file mode 100644 index 0000000000..7197bb0005 --- /dev/null +++ b/linux-user/tilegx/target_elf.h @@ -0,0 +1,14 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef TILEGX_TARGET_ELF_H +#define TILEGX_TARGET_ELF_H +static inline const char *cpu_get_model(uint32_t eflags) +{ + return "any"; +} +#endif diff --git a/linux-user/unicore32/target_elf.h b/linux-user/unicore32/target_elf.h new file mode 100644 index 0000000000..e2bfcb2ca3 --- /dev/null +++ b/linux-user/unicore32/target_elf.h @@ -0,0 +1,14 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef UNICORE32_TARGET_ELF_H +#define UNICORE32_TARGET_ELF_H +static inline const char *cpu_get_model(uint32_t eflags) +{ + return "any"; +} +#endif diff --git a/linux-user/x86_64/target_elf.h b/linux-user/x86_64/target_elf.h new file mode 100644 index 0000000000..7b76a90de8 --- /dev/null +++ b/linux-user/x86_64/target_elf.h @@ -0,0 +1,14 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef X86_64_TARGET_ELF_H +#define X86_64_TARGET_ELF_H +static inline const char *cpu_get_model(uint32_t eflags) +{ + return "qemu64"; +} +#endif From patchwork Mon Feb 19 17:10:35 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 875244 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zlVjc10j2z9ryy for ; Tue, 20 Feb 2018 04:14:42 +1100 (AEDT) Received: from localhost ([::1]:51451 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1enp1U-0007TE-AO for incoming@patchwork.ozlabs.org; Mon, 19 Feb 2018 12:14:40 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53717) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1enoxw-0004xH-2k for qemu-devel@nongnu.org; Mon, 19 Feb 2018 12:11:03 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1enoxs-0005VO-Mv for qemu-devel@nongnu.org; Mon, 19 Feb 2018 12:11:00 -0500 Received: from mout.kundenserver.de ([212.227.126.187]:59571) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1enoxs-0005Uj-C8 for qemu-devel@nongnu.org; Mon, 19 Feb 2018 12:10:56 -0500 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue001 [212.227.15.167]) with ESMTPSA (Nemesis) id 0LxGmY-1egwOc0YtW-016u2I; Mon, 19 Feb 2018 18:10:44 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Mon, 19 Feb 2018 18:10:35 +0100 Message-Id: <20180219171037.24539-7-laurent@vivier.eu> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180219171037.24539-1-laurent@vivier.eu> References: <20180219171037.24539-1-laurent@vivier.eu> X-Provags-ID: V03:K0:JosostQ2jbfpzOBCEYrC1GYsavBcZCaK2Y1eoD3JIQ0SOg/jbsc ZCRA9zbM88Rt3XWw54tF1eXnLbGgsoehYccNAM5cRPL1DHMXokhH6ESwpvACgYYCE9TR0zt 2LdT9INJaGMt6I4PHRsizuL6brqcSIZrnuO/dVfGhYnGVgWOnY/AqrZhYudE8HXxM22V2s2 aqAuoFOmsrMzVoKFM0DRA== X-UI-Out-Filterresults: notjunk:1; V01:K0:mucI5Hdx34I=:kDQw45jQivdl5BzHhK5Zf9 ViYpaVBNQA2P/7FxN/ONIpthIVhFvvknodNG07iwRTPYEZu17YRkzCcFdEMBNbEcm5quG2NQC GIeRmbn50yLPCP3JB30XINLLsqMhs8uIvOS7NEznbDU5cVSWkjN30ZQoI2Xeu83803rOMxL9g PBM93akplNDN+N9EAFz128WTbeW3E1s0CDUgD6M/6AqPHywEM1eL3PMt5gLBdm9moGel3FKdP TKbzWv9+qD6n9yQUAkWKXq0ZFoiFblkl4MZUwQ4TUEIqGX/pFh23/GWbc0281Zs+wQcdb71qc O/o+vXgH2FF0LAWAcpP86GGibG5Q6oOUhuwzUXp1pePueIv0s6Ao7MROyj0hngwH8jf4iEK7v VIyVO48O1GJIXYP43zuCTG+OO+ZgALIsKKmkMo247zoi84lHME0lc8FY1movF9Y9lJo77vDh6 KC/zPSD4W4t93DbnGJnLqRY8xW8yn43C72xJ019+zIPu1m5r1fLA9JG4h4mfxSFtmQAqLXNie yN+qIY7YZrHolGZSHwUZjmubluBxU7SjIAfbPKLGKKlZMBDlqts+apia1C31MfSkhUHX3fTnb e3fcDY0nqvAYtYeiCN13IQ7QQU8O0azv05g4vHIYaBVpQNamkjwSYQ0aLpPuKrl+D0Awx9IwS MPx2FzQ5zHzKYEYtXyl1m0rJDa7BLGkBLu+d5EzcyiG6Ovr1MJ1mBDm0hQhfafVh/TsweYOT4 bwaiyqtXKKWDzii9q1bZxHziWTvx6+Hd4CPy8w== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.126.187 Subject: [Qemu-devel] [PULL 6/8] linux-user: introduce functions to detect CPU type X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: YunQiang Su , Riku Voipio , Laurent Vivier Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: YunQiang Su Add a function to return ELF e_flags and use it to select the CPU model. Signed-off-by: YunQiang Su [lv: split the patch and some cleanup in get_elf_eflags()] Signed-off-by: Laurent Vivier Reviewed-by: Richard Henderson Message-Id: <20180124211301.10095-3-laurent@vivier.eu> --- linux-user/elfload.c | 35 +++++++++++++++++++++++++++++++++++ linux-user/main.c | 20 ++++++++++---------- linux-user/qemu.h | 1 + 3 files changed, 46 insertions(+), 10 deletions(-) diff --git a/linux-user/elfload.c b/linux-user/elfload.c index 8bb9a2c3e8..0208022445 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -2396,6 +2396,41 @@ give_up: g_free(syms); } +uint32_t get_elf_eflags(int fd) +{ + struct elfhdr ehdr; + off_t offset; + int ret; + + /* Read ELF header */ + offset = lseek(fd, 0, SEEK_SET); + if (offset == (off_t) -1) { + return 0; + } + ret = read(fd, &ehdr, sizeof(ehdr)); + if (ret < sizeof(ehdr)) { + return 0; + } + offset = lseek(fd, offset, SEEK_SET); + if (offset == (off_t) -1) { + return 0; + } + + /* Check ELF signature */ + if (!elf_check_ident(&ehdr)) { + return 0; + } + + /* check header */ + bswap_ehdr(&ehdr); + if (!elf_check_ehdr(&ehdr)) { + return 0; + } + + /* return architecture id */ + return ehdr.e_flags; +} + int load_elf_binary(struct linux_binprm *bprm, struct image_info *info) { struct image_info interp_info; diff --git a/linux-user/main.c b/linux-user/main.c index 079b98235b..bbeb78fb89 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -4344,8 +4344,17 @@ int main(int argc, char **argv, char **envp) init_qemu_uname_release(); + execfd = qemu_getauxval(AT_EXECFD); + if (execfd == 0) { + execfd = open(filename, O_RDONLY); + if (execfd < 0) { + printf("Error while loading %s: %s\n", filename, strerror(errno)); + _exit(EXIT_FAILURE); + } + } + if (cpu_model == NULL) { - cpu_model = cpu_get_model(0); + cpu_model = cpu_get_model(get_elf_eflags(execfd)); } tcg_exec_init(0); /* NOTE: we need to init the CPU at this stage to get @@ -4438,15 +4447,6 @@ int main(int argc, char **argv, char **envp) cpu->opaque = ts; task_settid(ts); - execfd = qemu_getauxval(AT_EXECFD); - if (execfd == 0) { - execfd = open(filename, O_RDONLY); - if (execfd < 0) { - printf("Error while loading %s: %s\n", filename, strerror(errno)); - _exit(EXIT_FAILURE); - } - } - ret = loader_exec(execfd, filename, target_argv, target_environ, regs, info, &bprm); if (ret != 0) { diff --git a/linux-user/qemu.h b/linux-user/qemu.h index bc4bf35036..f4b4ca72ad 100644 --- a/linux-user/qemu.h +++ b/linux-user/qemu.h @@ -186,6 +186,7 @@ int loader_exec(int fdexec, const char *filename, char **argv, char **envp, struct target_pt_regs * regs, struct image_info *infop, struct linux_binprm *); +uint32_t get_elf_eflags(int fd); int load_elf_binary(struct linux_binprm *bprm, struct image_info *info); int load_flt_binary(struct linux_binprm *bprm, struct image_info *info); From patchwork Mon Feb 19 17:10:36 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 875234 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zlVg12Q1jz9ryy for ; Tue, 20 Feb 2018 04:12:29 +1100 (AEDT) Received: from localhost ([::1]:51443 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1enozL-0005U8-A1 for incoming@patchwork.ozlabs.org; Mon, 19 Feb 2018 12:12:27 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53688) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1enoxt-0004ud-Dj for qemu-devel@nongnu.org; Mon, 19 Feb 2018 12:10:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1enoxq-0005So-3D for qemu-devel@nongnu.org; Mon, 19 Feb 2018 12:10:57 -0500 Received: from mout.kundenserver.de ([212.227.126.133]:47171) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1enoxp-0005S4-OP for qemu-devel@nongnu.org; Mon, 19 Feb 2018 12:10:53 -0500 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue001 [212.227.15.167]) with ESMTPSA (Nemesis) id 0MeXgF-1f7zCt2Qrn-00QBIp; Mon, 19 Feb 2018 18:10:44 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Mon, 19 Feb 2018 18:10:36 +0100 Message-Id: <20180219171037.24539-8-laurent@vivier.eu> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180219171037.24539-1-laurent@vivier.eu> References: <20180219171037.24539-1-laurent@vivier.eu> X-Provags-ID: V03:K0:AV1kk+qZ+GMaAFL+UCQqgB30tBS+gxQ9uoJwfhlHlyInIJVLCwT EagsMuXYp1OrGU1dPleocUunI9fAvQoJNFZIhbims8/FTxz9J2QdP/mzIJm5wJGXqJ4/RPO 5IAdpboXsnGjFzeu2rXSc2QuiTBAkqQgFssDUkcOlhQ336s8aAm0nqc4GdBL02D4b7qBt5P SZRgdsjzOihiklESOocMw== X-UI-Out-Filterresults: notjunk:1; V01:K0:o5R6KQzG7zI=:Rh4bgwctqJkUjz/RcIUFNc 6BHJ7Jya1+YJdJufUOvV8NeS4wvpiGQrvdiPy5vNnKWSVQUHbx77iU6G5AYBDs+zrTxPmsIB3 W3Byukpvv+2yY9UspQxmJvH/1vxdqtD4wgkpGA7BKliQ19LotES4oqF7PeQJN1aDx30LD5qCD QFfw8y37ywPwB6QMYHcFyRBWluG/cI/p+MOvarwhfKmFLJs9X5WZ+wawrqmAf7u+hHxNZqJ2K 4PcqYDe2BQVCSlp6pU9klxFhtXiyZ7eOu6o7BqN6Ca13uJOJ0fXljiIHvdRmMqG5VshWxkNkc yyk/PkOr7TGVJcgcGMxAMYawxoOrrtayomihgBIw6AT14eb59iG4WdK8IPDs4xxtv2S1By5Hf A2V1E5IqXYPvoNuOqjTlyQjd8Mb3thH5H0/f206G+rx0/chi+5qX60ql/+IG6KAYqSnR+KmWM XJ1LmARpQqgCzeq0NU3ODoRi1IfZQjb0e7awKw3qO1StKjBZAjcEQINTi1WDhESJ1h8r+eVrf 6rNdSAdGK2rFbI6nLj7TkD00DxOZN5B14C1j0pPHe07U0raIi58HfmmBLrhk124pYwSsW6vwG z5O6567qijbjzfyoP6peDC+19DVrZHLTHUNdAgINrIfw7mhsFT77hF/W9ET4puCwudaTkTQ5k aUxSsq1V2yGijEt6+MB7wDcMCXp+y51HlQsXVzytNZm6y6yFt+dqExw54HA+H9k/Bi+iPGY44 /lY9vn7olZpmJ3SJxa7lCBnX7mNqHJBelg4HkQ== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.126.133 Subject: [Qemu-devel] [PULL 7/8] linux-user, m68k: select CPU according to ELF header values X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Riku Voipio , Laurent Vivier Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" M680x0 doesn't support the same set of instructions as ColdFire, so we can't use "any" CPU type to execute m68020 instructions. We select CPU type ("m68040" or "any" for ColdFire) according to the ELF header. If we can't, we use by default the value used until now: "any". Signed-off-by: Laurent Vivier Reviewed-by: Richard Henderson Message-Id: <20180124211301.10095-4-laurent@vivier.eu> --- include/elf.h | 28 ++++++++++++++++++++++++++++ linux-user/m68k/target_elf.h | 6 ++++++ 2 files changed, 34 insertions(+) diff --git a/include/elf.h b/include/elf.h index e8a515ce3d..ca9a419043 100644 --- a/include/elf.h +++ b/include/elf.h @@ -537,6 +537,34 @@ typedef struct { #define HWCAP_S390_HIGH_GPRS 512 #define HWCAP_S390_TE 1024 +/* M68K specific definitions. */ +/* We use the top 24 bits to encode information about the + architecture variant. */ +#define EF_M68K_CPU32 0x00810000 +#define EF_M68K_M68000 0x01000000 +#define EF_M68K_CFV4E 0x00008000 +#define EF_M68K_FIDO 0x02000000 +#define EF_M68K_ARCH_MASK \ + (EF_M68K_M68000 | EF_M68K_CPU32 | EF_M68K_CFV4E | EF_M68K_FIDO) + +/* We use the bottom 8 bits to encode information about the + coldfire variant. If we use any of these bits, the top 24 bits are + either 0 or EF_M68K_CFV4E. */ +#define EF_M68K_CF_ISA_MASK 0x0F /* Which ISA */ +#define EF_M68K_CF_ISA_A_NODIV 0x01 /* ISA A except for div */ +#define EF_M68K_CF_ISA_A 0x02 +#define EF_M68K_CF_ISA_A_PLUS 0x03 +#define EF_M68K_CF_ISA_B_NOUSP 0x04 /* ISA_B except for USP */ +#define EF_M68K_CF_ISA_B 0x05 +#define EF_M68K_CF_ISA_C 0x06 +#define EF_M68K_CF_ISA_C_NODIV 0x07 /* ISA C except for div */ +#define EF_M68K_CF_MAC_MASK 0x30 +#define EF_M68K_CF_MAC 0x10 /* MAC */ +#define EF_M68K_CF_EMAC 0x20 /* EMAC */ +#define EF_M68K_CF_EMAC_B 0x30 /* EMAC_B */ +#define EF_M68K_CF_FLOAT 0x40 /* Has float insns */ +#define EF_M68K_CF_MASK 0xFF + /* * 68k ELF relocation types */ diff --git a/linux-user/m68k/target_elf.h b/linux-user/m68k/target_elf.h index df375ad5d3..998fe0fe2f 100644 --- a/linux-user/m68k/target_elf.h +++ b/linux-user/m68k/target_elf.h @@ -9,6 +9,12 @@ #define M68K_TARGET_ELF_H static inline const char *cpu_get_model(uint32_t eflags) { + if (eflags == 0 || (eflags & EF_M68K_M68000)) { + /* 680x0 */ + return "m68040"; + } + + /* Coldfire */ return "any"; } #endif From patchwork Mon Feb 19 17:10:37 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 875246 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zlVkS4mbKz9ryn for ; Tue, 20 Feb 2018 04:15:28 +1100 (AEDT) Received: from localhost ([::1]:51457 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1enp2E-0008AA-L6 for incoming@patchwork.ozlabs.org; Mon, 19 Feb 2018 12:15:26 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53700) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1enoxu-0004vL-5P for qemu-devel@nongnu.org; Mon, 19 Feb 2018 12:10:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1enoxt-0005Vb-27 for qemu-devel@nongnu.org; Mon, 19 Feb 2018 12:10:58 -0500 Received: from mout.kundenserver.de ([212.227.126.131]:60235) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1enoxs-0005Uu-PC for qemu-devel@nongnu.org; Mon, 19 Feb 2018 12:10:56 -0500 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue001 [212.227.15.167]) with ESMTPSA (Nemesis) id 0LmC02-1eEDIN0EcM-00a01O; Mon, 19 Feb 2018 18:10:45 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Mon, 19 Feb 2018 18:10:37 +0100 Message-Id: <20180219171037.24539-9-laurent@vivier.eu> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180219171037.24539-1-laurent@vivier.eu> References: <20180219171037.24539-1-laurent@vivier.eu> X-Provags-ID: V03:K0:HkzSxmB7kL+L70jyM4N9+3xpXVgst1nZ8LAu+ydTcdZR3r/l4GL 9Jl1OcUuy0/FziQz+deW69fIHUuJjWz4JtrtaxI2ufg9ybK2qC0tCE8LBqg7GrDA0EL3VX6 fdLdw18CvApefxY6ywc804sY29/bO1zuQW5mWkdve+FHSPDzKykUnwJ8is23zwBwrxS6xab +8g1SBHM/7LWdOMAM9zFQ== X-UI-Out-Filterresults: notjunk:1; V01:K0:0glOHDqHwTI=:cVxa63iBC+/MM0R2xHu0vn UvcO6Imh6uTV8EvZ7TCNJ1rno9IkLHFXQE0s9eqDdr6la8CLoG4s5nZ2Zc5RDUGnZz5HCeelN x0auQnO8MYCBntiDsPKw6fqBmzB+/2YIOMOFAoWZ4VwLm+X9qaR60+GPFnVBBlGpqjTCt4/On ALMAGY1RScKgWDq3dJ5awMZN5nOx93L9s5TljTOJxqkZcujurZOYsVN8i/PP7E6BpCFMvl0Cu h+GsTh0ejrQmlyL/el5bFxPOq/tYQzgBro1azEhp1Kbl/cIXfU8FySgrDsXHUjXFz9StKJEhr n4b/UaZAu1rlEe4atXuGe2+QpDqClOtcHv4nPYkDSC8x+nCaZ4VWnybPNwW10dFJalMGpYEwu 3nQZmSNJW9yKO5tEm1yeXUQ1ulAdbwVdHp49+nE0YtRTmYAhxUhKDog7yRyvLUaW5F7DWIoBT KyZxLkFJtMGTrGbM4E+0pKkv9r1Zc35AkBGh3OcIbwT5aTQgSg7owsqO+9krANU8KGXlY3bZ9 O360GQ8BcIg6h+BdAYZP4Q4mm44o/ZjECGNH+AVxysJDvsSXtZ+/ZdMGXL0aifIiExU1SLZck 5dg9RGanDxkWefYP3BSCDU8rIDI6As1sBc2y/9LCjpvP3j5hXp/c3117pWn3YNN0FP1E3A003 znRKdJvOiJ7N7fsxxoAWjiM92WGnAfUsxwY0KlFHvdb4hKRfG9n8+6lOEQhz3CsRx043pyZfN puf885SdB/Yhha5hBY/X2rBlNOcKfwnTX3R0iw== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.126.131 Subject: [Qemu-devel] [PULL 8/8] linux-user: MIPS set cpu to r6 CPU if binary is R6 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: YunQiang Su , Riku Voipio , Laurent Vivier Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: YunQiang Su So here we need to detect the version of binaries and set cpu_model for it. Signed-off-by: YunQiang Su [lv: original patch modified to move code into cpu_get_model()] Signed-off-by: Laurent Vivier Reviewed-by: Richard Henderson Message-Id: <20180124211301.10095-5-laurent@vivier.eu> --- include/elf.h | 4 ++++ linux-user/mips/target_elf.h | 3 +++ linux-user/mips64/target_elf.h | 3 +++ 3 files changed, 10 insertions(+) diff --git a/include/elf.h b/include/elf.h index ca9a419043..746b6d393b 100644 --- a/include/elf.h +++ b/include/elf.h @@ -40,6 +40,10 @@ typedef int64_t Elf64_Sxword; #define EF_MIPS_ARCH_5 0x40000000 /* -mips5 code. */ #define EF_MIPS_ARCH_32 0x50000000 /* MIPS32 code. */ #define EF_MIPS_ARCH_64 0x60000000 /* MIPS64 code. */ +#define EF_MIPS_ARCH_32R2 0x70000000 /* MIPS32r2 code. */ +#define EF_MIPS_ARCH_64R2 0x80000000 /* MIPS64r2 code. */ +#define EF_MIPS_ARCH_32R6 0x90000000 /* MIPS32r6 code. */ +#define EF_MIPS_ARCH_64R6 0xa0000000 /* MIPS64r6 code. */ /* The ABI of a file. */ #define EF_MIPS_ABI_O32 0x00001000 /* O32 ABI. */ diff --git a/linux-user/mips/target_elf.h b/linux-user/mips/target_elf.h index bed0b43259..14b53d7469 100644 --- a/linux-user/mips/target_elf.h +++ b/linux-user/mips/target_elf.h @@ -9,6 +9,9 @@ #define MIPS_TARGET_ELF_H static inline const char *cpu_get_model(uint32_t eflags) { + if (eflags & EF_MIPS_ARCH_32R6) { + return "mips32r6-generic"; + } return "24Kf"; } #endif diff --git a/linux-user/mips64/target_elf.h b/linux-user/mips64/target_elf.h index 5b6f4692e0..ae14b38bfa 100644 --- a/linux-user/mips64/target_elf.h +++ b/linux-user/mips64/target_elf.h @@ -9,6 +9,9 @@ #define MIPS64_TARGET_ELF_H static inline const char *cpu_get_model(uint32_t eflags) { + if (eflags & EF_MIPS_ARCH_64R6) { + return "I6400"; + } return "5KEf"; } #endif