Don't let property evaluation affect the current language
authorTom Tromey <tromey@adacore.com>
Thu, 15 Sep 2022 18:06:02 +0000 (12:06 -0600)
committerTom Tromey <tromey@adacore.com>
Tue, 3 Jan 2023 15:45:01 +0000 (08:45 -0700)
On PPC, we saw that calling an inferior function could sometimes
change the current language, because gdb would select the call dummy
frame -- associated with _start.

This patch changes gdb so that the current language is never affected
by DWARF property evaluation.

gdb/dwarf2/loc.c

index 0acc63805e7c2718df485d4bee77980e1a9e9e9a..fe91d609f194ffe4ce5805e12b7c7e2f901349ce 100644 (file)
@@ -1641,6 +1641,11 @@ dwarf2_evaluate_property (const struct dynamic_prop *prop,
   if (prop == NULL)
     return false;
 
+  /* Evaluating a property should not change the current language.
+     Without this here this could happen if the code below selects a
+     frame.  */
+  scoped_restore_current_language save_language;
+
   if (frame == NULL && has_stack_frames ())
     frame = get_selected_frame (NULL);