From 2f27adfe297378d226b6578ff18993c0c1e41fba Mon Sep 17 00:00:00 2001 From: Andrew Burgess Date: Wed, 31 Oct 2012 09:26:22 +0000 Subject: [PATCH] http://sourceware.org/ml/gdb-patches/2012-10/msg00525.html gdb/ChangeLog 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 gdb/testsuite/ChangeLog 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. --- gdb/ChangeLog | 7 +++++++ gdb/c-typeprint.c | 5 +++-- gdb/testsuite/ChangeLog | 9 +++++++++ gdb/testsuite/gdb.base/gnu_vector.c | 13 +++++++++++++ gdb/testsuite/gdb.base/gnu_vector.exp | 10 ++++++++++ 5 files changed, 42 insertions(+), 2 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index cb2c7d0..d234e6f 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2012-10-31 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. + 2012-10-26 Pedro Alves * amd64-tdep.c (amd64_relocate_instruction): Use 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)); diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index b35c336..8a756aa 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2012-10-31 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. + 2012-10-25 Yao Qi * gdb.trace/ftrace.exp (test_fast_tracepoints): Use 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}" -- 2.7.4