From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca (simark.ca [158.69.221.121]) by sourceware.org (Postfix) with ESMTPS id 40707385B835 for ; Mon, 30 Mar 2020 16:02:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 40707385B835 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=simark.ca Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=simark@simark.ca Received: from [10.0.0.11] (unknown [192.222.164.54]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by simark.ca (Postfix) with ESMTPSA id CCA8D1E581; Mon, 30 Mar 2020 12:02:50 -0400 (EDT) Subject: Re: [PATCH 17/20] Change die_info methods to check the attribute's form To: Tom Tromey , gdb-patches@sourceware.org References: <20200328192208.11324-1-tom@tromey.com> <20200328192208.11324-18-tom@tromey.com> From: Simon Marchi Message-ID: <331c3446-c38b-49f6-f185-61eabed36502@simark.ca> Date: Mon, 30 Mar 2020 12:02:50 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.6.0 MIME-Version: 1.0 In-Reply-To: <20200328192208.11324-18-tom@tromey.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US-large Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-25.2 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_DMARC_STATUS, SPF_HELO_PASS, SPF_PASS, TXREP, URIBL_CSS, URIBL_CSS_A autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org 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: , X-List-Received-Date: Mon, 30 Mar 2020 16:02:53 -0000 On 2020-03-28 3:22 p.m., Tom Tromey wrote: > This changes two die_info methods to check the form of the attribute > before using it. > > 2020-03-28 Tom Tromey > > * dwarf2/die.h (struct die_info) : Check > the attribute's form. > --- > gdb/ChangeLog | 5 +++++ > gdb/dwarf2/die.h | 14 ++++++++------ > 2 files changed, 13 insertions(+), 6 deletions(-) > > diff --git a/gdb/dwarf2/die.h b/gdb/dwarf2/die.h > index 5522ebdf311..37f83a45a50 100644 > --- a/gdb/dwarf2/die.h > +++ b/gdb/dwarf2/die.h > @@ -39,11 +39,12 @@ struct die_info > gdb::optional addr_base () > { > for (unsigned i = 0; i < num_attrs; ++i) > - if (attrs[i].name == DW_AT_addr_base > - || attrs[i].name == DW_AT_GNU_addr_base) > + if ((attrs[i].name == DW_AT_addr_base > + || attrs[i].name == DW_AT_GNU_addr_base) > + && attrs[i].form_is_unsigned ()) > { > /* If both exist, just use the first one. */ > - return DW_UNSND (&attrs[i]); > + return attrs[i].get_unsigned (); > } > return gdb::optional (); > } A bit like in the previous patch, if there is a DW_AT_addr_base, but it's not of the right form, I think we should emit a warning saying that we ignore it, instead of just ignoring it silently. That's probably out of the scope of this patch though, but I'm just noting it. Simon