]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
[gdb/tui] Show regs when switching to regs layout
authorTom de Vries <tdevries@suse.de>
Sat, 16 Dec 2023 08:31:29 +0000 (09:31 +0100)
committerTom de Vries <tdevries@suse.de>
Sat, 16 Dec 2023 08:31:29 +0000 (09:31 +0100)
When starting gdb in CLI mode, running to main and switching into the TUI regs
layout:
...
$ gdb -q a.out -ex start -ex "layout regs"
...
we get:
...
+---------------------------------+
|                                 |
| [ Register Values Unavailable ] |
|                                 |
+---------------------------------+
...

Fix this by handling this case in tui_data_window::rerender.

Tested on x86_64-linux.

Approved-By: Tom Tromey <tom@tromey.com>
PR tui/28600
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=28600

gdb/testsuite/gdb.tui/regs.exp
gdb/tui/tui-regs.c
gdb/tui/tui-regs.h

index 520f6ddba96ff87bdd4bb288477b28cdb81b3045..0be99625b9f1b061681b376ffc29f27729c1cf05 100644 (file)
@@ -41,10 +41,12 @@ Term::command "layout regs"
 Term::check_box "register box" 0 0 80 8
 Term::check_box "source box in regs layout" 0 7 80 8
 
-set text [Term::get_line 1]
-# Just check for any register window content at all.
-Term::check_contents "any register contents" "\\|.*\[^ \].*\\|"
-
+# The current frame is main, check that registers are available.
+set re_reg_vals_unavailable \
+    [string_to_regexp {[ Register Values Unavailable ]}]
+gdb_assert \
+    { ![Term::check_region_contents_p 0 0 80 8 $re_reg_vals_unavailable] } \
+    "Register values available"
 
 # Check that we can successfully cause the register window to appear
 # using the 'tui reg next' and 'tui reg prev' commands.
index ba801ddc050502e3dc4a2106a7e8e62f6cfeb9bb..4ed3a2ee88e0c6efd41d26c9f757ab2a9fe65037 100644 (file)
@@ -192,7 +192,7 @@ tui_data_window::show_registers (const reggroup *group)
       m_regs_content.clear ();
     }
 
-  rerender ();
+  rerender (false);
 }
 
 
@@ -415,10 +415,18 @@ tui_data_window::erase_data_content (const char *prompt)
 /* See tui-regs.h.  */
 
 void
-tui_data_window::rerender ()
+tui_data_window::rerender (bool toplevel)
 {
   if (m_regs_content.empty ())
-    erase_data_content (_("[ Register Values Unavailable ]"));
+    {
+      if (toplevel && has_stack_frames ())
+       {
+         frame_info_ptr fi = get_selected_frame (NULL);
+         check_register_values (fi);
+       }
+      else
+       erase_data_content (_("[ Register Values Unavailable ]"));
+    }
   else
     {
       erase_data_content (NULL);
index 5adff6300aa59f98dad453510016f01c1e5386d1..1abd22cd38281e2109078cb5d7b35bc2a71376c5 100644 (file)
@@ -75,7 +75,11 @@ protected:
   {
   }
 
-  void rerender () override;
+  void rerender (bool toplevel);
+  void rerender () override
+  {
+    rerender (true);
+  }
 
 private: