From patchwork Sat Jan 20 21:34:27 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Burgess X-Patchwork-Id: 25473 Received: (qmail 76434 invoked by alias); 20 Jan 2018 21:34:44 -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 76301 invoked by uid 89); 20 Jan 2018 21:34:43 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-25.5 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_PASS, URIBL_RED autolearn=ham version=3.3.2 spammy= X-HELO: mail-wr0-f180.google.com Received: from mail-wr0-f180.google.com (HELO mail-wr0-f180.google.com) (209.85.128.180) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sat, 20 Jan 2018 21:34:41 +0000 Received: by mail-wr0-f180.google.com with SMTP id 36so4661753wrh.1 for ; Sat, 20 Jan 2018 13:34:41 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=PpwRN/hjIvU7VMOgoIbhRWmzYXS6nMDXJh/zMVTfXd0=; b=fVf//NhHnea0lEwxnQHxGWWEEZ8mXBsPzjs+ct6s57y/PF21nrfPFS1I3X6rB+dwwt p1/4BcjT1dWFdpd0C3LAnxWx7c/YcUlPGuCHRgrQjEiIRwM3S5rM05NgTCqOzU+/tgd0 BKn+Q2dOg/1edjMP7tdBa0v24II/0Vv1G0cvcDZ6/u/gXMMrY61kuMOBli54nF8qPgOa 4jtdI0606yJA/bnweJQ2/sRiOWN+J/GQUpOYfTbRQuqzpdP4Uxq/OmxhSVTHjtwq7UJU cq3Wr9SJiwDQziv7upTVPXe0fjlx1tnN67gobCXIPtgsalsrDBsQ+epKhcE0Ryq3O8IZ RkPg== X-Gm-Message-State: AKwxytcXd9QB9cF/nIckxRBo+WChaVAtVYzAtvx4F0Vi8/MBHZUL7t+J gx5Ms9pSMLmE1jwdeHbn1Mf4hO9t X-Google-Smtp-Source: AH8x227vKOM91fUBu4r1pSeMANkXHb8zINmUykJOX+32OROr92iW+3e2qxIdw+2FGMX11i8jN4m+zw== X-Received: by 10.223.135.236 with SMTP id c41mr2249090wrc.7.1516484079154; Sat, 20 Jan 2018 13:34:39 -0800 (PST) Received: from localhost (host86-164-103-151.range86-164.btcentralplus.com. [86.164.103.151]) by smtp.gmail.com with ESMTPSA id a73sm22732356wrc.53.2018.01.20.13.34.38 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sat, 20 Jan 2018 13:34:38 -0800 (PST) From: Andrew Burgess To: gdb-patches@sourceware.org Cc: donb@codesourcery.com, simark@simark.ca, palves@redhat.com, Andrew Burgess Subject: [PATCHv6 5/5] gdb: Don't store a thread-id for floating varobj Date: Sat, 20 Jan 2018 21:34:27 +0000 Message-Id: <9c1cb066422360ffa2dbe32e4958a0d596d5a421.1516483641.git.andrew.burgess@embecosm.com> In-Reply-To: References: In-Reply-To: References: X-IsSubscribed: yes When creating a varobj with -var-create a user can create either fixed varobj, or floating varobj. A fixed varobj will always be evaluated within the thread/frame/block in which the varobj was created, if that thread/frame/block is no longer available then the varobj is considered out of scope. A floating varobj will always be evaluated within the current thread/frame/block. Despite never using them GDB was storing the thread/frame/block into a floating varobj, and the thread-id would then be displayed when GDB reported on the state of the varobj, this could confuse a user into thinking that the thread-id was relevant. This commit prevents GDB storing the thread/frame/block onto floating varobj, and updates the few tests where this impacts the results. gdb/ChangeLog: * varobj.c (varobj_create): Don't set valid_block when creating a floating varobj. gdb/testsuite/ChangeLog: * gdb.python/py-mi.exp: Don't expect a thread-id for floating varobj. * gdb.mi/mi-var-create-rtti.exp: Likewise. --- gdb/ChangeLog | 5 +++++ gdb/testsuite/ChangeLog | 6 ++++++ gdb/testsuite/gdb.mi/mi-var-create-rtti.exp | 2 +- gdb/testsuite/gdb.python/py-mi.exp | 12 ++++++------ gdb/varobj.c | 3 ++- 5 files changed, 20 insertions(+), 8 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 23b386e6b07..16a7c683040 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2017-10-19 Andrew Burgess + + * varobj.c (varobj_create): Don't set valid_block when creating a + floating varobj. + 2017-10-19 Andrew Burgess * varobj.c (varobj_create): Remove out of date comment. diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index c65c4f7d328..93eb650c4d3 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2017-10-19 Andrew Burgess + + * gdb.python/py-mi.exp: Don't expect a thread-id for floating + varobj. + * gdb.mi/mi-var-create-rtti.exp: Likewise. + 2017-10-19 Don Breazeal Andrew Burgess diff --git a/gdb/testsuite/gdb.mi/mi-var-create-rtti.exp b/gdb/testsuite/gdb.mi/mi-var-create-rtti.exp index 9ea5784bcad..a5310ecc819 100644 --- a/gdb/testsuite/gdb.mi/mi-var-create-rtti.exp +++ b/gdb/testsuite/gdb.mi/mi-var-create-rtti.exp @@ -52,6 +52,6 @@ mi_gdb_test "-var-create sp1 * ((void*)\$sp)" \ "\\^done,name=\"sp1\",numchild=\"0\",value=\"$hex\",type=\"void \\*\",thread-id=\"$decimal\",has_more=\"0\"" \ "-var-create sp1 * \$sp" mi_gdb_test "-var-create sp2 @ ((void*)\$sp)" \ - "\\^done,name=\"sp2\",numchild=\"0\",value=\"$hex\",type=\"void \\*\",thread-id=\"$decimal\",has_more=\"0\"" \ + "\\^done,name=\"sp2\",numchild=\"0\",value=\"$hex\",type=\"void \\*\",has_more=\"0\"" \ "-var-create sp2 @ \$sp" gdb_exit diff --git a/gdb/testsuite/gdb.python/py-mi.exp b/gdb/testsuite/gdb.python/py-mi.exp index 0ecc5dfa13d..bbe1266724a 100644 --- a/gdb/testsuite/gdb.python/py-mi.exp +++ b/gdb/testsuite/gdb.python/py-mi.exp @@ -101,7 +101,7 @@ mi_varobj_update_dynamic container "varobj update 1" { type_changed false new_num_children 1 dynamic 1 has_more 0 } { } { - { name {container.\[0\]} exp {\[0\]} numchild 0 type int thread-id 1 } + { name {container.\[0\]} exp {\[0\]} numchild 0 type int } } mi_next "next over update 2" @@ -110,7 +110,7 @@ mi_varobj_update_dynamic container "varobj update 2" { type_changed false new_num_children 2 dynamic 1 has_more 0 } { } { - { name {container.\[1\]} exp {\[1\]} numchild 0 type int thread-id 1 } + { name {container.\[1\]} exp {\[1\]} numchild 0 type int } } mi_gdb_test "-var-set-visualizer container None" \ @@ -129,8 +129,8 @@ mi_varobj_update_dynamic container "varobj update after choosing default" { type_changed false new_num_children 2 dynamic 1 has_more 0 } { } { - { name {container.\[0\]} exp {\[0\]} numchild 0 type int thread-id 1 } - { name {container.\[1\]} exp {\[1\]} numchild 0 type int thread-id 1 } + { name {container.\[0\]} exp {\[0\]} numchild 0 type int } + { name {container.\[1\]} exp {\[1\]} numchild 0 type int } } mi_gdb_test "-var-set-visualizer container ContainerPrinter" \ @@ -142,8 +142,8 @@ mi_varobj_update_dynamic container \ type_changed false new_num_children 2 dynamic 1 has_more 0 } { } { - { name {container.\[0\]} exp {\[0\]} numchild 0 type int thread-id 1 } - { name {container.\[1\]} exp {\[1\]} numchild 0 type int thread-id 1 } + { name {container.\[0\]} exp {\[0\]} numchild 0 type int } + { name {container.\[1\]} exp {\[1\]} numchild 0 type int } } mi_list_varobj_children_range container 1 2 2 { diff --git a/gdb/varobj.c b/gdb/varobj.c index 523f74613bf..b6a2d8f3696 100644 --- a/gdb/varobj.c +++ b/gdb/varobj.c @@ -336,7 +336,8 @@ varobj_create (const char *objname, } var->format = variable_default_display (var.get ()); - var->root->valid_block = innermost_block.block (); + var->root->valid_block = + var->root->floating ? NULL : innermost_block.block (); var->name = expression; /* For a root var, the name and the expr are the same. */ var->path_expr = expression;