From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2069.outbound.protection.outlook.com [40.107.21.69]) by sourceware.org (Postfix) with ESMTPS id 187EB3858C62 for ; Mon, 28 Nov 2022 16:01:14 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 187EB3858C62 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=STDmaV00sij8LSb5mvAoyMnKOqNyqWgjVBsanC8OdLuBQIu4xCffU6OrVRpy31uoKcjEJ7VqSmafrvWzwIJS8kR2UIb9WBB6LPunMz0uU+D0tctadVMNXgAU/oryY2qqa+FdifmEJvaUEqUEKcH1uKvsCpsWYl25Uwq9Y0Com+fQ35IFExOrXIeRpwFT6Ez3ZUGtcubTz0cCyuCnXuoL1zWdD04cVyv7bRbRBC9IWdrXebnBXmhC4JAS5CTsxrlEq4htAeu2rblM+LrK4M7CX3tu+gP+sGYMom14qdWlqbF3fHZnhVfWeT46q2qGDwGUscn8z4aF+PEIpfw7fydmLQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=7aUpzlnPWU0enqW7QYkOWFP/l6mIKYe0Co83dgFa5y4=; b=gngENL2mpEMGXRJMyj2BU8rBXIFF0vAvcfBGQCYa1ZPdCZjYkp3jfMTc1aTQMlxG40Yhhu63WTXO1az8aHxnZjkAE2JVG/xC2HL8uWWnryneyaKKPiW7cT4Ce/HCgj4dDOoQ1ESoJaAGZyJF2vMJrtro319C18h2rjuU8xOC8UUhmftMrPhDla3papSFjo0bvpIFljlHvw5pZQJ9Zvcq7H4w0O0SlKp06NOccw3OTcMsQKXsqE7gO8wEbSC6wFvP1teHOTRqiYsVOBTnUq4kc+A+vNfwnWrQrZgqDSOInY4XLK/QvY0MVons1F5TTzHvains2PC/LY+HP33R7Rffxw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none 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=7aUpzlnPWU0enqW7QYkOWFP/l6mIKYe0Co83dgFa5y4=; b=IiywXf7sNeAJ/6H/ZsGNXG+uuUkzXsPh4uG7cNRRiRah2um2DX2fvrSJfj0ODOmHO/KRtVW2PhRg0aqVnVADyQJbBMeTTGILFnia4/8vsf7WTxAsKZaO6zy2VPRhX8/xj/2dbDLvJagIX+E7c3fJOmjcmEYU1sVb0j1wF87yxd4= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI1PR08MB3919.eurprd08.prod.outlook.com (2603:10a6:803:c4::31) by AS8PR08MB10151.eurprd08.prod.outlook.com (2603:10a6:20b:628::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5880.8; Mon, 28 Nov 2022 16:01:10 +0000 Received: from VI1PR08MB3919.eurprd08.prod.outlook.com ([fe80::fe5c:b195:a2ad:b19c]) by VI1PR08MB3919.eurprd08.prod.outlook.com ([fe80::fe5c:b195:a2ad:b19c%4]) with mapi id 15.20.5880.008; Mon, 28 Nov 2022 16:01:10 +0000 Message-ID: <103622a6-68c8-326b-59fd-c16862ca3b32@arm.com> Date: Mon, 28 Nov 2022 16:01:08 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 Subject: Re: [PATCH v2 4/6] gdbserver/linux-aarch64: When thread stops, update its target description Content-Language: en-US To: Simon Marchi , Thiago Jung Bauermann , gdb-patches@sourceware.org References: <20221126020452.1686509-1-thiago.bauermann@linaro.org> <20221126020452.1686509-5-thiago.bauermann@linaro.org> <3539acb1-462d-62e3-5a70-40786942c325@simark.ca> From: Luis Machado In-Reply-To: <3539acb1-462d-62e3-5a70-40786942c325@simark.ca> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: LO4P123CA0052.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:152::21) To VI1PR08MB3919.eurprd08.prod.outlook.com (2603:10a6:803:c4::31) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI1PR08MB3919:EE_|AS8PR08MB10151:EE_ X-MS-Office365-Filtering-Correlation-Id: 1073ced2-45e9-4121-7574-08dad159c470 NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Lz6t0zZaiIdIc5sXPvEmM6evN+cVjtU36FLVyWezILtPE3nVHVOVm8cfMX0GpEX0QnGFfvMC5xkdujnPgrn4TqHiUTHZK/l4Zz7VPK3vFgsnzQaXQ828MiWCsAzXIXOJXx4fb5YL2jedbf31ZFuUw2dG/w6SjnK+ItfXr0J2zHU3p6xF0UK9tzk3ofJA9GN62Ykokdmh3fQD0I6KcXr1nSIP8eQZLsGj1izw+IOItqr50GfDeKk09j7XtDQgqX0BtEqFrAsvas2nGp1iYwC6i+vChIJO7re05fa9aadZ0GOv+fCer3FjqHBUxcM2JhRPLMn1JBrXudWMTiupQemeTm26+/CLWS07DYAvI7xNAMa8Ivvpa3SstXGET8t4E6EmlSngt0aVJYNg1Eky1ta3iFoWouu2wsmeWdCKQjg2vgyr283eEUD0g2lzJoGcQYvQTYsCFhztGFDLsXESXInoB2+URhqXgqR0ijC61DyDBHteSA7+w/KBViFk0UtSL97lDS7kDftg7TfKuQkjuug72l4xa8nTGYk0OMHxQUNFT7XIn3s5OseE5FwaUlgOY5nUgg9ERS6adMqgG0bCzz/mdeurrQX80Hk5DhzMzgUFBLc6yA59mrw26kVogO6EWVUteg1EPVR0X++dK7ni7dzhca1hsGh4/U06h4qT7x8TG4Mmm8hOSbgb/ofeSUmCVwgeWmZeVfwjaOCnznYSIpaAkZozDiXSOsDdI2kXulwBapY= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR08MB3919.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(346002)(376002)(136003)(366004)(396003)(39860400002)(451199015)(6512007)(31696002)(36756003)(86362001)(6486002)(6506007)(110136005)(53546011)(478600001)(8676002)(8936002)(5660300002)(44832011)(41300700001)(2906002)(66556008)(316002)(15650500001)(66946007)(66476007)(38100700002)(26005)(186003)(2616005)(83380400001)(31686004)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?aThkRzJWQ0d3eHAyU1pCL2NMYWVRQWt5bFI3cUZsbXdEQmRTZXhkZ3NlZEUr?= =?utf-8?B?SXpEWThMRVBUc2xtYW4vZGJtZk1hZTlBMjhVRkFRa05TalVSSlI1dGFzM24y?= =?utf-8?B?WmlWTTRNMnZta2hWejZSbi9NQUwrQUh3UjkwaU9qOURJRUQ4T1k1bmk1MWsv?= =?utf-8?B?L1JMUGpUc203dHRHT3FwZm5kVkJ3RGVTMXFheFU0Y2t4SXZUREY3bStiRCtx?= =?utf-8?B?TlBHSEN0KzdtQWJpVFZwQ1JtZkZTUmdId045bzJYVFJhZzhiTmVDcmJVRVpv?= =?utf-8?B?TGprL3hjckJ5M0tyZnJvRUVYS3VwVGdZVjBXckRiOXh0d1BXMzA2UjdNQ3Zr?= =?utf-8?B?cW9mVWVZM0JDU29Vc3g5RlBGQmU4OEE4azZYNXBPT2RjK2pDTGl4aFI3SDZH?= =?utf-8?B?cU94dTdqTk9QY3VyYVUvSHN3TXZia0ZJME9CUlJqVEkxODI4QkQzbWFBQXZ0?= =?utf-8?B?L1ErMVNSeHIzK0IvdlhNVWZ6bjduUWNRb1QwRStocXVRaE9vTlA3L0I5Ykc2?= =?utf-8?B?VkthbDVuaHc2ZXlnd09RUWtOUURPaGp5VVA4eHEveFp6ajA4QU9QWlR3RFBu?= =?utf-8?B?ZjNrNHJHOU92YStlMkFNTkZEOWFWcXhZL1E2TXd3Wk44Z1ZRNnV6K3dWNzB2?= =?utf-8?B?cW9MaHV6QkpJT2lWQ2Z2Nk9scWVzbkMvUFUxVFc5TVVqb0JEYjdYNkV3UlBE?= =?utf-8?B?eDJ0OGUzU0tIc1dLenRVeXY5YTBHaU9nOW4zRFlvczlUM2I4a3F0VUhNMHd2?= =?utf-8?B?R2NDVWlrTVljbWg5YVM1UjVkd05aN1oyTlk3RHVOVWVYd2w1Q0VFSkd0WE1t?= =?utf-8?B?UG9FVHhpb3U4ZlBwZTJRMER0WnF3SnFFTVVTRWhoTmFrVXRVNDF5bWlwWCto?= =?utf-8?B?azlJYXNRR3JsendZS1FuS0lRdDl6M21GNThEWnBDVlR2QTlxTkg1MS9zZldB?= =?utf-8?B?Z2RDVjg4ZWYzQmNOYXIrOXFsSmhwYVgxeEhkVm8vUE9uMFFhWHoyR1R4RllR?= =?utf-8?B?bFBvTmRPZEhEK0dKbzRNQU55bUI1UjQ4WWRvTi8yeUJNQVF2dENPTnJYUS9C?= =?utf-8?B?dFlDTkUwd0JOUTZiZ0QwcVJydHZEQWh3QnpJbnNZZlBkNFVWN1FNMWZlYW1u?= =?utf-8?B?a2V5dWlFK24zRklSazN4L0JCY0hDblBFaEp1aFg1UFF5TGRKczk5Rk5QRWNE?= =?utf-8?B?SnRWcml3WFBlM3VSaFlsVGg0VU5yRFR6eG9QUWRRWmhGNlY3MHFVQ3F1cWVs?= =?utf-8?B?MkFzblNTL3gyY3NaM2FQRnU2YWJDTlNiWlJRdUJhRlY0bWJKcGVYS2tlazJN?= =?utf-8?B?ZGhuZU91c3ZtR0Q2L1JnVys4U3hrZDJkYkUxRkVreFlNNTZwUWp4cys0aUNO?= =?utf-8?B?Ym5CcGlJMllZY08reVp1WktxM1FsY1NzbFQvRC9NTzZRSUdhbE9ZZ09vVTc4?= =?utf-8?B?RFIvQ1cwNis0Y3FvY0xNRXhHVUp1bEF0dlllS1JYTWdza2tFTFAybGROeW5E?= =?utf-8?B?TWQ5L204RGllbzlkSEZUeDJRUEF4Z25nYVYvdFNjYjhFZEUydHNwNnJRWVV3?= =?utf-8?B?cHl5bExlM2p3ZDlRYi8vWWRmY25mbGpNb0N4bkI2WURyYm1NeHJBQzVxUnVl?= =?utf-8?B?cWFjZ01oWE5KcUtUb3RzNnRISW9iRkFRZXNuR2p3OFA0SHFHSGRTWDdldUp6?= =?utf-8?B?U2JWZUo5b2dSM3hsdmM5YnByaTl1SGVBelpRT0FsdlVydjdkNlZrRk9wMUlO?= =?utf-8?B?VUc2N1hwQitFY3d0UHJkTllrTmlmSWxSczhxN0pGcGdlYmlibXB2cmpFVkpy?= =?utf-8?B?dzUwcFlhSmd4WGMzSWFZbklUTVRZNzlBY2N3ekIwZUNFanNsT3N0eVFQU0JH?= =?utf-8?B?MXAxUU1YZC96b053aHllS2Q5WG10aXFGY2U5Y0NUb2xLeWo2dmVQSUsvTlBS?= =?utf-8?B?THhTZjduT0Vwbkg3R1J5Q2kraVMzZzdUUnlUU0FYMTFVZk14N2RnV2pkd3FR?= =?utf-8?B?T0VKVkFIU3lSSXh5SWx5QVRJZkJqZjNVMnNXMUxRN3FRSk8ya3ZlTGpQMk9u?= =?utf-8?B?TSsxME5Zb3ZaMHVzNEVRUVN4Y1lZZ1lEUkJZNiszRndPQkJZbC8vYnF3b20r?= =?utf-8?Q?wssF1yy0hU5zoHinQafwTJn8m?= X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1073ced2-45e9-4121-7574-08dad159c470 X-MS-Exchange-CrossTenant-AuthSource: VI1PR08MB3919.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Nov 2022 16:01:10.5751 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 0A4OBbl6SR1x5zcn/LMiE+6obFmh8/aKpMIY+uhGV/RdsD4T2Nk0B0FR1UaZMNUDPNJ99wRh3/x03IDxJ5jKWA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB10151 X-Spam-Status: No, score=-11.6 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,GIT_PATCH_0,KAM_DMARC_NONE,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On 11/28/22 15:47, Simon Marchi wrote: > > >> diff --git a/gdbserver/linux-aarch64-low.cc b/gdbserver/linux-aarch64-low.cc >> index cab4fc0a4674..786ce4071279 100644 >> --- a/gdbserver/linux-aarch64-low.cc >> +++ b/gdbserver/linux-aarch64-low.cc >> @@ -99,6 +99,9 @@ protected: >> >> void low_arch_setup () override; >> >> + gdb::optional >> + arch_update_tdesc (const thread_info *thread) override; > > I'm all for using optional to be clear and explicit in general, but > unless an empty optional and an optional wrapping nullptr are both valid > and have different meanings (which doesn't seem, to be the case here), I > wouldn't recommend wrapping a pointer in an optional. > > Pointers have a dedicated value for "no value", that is well understood > by everyone. And then, it does create the possibility of returning an > optional wrapping nullptr, which typically won't be a legitimate value. > So it's just one more thing to worry about. > >> @@ -840,8 +845,16 @@ aarch64_target::low_arch_setup () >> { >> struct aarch64_features features >> = aarch64_get_arch_features (current_thread); >> + const target_desc *tdesc = aarch64_linux_read_description (features); >> >> - current_process ()->tdesc = aarch64_linux_read_description (features); >> + /* Only SVE-enabled inferiors need per-thread target descriptions. */ >> + if (features.vq > 0) >> + { >> + current_thread->tdesc = tdesc; >> + current_process ()->priv->arch_private->has_sve = true; >> + } > > Is it not possible for a process to start with SVE disabled (vq == 0) and > have some threads enable it later? No. When supported, SVE is never disabled. It will always have a valid VL value, which is > 0 and restricted to a certain set of values depending on the hardware. What does happen is the SVE state starts up as inactive, so we have neon vector data instead. But the SVE registers will always be there and the VL will always be valid. > >> @@ -853,6 +866,28 @@ aarch64_target::low_arch_setup () >> aarch64_linux_get_debug_reg_capacity (lwpid_of (current_thread)); >> } >> >> +/* Implementation of linux target ops method "arch_update_tdesc". */ >> + >> +gdb::optional >> +aarch64_target::arch_update_tdesc (const thread_info *thread) >> +{ >> + /* Only processes using SVE need to update the thread's target description. */ >> + if (!get_thread_process (thread)->priv->arch_private->has_sve) >> + return {}; >> + >> + const struct aarch64_features features = aarch64_get_arch_features (thread); >> + const struct target_desc *tdesc = aarch64_linux_read_description (features); >> + >> + if (tdesc == thread->tdesc) >> + return {}; >> + >> + /* Adjust the register sets we should use for this particular set of >> + features. */ >> + aarch64_adjust_register_sets(features); >> + >> + return tdesc; > > Naming nit: I don't think we need "update" in the method name, there's > no "updating component" to it AFAICT. It's basically "get this thread's > tdesc if for some reason it differents from the process-wide we have". > So, I don't know, "get_thread_tdesc" or just "thread_tdesc". > >> @@ -2348,6 +2354,18 @@ linux_process_target::filter_event (int lwpid, int wstat) >> return; >> } >> } >> + else >> + { >> + /* Give the arch code an opportunity to update the thread's target >> + description. */ >> + gdb::optional new_tdesc >> + = arch_update_tdesc (thread); >> + if (new_tdesc.has_value ()) >> + { >> + regcache_release (); > > Hmm, regcache_release frees the regcache for all threads. Can we free > the regcache only for this thread? > > Simon