This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

[PATCH]: Fix bad calls to find_line_pc() in tui


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);

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]