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 tui to use CORE_ADDR


Hi!

The tui was using the type Opaque (char*) to hold addresses.
I've integrated the patch below to use CORE_ADDR.  It is better for
cross-debugging and also avoids a number of casts.

	Stephane

2001-07-18  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* tuiData.h (TuiLocatorElement): Use CORE_ADDR for address member.
	(TuiLineOrAddress): Likewise.
	* tuiDisassem.c (tuiGetBeginAsmAddress): Use CORE_ADDR to specify
	an address.
	(tuiSetDisassemContent): Likewise.
	(tuiShowDisassem, tuiShowDisassemAndUpdateSource): Likewise.
	* tuiLayout.c (_extractDisplayStartAddr): Likewise.
	(tuiSetLayout): Likewise.
	* tuiSourceWin.c (tuiDisplayMainFunction): Likewise.
	(tuiUpdateSourceWindowsWithAddr): Likewise.
	(tuiUpdateSourceWindowsWithLine): Likewise.
	(tuiSetHasBreakAt): Likewise.
	* tuiStack.c (tuiSetLocatorInfo): Likewise.
	(tuiSwitchFilename): Likewise.
	(tuiUpdateLocatorInfoFromFrame): Likewise.
	(tuiSetLocatorContent): Likewise.
	(tuiShowFrameInfo): Likewise.	
	* tuiDisassem.h: Update prototypes to use CORE_ADDR.
	* tuiSourceWin.h: Likewise.
	* tuiStack.h: Likewise.
Index: tuiData.h
===================================================================
RCS file: /cvs/src/src/gdb/tui/tuiData.h,v
retrieving revision 1.4
diff -u -p -r1.4 tuiData.h
--- tuiData.h	2001/07/16 22:05:02	1.4
+++ tuiData.h	2001/07/18 20:55:45
@@ -142,7 +142,7 @@ TuiRegisterDisplayType, *TuiRegisterDisp
 typedef union _TuiLineOrAddress
   {
     int lineNo;
-    Opaque addr;
+    CORE_ADDR addr;
   }
 TuiLineOrAddress, *TuiLineOrAddressPtr;
 
@@ -195,7 +195,7 @@ typedef struct _TuiLocatorElement
     char fileName[MAX_LOCATOR_ELEMENT_LEN];
     char procName[MAX_LOCATOR_ELEMENT_LEN];
     int lineNo;
-    Opaque addr;
+    CORE_ADDR addr;
   }
 TuiLocatorElement, *TuiLocatorElementPtr;
 
Index: tuiDisassem.c
===================================================================
RCS file: /cvs/src/src/gdb/tui/tuiDisassem.c,v
retrieving revision 1.5
diff -u -p -r1.5 tuiDisassem.c
--- tuiDisassem.c	2001/07/16 22:10:07	1.5
+++ tuiDisassem.c	2001/07/18 20:55:47
@@ -49,12 +49,12 @@ static struct breakpoint *_hasBreak (COR
    **        Function to set the disassembly window's content.
  */
 TuiStatus
-tuiSetDisassemContent (struct symtab *s, Opaque startAddr)
+tuiSetDisassemContent (struct symtab *s, CORE_ADDR startAddr)
 {
   TuiStatus ret = TUI_FAILURE;
   struct ui_file *gdb_dis_out;
 
-  if (startAddr != (Opaque) NULL)
+  if (startAddr != 0)
     {
       register int i, desc;
 
@@ -83,7 +83,7 @@ extern void strcat_address_numeric (CORE
 	  disassemWin->detail.sourceInfo.startLineOrAddr.addr = startAddr;
 
 	  /* Now construct each line */
-	  for (curLine = 0, pc = (CORE_ADDR) startAddr; (curLine < maxLines);)
+	  for (curLine = 0, pc = startAddr; (curLine < maxLines);)
 	    {
 	      TuiWinElementPtr element = (TuiWinElementPtr) disassemWin->generic.content[curLine];
 	      struct breakpoint *bp;
@@ -142,9 +142,9 @@ extern void strcat_address_numeric (CORE
    **        Function to display the disassembly window with disassembled code.
  */
 void
-tuiShowDisassem (Opaque startAddr)
+tuiShowDisassem (CORE_ADDR startAddr)
 {
-  struct symtab *s = find_pc_symtab ((CORE_ADDR) startAddr);
+  struct symtab *s = find_pc_symtab (startAddr);
   TuiWinInfoPtr winWithFocus = tuiWinWithFocus ();
 
   tuiAddWinToLayout (DISASSEM_WIN);
@@ -165,7 +165,7 @@ tuiShowDisassem (Opaque startAddr)
    **        Function to display the disassembly window.
  */
 void
-tuiShowDisassemAndUpdateSource (Opaque startAddr)
+tuiShowDisassemAndUpdateSource (CORE_ADDR startAddr)
 {
   struct symtab_and_line sal;
 
@@ -177,7 +177,7 @@ tuiShowDisassemAndUpdateSource (Opaque s
          ** Update what is in the source window if it is displayed too,
          ** note that it follows what is in the disassembly window and visa-versa
        */
-      sal = find_pc_line ((CORE_ADDR) startAddr, 0);
+      sal = find_pc_line (startAddr, 0);
       current_source_symtab = sal.symtab;
       tuiUpdateSourceWindow (srcWin, sal.symtab, (Opaque) sal.line, TRUE);
       tuiUpdateLocatorFilename (sal.symtab->filename);
@@ -211,24 +211,24 @@ tuiShowDisassemAsIs (Opaque addr)
 /*
    ** tuiGetBeginAsmAddress().
  */
-Opaque
+CORE_ADDR
 tuiGetBeginAsmAddress (void)
 {
   TuiGenWinInfoPtr locator;
   TuiLocatorElementPtr element;
-  Opaque addr;
+  CORE_ADDR addr;
 
   locator = locatorWinInfoPtr ();
   element = &((TuiWinElementPtr) locator->content[0])->whichElement.locator;
 
-  if (element->addr == (Opaque) 0)
+  if (element->addr == 0)
     {
       /*the target is not executing, because the pc is 0 */
 
-      addr = (Opaque) parse_and_eval_address ("main");
+      addr = parse_and_eval_address ("main");
 
-      if (addr == (Opaque) 0)
-	addr = (Opaque) parse_and_eval_address ("MAIN");
+      if (addr == 0)
+	addr = parse_and_eval_address ("MAIN");
 
     }
   else				/* the target is executing */
Index: tuiDisassem.h
===================================================================
RCS file: /cvs/src/src/gdb/tui/tuiDisassem.h,v
retrieving revision 1.3
diff -u -p -r1.3 tuiDisassem.h
--- tuiDisassem.h	2001/07/14 19:01:25	1.3
+++ tuiDisassem.h	2001/07/18 20:55:47
@@ -31,11 +31,11 @@
 /*****************************************
 ** PUBLIC FUNCTION EXTERNAL DECLS        **
 ******************************************/
-extern TuiStatus tuiSetDisassemContent (struct symtab *, Opaque);
-extern void tuiShowDisassem (Opaque);
+extern TuiStatus tuiSetDisassemContent (struct symtab *, CORE_ADDR);
+extern void tuiShowDisassem (CORE_ADDR);
 extern void tuiShowDisassemAndUpdateSource (Opaque);
 extern void tuiVerticalDisassemScroll (TuiScrollDirection, int);
-extern Opaque tuiGetBeginAsmAddress (void);
+extern CORE_ADDR tuiGetBeginAsmAddress (void);
 
 #endif
 /*_TUI_DISASSEM_H*/
Index: tuiLayout.c
===================================================================
RCS file: /cvs/src/src/gdb/tui/tuiLayout.c,v
retrieving revision 1.9
diff -u -p -r1.9 tuiLayout.c
--- tuiLayout.c	2001/07/17 22:22:40	1.9
+++ tuiLayout.c	2001/07/18 20:55:49
@@ -58,7 +58,7 @@ static void _tuiToggleLayout_command (ch
 static void _tui_vToggleLayout_command (va_list);
 static void _tuiToggleSplitLayout_command (char *, int);
 static void _tui_vToggleSplitLayout_command (va_list);
-static Opaque _extractDisplayStartAddr (void);
+static CORE_ADDR _extractDisplayStartAddr (void);
 static void _tuiHandleXDBLayout (TuiLayoutDefPtr);
 static TuiStatus _tuiSetLayoutTo (char *);
 
@@ -152,7 +152,7 @@ tuiSetLayout (TuiLayoutType layoutType,
     {
       TuiLayoutType curLayout = currentLayout (), newLayout = UNDEFINED_LAYOUT;
       int regsPopulate = FALSE;
-      Opaque addr = _extractDisplayStartAddr ();
+      CORE_ADDR addr = _extractDisplayStartAddr ();
       TuiWinInfoPtr newWinWithFocus = (TuiWinInfoPtr) NULL, winWithFocus = tuiWinWithFocus ();
       TuiLayoutDefPtr layoutDef = tuiLayoutDef ();
 
@@ -581,11 +581,11 @@ _tuiSetLayoutTo (char *layoutName)
 }				/* _tuiSetLayoutTo */
 
 
-static Opaque
+static CORE_ADDR
 _extractDisplayStartAddr (void)
 {
   TuiLayoutType curLayout = currentLayout ();
-  Opaque addr;
+  CORE_ADDR addr;
   CORE_ADDR pc;
 
   switch (curLayout)
@@ -595,7 +595,7 @@ _extractDisplayStartAddr (void)
       find_line_pc (current_source_symtab,
 		    srcWin->detail.sourceInfo.startLineOrAddr.lineNo,
 		    &pc);
-      addr =(Opaque) pc;
+      addr = pc;
       break;
     case DISASSEM_COMMAND:
     case SRC_DISASSEM_COMMAND:
@@ -603,7 +603,7 @@ _extractDisplayStartAddr (void)
       addr = disassemWin->detail.sourceInfo.startLineOrAddr.addr;
       break;
     default:
-      addr = (Opaque) NULL;
+      addr = 0;
       break;
     }
 
Index: tuiSourceWin.c
===================================================================
RCS file: /cvs/src/src/gdb/tui/tuiSourceWin.c,v
retrieving revision 1.4
diff -u -p -r1.4 tuiSourceWin.c
--- tuiSourceWin.c	2001/07/17 22:22:40	1.4
+++ tuiSourceWin.c	2001/07/18 20:55:51
@@ -28,6 +28,8 @@
 #include "tui.h"
 #include "tuiData.h"
 #include "tuiStack.h"
+#include "tuiWin.h"
+#include "tuiGeneralWin.h"
 #include "tuiSourceWin.h"
 #include "tuiSource.h"
 #include "tuiDisassem.h"
@@ -93,13 +95,13 @@ tuiDisplayMainFunction (void)
       CORE_ADDR addr;
 
       addr = parse_and_eval_address ("main");
-      if (addr <= (CORE_ADDR) 0)
+      if (addr == (CORE_ADDR) 0)
 	addr = parse_and_eval_address ("MAIN");
-      if (addr > (CORE_ADDR) 0)
+      if (addr != (CORE_ADDR) 0)
 	{
 	  struct symtab_and_line sal;
 
-	  tuiUpdateSourceWindowsWithAddr ((Opaque) addr);
+	  tuiUpdateSourceWindowsWithAddr (addr);
 	  sal = find_pc_line (addr, 0);
 	  tuiSwitchFilename (sal.symtab->filename);
 	}
@@ -178,9 +180,9 @@ tuiUpdateSourceWindowAsIs (TuiWinInfoPtr
    **        reflect the input address.
  */
 void
-tuiUpdateSourceWindowsWithAddr (Opaque addr)
+tuiUpdateSourceWindowsWithAddr (CORE_ADDR addr)
 {
-  if (addr > (Opaque) NULL)
+  if (addr != 0)
     {
       struct symtab_and_line sal;
 
@@ -194,10 +196,8 @@ tuiUpdateSourceWindowsWithAddr (Opaque a
 	  tuiShowDisassemAndUpdateSource (addr);
 	  break;
 	default:
-	  sal = find_pc_line ((CORE_ADDR) addr, 0);
-	  tuiShowSource (sal.symtab,
-			 (Opaque) sal.line,
-			 FALSE);
+	  sal = find_pc_line (addr, 0);
+	  tuiShowSource (sal.symtab, sal.line, FALSE);
 	  break;
 	}
     }
@@ -248,14 +248,14 @@ tuiUpdateSourceWindowsWithLine (struct s
     case DISASSEM_COMMAND:
     case DISASSEM_DATA_COMMAND:
       find_line_pc (s, line, &pc);
-      tuiUpdateSourceWindowsWithAddr ((Opaque) pc);
+      tuiUpdateSourceWindowsWithAddr (pc);
       break;
     default:
-      tuiShowSource (s, (Opaque) line, FALSE);
+      tuiShowSource (s, line, FALSE);
       if (currentLayout () == SRC_DISASSEM_COMMAND)
 	{
 	  find_line_pc (s, line, &pc);
-	  tuiShowDisassem ((Opaque) pc);
+	  tuiShowDisassem (pc);
 	}
       break;
     }
@@ -527,7 +527,7 @@ tuiSetHasBreakAt (struct breakpoint *bp,
 	}
       else
 	gotIt = (content[i]->whichElement.source.lineOrAddr.addr
-		 == (Opaque) bp->address);
+		 == bp->address);
       if (gotIt)
 	{
 	  content[i]->whichElement.source.hasBreak = hasBreak;
Index: tuiSourceWin.h
===================================================================
RCS file: /cvs/src/src/gdb/tui/tuiSourceWin.h,v
retrieving revision 1.4
diff -u -p -r1.4 tuiSourceWin.h
--- tuiSourceWin.h	2001/07/14 19:01:25	1.4
+++ tuiSourceWin.h	2001/07/18 20:55:51
@@ -27,7 +27,7 @@ extern void tuiUpdateSourceWindow (TuiWi
 				   int);
 extern void tuiUpdateSourceWindowAsIs (TuiWinInfoPtr, struct symtab *, Opaque,
 				       int);
-extern void tuiUpdateSourceWindowsWithAddr (Opaque);
+extern void tuiUpdateSourceWindowsWithAddr (CORE_ADDR);
 extern void tui_vUpdateSourceWindowsWithAddr (va_list);
 extern void tuiUpdateSourceWindowsWithLine (struct symtab *, int);
 extern void tui_vUpdateSourceWindowsWithLine (va_list);
Index: tuiStack.c
===================================================================
RCS file: /cvs/src/src/gdb/tui/tuiStack.c,v
retrieving revision 1.6
diff -u -p -r1.6 tuiStack.c
--- tuiStack.c	2001/07/16 22:13:38	1.6
+++ tuiStack.c	2001/07/18 20:55:51
@@ -113,7 +113,7 @@ tuiShowLocatorContent (void)
  */
 void
 tuiSetLocatorInfo (char *fname, char *procname, int lineNo,
-                   Opaque addr, TuiLocatorElementPtr element)
+                   CORE_ADDR addr, TuiLocatorElementPtr element)
 {
 #ifdef COMMENT
   /* first free the old info */
@@ -137,7 +137,7 @@ tuiSetLocatorInfo (char *fname, char *pr
   strcat_to_buf (element->procName, MAX_LOCATOR_ELEMENT_LEN, procname);
 #endif
   element->lineNo = lineNo;
-  element->addr = (Opaque) addr;
+  element->addr = addr;
 
   return;
 }				/* tuiSetLocatorInfo */
@@ -198,7 +198,7 @@ tuiSwitchFilename (char *fileName)
   tuiSetLocatorInfo (fileName,
 		     (char *) NULL,
 		     0,
-		     (Opaque) NULL,
+		     (CORE_ADDR) 0,
 	   &((TuiWinElementPtr) locator->content[0])->whichElement.locator);
 
   tuiShowLocatorContent ();
@@ -251,13 +251,13 @@ tuiUpdateLocatorInfoFromFrame (struct fr
     tuiSetLocatorInfo (symtabAndLine.symtab->filename,
 		       _getFuncNameFromFrame (frameInfo),
 		       symtabAndLine.line,
-		       (Opaque) frameInfo->pc,
+		       frameInfo->pc,
 		       element);
   else
     tuiSetLocatorInfo ((char *) NULL,
 		       _getFuncNameFromFrame (frameInfo),
 		       0,
-		       (Opaque) frameInfo->pc,
+		       frameInfo->pc,
 		       element);
 
   return;
@@ -292,7 +292,7 @@ tuiSetLocatorContent (struct frame_info 
     tuiSetLocatorInfo ((char *) NULL,
 		       (char *) NULL,
 		       0,
-		       (Opaque) NULL,
+		       (CORE_ADDR) 0,
 	   &((TuiWinElementPtr) locator->content[0])->whichElement.locator);
   return;
 }				/* tuiSetLocatorContent */
@@ -354,7 +354,7 @@ tuiShowFrameInfo (struct frame_info *fi)
 	      if (find_pc_partial_function (fi->pc, (char **) NULL, &low, (CORE_ADDR) NULL) == 0)
 		error ("No function contains program counter for selected frame.\n");
 	      else
-		low = (CORE_ADDR) tuiGetLowDisassemblyAddress ((Opaque) low, (Opaque) fi->pc);
+		low = tuiGetLowDisassemblyAddress (low, fi->pc);
 	    }
 
 	  if (winInfo == srcWin)
Index: tuiStack.h
===================================================================
RCS file: /cvs/src/src/gdb/tui/tuiStack.h,v
retrieving revision 1.3
diff -u -p -r1.3 tuiStack.h
--- tuiStack.h	2001/07/14 19:01:25	1.3
+++ tuiStack.h	2001/07/18 20:55:51
@@ -25,7 +25,7 @@
    ** This header file supports
  */
 
-extern void tuiSetLocatorInfo (char *, char *, int, Opaque,
+extern void tuiSetLocatorInfo (char *, char *, int, CORE_ADDR,
 			       TuiLocatorElementPtr);
 extern void tuiUpdateLocatorFilename (char *);
 extern void tui_vUpdateLocatorFilename (va_list);

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