From 989ade05525047fc6b94f24ece5fc09e076027b0 Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Thu, 28 May 2020 15:47:53 -0400 Subject: gdb: add comment in dwarf_evaluate_loc_desc::push_dwarf_reg_entry_value Add a comment to clarify why we temporarily override some of the context's fields, and especially the per_objfile field. A longer explanation can be found in this previous commit 44486dcf19b ("gdb: use caller objfile in dwarf_evaluate_loc_desc::push_dwarf_reg_entry_value") gdb/ChangeLog: * dwarf2/loc.c (class dwarf_evaluate_loc_desc) : Add comment. Change-Id: I60c6e1062799f729b30a9db78bcb6448783324b4 --- gdb/dwarf2/loc.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'gdb/dwarf2') diff --git a/gdb/dwarf2/loc.c b/gdb/dwarf2/loc.c index 1aab1a4..400bb4d 100644 --- a/gdb/dwarf2/loc.c +++ b/gdb/dwarf2/loc.c @@ -731,6 +731,12 @@ public: throw_error (NO_ENTRY_VALUE_ERROR, _("Cannot resolve DW_AT_call_data_value")); + /* We are about to evaluate an expression in the context of the caller + of the current frame. This evaluation context may be different from + the current (callee's) context), so temporarily set the caller's context. + + It is possible for the caller to be from a different objfile from the + callee if the call is made through a function pointer. */ scoped_restore save_frame = make_scoped_restore (&this->frame, caller_frame); scoped_restore save_per_cu = make_scoped_restore (&this->per_cu, -- cgit v1.1