From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id SPPRH9aaY2BXdQAAWB0awg (envelope-from ) for ; Tue, 30 Mar 2021 17:40:38 -0400 Received: by simark.ca (Postfix, from userid 112) id 73B361EE0E; Tue, 30 Mar 2021 17:40:38 -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.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER, RCVD_IN_SORBS_WEB,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.2 Received: from sourceware.org (server2.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 1E4EE1E789 for ; Tue, 30 Mar 2021 17:40:38 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 972143858012; Tue, 30 Mar 2021 21:40:37 +0000 (GMT) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2129.outbound.protection.outlook.com [40.107.244.129]) by sourceware.org (Postfix) with ESMTPS id 88DFA3858012 for ; Tue, 30 Mar 2021 21:40:33 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 88DFA3858012 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=P6asI0HvJFROh7+VvgyJUD2DeYqt3FVuYDN5ezY8WGnSj6waSKVoIhS6kF029AR3J/ui+tL74cjrOaL4Mi+SBU77o1HRoEksJiyPmwecg7w75gJx2w62+91Ah9TWQcwu7yqjYFm2hpMUbMDV1jUwSZp5xUFe5EBZOjeV3u84YHmA0HwS31bxDdmwfvGUKSrAtHU9tbiDO/+h7aLaKzk4VsFvsPlcJ4MEVvt0Hud7L1WknBNreBOZ0UbP9ftoo+oWj/i6yUnLk8ydf0TZ3FyCgv8EyyIR4cQNRCjXdy6Dqkk73CSz0vJ8Tvj7+Q27Rgoc+5aKif6ED6BXwQpXaeH/mQ== 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=+c1Q8SLxK3MqKwJXPiMAWUl6FezDD88YKj+V3VsQ0Fw=; b=EUOo4/gcDc48kh4UbDcVXKarkRj7rmQe8pw5Sci+lHImH1BrgLdV2Q9rd4XtheaMU02ijnXJgtfWGrtiejuVWJFCu41FQq5ag14L5AcDM+cBMTN0oqVkzyYaeQya9L+KgFxyEaEnFi0SBWu3SaKUNsw6rATE7suqPNlob7H3VOuZT6yuij2HZHSG+dg42nCkZdZfchLcNlObmidO0adOVTRkv+lTEOtpdm/JRT0x15Uvn8/Rx0Z0kXaa36QeDMKvcfLYX4FoHjDH6RM8RM4+jlxwByixXrZUxBZueU9GlYfFBT6IR/AuTIkLx03O3BXV2TcjzCToogPv4ccuKN7odw== 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=+c1Q8SLxK3MqKwJXPiMAWUl6FezDD88YKj+V3VsQ0Fw=; b=Rt/YOxVsIR0MGQXeDVhfpos1CirY/xOg7w01K/kC5UdnFrrp8IEZ1SJXB1A0LxP8JFA4SPhgX+qkMQOsGgW5+8ygM56T6LSJe0MOYYOzpCiUtFd4CXWXcnwmMEZQSdgiG/9rFkGfZ/UOmmxFDg/Y5PNu+/phHl7s6NebFPU0ePA= 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 CO6PR22MB2433.namprd22.prod.outlook.com (2603:10b6:303:b2::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3977.26; Tue, 30 Mar 2021 21:40:29 +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:40:28 +0000 From: Faraz Shahbazker To: gdb-patches@sourceware.org, Mike Frysinger Subject: [PATCH v2] sim: mips: Add handlers to simulator monitor for unlink, lseek and stat Date: Wed, 31 Mar 2021 03:10:16 +0530 Message-Id: <20210330214016.704151-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: BY5PR13CA0023.namprd13.prod.outlook.com (2603:10b6:a03:180::36) 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 BY5PR13CA0023.namprd13.prod.outlook.com (2603:10b6:a03:180::36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3999.14 via Frontend Transport; Tue, 30 Mar 2021 21:40:26 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 792fc842-d014-441d-7bf7-08d8f3c46f8b X-MS-TrafficTypeDiagnostic: CO6PR22MB2433: 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: pPT58srHk/W+lZxGMhDfJyUWiQ6QY+XllegTdQtZxgalIXD+LHhARiCoMizSC/ANL80hFP9PDjgyCk47A6YVErENec1lc4YEghaWGSaljIbnmJ/Obw75vp8lXNnEGNU1OhXIo0hpfFFBBOX6OFFN/fPkRFX3mUUCiL4LtjCjdh3qTXzJjhDo4HDRufnvTa3s5WjXDif1Tz9+3oynJcbbYOo7sMUM/QeHi46+/G7spobwt2uP4hQhDAf8aCoq6Ha1MisaJWzOKBfHtvYnbF/fXoeg+crNiBSLOCrS/lpI03uE3RUpO6Eq1vwCNqZchQ+Wa5seMnLC8cGHUmJym46AmcgxkVC9eZLksQce4Rd9ggDwHgEw3ERvSIu6Ops1D2mYy4WH85XxroY+F/f6OXtAFr/EGFyOje2nfQSK8WdgANvJFA1+eKk3F0q6tZ12ol7EmnrahomTFrb8ZTOckrUvmYMQKuiSXqE1QdWI34ZpUXQZofxmwkypz4VyUqZrwYheOuzD0b5O05d7QcteebF2a9nUtdJQC2CdyHs9212zQF89g/bedUvTSC/OAfdbZ75UXJZtbxJXvNeeDj5r2MBxjnOHn4uIMKgYFVraXCzn8IBEqOFEpeEUxrkll/+aM7Yz4RVIx806Ak/VTbG5xNaGYQ== 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)(136003)(39830400003)(396003)(366004)(376002)(36756003)(8936002)(1076003)(52116002)(316002)(54906003)(16526019)(66476007)(5660300002)(6506007)(66556008)(478600001)(956004)(2616005)(38100700001)(107886003)(8676002)(4326008)(26005)(2906002)(66946007)(186003)(6916009)(6486002)(86362001)(6512007)(83380400001)(6666004); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?rU0GsSSf05g/HsB5BFVtMrfHWIdlI0qUseWLmZWHHxaK1x/cU5IFXbZBla9T?= =?us-ascii?Q?wkpWScuTo7KcbKMc8lTF9ReybGngyfkP9rNBNfc+BciaD8TuSKy/Oy1vNTF8?= =?us-ascii?Q?LWKkFXZViWcM1UB3STtIMpLCQZT8B5gGLYoy7do8UcZWCByXzV2y50HIYC3m?= =?us-ascii?Q?ZJsMEyLuYldNZRY/0oQaYenbvhaYHUD346WV+jtezARd+TJLcw0viTx2OQYz?= =?us-ascii?Q?vi7gpKvOHMKt9CV+P4/Wg9LjroPMHwYsKQoyOXGgtj34LXxW7avwZdSVfGft?= =?us-ascii?Q?hADN+6V/tUvUh55ZXkQ7Q8Jt2aVQgxjFMA/1oabTvwYp66p3jlUCwUUovkpr?= =?us-ascii?Q?DiCON/CwvRG7sSn/SFjiqtBZlNzl1kIIe2uQ/keEDUe1/Kwj3TPy/jF3p68n?= =?us-ascii?Q?wIh66UJYNl6LYniQavCm3+/0pKezkuy6qvs9p+GQMpyn7H3P1wJXa4rfGDsL?= =?us-ascii?Q?X6MjlVIcoNZBKUo9VsqrRKg6V3na/PNTGr+rpgbHKaCkwhdUKbmeNEVKSC9P?= =?us-ascii?Q?S4Eym1X57xnrQI7bJoSxs6QR4krpldB7duFOWYRMiuMRTRkYutdFHox+GVUJ?= =?us-ascii?Q?5vG3H7d2BKN2M9cCyrgOO3uxCc+0k87gyVFPvzN74e7xlneHyfsCQ8SBldOB?= =?us-ascii?Q?BOOsaiwaKmq8CSoDpjr7bOyDJJ/QS4Kn2Pak5uuiWI40OweY8rgm1obzVGOL?= =?us-ascii?Q?PjCj6RQbLN5Xx4Y47DLuzKxg6B+Jh9rGYzs1301sJFix/7EETZEtPAemR8Un?= =?us-ascii?Q?M2E/I5bosP95BstfKucBQPjOnRG3GNGn+l3DgPGNh9LbpvgP881sGlRPKP2G?= =?us-ascii?Q?/FAFb4qHMqDtLr0f+ukvgdkzCGVH5gNILUdk5Wo/ffK0uzGZPXsBy8M/PKuS?= =?us-ascii?Q?mhOPYZ4l4xGYfEU+7PCKjRKjJxz6L8rYF7vfMMfW92VeNWbpt9DHBqPkKzhT?= =?us-ascii?Q?Zdqzx2Bf6aHb8bx19A8WTz6IZlbArBSJSbBKjSuLF5et8oon9qS3vbEIXwCr?= =?us-ascii?Q?HQ7RQ7NUnyS5veXrH1NRHEY10aDE31pE8W43PDhdhCuNfNi5fYUW+8UvMzCT?= =?us-ascii?Q?VLCnIKpU6bhg4rU+CPXi371oY34TCsfQsy9FwFq67ifVZwng4sU4vdsWDk9X?= =?us-ascii?Q?D8qSoad/rF5j5CiQOToB/FneOc2GxcxoVlPt06ex9C2izqmVvUE3eYA4K+xc?= =?us-ascii?Q?P/PT9pcVCa6JyoAWNgj4337s1dj3dw+zpnf3TbUCitKnGiSifHK1ktM3C/OH?= =?us-ascii?Q?Er/PlVLgiawb8i6L5L/NI00gBOkhBEJWDtMUPZLK8i7aU7wJoyvcQGG/LQ1L?= =?us-ascii?Q?bYQfTJdyZcOxPWVwaz/otjjf?= X-OriginatorOrg: wavecomp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 792fc842-d014-441d-7bf7-08d8f3c46f8b 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:40:28.6882 (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: LS2oPyMjl/8u/cCBGyZda3Mi+UQiWnJUE9ItRob4W1s493LvS7Jv6qicUQorRibhAJHukeDwosbhK3GjYigr8ivG+jCEmBVfsARoA7ZpKAw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR22MB2433 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: v1 is broken due to a typo. This update uses stat_map API for the stat callback. 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..29ffecd6ee9 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'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) + { + 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