aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/infcall.c22
2 files changed, 16 insertions, 11 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 481ec59..0364294 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2003-08-10 Andrew Cagney <cagney@redhat.com>
+
+ * infcall.c (call_function_by_hand): Use xstrprintf instead of
+ sprintf. Make "name" constant.
+
2003-08-10 Mark Kettenis <kettenis@gnu.org>
* i387-tdep.c (i387_register_to_value): Use get_frame_register
diff --git a/gdb/infcall.c b/gdb/infcall.c
index a4a6ac1..8df1114 100644
--- a/gdb/infcall.c
+++ b/gdb/infcall.c
@@ -937,7 +937,7 @@ You must use a pointer to function type variable. Command ignored.", arg_name);
if (stopped_by_random_signal || !stop_stack_dummy)
{
/* Find the name of the function we're about to complain about. */
- char *name = NULL;
+ const char *name = NULL;
{
struct symbol *symbol = find_pc_function (funaddr);
if (symbol)
@@ -949,17 +949,17 @@ You must use a pointer to function type variable. Command ignored.", arg_name);
if (msymbol)
name = SYMBOL_PRINT_NAME (msymbol);
}
+ if (name == NULL)
+ {
+ /* Can't use a cleanup here. It is discarded, instead use
+ an alloca. */
+ char *tmp = xstrprintf ("at %s", local_hex_string (funaddr));
+ char *a = alloca (strlen (tmp) + 1);
+ strcpy (a, tmp);
+ xfree (tmp);
+ name = a;
+ }
}
- if (name == NULL)
- {
- /* NOTE: cagney/2003-04-23: Don't blame me. This code dates
- back to 1993-07-08, I simply moved it. */
- char format[80];
- sprintf (format, "at %s", local_hex_format ());
- name = alloca (80);
- /* FIXME-32x64: assumes funaddr fits in a long. */
- sprintf (name, format, (unsigned long) funaddr);
- }
if (stopped_by_random_signal)
{
/* We stopped inside the FUNCTION because of a random