aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/dwarf2/cu.c5
-rw-r--r--gdb/dwarf2/read.c7
-rw-r--r--gdb/dwarf2/read.h9
3 files changed, 14 insertions, 7 deletions
diff --git a/gdb/dwarf2/cu.c b/gdb/dwarf2/cu.c
index d40dd09..37166c0 100644
--- a/gdb/dwarf2/cu.c
+++ b/gdb/dwarf2/cu.c
@@ -21,6 +21,7 @@
#include "dwarf2/cu.h"
#include "dwarf2/read.h"
#include "objfiles.h"
+#include "gdbsupport/thread-pool.h"
/* Initialize dwarf2_cu to read PER_CU, in the context of PER_OBJFILE. */
@@ -161,8 +162,8 @@ dwarf2_cu::get_builder ()
if (m_builder != nullptr)
return m_builder.get ();
- if (per_objfile->sym_cu != nullptr)
- return per_objfile->sym_cu->m_builder.get ();
+ if (per_objfile->sym_cu[gdb::thread_pool::id()] != nullptr)
+ return per_objfile->sym_cu[gdb::thread_pool::id()]->m_builder.get ();
gdb_assert_not_reached ("");
}
diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c
index 82fdf4c..895bb39 100644
--- a/gdb/dwarf2/read.c
+++ b/gdb/dwarf2/read.c
@@ -9603,9 +9603,9 @@ read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
cu->start_compunit_symtab (fnd.get_name (), fnd.intern_comp_dir (objfile),
lowpc);
- gdb_assert (per_objfile->sym_cu == nullptr);
+ gdb_assert (per_objfile->sym_cu[gdb::thread_pool::id()] == nullptr);
scoped_restore restore_sym_cu
- = make_scoped_restore (&per_objfile->sym_cu, cu);
+ = make_scoped_restore (&per_objfile->sym_cu[gdb::thread_pool::id()], cu);
/* Decode line number information if present. We do this before
processing child DIEs, so that the line header table is available
@@ -9627,7 +9627,8 @@ read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
child_die = child_die->sibling;
}
}
- per_objfile->sym_cu = nullptr;
+
+ per_objfile->sym_cu[gdb::thread_pool::id()] = nullptr;
/* Decode macro information, if present. Dwarf 2 macro information
refers to information in the line number info statement program
diff --git a/gdb/dwarf2/read.h b/gdb/dwarf2/read.h
index 3a3ff6c..d357e50 100644
--- a/gdb/dwarf2/read.h
+++ b/gdb/dwarf2/read.h
@@ -587,7 +587,12 @@ struct dwarf2_per_objfile
{
dwarf2_per_objfile (struct objfile *objfile, dwarf2_per_bfd *per_bfd)
: objfile (objfile), per_bfd (per_bfd)
- {}
+ {
+ for (int i = 0;
+ i < gdb::thread_pool::g_thread_pool->thread_count () + 1;
+ ++i)
+ sym_cu.push_back (nullptr);
+ }
~dwarf2_per_objfile ();
@@ -655,7 +660,7 @@ struct dwarf2_per_objfile
htab_up line_header_hash;
/* The CU containing the m_builder in scope. */
- dwarf2_cu *sym_cu = nullptr;
+ std::vector<dwarf2_cu *> sym_cu;
/* CUs that are queued to be read. */
gdb::optional<std::deque<dwarf2_queue_item>> queue;