From patchwork Wed Mar 23 21:02:56 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Artemiy Volkov X-Patchwork-Id: 11496 Received: (qmail 72166 invoked by alias); 23 Mar 2016 21:04:26 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 72150 invoked by uid 89); 23 Mar 2016 21:04:26 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.4 required=5.0 tests=AWL, BAYES_00, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 spammy=TWO, Hx-languages-length:2214, 2 X-HELO: mail-lb0-f194.google.com Received: from mail-lb0-f194.google.com (HELO mail-lb0-f194.google.com) (209.85.217.194) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Wed, 23 Mar 2016 21:04:16 +0000 Received: by mail-lb0-f194.google.com with SMTP id vk4so1872077lbb.1 for ; Wed, 23 Mar 2016 14:04:15 -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 :in-reply-to:references; bh=WRH8VHrikxIQEeJ8MrcnsQxGtwCqUm13kh8kqmG5gX8=; b=EQ3HGj/9Tz5LrPtCsr/1jNEqkRF5qK9G+d5ZXMy79v9Y3o5IQstJfcX96L1s0HjyL3 IK1zy7qDVoXhwGSZBQqSDsGAV3QNaps+N1bIlmuyPCmSl3riZyAQLJqZby/v/5mIPa8Z hL9f2X3UZgE1UfkRxzB4Pwsqeq1zwF8Fs0Kgp/c7jb6xJTFehIeK/EVW4M1qN3PfimlH 9rzFn5w8XPoIJvCjFpVr3EOdiVt7poFQfCMQjqBmagO2iCEcxNjgzIFk4KEIuIaL6DbZ /SwVn3eyB9oHtYhfzROrdC2K5o3HM/D9WoiAmrzLOprLP7H/FSSDhXB+jguJlmJigoce jG5A== X-Gm-Message-State: AD7BkJI98O+9g8zgnDKhTJVbb+ILRg0Ce088EYyF+ZB9BlkwDIahIeUjB+HbiN7Xk9pMwA== X-Received: by 10.112.135.39 with SMTP id pp7mr1683366lbb.43.1458767052686; Wed, 23 Mar 2016 14:04:12 -0700 (PDT) Received: from arch.smware.local (broadband-90-154-70-194.nationalcablenetworks.ru. [90.154.70.194]) by smtp.gmail.com with ESMTPSA id aa9sm671512lbc.16.2016.03.23.14.04.11 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 23 Mar 2016 14:04:12 -0700 (PDT) From: Artemiy Volkov To: gdb-patches@sourceware.org Cc: qiyaoltc@gmail.com, Artemiy Volkov Subject: [PATCH v2] [PR gdb/19820] gdb: allow enumeration constants as second operand of BINOP_REPEAT Date: Wed, 23 Mar 2016 14:02:56 -0700 Message-Id: <1458766976-14582-1-git-send-email-artemiyv@acm.org> In-Reply-To: <1458494257-30862-1-git-send-email-artemiyv@acm.org> References: <1458494257-30862-1-git-send-email-artemiyv@acm.org> X-IsSubscribed: yes 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 } (gdb) A couple of tests is also included in this patch to demonstrate that it is working as intended. gdb/Changelog: 2016-03-23 Artemiy Volkov 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-03-23 Artemiy Volkov PR gdb/19820 * gdb.base/printcmds.exp: Add artificial arrays tests. --- v1 -> v2: Add PR # information to the changelog entries. 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})" }