From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca (simark.ca [158.69.221.121]) by sourceware.org (Postfix) with ESMTPS id 4FD783858D28 for ; Tue, 10 Oct 2023 20:46:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4FD783858D28 Authentication-Results: sourceware.org; dmarc=fail (p=none dis=none) header.from=efficios.com Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=efficios.com Received: from smarchi-efficios.internal.efficios.com (192-222-143-198.qc.cable.ebox.net [192.222.143.198]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPSA id EBE801E091; Tue, 10 Oct 2023 16:46:18 -0400 (EDT) From: Simon Marchi To: gdb-patches@sourceware.org Cc: Simon Marchi Subject: [PATCH 16/24] gdb: make clear_so a method of struct so_list Date: Tue, 10 Oct 2023 16:40:11 -0400 Message-ID: <20231010204213.111285-17-simon.marchi@efficios.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231010204213.111285-1-simon.marchi@efficios.com> References: <20231010204213.111285-1-simon.marchi@efficios.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-3496.9 required=5.0 tests=BAYES_00,GIT_PATCH_0,KAM_DMARC_NONE,KAM_DMARC_STATUS,SPF_HELO_PASS,SPF_SOFTFAIL,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: ... just because it seems to make sense to do so. Change-Id: Ie283c92d9b90c54e3deee96a43c6a942d8b5910b --- gdb/solib.c | 35 ++++++++++++++--------------------- gdb/solist.h | 10 ++++++++++ 2 files changed, 24 insertions(+), 21 deletions(-) diff --git a/gdb/solib.c b/gdb/solib.c index 5ed223b8dfca..8f5b6e02e71c 100644 --- a/gdb/solib.c +++ b/gdb/solib.c @@ -623,39 +623,32 @@ solib_map_sections (so_list &so) return 1; } -/* Free symbol-file related contents of SO and reset for possible reloading - of SO. If we have opened a BFD for SO, close it. If we have placed SO's - sections in some target's section table, the caller is responsible for - removing them. +/* See solist.h. */ - This function doesn't mess with objfiles at all. If there is an - objfile associated with SO that needs to be removed, the caller is - responsible for taking care of that. */ - -static void -clear_so (so_list &so) +void +so_list::clear () { const target_so_ops *ops = gdbarch_so_ops (current_inferior ()->arch ()); - delete so.sections; - so.sections = NULL; + delete this->sections; + this->sections = NULL; - gdb_bfd_unref (so.abfd); - so.abfd = NULL; + gdb_bfd_unref (this->abfd); + this->abfd = NULL; /* Our caller closed the objfile, possibly via objfile_purge_solibs. */ - so.symbols_loaded = 0; - so.objfile = NULL; + this->symbols_loaded = 0; + this->objfile = NULL; - so.addr_low = so.addr_high = 0; + this->addr_low = this->addr_high = 0; /* Restore the target-supplied file name. SO_NAME may be the path of the symbol file. */ - strcpy (so.so_name, so.so_original_name); + strcpy (this->so_name, this->so_original_name); /* Do the same for target-specific data. */ if (ops->clear_so != NULL) - ops->clear_so (so); + ops->clear_so (*this); } lm_info::~lm_info () = default; @@ -674,7 +667,7 @@ lm_info::~lm_info () = default; void free_so (so_list &so) { - clear_so (so); + so.clear (); delete &so; } @@ -1358,7 +1351,7 @@ reload_shared_libraries_1 (int from_tty) && !solib_used (so)) so->objfile->unlink (); current_program_space->remove_target_sections (so); - clear_so (*so); + so->clear (); } /* If this shared library is now associated with a new symbol diff --git a/gdb/solist.h b/gdb/solist.h index 5f9090a07c72..75e8e8ad0182 100644 --- a/gdb/solist.h +++ b/gdb/solist.h @@ -38,6 +38,16 @@ using lm_info_up = std::unique_ptr; struct so_list { + /* Free symbol-file related contents of SO and reset for possible reloading + of SO. If we have opened a BFD for SO, close it. If we have placed SO's + sections in some target's section table, the caller is responsible for + removing them. + + This function doesn't mess with objfiles at all. If there is an + objfile associated with SO that needs to be removed, the caller is + responsible for taking care of that. */ + void clear () ; + /* The following fields of the structure come directly from the dynamic linker's tables in the inferior, and are initialized by current_sos. */ -- 2.42.0