From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stephane Carrez To: gdb-patches@sources.redhat.com Subject: [PATCH]: Always define tui commands Date: Thu, 19 Jul 2001 15:48:00 -0000 Message-id: <3B5764CB.7931747A@worldnet.fr> X-SW-Source: 2001-07/msg00496.html Hi! The tui commands were defined only when the -tui option was specified. Since we are able to switch to/from tui, it is annoying because when gdb is started without -tui, we can switch later to TUI but the commands are not defined. I've committed this patch to always define the tui specific commands and to define a help class for tui. Stephane 2001-07-20 Stephane Carrez * tuiWin.c (_initialize_tuiWin): Always define the tui commands; create the tui class help. * tuiLayout.c (_initialize_tuiLayout): Always define the tui commands. * tuiRegs.c (_initialize_tuiRegs): Likewise. * tuiStack.c (_initialize_tuiStack): Likewise. Index: tuiWin.c =================================================================== RCS file: /cvs/src/src/gdb/tui/tuiWin.c,v retrieving revision 1.9 diff -u -p -r1.9 tuiWin.c --- tuiWin.c 2001/07/18 22:03:22 1.9 +++ tuiWin.c 2001/07/19 22:45:46 @@ -31,6 +31,7 @@ #include "symtab.h" #include "breakpoint.h" #include "frame.h" +#include "cli/cli-cmds.h" #include "tui.h" #include "tuiData.h" @@ -85,51 +86,53 @@ static void _parseScrollingArgs (char *, void _initialize_tuiWin (void) { - if (tui_version) - { - add_com ("refresh", class_tui, _tuiRefreshAll_command, - "Refresh the terminal display.\n"); - if (xdb_commands) - add_com_alias ("U", "refresh", class_tui, 0); - add_com ("tabset", class_tui, _tuiSetTabWidth_command, - "Set the width (in characters) of tab stops.\n\ + /* Define the classes of commands. + They will appear in the help list in the reverse of this order. */ + + add_cmd ("tui", class_tui, NO_FUNCTION, + "Text User Interface commands.", + &cmdlist); + + add_com ("refresh", class_tui, _tuiRefreshAll_command, + "Refresh the terminal display.\n"); + if (xdb_commands) + add_com_alias ("U", "refresh", class_tui, 0); + add_com ("tabset", class_tui, _tuiSetTabWidth_command, + "Set the width (in characters) of tab stops.\n\ Usage: tabset \n"); - add_com ("winheight", class_tui, _tuiSetWinHeight_command, - "Set the height of a specified window.\n\ + add_com ("winheight", class_tui, _tuiSetWinHeight_command, + "Set the height of a specified window.\n\ Usage: winheight [+ | -] <#lines>\n\ Window names are:\n\ src : the source window\n\ cmd : the command window\n\ asm : the disassembly window\n\ regs : the register display\n"); - add_com_alias ("wh", "winheight", class_tui, 0); - add_info ("win", _tuiAllWindowsInfo, - "List of all displayed windows.\n"); - add_com ("focus", class_tui, _tuiSetFocus_command, - "Set focus to named window or next/prev window.\n\ + add_com_alias ("wh", "winheight", class_tui, 0); + add_info ("win", _tuiAllWindowsInfo, + "List of all displayed windows.\n"); + add_com ("focus", class_tui, _tuiSetFocus_command, + "Set focus to named window or next/prev window.\n\ Usage: focus { | next | prev}\n\ Valid Window names are:\n\ src : the source window\n\ asm : the disassembly window\n\ regs : the register display\n\ cmd : the command window\n"); - add_com_alias ("fs", "focus", class_tui, 0); - add_com ("+", class_tui, _tuiScrollForward_command, - "Scroll window forward.\nUsage: + [win] [n]\n"); - add_com ("-", class_tui, _tuiScrollBackward_command, - "Scroll window backward.\nUsage: - [win] [n]\n"); - add_com ("<", class_tui, _tuiScrollLeft_command, - "Scroll window forward.\nUsage: < [win] [n]\n"); - add_com (">", class_tui, _tuiScrollRight_command, - "Scroll window backward.\nUsage: > [win] [n]\n"); - if (xdb_commands) - add_com ("w", class_xdb, _tuiXDBsetWinHeight_command, - "XDB compatibility command for setting the height of a command window.\n\ + add_com_alias ("fs", "focus", class_tui, 0); + add_com ("+", class_tui, _tuiScrollForward_command, + "Scroll window forward.\nUsage: + [win] [n]\n"); + add_com ("-", class_tui, _tuiScrollBackward_command, + "Scroll window backward.\nUsage: - [win] [n]\n"); + add_com ("<", class_tui, _tuiScrollLeft_command, + "Scroll window forward.\nUsage: < [win] [n]\n"); + add_com (">", class_tui, _tuiScrollRight_command, + "Scroll window backward.\nUsage: > [win] [n]\n"); + if (xdb_commands) + add_com ("w", class_xdb, _tuiXDBsetWinHeight_command, + "XDB compatibility command for setting the height of a command window.\n\ Usage: w <#lines>\n"); - } - - return; -} /* _intialize_tuiWin */ +} /* Index: tuiLayout.c =================================================================== RCS file: /cvs/src/src/gdb/tui/tuiLayout.c,v retrieving revision 1.11 diff -u -p -r1.11 tuiLayout.c --- tuiLayout.c 2001/07/18 22:03:22 1.11 +++ tuiLayout.c 2001/07/19 22:45:48 @@ -435,10 +435,8 @@ tuiDefaultWinViewportHeight (TuiWinType void _initialize_tuiLayout (void) { - if (tui_version) - { - add_com ("layout", class_tui, _tuiLayout_command, - "Change the layout of windows.\n\ + add_com ("layout", class_tui, _tuiLayout_command, + "Change the layout of windows.\n\ Usage: layout prev | next | \n\ Layout names are:\n\ src : Displays source and command windows.\n\ @@ -450,18 +448,15 @@ Layout names are:\n\ source/assembly/command (split) is displayed, \n\ the register window is displayed with \n\ the window that has current logical focus.\n"); - if (xdb_commands) - { - add_com ("td", class_tui, _tuiToggleLayout_command, - "Toggle between Source/Command and Disassembly/Command layouts.\n"); - add_com ("ts", class_tui, _tuiToggleSplitLayout_command, - "Toggle between Source/Command or Disassembly/Command and \n\ + if (xdb_commands) + { + add_com ("td", class_tui, _tuiToggleLayout_command, + "Toggle between Source/Command and Disassembly/Command layouts.\n"); + add_com ("ts", class_tui, _tuiToggleSplitLayout_command, + "Toggle between Source/Command or Disassembly/Command and \n\ Source/Disassembly/Command layouts.\n"); - } } - - return; -} /* _intialize_tuiLayout */ +} /************************* Index: tuiRegs.c =================================================================== RCS file: /cvs/src/src/gdb/tui/tuiRegs.c,v retrieving revision 1.8 diff -u -p -r1.8 tuiRegs.c --- tuiRegs.c 2001/07/18 22:03:22 1.8 +++ tuiRegs.c 2001/07/19 22:45:50 @@ -540,7 +540,7 @@ tuiToggleFloatRegs (void) void _initialize_tuiRegs (void) { - if (tui_version && xdb_commands) + if (xdb_commands) { add_com ("fr", class_tui, _tuiShowFloat_command, "Display only floating point registers\n"); @@ -561,9 +561,7 @@ _initialize_tuiRegs (void) registers.\n", &togglelist); } - - return; -} /* _initialize_tuiRegs */ +} /***************************************** Index: tuiStack.c =================================================================== RCS file: /cvs/src/src/gdb/tui/tuiStack.c,v retrieving revision 1.7 diff -u -p -r1.7 tuiStack.c --- tuiStack.c 2001/07/18 20:59:00 1.7 +++ tuiStack.c 2001/07/19 22:45:51 @@ -422,14 +422,9 @@ tui_vShowFrameInfo (va_list args) void _initialize_tuiStack (void) { - if (tui_version) - { - add_com ("update", class_tui, _tuiUpdateLocation_command, - "Update the source window and locator to display the current execution point.\n"); - } - - return; -} /* _initialize_tuiStack */ + add_com ("update", class_tui, _tuiUpdateLocation_command, + "Update the source window and locator to display the current execution point.\n"); +} /***************************************** >From Stephane.Carrez@worldnet.fr Thu Jul 19 15:50:00 2001 From: Stephane Carrez To: gdb-patches@sources.redhat.com Subject: [RFA]: New function terminal_save_ours() Date: Thu, 19 Jul 2001 15:50:00 -0000 Message-id: <3B576530.13178D50@worldnet.fr> X-SW-Source: 2001-07/msg00497.html Content-length: 2249 Hi! When using gdb-tui and switching to or leaving the TUI mode, the terminal settings are changed. This is part of the curses management (endwin). Gdb keeps in a static variable in inflow.c for the tty setting of himself. It switches it with the inferior terminal (terminal_inferior, terminal_ours). The gdb terminal settings are fetched only once, the first time it is used/checked (so we don't know when). For the TUI to work correctly, it needs to update the gdb knowledge of its terminal. The patch below proposes a new function `terminal_save_ours' which is called by TUI each time the TUI changes from mode; that is after we enter in TUI mode (curses), and after we left the TUI mode. Can you approve this patch ? Stephane 2001-07-20 Stephane Carrez * inferior.h (terminal_save_ours): Declare. * inflow.c (terminal_save_ours): New function. Index: inflow.c =================================================================== RCS file: /cvs/src/src/gdb/inflow.c,v retrieving revision 1.11 diff -u -p -r1.11 inflow.c --- inflow.c 2001/07/15 20:34:13 1.11 +++ inflow.c 2001/07/19 22:48:49 @@ -200,6 +200,23 @@ terminal_init_inferior_with_pgrp (int pg } } +/* Save the terminal settings again. This is necessary for the TUI + when it switches to TUI or non-TUI mode; curses changes the terminal + and gdb must be able to restore it correctly. */ + +void +terminal_save_ours () +{ + if (gdb_has_a_terminal ()) + { + /* We could just as well copy our_ttystate (if we felt like adding + a new function serial_copy_tty_state). */ + if (our_ttystate) + xfree (our_ttystate); + our_ttystate = serial_get_tty_state (stdin_serial); + } +} + void terminal_init_inferior (void) { Index: inferior.h =================================================================== RCS file: /cvs/src/src/gdb/inferior.h,v retrieving revision 1.23 diff -u -p -r1.23 inferior.h --- inferior.h 2001/05/15 00:03:36 1.23 +++ inferior.h 2001/07/19 22:48:51 @@ -151,6 +151,8 @@ extern void generic_mourn_inferior (void extern void terminal_ours (void); +extern void terminal_save_ours (void); + extern int run_stack_dummy (CORE_ADDR, char *); extern CORE_ADDR read_pc (void); >From dmj+@andrew.cmu.edu Thu Jul 19 16:09:00 2001 From: Daniel Jacobowitz To: Elena Zannoni Cc: gdb-patches@sources.redhat.com Subject: Re: [RFC] GDB's mdebug support vs. GCC 3.0 Date: Thu, 19 Jul 2001 16:09:00 -0000 Message-id: <20010719160858.A30318@nevyn.them.org> References: <20010629123944.A3423@nevyn.them.org> <15191.24417.472551.89834@krustylu.cygnus.com> X-SW-Source: 2001-07/msg00498.html Content-length: 1485 On Thu, Jul 19, 2001 at 06:29:53PM -0400, Elena Zannoni wrote: > > Wow, what a messy control flow. Makes me dizzy. I am starting to > understand this patch a bit. Just a few questions. Do you go through > mipsread.c at all? If so, does mipscoff_new_init get called? If so, > can you try to add the call to init_header_files in there instead? The problem is that I don't go through mipsread at all. What we have here is mdebug-in-ELF; elfmdebug_read_psymtab is where we enter mdebug from. > Next problem: > > Can you explain a bit more what happens there? I see that your new > code in the if branch does the same things that process_one_symbol would do. > . Change valu by the offset > . call end_symtab > . call end_stabs > > Are you saying that the symtab would be ended twice in that case? Once > in process_one_symbol and once in psymtab_to_symtab_1? > I think this the problem right? > I am going to think some more. That bit I'm not thrilled with. You're right; we used to not get the final N_SO at all, and so process_one_symbol would not call end_symtab, and we'd be safe when we called it ourselves after the loop. But GCC 3.0 does emit these N_SO's. We need to prevent process_one_symbol (whose logic I'm not convinced we should be reusing on this path at all, it's heinous!) from ending the symtab prematurely. -- Daniel Jacobowitz Carnegie Mellon University MontaVista Software Debian GNU/Linux Developer