This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
[PATCH]: Fix tui to use CORE_ADDR
- To: gdb-patches at sources dot redhat dot com
- Subject: [PATCH]: Fix tui to use CORE_ADDR
- From: Stephane Carrez <Stephane dot Carrez at worldnet dot fr>
- Date: Wed, 18 Jul 2001 23:04:38 +0200
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);