mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-20 18:08:24 +08:00
* 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:
@ -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>
|
2002-08-25 Stephane Carrez <stcarrez@nerim.fr>
|
||||||
|
|
||||||
* tuiSourceWin.c (tuiDisplayMainFunction): Update to use
|
* tuiSourceWin.c (tuiDisplayMainFunction): Update to use
|
||||||
|
@ -65,13 +65,10 @@ static void tui_set_locator_filename (const char *filename);
|
|||||||
|
|
||||||
/* Update the locator, with the provided arguments. */
|
/* Update the locator, with the provided arguments. */
|
||||||
static void tui_set_locator_info (const char *filename, const char *procname,
|
static void tui_set_locator_info (const char *filename, const char *procname,
|
||||||
int lineno, CORE_ADDR addr,
|
int lineno, CORE_ADDR addr);
|
||||||
TuiLocatorElementPtr element);
|
|
||||||
|
|
||||||
static void tui_update_command (char *, int);
|
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.
|
/* Get a printable name for the function at the address.
|
||||||
The symbol name is demangled if demangling is turned on.
|
The symbol name is demangled if demangling is turned on.
|
||||||
@ -144,7 +141,10 @@ tui_set_locator_filename (const char *filename)
|
|||||||
TuiLocatorElementPtr element;
|
TuiLocatorElementPtr element;
|
||||||
|
|
||||||
if (locator->content[0] == (Opaque) NULL)
|
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 = &((TuiWinElementPtr) locator->content[0])->whichElement.locator;
|
||||||
element->fileName[0] = 0;
|
element->fileName[0] = 0;
|
||||||
@ -154,8 +154,19 @@ tui_set_locator_filename (const char *filename)
|
|||||||
/* Update the locator, with the provided arguments. */
|
/* Update the locator, with the provided arguments. */
|
||||||
static void
|
static void
|
||||||
tui_set_locator_info (const char *filename, const char *procname, int lineno,
|
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;
|
element->procName[0] = (char) 0;
|
||||||
strcat_to_buf (element->procName, MAX_LOCATOR_ELEMENT_LEN, procname);
|
strcat_to_buf (element->procName, MAX_LOCATOR_ELEMENT_LEN, procname);
|
||||||
element->lineNo = lineno;
|
element->lineNo = lineno;
|
||||||
@ -163,7 +174,6 @@ tui_set_locator_info (const char *filename, const char *procname, int lineno,
|
|||||||
tui_set_locator_filename (filename);
|
tui_set_locator_filename (filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Update only the filename portion of the locator. */
|
/* Update only the filename portion of the locator. */
|
||||||
void
|
void
|
||||||
tuiUpdateLocatorFilename (const char *filename)
|
tuiUpdateLocatorFilename (const char *filename)
|
||||||
@ -172,72 +182,7 @@ tuiUpdateLocatorFilename (const char *filename)
|
|||||||
tuiShowLocatorContent ();
|
tuiShowLocatorContent ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/* Function to print the frame information for the TUI. */
|
||||||
** 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.
|
|
||||||
*/
|
|
||||||
void
|
void
|
||||||
tuiShowFrameInfo (struct frame_info *fi)
|
tuiShowFrameInfo (struct frame_info *fi)
|
||||||
{
|
{
|
||||||
@ -247,20 +192,24 @@ tuiShowFrameInfo (struct frame_info *fi)
|
|||||||
if (fi)
|
if (fi)
|
||||||
{
|
{
|
||||||
register int startLine, i;
|
register int startLine, i;
|
||||||
register struct symtab *s;
|
|
||||||
CORE_ADDR low;
|
CORE_ADDR low;
|
||||||
TuiGenWinInfoPtr locator = locatorWinInfoPtr ();
|
TuiGenWinInfoPtr locator = locatorWinInfoPtr ();
|
||||||
int sourceAlreadyDisplayed;
|
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);
|
sourceAlreadyDisplayed = sal.symtab != 0
|
||||||
if (s == 0)
|
&& tuiSourceIsDisplayed (sal.symtab->filename);
|
||||||
return;
|
tui_set_locator_info (sal.symtab == 0 ? "??" : sal.symtab->filename,
|
||||||
|
tui_get_function_from_frame (fi),
|
||||||
startLine = 0;
|
sal.line,
|
||||||
sourceAlreadyDisplayed = tuiSourceIsDisplayed (s->filename);
|
fi->pc);
|
||||||
tuiSetLocatorContent (fi);
|
|
||||||
tuiShowLocatorContent ();
|
tuiShowLocatorContent ();
|
||||||
|
startLine = 0;
|
||||||
for (i = 0; i < (sourceWindows ())->count; i++)
|
for (i = 0; i < (sourceWindows ())->count; i++)
|
||||||
{
|
{
|
||||||
TuiWhichElement *item;
|
TuiWhichElement *item;
|
||||||
@ -288,7 +237,7 @@ tuiShowFrameInfo (struct frame_info *fi)
|
|||||||
l.lineNo = startLine;
|
l.lineNo = startLine;
|
||||||
if (!(sourceAlreadyDisplayed
|
if (!(sourceAlreadyDisplayed
|
||||||
&& tuiLineIsDisplayed (item->locator.lineNo, winInfo, TRUE)))
|
&& tuiLineIsDisplayed (item->locator.lineNo, winInfo, TRUE)))
|
||||||
tuiUpdateSourceWindow (winInfo, s, l, TRUE);
|
tuiUpdateSourceWindow (winInfo, sal.symtab, l, TRUE);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
l.lineNo = item->locator.lineNo;
|
l.lineNo = item->locator.lineNo;
|
||||||
@ -302,7 +251,7 @@ tuiShowFrameInfo (struct frame_info *fi)
|
|||||||
TuiLineOrAddress a;
|
TuiLineOrAddress a;
|
||||||
a.addr = low;
|
a.addr = low;
|
||||||
if (!tuiAddrIsDisplayed (item->locator.addr, winInfo, TRUE))
|
if (!tuiAddrIsDisplayed (item->locator.addr, winInfo, TRUE))
|
||||||
tuiUpdateSourceWindow (winInfo, s, a, TRUE);
|
tuiUpdateSourceWindow (winInfo, sal.symtab, a, TRUE);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
a.addr = item->locator.addr;
|
a.addr = item->locator.addr;
|
||||||
@ -315,7 +264,7 @@ tuiShowFrameInfo (struct frame_info *fi)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
tuiSetLocatorContent (fi);
|
tui_set_locator_info (NULL, NULL, 0, (CORE_ADDR) 0);
|
||||||
tuiShowLocatorContent ();
|
tuiShowLocatorContent ();
|
||||||
for (i = 0; i < (sourceWindows ())->count; i++)
|
for (i = 0; i < (sourceWindows ())->count; i++)
|
||||||
{
|
{
|
||||||
@ -324,9 +273,7 @@ tuiShowFrameInfo (struct frame_info *fi)
|
|||||||
tuiUpdateExecInfo (winInfo);
|
tuiUpdateExecInfo (winInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return;
|
|
||||||
} /* tuiShowFrameInfo */
|
|
||||||
|
|
||||||
/* Function to initialize gdb commands, for tui window stack manipulation. */
|
/* Function to initialize gdb commands, for tui window stack manipulation. */
|
||||||
void
|
void
|
||||||
|
Reference in New Issue
Block a user