| Index: gdb/testsuite/gdb.base/gnu_vector.exp
|
| diff --git a/gdb/testsuite/gdb.base/gnu_vector.exp b/gdb/testsuite/gdb.base/gnu_vector.exp
|
| index a1443a55615b312828d4702a671464178e7ee370..457892c4e9dd642db1d00854083d0c9b6309d0fb 100644
|
| --- a/gdb/testsuite/gdb.base/gnu_vector.exp
|
| +++ b/gdb/testsuite/gdb.base/gnu_vector.exp
|
| @@ -1,4 +1,4 @@
|
| -# Copyright 2010-2012 Free Software Foundation, Inc.
|
| +# Copyright 2010-2013 Free Software Foundation, Inc.
|
|
|
| # This program is free software; you can redistribute it and/or modify
|
| # it under the terms of the GNU General Public License as published by
|
| @@ -18,9 +18,7 @@
|
| # Tests GDBs support for GNU vectors.
|
| # http://gcc.gnu.org/onlinedocs/gcc/Vector-Extensions.html
|
|
|
| -set testfile "gnu_vector"
|
| -set srcfile ${testfile}.c
|
| -set binfile ${objdir}/${subdir}/${testfile}
|
| +standard_testfile .c
|
|
|
| if [get_compiler_info] {
|
| return -1
|
| @@ -42,6 +40,14 @@ if { ![runto main] } {
|
| return -1
|
| }
|
|
|
| +# Get endianess for the scalar->vector casts
|
| +gdb_test_multiple "show endian" "show endian" {
|
| + -re ".* (big|little) endian.*$gdb_prompt $" {
|
| + set endian $expect_out(1,string)
|
| + pass "endianness: $endian"
|
| + }
|
| +}
|
| +
|
| # Test printing of character vector types
|
| gdb_test "print c4" "\\\$$decimal = \\{1, 2, 3, 4\\}"
|
| gdb_test "print c4\[2\]" "\\\$$decimal = 3"
|
| @@ -82,32 +88,57 @@ gdb_test "print f4a / f4b" "\\\$$decimal = \\{2, 2, 1, 4\\}"
|
| gdb_test "print +f4a" "\\\$$decimal = \\{2, 4, 8, 16\\}"
|
| gdb_test "print -f4a" "\\\$$decimal = \\{-2, -4, -8, -16\\}"
|
|
|
| -# Test scalar to vector widening
|
| -gdb_test "print (int2) 1" "\\\$$decimal = \\{1, 1\\}"
|
| -gdb_test "print (longlong2) 2" "\\\$$decimal = \\{2, 2\\}"
|
| -gdb_test "print (float2) 3" "\\\$$decimal = \\{3, 3\\}"
|
| -gdb_test "print (double2) 4" "\\\$$decimal = \\{4, 4\\}"
|
| -gdb_test "print (char4) 12" "\\\$$decimal = \\{12, 12, 12, 12\\}"
|
| -gdb_test "print (uint4) ia" "\\\$$decimal = \\{2, 2, 2, 2\\}"
|
| -gdb_test "print (int4) -3" "\\\$$decimal = \\{-3, -3, -3, -3\\}"
|
| -gdb_test "print (float4) 4" "\\\$$decimal = \\{4, 4, 4, 4\\}"
|
| +# When casting to vector the input type must have the same length as
|
| +# the total length of the vector.
|
| +gdb_test "print (char4) 0x01010101" "\\\$$decimal = \\{1, 1, 1, 1\\}"
|
| +gdb_test "print (int2) lla" "\\\$$decimal = \\{1, 1\\}"
|
| +
|
| +if { ![string compare $endian big] } then {
|
| + gdb_test "print (char4) ia" "\\\$$decimal = \\{0, 0, 0, 2\\}"
|
| +} else {
|
| + gdb_test "print (char4) ia" "\\\$$decimal = \\{2, 0, 0, 0\\}"
|
| +}
|
|
|
| +gdb_test "print (int2) 1" "can only cast scalar to vector of same size"
|
| +gdb_test "print (longlong2) 2" "can only cast scalar to vector of same size"
|
| +gdb_test "print (float2) 3" "can only cast scalar to vector of same size"
|
| +gdb_test "print (double2) 4" "can only cast scalar to vector of same size"
|
| +gdb_test "print (uint4) ia" "can only cast scalar to vector of same size"
|
| +gdb_test "print (int4) -3" "can only cast scalar to vector of same size"
|
| +gdb_test "print (float4) 4" "can only cast scalar to vector of same size"
|
| +
|
| +gdb_test "print i4b = ia" "can only cast scalar to vector of same size"
|
| +gdb_test "print i4a = 3" "can only cast scalar to vector of same size"
|
| +gdb_test "print f4a = fb" "can only cast scalar to vector of same size"
|
| +gdb_test "print f4b = 2" "can only cast scalar to vector of same size"
|
| +
|
| +gdb_test "print c4 + lla" "conversion of scalar to vector involves truncation"
|
| +gdb_test "print i4a + lla" "conversion of scalar to vector involves truncation"
|
| +gdb_test "print lla + c4" "conversion of scalar to vector involves truncation"
|
| +gdb_test "print lla + i4a" "conversion of scalar to vector involves truncation"
|
| +
|
| +gdb_test "print c4 + ib" "\\\$$decimal = \\{2, 3, 4, 5\\}"
|
| gdb_test "print i4a + ib" "\\\$$decimal = \\{3, 5, 9, 17\\}"
|
| +gdb_test "print i4a + 1" "\\\$$decimal = \\{3, 5, 9, 17\\}"
|
| +gdb_test "print 1 + i4a" "\\\$$decimal = \\{3, 5, 9, 17\\}"
|
| gdb_test "print fa - f4b" "\\\$$decimal = \\{1, 0, -6, -2\\}"
|
| +gdb_test "print 2 - f4b" "\\\$$decimal = \\{1, 0, -6, -2\\}"
|
| gdb_test "print f4a * fb" "\\\$$decimal = \\{2, 4, 8, 16\\}"
|
| +gdb_test "print f4a * 1" "\\\$$decimal = \\{2, 4, 8, 16\\}"
|
| gdb_test "print ia / i4b" "\\\$$decimal = \\{2, 1, 0, 0\\}"
|
| +gdb_test "print 2 / i4b" "\\\$$decimal = \\{2, 1, 0, 0\\}"
|
| gdb_test "print i4a % ib" "\\\$$decimal = \\{0, 0, 0, 0\\}"
|
| -
|
| +gdb_test "print i4a % 1" "\\\$$decimal = \\{0, 0, 0, 0\\}"
|
| gdb_test "print ia & i4b" "\\\$$decimal = \\{0, 2, 0, 0\\}"
|
| +gdb_test "print 2 & i4b" "\\\$$decimal = \\{0, 2, 0, 0\\}"
|
| gdb_test "print i4a | ib" "\\\$$decimal = \\{3, 5, 9, 17\\}"
|
| +gdb_test "print i4a | 1" "\\\$$decimal = \\{3, 5, 9, 17\\}"
|
| gdb_test "print ia ^ i4b" "\\\$$decimal = \\{3, 0, 10, 6\\}"
|
| +gdb_test "print 2 ^ i4b" "\\\$$decimal = \\{3, 0, 10, 6\\}"
|
| gdb_test "print i4a << ib" "\\\$$decimal = \\{4, 8, 16, 32\\}"
|
| +gdb_test "print i4a << 1" "\\\$$decimal = \\{4, 8, 16, 32\\}"
|
| gdb_test "print i4a >> ib" "\\\$$decimal = \\{1, 2, 4, 8\\}"
|
| -
|
| -gdb_test "print i4b = ia" "\\\$$decimal = \\{2, 2, 2, 2\\}"
|
| -gdb_test "print i4a = 3" "\\\$$decimal = \\{3, 3, 3, 3\\}"
|
| -gdb_test "print f4a = fb" "\\\$$decimal = \\{1, 1, 1, 1\\}"
|
| -gdb_test "print f4b = 2" "\\\$$decimal = \\{2, 2, 2, 2\\}"
|
| +gdb_test "print i4a >> 1" "\\\$$decimal = \\{1, 2, 4, 8\\}"
|
|
|
| gdb_test "print i4a = \{2, 4, 8, 16\}" "\\\$$decimal = \\{2, 4, 8, 16\\}"
|
| gdb_test "print i4a <<= ib" "\\\$$decimal = \\{4, 8, 16, 32\\}"
|
| @@ -130,3 +161,17 @@ 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"
|
|
|
| +gdb_test "print (double2) f2" "Cannot convert between vector values of different sizes"
|
| +gdb_test "print (int4) c4" "Cannot convert between vector values of different sizes"
|
| +gdb_test "print (char4) i4a" "Cannot convert between vector values of different sizes"
|
| +
|
| +# 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}"
|
|
|