Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [RFC] Change how value is shown for varobjs of type vector.
@ 2012-09-26 15:23 Andrew Burgess
  2012-10-04 10:57 ` Andrew Burgess
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Andrew Burgess @ 2012-09-26 15:23 UTC (permalink / raw)
  To: gdb-patches

Consider:

> cat vec.c 
char vector __attribute__ ((vector_size (8))) = { 0, 0, 0, 0, 0, 0, 0, 0 };

int
main ()
{
  /* Nothing.  */
}
> gcc -g -o vec.x vec.c
> gdb vec.x
(gdb) start
(gdb) interpreter-exec mi2 "-var-create vector * vector"
^done,name="vector",numchild="8",value="[8]",type="char [8]",has_more="0"

## END ##

I have a patch (below) that changes the value field from the current "[8]" to "{ 0, 0, 0, 0, 0, 0, 0, 0 }".  The varobj still has 8 children, and the top level varobj is still not editable, you have to edit through the children.

This better suits my local usage where vectors are generally used with just a small number of entries, each vector type has a total size of one 64-bit register, the frontend used to view this MI data is just passing the value field through, and my users wanted to visualise the set of values in a single field.

I've not finished the patch yet with changelog or tests because I wasn't sure if this change was going to be acceptable, so I'm looking for some feedback please.  One possibility would be to make this behaviour switchable, if it can't be the default.

Thanks,

Andrew


diff --git a/gdb/varobj.c b/gdb/varobj.c
index 6699699..c72716b 100644
--- a/gdb/varobj.c
+++ b/gdb/varobj.c
@@ -3119,10 +3119,13 @@ default_value_is_changeable_p (struct varobj *var)
     {
     case TYPE_CODE_STRUCT:
     case TYPE_CODE_UNION:
-    case TYPE_CODE_ARRAY:
       r = 0;
       break;
 
+    case TYPE_CODE_ARRAY:
+      r = TYPE_VECTOR (type);
+      break;
+
     default:
       r = 1;
     }
@@ -3507,12 +3510,16 @@ c_value_of_variable (struct varobj *var, enum varobj_display_formats format)
 
     case TYPE_CODE_ARRAY:
       {
-	char *number;
+	if (!TYPE_VECTOR (type))
+	  {
+	    char *number;
 
-	number = xstrprintf ("[%d]", var->num_children);
-	return (number);
+	    number = xstrprintf ("[%d]", var->num_children);
+	    return (number);
+	    /* break; */
+	  }
       }
-      /* break; */
+      /* fall through  */
 
     default:
       {





^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2012-10-18  9:23 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-09-26 15:23 [RFC] Change how value is shown for varobjs of type vector Andrew Burgess
2012-10-04 10:57 ` Andrew Burgess
2012-10-14 17:25 ` Joel Brobecker
2012-10-15 11:12   ` Marc Khouzam
2012-10-17 17:04   ` Tom Tromey
2012-10-18  9:23 ` Andrew Burgess

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox