This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Remove type prefix for -var-evaluate-expression/functions


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 */

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]