From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from CAN01-YQB-obe.outbound.protection.outlook.com (mail-yqbcan01on2078.outbound.protection.outlook.com [40.107.116.78]) by sourceware.org (Postfix) with ESMTPS id 12F36384C92A for ; Tue, 6 Dec 2022 14:41:11 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 12F36384C92A Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=efficios.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=efficios.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NaG1i2KxxL1SI2yQP0fa4qxr+8g6tLAj4aXvLI/AJKJ8pFH8jVLGLU3zgnBSYFJSMtBttJgTS7XqrsNMD7nX2MwoXReAh67SXDbi8lc0BVECUroyrraZRSAcvR5BgYDVpiVMXrGQHh/OpJ8fO/uloqoqd/aCBS7QQuSLNIdt6aZ/sWdipu9brAiJWl/4VOKZp1sKLPRL7zvD9+D/pWT3KZXaRBU+iP+KUM78731L8+VUcFuqSg8hGU/ahaN2hvr4SbhP34wZPMB/kSbmxP29usSG9ieWYVl8yMno8yNrJnlS3L4lm3jDMd98AunhswUeOrRyg4o9VTqX09EeA1h29A== 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=C+LCSZe0PrOz6Vn6feK52oOVB5y4u6YL9px4Xnkn83M=; b=lzvAT0pFb0rsfAnzVWBn304w1A3PscW40VPLHy9IBdxEWeXCy5mYDYwxxn2XW3LIIE1zkVa/PkP+bfHVg9KwWxyW949nWOBmf6E1cZzScYQTDtTgKtgLCn8+IYwwnNxGmBX6ygfnEsEI+6UXJ92IXeYl7rhVYWUjHW715US7ylkjbhCiZfWLK7IMBuozWUinf7erj3WlmJ549OknQ56m4ugzeoNVhbcd1HGLp4ccTkDUY98rAC7oiz5RdIfNdMqpXRcqPDPV3OZw6TPBuKbsw107SbIvhx9r4IK3Sj144wbNqzwwC+REjy4wyKn7OPEIQFy6NwubGoxncyAlJli+tw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=efficios.com; dmarc=pass action=none header.from=efficios.com; dkim=pass header.d=efficios.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=efficios.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=C+LCSZe0PrOz6Vn6feK52oOVB5y4u6YL9px4Xnkn83M=; b=JJD4tz46MBfuitDXmazvuoC1rUR91RG4Yh+JZ514jNq+UwivLa0pUM946SobWR+RNKvr5+GK55ZlRUxTbGzS2pikEOrfWmgvJKdbPco/o/FjUy5fD4vxeLNyBTm/3kyeVz2rnKhwAw4GU9EpdfAl4sB/CiG3ZCRI8Zd+30dgaZaMAX1sVvTbaqBpzfq5HHYlp8QVCp7YW9zQAltBK6ay1w0mUeAnCpjPmLlCtXIHQyS7EcfdqgdqQAU/R0LRjtg+JMzRmx8sEbTuaoDX0Wvjw1vU/KDbQeC4skNmkWFEBYc3BR8RF5IQ9VkiuOg0iJU0ZbgrOVAV4872o4E0abAVvw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=efficios.com; Received: from YT1PR01MB2828.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:a::23) by YQBPR0101MB5750.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c01:39::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5880.14; Tue, 6 Dec 2022 14:41:08 +0000 Received: from YT1PR01MB2828.CANPRD01.PROD.OUTLOOK.COM ([fe80::948b:ac25:c50c:f52e]) by YT1PR01MB2828.CANPRD01.PROD.OUTLOOK.COM ([fe80::948b:ac25:c50c:f52e%4]) with mapi id 15.20.5880.014; Tue, 6 Dec 2022 14:41:08 +0000 Message-ID: <114d09c9-64b3-2b8a-25bb-91e30a549354@efficios.com> Date: Tue, 6 Dec 2022 09:41:06 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.5.1 Subject: Re: [PATCH v3] [aarch64] Add TPIDR2 register support for Linux Content-Language: en-US To: Luis Machado , gdb-patches@sourceware.org Cc: jhb@FreeBSD.org References: <20220923134648.114930-1-luis.machado@arm.com> <20221206131655.1223228-1-luis.machado@arm.com> From: Simon Marchi In-Reply-To: <20221206131655.1223228-1-luis.machado@arm.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: YQBPR0101CA0024.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c00::37) To YT1PR01MB2828.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:a::23) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: YT1PR01MB2828:EE_|YQBPR0101MB5750:EE_ X-MS-Office365-Filtering-Correlation-Id: 7f1784bf-0abf-48be-bcb2-08dad797e971 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: kdlrD3wJIryYormTtnKkDSeIjsfCqqthsjRP2I6JctW/O6AchZs5tgluOlw9F9npr3yaki4Y1jFCipNp53i1lmNcZ1dGgqD7aQx7m6YkhZ3mWrlmTcyRRSAI+SidFuuXo2L65hsArUtMUbV/K812bSgd43g3UNUtmARtz+Kl0EhmZuPYZl0g/UB7OkLQi2+OmJcPIvPpoV93806FyTUH4EqGOackuhuwmmpituomxy8u8JpnXiw/7CVOan7JssYnkS2/Aa3GORw50SyAiTA8Nn6lA6n+z7Kp1EZNyV/WuNgHuxK174YR526lWkocuoQb4RYt15O9XeCnuVORkQQhWu3ctDkhSbWXdO4XvqQ6nN0pA5MHdSbhKYYF4Tv/H1I5jNZ2b2BO38tRe7VvAYypmvbzXVU8O8EIREIyZ8U5EoOoOxMd6OjbAXlJlkrtgoDTiWNAMyLst1d7TfW856+COpq8+RQHKaIF6nbkdJsT4JukZIkqPOIi+ladAuhaJBfNjasA/Y0kstF/bXwlxIjp+IOF9OsudGPJ2ySkCJd3cc8ACTJvslCPhKofoQVwqq4BI67sE8vBEaoxAsYUnUEY1sBuB3cHdwHl11JVHMkoL/OsV4AqX7Gxh4vL3qm/ffzkGgAsCH3NsEsaXJlvVUVxFcQW/1LBySAOobL8VqWEa2F/xZAT8H+11EF1q5yzIgxWSc6GL13q17pEYjl+ESrENJ7LtODmDXDTLv9OZh6D2hk= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:YT1PR01MB2828.CANPRD01.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230022)(396003)(376002)(366004)(39830400003)(346002)(136003)(451199015)(36756003)(31696002)(316002)(6486002)(478600001)(44832011)(2906002)(5660300002)(8936002)(66476007)(66946007)(8676002)(66556008)(41300700001)(4326008)(83380400001)(38100700002)(53546011)(6512007)(2616005)(26005)(6506007)(31686004)(186003)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?VGsrNFRZMXMrMDBOR09tc1hodkQva3RWaVpkSEgxUE1SK0pNb1puQk1JOVkr?= =?utf-8?B?WkdUWlFQZmZCbk50QktHMHgvVXJEaTVoaG83d3ZQcHh0U2pxQ3VocFB2Tmlt?= =?utf-8?B?NkZ5bk1EVGVGclBuMG5yVC8yQktncjdvNzMwdGxCRklVcE1CcThmY1k1a2cz?= =?utf-8?B?Q091d24zdldEUENNZmF3TGR5QVRCdGhGWDQ5Z3ltQ1JsZElIczhFWTJrWDBs?= =?utf-8?B?NkZ4TUtFeEI0RUt5REFzdXd5SElndnF2QkpiUTg2SExvbUlFMTlISFlUMjg0?= =?utf-8?B?TXlsbmhsUlBkdFo4YnpVSnB4Mkk2S3owakYwR0J1OVBtUitqU2J6R3BnQjlQ?= =?utf-8?B?MTgrcEtBN3RDQk56dVFkKzhMWDJlaFdaNmVKUVUvc0p4Rkw4SzF3SDhxa1VD?= =?utf-8?B?YTB5Uk1zMkVlei8xMlNvMTBXZlgxTHhlRkFRcWpvcHgyWXBjNUpMUjF4b1FT?= =?utf-8?B?amZTQ3B0OVJKTzNVZlRwdEdKTXAzUGV4TXdRVCtkdU42c2NIRWl5WWVuMGl1?= =?utf-8?B?NWgrOEZIczRJUHNVNUtmSCtKV1F5cjZiRjFrVk1Hd09lbTFITm03L2d3TElT?= =?utf-8?B?Wmc3WW9iYVJBYUMrVmxCMnNBTFA2cWlqbVdPMUhDT0REMGlTU0M1T1dHSVda?= =?utf-8?B?VXlXaXEva2poeUVMWXE3RTlKN1lBYUgrTkQ4eTJ6ZXNrNzV6MFgxODB4VXo3?= =?utf-8?B?enp2eUprQUpaMlJKWk8rQzg2SkRBK0IwcVI0alFZSWFsdHVkNFV6cmU5RFlZ?= =?utf-8?B?RjZrdmo1MVVxV1BBZXRNdm9hQjc2OGhPV0I0dlB6OHJZbGNzZEdEM08ycExJ?= =?utf-8?B?QjdiUTZaWnJIVXJiRjliNXRKN3NNU3VybGV5c2lOVG9hOWdZNFJJSEI0dDJs?= =?utf-8?B?M2hXTlFUZUNBeGR6WlZaUVh5UnhvUUR5M2JlL3ZzY1U3ZHFkbzRvdE1vWXcx?= =?utf-8?B?L0pndzI3RjdzWWlXc3FPd21xWDRWbS9QM3ZXSDdkM3N3ekJvc0prdDhRZFcw?= =?utf-8?B?ZVZ2RDhmMUJUUDQvQlEvVm02bUpOVGgrM2o2WTVBazNqWE05YVpNdDIwai81?= =?utf-8?B?TU5xVzRxdGoyZmk0aXFNNWtOVitNelJueGM5VEhtOXliOHl2QlIvaU1UV2d0?= =?utf-8?B?RXVmcUR0RzlqbmZ2MWthNUpaSXRqNWN1dHVzRFBZQWhpTHF3K2lEdkxTVlRI?= =?utf-8?B?bHBpOEtSMENoUStZZDUyZTFyVHNFaDNZK3BJNkdMU3J5WUNaVEtMQS9Wc2lY?= =?utf-8?B?aS9rZ29yaTA1b1I0Y3lYM2FRdXF4bFN2OEpCdzZaTFg0T1RZZVhHckltbmJI?= =?utf-8?B?NFJvNW1EYVpSUHI5VjRvcCt0aEdhMFhRSGFpQXhEVkpydEZLM3Q2RmRPa0wy?= =?utf-8?B?WTVocUxhSDlLOFp2Y213clZMalkvNHNMVXpCNlM4YlJMbzRwZG1JOHo0SGFL?= =?utf-8?B?aHlsdDdGdWYrczRUMnJ1T0pPbXh6cHNZd1hRWmY2RkRXRVZCUkFRU1hMQW5E?= =?utf-8?B?WDdzY3E0d0s3amg4M0JTc08vaHpGQXJPcjhoRzY4d1ZEZ05ZZEU0NW1PdXgz?= =?utf-8?B?QTJFaWtNZnpHWEQ2aUoxTGlKU3FCMVZtdVUvVmJWa3pGaElGY1ltdlFVRWxz?= =?utf-8?B?NWd4cnpiclpMZEE2cUJ6dE1YVEVkVEhJSmhHeXZsZDhFTjJLSHdwQ1R4MWtT?= =?utf-8?B?U2pPbFpqSWVnbWpEYzJTKzd1TGk4SlVrUEdxTWVhRFRRWVovYnNFL0JlZEZt?= =?utf-8?B?NVJNTldDbm9xQS9ydHNxc29qODNFSCtQdW1QVEs0QUI5SldDVFdxUjFjZmp4?= =?utf-8?B?Z2xKVHFqSmlDOVVGRHBON1RDKzdrZEt6ZnVldzFMWGMvUU84bnRGMUxyN3h0?= =?utf-8?B?bThNeFdlNU5SM2VGeFpDMlFocEQwTjlTbGZubUFKK2FUanBObkhuZTR6VHpu?= =?utf-8?B?Tk5JaDhDbVpQckJFS0VKcFN6a05lMXh0U1l1eVRUVThha2dtMDhadHdCVFBl?= =?utf-8?B?eUdTcUpPN3pBN2dyb0hlMGJIU2JMc1FZaWw2aTAwT3FLSnZJbENSZXRHakJ3?= =?utf-8?B?aC91SDFpd2JTczg2QkFBSE5XQXA4bjByajN3Vy9Obk01RktBK0JHUmJxMkEv?= =?utf-8?Q?cYG5KGKoaZ7/wDljYXR+7nyNZ?= X-OriginatorOrg: efficios.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7f1784bf-0abf-48be-bcb2-08dad797e971 X-MS-Exchange-CrossTenant-AuthSource: YT1PR01MB2828.CANPRD01.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Dec 2022 14:41:08.5268 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4f278736-4ab6-415c-957e-1f55336bd31e X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ZLTN6Pm3zLMx5sI59OO550XSPZUzNyKbnJsQeJ7Fffcud8NWPZyvaZ8TmflB/v/5VTd+hNnsGw+9WPzEYlq74w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: YQBPR0101MB5750 X-Spam-Status: No, score=-3033.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,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 12/6/22 08:16, Luis Machado wrote: > Updates on v3: > > - Addressed review comments. Variable renaming and more code comments. > > Updates on v2: > > - Added missing REGISTER_SIZE_VARIABLE to the tls regset, preventing a warning > when GDB finds a section that doesn't match the regset size. A few comments below, with those fixed: Approved-By: Simon Marchi > @@ -465,21 +466,23 @@ store_tlsregs_to_thread (struct regcache *regcache) > { > aarch64_gdbarch_tdep *tdep > = gdbarch_tdep (regcache->arch ()); > - int regno = tdep->tls_regnum; > + int regno = tdep->tls_regnum_base; > > - gdb_assert (regno != -1); > + gdb_assert (regno != -1 && tdep->tls_register_count > 0); Split this assert. > > - uint64_t tpidr = 0; > + uint64_t tpidrs[tdep->tls_register_count] = { 0 }; > > - if (REG_VALID != regcache->get_register_status (regno)) > - return; > + for (int i = 0; i < tdep->tls_register_count; i++) > + { > + if (REG_VALID != regcache->get_register_status (regno + i)) > + continue; > > - regcache->raw_collect (regno, (char *) &tpidr); > + regcache->raw_collect (regno + i, (char *) &tpidrs[i]); > + } > > struct iovec iovec; > - > - iovec.iov_base = &tpidr; > - iovec.iov_len = sizeof (tpidr); > + iovec.iov_base = &tpidrs; > + iovec.iov_len = sizeof (tpidrs); > > int tid = get_ptrace_pid (regcache->ptid ()); > if (ptrace (PTRACE_SETREGSET, tid, NT_ARM_TLS, &iovec) != 0) > @@ -531,7 +534,7 @@ aarch64_fetch_registers (struct regcache *regcache, int regno) > && (regno == tdep->mte_reg_base)) > fetch_mteregs_from_thread (regcache); > > - if (tdep->has_tls () && regno == tdep->tls_regnum) > + if (tdep->has_tls () && regno == tdep->tls_regnum_base) > fetch_tlsregs_from_thread (regcache); Should this condition be changed, like the one in aarch64_store_registers? > @@ -3614,15 +3624,40 @@ aarch64_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) > } > > /* Add the TLS register. */ > + int tls_register_count = 0; > if (feature_tls != nullptr) > { > - tls_regnum = num_regs; > - /* Validate the descriptor provides the mandatory TLS register > - and allocate its number. */ > - valid_p = tdesc_numbered_register (feature_tls, tdesc_data.get (), > - tls_regnum, "tpidr"); > + const char *tls_register_names[2] = { "tpidr", "tpidr2" }; > + first_tls_regnum = num_regs; > > - num_regs++; > + /* Look for the TLS registers. tpidr is required, but tpidr2 is > + optional. */ > + valid_p > + = tdesc_numbered_register (feature_tls, tdesc_data.get (), > + first_tls_regnum, > + tls_register_names[0]); > + > + if (valid_p) > + { > + tls_register_count++; > + > + bool has_tpidr2 > + = tdesc_numbered_register (feature_tls, tdesc_data.get (), > + first_tls_regnum + tls_register_count, > + tls_register_names[tls_register_count]); Since each call is about a specific register, I would suggest getting rid of tls_register_names and in-line the name, it will be clearer IMO. Simon