diff options
author | Joel Brobecker <brobecker@adacore.com> | 2014-04-11 14:47:15 -0700 |
---|---|---|
committer | Joel Brobecker <brobecker@adacore.com> | 2014-04-11 15:26:21 -0700 |
commit | 6b662e19e420d2ef28f14b985390977080bcd341 (patch) | |
tree | 83e0a2a9763c26c7c93ed7be2e7ef80e52f61dc6 /gdb/testsuite | |
parent | 245a5f0b7429b03566eb3f57a92544218f33393c (diff) | |
download | gdb-6b662e19e420d2ef28f14b985390977080bcd341.zip gdb-6b662e19e420d2ef28f14b985390977080bcd341.tar.gz gdb-6b662e19e420d2ef28f14b985390977080bcd341.tar.bz2 |
Revert the entire VLA series.
This reverts the following patch series, as they cause some regresssions.
commit 37c1ab67a35025d37d42c449deab5f254f9f59da
type: add c99 variable length array support
gdb/
* dwarf2loc.c (dwarf2_locexpr_baton_eval): New function.
(dwarf2_evaluate_property): New function.
* dwarf2loc.h (dwarf2_evaluate_property): New function prototype.
* dwarf2read.c (attr_to_dynamic_prop): New function.
(read_subrange_type): Use attr_to_dynamic_prop to read high bound
attribute.
* gdbtypes.c: Include dwarf2loc.h.
(is_dynamic_type): New function.
(resolve_dynamic_type): New function.
(resolve_dynamic_bounds): New function.
(get_type_length): New function.
(check_typedef): Use get_type_length to compute type length.
* gdbtypes.h (TYPE_HIGH_BOUND_KIND): New macro.
(TYPE_LOW_BOUND_KIND): New macro.
(is_dynamic_type): New function prototype.
* value.c (value_from_contents_and_address): Call resolve_dynamic_type
to resolve dynamic properties of the type. Update comment.
* valops.c (get_value_at, value_at, value_at_lazy): Update comment.
commit 26cb189f8b46dbe7b2d485525329a8919005ca8a
vla: enable sizeof operator to work with variable length arrays
gdb/
* eval.c (evaluate_subexp_for_sizeof) <OP_VAR_VALUE>: If the type
passed to sizeof is dynamic evaluate the argument to compute the length.
commit 04b19544ef6a97b62b2cc4a3170b900e046ab185
vla: enable sizeof operator for indirection
gdb/
* eval.c (evaluate_subexp_for_sizeof) <UNOP_IND>: Create an indirect
value and retrieve the dynamic type size.
commit bcd629a44fff61527430f353cf77e20fe3afc395
vla: update type from newly created value
gdb/
* ada-lang.c (ada_value_primitive_packed_val): Re-fetch type from value.
(ada_template_to_fixed_record_type_1): Likewise.
(ada_to_fixed_type_1): Likewise.
* cp-valprint.c (cp_print_value_fields_rtti): Likewise.
(cp_print_value): Likewise.
* d-valprint.c (dynamic_array_type): Likewise.
* eval.c (evaluate_subexp_with_coercion): Likewise.
* findvar.c (address_of_variable): Likewise.
* jv-valprint.c (java_value_print): Likewise.
* valops.c (value_ind): Likewise.
* value.c (coerce_ref): Likewise.
commit b86138fb0484f42db6cb83abed1e3d0ad2ec4eac
vla: print "variable length" for unresolved dynamic bounds
gdb/
* c-typeprint.c (c_type_print_varspec_suffix): Added
check for not yet resolved high bound. If unresolved, print
"variable length" string to the console instead of random
length.
commit e1969afbd454c09c3aad1990305715f70bc47c3c
vla: support for DW_AT_count
gdb/
* dwarf2read.c (read_subrange_type): Convert DW_AT_count to a dynamic
property and store it as the high bound and flag the range accordingly.
* gdbtypes.c (resolve_dynamic_bounds): If range is flagged as
RANGE_UPPER_BOUND_IS_COUNT assign low + high - 1 as the new high bound.
* gdbtypes.h (enum range_flags): New enum.
(struct range_bounds): Add flags member.
commit 92b09522dc5a93ba4bda3c1c0b3c58264e357c8a
vla: resolve dynamic bounds if value contents is a constant byte-sequence
gdb/
* findvar.c (default_read_var_value): Resolve dynamic bounds if location
points to a constant blob.
commit 3bce82377f683870cc89925ff43aefb7dcce4a77
vla: evaluate operand of sizeof if its type is a vla
gdb/
* eval.c (evaluate_subexp_for_sizeof): Add enum noside argument.
(evaluate_subexp_standard): Pass noside argument.
(evaluate_subexp_for_sizeof) <BINOP_SUBSCRIPT>: Handle subscript case
if noside equals EVAL_NORMAL. If the subscript yields a vla type
re-evaluate subscript operation with EVAL_NORMAL to enable sideffects.
* gdbtypes.c (resolve_dynamic_bounds): Mark bound as evaluated.
* gdbtypes.h (enum range_flags): Add RANGE_EVALUATED case.
gdb/testsuite
* gdb.base/vla-sideeffect.c: New file.
* gdb.base/vla-sideeffect.exp: New file.
commit 504f34326e5ae7c78ebfcdd6ed03c7403b42048b
test: cover subranges with present DW_AT_count attribute
gdb/testsuite/
* gdb.dwarf2/count.exp: New file.
commit 1a237e0ee53bbdee97d72d794b5b42e774cc81c0
test: multi-dimensional c99 vla.
gdb/testsuite/
* gdb.base/vla-multi.c: New file.
* gdb.base/vla-multi.exp: New file.
commit 024e13b46f9c33d151ae82fd9d64c53092fd9313
test: evaluate pointers to C99 vla correctly.
gdb/testsuite/
* gdb.base/vla-ptr.c: New file.
* gdb.base/vla-ptr.exp: New file.
commit c8655f75e2f0fada311be193e3090087a77ec802
test: basic c99 vla tests for C primitives
gdb/testsuite/
* gdb.base/vla-datatypes.c: New file.
* gdb.base/vla-datatypes.exp: New file.
commit 58a84dcf29b735ee776536b4c51ba90b51612b71
test: add mi vla test
gdb/testsuite/
* gdb.mi/mi-vla-c99.exp: New file.
* gdb.mi/vla.c: New file.
Diffstat (limited to 'gdb/testsuite')
-rw-r--r-- | gdb/testsuite/ChangeLog | 21 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/vla-datatypes.c | 86 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/vla-datatypes.exp | 139 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/vla-multi.c | 48 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/vla-multi.exp | 41 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/vla-ptr.c | 58 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/vla-ptr.exp | 41 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/vla-sideeffect.c | 42 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/vla-sideeffect.exp | 89 | ||||
-rw-r--r-- | gdb/testsuite/gdb.dwarf2/count.exp | 125 | ||||
-rw-r--r-- | gdb/testsuite/gdb.mi/mi-vla-c99.exp | 82 | ||||
-rw-r--r-- | gdb/testsuite/gdb.mi/vla.c | 37 |
12 files changed, 21 insertions, 788 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 93f2185..87fd598 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,24 @@ +2014-04-11 Joel Brobecker <brobecker@adacore.com> + + Revert the following changes (regressions): + + * gdb.base/vla-sideeffect.c: New file. + * gdb.base/vla-sideeffect.exp: New file. + + * gdb.dwarf2/count.exp: New file. + + * gdb.base/vla-multi.c: New file. + * gdb.base/vla-multi.exp: New file. + + * gdb.base/vla-ptr.c: New file. + * gdb.base/vla-ptr.exp: New file. + + * gdb.base/vla-datatypes.c: New file. + * gdb.base/vla-datatypes.exp: New file. + + * gdb.mi/mi-vla-c99.exp: New file. + * gdb.mi/vla.c: New file. + 2014-04-11 Keith Seitz <keiths@redhat.com> PR c++/16675 diff --git a/gdb/testsuite/gdb.base/vla-datatypes.c b/gdb/testsuite/gdb.base/vla-datatypes.c deleted file mode 100644 index 51e342e..0000000 --- a/gdb/testsuite/gdb.base/vla-datatypes.c +++ /dev/null @@ -1,86 +0,0 @@ -/* This testcase is part of GDB, the GNU debugger. - - Copyright 2014 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 - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. */ - -#include <stddef.h> -#define SIZE 5 - -struct foo -{ - int a; -}; - -typedef struct bar -{ - int x; - struct foo y; -} BAR; - -void -vla_factory (int n) -{ - int int_vla[n]; - unsigned int unsigned_int_vla[n]; - double double_vla[n]; - float float_vla[n]; - long long_vla[n]; - unsigned long unsigned_long_vla[n]; - char char_vla[n]; - short short_vla[n]; - unsigned short unsigned_short_vla[n]; - unsigned char unsigned_char_vla[n]; - struct foo foo_vla[n]; - BAR bar_vla[n]; - int i; - - for (i = 0; i < n; i++) - { - int_vla[i] = i*2; - unsigned_int_vla[i] = i*2; - double_vla[i] = i/2.0; - float_vla[i] = i/2.0f; - long_vla[i] = i*2; - unsigned_long_vla[i] = i*2; - char_vla[i] = 'A'; - short_vla[i] = i*2; - unsigned_short_vla[i] = i*2; - unsigned_char_vla[i] = 'A'; - foo_vla[i].a = i*2; - bar_vla[i].x = i*2; - bar_vla[i].y.a = i*2; - } - - size_t int_size = sizeof(int_vla); /* vlas_filled */ - size_t uint_size = sizeof(unsigned_int_vla); - size_t double_size = sizeof(double_vla); - size_t float_size = sizeof(float_vla); - size_t long_size = sizeof(long_vla); - size_t char_size = sizeof(char_vla); - size_t short_size = sizeof(short_vla); - size_t ushort_size = sizeof(unsigned_short_vla); - size_t uchar_size = sizeof(unsigned_char_vla); - size_t foo_size = sizeof(foo_vla); - size_t bar_size = sizeof(bar_vla); - - return; /* break_end_of_vla_factory */ -} - -int -main (void) -{ - vla_factory(SIZE); - return 0; -} diff --git a/gdb/testsuite/gdb.base/vla-datatypes.exp b/gdb/testsuite/gdb.base/vla-datatypes.exp deleted file mode 100644 index 8247658..0000000 --- a/gdb/testsuite/gdb.base/vla-datatypes.exp +++ /dev/null @@ -1,139 +0,0 @@ -# Copyright 2014 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 -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -standard_testfile - -if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile}] } { - return -1 -} - -if ![runto_main] { - return -1 -} - -gdb_breakpoint [gdb_get_line_number "vlas_filled"] -gdb_continue_to_breakpoint "vlas_filled" - -# Check the values of VLA's. -gdb_test "print int_vla" " = \\\{0, 2, 4, 6, 8\\\}" \ - "print int_vla" -gdb_test "print unsigned_int_vla" " = \\\{0, 2, 4, 6, 8\\\}" \ - "print unsigned_int_vla" -gdb_test "print double_vla" " = \\\{0, 0.5, 1, 1.5, 2\\\}" \ - "print double_vla" -gdb_test "print float_vla" " = \\\{0, 0.5, 1, 1.5, 2\\\}" \ - "print float_vla" -gdb_test "print long_vla" " = \\\{0, 2, 4, 6, 8\\\}" \ - "print long_vla" -gdb_test "print unsigned_long_vla" " = \\\{0, 2, 4, 6, 8\\\}" \ - "print unsigned_long_vla" -gdb_test "print char_vla" " = \"AAAAA\"" \ - "print char_vla" -gdb_test "print short_vla" " = \\\{0, 2, 4, 6, 8\\\}" \ - "print short_vla" -gdb_test "print unsigned_short_vla" " = \\\{0, 2, 4, 6, 8\\\}" \ - "print unsigned_short_vla" -gdb_test "print unsigned_char_vla" " = \"AAAAA\"" \ - "print unsigned_char_vla" -gdb_test "print foo_vla" \ - "\\\{\\\{a = 0\\\}, \\\{a = 2\\\}, \\\{a = 4\\\}, \\\{a = 6\\\}, \\\{a = 8\\\}\\\}" \ - "print foo_vla" -gdb_test "print bar_vla" \ - "\\\{\\\{x = 0, y = \\\{a = 0\\\}\\\}, \\\{x = 2, y = \\\{a = 2\\\}\\\}, \\\{x = 4, y = \\\{a = 4\\\}\\\}, \\\{x = 6, y = \\\{a = 6\\\}\\\}, \\\{x = 8, y = \\\{a = 8\\\}\\\}\\\}" \ - "print bar_vla" - -# Check whatis of VLA's. -gdb_test "whatis int_vla" "type = int \\\[5\\\]" "whatis int_vla" -gdb_test "whatis unsigned_int_vla" "type = unsigned int \\\[5\\\]" \ - "whatis unsigned_int_vla" -gdb_test "whatis double_vla" "type = double \\\[5\\\]" "whatis double_vla" -gdb_test "whatis float_vla" "type = float \\\[5\\\]" "whatis float_vla" -gdb_test "whatis long_vla" "type = long( int)? \\\[5\\\]" "whatis long_vla" -gdb_test "whatis unsigned_long_vla" \ - "type = (long unsigned int|unsigned long) \\\[5\\\]" \ - "whatis unsigned_long_vla" -gdb_test "whatis char_vla" "type = char \\\[5\\\]" "whatis char_vla" -gdb_test "whatis short_vla" "type = short( int)? \\\[5\\\]" \ - "whatis short_vla" -gdb_test "whatis unsigned_short_vla" \ - "type = (short unsigned int|unsigned short) \\\[5\\\]" \ - "whatis unsigned_short_vla" -gdb_test "whatis unsigned_char_vla" "type = unsigned char \\\[5\\\]" \ - "whatis unsigned_char_vla" -gdb_test "whatis foo_vla" "type = struct foo \\\[5\\\]" "whatis foo_vla" -gdb_test "whatis bar_vla" "type = BAR \\\[5\\\]" "whatis bar_vla" - -# Check ptype of VLA's. -gdb_test "ptype int_vla" "type = int \\\[5\\\]" "ptype int_vla" -gdb_test "ptype unsigned_int_vla" "type = unsigned int \\\[5\\\]" \ - "ptype unsigned_int_vla" -gdb_test "ptype double_vla" "type = double \\\[5\\\]" "ptype double_vla" -gdb_test "ptype float_vla" "type = float \\\[5\\\]" "ptype float_vla" -gdb_test "ptype long_vla" "type = long( int)? \\\[5\\\]" "ptype long_vla" -gdb_test "ptype unsigned_long_vla" "type = unsigned long \\\[5\\\]" \ - "ptype unsigned_long_vla" -gdb_test "ptype char_vla" "type = char \\\[5\\\]" "ptype char_vla" -gdb_test "ptype short_vla" "type = short( int)? \\\[5\\\]" \ - "ptype short_vla" -gdb_test "ptype unsigned_short_vla" "type = unsigned short \\\[5\\\]" \ - "ptype unsigned_short_vla" -gdb_test "ptype unsigned_char_vla" "type = unsigned char \\\[5\\\]" \ - "ptype unsigned_char_vla" -gdb_test "ptype foo_vla" "type = struct foo {\r\n\\s+int a;\r\n} \\\[5\\\]" \ - "ptype foo_vla" -gdb_test "ptype bar_vla" \ - "type = struct bar {\r\n\\s+int x;\r\n\\s+struct foo y;\r\n} \\\[5\\\]" \ - "ptype bar_vla" - -# Check the size of the VLA's. -gdb_breakpoint [gdb_get_line_number "break_end_of_vla_factory"] -gdb_continue_to_breakpoint "break_end_of_vla_factory" -gdb_test "print int_size == sizeof(int_vla)" " = 1" "size of int_vla" -gdb_test "print uint_size == sizeof(unsigned_int_vla)" " = 1" \ - "size of unsigned_int_vla" -gdb_test "print double_size == sizeof(double_vla)" " = 1" \ - "size of double_vla" -gdb_test "print float_size == sizeof(float_vla)" " = 1" \ - "size of float_vla" -gdb_test "print long_size == sizeof(long_vla)" " = 1" \ - "size of long_vla" -gdb_test "print char_size == sizeof(char_vla)" " = 1" \ - "size of char_vla" -gdb_test "print short_size == sizeof(short_vla)" " = 1" \ - "size of short_vla" -gdb_test "print ushort_size == sizeof(unsigned_short_vla)" " = 1" \ - "size of unsigned_short_vla" -gdb_test "print uchar_size == sizeof(unsigned_char_vla)" " = 1" \ - "size of unsigned_char_vla" -gdb_test "print foo_size == sizeof(foo_vla)" " = 1" "size of foo_vla" -gdb_test "print bar_size == sizeof(bar_vla)" " = 1" "size of bar_vla" - -# Check side effects for sizeof argument. -set sizeof_int [get_sizeof "int" 4] -gdb_test_no_output "set variable int_vla\[0\] = 42" \ - "set variable int_vla\[0\] = 42" - -gdb_test "print sizeof (++int_vla\[0\])" " = ${sizeof_int}" \ - "print sizeof (++int_vla\[0\])" -gdb_test "print int_vla\[0\]" " = 42" \ - "print int_vla\[0\] - sizeof no side effects" - -gdb_test "ptype ++int_vla\[0\]" "type = int" "ptype ++int_vla\[0\]" -gdb_test "print int_vla\[0\]" " = 42" \ - "print int_vla\[0\] - ptype no side effects" - -gdb_test "whatis ++int_vla\[0\]" "type = int" "whatis ++int_vla\[0\]" -gdb_test "print int_vla\[0\]" " = 42" \ - "print int_vla\[0\] - whatis no side effects" diff --git a/gdb/testsuite/gdb.base/vla-multi.c b/gdb/testsuite/gdb.base/vla-multi.c deleted file mode 100644 index e5bf9e2..0000000 --- a/gdb/testsuite/gdb.base/vla-multi.c +++ /dev/null @@ -1,48 +0,0 @@ -/* This testcase is part of GDB, the GNU debugger. - - Copyright 2014 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 - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. */ - -void -f1 (int n, int m, int vla_ptr[n][m]) -{ - return; /* f1_breakpoint */ -} - -void -vla_mult (int n, int m) -{ - int vla[n][m]; - int i, j; - - for (i = 0; i < n; i++) - { - for (j = 0; j < m; j++) - { - vla[i][j] = i + j; - } - } - - f1(n, m, vla); /* vla_filled */ - - return; -} - -int -main(void) -{ - vla_mult(2, 2); - return 0; -} diff --git a/gdb/testsuite/gdb.base/vla-multi.exp b/gdb/testsuite/gdb.base/vla-multi.exp deleted file mode 100644 index afc2b61..0000000 --- a/gdb/testsuite/gdb.base/vla-multi.exp +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright 2014 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 -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -standard_testfile - -if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile}] } { - return -1 -} - -if ![runto_main] { - return -1 -} - -set sizeof_int [get_sizeof "int" 4] - -gdb_breakpoint [gdb_get_line_number "vla_filled"] -gdb_continue_to_breakpoint "vla_filled" -gdb_test "print vla" " = \\\{\\\{0, 1\\\}, \\\{1, 2\\\}\\\}" \ - "print vla" -gdb_test "print vla\[0\]\[1\]" " = 1" "print vla\[0\]\[1\]" - -gdb_breakpoint [gdb_get_line_number "f1_breakpoint"] -gdb_continue_to_breakpoint "f1_breakpoint" - -# Calculate the overall size of the vla. -set sizeof_vla [ expr "2" * "$sizeof_int" ] -gdb_test "ptype &vla_ptr" \ - "type = int \\\(\\\*\\\*\\\)\\\[variable length\\\]" \ - "ptype &vla_ptr" diff --git a/gdb/testsuite/gdb.base/vla-ptr.c b/gdb/testsuite/gdb.base/vla-ptr.c deleted file mode 100644 index 54d04a6..0000000 --- a/gdb/testsuite/gdb.base/vla-ptr.c +++ /dev/null @@ -1,58 +0,0 @@ -/* This testcase is part of GDB, the GNU debugger. - - Copyright 2014 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 - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. */ - -#define SIZE 5 - -void -foo (int n, int vla_ptr[n]) -{ - return; /* foo_bp */ -} - -void -bar (int *vla_ptr) -{ - return; /* bar_bp */ -} - -void -vla_func (int n) -{ - int vla[n]; - typedef int typedef_vla[n]; - typedef_vla td_vla; - int i; - - for (i = 0; i < n; i++) - { - vla[i] = 2+i; - td_vla[i] = 4+i; - } - - foo(n, vla); - bar(vla); - - return; /* vla_func_bp */ -} - -int -main (void) -{ - vla_func(SIZE); - - return 0; -} diff --git a/gdb/testsuite/gdb.base/vla-ptr.exp b/gdb/testsuite/gdb.base/vla-ptr.exp deleted file mode 100644 index 56c9d5b..0000000 --- a/gdb/testsuite/gdb.base/vla-ptr.exp +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright 2014 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 -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -standard_testfile - -if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile}] } { - return -1 -} - -if ![runto_main] { - return -1 -} - -set sizeof_int [get_sizeof "int" 4] - -# Check that VLA passed to function (pointer) points to the first element. -gdb_breakpoint [gdb_get_line_number "foo_bp"] -gdb_continue_to_breakpoint "foo_bp" -gdb_test "print vla_ptr" "\\\(int \\\*\\\) $hex" "print vla_ptr (foo)" -gdb_test "print *vla_ptr" " = 2" "print *vla_ptr (foo)" - -gdb_breakpoint [gdb_get_line_number "bar_bp"] -gdb_continue_to_breakpoint "bar_bp" -gdb_test "print vla_ptr" "\\\(int \\\*\\\) $hex" "print vla_ptr (bar)" -gdb_test "print *vla_ptr" " = 2" "print *vla_ptr (bar)" - -gdb_breakpoint [gdb_get_line_number "vla_func_bp"] -gdb_continue_to_breakpoint "vla_func_bp" -gdb_test "print td_vla" " = \\\{4, 5, 6, 7, 8\\\}" "print td_vla" diff --git a/gdb/testsuite/gdb.base/vla-sideeffect.c b/gdb/testsuite/gdb.base/vla-sideeffect.c deleted file mode 100644 index 6e42a64..0000000 --- a/gdb/testsuite/gdb.base/vla-sideeffect.c +++ /dev/null @@ -1,42 +0,0 @@ -/* This testcase is part of GDB, the GNU debugger. - - Copyright 2014 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 - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. */ - -#include <stddef.h> -#define SIZE 10 - -int -main (void) -{ - int n = SIZE; - int i = 0; - int j = 0; - int vla2[SIZE][n]; - int vla1[n]; - - for (i = 0; i < n; i++) - vla1[i] = (i * 2) + n; - - for (i = 0; i < SIZE; i++) - for (j = 0; j < n; j++) - vla2[i][j] = (i + j) + n; - - - i = 0; - j = 0; - - return 0; /* vla-filled */ -} diff --git a/gdb/testsuite/gdb.base/vla-sideeffect.exp b/gdb/testsuite/gdb.base/vla-sideeffect.exp deleted file mode 100644 index 517d78b..0000000 --- a/gdb/testsuite/gdb.base/vla-sideeffect.exp +++ /dev/null @@ -1,89 +0,0 @@ -# Copyright 2014 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 -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -# Tests side-effects of sizeof evaluation. -# Based on gcc/testsuite/gcc.dg/vla-4.c; vla-15.c - -standard_testfile - -if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile}] } { - return -1 -} - -if ![runto_main] { - return -1 -} - -gdb_breakpoint [gdb_get_line_number "vla-filled"] -gdb_continue_to_breakpoint "vla-filled" - -# Check side effects for sizeof argument. -set sizeof_int [get_sizeof "int" 4] -set sizeof_vla [ expr "10" * "$sizeof_int" ] - -gdb_test "print sizeof (vla1\[i++\])" " = ${sizeof_int}" \ - "print sizeof (vla1\[i++\])" -gdb_test "print i" " = 0" \ - "print i - sizeof no side effects" - -gdb_test "print sizeof (++vla1\[0\])" " = ${sizeof_int}" \ - "print sizeof (++vla1\[0\])" -gdb_test "print vla1\[0\]" " = 10" \ - "print vla1\[0\] - sizeof no side effects" - -gdb_test "ptype ++vla1\[0\]" "type = int" "ptype ++vla1\[0\]" -gdb_test "print vla1\[0\]" " = 10" \ - "print vla1\[0\] - ptype no side effects" - -gdb_test "whatis ++vla1\[0\]" "type = int" "whatis ++vla1\[0\]" -gdb_test "print vla1\[0\]" " = 10" \ - "print vla1\[0\] - whatis no side effects" - - -gdb_test "print sizeof (vla2\[i++\])" " = ${sizeof_vla}" \ - "print sizeof (vla2\[i++\])" -gdb_test "print i" " = 1" \ - "print i - sizeof with side effects (1)" - -gdb_test "print sizeof (vla2\[i++ + sizeof(j++)\])" " = ${sizeof_vla}" \ - "print sizeof (vla2\[i++ + sizeof(j++)\])" -gdb_test "print i" " = 2" \ - "print i - sizeof with side effects (2)" -gdb_test "print j" " = 0" \ - "print j - sizeof with no side effects" - -gdb_test "ptype vla2\[i++\]" "type = int \\\[10\\\]" \ - "ptype vla2\[i++\]" -gdb_test "print i" " = 2" \ - "print i - ptype with side effects (1)" - -gdb_test "ptype vla2\[i++ + sizeof(j++)\]" "type = int \\\[10\\\]" \ - "ptype vla2\[i++ + sizeof(j++)\]" -gdb_test "print i" " = 2" \ - "print i - ptype with side effects (2)" -gdb_test "print j" " = 0" \ - "print j - ptype with no side effects" - -gdb_test "whatis vla2\[i++\]" "type = int \\\[10\\\]" \ - "whatis vla2\[i++\]" -gdb_test "print i" " = 2" \ - "print i - whatis with side effects (1)" - -gdb_test "whatis vla2\[i++ + sizeof(j++)\]" "type = int \\\[10\\\]" \ - "whatis vla2\[i++ + sizeof(j++)\]" -gdb_test "print i" " = 2" \ - "print i - whatis with side effects (2)" -gdb_test "print j" " = 0" \ - "print j - whatis with no side effects" diff --git a/gdb/testsuite/gdb.dwarf2/count.exp b/gdb/testsuite/gdb.dwarf2/count.exp deleted file mode 100644 index d52fa62..0000000 --- a/gdb/testsuite/gdb.dwarf2/count.exp +++ /dev/null @@ -1,125 +0,0 @@ -# Copyright 2014 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 -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -# Tests to cover DW_AT_count attribute in subranges. - -load_lib dwarf.exp - -# Only run on targets which support dwarf and gas. -if { ![dwarf2_support] } { - return 0 -} - -standard_testfile main.c count.S - -set asm_file [standard_output_file $srcfile2] -Dwarf::assemble $asm_file { - cu {} { - compile_unit {{language @DW_LANG_C99}} { - declare_labels char_label array_label array_label2 static_array_label - - char_label: base_type { - {name char} - {encoding @DW_ATE_signed} - {byte_size 1 DW_FORM_sdata} - } - - array_label: array_type { - {type :$char_label} - } { - subrange_type { - {count {DW_OP_lit5} SPECIAL_expr} - {type :$char_label} - } - } - - array_label2: array_type { - {type :$char_label} - } { - subrange_type { - {count {DW_OP_lit1} SPECIAL_expr} - {type :$char_label} - } - } - - static_array_label: array_type { - {type :$char_label} - } { - subrange_type { - {count 5 DW_FORM_sdata} - {type :$char_label} - } - } - - DW_TAG_variable { - {name array2} - {type :$array_label2} - {const_value 65 DW_FORM_udata} - } - - DW_TAG_variable { - {name array} - {type :$array_label} - {const_value hello DW_FORM_block1} - } - - DW_TAG_variable { - {name static_array} - {type :$static_array_label} - {const_value world DW_FORM_block1} - } - } - } -} - -if { [gdb_compile ${srcdir}/${subdir}/${srcfile} ${binfile}1.o \ - object {nodebug}] != "" } { - return -1 -} - -if { [gdb_compile $asm_file ${binfile}2.o object {nodebug}] != "" } { - return -1 -} - -if { [gdb_compile [list ${binfile}1.o ${binfile}2.o] \ - "${binfile}" executable {}] != "" } { - return -1 -} - -global GDBFLAGS -set saved_gdbflags $GDBFLAGS -set GDBFLAGS [concat $GDBFLAGS " -readnow"] -clean_restart ${testfile} -set GDBFLAGS $saved_gdbflags - -if ![runto_main] { - perror "couldn't run to main" - return -1 -} - -gdb_test "ptype array" "type = char \\\[5\\\]" "ptype array" -gdb_test "whatis array" "type = char \\\[5\\\]" "whatis array" -gdb_test "print array" " = \"hello\"" "print array" -gdb_test "print sizeof array" " = 5" "print sizeof array" - -gdb_test "ptype array2" "type = char \\\[1\\\]" "ptype array" -gdb_test "whatis array2" "type = char \\\[1\\\]" "whatis array" -gdb_test "print array2" " = \"A\"" "print array" -gdb_test "print sizeof array2" " = 1" "print sizeof array" - -gdb_test "ptype static_array" "type = char \\\[5\\\]" "ptype static_array" -gdb_test "whatis static_array" "type = char \\\[5\\\]" "whatis static_array" -gdb_test "print static_array" " = \"world\"" "print static_array" -gdb_test "print sizeof static_array" " = 5" "print sizeof static_array" diff --git a/gdb/testsuite/gdb.mi/mi-vla-c99.exp b/gdb/testsuite/gdb.mi/mi-vla-c99.exp deleted file mode 100644 index 618e8ab..0000000 --- a/gdb/testsuite/gdb.mi/mi-vla-c99.exp +++ /dev/null @@ -1,82 +0,0 @@ -# Copyright 2014 Free Software Foundation, Inc. - -# Contributed by Intel Corp. <keven.boell@intel.com> -# -# 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 -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -# Verify that, using the MI, we can evaluate a simple C Variable Length -# Array (VLA). - -load_lib mi-support.exp -set MIFLAGS "-i=mi" - -gdb_exit -if [mi_gdb_start] { - continue -} - -standard_testfile vla.c - -if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" \ - "${binfile}" executable {debug}] != "" } { - untested mi-vla-basics.exp - return -1 -} - -mi_delete_breakpoints -mi_gdb_reinitialize_dir $srcdir/$subdir -mi_gdb_load ${binfile} - -set bp_lineno [gdb_get_line_number "vla-filled"] - -mi_create_breakpoint "-t vla.c:$bp_lineno" 1 "del" "func" \ - ".*vla.c" $bp_lineno $hex \ - "insert breakpoint at line $bp_lineno after vla is filled" -mi_run_cmd -mi_expect_stop "breakpoint-hit" "func" "\{name=\"n\",value=\"5\"\}" \ - ".*vla.c" "$bp_lineno" { "" "disp=\"del\"" } \ - "run to breakpoint at line $bp_lineno" - -mi_gdb_test "500-data-evaluate-expression vla" \ - "500\\^done,value=\"\\{0, 1, 2, 3, 4\\}\"" "evaluate complete vla" - -mi_gdb_test "501-data-evaluate-expression vla\[0\]" \ - "501\\^done,value=\"0\"" "evaluate vla\[0\]" - -mi_gdb_test "502-data-evaluate-expression vla\[2\]" \ - "502\\^done,value=\"2\"" "evaluate vla\[2\]" - -mi_gdb_test "503-data-evaluate-expression vla\[4\]" \ - "503\\^done,value=\"4\"" "evaluate vla\[4\]" - -mi_create_varobj_checked vla vla "int \\\[5\\\]" \ - "create local variable vla" - -mi_gdb_test "504-var-info-type vla" \ - "504\\^done,type=\"int \\\[5\\\]\"" \ - "info type variable vla" - -mi_gdb_test "505-var-show-format vla" \ - "505\\^done,format=\"natural\"" \ - "show format variable vla" - -mi_gdb_test "506-var-evaluate-expression vla" \ - "506\\^done,value=\"\\\[5\\\]\"" \ - "eval variable vla" - -mi_list_array_varobj_children "vla" "5" "int" \ - "get children of vla" - -mi_gdb_exit -return 0 diff --git a/gdb/testsuite/gdb.mi/vla.c b/gdb/testsuite/gdb.mi/vla.c deleted file mode 100644 index a26244b..0000000 --- a/gdb/testsuite/gdb.mi/vla.c +++ /dev/null @@ -1,37 +0,0 @@ -/* This testcase is part of GDB, the GNU debugger. - - Contributed by Intel Corp. <keven.boell@intel.com> - - Copyright 2014 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 - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. */ - -int -func (int n) -{ - int vla[n], i; - - for (i = 0; i < n; i++) - vla[i] = i; - - return n; /* vla-filled */ -} - -int -main (void) -{ - func (5); - - return 0; -} |