diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 6f6e6baee6..022ce04d00 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2019-06-10 Andrew Burgess + + * valops.c (value_slice): Check for not allocated or not + associated values. + 2019-06-10 Tom de Vries PR gdb/24618 diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 7cc712ba56..33ae2f4925 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2019-06-10 Andrew Burgess + + * gdb.fortran/vla-sizeof.exp: Update expected results. + 2019-06-06 Amos Bird * gdb.base/annota1.exp (thread_switch): Add test for diff --git a/gdb/testsuite/gdb.fortran/vla-sizeof.exp b/gdb/testsuite/gdb.fortran/vla-sizeof.exp index b6fdaebbf5..4fe6938445 100644 --- a/gdb/testsuite/gdb.fortran/vla-sizeof.exp +++ b/gdb/testsuite/gdb.fortran/vla-sizeof.exp @@ -32,7 +32,7 @@ gdb_test "print sizeof(vla1)" " = 0" "print sizeof non-allocated vla1" gdb_test "print sizeof(vla1(3,2,1))" \ "no such vector element \\(vector not allocated\\)" \ "print sizeof non-allocated indexed vla1" -gdb_test "print sizeof(vla1(3:4,2,1))" "slice out of range" \ +gdb_test "print sizeof(vla1(3:4,2,1))" "array not allocated" \ "print sizeof non-allocated sliced vla1" # Try to access value in allocated VLA @@ -49,7 +49,7 @@ gdb_test "print sizeof(pvla)" " = 0" "print sizeof non-associated pvla" gdb_test "print sizeof(pvla(3,2,1))" \ "no such vector element \\(vector not associated\\)" \ "print sizeof non-associated indexed pvla" -gdb_test "print sizeof(pvla(3:4,2,1))" "slice out of range" \ +gdb_test "print sizeof(pvla(3:4,2,1))" "array not associated" \ "print sizeof non-associated sliced pvla" # Try to access values in pointer to VLA and compare them diff --git a/gdb/valops.c b/gdb/valops.c index fd92a4d165..cbf2eccde3 100644 --- a/gdb/valops.c +++ b/gdb/valops.c @@ -3801,6 +3801,11 @@ value_slice (struct value *array, int lowbound, int length) && TYPE_CODE (array_type) != TYPE_CODE_STRING) error (_("cannot take slice of non-array")); + if (type_not_allocated (array_type)) + error (_("array not allocated")); + if (type_not_associated (array_type)) + error (_("array not associated")); + range_type = TYPE_INDEX_TYPE (array_type); if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0) error (_("slice from bad array or bitstring"));