From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23385 invoked by alias); 29 Oct 2012 10:54:31 -0000 Received: (qmail 23376 invoked by uid 22791); 29 Oct 2012 10:54:30 -0000 X-SWARE-Spam-Status: No, hits=-5.1 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,KHOP_THREADED,RCVD_IN_HOSTKARMA_W,RCVD_IN_HOSTKARMA_WL,RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mms3.broadcom.com (HELO mms3.broadcom.com) (216.31.210.19) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 29 Oct 2012 10:54:26 +0000 Received: from [10.9.200.133] by mms3.broadcom.com with ESMTP (Broadcom SMTP Relay (Email Firewall v6.5)); Mon, 29 Oct 2012 03:51:06 -0700 X-Server-Uuid: B86B6450-0931-4310-942E-F00ED04CA7AF Received: from mail-irva-13.broadcom.com (10.11.16.103) by IRVEXCHHUB02.corp.ad.broadcom.com (10.9.200.133) with Microsoft SMTP Server id 8.2.247.2; Mon, 29 Oct 2012 03:53:40 -0700 Received: from [10.177.73.58] (unknown [10.177.73.58]) by mail-irva-13.broadcom.com (Postfix) with ESMTP id BF13240FE3; Mon, 29 Oct 2012 03:54:09 -0700 (PDT) Message-ID: <508E6050.1040806@broadcom.com> Date: Mon, 29 Oct 2012 10:54:00 -0000 From: "Andrew Burgess" User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:16.0) Gecko/20121010 Thunderbird/16.0.1 MIME-Version: 1.0 To: "Tom Tromey" cc: gdb-patches@sourceware.org Subject: Re: [rfc] display vector types using vector_size syntax References: <50448CC0.8060706@broadcom.com> <87627lerap.fsf@fleche.redhat.com> <5053A118.5080701@broadcom.com> <87r4ol12vs.fsf@fleche.redhat.com> In-Reply-To: <87r4ol12vs.fsf@fleche.redhat.com> Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2012-10/txt/msg00528.txt.bz2 On 26/10/2012 7:53 PM, Tom Tromey wrote: >>>>>> "Andrew" == Andrew Burgess writes: > > Andrew> Committed, but with the extra "__attribute__" syntax as that seemed to > Andrew> be the most popular. > Andrew> http://sourceware.org/ml/gdb-cvs/2012-09/msg00069.html > > With this patch I get weird output sometimes: > > (gdb) ptype $_siginfo > type = struct { > int si_signo; > int si_errno; > int si_code; > union { > int _pad__attribute__ ((vector_size(28))); > > Note the lack of a space between "_pad" and "__attribute__". > > I filed this as http://sourceware.org/bugzilla/show_bug.cgi?id=14772 Sorry for the breakage. The patch below fixes this, and adds some suitable tests. OK to commit? Thanks, Andrew gdb/ChangeLog 2012-10-29 Andrew Burgess PR cli/14772 * c-typeprint.c (c_print_type): Don't print a space for vector types, this is handled within the suffix. (c_type_print_varspec_suffix): Add a space to vector suffix. diff --git a/gdb/c-typeprint.c b/gdb/c-typeprint.c index 8b5bc21..a43dfce 100644 --- a/gdb/c-typeprint.c +++ b/gdb/c-typeprint.c @@ -67,7 +67,8 @@ c_print_type (struct type *type, || ((show > 0 || TYPE_NAME (type) == 0) && (code == TYPE_CODE_PTR || code == TYPE_CODE_FUNC || code == TYPE_CODE_METHOD - || code == TYPE_CODE_ARRAY + || (code == TYPE_CODE_ARRAY + && !TYPE_VECTOR (type)) || code == TYPE_CODE_MEMBERPTR || code == TYPE_CODE_METHODPTR || code == TYPE_CODE_REF))) @@ -619,7 +620,7 @@ c_type_print_varspec_suffix (struct type *type, fprintf_filtered (stream, ")"); fprintf_filtered (stream, (is_vector ? - "__attribute__ ((vector_size(" : "[")); + " __attribute__ ((vector_size(" : "[")); if (get_array_bounds (type, &low_bound, &high_bound)) fprintf_filtered (stream, "%s", plongest (high_bound - low_bound + 1)); gdb/testsuite/ChangeLog 2012-10-29 Andrew Burgess PR cli/14772 * gdb.base/gnu_vector.c (union_with_vector_1) (struct_with_vector_1): Add new struct and union for testing ptype. * gdb.base/gnu_vector.exp: Add testing of ptype on vectors, and structs / unions containing vectors. diff --git a/gdb/testsuite/gdb.base/gnu_vector.c b/gdb/testsuite/gdb.base/gnu_vector.c index dc4f60d..a2a218f 100644 --- a/gdb/testsuite/gdb.base/gnu_vector.c +++ b/gdb/testsuite/gdb.base/gnu_vector.c @@ -42,6 +42,19 @@ longlong2 ll2 = {1, 2}; float2 f2 = {1, 2}; double2 d2 = {1, 2}; +union +{ + int i; + char cv __attribute__ ((vector_size (sizeof (int)))); +} union_with_vector_1; + +struct +{ + int i; + char cv __attribute__ ((vector_size (sizeof (int)))); + float4 f4; +} struct_with_vector_1; + int main () { diff --git a/gdb/testsuite/gdb.base/gnu_vector.exp b/gdb/testsuite/gdb.base/gnu_vector.exp index a1443a5..baba119 100644 --- a/gdb/testsuite/gdb.base/gnu_vector.exp +++ b/gdb/testsuite/gdb.base/gnu_vector.exp @@ -130,3 +130,13 @@ gdb_test "print i2 + i4a" "Cannot perform operation on vectors with different ty gdb_test "print f4a + f2" "Cannot perform operation on vectors with different types" gdb_test "print f2 + f4a" "Cannot perform operation on vectors with different types" +# Test ptype on vector types. +gdb_test "ptype c4" "type = char __attribute__ \\(\\(vector_size\\(4\\)\\)\\)" +gdb_test "ptype char4" "type = char __attribute__ \\(\\(vector_size\\(4\\)\\)\\)" +gdb_test "ptype i4a" "type = int __attribute__ \\(\\(vector_size\\(4\\)\\)\\)" +gdb_test "ptype int4" "type = int __attribute__ \\(\\(vector_size\\(4\\)\\)\\)" +gdb_test "ptype f4b" "type = float __attribute__ \\(\\(vector_size\\(4\\)\\)\\)" +gdb_test "ptype float4" "type = float __attribute__ \\(\\(vector_size\\(4\\)\\)\\)" + +gdb_test "ptype union_with_vector_1" "type = union {\r\n\[\t \]+int i;\r\n\[\t \]+char cv __attribute__ \\(\\(vector_size\\(4\\)\\)\\);\r\n}" +gdb_test "ptype struct_with_vector_1" "type = struct {\r\n\[\t \]+int i;\r\n\[\t \]+char cv __attribute__ \\(\\(vector_size\\(4\\)\\)\\);\r\n\[\t \]+float4 f4;\r\n}"