This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
[PATCH]: Fix bad calls to find_line_pc() in tui
- To: gdb-patches at sources dot redhat dot com
- Subject: [PATCH]: Fix bad calls to find_line_pc() in tui
- From: Stephane Carrez <Stephane dot Carrez at worldnet dot fr>
- Date: Wed, 18 Jul 2001 00:27:48 +0200
Hi!
I've committed the following patch that fixes problems in the tui:
- calls to find_line_pc() were wrong (the API has changed a little),
- there was a crash when setting an absolute breakpoint (no file name)
- I added some missing includes and fixed some compilation problems.
Stephane
2001-07-17 Stephane Carrez <Stephane.Carrez@worldnet.fr>
* tuiWin.c: Add missing includes.
(_makeVisibleWithNewHeight): Fix call to find_line_pc.
* tuiLayout.c: Add missing includes.
(_initAndMakeWin): Don't put curses in echo mode.
(_extractDisplayStartAddr): Fix calls to find_line_pc.
(_tuiLayout_command): Missing ',' in warning call.
* tuiSourceWin.c (tuiUpdateSourceWindowsWithLine): Fix calls to
find_line_pc.
(tuiSetHasBreakAt): Check for null source file.
Index: tuiWin.c
===================================================================
RCS file: /cvs/src/src/gdb/tui/tuiWin.c,v
retrieving revision 1.7
diff -u -p -r1.7 tuiWin.c
--- tuiWin.c 2001/07/17 21:37:18 1.7
+++ tuiWin.c 2001/07/17 22:21:09
@@ -25,6 +25,7 @@
Author: Susan B. Macchia */
#include <string.h>
+#include <ctype.h>
#include "defs.h"
#include "command.h"
#include "symtab.h"
@@ -35,6 +36,9 @@
#include "tuiData.h"
#include "tuiGeneralWin.h"
#include "tuiStack.h"
+#include "tuiRegs.h"
+#include "tuiDisassem.h"
+#include "tuiSource.h"
#include "tuiSourceWin.h"
#include "tuiDataWin.h"
@@ -1221,7 +1225,12 @@ _makeVisibleWithNewHeight (TuiWinInfoPtr
if (winInfo->generic.type == SRC_WIN)
line = (Opaque) current_source_line;
else
- line = (Opaque) find_line_pc (s, current_source_line);
+ {
+ CORE_ADDR pc;
+
+ find_line_pc (s, current_source_line, &pc);
+ line = (Opaque) pc;
+ }
tuiUpdateSourceWindow (winInfo, s, line, TRUE);
}
if (m_hasLocator (winInfo))
Index: tuiLayout.c
===================================================================
RCS file: /cvs/src/src/gdb/tui/tuiLayout.c,v
retrieving revision 1.8
diff -u -p -r1.8 tuiLayout.c
--- tuiLayout.c 2001/07/17 21:37:18 1.8
+++ tuiLayout.c 2001/07/17 22:21:19
@@ -23,12 +23,16 @@
#include "command.h"
#include "symtab.h"
#include "frame.h"
+#include <ctype.h>
#include "tui.h"
#include "tuiData.h"
+#include "tuiDataWin.h"
#include "tuiGeneralWin.h"
#include "tuiStack.h"
#include "tuiRegs.h"
+#include "tuiWin.h"
+#include "tuiSourceWin.h"
#include "tuiDisassem.h"
/*******************************
@@ -539,7 +543,7 @@ _tuiSetLayoutTo (char *layoutName)
dpyType = TUI_GENERAL_REGS;
else if (subset_compare (bufPtr, TUI_SPECIAL_REGS_NAME))
dpyType = TUI_SPECIAL_REGS;
- else
+ else if (dataWin)
{
if (dataWin->detail.dataDisplayInfo.regsDisplayType !=
TUI_UNDEFINED_REGS)
@@ -582,14 +586,16 @@ _extractDisplayStartAddr (void)
{
TuiLayoutType curLayout = currentLayout ();
Opaque addr;
+ CORE_ADDR pc;
switch (curLayout)
{
case SRC_COMMAND:
case SRC_DATA_COMMAND:
- addr = (Opaque) find_line_pc (
- current_source_symtab,
- srcWin->detail.sourceInfo.startLineOrAddr.lineNo);
+ find_line_pc (current_source_symtab,
+ srcWin->detail.sourceInfo.startLineOrAddr.lineNo,
+ &pc);
+ addr =(Opaque) pc;
break;
case DISASSEM_COMMAND:
case SRC_DISASSEM_COMMAND:
@@ -672,7 +678,7 @@ _tuiLayout_command (char *arg, int fromT
{
if ((TuiStatus) tuiDo (
(TuiOpaqueFuncPtr) tui_vSetLayoutTo, arg) != TUI_SUCCESS)
- warning ("Invalid layout specified.\n%s" LAYOUT_USAGE);
+ warning ("Invalid layout specified.\n%s", LAYOUT_USAGE);
return;
} /* _tuiLayout_command */
@@ -1061,7 +1067,6 @@ _initAndMakeWin (Opaque * winInfoPtr, Tu
makeWindow (generic, boxIt);
if (winType == LOCATOR_WIN)
tuiClearLocatorDisplay ();
- echo ();
}
*winInfoPtr = opaqueWinInfo;
Index: tuiSourceWin.c
===================================================================
RCS file: /cvs/src/src/gdb/tui/tuiSourceWin.c,v
retrieving revision 1.3
diff -u -p -r1.3 tuiSourceWin.c
--- tuiSourceWin.c 2001/07/14 19:31:09 1.3
+++ tuiSourceWin.c 2001/07/17 22:21:20
@@ -241,16 +241,22 @@ tui_vUpdateSourceWindowsWithAddr (va_lis
void
tuiUpdateSourceWindowsWithLine (struct symtab *s, int line)
{
+ CORE_ADDR pc;
+
switch (currentLayout ())
{
case DISASSEM_COMMAND:
case DISASSEM_DATA_COMMAND:
- tuiUpdateSourceWindowsWithAddr ((Opaque) find_line_pc (s, line));
+ find_line_pc (s, line, &pc);
+ tuiUpdateSourceWindowsWithAddr ((Opaque) pc);
break;
default:
tuiShowSource (s, (Opaque) line, FALSE);
if (currentLayout () == SRC_DISASSEM_COMMAND)
- tuiShowDisassem ((Opaque) find_line_pc (s, line));
+ {
+ find_line_pc (s, line, &pc);
+ tuiShowDisassem ((Opaque) pc);
+ }
break;
}
@@ -514,6 +520,7 @@ tuiSetHasBreakAt (struct breakpoint *bp,
fileNameDisplayed = current_source_symtab->filename;
gotIt = (fileNameDisplayed != (char *) NULL &&
+ bp->source_file != NULL &&
(strcmp (bp->source_file, fileNameDisplayed) == 0) &&
content[i]->whichElement.source.lineOrAddr.lineNo ==
bp->line_number);