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/eval.c | |
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/eval.c')
-rw-r--r-- | gdb/eval.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -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) { |