From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam07on2097.outbound.protection.outlook.com [40.107.95.97]) by sourceware.org (Postfix) with ESMTPS id 3C6D03858018 for ; Tue, 30 Mar 2021 21:21:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 3C6D03858018 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=GkX/7YKBS6XlCA/eeGCscltvA3YTqTGiAUD+vd2RSvrgyRYw7XsflxAR3LX+B9W6AbkRzPGWZcT5BO8MTU+2gCMWFad1pQ9plvn7+Yvef2e//AkivbRB9CmsqJdrvOTo2czFNdFfhdYgs/rGF+uhxZn86TfQ0KZMa4L31/qENpBg4v8AVAarrLCqBVyAlLVGDTBmJMd+XQ2eXhF4VJRae834C6A/wUkWhWxXoxq4irmfjknTw5PborqvjFxaDgaNb4yP0MLDKMT8zhQos9NFMoI6eAw5ur+TNMs+lRXALmXvODUFCpJ8KQmb5raXjXVRYY4NlMnj+ZoxIggWGJjP3Q== 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=Ilcvg1ywRnM5fr8sru3n5hT6Xwy+PkTEVoSFP9BMSQE=; b=VS2+X0HjIzlgAj87KG9p9Sa4r/gtF7N8Pq+PzOHeOPLG7GQObgRY7hCPaT5sfYeLeVrefoX+4dhalZgMlvsiG14avz36ooEtQdADu6uIJq1TI34wrhyI3g/bdPxhnfpd4ZqkiWGgLx5ANm/Od3BAY0zn6p4o0ZfqVaq16zZESeekYLBAxoYqlBKs3mNvkBe25EfiD0zqKb5kDWsKx2/jCY4Uzt/QkpolJwp3AlxPS2X+QSb1Fslr11ueFdCLrlameOgj85zde/PwBfCRA8EjRzeCZu/0k0Zd4k2x9Kt94MOWlLbOZXvR792CmrEB3rQJRLK65DG4mRW8Vu5YRyY5Hw== 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=Ilcvg1ywRnM5fr8sru3n5hT6Xwy+PkTEVoSFP9BMSQE=; b=LhGEa+fUYIXW1vcVgDiG6kc96eIlpJC71+pM3b6qW1W1H6sK9jYqtCPTX+YhECQi06Ea2MKrd1LCSxrXgI+iqlMgzszjfrZ2GhBDxoVaoTyMY+Hn7NiJ8HigBWl1yIQ0OA/X+QBTXb8GhGBRlcr2X3805eccAUuGtOUnIGuff38= 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 MWHPR2201MB1056.namprd22.prod.outlook.com (2603:10b6:301:33::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3977.24; Tue, 30 Mar 2021 21:21:21 +0000 Received: from MW3PR22MB2299.namprd22.prod.outlook.com ([fe80::c17a:9a15:2dbd:2411]) by MW3PR22MB2299.namprd22.prod.outlook.com ([fe80::c17a:9a15:2dbd:2411%8]) with mapi id 15.20.3977.033; Tue, 30 Mar 2021 21:21:21 +0000 From: Faraz Shahbazker To: gdb-patches@sourceware.org Cc: Faraz Shahbazker , Chao-ying Fu Subject: [PATCH v1] sim: mips: Add handlers to simulator monitor for unlink, lseek and stat Date: Wed, 31 Mar 2021 02:51:09 +0530 Message-Id: <20210330212109.676809-1-fshahbazker@wavecomp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210328093206.15977-1-fshahbazker@wavecomp.com> References: <20210328093206.15977-1-fshahbazker@wavecomp.com> Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable X-Originating-IP: [123.201.23.49] X-ClientProxiedBy: SJ0PR05CA0143.namprd05.prod.outlook.com (2603:10b6:a03:33d::28) To MW3PR22MB2299.namprd22.prod.outlook.com (2603:10b6:303:47::10) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from frsxps.mipstec.com (123.201.23.49) by SJ0PR05CA0143.namprd05.prod.outlook.com (2603:10b6:a03:33d::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3999.17 via Frontend Transport; Tue, 30 Mar 2021 21:21:19 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7b7840eb-bbe8-4365-f4d0-08d8f3c1c381 X-MS-TrafficTypeDiagnostic: MWHPR2201MB1056: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2733; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: kHlA30GktYc8XHh8TX9zywxs//gfi4VjVygpGd5zKLMuxgcDdP80PrrxE7ffI8JMJ+EVQ4C3A6vuj1yGlXBtD/jyxpndo53zudxC+HulIA+647+r+VhfGOlMHyl6XoitFq7/uAYTJ1NB3DKPMbC1AXvK/DEre1mSeNWjWtsGUnwnJwrEAWI7uW1gXpE50V7g4FqAJAcjOFeFvf/qhSgbbYPfDMtsnilSqMKwcamWpQuV5tpS/4wuJenw4tlVU8LUZfrcTRGXo9KGBVVRe15ulbUc5et+E7eluS1YDPEIlYf1zNmXh41r2ptT+QeoYG2KbMpkAMFfFpFhWA3YyydPkXelo5uc3jhsVnf7CE089vSTvFSiOu43gWggVcCT8xSy/TrR1kGC13RK6lDS7/4tiqlnfDp2to17ZY6Ew2p3UEXVTJ2lsOjmyOW01h5sEegdovvmJ5qYjpyK8ABNT1TGw3HRrQape7Z8lrgQFYv135WpjXZXoB+FayLAfjFgPT0Zond5ORoTeRhMrfIl/oTe1DGmeYHcG1LVuSsU43+dja8ob+OoAReZbsxDs0nbulm1T3RF7BPo1JBjStfk/BC91Vo6WxaOITyaGSHl+seAfKikPsW+9ysQMJTmPQ1emtqD0AFsZa10yC0sCtxltsWo9A== 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:(346002)(376002)(366004)(136003)(396003)(39830400003)(6512007)(107886003)(86362001)(26005)(2616005)(66946007)(16526019)(66476007)(52116002)(186003)(1076003)(66556008)(6486002)(8936002)(38100700001)(8676002)(5660300002)(83380400001)(4326008)(36756003)(6506007)(316002)(956004)(54906003)(6916009)(6666004)(2906002)(478600001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?3Lt2UitLS3yzs7pkoYFhG9bkFwrPk5y1Ak3n+vZIzDDCx3Z05W+HUF10H0nw?= =?us-ascii?Q?Bg52RYrqTRxxn5Gm6W+bI5tRSBBymZcY5dz2q5yAOV8FR6eQmfxJfNmDHgRO?= =?us-ascii?Q?1bgK40BvqlMm8vgFJfEgYmh6/E+b/eVnF+gKrAjl5z+MRY+MfT5/OldRU7Da?= =?us-ascii?Q?sbm1gq4JVxhCNPA7XMZzS91xdEWvCTl54GuCzYCu4rb0cEiient5Vv3/Fvyc?= =?us-ascii?Q?mfJ7cmViV1bRaEH6F2waOGmoB5mcgT5D/av2Q6QuVUsQKxDhQAne9OBpt02z?= =?us-ascii?Q?ecLTbcPBmKm9WUng6zaszNyknB7P9UQPz1z8a3oTU1brMIWxlg7fq/RuAY7x?= =?us-ascii?Q?ZUFz77ArZviVt6Qx3AFW9Vpj+vNu02p4skzd9STsy6o1djz3v0Ef770P51db?= =?us-ascii?Q?k1tHgmDiI9PXdXx+jthNgYht0Cs0GRjQqS7YzOD3Gp/8hQE9kYu3vt9U1Mdx?= =?us-ascii?Q?nvtowLnUIdBNSxniqUMxAchqefYTQMeYzuEV5bZ1BqXnc7qrwlrLg9yA4Dxp?= =?us-ascii?Q?KFFBJ6zGtpAnMM8xuYdc8WFCrDQx6N7quGK5HfcmVYH/JrEYapohV8dhX2CH?= =?us-ascii?Q?63At5mo0lSMWp/MVOoOf8Kj864h74P5zS/54dR8/RArOxeZJlSPhSo2bB5ZB?= =?us-ascii?Q?fBzuNeKhDwHl3z3pB0arF5V5NBE/2m9vpRNDCx2AsHTVTUZ8rj0l1HUV25xk?= =?us-ascii?Q?cJ5KKRdXQHgOgsri29SOs1QALJYqhvEurTxbWAiCKbF5kttvIuyCe1TLG3Bl?= =?us-ascii?Q?BzSpKdVhV/rm8eF1o39ikQd/rDijwbjCj+rGWYcC+hDs9DPqhufsJBQ7DA01?= =?us-ascii?Q?jJjFe+1MJaFdW/sU2F8GiJFYPSBGt653CITG9dJBQcENDgoQ+y0DUBfrjhO9?= =?us-ascii?Q?9C55ilcAVId4AOTgeGW1AN4RhqSMbkjwwlmpaXUVF99wv/h6QxKzBCZwOHUW?= =?us-ascii?Q?rvZoisX+N9udwYH4m/1/J1lEbW9U3km46aXY7qCMqIlmK3Bq59KMBa7s5fw9?= =?us-ascii?Q?4vzAFbeo6UCGlVW2FXG2MFRBGrk28Rl8jrf8i443zCoP7X7T2ioZ4dnZGRf9?= =?us-ascii?Q?2GwhKfwIa118C+MqZQcxEK/8QYzPdnmuwMHdTSPhQcZwUYU4iBY6HOTC7lAd?= =?us-ascii?Q?NDorz+dX8dW21yCEW1orL8CJt57QKXlSthiA9PbPEZ+qEN8gIKeUgu8g/UQ2?= =?us-ascii?Q?OnCPyDUF5g+G8y8gjyvTXzs6VuUB1dCvB9KZub/yKimtT24VCu1vPp45CrOj?= =?us-ascii?Q?ZW2/ezdXJGakItpCyGTJXUfIWchIbJmNqVIvJ8PTd1FPhYQ+dBIfnRK15yQk?= =?us-ascii?Q?CCUIkCTiZZLFGs9JNcTY0g3V?= X-OriginatorOrg: wavecomp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7b7840eb-bbe8-4365-f4d0-08d8f3c1c381 X-MS-Exchange-CrossTenant-AuthSource: MW3PR22MB2299.namprd22.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Mar 2021 21:21:21.1060 (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: bYrHqykbdD9FAjekNrqi6C8KxIqWBUx1pQormqNrLwjsuwogw4NQM/sqmvKSCWLlWvyQ6eteeS5aZUB+1yLH81C9X5Djr/ctqTpPNT51gSw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR2201MB1056 X-Spam-Status: No, score=-9.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, MSGID_FROM_MTA_HEADER, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, RCVD_IN_SORBS_WEB, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org 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: , X-List-Received-Date: Tue, 30 Mar 2021 21:21:24 -0000 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 --- sim/mips/ChangeLog | 6 ++++ sim/mips/interp.c | 73 +++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 78 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..bcc4a3f91a4 100644 --- a/sim/mips/interp.c +++ b/sim/mips/interp.c @@ -40,6 +40,7 @@ code on the hardware. #include #include #include + #include #include #include @@ -50,6 +51,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 +1149,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 +1186,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 +1260,58 @@ 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 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) + { + abort (); + sim_engine_halt (sd, cpu, NULL, mips_pc_get (cpu), + sim_stopped, SIM_SIGILL); + } + + 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