From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2068.outbound.protection.outlook.com [40.107.237.68]) by sourceware.org (Postfix) with ESMTPS id B9B343858D20 for ; Thu, 28 Sep 2023 09:58:22 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B9B343858D20 Authentication-Results: sourceware.org; dmarc=fail (p=quarantine dis=none) header.from=amd.com Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=amd.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AkenRU+gNsZ7lX6/RrqRLwj39WDZfQs8jlr1YTEIloZp7Q90ovWSTrajvUgaEujz4e5hnZ0kDKDdGe2qFJYyg7EXcDA0Ja1L9eP705DD7Ure797HrNNQImQX2gIjNos22GoaGj60yttNSQgG8ASWcUteTqqqBrtYjTP+hAb8perYck0N9u6n3OIDzhFoiB9wm4G+9A581tFHSEaZZtnFb+Hm+7nM+QL1+hCbEyEZ8ELCD6IDl+HjwN5sdtKGbSWtRL9F4mp2OpaREuXN77YJh+EFfcJQbjhQhPidUJC4n3ytPKM+tmmFVD0iMQfXBidFHiwK1TUSujIA8+0ckgdKMA== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=8vVEaX2WWdCfgXyTerDO5T/ZvSeq6gLNWPSvQ/WuSng=; b=TtGi9VUO5yQ4zQFk+iHA+wZninDDravH8FAJ7OlNxfSnq/xpSoC17uFFg2oV4+GLXjZyOkc0uBjEskvBCTa2JzzMiC9MTfEYcaS6P4iownpkQPE+356xrg9WaYNsTkosPB4MM2sTkPhm1MiHCeZbQIoIYytN0VL0qWSr073Mx8Nqqh5+Va+VRyf1vhxf2zuxV8GRCnklsx21MBt3AM8LJWF6e8/NVX0l3FcFV5X5qdL/YxCAQXUiuYYBqmGSi/gZnhtHkheuNZTgMvSJweCdaZmTmfldPIcXsn3uEKsBAKu9uDXR95BeYtS0MMg405p8B+soyDZTE5TMCybC2XpmKg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=adacore.com smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8vVEaX2WWdCfgXyTerDO5T/ZvSeq6gLNWPSvQ/WuSng=; b=kyF0WCH1wTW6KAkBwdh6lrS5sgQpzuaZGWwV/IuQDG8OWKI4iuDYbDQF5VrRvhDGeFhJOSdaB9NFOUlNCoq+b7Omz4EAz7KJNybUQqe7RYhrSagiA4pTHMHWrjTswVXxsJlBZBTVdcaTJmbLfcWinSErKctEJXCplzpz2rH3Fuc= Received: from CY5P221CA0145.NAMP221.PROD.OUTLOOK.COM (2603:10b6:930:6a::25) by DS7PR12MB6120.namprd12.prod.outlook.com (2603:10b6:8:98::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.23; Thu, 28 Sep 2023 09:58:18 +0000 Received: from CY4PEPF0000EDD6.namprd03.prod.outlook.com (2603:10b6:930:6a:cafe::bb) by CY5P221CA0145.outlook.office365.com (2603:10b6:930:6a::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6838.21 via Frontend Transport; Thu, 28 Sep 2023 09:58:18 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CY4PEPF0000EDD6.mail.protection.outlook.com (10.167.241.210) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6838.19 via Frontend Transport; Thu, 28 Sep 2023 09:58:18 +0000 Received: from hpe6u-23 (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Thu, 28 Sep 2023 04:58:17 -0500 Date: Thu, 28 Sep 2023 09:57:54 +0000 From: Lancelot SIX To: Tom Tromey CC: Subject: Re: [PATCH v2 6/7] Convert solib-rocm to new type-safe gdb_bfd_openr_iovec Message-ID: <20230928093346.vqrnmv73wyitf2ai@hpe6u-23> References: <20230918-gdb-bfd-vec-v2-0-162c0e9a2bc9@adacore.com> <20230918-gdb-bfd-vec-v2-6-162c0e9a2bc9@adacore.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <20230918-gdb-bfd-vec-v2-6-162c0e9a2bc9@adacore.com> X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY4PEPF0000EDD6:EE_|DS7PR12MB6120:EE_ X-MS-Office365-Filtering-Correlation-Id: 4d25beb0-8842-44b2-1c85-08dbc0097111 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: PZb1rcpOOsprII45EMqT7sjppE573DWkOWs9pXnwm7a0e5dGh0i6kcMymZiO6gDEP3FF9MvgtUM/oT1w+V9loLHwB42xrLMjOyT7u7Cx2/XNNBrVPYbCZEmWlOvtmGB/rJxd5cMZjMt1nYmvSJ72DWW5JCD6tQFHXM3Ly633OEd48Gy+qsf2yyNyNkZVWRKj7y062z3M4KfKs3HiZK7blWNsCYIhr4scCJFoZ3Ad2Wp3GZJAXI0yWCiN+twlNHJzANU1QweOzp8yMhbicCTPd6qVa2nE3wA4Sk4RhsncyPjtKRnZxc2jQSDboxF55rU4UZ/3KipgDp6dCvt7l1geGp8HWV9QEtFB7B7D0u6SHHJRdzqhblyNDia/2SCaZ2ias4nWah1eEBMC/httCgAnTElZQARO9mULTpwOdqlBkdDuYsFRCeJejge4YXcAegpeFIhdT0QUTMuIE2kSJWJxNRQwBje/KPin0TAB6v1Gnxya4F8m9ay601Gkw0DJVrTzwvAzRRWdIUq4pZ2AnuJcMINYTs2gCFaeDyggnn5135Jdiwbx4H3qwz6KAyvJlAoVHSoEdYHmnMWT0ADJtkXIEfAQ6nISVLoADTAR957sVPzuYWN9auZ4X9hXDJ23dW3A/u7EUWfExx41Y5fAH64cOrUTVx5tFNEtNyLEhyVi65zI2ME9SqXafc2Is5TIa5mFlAkW2uqc8YcUp9OLJaWEOBQuX0tF9JAe5dU5C7E/yhe8lYFh8kG9FjbzjxKyPwoLtcR/w99XB+bDmpqwaGE+Rw== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(376002)(396003)(136003)(39860400002)(346002)(230922051799003)(64100799003)(82310400011)(1800799009)(186009)(451199024)(36840700001)(40470700004)(46966006)(478600001)(336012)(426003)(83380400001)(16526019)(26005)(81166007)(82740400003)(356005)(6666004)(36860700001)(1076003)(9686003)(47076005)(70586007)(70206006)(6916009)(316002)(55016003)(5660300002)(40480700001)(2906002)(86362001)(4326008)(33716001)(8676002)(8936002)(40460700003)(41300700001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Sep 2023 09:58:18.6148 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4d25beb0-8842-44b2-1c85-08dbc0097111 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CY4PEPF0000EDD6.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB6120 X-Spam-Status: No, score=-11.5 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FORGED_SPF_HELO,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Hi Tom, I went through this patch and tested it. I have also tested it against the downstream ROCgdb, and everything seems good te me. It looks good to me, so Acked-by: Lancelot Six Thanks for doing this. Best, Lancelot. On Mon, Sep 18, 2023 at 08:52:51AM -0600, Tom Tromey wrote: > This converts the solib-rocm BFD iovec implementations to the new > type-safe gdb_bfd_openr_iovec. They were already essentially using > this approach, just without the type-safe wrapper. > > Thanks to Lancelot Six for testing and fixing this patch. > > Co-Authored-By: Lancelot Six > --- > gdb/solib-rocm.c | 66 ++++++++++++++++---------------------------------------- > 1 file changed, 18 insertions(+), 48 deletions(-) > > diff --git a/gdb/solib-rocm.c b/gdb/solib-rocm.c > index 56c210e9fa5..6b84f09e88b 100644 > --- a/gdb/solib-rocm.c > +++ b/gdb/solib-rocm.c > @@ -268,24 +268,13 @@ namespace { > > /* Interface to interact with a ROCm code object stream. */ > > -struct rocm_code_object_stream > +struct rocm_code_object_stream : public gdb_bfd_iovec_base > { > DISABLE_COPY_AND_ASSIGN (rocm_code_object_stream); > > - /* Copy SIZE bytes from the underlying objfile storage starting at OFFSET > - into the user provided buffer BUF. > + int stat (bfd *abfd, struct stat *sb) final override; > > - Return the number of bytes actually copied (might be inferior to SIZE if > - the end of the stream is reached). */ > - virtual file_ptr read (void *buf, file_ptr size, file_ptr offset) = 0; > - > - /* Retrieve file information in SB. > - > - Return 0 on success. On failure, set the appropriate bfd error number > - (using bfd_set_error) and return -1. */ > - int stat (struct stat *sb); > - > - virtual ~rocm_code_object_stream () = default; > + ~rocm_code_object_stream () override = default; > > protected: > rocm_code_object_stream () = default; > @@ -298,7 +287,7 @@ struct rocm_code_object_stream > }; > > int > -rocm_code_object_stream::stat (struct stat *sb) > +rocm_code_object_stream::stat (bfd *, struct stat *sb) > { > const LONGEST size = this->size (); > if (size == -1) > @@ -319,7 +308,8 @@ struct rocm_code_object_stream_file final : rocm_code_object_stream > rocm_code_object_stream_file (inferior *inf, int fd, ULONGEST offset, > ULONGEST size); > > - file_ptr read (void *buf, file_ptr size, file_ptr offset) override; > + file_ptr read (bfd *abfd, void *buf, file_ptr size, > + file_ptr offset) override; > > LONGEST size () override; > > @@ -348,7 +338,7 @@ rocm_code_object_stream_file::rocm_code_object_stream_file > } > > file_ptr > -rocm_code_object_stream_file::read (void *buf, file_ptr size, > +rocm_code_object_stream_file::read (bfd *, void *buf, file_ptr size, > file_ptr offset) > { > fileio_error target_errno; > @@ -423,7 +413,8 @@ struct rocm_code_object_stream_memory final : public rocm_code_object_stream > > rocm_code_object_stream_memory (gdb::byte_vector buffer); > > - file_ptr read (void *buf, file_ptr size, file_ptr offset) override; > + file_ptr read (bfd *abfd, void *buf, file_ptr size, > + file_ptr offset) override; > > protected: > > @@ -445,7 +436,7 @@ rocm_code_object_stream_memory::rocm_code_object_stream_memory > } > > file_ptr > -rocm_code_object_stream_memory::read (void *buf, file_ptr size, > +rocm_code_object_stream_memory::read (bfd *, void *buf, file_ptr size, > file_ptr offset) > { > if (size > m_objfile_image.size () - offset) > @@ -457,8 +448,8 @@ rocm_code_object_stream_memory::read (void *buf, file_ptr size, > > } /* anonymous namespace */ > > -static void * > -rocm_bfd_iovec_open (bfd *abfd, void *inferior_void) > +static gdb_bfd_iovec_base * > +rocm_bfd_iovec_open (bfd *abfd, inferior *inferior) > { > gdb::string_view uri (bfd_get_filename (abfd)); > gdb::string_view protocol_delim = "://"; > @@ -522,7 +513,6 @@ rocm_bfd_iovec_open (bfd *abfd, void *inferior_void) > { > ULONGEST offset = 0; > ULONGEST size = 0; > - inferior *inferior = static_cast (inferior_void); > > auto try_strtoulst = [] (gdb::string_view v) > { > @@ -607,28 +597,6 @@ rocm_bfd_iovec_open (bfd *abfd, void *inferior_void) > } > } > > -static int > -rocm_bfd_iovec_close (bfd *nbfd, void *data) > -{ > - delete static_cast (data); > - > - return 0; > -} > - > -static file_ptr > -rocm_bfd_iovec_pread (bfd *abfd, void *data, void *buf, file_ptr size, > - file_ptr offset) > -{ > - return static_cast (data)->read (buf, size, > - offset); > -} > - > -static int > -rocm_bfd_iovec_stat (bfd *abfd, void *data, struct stat *sb) > -{ > - return static_cast (data)->stat (sb); > -} > - > static gdb_bfd_ref_ptr > rocm_solib_bfd_open (const char *pathname) > { > @@ -636,10 +604,12 @@ rocm_solib_bfd_open (const char *pathname) > if (strstr (pathname, "://") == nullptr) > return svr4_so_ops.bfd_open (pathname); > > - gdb_bfd_ref_ptr abfd > - = gdb_bfd_openr_iovec (pathname, "elf64-amdgcn", rocm_bfd_iovec_open, > - current_inferior (), rocm_bfd_iovec_pread, > - rocm_bfd_iovec_close, rocm_bfd_iovec_stat); > + auto open = [] (bfd *nbfd) -> gdb_bfd_iovec_base * > + { > + return rocm_bfd_iovec_open (nbfd, current_inferior ()); > + }; > + > + gdb_bfd_ref_ptr abfd = gdb_bfd_openr_iovec (pathname, "elf64-amdgcn", open); > > if (abfd == nullptr) > error (_("Could not open `%s' as an executable file: %s"), pathname, > > -- > 2.40.1 >