aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/testsuite/ChangeLog6
-rw-r--r--gdb/testsuite/gdb.dwarf2/count.exp53
2 files changed, 58 insertions, 1 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index b89633f..91fc9e0 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2020-11-22 Gary Benson <gbenson@redhat.com>
+
+ PR gdb/26905
+ * gdb.dwarf2/count.exp: Add test for an array whose upper bound
+ is defined using a DW_AT_count which references another DIE.
+
2020-11-21 Tom de Vries <tdevries@suse.de>
* gdb.base/vla-ptr.exp: Add XFAIL.
diff --git a/gdb/testsuite/gdb.dwarf2/count.exp b/gdb/testsuite/gdb.dwarf2/count.exp
index 5cefb15..6dcccb5 100644
--- a/gdb/testsuite/gdb.dwarf2/count.exp
+++ b/gdb/testsuite/gdb.dwarf2/count.exp
@@ -28,7 +28,10 @@ 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
+ declare_labels char_label \
+ array_size_type_label long_unsigned_int_label \
+ array_label array_label2 static_array_label \
+ vla_length_label vla_array_label
char_label: base_type {
{name char}
@@ -36,6 +39,18 @@ Dwarf::assemble $asm_file {
{byte_size 1 DW_FORM_sdata}
}
+ array_size_type_label: base_type {
+ {byte_size 8 DW_FORM_sdata}
+ {encoding @DW_ATE_unsigned}
+ {name __ARRAY_SIZE_TYPE__}
+ }
+
+ long_unsigned_int_label: base_type {
+ {byte_size 8 DW_FORM_sdata}
+ {encoding @DW_ATE_unsigned}
+ {name "long unsigned int"}
+ }
+
array_label: array_type {
{type :$char_label}
} {
@@ -63,6 +78,27 @@ Dwarf::assemble $asm_file {
}
}
+ vla_length_label:
+ DW_TAG_variable {
+ {location
+ {
+ lit6
+ stack_value
+ } SPECIAL_expr}
+ {name "__vla_array_length"}
+ {type :$long_unsigned_int_label}
+ {artificial 1 DW_FORM_flag_present}
+ }
+
+ vla_array_label: array_type {
+ {type :$char_label}
+ } {
+ subrange_type {
+ {type :$array_size_type_label}
+ {count :$vla_length_label}
+ }
+ }
+
DW_TAG_variable {
{name array2}
{type :$array_label2}
@@ -80,6 +116,12 @@ Dwarf::assemble $asm_file {
{type :$static_array_label}
{const_value world DW_FORM_block1}
}
+
+ DW_TAG_variable {
+ {name vla_array}
+ {type :$vla_array_label}
+ {const_value saluton DW_FORM_block1}
+ }
}
}
}
@@ -123,3 +165,12 @@ gdb_test "ptype static_array" "type = char \\\[5\\\]"
gdb_test "whatis static_array" "type = char \\\[5\\\]"
gdb_test "print static_array" " = \"world\""
gdb_test "print sizeof static_array" " = 5"
+
+setup_kfail "gdb/26905" *-*-*
+gdb_test "ptype vla_array" "type = char \\\[6\\\]"
+setup_kfail "gdb/26905" *-*-*
+gdb_test "whatis vla_array" "type = char \\\[6\\\]"
+setup_kfail "gdb/26905" *-*-*
+gdb_test "print vla_array" " = \"saluto\""
+setup_kfail "gdb/26905" *-*-*
+gdb_test "print sizeof vla_array" " = 6"