From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 113024 invoked by alias); 18 Jan 2018 16:56:46 -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 113008 invoked by uid 89); 18 Jan 2018 16:56:45 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-7.7 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_2,SPF_PASS autolearn=ham version=3.3.2 spammy=satisfying, seven X-HELO: sesbmg22.ericsson.net Received: from sesbmg22.ericsson.net (HELO sesbmg22.ericsson.net) (193.180.251.48) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 18 Jan 2018 16:56:43 +0000 Received: from ESESSHC003.ericsson.se (Unknown_Domain [153.88.183.27]) by sesbmg22.ericsson.net (Symantec Mail Security) with SMTP id 9D.1F.27591.8C1D06A5; Thu, 18 Jan 2018 17:56:40 +0100 (CET) Received: from EUR01-DB5-obe.outbound.protection.outlook.com (153.88.183.145) by oa.msg.ericsson.com (153.88.183.27) with Microsoft SMTP Server (TLS) id 14.3.352.0; Thu, 18 Jan 2018 17:56:39 +0100 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=simon.marchi@ericsson.com; Received: from [142.133.62.3] (192.75.88.130) by DBXPR07MB320.eurprd07.prod.outlook.com (2a01:111:e400:941d::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.428.9; Thu, 18 Jan 2018 16:56:38 +0000 Subject: Re: [RFC 00/15] Remove regcache::m_readonly_p To: Yao Qi , References: <1512125286-29788-1-git-send-email-yao.qi@linaro.org> <86fu75g4l5.fsf@gmail.com> From: Simon Marchi Message-ID: Date: Thu, 18 Jan 2018 16:56:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 MIME-Version: 1.0 In-Reply-To: <86fu75g4l5.fsf@gmail.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-ClientProxiedBy: CY4PR18CA0064.namprd18.prod.outlook.com (2603:10b6:903:13f::26) To DBXPR07MB320.eurprd07.prod.outlook.com (2a01:111:e400:941d::21) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2c6cea1a-ad2f-4024-ce68-08d55e94715d X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(7020095)(4652020)(5600026)(4604075)(4534125)(4602075)(4627221)(201703031133081)(201702281549075)(2017052603307)(7153060)(7193020);SRVR:DBXPR07MB320; X-Microsoft-Exchange-Diagnostics: 1;DBXPR07MB320;3:vuxpXrJaBr2qIyddERPcTzL6pWJ8bkmoGe4munGlpnNeu2RfLhnZdfNOwnuQz00d3BongEWcIDf3ujv91va0iQldqA434T9wM/MldnIaWF6bzTQWCZkkS0hV1sRiChtwV002wL1P68lIvdAyYVxNtFs9dLvj2nQRr5/ANioKYxiiIpi1v467Dt1Hd9LhXDqjFKp0m5dUgHQVH4h7crsWqhxt2zN1ReXtsmjDzf9fbuBmIsdXWdydMH2TQqtiZsJJ;25:sb45sd7lKfGVWmFNSOX7M+/ZlqjCw1n+EIqhtCHiZZ3idkQzaf+biLPYOBGdow3JyIQOTpudV5KN9/p/GLbgNWTBiE7oQdf1y86w+hYlugtONqY4SZ+j2ISe+nzyr8KQK+8PZRp9XYjg9BGuvxE5D2PvGPkkPtl9clhAjdtalh6kOsH6yS9RlkdN7EIxq/JZwjzksxAEE5HLLqoDuPWySrdOgTZKVh2IiE3jT+pq/eVOUZNLYmU1exM7kgbu4IsNHKtrWGdwvlDFqJmMTWOcJtPrK5xK5fYXW05UJKmHt5hi8LAYGkJ9/SQiK2FcnkTJCqYmqR5CJex5uh715x7rxg==;31:q1SYjNr3Q8RzPRm3ZSWu56VcZ5AiZOxarw7YhJ3rWRa3BqfK5RvrI9SUbegSL1FPLCwzprbltdxYAINpv04Ad0FNcp77Gr1FJYKgksdDd4nkjlRqxCYTXEqgRwuvHCUmcEV0dmoiUp+bx+iyA5KV33/Q1NRJ3oe777m7kKIxyId2Z0jJaNfAATx77vzz2GItG3iButLQ5D3cCPDQM13fKHYKnlyO0WWKGI6+/6uYRfg= X-MS-TrafficTypeDiagnostic: DBXPR07MB320: X-Microsoft-Exchange-Diagnostics: 1;DBXPR07MB320;20:LmUhxLt0CU9206z09a5ARZwJ302xhnJhS1F7akio+oVfcMo++qdCnA+sSBGNCqCA6ifCPmAFPfUO46pEJlihKEHjppKYsMokD4vthuYRgv6lK5msdJMPYHG4LRR8LUhp3KHwEPZDqn32pGxy+ZRwVmMbu+ix9TlBgpDZRC9j4Lhlo41zntqD+RaJNLz7s2PHnCMZ+wjpwCdimt4hpNOPTBvIxhKKJNmKtq2LmiLQgPTryxx+L/Rg/v/xNbfeypzRBWEJO2qMeLeEmMxsacS+JUQy2dWlkGyrK2kh10zMFB9dUSrvyn6BWCDPVFymZdOt3VFJt4LCaiaSrCtC2ca0OJMglZCI5zDyZm97q+mKgMB81hyDDVM6Dtu4wgUoKFUMBvQ0f5WMtWKSxF2K1c0bx/9k7ZkXuj5hwmksOUVlkETGHa+D4IV4wLvu2M5ITMJebZKg4IL+P6bVXWlJH/OF+KeF4rBXdq1oAN/pHEAQ/l3awquZLWWm6WaL6KX+vq/6;4:3/ypaaU5zX1t0yOMFy2VL4QJY1BAkdyqd4JNnpVANZKr/O/KOItW99IoszT9aFFxjUftM6K7jCb+RVrfxYfMo6WXkmLUS8ao7HGhoNCKPdIw+RIR0o59UBUp/jQx2+zpKcdAuYZ5cKkFAec0lWbKuueldCJLU5uQzK0/8JnSyFKq6ig6mdvLr37aQu4n7JFredV14MMBQSbREaBAkuOrbD+lqJR4aNgL17cbFqIId6HiA+YtA4wxgo79QC+ELVNi1onOtVXu2Y9ydTOme0+nnMWJELxdnrta0gQIieJZiJuzpPDXqOMM3j5oS5L7AHF2 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(85827821059158); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040470)(2401047)(8121501046)(5005006)(10201501046)(3002001)(93006095)(93001095)(3231023)(2400064)(944501161)(6041268)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(6072148)(201708071742011);SRVR:DBXPR07MB320;BCL:0;PCL:0;RULEID:(100000803101)(100110400095);SRVR:DBXPR07MB320; X-Forefront-PRVS: 05568D1FF7 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6049001)(396003)(39380400002)(366004)(376002)(39860400002)(346002)(377424004)(199004)(189003)(8936002)(230700001)(31696002)(5660300001)(31686004)(305945005)(23676004)(52146003)(2486003)(52116002)(7736002)(76176011)(53936002)(229853002)(105586002)(68736007)(3846002)(2950100002)(386003)(6486002)(58126008)(53546011)(65826007)(16526018)(6246003)(16576012)(316002)(36756003)(26005)(2906002)(478600001)(64126003)(83506002)(6666003)(49976009)(66066001)(65806001)(50466002)(97736004)(81156014)(47776003)(86362001)(8676002)(81166006)(39060400002)(106356001)(25786009)(6116002)(65956001)(78286006);DIR:OUT;SFP:1101;SCL:1;SRVR:DBXPR07MB320;H:[142.133.62.3];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; Received-SPF: None (protection.outlook.com: ericsson.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtEQlhQUjA3TUIzMjA7MjM6Q1BsVVl5VVJjNWlvRTRhbHhsMDR2R3MyNlY4?= =?utf-8?B?Wk1WSEFmTHlxSnI2bzdQWk1LQ2dkTWRnRjVjc2hkR1VqajJyOVpGeWRHa0ty?= =?utf-8?B?ZFpvaEN4SUxtVEFEd3dHa2xnWGc2Ky9FK2RLTjRVdzR2TjQ0czQyZFR4M2RO?= =?utf-8?B?M0cxZlJLVTRmdmtSM1pYWFFabiszSHVtM1VaM2RLcTBzRWtjU1dSRFF0ZVFP?= =?utf-8?B?Zm9ZM0Z2eWF3Z0FFZGtLZWhMbGxHaEF6eHRxQTFqeU5NVnFoTkRqcGFncG5Z?= =?utf-8?B?elhXa3laKzI1d0U1YnplWmVRNzU0emRHeTloTWNtSHJsWjFRMjJCUTlaOENK?= =?utf-8?B?TW1LWmRQbUs0THpROWxrL0VxZEJ2OG8wTmoyRjNCZlFvOEFxYS9VZVJUMmlM?= =?utf-8?B?TlViYlhMVWdBZTN6Rk0yTm02WE5EZ01LeW9WUmViL1hRNWI2UDltSElKV2xJ?= =?utf-8?B?WlJISXllY1hPVllOeFFpZmp5MXBYVU1GeU8yVlpvT25FRWVkQ0oyZHJiaGJK?= =?utf-8?B?cmhiNXp1MS9uYzJQN1J3K21BNW80dG03aithU2haUjdJZHNMTFlScklpMTNv?= =?utf-8?B?QnMvS2doa2JJUzZpbUtTZFk0QVVxdmZGcmljdkkwaXBVbktwQnFDbm0ydlEz?= =?utf-8?B?Smk3dmw0OWlQRTRLbWZKc3hPekYxYTY5SGlpUG0yN0Q5Z3J0cWZ6cTc5OUtq?= =?utf-8?B?QlR4ZnErRndKaGlDZEpCR3dCM1JTYURoL3BJc1c3RGZVL2JnTXFBUDZYVXpY?= =?utf-8?B?NTJaWjBSWVZ5Z3NRVmVwVEdkYjJMWVN5RTlISVVpd3Y2WXJHZHhmSndtQmsx?= =?utf-8?B?UW5JS3dnRWhkajlYa1hpcUQyT2VMRHlyTW9zWWZZQXJqemFsa2UySmNvUzd5?= =?utf-8?B?T2RGZE1xa2tqbHIwR2pQOHh1RFhJMndaMXYvU1JHVEorRWpHUWVJdUFpVVc5?= =?utf-8?B?ek84aTRvMWpKcmE4Qnp5MEovME95QzdOSEdROXZtN21pcTAyanM1NHpabG1Z?= =?utf-8?B?TkgvK1pGWHgvS2lZWFpHUFc1bFllN1l1WmRpUzlJb3F3ajdYd09SY0UzVXl2?= =?utf-8?B?aTJoeWsxZHJqQ3p2V2NmQlhuQkNVajNmbEhGcXhkSGhqMXppMkhqRXZUc1RG?= =?utf-8?B?THIwK2hlZTFHQnUvWjRXd2VwdDVPN2dMMURaN1hHalRXeno5ZG5mWWJHTytV?= =?utf-8?B?WmUyeUo2RjhwT0pGcnRyTlVzZWZvR0VUQTlJVTNUTlBMZFpRYTZ3MXVvY3lX?= =?utf-8?B?dS9jSU05TndLd2o1TWNBTmRISmhEYTUyNHlCS3Npby9wS0JzbHV5RWxKV1hm?= =?utf-8?B?TlZydEZnOEsvOVVmOXBvMkttRS83QmRGd3NiaTJWWW9QNWxhcGQyNTVCRVhM?= =?utf-8?B?TFhVMXBDYUZySmh1clRWSVZndENydmhwenoyUlduVlVEOWNteHE4SDZlcjdB?= =?utf-8?B?UmVvQmdtRTBPck1tMFlsS0U0VDFVMEg4RWlvNlI2Rm5yYzRLMDVZZnd0OGl2?= =?utf-8?B?TVBGQzBWWEE3clZ6QmZqS3VMSm5RWE4wNFcxZ2NwNC9aSFRmbFZURGtsNkZJ?= =?utf-8?B?NDJPeEVyOENXSWkyS1ZvS0ExVS81SkpmMVFmSkxMTHA0TEVjVU5zalhVS0ZU?= =?utf-8?B?R0xsR0dROEN6WGhxZUpnOUFHVUtxWXpvcWc0dzNlR2lDT0hCQ2p1OEZDdGtR?= =?utf-8?B?aFZRZGpRY2tOcVphMEZSN1F0d0wvS3l0TEtFUitxaFFuTzcvajZnTG93NFZP?= =?utf-8?B?cGJOZkxoTXYrVjZpcTlZcVJoTG1oVzV2S2FyR1lScW9IMERuZmk0dGhqYnZG?= =?utf-8?B?RUltUGs4NnFRdWx5NWNYLzNTcURSQ1RqWXZQWmJZN3BOYkxCTHpQVW5GZVAx?= =?utf-8?Q?rtbpH/R/eU=3D?= X-Microsoft-Exchange-Diagnostics: 1;DBXPR07MB320;6:i0eqsLLzGfnZfyhTTP5b20GP8Icw5kr+MsDbjWP+enHKOhPOxhZtfTLZMQ38RSed82E8aYfo//nxkjQ4dnuTVCHYmntbaOuKO96E6wf3T6AFHzw8/rnBtdOjiSPJ5L8lGhPeHlZm+ZhrM7XckeR5iI/qSE+evNm7DXa3EXktSK1eKAxXd8D0Z1kCZ2az7NKQwv3a9s3Rfl2ARv+Kft3TSc69nckPsHUGaPG+3LuvMlhUA1eVOTIQKGiHJ2I8MvbLDbbeB1DhVsYpHhp9U2esjgPXXoPL3c/U4vM1KYUb6VqRXXpKTWYUuk7QEkFNl0OOsdtYHH+FZmq7NDgWjxh4k5i8WCVg/EqzWLwVi22ZqKw=;5:Js9O/eAFZPphS0AJCypi28b2u14nCGBdkTtXqJIdOqc2Tq5WUWZFaDFlnTUEV1scq4i/sBgFrRgEqEA3odxDXLBlnNL6+NlzxX0Y9sUk/NCVzf5zSGcvN2Lo9f8uRei5FgwXxRZaKq1eSWj2n+ZfwAfC19Xi2I0acdtql/fAeZI=;24:0Hh8sma0W0zfCyukaEvLdpuLSlltWXPsDhr8pd6G2wSEdiphBEju438xlAYZmc/18QGjVz0eeBdrDMcVd/BfMGsFyGLuc88UD3XT0ZxLiQg=;7:OVCXflw+lBjUJXVcsP8KVZ0aDlf5QVKMG87XlmRDhgVh2QkZwGaP08RR4nyI+/WTCmpaNKJrKKPBCl/i88hmSpd9JgSpk6JUiggBDwoLe5JxxxCkMeDNmwZdNmnRN37W7cLZjbUF/PUm3R8MlbzF2KwMzopgtOpgo/HhhPsc9hVaqU0O3BsP4Ry0M5SWoCLZqoE2Zb7CAu3xzwN5lQojAnztbfdABXwUQuoNHoY1n6WWSTvuO70JaxJno6uj8LBG SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jan 2018 16:56:38.6218 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2c6cea1a-ad2f-4024-ce68-08d55e94715d X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 92e84ceb-fbfd-47ab-be52-080c6b87953f X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBXPR07MB320 X-OriginatorOrg: ericsson.com X-IsSubscribed: yes X-SW-Source: 2018-01/txt/msg00376.txt.bz2 On 2018-01-16 11:18 AM, Yao Qi wrote: > Yao Qi writes: > >> regcache is used in many places in gdb in different ways, so regcache >> becomes a flat and fat object. That exposes some unnecessary APIs to >> different part, and some APIs are misused or abused: >> >> 1) gdbarch methods pseudo_register_read and pseudo_register_read_value >> have a parameter 'regcache *', but these two gdbarch methods only need >> raw_read* and cooked_read* methods. So it is better to pass a class >> which only has raw_read* and cooked_read* methods, and other regcache >> methods are invisible to each gdbarch implementation. >> >> 2) target_ops methods to_fetch_registers and to_store_registers have a >> parameter 'regcache *', but these two target_ops methods only need >> raw_supply and raw_collect methods, because raw registers are from target >> layer, pseudo registers are "composed" or "created" by gdbarch. >> >> 3) jit.c uses regcache in an odd way, and record-full.c should use >> a simple version regcache instead of an array (see patch 11) >> >> Beside these api issues, one issue in regcache is that there is no >> type or class for readonly regcache. We use a flag field m_readonly_p >> to indicate the regcache is readonly or not, so some regcache apis have >> assert that this regcache is or is not readonly. The better way to do >> this is to create a new class for readonly regcache which doesn't have >> write methods at all. >> >> This patch series fixes all of the problems above except 2) (I had a >> patch to fix 2 in my tree, but still need more time to polish it.) by >> designing a class hierarchy about regcache, like this, >> >> reg_buffer >> ^ >> | >> ------+----- >> ^ >> | >> regcache_read >> ^ >> | >> ------+------ >> ^ ^ >> | | >> reg_buffer_rw regcache_readonly >> ^ >> | >> regcache >> >> Class reg_buffer is a simple class, having register contents and status >> (in patch 7). regcache_read is an abstract class only having raw_read* >> and cooked_read* methods (in patch 8). reg_buffer_rw is a class which >> has read and write methods, but it disconnects from target, IOW, the >> write doesn't go through. Class regcache_readonly is the readonly >> regcache, created from regcache::save method. >> >> This patch series is tested on {x86_64, aarch64, ppc64}-linux. It is >> an RFC, want to get comments. I write them in at least seven different >> ways, and this one is satisfying. I don't push them in until 8.1 is >> branched. Hi Yao, The design you propose makes sense to me in general, but I have some questions. Which of these types will have actual instances of them, and which ones are only interfaces? I have some problem understanding the difference between regcache_read and regcache_readonly. I think the fact that the name is so similar doesn't help. Would there be a better name for regcache_readonly? Simon