From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 34806 invoked by alias); 18 Jun 2019 09:31:03 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 34798 invoked by uid 89); 18 Jun 2019 09:31:03 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-11.4 required=5.0 tests=AWL,BAYES_00,KAM_SHORT,MIME_BASE64_BLANKS,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.1 spammy=Hx-ms-oob-tlc-oobclassifiers:10000 X-HELO: EUR01-HE1-obe.outbound.protection.outlook.com Received: from mail-eopbgr130058.outbound.protection.outlook.com (HELO EUR01-HE1-obe.outbound.protection.outlook.com) (40.107.13.58) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 18 Jun 2019 09:31:01 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rQqQK0OWRSOYQCsiV1QF0RWiKgRBbH3eKSuQtwy95e8=; b=McyINriIotcSnMFEhlGDhNvBuhiibmA2cSY/oI0CXq5lGeQ5rUFDRyfJVmaxv4iL15phA+d7rbRbSr0RZn5Z07TLBNg3aEqozhBO4oxho2G920I+kHh7OOmQvHJHvVxsVUXPnVzqmMwcyiw5/3Z5xSOVldl/QmldWxOp0/3Xrv0= Received: from DB6PR0802MB2133.eurprd08.prod.outlook.com (10.172.227.22) by DB6PR0802MB2455.eurprd08.prod.outlook.com (10.172.251.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1987.12; Tue, 18 Jun 2019 09:30:56 +0000 Received: from DB6PR0802MB2133.eurprd08.prod.outlook.com ([fe80::7c2c:8bc6:920:f845]) by DB6PR0802MB2133.eurprd08.prod.outlook.com ([fe80::7c2c:8bc6:920:f845%6]) with mapi id 15.20.1987.014; Tue, 18 Jun 2019 09:30:56 +0000 From: Alan Hayward To: Pedro Alves CC: Tom Tromey , "gdb-patches@sourceware.org" , nd Subject: Re: [RFC 2/2] Move gdb's xmalloc and friends to new file Date: Tue, 18 Jun 2019 09:31:00 -0000 Message-ID: <43591E27-A08D-4138-BB6E-C09BFEA03524@arm.com> References: <20190530213046.20542-1-tom@tromey.com> <20190530213046.20542-3-tom@tromey.com> <87a7egkszy.fsf@tromey.com> In-Reply-To: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alan.Hayward@arm.com; x-ms-exchange-purlcount: 3 x-ms-oob-tlc-oobclassifiers: OLM:10000; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Alan.Hayward@arm.com X-IsSubscribed: yes X-SW-Source: 2019-06/txt/msg00326.txt.bz2 DQoNCj4gT24gMTcgSnVuIDIwMTksIGF0IDE5OjM3LCBQZWRybyBBbHZlcyA8 cGFsdmVzQHJlZGhhdC5jb20+IHdyb3RlOg0KPiANCj4gT24gNi8xNy8xOSA2 OjQzIFBNLCBUb20gVHJvbWV5IHdyb3RlOg0KPj4+Pj4+PiAiQWxhbiIgPT0g QWxhbiBIYXl3YXJkIDxBbGFuLkhheXdhcmRAYXJtLmNvbT4gd3JpdGVzOg0K Pj4gDQo+PiBBbGFuPiBMb29rcyBsaWtlIHRoaXMgYnJlYWtzIHRoZSBidWls ZGluZyBvZiBhbGxvYy1pcGEubyB3aGVuIHVzaW5nIE1ha2UgMy44MQ0KPj4g QWxhbj4gSeKAmXZlIHRyaWVkIHRoaXMgb24gYSBmZXcgZGlmZmVyZW50IG1h Y2hpbmVzLg0KPj4gDQo+PiBUaGFua3MuDQo+PiANCj4+IE15IGZpcnN0IHRo b3VnaHQgaXMgdGhhdCBtYXliZSB3ZSBzaG91bGQgc2ltcGx5IGRlY2xhcmUg My44MQ0KPj4gdW5zdXBwb3J0ZWQuICBJdCB3YXMgYXBwYXJlbnRseSByZWxl YXNlZCBpbiAyMDA2Og0KPj4gDQo+PiAgICBodHRwczovL3NhdmFubmFoLmdu dS5vcmcvZm9ydW0vZm9ydW0ucGhwP2ZvcnVtX2lkPTQzODANCj4+IA0KPj4g Li4uIHNvIGl0IGlzIHF1aXRlIGFuY2llbnQuDQo+PiANCj4+IElzIHRoZXJl IHNvbWUgY29tcGVsbGluZyByZWFzb24gdG8ga2VlcCBzdXBwb3J0aW5nIGl0 Pw0KPj4gDQo+IA0KPiBJIHRoaW5rIGl0IGRlcGVuZHMgbW9yZSBvbiB3aGF0 IGRpc3RyaWJ1dGlvbnMgc2hpcCB0aGFuIHdoYXQNCj4gdGhlIHJlbGVhc2Ug ZGF0ZSB3YXMuICBFLmcuLCBpZiB5b3UgbG9vayBhcm91bmQgdGhlIGxhc3Qg Y291cGxlDQo+IHN0YWJsZSByZWxlYXNlcyBvZiBwb3B1bGFyIHN0YWJsZSBk aXN0cm9zIChlLmcuLCB1YnVudHUsIGRlYmlhbiwgZmVkb3JhKSwNCj4gd2hp Y2ggR05VIE1ha2UgdmVyc2lvbiBkaWQgdGhleSBzaGlwPyAgSWYgdGhlIEdO VSBNYWtlIHZlcnNpb24gc2hpcHBlZA0KPiBieSBkZWZhdWx0IGlzIG5vdCA0 LngsIGlzIHRoZXJlIGFuIGVhc3kgb3B0aW9uYWwgcnBtL2RlYiBwYWNrYWdl DQo+IGZvciBHTlUgTWFrZSA0LnggYXZhaWxhYmxlPw0KPiANCj4gVGhpcyB3 YXMgdGhlIHNhbWUga2luZCBvZiBpbnZlc3RpZ2F0aW9uIHRoYXQgbGVkIHRv IHRoZSBHQ0MgNC44DQo+IG1pbmltdW0gcmVxdWlyZW1lbnQuDQo+IA0KPiBB bHNvLCBsb29raW5nIGFyb3VuZCB0aGUgR0NDIGNvbXBpbGUgZmFybSBtYWNo aW5lIChpbmNsdWRpbmcgdGhlDQo+IC9vcHQvIGRpcnMpIGZvciB3aGF0IGlz IGF2YWlsYWJsZSBtYXkgYmUgYSBnb29kIGhpbnQvcHJveHkgZm9yDQo+IGRl dGVybWluaW5nIHdoZXRoZXIgYnVtcGluZyB0aGUgcmVxdWlyZW1lbnQgY291 bGQgY2F1c2UgdHJvdWJsZQ0KPiBmb3IgcGVvcGxlLg0KDQoNCkdsaWJjIHJl cXVpcmVzIDQuMDoNCmh0dHBzOi8vd3d3LnNvdXJjZXdhcmUub3JnL21sL2xp YmMtYWxwaGEvMjAxOC0wOC9tc2cwMDAwMy5odG1sDQoJQ2hhbmdlcyB0byBi dWlsZCBhbmQgcnVudGltZSByZXF1aXJlbWVudHM6DQogIAlHTlUgbWFrZSA0 LjAgb3IgbGF0ZXIgaXMgbm93IHJlcXVpcmVkIHRvIGJ1aWxkIGdsaWJjLg0K DQoNCkdDQyBzdGlsbCBhbGxvd3MgMy44Og0KaHR0cHM6Ly9nY2MuZ251Lm9y Zy9pbnN0YWxsL3ByZXJlcXVpc2l0ZXMuaHRtbA0KCUdOVSBtYWtlIHZlcnNp b24gMy44MCAob3IgbGF0ZXIpDQoNCg0KDQpBbGFuLg== >From gdb-patches-return-156853-listarch-gdb-patches=sources.redhat.com@sourceware.org Tue Jun 18 09:36:34 2019 Return-Path: Delivered-To: listarch-gdb-patches@sources.redhat.com Received: (qmail 45064 invoked by alias); 18 Jun 2019 09:36:34 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 45055 invoked by uid 89); 18 Jun 2019 09:36:34 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-24.6 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,SPF_PASS autolearn=ham version=3.3.1 spammy=dies, test-case, UD:dwarf2read.c, dwarf2readc X-HELO: mx1.suse.de Received: from mx2.suse.de (HELO mx1.suse.de) (195.135.220.15) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 18 Jun 2019 09:36:33 +0000 Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 2325AAF6A; Tue, 18 Jun 2019 09:36:31 +0000 (UTC) Date: Tue, 18 Jun 2019 09:36:00 -0000 From: Tom de Vries To: gdb-patches@sourceware.org Cc: Kevin Buettner Subject: [PATCH][gdb] Fix abstract_to_concrete type Message-ID: <20190618093627.GA2117@delia> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.10.1 (2018-07-13) X-IsSubscribed: yes X-SW-Source: 2019-06/txt/msg00327.txt.bz2 Content-length: 2995 Hi, The test-case varval.exp fails here: ... FAIL: gdb.dwarf2/varval.exp: print varval2 ... with boards readnow/cc-with-gdb-index/cc-with-debug-names, as well as if gdb is build with -fsanitize=address -lasan. The problem is that the abstract_to_concrete map in which we track the association of abstract to concrete DIEs (for DW_OP_GNU_variable_value support) has type std::unordered_map>, and the die_info_ptrs that we register in the map may be invalid by the time that we start to lookup DIEs in the map. Fix this by using the sect_offset instead to identify the DIEs in the map. Build and tested on x86_64-linux. OK for trunk? Thanks, - Tom [gdb] Fix abstract_to_concrete type gdb/ChangeLog: 2019-06-17 Tom de Vries PR gdb/24515 * dwarf2read.h (abstract_to_concrete): Change type from std::unordered_map> to std::unordered_map>. * dwarf2read.c (read_variable): Update. (dwarf2_fetch_die_loc_sect_off): Update. --- gdb/dwarf2read.c | 13 +++++++++---- gdb/dwarf2read.h | 2 +- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index a51ae49e87..9cf513b582 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -14288,7 +14288,7 @@ read_variable (struct die_info *die, struct dwarf2_cu *cu) struct die_info *origin_die = follow_die_ref (die, abstract_origin, &origin_cu); dwarf2_per_objfile *dpo = cu->per_cu->dwarf2_per_objfile; - dpo->abstract_to_concrete[origin_die].push_back (die); + dpo->abstract_to_concrete[origin_die->sect_off].push_back (die->sect_off); } } @@ -23256,14 +23256,19 @@ dwarf2_fetch_die_loc_sect_off (sect_offset sect_off, attr = dwarf2_attr (die, DW_AT_location, cu); if (!attr && resolve_abstract_p - && (dwarf2_per_objfile->abstract_to_concrete.find (die) + && (dwarf2_per_objfile->abstract_to_concrete.find (die->sect_off) != dwarf2_per_objfile->abstract_to_concrete.end ())) { CORE_ADDR pc = (*get_frame_pc) (baton); - for (const auto &cand : dwarf2_per_objfile->abstract_to_concrete[die]) + for (const auto &cand_off + : dwarf2_per_objfile->abstract_to_concrete[die->sect_off]) { - if (!cand->parent + struct dwarf2_cu *cand_cu = cu; + struct die_info *cand + = follow_die_offset (cand_off, per_cu->is_dwz, &cand_cu); + if (!cand + || !cand->parent || cand->parent->tag != DW_TAG_subprogram) continue; diff --git a/gdb/dwarf2read.h b/gdb/dwarf2read.h index e8658950e3..776860e454 100644 --- a/gdb/dwarf2read.h +++ b/gdb/dwarf2read.h @@ -256,7 +256,7 @@ public: /* Mapping from abstract origin DIE to concrete DIEs that reference it as DW_AT_abstract_origin. */ - std::unordered_map> + std::unordered_map> abstract_to_concrete; };