Mirror of the gdb mailing list
 help / color / mirror / Atom feed
* Re: [PATCH] Debugging Vector Types
       [not found] <547BC9E3-4C03-4724-8BB5-BB1A99BB3625@apple.com>
@ 2005-04-23  0:13 ` Geoffrey Keating
  2005-04-23  0:36   ` Devang Patel
  0 siblings, 1 reply; 5+ messages in thread
From: Geoffrey Keating @ 2005-04-23  0:13 UTC (permalink / raw)
  To: Devang Patel; +Cc: gcc-patches, gdb

Devang Patel <dpatel@apple.com> writes:

> GCC encodes Vector Types as an array of N elements (at least, in
> STABS format). This means, GDB is not able to distinguish it from a
> normal Array. And these may lead to confusing output from GDB. One of
> our user reported that for
> 
>      vector unsigned char a = (vector unsigned char)  (
> 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 );
> 
> gdb prints
> 
>      (gdb) print a
>      $1 = "\001\002\003\004\005\006\a\b\t\n\v\f\r\016\017\020"
> 
> If following is used
> 
>      vector unsigned char a = (vector unsigned char)  (
> 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p' );
> 
> then gdb prints
> 
>      (gdb) print a
>      $1 = "abcdefghijklmnop"
> 
> but, it's not vector!
> 
> If GCC provides GDB some kind of hints then GDB may be able to
> display something meaningful. This patch attaches "attribute vector"
> to the stabs string used to represent vector types. I am told that
> GDB ignores attributes that it does not recognize. So we can update
> GCC independently. I tested small test cases and our darwin GDB does
> not get offended by this additional attribute.
> 
>          * dbxout.c (dbxout_type): Emit attribute vector.
>          * config/darwin.h (DBX_USE_VECTOR_ATTRIBUTE): Define.
>          * doc/tm.texi (DBX_USE_VECTOR_ATTRIBUTE): Document.
> 
>          * gcc.dg/stabs-attrib-vect.c: New test.
> 
> Bootstrapped and tested on powerpc-darwin.
> OK  for mainline ?

- I don't think this should be Darwin-specific.  Shouldn't everyone have it?
  It's not like it can break Solaris dbx or something, unless people are
  using vector types, in which case IMO they should just use GDB.

- You need to update stabs.texi, which I think lives in GDB.  (It's
  the only stabs documentation we have, so keeping it up-to-date is
  important!)

Other than that the patch seems reasonable enough to me.

The GDB people may have some more comments, so I've CCed them.

GDB people: As I understand the patch, what it does is add '@V;' to
the end to the stab for the type, so it looks like "vi:(0,16)=@V;".


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

* Re: [PATCH] Debugging Vector Types
  2005-04-23  0:13 ` [PATCH] Debugging Vector Types Geoffrey Keating
@ 2005-04-23  0:36   ` Devang Patel
  2005-04-23  0:51     ` Geoff Keating
  0 siblings, 1 reply; 5+ messages in thread
From: Devang Patel @ 2005-04-23  0:36 UTC (permalink / raw)
  To: Geoffrey Keating; +Cc: gcc-patches, gdb


On Apr 22, 2005, at 5:14 PM, Geoffrey Keating wrote:

> Devang Patel <dpatel@apple.com> writes:
>
>> GCC encodes Vector Types as an array of N elements (at least, in
>> STABS format). This means, GDB is not able to distinguish it from a
>> normal Array. And these may lead to confusing output from GDB. One of
>> our user reported that for
>>
>>      vector unsigned char a = (vector unsigned char)  (
>> 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 );
>>
>> gdb prints
>>
>>      (gdb) print a
>>      $1 = "\001\002\003\004\005\006\a\b\t\n\v\f\r\016\017\020"
>>
>> If following is used
>>
>>      vector unsigned char a = (vector unsigned char)  (
>> 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p' );
>>
>> then gdb prints
>>
>>      (gdb) print a
>>      $1 = "abcdefghijklmnop"
>>
>> but, it's not vector!
>>
>> If GCC provides GDB some kind of hints then GDB may be able to
>> display something meaningful. This patch attaches "attribute vector"
>> to the stabs string used to represent vector types. I am told that
>> GDB ignores attributes that it does not recognize. So we can update
>> GCC independently. I tested small test cases and our darwin GDB does
>> not get offended by this additional attribute.
>>
>>          * dbxout.c (dbxout_type): Emit attribute vector.
>>          * config/darwin.h (DBX_USE_VECTOR_ATTRIBUTE): Define.
>>          * doc/tm.texi (DBX_USE_VECTOR_ATTRIBUTE): Document.
>>
>>          * gcc.dg/stabs-attrib-vect.c: New test.
>>
>> Bootstrapped and tested on powerpc-darwin.
>> OK  for mainline ?
>
> - I don't think this should be Darwin-specific.  Shouldn't everyone  
> have it?
>   It's not like it can break Solaris dbx or something, unless  
> people are
>   using vector types, in which case IMO they should just use GDB.

I was just playing safe.

> - You need to update stabs.texi, which I think lives in GDB.  (It's
>   the only stabs documentation we have, so keeping it up-to-date is
>   important!)

The doc version I have already lists it as an extension.

---
> There is an AIX extension for type attributes. Following the `='  
> are any number of type attributes. Each one starts with `@' and  
> ends with `;'. Debuggers, including AIX's dbx and GDB 4.10, skip  
> any type attributes they do not recognize. GDB 4.9 and other  
> versions of dbx may not do this. Because of a conflict with C++  
> (see section GNU C++ Stabs), new attributes should not be defined  
> which begin with a digit, `(', or `-'; GDB may be unable to  
> distinguish those from the C++ type descriptor `@'. The attributes  
> are:
>
> aboundary
> boundary is an integer specifying the alignment. I assume it  
> applies to all variables of this type.
> pinteger
> Pointer class (for checking). Not sure what this means, or how  
> integer is interpreted.
> P
> Indicate this is a packed type, meaning that structure fields or  
> array elements are placed more closely in memory, to save memory at  
> the expense of speed.
> ssize
> Size in bits of a variable of this type. This is fully supported by  
> GDB 4.11 and later.
> S
> Indicate that this type is a string instead of an array of  
> characters, or a bitstring instead of a set. It doesn't change the  
> layout of the data being represented, but does enable the debugger  
> to know which type it is.
> V
> Indicate that this type is a vector instead of an array. The only  
> major difference between vectors and arrays is that vectors are  
> passed by value instead of by reference (vector coprocessor  
> extension).

---

> Other than that the patch seems reasonable enough to me.
>
> The GDB people may have some more comments, so I've CCed them.
>
> GDB people: As I understand the patch, what it does is add '@V;' to
> the end to the stab for the type, so it looks like "vi:(0,16)=@V;".

-
Devang


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

* Re: [PATCH] Debugging Vector Types
  2005-04-23  0:36   ` Devang Patel
@ 2005-04-23  0:51     ` Geoff Keating
  2005-04-24 22:35       ` Daniel Jacobowitz
  0 siblings, 1 reply; 5+ messages in thread
From: Geoff Keating @ 2005-04-23  0:51 UTC (permalink / raw)
  To: Devang Patel; +Cc: gcc-patches, gdb


On 22/04/2005, at 5:36 PM, Devang Patel wrote:

>
> On Apr 22, 2005, at 5:14 PM, Geoffrey Keating wrote:
>
>> - I don't think this should be Darwin-specific.  Shouldn't everyone 
>> have it?
>>   It's not like it can break Solaris dbx or something, unless people 
>> are
>>   using vector types, in which case IMO they should just use GDB.
>
> I was just playing safe.

I don't think there's any reason to (but if anyone else does, speak up!)

Could you send a version of the patch which adds the extension for 
every platform?  Then wait until, say, Tuesday so that people have a 
chance to object, and if there are no objections you can just commit 
it.

>> - You need to update stabs.texi, which I think lives in GDB.  (It's
>>   the only stabs documentation we have, so keeping it up-to-date is
>>   important!)
>
> The doc version I have already lists it as an extension.

Excellent, then there's no need for any changes there.


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

* Re: [PATCH] Debugging Vector Types
  2005-04-23  0:51     ` Geoff Keating
@ 2005-04-24 22:35       ` Daniel Jacobowitz
  2005-04-25  2:19         ` Devang Patel
  0 siblings, 1 reply; 5+ messages in thread
From: Daniel Jacobowitz @ 2005-04-24 22:35 UTC (permalink / raw)
  To: Geoff Keating; +Cc: Devang Patel, gcc-patches, gdb

On Fri, Apr 22, 2005 at 05:52:14PM -0700, Geoff Keating wrote:
> I don't think there's any reason to (but if anyone else does, speak up!)

I agree; please don't make this Darwin-specific.

> >>- You need to update stabs.texi, which I think lives in GDB.  (It's
> >>  the only stabs documentation we have, so keeping it up-to-date is
> >>  important!)
> >
> >The doc version I have already lists it as an extension.
> 
> Excellent, then there's no need for any changes there.

Yes, in fact GDB already accepts this attribute for stabs.

-- 
Daniel Jacobowitz
CodeSourcery, LLC


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

* Re: [PATCH] Debugging Vector Types
  2005-04-24 22:35       ` Daniel Jacobowitz
@ 2005-04-25  2:19         ` Devang Patel
  0 siblings, 0 replies; 5+ messages in thread
From: Devang Patel @ 2005-04-25  2:19 UTC (permalink / raw)
  To: Daniel Jacobowitz; +Cc: Geoff Keating, gcc-patches, gdb

[-- Attachment #1: Type: text/plain, Size: 784 bytes --]


On Apr 24, 2005, at 3:35 PM, Daniel Jacobowitz wrote:

> On Fri, Apr 22, 2005 at 05:52:14PM -0700, Geoff Keating wrote:
>> I don't think there's any reason to (but if anyone else does,  
>> speak up!)
>
> I agree; please don't make this Darwin-specific.
>
>>>> - You need to update stabs.texi, which I think lives in GDB.  (It's
>>>>  the only stabs documentation we have, so keeping it up-to-date is
>>>>  important!)
>>>
>>> The doc version I have already lists it as an extension.
>>
>> Excellent, then there's no need for any changes there.
>
> Yes, in fact GDB already accepts this attribute for stabs.

OK. I'll check-in this smaller patch tomorrow.

         * dbxout.c (dbxout_type): Emit attribute vector.

         * gcc.dg/stabs-attrib-vect-darwin.c: New test.

-
Devang


[-- Attachment #2: stabs_vector.take2.diff --]
[-- Type: application/octet-stream, Size: 2499 bytes --]

Index: dbxout.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/dbxout.c,v
retrieving revision 1.227
diff -Idpatel.pbxuser -c -3 -p -r1.227 dbxout.c
*** dbxout.c	12 Apr 2005 20:39:04 -0000	1.227
--- dbxout.c	25 Apr 2005 02:11:19 -0000
*************** dbxout_type (tree type, int full)
*** 1652,1662 ****
    tree tem;
    tree main_variant;
    static int anonymous_type_number = 0;
  
    if (TREE_CODE (type) == VECTOR_TYPE)
!     /* The frontend feeds us a representation for the vector as a struct
!        containing an array.  Pull out the array type.  */
!     type = TREE_TYPE (TYPE_FIELDS (TYPE_DEBUG_REPRESENTATION_TYPE (type)));
  
    /* If there was an input error and we don't really have a type,
       avoid crashing and write something that is at least valid
--- 1652,1666 ----
    tree tem;
    tree main_variant;
    static int anonymous_type_number = 0;
+   bool vector_type = false;
  
    if (TREE_CODE (type) == VECTOR_TYPE)
!     {
!       /* The frontend feeds us a representation for the vector as a struct
! 	 containing an array.  Pull out the array type.  */
!       type = TREE_TYPE (TYPE_FIELDS (TYPE_DEBUG_REPRESENTATION_TYPE (type)));
!       vector_type = true;
!     }
  
    /* If there was an input error and we don't really have a type,
       avoid crashing and write something that is at least valid
*************** dbxout_type (tree type, int full)
*** 1991,1996 ****
--- 1995,2006 ----
  	  break;
  	}
  
+       if (vector_type)
+ 	{
+ 	  have_used_extensions = 1;
+ 	  stabstr_S ("@V;");
+ 	}
+ 
        /* Output "a" followed by a range type definition
  	 for the index type of the array
  	 followed by a reference to the target-type.
Index: testsuite/gcc.dg/stabs-attrib-vect-darwin.c
===================================================================
RCS file: testsuite/gcc.dg/stabs-attrib-vect-darwin.c
diff -N testsuite/gcc.dg/stabs-attrib-vect-darwin.c
*** /dev/null	1 Jan 1970 00:00:00 -0000
--- testsuite/gcc.dg/stabs-attrib-vect-darwin.c	25 Apr 2005 02:11:21 -0000
***************
*** 0 ****
--- 1,11 ----
+ /* Test Attribute Vector associated with vectory type stabs.  */
+ /* { dg-do compile { target powerpc*-*-darwin* } } */
+ /* { dg-options "-gstabs -fno-eliminate-unused-debug-types -faltivec" } */
+ 
+ int main ()
+ {
+   vector int vi = { 6,7,8,9 };
+   return 0;
+ }
+ 
+ /* { dg-final { scan-assembler ".stabs.*vi\:\\(0,16\\)=\@V" } } */
Index: testsuite/gcc.dg/stabs-attrib-vect.c

[-- Attachment #3: Type: text/plain, Size: 1 bytes --]



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

end of thread, other threads:[~2005-04-25  2:19 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <547BC9E3-4C03-4724-8BB5-BB1A99BB3625@apple.com>
2005-04-23  0:13 ` [PATCH] Debugging Vector Types Geoffrey Keating
2005-04-23  0:36   ` Devang Patel
2005-04-23  0:51     ` Geoff Keating
2005-04-24 22:35       ` Daniel Jacobowitz
2005-04-25  2:19         ` Devang Patel

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