diff options
author | Tom Tromey <tom@tromey.com> | 2024-01-27 08:56:53 -0700 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2024-03-08 17:25:49 -0700 |
commit | b183313dfa9bcb221f3276eccfda1d875431b6be (patch) | |
tree | 155a3ef0d3d18870fcb719bf3e2251203a2e1e21 | |
parent | 2509ae7fb0f899ccf19126d1df8a7c31d5fe6aec (diff) | |
download | binutils-b183313dfa9bcb221f3276eccfda1d875431b6be.zip binutils-b183313dfa9bcb221f3276eccfda1d875431b6be.tar.gz binutils-b183313dfa9bcb221f3276eccfda1d875431b6be.tar.bz2 |
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.
-rw-r--r-- | gdb/dwarf2/cooked-index.c | 7 | ||||
-rw-r--r-- | gdb/dwarf2/cooked-index.h | 3 | ||||
-rw-r--r-- | gdb/dwarf2/index-cache.c | 12 | ||||
-rw-r--r-- | 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 dc8b6f0..7d353c3 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 629a5b6..17659df 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 a269eb4..91f2af3 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 f66f72c..09577ac 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, |