* tuiStack.c (tuiSetLocatorContent): Remove.

(tuiUpdateLocatorInfoFromFrame): Remove.
	(tui_set_locator_info): Allocate the content buffer if necessary.
	(tui_set_locator_filename): Call tui_set_locator_info directly.
	(tuiShowFrameInfo): Likewise and use find_pc_line instead of
	find_pc_symtab.
This commit is contained in:
Stephane Carrez 2002-08-25 17:13:29 +00:00
parent bb4250135d
commit 7d6dd1e97d
2 changed files with 44 additions and 88 deletions

View File

@ -1,3 +1,12 @@
2002-08-25 Stephane Carrez <stcarrez@nerim.fr>
* tuiStack.c (tuiSetLocatorContent): Remove.
(tuiUpdateLocatorInfoFromFrame): Remove.
(tui_set_locator_info): Allocate the content buffer if necessary.
(tui_set_locator_filename): Call tui_set_locator_info directly.
(tuiShowFrameInfo): Likewise and use find_pc_line instead of
find_pc_symtab.
2002-08-25 Stephane Carrez <stcarrez@nerim.fr>
* tuiSourceWin.c (tuiDisplayMainFunction): Update to use

View File

@ -65,13 +65,10 @@ static void tui_set_locator_filename (const char *filename);
/* Update the locator, with the provided arguments. */
static void tui_set_locator_info (const char *filename, const char *procname,
int lineno, CORE_ADDR addr,
TuiLocatorElementPtr element);
int lineno, CORE_ADDR addr);
static void tui_update_command (char *, int);
/* Function to set the content of the locator. */
static void tuiSetLocatorContent (struct frame_info *frameInfo);
/* Get a printable name for the function at the address.
The symbol name is demangled if demangling is turned on.
@ -144,7 +141,10 @@ tui_set_locator_filename (const char *filename)
TuiLocatorElementPtr element;
if (locator->content[0] == (Opaque) NULL)
tuiSetLocatorContent ((struct frame_info *) NULL);
{
tui_set_locator_info (filename, NULL, 0, 0);
return;
}
element = &((TuiWinElementPtr) locator->content[0])->whichElement.locator;
element->fileName[0] = 0;
@ -154,8 +154,19 @@ tui_set_locator_filename (const char *filename)
/* Update the locator, with the provided arguments. */
static void
tui_set_locator_info (const char *filename, const char *procname, int lineno,
CORE_ADDR addr, TuiLocatorElementPtr element)
CORE_ADDR addr)
{
TuiGenWinInfoPtr locator = locatorWinInfoPtr ();
TuiLocatorElementPtr element;
/* Allocate the locator content if necessary. */
if (locator->contentSize <= 0)
{
locator->content = (OpaquePtr) allocContent (1, locator->type);
locator->contentSize = 1;
}
element = &((TuiWinElementPtr) locator->content[0])->whichElement.locator;
element->procName[0] = (char) 0;
strcat_to_buf (element->procName, MAX_LOCATOR_ELEMENT_LEN, procname);
element->lineNo = lineno;
@ -163,7 +174,6 @@ tui_set_locator_info (const char *filename, const char *procname, int lineno,
tui_set_locator_filename (filename);
}
/* Update only the filename portion of the locator. */
void
tuiUpdateLocatorFilename (const char *filename)
@ -172,72 +182,7 @@ tuiUpdateLocatorFilename (const char *filename)
tuiShowLocatorContent ();
}
/*
** tuiUpdateLocatorInfoFromFrame().
** Function to update the locator, with the information extracted from frameInfo
*/
static void
tuiUpdateLocatorInfoFromFrame (struct frame_info *frameInfo,
TuiLocatorElementPtr element)
{
struct symtab_and_line symtabAndLine;
/* now get the new info */
symtabAndLine = find_pc_line (frameInfo->pc,
(frameInfo->next != (struct frame_info *) NULL &&
!frameInfo->next->signal_handler_caller &&
!frame_in_dummy (frameInfo->next)));
if (symtabAndLine.symtab && symtabAndLine.symtab->filename)
tui_set_locator_info (symtabAndLine.symtab->filename,
tui_get_function_from_frame (frameInfo),
symtabAndLine.line,
frameInfo->pc,
element);
else
tui_set_locator_info ((char *) NULL,
tui_get_function_from_frame (frameInfo),
0,
frameInfo->pc,
element);
return;
} /* tuiUpdateLocatorInfoFromFrame */
/* Function to set the content of the locator. */
static void
tuiSetLocatorContent (struct frame_info *frameInfo)
{
TuiGenWinInfoPtr locator = locatorWinInfoPtr ();
TuiWinElementPtr element;
struct symtab_and_line symtabAndLine;
/* Allocate the element if necessary */
if (locator->contentSize <= 0)
{
TuiWinContent contentPtr;
if ((locator->content = (OpaquePtr) allocContent (1, locator->type)) == (OpaquePtr) NULL)
error ("Unable to Allocate Memory to Display Location.");
locator->contentSize = 1;
}
if (frameInfo != (struct frame_info *) NULL)
tuiUpdateLocatorInfoFromFrame (frameInfo,
&((TuiWinElementPtr) locator->content[0])->whichElement.locator);
else
tui_set_locator_info ((char *) NULL,
(char *) NULL,
0,
(CORE_ADDR) 0,
&((TuiWinElementPtr) locator->content[0])->whichElement.locator);
return;
} /* tuiSetLocatorContent */
/*
** tuiShowFrameInfo().
** Function to print the frame inforrmation for the TUI.
*/
/* Function to print the frame information for the TUI. */
void
tuiShowFrameInfo (struct frame_info *fi)
{
@ -247,20 +192,24 @@ tuiShowFrameInfo (struct frame_info *fi)
if (fi)
{
register int startLine, i;
register struct symtab *s;
CORE_ADDR low;
TuiGenWinInfoPtr locator = locatorWinInfoPtr ();
int sourceAlreadyDisplayed;
struct symtab_and_line sal;
sal = find_pc_line (fi->pc,
(fi->next != (struct frame_info *) NULL &&
!fi->next->signal_handler_caller &&
!frame_in_dummy (fi->next)));
s = find_pc_symtab (fi->pc);
if (s == 0)
return;
startLine = 0;
sourceAlreadyDisplayed = tuiSourceIsDisplayed (s->filename);
tuiSetLocatorContent (fi);
sourceAlreadyDisplayed = sal.symtab != 0
&& tuiSourceIsDisplayed (sal.symtab->filename);
tui_set_locator_info (sal.symtab == 0 ? "??" : sal.symtab->filename,
tui_get_function_from_frame (fi),
sal.line,
fi->pc);
tuiShowLocatorContent ();
startLine = 0;
for (i = 0; i < (sourceWindows ())->count; i++)
{
TuiWhichElement *item;
@ -288,7 +237,7 @@ tuiShowFrameInfo (struct frame_info *fi)
l.lineNo = startLine;
if (!(sourceAlreadyDisplayed
&& tuiLineIsDisplayed (item->locator.lineNo, winInfo, TRUE)))
tuiUpdateSourceWindow (winInfo, s, l, TRUE);
tuiUpdateSourceWindow (winInfo, sal.symtab, l, TRUE);
else
{
l.lineNo = item->locator.lineNo;
@ -302,7 +251,7 @@ tuiShowFrameInfo (struct frame_info *fi)
TuiLineOrAddress a;
a.addr = low;
if (!tuiAddrIsDisplayed (item->locator.addr, winInfo, TRUE))
tuiUpdateSourceWindow (winInfo, s, a, TRUE);
tuiUpdateSourceWindow (winInfo, sal.symtab, a, TRUE);
else
{
a.addr = item->locator.addr;
@ -315,7 +264,7 @@ tuiShowFrameInfo (struct frame_info *fi)
}
else
{
tuiSetLocatorContent (fi);
tui_set_locator_info (NULL, NULL, 0, (CORE_ADDR) 0);
tuiShowLocatorContent ();
for (i = 0; i < (sourceWindows ())->count; i++)
{
@ -324,9 +273,7 @@ tuiShowFrameInfo (struct frame_info *fi)
tuiUpdateExecInfo (winInfo);
}
}
return;
} /* tuiShowFrameInfo */
}
/* Function to initialize gdb commands, for tui window stack manipulation. */
void