* tuiStack.c (tui_get_function_from_frame): Rename from

_getFuncNameFromFrame; use print_address_symbolic to get symbolic
	name of address.
	(tuiUpdateLocatorInfoFromFrame): Update.
This commit is contained in:
Stephane Carrez 2002-08-25 09:40:32 +00:00
parent bc77de56b6
commit 5564c76952
2 changed files with 44 additions and 30 deletions

View File

@ -1,3 +1,10 @@
2002-08-25 Stephane Carrez <stcarrez@nerim.fr>
* tuiStack.c (tui_get_function_from_frame): Rename from
_getFuncNameFromFrame; use print_address_symbolic to get symbolic
name of address.
(tuiUpdateLocatorInfoFromFrame): Update.
2002-08-25 Stephane Carrez <stcarrez@nerim.fr>
* tuiRegs.c (tuiDisplayRegistersFrom): Remove unused locals.

View File

@ -52,19 +52,47 @@
#include "tuiGeneralWin.h"
#include "tuiSource.h"
#include "tuiSourceWin.h"
#include "tui-file.h"
/*****************************************
** STATIC LOCAL FUNCTIONS FORWARD DECLS **
******************************************/
/* Get a printable name for the function at the address.
The symbol name is demangled if demangling is turned on.
Returns a pointer to a static area holding the result. */
static char* tui_get_function_from_frame (struct frame_info *fi);
static char *_getFuncNameFromFrame (struct frame_info *);
static void tui_update_command (char *, int);
/*****************************************
** PUBLIC FUNCTION **
******************************************/
/* Get a printable name for the function at the address.
The symbol name is demangled if demangling is turned on.
Returns a pointer to a static area holding the result. */
static char*
tui_get_function_from_frame (struct frame_info *fi)
{
static char name[256];
struct ui_file *stream = tui_sfileopen (256);
char *p;
print_address_symbolic (fi->pc, stream, demangle, "");
p = tui_file_get_strbuf (stream);
/* Use simple heuristics to isolate the function name. The symbol can
be demangled and we can have function parameters. Remove them because
the status line is too short to display them. */
if (*p == '<')
p++;
strncpy (name, p, sizeof (name));
p = strchr (name, '(');
if (!p)
p = strchr (name, '>');
if (p)
*p = 0;
p = strchr (name, '+');
if (p)
*p = 0;
ui_file_delete (stream);
return name;
}
/*
** tuiClearLocatorDisplay()
@ -230,13 +258,13 @@ tuiUpdateLocatorInfoFromFrame (struct frame_info *frameInfo,
!frame_in_dummy (frameInfo->next)));
if (symtabAndLine.symtab && symtabAndLine.symtab->filename)
tuiSetLocatorInfo (symtabAndLine.symtab->filename,
_getFuncNameFromFrame (frameInfo),
tui_get_function_from_frame (frameInfo),
symtabAndLine.line,
frameInfo->pc,
element);
else
tuiSetLocatorInfo ((char *) NULL,
_getFuncNameFromFrame (frameInfo),
tui_get_function_from_frame (frameInfo),
0,
frameInfo->pc,
element);
@ -395,27 +423,6 @@ _initialize_tuiStack (void)
"execution point.\n");
}
/*****************************************
** STATIC LOCAL FUNCTIONS **
******************************************/
/*
** _getFuncNameFromFrame().
*/
static char *
_getFuncNameFromFrame (struct frame_info *frameInfo)
{
char *funcName = (char *) NULL;
find_pc_partial_function (frameInfo->pc,
&funcName,
(CORE_ADDR *) NULL,
(CORE_ADDR *) NULL);
return funcName;
} /* _getFuncNameFromFrame */
/* Command to update the display with the current execution point. */
static void
tui_update_command (char *arg, int from_tty)