* tuiWin.c (_parseScrollingArgs): Fix uninitialized variable.

(_makeVisibleWithNewHeight): Use TuiLineOrAddress type.

	* tuiStack.c (tuiShowFrameInfo): Use TuiLineOrAddress type.
	(tui_vUpdateLocatorFilename): Remove.
	* tuiStack.h: Update prototypes.

	* tuiSourceWin.c (tuiAddrIsDisplayed): New function.
	(tuiLineIsDisplayed): Split for address and line.
	(tuiUpdateSourceWindow): Use TuiLineOrAddress type.
	(tuiUpdateSourceWindowAsIs): Likewise.
	(tuiUpdateSourceWindowsWithAddr): Likewise.
	(tuiUpdateSourceWindowsWithLine): Likewise.
	(tuiHorizontalSourceScroll): Likewise.
	(tuiSetIsExecPointAt): Likewise.
	(tuiUpdateOnEnd): Likewise.
	* tuiSourceWin.h: Update prototypes.

	* tuiSource.c (tuiVerticalSourceScroll): Use TuiLineOrAddress type.
	(tuiShowSource): Likewise.
	(tuiVerticalSourceScroll): Likewise.
	* tuiSource.h (tuiShowSource): Update prototype.

	* tuiDisassem.c (tuiSetDisassemContent): Use CORE_ADDR for address.
	(tuiShowDisassem): Use TuiLineOrAddress type.
	(tuiShowDisassemAndUpdateSource): Likewise.
	(tuiVerticalDisassemScroll): Likewise.
	(tuiShowDisassemAsIs): Remove.
	* tuiDisassem.h (tuiSetDisassemContent): Update prototype.

	* tuiData.c (initWinInfo): Use CORE_ADDR for address.
	(clearWinDetail): Likewise.
	(displayableWinContentOf): Fix address conversion.
	(tuiNextWin): Fix crash when the window is not yet created.
	(partialWinByName): Likewise.
This commit is contained in:
Stephane Carrez 2001-07-20 23:06:48 +00:00
parent 19eb139b72
commit a4b99e5344
11 changed files with 171 additions and 152 deletions

View File

@ -1,3 +1,41 @@
2001-07-21 Stephane Carrez <Stephane.Carrez@worldnet.fr>
* tuiWin.c (_parseScrollingArgs): Fix uninitialized variable.
(_makeVisibleWithNewHeight): Use TuiLineOrAddress type.
* tuiStack.c (tuiShowFrameInfo): Use TuiLineOrAddress type.
(tui_vUpdateLocatorFilename): Remove.
* tuiStack.h: Update prototypes.
* tuiSourceWin.c (tuiAddrIsDisplayed): New function.
(tuiLineIsDisplayed): Split for address and line.
(tuiUpdateSourceWindow): Use TuiLineOrAddress type.
(tuiUpdateSourceWindowAsIs): Likewise.
(tuiUpdateSourceWindowsWithAddr): Likewise.
(tuiUpdateSourceWindowsWithLine): Likewise.
(tuiHorizontalSourceScroll): Likewise.
(tuiSetIsExecPointAt): Likewise.
(tuiUpdateOnEnd): Likewise.
* tuiSourceWin.h: Update prototypes.
* tuiSource.c (tuiVerticalSourceScroll): Use TuiLineOrAddress type.
(tuiShowSource): Likewise.
(tuiVerticalSourceScroll): Likewise.
* tuiSource.h (tuiShowSource): Update prototype.
* tuiDisassem.c (tuiSetDisassemContent): Use CORE_ADDR for address.
(tuiShowDisassem): Use TuiLineOrAddress type.
(tuiShowDisassemAndUpdateSource): Likewise.
(tuiVerticalDisassemScroll): Likewise.
(tuiShowDisassemAsIs): Remove.
* tuiDisassem.h (tuiSetDisassemContent): Update prototype.
* tuiData.c (initWinInfo): Use CORE_ADDR for address.
(clearWinDetail): Likewise.
(displayableWinContentOf): Fix address conversion.
(tuiNextWin): Fix crash when the window is not yet created.
(partialWinByName): Likewise.
2001-07-21 Stephane Carrez <Stephane.Carrez@worldnet.fr>
* tuiSourceWin.h: Remove unused declarations.

View File

@ -22,6 +22,7 @@
#include "defs.h"
#include "tui.h"
#include "tuiData.h"
#include "tuiGeneralWin.h"
/****************************
** GLOBAL DECLARATIONS
@ -236,7 +237,7 @@ clearWinDetail (TuiWinInfoPtr winInfo)
{
case SRC_WIN:
case DISASSEM_WIN:
winInfo->detail.sourceInfo.startLineOrAddr.addr = (Opaque) NULL;
winInfo->detail.sourceInfo.startLineOrAddr.addr = 0;
winInfo->detail.sourceInfo.horizontalOffset = 0;
break;
case CMD_WIN:
@ -484,7 +485,7 @@ tuiNextWin (TuiWinInfoPtr curWin)
type = curWin->generic.type + 1;
while (type != curWin->generic.type && m_winPtrIsNull (nextWin))
{
if (winList[type]->generic.isVisible)
if (winList[type] && winList[type]->generic.isVisible)
nextWin = winList[type];
else
{
@ -604,9 +605,9 @@ displayableWinContentOf (TuiGenWinInfoPtr winInfo, TuiWinElementPtr elementPtr)
else
strcpy (lineNo, "??");
if (elementPtr != (TuiWinElementPtr) NULL &&
elementPtr->whichElement.locator.addr > (Opaque) 0)
sprintf (pc, "0x%x",
elementPtr->whichElement.locator.addr);
elementPtr->whichElement.locator.addr != 0)
sprintf (pc, "0x%lx",
(long) elementPtr->whichElement.locator.addr);
else
strcpy (pc, "??");
/*
@ -728,10 +729,13 @@ partialWinByName (char *name)
while (i < MAX_MAJOR_WINDOWS && m_winPtrIsNull (winInfo))
{
char *curName = winName (&winList[i]->generic);
if (strlen (name) <= strlen (curName) &&
strncmp (name, curName, strlen (name)) == 0)
winInfo = winList[i];
if (winList[i] != 0)
{
char *curName = winName (&winList[i]->generic);
if (strlen (name) <= strlen (curName) &&
strncmp (name, curName, strlen (name)) == 0)
winInfo = winList[i];
}
i++;
}
}
@ -889,7 +893,7 @@ initWinInfo (TuiWinInfoPtr winInfo)
winInfo->detail.sourceInfo.executionInfo = (TuiGenWinInfoPtr) NULL;
winInfo->detail.sourceInfo.hasLocator = FALSE;
winInfo->detail.sourceInfo.horizontalOffset = 0;
winInfo->detail.sourceInfo.startLineOrAddr.addr = (Opaque) NULL;
winInfo->detail.sourceInfo.startLineOrAddr.addr = 0;
break;
case DATA_WIN:
winInfo->detail.dataDisplayInfo.dataContent = (TuiWinContent) NULL;

View File

@ -113,7 +113,7 @@ extern void strcat_address_numeric (CORE_ADDR, int, char *, int);
&(tui_file_get_strbuf (gdb_dis_out)[offset]));
else
element->whichElement.source.line[0] = '\0';
element->whichElement.source.lineOrAddr.addr = (Opaque) pc;
element->whichElement.source.lineOrAddr.addr = pc;
element->whichElement.source.isExecPoint =
(pc == (CORE_ADDR) ((TuiWinElementPtr) locator->content[0])->whichElement.locator.addr);
bp = _hasBreak (pc);
@ -146,9 +146,11 @@ tuiShowDisassem (CORE_ADDR startAddr)
{
struct symtab *s = find_pc_symtab (startAddr);
TuiWinInfoPtr winWithFocus = tuiWinWithFocus ();
TuiLineOrAddress val;
val.addr = startAddr;
tuiAddWinToLayout (DISASSEM_WIN);
tuiUpdateSourceWindow (disassemWin, s, startAddr, FALSE);
tuiUpdateSourceWindow (disassemWin, s, val, FALSE);
/*
** if the focus was in the src win, put it in the asm win, if the
** source view isn't split
@ -172,13 +174,15 @@ tuiShowDisassemAndUpdateSource (CORE_ADDR startAddr)
tuiShowDisassem (startAddr);
if (currentLayout () == SRC_DISASSEM_COMMAND)
{
TuiLineOrAddress val;
TuiGenWinInfoPtr locator = locatorWinInfoPtr ();
/*
** 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 (startAddr, 0);
tuiUpdateSourceWindow (srcWin, sal.symtab, sal.line, TRUE);
val.lineNo = sal.line;
tuiUpdateSourceWindow (srcWin, sal.symtab, val, TRUE);
if (sal.symtab)
{
current_source_symtab = sal.symtab;
@ -191,28 +195,6 @@ tuiShowDisassemAndUpdateSource (CORE_ADDR startAddr)
return;
} /* tuiShowDisassemAndUpdateSource */
/*
** tuiShowDisassemAsIs().
** Function to display the disassembly window. This function shows
** the disassembly as specified by the horizontal offset.
*/
void
tuiShowDisassemAsIs (Opaque addr)
{
tuiAddWinToLayout (DISASSEM_WIN);
tuiUpdateSourceWindowAsIs (disassemWin, (struct symtab *) NULL, addr, FALSE);
/*
** Update what is in the source window if it is displayed too, not that it
** follows what is in the disassembly window and visa-versa
*/
if (currentLayout () == SRC_DISASSEM_COMMAND)
tuiShowSourceContent (srcWin); /*???? Need to do more? */
return;
} /* tuiShowDisassem */
/*
** tuiGetBeginAsmAddress().
*/
@ -272,6 +254,7 @@ tuiVerticalDisassemScroll (TuiScrollDirection scrollDirection,
register int line = 0;
register CORE_ADDR newLow;
bfd_byte buffer[4];
TuiLineOrAddress val;
newLow = pc;
if (scrollDirection == FORWARD_SCROLL)
@ -281,10 +264,11 @@ tuiVerticalDisassemScroll (TuiScrollDirection scrollDirection,
}
else
{
for (; newLow >= (Opaque) 0 && line < numToScroll; line++)
for (; newLow != 0 && line < numToScroll; line++)
newLow -= sizeof (bfd_getb32 (buffer));
}
tuiUpdateSourceWindowAsIs (disassemWin, s, newLow, FALSE);
val.addr = newLow;
tuiUpdateSourceWindowAsIs (disassemWin, s, val, FALSE);
}
}

View File

@ -33,7 +33,7 @@
******************************************/
extern TuiStatus tuiSetDisassemContent (struct symtab *, CORE_ADDR);
extern void tuiShowDisassem (CORE_ADDR);
extern void tuiShowDisassemAndUpdateSource (Opaque);
extern void tuiShowDisassemAndUpdateSource (CORE_ADDR);
extern void tuiVerticalDisassemScroll (TuiScrollDirection, int);
extern CORE_ADDR tuiGetBeginAsmAddress (void);

View File

@ -25,6 +25,7 @@
#include "frame.h"
#include "breakpoint.h"
#include "source.h"
#include "symtab.h"
#include "tui.h"
#include "tuiData.h"
@ -332,10 +333,10 @@ tuiSetSourceContentNil (TuiWinInfoPtr winInfo, char *warning_string)
** initializes the horizontal scroll to 0.
*/
void
tuiShowSource (struct symtab *s, Opaque line, int noerror)
tuiShowSource (struct symtab *s, TuiLineOrAddress line, int noerror)
{
srcWin->detail.sourceInfo.horizontalOffset = 0;
m_tuiShowSourceAsIs (s, line, noerror);
tuiUpdateSourceWindowAsIs(srcWin, s, line, noerror);
return;
} /* tuiShowSource */
@ -359,12 +360,12 @@ tuiSourceIsDisplayed (char *fname)
** Scroll the source forward or backward vertically
*/
void
tuiVerticalSourceScroll (TuiScrollDirection scrollDirection, int numToScroll)
tuiVerticalSourceScroll (TuiScrollDirection scrollDirection,
int numToScroll)
{
if (srcWin->generic.content != (OpaquePtr) NULL)
{
int line;
Opaque addr;
TuiLineOrAddress l;
struct symtab *s;
TuiWinContent content = (TuiWinContent) srcWin->generic.content;
@ -375,21 +376,22 @@ tuiVerticalSourceScroll (TuiScrollDirection scrollDirection, int numToScroll)
if (scrollDirection == FORWARD_SCROLL)
{
line = content[0]->whichElement.source.lineOrAddr.lineNo +
l.lineNo = content[0]->whichElement.source.lineOrAddr.lineNo +
numToScroll;
if (line > s->nlines)
if (l.lineNo > s->nlines)
/*line = s->nlines - winInfo->generic.contentSize + 1; */
/*elz: fix for dts 23398 */
line = content[0]->whichElement.source.lineOrAddr.lineNo;
l.lineNo = content[0]->whichElement.source.lineOrAddr.lineNo;
}
else
{
line = content[0]->whichElement.source.lineOrAddr.lineNo -
l.lineNo = content[0]->whichElement.source.lineOrAddr.lineNo -
numToScroll;
if (line <= 0)
line = 1;
if (l.lineNo <= 0)
l.lineNo = 1;
}
tuiUpdateSourceWindowAsIs (srcWin, s, (Opaque) line, FALSE);
if (identify_source_line (s, l.lineNo, 0, -1) == 1)
tuiUpdateSourceWindowAsIs (srcWin, s, l, FALSE);
}
return;

View File

@ -23,13 +23,9 @@
#define _TUI_SOURCE_H
#include "defs.h"
#if 0
#include "symtab.h"
#include "breakpoint.h"
#endif
extern TuiStatus tuiSetSourceContent (struct symtab *, int, int);
extern void tuiShowSource (struct symtab *, Opaque, int);
extern void tuiShowSource (struct symtab *, TuiLineOrAddress, int);
extern void tuiShowSourceAsIs (struct symtab *, Opaque, int);
extern int tuiSourceIsDisplayed (char *);
extern void tuiVerticalSourceScroll (TuiScrollDirection, int);

View File

@ -119,7 +119,7 @@ tuiDisplayMainFunction (void)
*/
void
tuiUpdateSourceWindow (TuiWinInfoPtr winInfo, struct symtab *s,
Opaque lineOrAddr, int noerror)
TuiLineOrAddress lineOrAddr, int noerror)
{
winInfo->detail.sourceInfo.horizontalOffset = 0;
tuiUpdateSourceWindowAsIs (winInfo, s, lineOrAddr, noerror);
@ -135,14 +135,14 @@ tuiUpdateSourceWindow (TuiWinInfoPtr winInfo, struct symtab *s,
*/
void
tuiUpdateSourceWindowAsIs (TuiWinInfoPtr winInfo, struct symtab *s,
Opaque lineOrAddr, int noerror)
TuiLineOrAddress lineOrAddr, int noerror)
{
TuiStatus ret;
if (winInfo->generic.type == SRC_WIN)
ret = tuiSetSourceContent (s, (int) lineOrAddr, noerror);
ret = tuiSetSourceContent (s, lineOrAddr.lineNo, noerror);
else
ret = tuiSetDisassemContent (s, (Opaque) lineOrAddr);
ret = tuiSetDisassemContent (s, lineOrAddr.addr);
if (ret == TUI_FAILURE)
{
@ -156,7 +156,7 @@ tuiUpdateSourceWindowAsIs (TuiWinInfoPtr winInfo, struct symtab *s,
tuiUpdateExecInfo (winInfo);
if (winInfo->generic.type == SRC_WIN)
{
current_source_line = (int) lineOrAddr +
current_source_line = lineOrAddr.lineNo +
(winInfo->generic.contentSize - 2);
current_source_symtab = s;
/*
@ -185,7 +185,8 @@ tuiUpdateSourceWindowsWithAddr (CORE_ADDR addr)
if (addr != 0)
{
struct symtab_and_line sal;
TuiLineOrAddress l;
switch (currentLayout ())
{
case DISASSEM_COMMAND:
@ -197,7 +198,8 @@ tuiUpdateSourceWindowsWithAddr (CORE_ADDR addr)
break;
default:
sal = find_pc_line (addr, 0);
tuiShowSource (sal.symtab, sal.line, FALSE);
l.lineNo = sal.line;
tuiShowSource (sal.symtab, l, FALSE);
break;
}
}
@ -226,7 +228,8 @@ void
tuiUpdateSourceWindowsWithLine (struct symtab *s, int line)
{
CORE_ADDR pc;
TuiLineOrAddress l;
switch (currentLayout ())
{
case DISASSEM_COMMAND:
@ -235,7 +238,8 @@ tuiUpdateSourceWindowsWithLine (struct symtab *s, int line)
tuiUpdateSourceWindowsWithAddr (pc);
break;
default:
tuiShowSource (s, line, FALSE);
l.lineNo = line;
tuiShowSource (s, l, FALSE);
if (currentLayout () == SRC_DISASSEM_COMMAND)
{
find_line_pc (s, line, &pc);
@ -422,12 +426,9 @@ tuiHorizontalSourceScroll (TuiWinInfoPtr winInfo,
tuiUpdateSourceWindowAsIs (
winInfo,
s,
((winInfo == srcWin) ?
(Opaque) ((TuiWinElementPtr)
winInfo->generic.content[0])->whichElement.source.lineOrAddr.lineNo :
(Opaque) ((TuiWinElementPtr)
winInfo->generic.content[0])->whichElement.source.lineOrAddr.addr),
(int) FALSE);
((TuiWinElementPtr)
winInfo->generic.content[0])->whichElement.source.lineOrAddr,
FALSE);
}
return;
@ -439,7 +440,7 @@ tuiHorizontalSourceScroll (TuiWinInfoPtr winInfo,
** Set or clear the hasBreak flag in the line whose line is lineNo.
*/
void
tuiSetIsExecPointAt (Opaque lineOrAddr, TuiWinInfoPtr winInfo)
tuiSetIsExecPointAt (TuiLineOrAddress l, TuiWinInfoPtr winInfo)
{
int i;
TuiWinContent content = (TuiWinContent) winInfo->generic.content;
@ -447,7 +448,7 @@ tuiSetIsExecPointAt (Opaque lineOrAddr, TuiWinInfoPtr winInfo)
i = 0;
while (i < winInfo->generic.contentSize)
{
if (content[i]->whichElement.source.lineOrAddr.addr == lineOrAddr)
if (content[i]->whichElement.source.lineOrAddr.addr == l.addr)
content[i]->whichElement.source.isExecPoint = TRUE;
else
content[i]->whichElement.source.isExecPoint = FALSE;
@ -457,7 +458,6 @@ tuiSetIsExecPointAt (Opaque lineOrAddr, TuiWinInfoPtr winInfo)
return;
} /* tuiSetIsExecPointAt */
/*
** tuiSetHasBreakAt().
** Set or clear the hasBreak flag in the line whose line is lineNo.
@ -756,9 +756,13 @@ tuiUpdateOnEnd (void)
/* for all the windows (src, asm) */
for (i = 0; i < (sourceWindows ())->count; i++)
{
TuiLineOrAddress l;
winInfo = (TuiWinInfoPtr) (sourceWindows ())->list[i];
tuiSetIsExecPointAt ((Opaque) - 1, winInfo); /* the target is'n running */
l.addr = -1;
l.lineNo = -1;
tuiSetIsExecPointAt (l, winInfo); /* the target is'n running */
/* -1 should not match any line number or pc */
tuiSetExecInfoContent (winInfo); /*set winInfo so that > is'n displayed */
tuiShowExecInfoContent (winInfo); /* display the new contents */
@ -771,7 +775,7 @@ tuiUpdateOnEnd (void)
filename,
(char *) NULL,
0,
(Opaque) NULL,
(CORE_ADDR) 0,
&((TuiWinElementPtr) locator->content[0])->whichElement.locator);
tuiShowLocatorContent ();
@ -833,7 +837,7 @@ tuiAllocSourceBuffer (TuiWinInfoPtr winInfo)
** in the current source window.
*/
int
tuiLineIsDisplayed (Opaque lineNoOrAddr, TuiWinInfoPtr winInfo,
tuiLineIsDisplayed (int line, TuiWinInfoPtr winInfo,
int checkThreshold)
{
int isDisplayed = FALSE;
@ -846,14 +850,9 @@ tuiLineIsDisplayed (Opaque lineNoOrAddr, TuiWinInfoPtr winInfo,
i = 0;
while (i < winInfo->generic.contentSize - threshold && !isDisplayed)
{
if (winInfo == srcWin)
isDisplayed = (((TuiWinElementPtr)
winInfo->generic.content[i])->whichElement.source.lineOrAddr.lineNo
== (int) lineNoOrAddr);
else
isDisplayed = (((TuiWinElementPtr)
winInfo->generic.content[i])->whichElement.source.lineOrAddr.addr
== lineNoOrAddr);
isDisplayed = (((TuiWinElementPtr)
winInfo->generic.content[i])->whichElement.source.lineOrAddr.lineNo
== (int) line);
i++;
}
@ -861,6 +860,35 @@ tuiLineIsDisplayed (Opaque lineNoOrAddr, TuiWinInfoPtr winInfo,
} /* tuiLineIsDisplayed */
/*
** tuiLineIsDisplayed().
** Answer whether the a particular line number or address is displayed
** in the current source window.
*/
int
tuiAddrIsDisplayed (CORE_ADDR addr, TuiWinInfoPtr winInfo,
int checkThreshold)
{
int isDisplayed = FALSE;
int i, threshold;
if (checkThreshold)
threshold = SCROLL_THRESHOLD;
else
threshold = 0;
i = 0;
while (i < winInfo->generic.contentSize - threshold && !isDisplayed)
{
isDisplayed = (((TuiWinElementPtr)
winInfo->generic.content[i])->whichElement.source.lineOrAddr.addr
== addr);
i++;
}
return isDisplayed;
}
/*****************************************
** STATIC LOCAL FUNCTIONS **
******************************************/

View File

@ -23,9 +23,9 @@
#define _TUI_SOURCEWIN_H
extern void tuiDisplayMainFunction (void);
extern void tuiUpdateSourceWindow (TuiWinInfoPtr, struct symtab *, Opaque,
extern void tuiUpdateSourceWindow (TuiWinInfoPtr, struct symtab *, TuiLineOrAddress,
int);
extern void tuiUpdateSourceWindowAsIs (TuiWinInfoPtr, struct symtab *, Opaque,
extern void tuiUpdateSourceWindowAsIs (TuiWinInfoPtr, struct symtab *, TuiLineOrAddress,
int);
extern void tuiUpdateSourceWindowsWithAddr (CORE_ADDR);
extern void tuiUpdateSourceWindowsWithLine (struct symtab *, int);
@ -51,11 +51,12 @@ extern void tuiClearAllExecInfosContent (void);
extern void tuiUpdateExecInfo (TuiWinInfoPtr);
extern void tuiUpdateAllExecInfos (void);
extern void tuiSetIsExecPointAt (Opaque, TuiWinInfoPtr);
extern void tuiSetIsExecPointAt (TuiLineOrAddress, TuiWinInfoPtr);
extern void tuiSetHasBreakAt (struct breakpoint *, TuiWinInfoPtr, int);
extern void tuiAllSetHasBreakAt (struct breakpoint *, int);
extern TuiStatus tuiAllocSourceBuffer (TuiWinInfoPtr);
extern int tuiLineIsDisplayed (Opaque, TuiWinInfoPtr, int);
extern int tuiLineIsDisplayed (int, TuiWinInfoPtr, int);
extern int tuiAddrIsDisplayed (CORE_ADDR, TuiWinInfoPtr, int);
/*

View File

@ -164,23 +164,6 @@ tuiUpdateLocatorFilename (char *fileName)
return;
} /* tuiUpdateLocatorFilename */
/*
** tui_vUpdateLocatorFilename().
** Update only the filename portion of the locator with args in a va_list.
*/
void
tui_vUpdateLocatorFilename (va_list args)
{
char *fileName;
fileName = va_arg (args, char *);
tuiUpdateLocatorFilename (fileName);
return;
} /* tui_vUpdateLocatorFilename */
/*
** tuiSwitchFilename().
** Update the filename portion of the locator. Clear the other info in locator.
@ -336,16 +319,19 @@ tuiShowFrameInfo (struct frame_info *fi)
if (s == 0)
return;
startLine = 0;
sourceAlreadyDisplayed = tuiSourceIsDisplayed (s->filename);
tuiUpdateLocatorDisplay (fi);
for (i = 0; i < (sourceWindows ())->count; i++)
{
TuiWhichElement *item;
winInfo = (TuiWinInfoPtr) (sourceWindows ())->list[i];
item = &((TuiWinElementPtr) locator->content[0])->whichElement;
if (winInfo == srcWin)
{
startLine =
(((TuiWinElementPtr) locator->content[0])->whichElement.locator.lineNo -
(winInfo->generic.viewportHeight / 2)) + 1;
startLine = (item->locator.lineNo -
(winInfo->generic.viewportHeight / 2)) + 1;
if (startLine <= 0)
startLine = 1;
}
@ -359,26 +345,30 @@ tuiShowFrameInfo (struct frame_info *fi)
if (winInfo == srcWin)
{
if (!(sourceAlreadyDisplayed && m_tuiLineDisplayedWithinThreshold (
winInfo,
((TuiWinElementPtr) locator->content[0])->whichElement.locator.lineNo)))
tuiUpdateSourceWindow (winInfo, s, (Opaque) startLine, TRUE);
TuiLineOrAddress l;
l.lineNo = startLine;
if (!(sourceAlreadyDisplayed
&& tuiLineIsDisplayed (item->locator.lineNo, winInfo, TRUE)))
tuiUpdateSourceWindow (winInfo, s, l, TRUE);
else
tuiSetIsExecPointAt ((Opaque)
((TuiWinElementPtr) locator->content[0])->whichElement.locator.lineNo,
winInfo);
{
l.lineNo = item->locator.lineNo;
tuiSetIsExecPointAt (l, winInfo);
}
}
else
{
if (winInfo == disassemWin)
{
if (!m_tuiLineDisplayedWithinThreshold (winInfo,
((TuiWinElementPtr) locator->content[0])->whichElement.locator.addr))
tuiUpdateSourceWindow (winInfo, s, (Opaque) low, TRUE);
TuiLineOrAddress a;
a.addr = low;
if (!tuiAddrIsDisplayed (item->locator.addr, winInfo, TRUE))
tuiUpdateSourceWindow (winInfo, s, a, TRUE);
else
tuiSetIsExecPointAt ((Opaque)
((TuiWinElementPtr) locator->content[0])->whichElement.locator.addr,
winInfo);
{
a.addr = item->locator.addr;
tuiSetIsExecPointAt (a, winInfo);
}
}
}
tuiUpdateExecInfo (winInfo);
@ -398,23 +388,6 @@ tuiShowFrameInfo (struct frame_info *fi)
return;
} /* tuiShowFrameInfo */
/*
** tui_vShowFrameInfo().
** Function to print the frame inforrmation for the TUI with args in a va_list.
*/
void
tui_vShowFrameInfo (va_list args)
{
struct frame_info *fi;
fi = va_arg (args, struct frame_info *);
tuiShowFrameInfo (fi);
return;
} /* tui_vShowFrameInfo */
/*
** _initialize_tuiStack().
** Function to initialize gdb commands, for tui window stack manipulation.

View File

@ -28,7 +28,6 @@
extern void tuiSetLocatorInfo (char *, char *, int, CORE_ADDR,
TuiLocatorElementPtr);
extern void tuiUpdateLocatorFilename (char *);
extern void tui_vUpdateLocatorFilename (va_list);
extern void tuiUpdateLocatorInfoFromFrame
(struct frame_info *, TuiLocatorElementPtr);
extern void tuiUpdateLocatorDisplay (struct frame_info *);
@ -37,7 +36,6 @@ extern void tuiShowLocatorContent (void);
extern void tuiClearLocatorContent (void);
extern void tuiSwitchFilename (char *);
extern void tuiShowFrameInfo (struct frame_info *);
extern void tui_vShowFrameInfo (va_list);
extern void tuiGetLocatorFilename (TuiGenWinInfoPtr, char **);

View File

@ -1139,26 +1139,19 @@ _makeVisibleWithNewHeight (TuiWinInfoPtr winInfo)
winInfo->detail.sourceInfo.startLineOrAddr.addr;
freeWinContent (&winInfo->generic);
tuiUpdateSourceWindow (winInfo,
current_source_symtab,
((winInfo->generic.type == SRC_WIN) ?
(Opaque) lineOrAddr.lineNo :
lineOrAddr.addr),
TRUE);
current_source_symtab, lineOrAddr, TRUE);
}
else if (selected_frame != (struct frame_info *) NULL)
{
Opaque line = 0;
TuiLineOrAddress line;
extern int current_source_line;
s = find_pc_symtab (selected_frame->pc);
if (winInfo->generic.type == SRC_WIN)
line = (Opaque) current_source_line;
line.lineNo = current_source_line;
else
{
CORE_ADDR pc;
find_line_pc (s, current_source_line, &pc);
line = (Opaque) pc;
find_line_pc (s, current_source_line, &line.addr);
}
tuiUpdateSourceWindow (winInfo, s, line, TRUE);
}
@ -1349,7 +1342,9 @@ _parseScrollingArgs (char *arg, TuiWinInfoPtr * winToScroll, int *numToScroll)
if (*bufPtr != (char) 0)
wname = bufPtr;
else
wname = "?";
/* Validate the window name */
for (i = 0; i < strlen (wname); i++)
wname[i] = toupper (wname[i]);