From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2327 invoked by alias); 20 Mar 2016 19:27:37 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 72446 invoked by uid 89); 20 Mar 2016 17:22:27 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM autolearn=ham version=3.3.2 spammy=TWO, Hx-languages-length:2126, 6436, righthand X-HELO: mail-lf0-f48.google.com Received: from Unknown (HELO mail-lf0-f48.google.com) (209.85.215.48) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Sun, 20 Mar 2016 17:20:27 +0000 Received: by mail-lf0-f48.google.com with SMTP id e196so19271261lfg.1 for ; Sun, 20 Mar 2016 10:20:27 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id; bh=GpBqVwy0xii+zFDnxXw1RHWWSeyaOG319fAgiW0i0lM=; b=czh/GkIpvSEv0z2/eHE8C48MrGqmcXkWReguCM7J40tpyjRi0mXUmeAJvwceTu4uUA 0j7Svy3+8enugpfr/l56TCXLv/WBFvMAbO3LkV9GuMycWpN5faA2rHzsyuuPO/Mttzh1 ttM1wXgOFA/2SiKkRDBdkBZiPpBoSE9M5wnWtjX2c4XSbw6VmUDRRSfTy0kM8ITJ6cF6 HVQb66qnP88kERJbyRREWn8EqSC2MlMydlEBRX5UT+Zi6f+aCtyv1CIIkhtCd9B2S1rB EnThFXOPJ9S7LRMovCAmj8NYLA+YqbwF2ZqiOVDkAvfxDNu7m5q8FzWrVEnS1iD2MF54 J26g== X-Gm-Message-State: AD7BkJJVXG5hI7MoCxI3O+aveMCkB1tVqkPUgLP4Tc4ejoe1QTo0yx5ncxPgh8OmS5lXSg== X-Received: by 10.25.213.145 with SMTP id m139mr1333797lfg.96.1458494417285; Sun, 20 Mar 2016 10:20:17 -0700 (PDT) Received: from arch.smware.local (broadband-90-154-70-186.nationalcablenetworks.ru. [90.154.70.186]) by smtp.gmail.com with ESMTPSA id i9sm3887578lfe.31.2016.03.20.10.20.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 20 Mar 2016 10:20:16 -0700 (PDT) From: Artemiy Volkov To: gdb-patches@sourceware.org Cc: Artemiy Volkov Subject: [PATCH] [PR gdb/19820] gdb: allow enumeration constants as second operand of BINOP_REPEAT Date: Sun, 20 Mar 2016 19:27:00 -0000 Message-Id: <1458494257-30862-1-git-send-email-artemiyv@acm.org> X-IsSubscribed: yes X-SW-Source: 2016-03/txt/msg00381.txt.bz2 This patch adds support for TYPE_CODE_ENUM values to be supplied as right-hand side operands 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 } (gdb) A couple of tests is also included in this patch to demonstrate that it is working as intended. gdb/Changelog: 2016-03-20 Artemiy Volkov * eval.c (evaluate_subexp_standard): Allow TYPE_CODE_ENUM to be the type of BINOP_REPEAT's second operand. gdb/testsuite/Changelog: 2016-03-20 Artemiy Volkov * gdb.base/printcmds.exp: Add artificial arrays tests. --- gdb/eval.c | 3 ++- gdb/testsuite/gdb.base/printcmds.exp | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/gdb/eval.c b/gdb/eval.c index 78ad946..5d32a3c 100644 --- a/gdb/eval.c +++ b/gdb/eval.c @@ -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/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})" } -- 2.7.3