aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/dwarf2/loc.c6
2 files changed, 9 insertions, 3 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 593ff01..e5b4019 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2020-05-28 Simon Marchi <simon.marchi@efficios.com>
+
+ * dwarf2/loc.c (class dwarf_evaluate_loc_desc)
+ <push_dwarf_reg_entry_value>: Remove assert. Override
+ per_objfile with caller_per_objfile.
+
2020-05-28 Tom de Vries <tdevries@suse.de>
* dwarf2/read.c (dw2_symtab_iter_next, dw2_expand_marked_cus): Limit
diff --git a/gdb/dwarf2/loc.c b/gdb/dwarf2/loc.c
index 7953361..1aab1a4 100644
--- a/gdb/dwarf2/loc.c
+++ b/gdb/dwarf2/loc.c
@@ -726,8 +726,6 @@ public:
data_src = deref_size == -1 ? parameter->value : parameter->data_value;
size = deref_size == -1 ? parameter->value_size : parameter->data_value_size;
- gdb_assert (this->per_objfile == caller_per_objfile);
-
/* DEREF_SIZE size is not verified here. */
if (data_src == NULL)
throw_error (NO_ENTRY_VALUE_ERROR,
@@ -739,11 +737,13 @@ public:
caller_per_cu);
scoped_restore save_obj_addr = make_scoped_restore (&this->obj_address,
(CORE_ADDR) 0);
+ scoped_restore save_per_objfile = make_scoped_restore (&this->per_objfile,
+ caller_per_objfile);
scoped_restore save_arch = make_scoped_restore (&this->gdbarch);
this->gdbarch = this->per_objfile->objfile->arch ();
scoped_restore save_addr_size = make_scoped_restore (&this->addr_size);
- this->addr_size = per_cu->addr_size ();
+ this->addr_size = this->per_cu->addr_size ();
this->eval (data_src, size);
}