From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id zADqOR9NYGBMfAAAWB0awg (envelope-from ) for ; Sun, 28 Mar 2021 05:32:15 -0400 Received: by simark.ca (Postfix, from userid 112) id DF77E1EF7C; Sun, 28 Mar 2021 05:32:15 -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 2B0A81E793 for ; Sun, 28 Mar 2021 05:32:14 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 747BA3858D33; Sun, 28 Mar 2021 09:32:13 +0000 (GMT) Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2124.outbound.protection.outlook.com [40.107.223.124]) by sourceware.org (Postfix) with ESMTPS id 447103858D33 for ; Sun, 28 Mar 2021 09:32:11 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 447103858D33 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=mqMAyjtU2R/icOhp8iuxIv1BRFA+NISQLXHCjmM1306ghqMPZtJirbdmKcm9U86Yc8I6R1C/pRHclSSALztvE9QXuUDuZhOcPAcNRahsIrLXYe73Vz2OaJxNnpC3lzZ+mXSfduZJROtIyv7phGNOLZMklvU2onBKEKeoMNGAygNNF311HYZg4Rj898cpybN56+5pUHCJNjwyqWFMGfMgpMz4zOCj/WSexI8Bae88dNdMfCiBNlYjKxcr1IhdLQ2i1CmgQv7sGCM2qSLRH6i3EVjDV1pt1XDH3vCb5LQKViBiz4ur5JsICAVKpMqmIAStQR4m6CZfhrlA53tJu8L9Tg== 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=GfKFCOgdUyW23iv4G1jlPfWdttOUYWiPg/+cS67TdNY=; b=LABo7t8MWJMr5YpB+x+9ORtHxi485blmspekbyZ5R62PcnRb1Gh+vsdUZx0gzabgRc3K84mwaICV9Drl5vW2bOU5zSCFjjhC902q5T+ZycNMWymW3uLvEtneg9683po6PcgexaWGgit8ht74zXgX3CSCuTCRjDqTOjLLKelZHIFIjsH9Wh9gKtrdP1d3uYj/YMMJmCKE+SMwtyXg5Gb60oXpLYwcdVR/+BxansK78sfl3xQintI0g+HYa/yizQrWrOhs2uJavkDKkkQPo7/Znhe1Iv1Qu56s8Qzqj4tf7Kekdjl4xwEGSm5Fof1C1CxV15o5KU754o+5AWTVPbX+6g== 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=GfKFCOgdUyW23iv4G1jlPfWdttOUYWiPg/+cS67TdNY=; b=OYfJIlZh5OrT0lbv5QA82vSeTMVbxxVGF+FBYdZCmTyUUUClsDbjNVCJSKHOm9M3gNsprzjywdL6UcRRv+CjCigSrEjvdR4kihfpLGBM+VqHfSLPNtHgT9zxsjWti7LV/PGs4O6XnfqaH/nnLVraWlspSMbij6f8MC07nEydKmQ= 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 MW3PR22MB2154.namprd22.prod.outlook.com (2603:10b6:303:4c::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3977.24; Sun, 28 Mar 2021 09:32:09 +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; Sun, 28 Mar 2021 09:32:09 +0000 From: Faraz Shahbazker To: gdb-patches@sourceware.org Subject: [PATCH] sim: mips: Add handlers to simulator monitor for unlink, lseek and stat Date: Sun, 28 Mar 2021 02:32:06 -0700 Message-Id: <20210328093206.15977-1-fshahbazker@wavecomp.com> X-Mailer: git-send-email 2.9.5 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable X-Originating-IP: [216.35.128.4] X-ClientProxiedBy: SJ0PR03CA0161.namprd03.prod.outlook.com (2603:10b6:a03:338::16) To MW3PR22MB2299.namprd22.prod.outlook.com (2603:10b6:303:47::10) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from mips-compiler-bld001.mipstec.com (216.35.128.4) by SJ0PR03CA0161.namprd03.prod.outlook.com (2603:10b6:a03:338::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3977.29 via Frontend Transport; Sun, 28 Mar 2021 09:32:08 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3979dcfe-6804-4390-1282-08d8f1cc5bbd X-MS-TrafficTypeDiagnostic: MW3PR22MB2154: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8882; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Jhc7MS9WngRRHnYByBC7IQCEJfN1sIKNpHkmE8JRVasJK02EkFQ8BisnQFfbaQvR6RhpbUV5Rn67r21eftUV0tlEQAPmzsAPOh/Rx8KEBokrby5ha8o2Soe2//e58jUgaeGm6MYQt+NCzFv5FhKVhpp3dykVv63O9pnYgYTYq5fj2E6WeKimv/NENSDVXAoNIaLnj507xlRdKsL7KJHEzI8GtQw3lXLdcKPHweXgwcBqVAM44BZzkEDKUOM5d6SZuDBYFDzO1b0cEOq5Vys/yoI2BK+LgkamAtpxfEOQFh6Vw4aAgP4BbG7yK3n7sjL8oShv7aPoRqku9T6sFc8ZgPQpnSHXtAWaqqXnWqJex2TTr871eGNMiQpBOWnAjHewGP0XQVYBSiZv/Q4M1/rG+Cn8fEmMuFUQMwuOqc9oU/v+ZqlrToRwUn8/7cK40YY9qTPXqz1QqHBBq9SdXercBM+jYWJ9mThfO+qMePyt3jY/5UQjdk4BPznU7auT2a0yQlDY0LkZ9ZOEEWvy2mb9I3EIrskV/rF8F6SnOfOE28ycmwONtO3sXyMpmVR2Nm7MuhhoIwEU0tAg44J8rtJD/5phO9Q5BTfxABjC8kuTjBZN2JdDhFkzbW4eo8fL2l/oKR8E4YLTShv2aktFiaps8qmDO1h+NlNUOW2N70v/0Vw= 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:(396003)(376002)(39830400003)(136003)(346002)(366004)(107886003)(66476007)(66946007)(36756003)(66556008)(6486002)(6916009)(38100700001)(8936002)(6506007)(2906002)(52116002)(83380400001)(8676002)(186003)(26005)(316002)(54906003)(16526019)(86362001)(956004)(478600001)(4326008)(2616005)(5660300002)(6512007)(1076003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?7VS2x14hqKPx0+KaDBTDMjV9kt/L5DUeXZUsSptkrlQn1FVDBPFk4S1qEb1T?= =?us-ascii?Q?jYZSWiZDBdr5B4A8n2Kxw47ONApKu+pI7GyF8EWb/tjxXT13w6TZFXznFXIP?= =?us-ascii?Q?GTqnzGZGKl7V+fwl5ecJSvjAqZvokdWsschwGbshxbo5ReoPdtH0KZDCIdHK?= =?us-ascii?Q?JAcDBIb8TO/D2N3B5ZJMHCb7+hOXKfjny7XCPNprcdxIl49IK0Ms+MYrBZ2y?= =?us-ascii?Q?uhmw2kXbWtSVpZ/V9ZGXfgoIoibz2MC0R3YObTdX0WrkW3zb6F1GcRyCY6y1?= =?us-ascii?Q?BtEjKQtG/B6yaS7mLZPv9yW3RXI0D+e3beGqTSGtmEBQyqjkVr7Sf4g+63Jj?= =?us-ascii?Q?xDHrUWytOCfKIy1FZFPAhrdQViWH4jvjozefOvJdDnFkWe4bViG4gBZ7Wi8t?= =?us-ascii?Q?acFGM9PlSOubEfdiGACy3nr2IDkYScFREYhjlchW+niK7yzjcdM+TPKtun4T?= =?us-ascii?Q?GxU9PBZu0DOPUW7Ulg3XVD1vBbSoCg89b2eRCwm695ETgg/yXHtXqCLxIzIa?= =?us-ascii?Q?Mj7aF7rl0L0AzmaDi+YFegNgOh76K+tsQ+MfnUNvnIrlFfoT4HVXeAzE8rpg?= =?us-ascii?Q?nn7tzYfuqpn5S8nMJ6LLQZz7juJFiizM4G5yxKk3dYiadEBwyXD3X5W/gJ5W?= =?us-ascii?Q?PO4H0z8MC+Q8jTw3CYjyH6oLSs/qVxjqu7qlB0k0uWWTZb4JBWLcdN3fdm56?= =?us-ascii?Q?d9YsLwlPwqViNfjfnUSnWDZqd9EWGHN/gEi03a7jZ2PL5CUB7sOdLRHzdIKe?= =?us-ascii?Q?Y7nqit1e9jdugkrApaNV3iNsq0YlsdrPlyWPih/lmD+qht8E/zmhuA3Gw3cF?= =?us-ascii?Q?P/jEpKhtRsJyiUzHRtEbUYSublB5hQc+r7ktmV+XqqDl+TR4M/uPYNMLTwwK?= =?us-ascii?Q?atX3K8D0Q85/EIeus0PKLctrFGxe+ZCz9zmwH2O3uCmHR114CE73704RVUQw?= =?us-ascii?Q?WeFpIqRYFHI6xR7XhuFYVJVUjyPh/Vk2n2W4gsrLVca8at2MHoCZ2yEvws74?= =?us-ascii?Q?BX+dbBPKdf1JMLvGmjm/1HY2xCvC0uKKwtWAc5OaXkqmubSvfiSHEd25oSug?= =?us-ascii?Q?3RXBQa6RKJsHaLpcWnANbvnPN+/W+rJwxaNNZw6dV4N20M0VPcc/uuA5rDjp?= =?us-ascii?Q?IQ2NwL1L3kHgu0HJg1LJiB75IhdF6PDRTHxnZRWEqXa/swKakGuaULqfxgoV?= =?us-ascii?Q?Woiqv+uq3kD+XCDigDPrmpW3AK3T37fOh/0zON+/aZ49ufsUhtHTosVCt/JK?= =?us-ascii?Q?rv5g7E95HbYiQXFDuCTYleSroCNTVuO2W+EO9pLsHZB1bEbP3atkDUwGOUkY?= =?us-ascii?Q?wTCULN0/67HcpS0mnvK6NaQL?= X-OriginatorOrg: wavecomp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3979dcfe-6804-4390-1282-08d8f1cc5bbd X-MS-Exchange-CrossTenant-AuthSource: MW3PR22MB2299.namprd22.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2021 09:32:09.0721 (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: uVRR0fC8eklJzc6Z2ODPpQoIaeC0Fd891In1TBNUeux6v9Wi9cv4jLTObgFvLZ3lmfoyeAWppFT1aZQK99t/6EpN0Xj5argYCVgfYtpD5xw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW3PR22MB2154 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 --- sim/mips/ChangeLog | 6 +++++ sim/mips/interp.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++= +++- 2 files changed, 73 insertions(+), 1 deletion(-) diff --git a/sim/mips/ChangeLog b/sim/mips/ChangeLog index 12347a7..88dd7dc 100644 --- a/sim/mips/ChangeLog +++ b/sim/mips/ChangeLog @@ -1,3 +1,9 @@ +2021-03-28 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 fd93a12..13e9129 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 #include @@ -1167,7 +1168,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 +1242,71 @@ 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; + } + +/* We may need to swap stat data around before passing it on to the + program being run. */ +#define copy16(x) (BigEndianMem ? bswap_16 (x) : (x)) +#define copy32(x) (BigEndianMem ? bswap_32 (x) : (x)) +#define copy64(x) (BigEndianMem ? bswap_64 (x) : (x)) + + case 15: /* int stat(const char *path, struct stat *buf); */ + { + /* We need to put the data into the type of stat structure + that MIPS uses and make sure it has the correct endianness. + We are assuming that the host and MIPS agree on what the bits + in st_mode mean. That appears to be true for x86 linux and + MIPS. */ + struct stat host_stat; + struct __attribute__ ((__packed__)) mips_stat { + short st_dev; + unsigned short st_ino; + unsigned int st_mode; + unsigned short st_nlink; + unsigned short st_uid; + unsigned short st_gid; + short st_rdev; + union { + int b32; + long b64; + } st_size; + } mips_stat; + char *buf; + char *path =3D fetch_str (sd, A0); + bfd *prog_bfd =3D STATE_PROG_BFD (sd); + int is_elf32bit =3D (elf_elfheader(prog_bfd)->e_ident[EI_CLASS] =3D=3D + ELFCLASS32); + buf =3D (char *) A1; + V0 =3D sim_io_stat (sd, path, &host_stat); + free (path); + mips_stat.st_dev =3D copy16 ((short) host_stat.st_dev); + mips_stat.st_ino =3D copy16 ((unsigned short) host_stat.st_ino); + mips_stat.st_mode =3D copy32 ((int) host_stat.st_mode); + mips_stat.st_nlink =3D copy16 ((unsigned short) host_stat.st_nlink); + mips_stat.st_uid =3D copy16 ((unsigned short) host_stat.st_uid); + mips_stat.st_gid =3D copy16 ((unsigned short) host_stat.st_gid); + mips_stat.st_rdev =3D copy16 ((short) host_stat.st_rdev); + if (is_elf32bit) + mips_stat.st_size.b32 =3D copy32 ((int) host_stat.st_size); + else + mips_stat.st_size.b64 =3D copy64 ((long) host_stat.st_size); + sim_write (sd, A1, (char *) &mips_stat, + sizeof(mips_stat) - (is_elf32bit? 4 : 0)); + break; + } + case 17: /* void _exit() */ { sim_io_eprintf (sd, "sim_monitor(17): _exit(int reason) to be coded\n"); --=20 2.9.5