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: Tue, 04 Apr 2006 11:18:02 +0400
- Subject: Re: Remove type prefix for -var-evaluate-expression/functions
- References: <17434.35140.456146.649459@kahikatea.snap.net.nz> <200603171319.55381.ghost@cs.msu.su> <20060317193702.GC19068@nevyn.them.org>
Daniel Jacobowitz wrote:
>> > Well I guess mi-var-cmd.exp. Please remember that I'm not the
>> > maintainer
>> > but just an interested party. See what Daniel says. He might want
>> > something for mi2-var-cmd.exp too.
>>
>> Ok, I'll wait for his comment.
>
> mi-var-cmd.exp sounds good to me. I don't think we need it in
> mi2-var-cmd.exp. I have the same question I asked a moment ago about
> Nick's patch - is there any chance that someone relies on this
> information?
>
> Here I think the chance is pretty slim; for pointers it's a more
> serious concern, but for functions this is a pretty rare case.
> So not versioning this change makes sense to me.
The new version of the patch, with testsuite change, is attached.
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.
* testsuite/gdb.mi/mi-var-cmd.exp: Test for new behaviour.
- Volodya
Index: c-valprint.c
===================================================================
RCS file: /cvs/src/src/gdb/c-valprint.c,v
retrieving revision 1.39
diff -u -r1.39 c-valprint.c
--- c-valprint.c 18 Jan 2006 21:24:19 -0000 1.39
+++ c-valprint.c 4 Apr 2006 07:09:25 -0000
@@ -356,11 +356,6 @@
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 @@
}
}
+ 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 */
Index: testsuite/gdb.mi/mi-var-cmd.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-var-cmd.exp,v
retrieving revision 1.18
diff -u -r1.18 mi-var-cmd.exp
--- testsuite/gdb.mi/mi-var-cmd.exp 14 Jan 2005 18:17:19 -0000 1.18
+++ testsuite/gdb.mi/mi-var-cmd.exp 4 Apr 2006 07:09:26 -0000
@@ -560,6 +560,15 @@
mi_gdb_test "-var-update selected_a" \
"\\^done,changelist=\\\[\{name=\"selected_a\",in_scope=\"true\",new_type=\"int\",new_num_children=\"0\"\}\\\]" \
"update selected_a in do_special_tests"
+
+mi_gdb_test "-var-create function * *f " \
+ "\\^done,name=\"function\",numchild=\"0\",type=\"void \\(\\)\"" \
+ "create varobj for function variable"
+
+mi_gdb_test "-var-evaluate-expression function" \
+ "\\^done,value=\"0x.*\"" \
+ "print value of function object"
+
mi_gdb_exit
return 0