From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id 6sHpFbTHImBWZAAAWB0awg (envelope-from ) for ; Tue, 09 Feb 2021 12:34:44 -0500 Received: by simark.ca (Postfix, from userid 112) id 4C2E51EF4F; Tue, 9 Feb 2021 12:34:44 -0500 (EST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-1.1 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 Received: from sourceware.org (server2.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 359761E54D for ; Tue, 9 Feb 2021 12:34:43 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id DD0EA3850426; Tue, 9 Feb 2021 17:34:42 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org DD0EA3850426 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1612892082; bh=xUsNzL6J96pc5bnyFACzTJE7ly+sMC1prKuP84EAAeA=; h=Subject:To:References:Date:In-Reply-To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=uzovy4VnZw9HgdFwLmzBJl7txXs5Zvxs0hpj7W+Bn9MUC3xggOYe4uK7eKviUe7JL hzjoI/GblFykFWkAXoau3FPDwgu9JuQFXgWv5Fih2e3AW5wOnLwJ8hSgYK5cSKZt6R 0eHgcKeEAG1RM3ELyh6/0sDgCpIyulpBvuluopac= Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-eopbgr750043.outbound.protection.outlook.com [40.107.75.43]) by sourceware.org (Postfix) with ESMTPS id E9DCE385802B for ; Tue, 9 Feb 2021 17:34:39 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org E9DCE385802B ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KLtC2EKB1VVriLuOoqzEWGQ18DQ9vmST6m0Uv28M+ELP/w8uF8aY0CLa4I4DGoGADyZtRd9dheDu5vP99nOe7tABwsvliHfmQtdeXtr38ZxBjCMzzc9LgQXAPsW3nqd+Wk2fl/7XXeF+XJhbMLJbboYg8tDIi3bfxKIpU6RmFgOvMLWsTtd2QnKYpRmRhexa6XcKXkGig7ga+dH1alNwO1FEOE1P/ss3sE7BQpkmbd3wVR3Mj21KoCWXNIpd3rmgNgmpY6Umr9PF+OAYGgbFXPQ+GyG7CvvP3zY9ZYNcL3s0pOrQLMf6zWDV6KlADZAIR5p7Y/t+KU5o8yLOtAR62g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xUsNzL6J96pc5bnyFACzTJE7ly+sMC1prKuP84EAAeA=; b=l9y6NTdejwLREHkck2OX1tp+ReMq6TWLhJ+9AznoPupIyNmTJz0rStbgkew9/632qVAA3/hM3OBroP0An84JIwN7ks7qEtlNPXi25DTzgaWpjmEGao17ZCt3ImbISCcYlAbx2kIlNh5ZylSt2D8siHGhZeabhh0vQIjy/2/wWD8wEUGtfQFZFFFcHNKiQOMIIp9BEYm+zhfhC80AvtCH9FBUjZpQc3XDqGjvH9IOarOhB+CANgWdY7I8/f5bIFUsx+lR0ESC1Y7zYDXfukALWcDe0m9FojI4pNGFn2+ThYvuYP8ytFkMyO9dnYqgK51ICrwdav5ei6b66eg4mxe6XQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none Received: from DM6PR12MB2762.namprd12.prod.outlook.com (2603:10b6:5:45::15) by DM6PR12MB4282.namprd12.prod.outlook.com (2603:10b6:5:223::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3825.17; Tue, 9 Feb 2021 17:34:39 +0000 Received: from DM6PR12MB2762.namprd12.prod.outlook.com ([fe80::31d8:f503:f7b2:f44]) by DM6PR12MB2762.namprd12.prod.outlook.com ([fe80::31d8:f503:f7b2:f44%3]) with mapi id 15.20.3825.030; Tue, 9 Feb 2021 17:34:39 +0000 Subject: Re: [PATCH 18/30] Add new classes that model DWARF stack element To: Tom Tromey , Zoran Zaric via Gdb-patches References: <20201207190031.13341-1-Zoran.Zaric@amd.com> <20201207190031.13341-19-Zoran.Zaric@amd.com> <87blcudy4c.fsf@tromey.com> Message-ID: Date: Tue, 9 Feb 2021 17:34:33 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1 In-Reply-To: <87blcudy4c.fsf@tromey.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [2a00:23c7:5a85:6801:b142:b2da:a877:6c3] X-ClientProxiedBy: AM3PR04CA0132.eurprd04.prod.outlook.com (2603:10a6:207::16) To DM6PR12MB2762.namprd12.prod.outlook.com (2603:10b6:5:45::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [IPv6:2a00:23c7:5a85:6801:b142:b2da:a877:6c3] (2a00:23c7:5a85:6801:b142:b2da:a877:6c3) by AM3PR04CA0132.eurprd04.prod.outlook.com (2603:10a6:207::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3825.19 via Frontend Transport; Tue, 9 Feb 2021 17:34:38 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 81adfc11-75ee-4cd5-8ca6-08d8cd20f9f9 X-MS-TrafficTypeDiagnostic: DM6PR12MB4282: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8882; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: m5a/KpfHcg/HbVgfA/5QaGvjMTLhvBLzFRKOdJbjFZFlmzgYgL7bB/Goux1POimTxm6byAWSKr5OvvxMpjXzXkCT7XY51WCNhb3dI8b6kWQ51Rq9/wSDkDj/AAZp8ErzN7xMKa96aI8L9i2EYDP7l1gJQsLBOBFJn/EOlRpITk0dX+m9HoY+751seAhbIj+Xztlp4+JuQUX3OKkIEDn1/QuEfChLk/ZBLup65r5qQUo/Gawm59qWK8g5UoETwLTy/W6+scC2GN9QgQdJe13+RcXPybFc2BVCAm5OkPfaAqEO5cGgZl94JD6NBzmmmAcuxInqKm9LHY7tD7AeoJsxYU1SSwu3x/KbclCShEhN5TwTqbwOh1hK8xPThsXU24EF8g4D4E6k+CdlysDuGMZQIQFEX8ChrH1Q7r6tlAuaCOI98CmH1j5pfOGABXYir76le11MJwG2LnDzzdJxaakdmLBRJbrJlPHWH57+uPSF3GN7GgtmpmEvyHRhjHRu4ZuIAUX66ZuBodaxdIr7f1VSBHQo0LygFOuaRGhT7EYIDCO87QipX6h0WLoJSerM+h6EUh93ozmZs3KHftQIZiLsd6w78PoaQ19/aV0a16rQExo= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR12MB2762.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39860400002)(366004)(136003)(396003)(346002)(376002)(86362001)(66476007)(316002)(31686004)(66556008)(2906002)(110136005)(66946007)(83380400001)(186003)(6666004)(31696002)(36756003)(8676002)(52116002)(16526019)(2616005)(6486002)(478600001)(5660300002)(8936002)(43740500002)(45980500001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?UFhrTFA5ZnlMK3NKMDdzZk1aVjRqbW9wbU9RaGt2S2k0TW5oUmNOQmo5OWpm?= =?utf-8?B?ckdQRFdvcmNCYzdsWHhCa3JlL3hYaTRpcFFYWE1VODIzQkl4OU5ZbGo4TFdN?= =?utf-8?B?bzhLTlZhdVlTMjJLd2V1MVUxRURyWGdnVVMvS3AwSy9SVzVoRWVpWHZvc0tN?= =?utf-8?B?cVg2VGxiUHF6TllTMlp6aWJiUlFNUjJkU0FOL3hSQXdUUWhkRDYzVTRYdEsw?= =?utf-8?B?TG1kMm9yYVRvaGdzM1VDUkMwRFdibDc4Ty9jVmR2QkNSeE11akkrVjlLWm0w?= =?utf-8?B?ak1iNFZMSXBMNGFrdFRGK0h1ZG9tVEc3TWVTbk84SEZHZXlKM3loK25MNjJs?= =?utf-8?B?ak9sRG83T2NLdmdWSldZSSsya0hiOEFHbncveDdFc1Z2SkhONk5MM0tVY3RU?= =?utf-8?B?TnJhWXIrV0VweWZhUm5WdlVJTy8xWE5QZTZBS2JyNmkrUFowWENobTVvaVMy?= =?utf-8?B?OXNVMFBRZWlPdlhIWUVFL3g2V1ZCcUFITCtwemxIRFZmWVNYZTBtTWpJUjlM?= =?utf-8?B?cWVVOEs0VzZYc2NuWG5XOVJIMUZUY0lKK0oxQ0ZlZE0yOXRBVkl0WUlLTmww?= =?utf-8?B?MzMzdjlIWXpoUk5GVFRtZXJaQnZnZ2QwejhXREFFY3FKeDhjd1d2NjVVNFlZ?= =?utf-8?B?eFEyVFhabCttbVhLd3BCSUJHSzZhVFNBVnBLMVNZdmtuMUJwNFZNL0k3MVFi?= =?utf-8?B?c2hNWEt6a0pmSlh4aVFkcTlXNisrdGkxazNBSkEzT1FOOW9wZVNOVVRVd2RC?= =?utf-8?B?cmtrSjJ0VEh4Sk5JWUZneCtlcnUzYTFTRkpJTVk4Z2VJOEUzVzlhVGhOTUFP?= =?utf-8?B?MmZnMVROQlVFZHUwdVlrcVZOa0g2N2xyandTYWJuRUQyVk9sMDVtY1FPa2l3?= =?utf-8?B?UHRyb2drSWRHbXMrVm9rZWVMTHdaSTRuY2NwdWY1aUh4NmRIMlY4dndhdVdu?= =?utf-8?B?ODRvUHNybitvKzBPWUVCNXZYLy90T2Q1dzlyUTAyQ1d1Z3BFRnpiaWZPUHFX?= =?utf-8?B?WmZNRUU0cE5kRnRUbEw4RnFqMHBuK3NzekpHOWYrWlhUUllCZ282WURqU2Qw?= =?utf-8?B?a3doaWJFYUxYQkd5clRuWjVWT0pkOERRcEd6V2RTVEJxa3owajNGNVpCWXow?= =?utf-8?B?YUZuMmFvWlhoYk9ueGFzWVhZOS9hNmRTcWRLSHZRN0pQMWFyQXdDdjI2cnZs?= =?utf-8?B?YkdsbnozaXVjK1phN3VtSUoxeS9mM05HNU10M0NhM1E3dEw5RU5UbVN2MUZN?= =?utf-8?B?TnVTZCtybUhBQ1ZFR3QyQTg4YWxiaS9JWmJLS0hNMUJabXpZeC9EblNObzhr?= =?utf-8?B?ZS9wVnJFNFdLay9xVVFyOFpBTnUwTnYyakI3MTUxMTZYcS9GVEx1d0ZZeFBC?= =?utf-8?B?eWEwMHkzb1JVQzJlSXc3NTg1TUVCVE5DazFOR2E4eXRGTzh5T3NFZnM5M24r?= =?utf-8?B?ZVlkZ1dPM3dHUmo4QXlkaUZkV0Q3WUFkdloxN29jaDRjVUN1NE9xZHpOM3ll?= =?utf-8?B?cTVQZXVVUnhKeFlqeHg5SGRrWHNDNlBIWi9qVER0ZlNMK29mb2NRRVpDbVhB?= =?utf-8?B?TVdmcWNFb1FZVC93YitmaHdmdytWM2VqZFZyMm5TamVPZmFqMEJqRWVTL0dT?= =?utf-8?B?Sm8yVEl0dC9sbDVGN1VPNzljbTZqN2FQeXJEelUwMWNHZUdMd2RjUGNCamtJ?= =?utf-8?B?amQyZzFHTW9CV2c5cFNuQjhyOXhKeEZyTDhhck95cUw2UGdSbmc0ekNWZ2ZD?= =?utf-8?B?STI1VlBROFJqNGU4dk5pc3YxR1JRbnhhUG1WRmozNEM2MUJKazVIY3VOckN5?= =?utf-8?B?U0gva0w5ckVMNGJBL0plZ0FINE9nS2IxcW14SlBxSmU3TWRxL2VuVGNtZ21Y?= =?utf-8?Q?HZurdsosFt4n5?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 81adfc11-75ee-4cd5-8ca6-08d8cd20f9f9 X-MS-Exchange-CrossTenant-AuthSource: DM6PR12MB2762.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Feb 2021 17:34:39.0893 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: oR4esRqWsmSck8P0pfyaNiG1FrxyOWSzzYmt38rFKbJplB2k+N+rvCKgu6sO58Vbs2Tul4BL1lzqazJPxuFesw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4282 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: Zoran Zaric via Gdb-patches Reply-To: Zoran Zaric Errors-To: gdb-patches-bounces@sourceware.org Sender: "Gdb-patches" Thank you Tom for the review. > > Zoran> +class dwarf_entry : public refcounted_object > > I guess reference counting is needed due to how dwarf_composite works. > I suppose it's impossible to create a reference loop. But I wonder if > ownership transfer is more correct and reference counting is not needed. Right, I can look into this for the next version. > > Zoran> +class dwarf_implicit : public dwarf_location > Zoran> +{ > Zoran> +public: > Zoran> + > Zoran> + dwarf_implicit (const gdb_byte* contents, size_t size, > Zoran> + enum bfd_endian byte_order) > Zoran> + { > Zoran> + m_contents.reset ((gdb_byte *) xzalloc (size)); > > This could just be a std::vector and m_size could be removed. Agreed. > > Zoran> +class dwarf_composite : public dwarf_location > Zoran> +{ > Zoran> + > Zoran> + /* A composite location gets detached from its factory object for > Zoran> + the purpose of lval_computed resolution, which means that it > Zoran> + needs to take care of garbage collecting its pieces. */ > Zoran> + ~dwarf_composite () override > Zoran> + { > Zoran> + for (unsigned int i = 0; i < m_pieces.size (); i++) > Zoran> + { > Zoran> + dwarf_location* location = m_pieces[i].m_location; > Zoran> + > Zoran> + location->decref (); > Zoran> + > Zoran> + if (location->refcount () == 0) > Zoran> + delete location; > > It's better to use the reference-counting smart pointer abstraction so > that manual management is not needed. Agreed. > > Zoran> + void add_piece (dwarf_location* location, ULONGEST bit_size) > > "dwarf_location *location" - this little typo appears in a few spots. > Perhaps this should take a ref-pointer&& (I forget exactly how the type > is spelled, you'll probably want a typedef anyway) to indicate transfer, > or a "const .. &" and then use new_reference. I wasn't sure about using the smart pointers in the code, but I can look into it for the next version. > > Zoran> + class piece > Zoran> + { > Zoran> + public: > Zoran> + piece (dwarf_location *location, ULONGEST size) > Zoran> + : m_location (location), > Zoran> + m_size (size) > Zoran> + {} > Zoran> + > Zoran> + dwarf_location *m_location; > > This could have the smart pointer type. > > Tom > Same comment as before. Zoran