From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lndn.lancelotsix.com (lndn.lancelotsix.com [51.195.220.111]) by sourceware.org (Postfix) with ESMTPS id B2AE63858D32 for ; Mon, 18 Sep 2023 09:41:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B2AE63858D32 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=lancelotsix.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=lancelotsix.com Received: from octopus (cust120-dsl54.idnet.net [212.69.54.120]) by lndn.lancelotsix.com (Postfix) with ESMTPSA id EB77F83B8B; Mon, 18 Sep 2023 09:41:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=lancelotsix.com; s=2021; t=1695030075; bh=HHx0U7+wedX7hwtSjlbOM6IV59gTcRtS+XEsfXl0mj8=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=k7at0lAHCluP2tIO7cVsCAgdYYiM44jHyecR3pxp3xH0fXxxmZSqQZw4gS+qX6mXn /ufQPXSSZciGJ34T/c91xs993RGOkI/VGXG1FF3z2ep5Zmw0aGFzVtyfmy08oWr/xk fwN52XOkefDbbioeczfpqBLHYQfdcFJecSJdBg4LmP/UirSOz2d+h7mX0dnpeplCV2 di0RNsov1sJFongKN4PU7r6QNsTOrQ1Oa+BbwiLh8FP3I/fFCq09gVKU86YIhr4xOL qrVyKPzQiIqFB3qdGpvib6MXUnrYrqn4x2k6E8CGpBwA6OZeWgSqoaSPQfKiAzZdEY nhUzmXaumo7BA== Date: Mon, 18 Sep 2023 10:41:09 +0100 From: Lancelot SIX To: Tom Tromey Cc: gdb-patches@sourceware.org Subject: Re: [PATCH 6/7] Convert solib-rocm to new type-safe gdb_bfd_openr_iovec Message-ID: <20230918094109.ke2zzdlvghdmehaj@octopus> References: <20230824-gdb-bfd-vec-v1-0-850e4e907ed1@adacore.com> <20230824-gdb-bfd-vec-v1-6-850e4e907ed1@adacore.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230824-gdb-bfd-vec-v1-6-850e4e907ed1@adacore.com> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.6.2 (lndn.lancelotsix.com [0.0.0.0]); Mon, 18 Sep 2023 09:41:15 +0000 (UTC) X-Spam-Status: No, score=-11.9 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,SPF_HELO_NONE,SPF_PASS,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 have tested this patch. As it is, it fails to compile. Here is a diff fixing the build. Changes are minor: - Change rocm_code_object_*::read to accept the " bfd *" first param to properly override gdb_bfd_iovec_base::read. - The "open" lambda passed to gdb_bfd_openr_iovec does not need to capture anything. Best, Lancelot. --- gdb/solib-rocm.c | 29 ++++++++++------------------- 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/gdb/solib-rocm.c b/gdb/solib-rocm.c index 009a5c1b774..6b84f09e88b 100644 --- a/gdb/solib-rocm.c +++ b/gdb/solib-rocm.c @@ -272,20 +272,9 @@ 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 : public gdb_bfd_iovec_base }; 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) @@ -613,7 +604,7 @@ rocm_solib_bfd_open (const char *pathname) if (strstr (pathname, "://") == nullptr) return svr4_so_ops.bfd_open (pathname); - auto open = [&] (bfd *nbfd) -> gdb_bfd_iovec_base * + auto open = [] (bfd *nbfd) -> gdb_bfd_iovec_base * { return rocm_bfd_iovec_open (nbfd, current_inferior ()); };