From: Stephane Carrez Date: Sun, 25 Aug 2002 09:40:32 +0000 (+0000) Subject: * tuiStack.c (tui_get_function_from_frame): Rename from X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5564c76952a3968193fba003f2208b718c8eca06;p=binutils-gdb.git * tuiStack.c (tui_get_function_from_frame): Rename from _getFuncNameFromFrame; use print_address_symbolic to get symbolic name of address. (tuiUpdateLocatorInfoFromFrame): Update. --- diff --git a/gdb/tui/ChangeLog b/gdb/tui/ChangeLog index 97c838f359c..9fea5acb9d9 100644 --- a/gdb/tui/ChangeLog +++ b/gdb/tui/ChangeLog @@ -1,3 +1,10 @@ +2002-08-25 Stephane Carrez + + * 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 * tuiRegs.c (tuiDisplayRegistersFrom): Remove unused locals. diff --git a/gdb/tui/tuiStack.c b/gdb/tui/tuiStack.c index d003fd71c17..22fb18a0643 100644 --- a/gdb/tui/tuiStack.c +++ b/gdb/tui/tuiStack.c @@ -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)