From patchwork Tue May 14 19:29:39 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Tromey X-Patchwork-Id: 32687 Received: (qmail 101196 invoked by alias); 14 May 2019 19:29:45 -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 101187 invoked by uid 89); 14 May 2019 19:29:45 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-22.3 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 autolearn=ham version=3.3.1 spammy=HContent-Transfer-Encoding:8bit X-HELO: rock.gnat.com Received: from rock.gnat.com (HELO rock.gnat.com) (205.232.38.15) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 14 May 2019 19:29:43 +0000 Received: from localhost (localhost.localdomain [127.0.0.1]) by filtered-rock.gnat.com (Postfix) with ESMTP id E883A11633E; Tue, 14 May 2019 15:29:41 -0400 (EDT) Received: from rock.gnat.com ([127.0.0.1]) by localhost (rock.gnat.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id uVkkYuZO6fK5; Tue, 14 May 2019 15:29:41 -0400 (EDT) Received: from murgatroyd.Home (97-122-168-123.hlrn.qwest.net [97.122.168.123]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by rock.gnat.com (Postfix) with ESMTPSA id 939031162F4; Tue, 14 May 2019 15:29:41 -0400 (EDT) From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [PATCH] Fix assertion failure in coerce_unspec_val_to_type Date: Tue, 14 May 2019 13:29:39 -0600 Message-Id: <20190514192939.4138-1-tromey@adacore.com> MIME-Version: 1.0 coerce_unspec_val_to_type does: set_value_address (result, value_address (val)); However, this is only valid for lval_memory. This patch changes this code to only set the address for lval_memory values. This seems like an ordinary oversight in coerce_unspec_val_to_type, and a test case would be difficult to write, so I'm submitting it without a test case. Tested on x86-64 Fedora 29; plus using an Ada program that exhibits the bug (but which cannot be shared). gdb/ChangeLog 2019-05-14 Tom Tromey * ada-lang.c (coerce_unspec_val_to_type): Only set address when value is not lval_memory. --- gdb/ChangeLog | 5 +++++ gdb/ada-lang.c | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index dee3a83f98c..23197f60340 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -672,7 +672,8 @@ coerce_unspec_val_to_type (struct value *val, struct type *type) set_value_component_location (result, val); set_value_bitsize (result, value_bitsize (val)); set_value_bitpos (result, value_bitpos (val)); - set_value_address (result, value_address (val)); + if (VALUE_LVAL (result) == lval_memory) + set_value_address (result, value_address (val)); return result; } }