diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 593ff01cc9..e5b4019dd6 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2020-05-28 Simon Marchi + + * dwarf2/loc.c (class dwarf_evaluate_loc_desc) + : Remove assert. Override + per_objfile with caller_per_objfile. + 2020-05-28 Tom de Vries * 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 7953361ade..1aab1a4f51 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); }