From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id BaRGKo8gZGAYAwAAWB0awg (envelope-from ) for ; Wed, 31 Mar 2021 03:11:11 -0400 Received: by simark.ca (Postfix, from userid 112) id 90B901EE14; Wed, 31 Mar 2021 03:11:11 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,RDNS_DYNAMIC, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 Received: from sourceware.org (ip-8-43-85-97.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 955591E590 for ; Wed, 31 Mar 2021 03:11:09 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 326303858012; Wed, 31 Mar 2021 07:11:09 +0000 (GMT) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2107.outbound.protection.outlook.com [40.107.243.107]) by sourceware.org (Postfix) with ESMTPS id 47D203858012 for ; Wed, 31 Mar 2021 07:11:06 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 47D203858012 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=wavecomp.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=fshahbazker@wavecomp.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OWZDNCgYtNxIvCyt7ZYmllZ861yQZp8NhEgMYBG9wJwwErrG5Jnwr90sGwQ17NP0LOKYy6LV5Uwkd9C8vIfG+HDSMv5k4tFOnFbh5B6Ss668Wov9JNpM44+BjGxX5ChKQttS++Mml+3o0Xi6ZSFdoJNpS43MaY2TVYhLe1cWjuKQ9+0OJ2G3znLySW73iMYjtk7yombtCQINc0mLVRobrYTjLch7/gyEMw+xEzeBj+29XUlYgxtopmVW4ViaT4k09N2GTMOgJtBBfl/+GpSqpI8ksaZOT3ik7hTtH/eB/0nCTxxbGpDH9AJJ/gJRg0SMiAaST5wsx1/zdTMoqpvpPA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3zjRokVnXtzZzB/ktmtjmiq7bTlhY1XXbOG04C/v0tU=; b=aLNfYvtym5ICYqZ927kDwMGfRI+UHvrgV+bgjmqGsUwVJhmzAdoDVV4B6IutsSpW6bKo8ogJmKk0UrpLI4vLkLr95uociWsfsPHlXzysr3GkJBJgbDvgtN8hckf5sL4HpEPS9jUQsq4pLhtpot6Fx+rXVHgS/gp4IoKBAwQ1bPxp98t1dn9AY0FPJn7ZopvmymANVDyO7fWJ6Bbekgs4HYBuR9cX5cBDkRSTsd7xRC1aHYdWSZtZQjcS2tHDkbJyHLsd7/7cw8dFBT4bL3QMnglM2HTf1jCuSRsCW8sg4wd6ySVTdYqtmzYv2lh3GCD+vWKlvknESDZpuXDo9vmg7A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=wavecomp.com; dmarc=pass action=none header.from=wavecomp.com; dkim=pass header.d=wavecomp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wavecomp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3zjRokVnXtzZzB/ktmtjmiq7bTlhY1XXbOG04C/v0tU=; b=tXw5nP6hw/PRIqhAKB7pbSbylwyFW8FGnwOQRTd2jjJZEiXqtGO1xkMMMtqWQBj5XJb+sVUo6E1Jyo/cjqoBgWnAck8bQCcPCoAPNYS67pRCYzrvfHunJmRi+LEqkPNnhO1UCUFeIIp8JrGN8PvC9VELANFxVUhVmIuVgM6kr3k= Authentication-Results: sourceware.org; dkim=none (message not signed) header.d=none;sourceware.org; dmarc=none action=none header.from=wavecomp.com; Received: from MW3PR22MB2299.namprd22.prod.outlook.com (2603:10b6:303:47::10) by MWHPR22MB0720.namprd22.prod.outlook.com (2603:10b6:300:f6::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3999.27; Wed, 31 Mar 2021 07:11:04 +0000 Received: from MW3PR22MB2299.namprd22.prod.outlook.com ([fe80::c17a:9a15:2dbd:2411]) by MW3PR22MB2299.namprd22.prod.outlook.com ([fe80::c17a:9a15:2dbd:2411%7]) with mapi id 15.20.3999.027; Wed, 31 Mar 2021 07:11:04 +0000 From: Faraz Shahbazker To: gdb-patches@sourceware.org, Mike Frysinger Subject: [PATCH v3] sim: mips: Add handlers to simulator monitor for unlink, lseek and stat Date: Wed, 31 Mar 2021 12:40:49 +0530 Message-Id: <20210331071049.1448914-1-fshahbazker@wavecomp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable X-Originating-IP: [123.201.75.179] X-ClientProxiedBy: PN1PR01CA0089.INDPRD01.PROD.OUTLOOK.COM (2603:1096:c00:1::29) To MW3PR22MB2299.namprd22.prod.outlook.com (2603:10b6:303:47::10) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (123.201.75.179) by PN1PR01CA0089.INDPRD01.PROD.OUTLOOK.COM (2603:1096:c00:1::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3999.26 via Frontend Transport; Wed, 31 Mar 2021 07:11:02 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1127024b-4a43-439a-91d2-08d8f4142576 X-MS-TrafficTypeDiagnostic: MWHPR22MB0720: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4502; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: K41jtc32K7r1KBhVPEyi7e5GTfBOJ4+gxNIrGNYD44SGcDw/rkqI/bKPL7G2Z6Y8TIUyqIYzmeNg/QftK/0UBiVSNSClLBAdlAehfuY8YwomwkbwIBUPVFwZDo+igzAPKwlfd0nH49VJ5ZwyzkvdW/fz95z2+1hCVezncN5YBRDJEyFljXU+gEMwqzhL0OuEQmow16VSSgvOL0iJkfVDVs4B8R7cTB1Xbu2bi89zuScT9dkdDH3inUnu7I3zAaigdZpbmrTpG1JXt/duBarJuQhS0GFR0cngTxf9x1mSwS3brWH8Gyq/lumH0rBNtGv1LeXs7bf23Svri53hwZVucVvigRmYAWl8L37GvRHkYe4eLj8DxFIhFB/kMFCzkf93WrmqZvy3Li6QEPgeA4lzTcqXrpRJLqjeFabsU6kln1oruRZWNvDtG8qb1GYMdOQM7OsIWvv05DUhkBmuRKMCZ1u8+51JuzxLiSpkPhoJ08Z4hyXwuNVhDzqGVL9lmaANAjEcFcuqagY/O4ZDaFYNjYhFlECBuSQfnSYneQTGx8aKszNZLhfTI2HYD6z2slvaOIR0taDpyAm9at4WDq7eF+JItn49eVr78KZh75pkBjFAW9+cA85zoVhoUUh0ocYcl304CIcsTCJ+U8myL/Jj8A== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MW3PR22MB2299.namprd22.prod.outlook.com; PTR:; CAT:NONE; SFS:(366004)(346002)(38100700001)(1076003)(26005)(508600001)(36756003)(6666004)(2906002)(16526019)(6506007)(8676002)(66556008)(66476007)(186003)(4326008)(6486002)(66946007)(2616005)(6916009)(956004)(107886003)(52116002)(54906003)(83380400001)(86362001)(5660300002)(6512007)(8936002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?SK5mgFAJacyv55as6IP8b1QyAibkMb2o6/DzNn/FKr32/SfxNJO3IH0xzidU?= =?us-ascii?Q?xwEnnmzcJyEodUQwfb8+csIxy44VY4GMj8mc6UWPHQ0lrSlp0zAJ0jp3/JLF?= =?us-ascii?Q?ZjWS182BZDOYvADl6cpb//KyxzE7B5nShNdxcjJ14sF2r8i1+It7dWnjx0E0?= =?us-ascii?Q?OfH5uMY9Ec5We0YqdSbSoZCIlyCMFz6wx/tLuiJFv53ukR8yA45yx87RHEq/?= =?us-ascii?Q?m6KqesNEmumgkT5EkAhS852A2jv3RDJ7gjQU2ON+3m3vR4jE/Zr8uClhZ2oP?= =?us-ascii?Q?0NzPRHV/BYK3FuqqeGr+rE6m5RpiS1coZnUFn6ingiqVKV1PkM1HOgwCsd3q?= =?us-ascii?Q?1kiDwtpBqlv5rpKRMrKwkS1r72SGooko0e8QwMgI/Dc+CC7MF3OqLhI+Gt3f?= =?us-ascii?Q?fvxLFD51iIqBvLmKUw/Ri4TM9JFgr7ouK9i4DxMUiSWYXP0ZkISLSn5/HBAM?= =?us-ascii?Q?Tvi1yJEzcXywwBL8j9iuh7WBSRNgClLbCiBHECJ0kZ3dQ5srVFDP54p3Fdx2?= =?us-ascii?Q?Rmt05VR998q8OOxtvhxIEAPGWJbO/ofcxMJuyRAzZMgzS0ljbRdootzRBrzZ?= =?us-ascii?Q?UfGCtLcg4V2HUnoXWVBS9UDtrthWhmBuQIJi2XwexSTvbL42GxIXZ1UlgPEb?= =?us-ascii?Q?ige2tAUr13G9W+Vo4hLbMlmyDTkGpZ8zkuPeWkkhQWNt1WStkn9IOWPiQKHP?= =?us-ascii?Q?kW5K7JDoRLg0DtXaEhldeZseB7W34owpxDKA45qOHFQYPJlQOJ4pMHA9V+1w?= =?us-ascii?Q?pBmLaU4KKbOsrE5GDedO27eKRkUrOtS8uOFTggtmOL8wO16AkDd9gauQEa1K?= =?us-ascii?Q?nNu0/2YxcS/r3EJEFGWLyKNAFaeqFQVENyc/MsH4Q7SVSJ9EdymKy62Lnnrh?= =?us-ascii?Q?W8mYIGq8BoFuc3ncKwnHQYCRk058971o9a9jiZZtHfBHkqlz41r2w2rlLeah?= =?us-ascii?Q?8ghX0W0EQlzhd+54L2cjob+veVUI6UxzMg900A60ObMX1ML6TcSHrr7blh2q?= =?us-ascii?Q?c8WrkAk6x8f3l6MIyVtLQOGCvOtysBLgw9lTIQQfgTc7Sp/ncJ381xC0SqhQ?= =?us-ascii?Q?IpE86B1PYd99ePxMmvfgdLAsejSzLYgz90dtCllJFc8nP2lfN9Hcq25kIFiB?= =?us-ascii?Q?+lrMM3DiXLNBrjDxzKVrjTZmv4sqWY2M4foaxyfRpBe64VTOP5myAy1Cnuap?= =?us-ascii?Q?KvmtkulDy9xOKmqveoL/gNyPb/toIp3oXWk8BZ2Iq69CX2CyR1hNCOh6ng7/?= =?us-ascii?Q?etNd/M4rI2r8Hx3k0xH09pFeVkvCVN1Jf86zv4cXrlsgb3b83TyEMLNGIVBs?= =?us-ascii?Q?uOeU7ikxxy8EMizFDfUVowZn?= X-OriginatorOrg: wavecomp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1127024b-4a43-439a-91d2-08d8f4142576 X-MS-Exchange-CrossTenant-AuthSource: MW3PR22MB2299.namprd22.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Mar 2021 07:11:03.9439 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 463607d3-1db3-40a0-8a29-970c56230104 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: tBXkOzdeqTSoZ9ZzCMVNIYeqlJZsfiszdv+//DYKdGgQemDHrBs03rpiCvVhYJv3j+BcsdnZfxthOXfSdSgEqrKNI0CCS3VGhgqh1z2wVm4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR22MB0720 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Faraz Shahbazker , Chao-ying Fu Errors-To: gdb-patches-bounces@sourceware.org Sender: "Gdb-patches" sim/mips/ChangeLog * interp.c (sim_monitor): Add switch entries for unlink (13), lseek (14), and stat (15). Derived from patch authored by Steve Ellcey --- Notes: Changes from v2: - remove call to abort() on cb_syscall failure - capture return value of call in V0 sim/mips/ChangeLog | 6 ++++ sim/mips/interp.c | 70 +++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 75 insertions(+), 1 deletion(-) diff --git a/sim/mips/ChangeLog b/sim/mips/ChangeLog index 12347a7e3e2..56464eb6727 100644 --- a/sim/mips/ChangeLog +++ b/sim/mips/ChangeLog @@ -1,3 +1,9 @@ +2021-03-31 Steve Ellcey + Faraz Shahbazker + + * interp.c (sim_monitor): Add switch entries for unlink (13), + lseek (14), and stat (15). + 2021-02-28 Mike Frysinger =20 * configure: Regenerate. diff --git a/sim/mips/interp.c b/sim/mips/interp.c index fd93a12f69a..55b089dbee9 100644 --- a/sim/mips/interp.c +++ b/sim/mips/interp.c @@ -50,6 +50,7 @@ code on the hardware. #include "elf-bfd.h" #include "gdb/callback.h" /* GDB simulator callback interface */ #include "gdb/remote-sim.h" /* GDB simulator interface */ +#include "sim-syscall.h" /* Simulator system call support */ =20 char* pr_addr (SIM_ADDR addr); char* pr_uword64 (uword64 addr); @@ -1147,6 +1148,23 @@ Recognized firmware names are: `idt', `pmon', `lsipm= on', and `none'.\n", return SIM_RC_OK; } =20 +/* stat structures from MIPS32/64. */ +static const char stat32_map[] =3D +"st_dev,2:st_ino,2:st_mode,4:st_nlink,2:st_uid,2:st_gid,2" +":st_rdev,2:st_size,4:st_atime,4:st_spare1,4:st_mtime,4:st_spare2,4" +":st_ctime,4:st_spare3,4:st_blksize,4:st_blocks,4:st_spare4,8"; + +static const char stat64_map[] =3D +"st_dev,2:st_ino,2:st_mode,4:st_nlink,2:st_uid,2:st_gid,2" +":st_rdev,2:st_size,8:st_atime,8:st_spare1,8:st_mtime,8:st_spare2,8" +":st_ctime,8:st_spare3,8:st_blksize,8:st_blocks,8:st_spare4,16"; + +/* Map for calls using the host struct stat. */ +static const CB_TARGET_DEFS_MAP CB_stat_map[] =3D +{ + { "stat", CB_SYS_stat, 15 }, + { 0, -1, -1 } +}; =20 =20 /* Simple monitor interface (currently setup for the IDT and PMON monitors= ) */ @@ -1167,7 +1185,7 @@ sim_monitor (SIM_DESC sd, =20 /* The following callback functions are available, however the monitor we are simulating does not make use of them: get_errno, - isatty, lseek, rename, system, time and unlink */ + isatty, rename, system and time. */ switch (reason) { =20 @@ -1241,6 +1259,56 @@ sim_monitor (SIM_DESC sd, break; } =20 + case 13: /* int unlink(const char *path) */ + { + char *path =3D fetch_str (sd, A0); + V0 =3D sim_io_unlink (sd, path); + free (path); + break; + } + + case 14: /* int lseek(int fd, int offset, int whence) */ + { + V0 =3D sim_io_lseek (sd, A0, A1, A2); + break; + } + + case 15: /* int stat(const char *path, struct stat *buf); */ + { + /* As long as the infrastructure doesn't cache anything + related to the stat mapping, this trick gets us a dual + "struct stat"-type mapping in the least error-prone way. */ + host_callback *cb =3D STATE_CALLBACK (sd); + const char *saved_map =3D cb->stat_map; + CB_TARGET_DEFS_MAP *saved_syscall_map =3D cb->syscall_map; + bfd *prog_bfd =3D STATE_PROG_BFD (sd); + int is_elf32bit =3D (elf_elfheader(prog_bfd)->e_ident[EI_CLASS] =3D=3D + ELFCLASS32); + static CB_SYSCALL s; + CB_SYSCALL_INIT (&s); + s.func =3D 15; + /* Mask out the sign extension part for 64-bit targets because the + MIPS simulator's memory model is still 32-bit. */ + s.arg1 =3D A0 & 0xFFFFFFFF; + s.arg2 =3D A1 & 0xFFFFFFFF; + s.p1 =3D (PTR) sd; + s.p2 =3D (PTR) cpu; + s.read_mem =3D sim_syscall_read_mem; + s.write_mem =3D sim_syscall_write_mem; + + cb->syscall_map =3D (CB_TARGET_DEFS_MAP *) CB_stat_map; + cb->stat_map =3D is_elf32bit ? stat32_map : stat64_map; + + if (cb_syscall (cb, &s) !=3D CB_RC_OK) + sim_engine_halt (sd, cpu, NULL, mips_pc_get (cpu), + sim_stopped, SIM_SIGILL); + + V0 =3D s.result; + cb->stat_map =3D saved_map; + cb->syscall_map =3D saved_syscall_map; + break; + } + case 17: /* void _exit() */ { sim_io_eprintf (sd, "sim_monitor(17): _exit(int reason) to be coded\n"); --=20 2.25.1