This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: Remove type prefix for -var-evaluate-expression/functions
- From: Vladimir Prus <ghost at cs dot msu dot su>
- To: gdb-patches at sources dot redhat dot com
- Date: Fri, 17 Mar 2006 11:39:47 +0300
- Subject: Re: Remove type prefix for -var-evaluate-expression/functions
- References: <17434.29587.870198.135084@kahikatea.snap.net.nz>
Nick Roberts wrote:
>> Hi,
>> the following patch removes 'type prefix' from output of
>> -var-evaluate-expression applied to objects of function type (not
>> pointers to functions, but functions).
>>
>> It causes no regression in the testsuite for me.
>
> But I guess a new test would help prevent a regression (in the code) in
> the future.
Yes, can you suggest which file should I add this new testcase too?
>> Changelog:
>>
>> 2006-03-15 Vladimir Prus <ghost@cs.msu.su>
>>
>> * c-valprint.c
>> (c_val_print): Don't print type prefix for functions.
>> (c_value_print): Print type prefix for functions here.
>
>
>> Patch attached.
>
> ...
>> + if (TYPE_CODE (type) == TYPE_CODE_FUNC)
>
> This condition must always be true here (case TYPE_CODE_FUNC:).
This chunk is in 'c_value_print', where there's no switch.
>
>
> Where's the patch for c_value_print?
I guess I'd better send the patch with "-p". It's attached, hopefully it's
more clear.
And thanks for the hint about -p!
- Volodya
Index: c-valprint.c
===================================================================
RCS file: /cvs/src/src/gdb/c-valprint.c,v
retrieving revision 1.39
diff -u -p -r1.39 c-valprint.c
--- c-valprint.c 18 Jan 2006 21:24:19 -0000 1.39
+++ c-valprint.c 17 Mar 2006 08:38:41 -0000
@@ -356,11 +356,6 @@ c_val_print (struct type *type, const gd
print_scalar_formatted (valaddr + embedded_offset, type, format, 0, stream);
break;
}
- /* FIXME, we should consider, at least for ANSI C language, eliminating
- the distinction made between FUNCs and POINTERs to FUNCs. */
- fprintf_filtered (stream, "{");
- type_print (type, "", stream, -1);
- fprintf_filtered (stream, "} ");
/* Try to print what function it points to, and its address. */
print_address_demangle (address, stream, demangle);
break;
@@ -570,6 +565,16 @@ c_value_print (struct value *val, struct
}
}
+ if (TYPE_CODE (type) == TYPE_CODE_FUNC)
+ {
+ /* FIXME, we should consider, at least for ANSI C language, eliminating
+ the distinction made between FUNCs and POINTERs to FUNCs. */
+ fprintf_filtered (stream, "{");
+ type_print (type, "", stream, -1);
+ fprintf_filtered (stream, "} ");
+ }
+
+
if (objectprint && (TYPE_CODE (type) == TYPE_CODE_CLASS))
{
/* Attempt to determine real type of object */