public inbox for gdb-cvs@sourceware.org help / color / mirror / Atom feed
From: Tom Tromey <tromey@sourceware.org> To: gdb-cvs@sourceware.org Subject: [binutils-gdb] Capture the per-BFD object in index_cache_store_context Date: Sat, 9 Mar 2024 00:27:29 +0000 (GMT) [thread overview] Message-ID: <20240309002729.A1743385E009@sourceware.org> (raw) https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=b183313dfa9bcb221f3276eccfda1d875431b6be commit b183313dfa9bcb221f3276eccfda1d875431b6be Author: Tom Tromey <tom@tromey.com> Date: Sat Jan 27 08:56:53 2024 -0700 Capture the per-BFD object in index_cache_store_context This changes index_cache_store_context to also capture the per-BFD object when it is constructed. This is used when storing to the cache, and this approach makes the code a little simpler. Diff: --- gdb/dwarf2/cooked-index.c | 7 +++---- gdb/dwarf2/cooked-index.h | 3 +-- gdb/dwarf2/index-cache.c | 12 ++++++------ gdb/dwarf2/index-cache.h | 6 ++++-- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/gdb/dwarf2/cooked-index.c b/gdb/dwarf2/cooked-index.c index dc8b6f08ff4..7d353c3d25e 100644 --- a/gdb/dwarf2/cooked-index.c +++ b/gdb/dwarf2/cooked-index.c @@ -631,7 +631,7 @@ cooked_index::set_contents (vec_type &&vec) gdb::task_group finalizers ([this, ctx = std::move (ctx)] () { m_state->set (cooked_state::FINALIZED); - maybe_write_index (m_per_bfd, ctx); + maybe_write_index (ctx); }); for (auto &idx : m_vector) @@ -837,13 +837,12 @@ cooked_index::dump (gdbarch *arch) } void -cooked_index::maybe_write_index (dwarf2_per_bfd *per_bfd, - const index_cache_store_context &ctx) +cooked_index::maybe_write_index (const index_cache_store_context &ctx) { if (index_for_writing () != nullptr) { /* (maybe) store an index in the cache. */ - global_index_cache.store (m_per_bfd, ctx); + global_index_cache.store (ctx); } m_state->set (cooked_state::CACHE_DONE); } diff --git a/gdb/dwarf2/cooked-index.h b/gdb/dwarf2/cooked-index.h index 629a5b6b9ee..17659df0531 100644 --- a/gdb/dwarf2/cooked-index.h +++ b/gdb/dwarf2/cooked-index.h @@ -672,8 +672,7 @@ public: private: /* Maybe write the index to the index cache. */ - void maybe_write_index (dwarf2_per_bfd *per_bfd, - const index_cache_store_context &); + void maybe_write_index (const index_cache_store_context &); /* The vector of cooked_index objects. This is stored because the entries are stored on the obstacks in those objects. */ diff --git a/gdb/dwarf2/index-cache.c b/gdb/dwarf2/index-cache.c index a269eb46a36..91f2af3e275 100644 --- a/gdb/dwarf2/index-cache.c +++ b/gdb/dwarf2/index-cache.c @@ -91,7 +91,8 @@ index_cache::disable () index_cache_store_context::index_cache_store_context (const index_cache &ic, dwarf2_per_bfd *per_bfd) : m_enabled (ic.enabled ()), - m_dir (ic.m_dir) + m_dir (ic.m_dir), + m_per_bfd (per_bfd) { if (!m_enabled) return; @@ -154,8 +155,7 @@ index_cache_store_context::index_cache_store_context (const index_cache &ic, /* See dwarf-index-cache.h. */ void -index_cache::store (dwarf2_per_bfd *per_bfd, - const index_cache_store_context &ctx) +index_cache::store (const index_cache_store_context &ctx) { if (!ctx.m_enabled) return; @@ -167,18 +167,18 @@ index_cache::store (dwarf2_per_bfd *per_bfd, try { index_cache_debug ("writing index cache for objfile %s", - bfd_get_filename (per_bfd->obfd)); + bfd_get_filename (ctx.m_per_bfd->obfd)); /* Write the index itself to the directory, using the build id as the filename. */ - write_dwarf_index (per_bfd, ctx.m_dir.c_str (), + write_dwarf_index (ctx.m_per_bfd, ctx.m_dir.c_str (), ctx.m_build_id_str.c_str (), dwz_build_id_ptr, dw_index_kind::GDB_INDEX); } catch (const gdb_exception_error &except) { index_cache_debug ("couldn't store index cache for objfile %s: %s", - bfd_get_filename (per_bfd->obfd), except.what ()); + bfd_get_filename (ctx.m_per_bfd->obfd), except.what ()); } } diff --git a/gdb/dwarf2/index-cache.h b/gdb/dwarf2/index-cache.h index f66f72caea1..09577aca257 100644 --- a/gdb/dwarf2/index-cache.h +++ b/gdb/dwarf2/index-cache.h @@ -51,6 +51,9 @@ private: /* Captured value of index cache directory. */ std::string m_dir; + /* The per-bfd object that we're caching. */ + dwarf2_per_bfd *m_per_bfd; + /* Captured value of build id. */ std::string m_build_id_str; @@ -80,8 +83,7 @@ public: void disable (); /* Store an index for the specified object file in the cache. */ - void store (dwarf2_per_bfd *per_bfd, - const index_cache_store_context &); + void store (const index_cache_store_context &); /* Look for an index file matching BUILD_ID. If found, return the contents as an array_view and store the underlying resources (allocated memory,
reply other threads:[~2024-03-09 0:27 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20240309002729.A1743385E009@sourceware.org \ --to=tromey@sourceware.org \ --cc=gdb-cvs@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).