diff options
author | Artemiy Volkov <artemiyv@acm.org> | 2016-04-01 16:00:59 +0100 |
---|---|---|
committer | Yao Qi <yao.qi@linaro.org> | 2016-04-01 16:00:59 +0100 |
commit | cc63428a4c290772d99863aead457c29ee223dc5 (patch) | |
tree | 4d9a683758827f25d9e1ef8e46afb027591a27ad /gdb | |
parent | 83cda17b6f9d4410a52b680bc5ab7fc1dae29887 (diff) | |
download | gdb-cc63428a4c290772d99863aead457c29ee223dc5.zip gdb-cc63428a4c290772d99863aead457c29ee223dc5.tar.gz gdb-cc63428a4c290772d99863aead457c29ee223dc5.tar.bz2 |
gdb: allow enumeration constants as second operand of BINOP_REPEAT
This patch adds support for TYPE_CODE_ENUM values to be supplied
as right-hand side operand of the BINOP_REPEAT (@) operator. The
following should now work:
enum {
sz = 17
};
int
main ()
{
int arr[sz + 1] = { 0 };
return 0; /* line 9 here */
}
(gdb) b 9
(gdb) r
(gdb) p arr@sz
$1 = {0 <repeats 17 times>}
(gdb)
A couple of tests is also included in this patch to demonstrate that it is
working as intended.
gdb/Changelog:
2016-04-01 Artemiy Volkov <artemiyv@acm.org>
PR gdb/19820
* eval.c (evaluate_subexp_standard): Allow TYPE_CODE_ENUM to be
the type of BINOP_REPEAT's second operand.
gdb/testsuite/Changelog:
2016-04-01 Artemiy Volkov <artemiyv@acm.org>
PR gdb/19820
* gdb.base/printcmds.exp: Add artificial arrays tests.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/eval.c | 3 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/printcmds.exp | 5 |
4 files changed, 18 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index e8bed14..3f40c31 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2016-04-01 Artemiy Volkov <artemiyv@acm.org> + + PR gdb/19820 + * eval.c (evaluate_subexp_standard): Allow TYPE_CODE_ENUM to be + the type of BINOP_REPEAT's second operand. + 2016-03-31 Yichao Yu <yyc1992@gmail.com> PR gdb/19858 @@ -2427,7 +2427,8 @@ evaluate_subexp_standard (struct type *expect_type, if (noside == EVAL_SKIP) goto nosideret; type = check_typedef (value_type (arg2)); - if (TYPE_CODE (type) != TYPE_CODE_INT) + if (TYPE_CODE (type) != TYPE_CODE_INT + && TYPE_CODE (type) != TYPE_CODE_ENUM) error (_("Non-integral right operand for \"@\" operator.")); if (noside == EVAL_AVOID_SIDE_EFFECTS) { diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 083e614..c4338ff 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-04-01 Artemiy Volkov <artemiyv@acm.org> + + PR gdb/19820 + * gdb.base/printcmds.exp: Add artificial arrays tests. + 2016-03-31 Pedro Alves <palves@redhat.com> PR gdb/19858 diff --git a/gdb/testsuite/gdb.base/printcmds.exp b/gdb/testsuite/gdb.base/printcmds.exp index 3c78a53..d599a70 100644 --- a/gdb/testsuite/gdb.base/printcmds.exp +++ b/gdb/testsuite/gdb.base/printcmds.exp @@ -643,6 +643,11 @@ proc test_artificial_arrays {} { gdb_test_escape_braces "p int1dim\[0\]${ctrlv}@2${ctrlv}@3" \ "({{0, 1}, {2, 3}, {4, 5}}|\[Cc\]annot.*)" \ {p int1dim[0]@2@3} + gdb_test_escape_braces "p int1dim\[0\]${ctrlv}@TWO" " = {0, 1}" \ + {p int1dim[0]@TWO} + gdb_test_escape_braces "p int1dim\[0\]${ctrlv}@TWO${ctrlv}@three" \ + "({{0, 1}, {2, 3}, {4, 5}}|\[Cc\]annot.*)" \ + {p int1dim[0]@TWO@three} gdb_test_escape_braces {p/x (short [])0x12345678} \ " = ({0x1234, 0x5678}|{0x5678, 0x1234})" } |