From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6213 invoked by alias); 23 Apr 2005 00:36:53 -0000 Mailing-List: contact gdb-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sources.redhat.com Received: (qmail 6137 invoked from network); 23 Apr 2005 00:36:40 -0000 Received: from unknown (HELO mail-out3.apple.com) (17.254.13.22) by sourceware.org with SMTP; 23 Apr 2005 00:36:40 -0000 Received: from mailgate2.apple.com (a17-128-100-204.apple.com [17.128.100.204]) by mail-out3.apple.com (8.12.11/8.12.11) with ESMTP id j3N0aeTu028173 for ; Fri, 22 Apr 2005 17:36:40 -0700 (PDT) Received: from relay1.apple.com (relay1.apple.com) by mailgate2.apple.com (Content Technologies SMTPRS 4.3.17) with ESMTP id ; Fri, 22 Apr 2005 17:36:39 -0700 Received: from [17.219.193.2] (vpn-scv-x1-2.apple.com [17.219.193.2]) by relay1.apple.com (8.12.11/8.12.11) with ESMTP id j3N0aY3Y012509 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT); Fri, 22 Apr 2005 17:36:37 -0700 (PDT) In-Reply-To: References: <547BC9E3-4C03-4724-8BB5-BB1A99BB3625@apple.com> Mime-Version: 1.0 (Apple Message framework v721) Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed Message-Id: <80A2E563-8EAA-4D8D-879F-DB3A9A13B238@apple.com> Cc: gcc-patches@gcc.gnu.org, gdb@sources.redhat.com Content-Transfer-Encoding: 7bit From: Devang Patel Subject: Re: [PATCH] Debugging Vector Types Date: Sat, 23 Apr 2005 00:36:00 -0000 To: Geoffrey Keating X-SW-Source: 2005-04/txt/msg00159.txt.bz2 On Apr 22, 2005, at 5:14 PM, Geoffrey Keating wrote: > Devang Patel 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