From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id 0Mc5BmjvXWAHRQAAWB0awg (envelope-from ) for ; Fri, 26 Mar 2021 10:27:52 -0400 Received: by simark.ca (Postfix, from userid 112) id 16A5D1EF7C; Fri, 26 Mar 2021 10:27:52 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI,RDNS_DYNAMIC,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 Received: from sourceware.org (ip-8-43-85-97.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 4DEF11E789 for ; Fri, 26 Mar 2021 10:27:51 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 0E6DD386102F; Fri, 26 Mar 2021 14:27:51 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0E6DD386102F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1616768871; bh=8Fwze+MATr5OeniDQfpJHncA0UK6PCk8g1nzVDjzqmA=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=S9ADYLu2VrYcT9D4SDHsluqfUBF7RHk4P2jD+3xZ3XDqkU3ZgaiA/ojmUW7DlG6bp eYBFKCQQ1dr42R7lWv96TwC5JqXDZY3uQYchwRs2TMzW14sMVA11VLkRRJOW87ZOcy 4V6KS86cXFDApkbxtfuto+Ce5uLMvJkAkznB9J9w= Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by sourceware.org (Postfix) with ESMTPS id B272D386102F for ; Fri, 26 Mar 2021 14:27:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org B272D386102F IronPort-SDR: 6c0hiopNKjeKSVyImIoerpOvBUVbMI85u11ceQ8+6+F+meFBHCSuDVUywd18oCArPO+cRWFBgU voNbNetV1I2w== X-IronPort-AV: E=McAfee;i="6000,8403,9935"; a="276298791" X-IronPort-AV: E=Sophos;i="5.81,280,1610438400"; d="scan'208";a="276298791" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Mar 2021 07:27:45 -0700 IronPort-SDR: EZilk1Yw6G07cK+fHiCXOjGYubbB32F0XSKtba64FCYq+CgA+BO1CF7c/+X5JcwQOfnDquTjl3 N6DSro4v1A5A== X-IronPort-AV: E=Sophos;i="5.81,280,1610438400"; d="scan'208";a="416555631" Received: from mulvlfelix.iul.intel.com (HELO localhost) ([172.28.48.31]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Mar 2021 07:27:43 -0700 To: gdb-patches@sourceware.org, felix.willgerodt@intel.com Subject: [PATCH 1/2] gdb: Allow address space qualifier parsing in C++. Date: Fri, 26 Mar 2021 15:26:08 +0100 Message-Id: <20210326142609.245016-2-felix.willgerodt@intel.com> X-Mailer: git-send-email 2.25.4 In-Reply-To: <20210326142609.245016-1-felix.willgerodt@intel.com> References: <20210326142609.245016-1-felix.willgerodt@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Felix Willgerodt via Gdb-patches Reply-To: Felix Willgerodt Errors-To: gdb-patches-bounces@sourceware.org Sender: "Gdb-patches" The goal of this patch is to allow target dependent address space qualifiers in the C++ expression parser. This can be useful for memory examination on targets that actually use different address spaces in hardware without having to deep-dive into implementation details of the whole solution. GDB uses the @ symbol to parse address space qualifiers. The only current user that I am aware of is the __flash support for avr, which was added in "Add support for the __flash qualifier on AVR" (487d975399dfcb2bb2f0998a7d12bd62acdd9fa1) and only works for C. One use-case of the AVR patch is: ~~~ const __flash char data_in_flash = 0xab; int main (void) { const __flash char *pointer_to_flash = &data_in_flash; } ~~~ ~~~ (gdb) print pointer_to_flash $1 = 0x1e8 "\253" (gdb) print/x *pointer_to_flash $2 = 0xab (gdb) x/x pointer_to_flash 0x1e8 : 0xXXXXXXab (gdb) (gdb) p/x *(char* @flash) pointer_to_flash $3 = 0xab ~~~ I want to enable a similar usage of e.g. @local in C++. Before this patch (using "set debug parser on"): ~~~ (gdb) p *(int* @local) 0x1234 (...) Reading a token: Next token is token '@' () Shifting token '@' () Entering state 46 Reading a token: Next token is token UNKNOWN_CPP_NAME (ssym) A syntax error in expression, near `local) &x'. ~~~ After: ~~~ (gdb) p *(int* @local) 0x1234 (...) Reading a token: Next token is token '@' () Shifting token '@' () Entering state 46 Reading a token: Next token is token UNKNOWN_CPP_NAME (ssym) Shifting token UNKNOWN_CPP_NAME (ssym) Entering state 121 Reducing stack by rule 278 (line 1773): $1 = token UNKNOWN_CPP_NAME (ssym) -> $$ = nterm name () Stack now 0 49 52 76 222 337 46 Entering state 167 Reducing stack by rule 131 (line 1225): $1 = token '@' () $2 = nterm name () Unknown address space specifier: "local" ~~~ The "Unknown address space qualifier" is the right behaviour, as I ran this on a target that doesn't have multiple address spaces and therefore obviously no support for such qualifiers. gdb/ChangeLog: 2021-03-19 Felix Willgerodt * c-exp.y (single_qualifier): Handle UNKNOWN_CPP_NAME. --- gdb/c-exp.y | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gdb/c-exp.y b/gdb/c-exp.y index c0e4b494f3d..e2ceb2057a1 100644 --- a/gdb/c-exp.y +++ b/gdb/c-exp.y @@ -1266,6 +1266,11 @@ single_qualifier: cpstate->type_stack.insert (pstate, copy_name ($2.stoken).c_str ()); } + | '@' UNKNOWN_CPP_NAME + { + cpstate->type_stack.insert (pstate, + copy_name ($2.stoken).c_str ()); + } ; qualifier_seq_noopt: -- 2.25.4 Intel Deutschland GmbH Registered Address: Am Campeon 10, 85579 Neubiberg, Germany Tel: +49 89 99 8853-0, www.intel.de Managing Directors: Christin Eisenschmid, Sharon Heck, Tiffany Doon Silva Chairperson of the Supervisory Board: Nicole Lau Registered Office: Munich Commercial Register: Amtsgericht Muenchen HRB 186928