From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam07on2085.outbound.protection.outlook.com [40.107.212.85]) by sourceware.org (Postfix) with ESMTPS id 71989385AE52 for ; Tue, 5 Jul 2022 13:33:26 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 71989385AE52 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AwVWpA+zKZTZtkzhbdQR5bkyI2zneU8kYhyKNa/tfAdzLOJRLg3eDdK3EhXH4Nb/n27IrUFpjPNxNIBIknAPqQCCqVXLHYMIcxbeYrca6uIcac+W3hPlvgm8CNVNiwVuqwey4i+6VlSqM/gy8KhVdmnVvKITFPckUiJMM8ysnGKobyHlT9vhL/1trOTozY9AYnVaDZRwvPpEJNjf/SuvA6Bz6F+fkxdJf+ob6YJS8h6gdZVIlqnJr4N7yNDIJcyDDlSotsxi/HH7AvnDf/Ka3fQsLfEOwK5r7tm+MOWqH6mrc1rfKQSV1xa08xclyDn3TvLKbTSxratdo090zlT0JA== 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=u6JcUNPQ5v1f1TzQQPCvNjq0/ZNLr1J3sKgLe6pvHDM=; b=Xo2I8x0hub3MWfEKgqGy71KGYAOfxDuqwEcd8OH9x9K74zZvN7zg0b5glPvSXlic+NK12AkWZfYe+KngBhClR3UnfN6dpNAQG0AlbrYDVfxifwxDowg7TjH/sdlFatQWVKnbPu3JIeViedklfHfF3cJqr6FQrrkDZmxdCMJSotwa8xHBlj6L1T0x+TnfavHD/Xs34iC7Y3UTAcqSSKloNC6XJOG/kXi9fUzdsVcbIYCZNrSugWmlzUh9yUg1xbLHCBeUgTqQ64V+WHctkc67tqRv+T4igLu7qHbd8ktNTrBAQRnlOMGqHtjglUopowmDs5aFDlcykFOVNBtG5DzQGw== 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 DM4PR12MB5745.namprd12.prod.outlook.com (2603:10b6:8:5c::7) by MWHPR1201MB0270.namprd12.prod.outlook.com (2603:10b6:301:4f::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.18; Tue, 5 Jul 2022 13:33:24 +0000 Received: from DM4PR12MB5745.namprd12.prod.outlook.com ([fe80::80e8:432c:4930:e41a]) by DM4PR12MB5745.namprd12.prod.outlook.com ([fe80::80e8:432c:4930:e41a%3]) with mapi id 15.20.5395.020; Tue, 5 Jul 2022 13:33:23 +0000 Message-ID: <2dd3b458-634f-6c53-0264-c5f60329762c@amd.com> Date: Tue, 5 Jul 2022 14:33:17 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.9.1 Subject: Re: Formatting/indentation of lambdas (Re: [PATCH 2/3] gdb/varobj: Fix use after free in varobj) Content-Language: en-US To: Pedro Alves , Andrew Burgess , Lancelot SIX via Gdb-patches Cc: lsix@lancelotsix.com References: <20220617101024.2830260-1-lancelot.six@amd.com> <20220617101024.2830260-3-lancelot.six@amd.com> <87v8szclvu.fsf@redhat.com> <39b8b2c1-0aee-e830-92bb-e37256b183f6@palves.net> From: Lancelot SIX In-Reply-To: <39b8b2c1-0aee-e830-92bb-e37256b183f6@palves.net> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR3P281CA0008.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1d::14) To DM4PR12MB5745.namprd12.prod.outlook.com (2603:10b6:8:5c::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c5e2adf3-8b26-4d16-c9e9-08da5e8aef29 X-MS-TrafficTypeDiagnostic: MWHPR1201MB0270:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Gorht+bZSpQweoC8iJG4BAbRAz44H9d5L45WLgrWXv+jWqlWhcPsD1go+vfdn0anZfxkg7aVGJFZd12Vxh/1btH8Nji1l70UW0JFlXYXUx2LEYL+Ty1i5AP4hyhi+xMjKMC1gxcpMZwui+Sxg7kPA9kr+dQdwbCYsmEq+cb+QTDIdwWys8CoDG6XZfQR3mZFiM8IVT1mv3O09aDJzSkF+1W4lH4QypyQYiBqCfo9s1BEus91WLZoFLHk9aziOP8+IiwhBr7G8wvDKnOFfXV2K9fxGYghj8QO5Wzub/f8UofPUKAO5IW+aLetzQoNjv1MGgqzwbrHNBBhIMegsfLAZLY09YgFSgotYcIc18wglHCNmVa+/7Y7BCvEv15Ea4bT/YCdEBwMhMzp9NxeRYRuUWvCTnpUIHTFUgEZs5k4qbWWXnN2b09mcOpGig2749aRTT3O5mIupIX8raaCmf1ov014DpX3L+OJ7lwmV/mWzg2ahl3ZZuZHmGw8oopRzxZO0o7Oi5xraEgTRZmu6bRL/Ix72HLiPHcme/X6bJKQGdAPbAIN1GMQ6j+INO2NWCV+FOXVDY9H/UaCJbsdL6q03IYKpHEBhJ8KSSvkmsF64cdjljWywDRvZoS5CjStWGvbDxsTdSynb3Y0qXWE+OQ/geBJxum9lmtIvSiZEeHPMTTQelxakpt9BnofWRYjpoKPo6U/wv16W+DVBvI1dC0MPPRBVipzrSBBb4Bg594bZibTSP6Q4a9QxqjUChxENnBQTXZhL/jzIkXE03Yjkvg66rxs87/QBAKXH6eZEWemGJm0qn8sdsqpeANmqmkpnCSilHCrsU6F/U8GDbSrH1TD7mm5zxgugikBC5L7pYUjNtOKauVAPgF3c7gOdX2slM7U X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM4PR12MB5745.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(4636009)(396003)(366004)(39860400002)(346002)(376002)(136003)(8676002)(4326008)(66946007)(66556008)(66476007)(2906002)(86362001)(31696002)(38100700002)(5660300002)(8936002)(41300700001)(83380400001)(53546011)(2616005)(6512007)(186003)(6666004)(6506007)(316002)(110136005)(6486002)(966005)(478600001)(36756003)(31686004)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?d003bSt5bFpGQUZZVHY4VTc2cEJsNGhaQ29EeW9iOHN6V3FMd0hjbnYwN0pl?= =?utf-8?B?aFlNQURNOWF2cGhITFFTRDVEUU92MCtvcS9idVVRRm1oc3oxaVN2UGhIdFlm?= =?utf-8?B?Qlo2UXQ3U24yd1ZnWTl5Wi9pNTQ2K0wxSlVEbWdkd3Q1T1VkWmsyWVJaMU5m?= =?utf-8?B?SjJZbHNRRzV5YnEvSnZHcWNudlowdDJaL2d6MU92NXUrV0duTVNWVGRESGZV?= =?utf-8?B?eUl3aC96b3BmaVd1cStPS2ZUdFc0djllUnhqaVFOOGtiR0FNdzViV1Exc0d0?= =?utf-8?B?YXFUK2RUWGZCeGN2QXVURDJrMC9VUG9LTmowOXM0VU50SHBEQ3VJOFJTa3pM?= =?utf-8?B?SCtMWmI2ekNkelRjbUxEaEhJeTY0V1Y5L2U3RzVTL05hM2VKekkwQ1l1VXNR?= =?utf-8?B?Zk1HSUhLa091MVBMNzdocHhhWEh0clIxYlZSVVJDWUZWL3ZyN0hrQk9TSWl2?= =?utf-8?B?akRWeDJnMVdaZzJ4TDgycEJLS3BBRlMwejV3MzlEa2dYMlQ5RUxqU1NtRlJu?= =?utf-8?B?dWExZkNlc0RISkJCQU94WjRrWTFzYzU0MS9NSGxtaHdaYWVTd2FDM056VEpZ?= =?utf-8?B?YThlTFdWY25jNnhLaGFjZVlYbWVaZXNyM29uNHByeDVYOWdIeVN2UzBnbnN4?= =?utf-8?B?S3hldG5ScXNDaURkcGR3Y0RBWlhjSHM5LzBBM0l0aFQ5alRrMGh3VDZ0RWE3?= =?utf-8?B?V3I0Q0U1Y3V3U2V5OERMakNyNlhhckdPSzArVzU0WGQ4YVlHeWhoRDhyUi8w?= =?utf-8?B?enZ3NXVtOU9OZklOdEUwTHNGeXBINW1MNmsxMU5EdS9ScWVzek45QVlvbFNY?= =?utf-8?B?Vk45UmdUN2RQN1RTcXpYWWFCZTNnRHdqYnNoa1hJOTNSZzRpQnIyUm1jWVBy?= =?utf-8?B?aHBZdURFVFBhZ01ESFhPRE5DRTV5c0w5akV3SFhhVkUyODVjeXRQd2R1UGlt?= =?utf-8?B?aW5xVVBvZUphVDBWb2FKaEIxUjBySXRCbjdWa0JHNEtJTi9JWWJDeUFYa05U?= =?utf-8?B?d2lBUkpTK2pLN2crbklYNDNQM2xtTGdBZm9CWDk1eFZkcWx6NWQ0YVFtN2k3?= =?utf-8?B?d2pnQkJxam0wWW9EQUZEVEFOSjlCZFA3UzRzYmNydkpLN0Zlb3hzTno5MTJr?= =?utf-8?B?OTRQYjdZeVF1M1lnK0RGM0dMVnNiQVBLZlF6QmxhZXlXbXAvK0IzOXNGeTEw?= =?utf-8?B?R2F6Q2ZGUHJtTzBYRzMzODdqM3Fib1A5N1EwVGlvL1g2Q0YrMUlXUERTZlN0?= =?utf-8?B?bm5zZHduYUN6Y0hxU3UzZDM0cGdEcFQ1T0FCb3o5QnQ5NCtjTHp1cnltN2Yx?= =?utf-8?B?bStuLzFBdWtuSkZCVjhUdml0ZUcyajkrdUl2U2ZqMW95TURWcDFCV1VaWkNY?= =?utf-8?B?V2RDV2tTdDBmMkxiMFhtRHA4MFZKcGtJZ2JIK3RrMlNtOWFEaklDK3YxdW5N?= =?utf-8?B?cytRRnYrVkZpS3Q0Q2dBWXBoclhKOHVlRG1YQmdDQnp0NEhra3c1SS9MQ21I?= =?utf-8?B?dldZWThoOWx5eEVlT044SHVjSkh5RXkwYVF2NU5wWkxiOXZrcCtuS3U0VWJG?= =?utf-8?B?S2NYNnRaRjdKUFVpM25xWnZRYlhWWXVkSUYxT3Y2SXhiclJEVXd1M1lUSWxu?= =?utf-8?B?cFlQR0hYYytyYlVsVFdlakk4V3YrZ2g0bk5sTlA0UDJKVVNsMWQ3VG82U0t0?= =?utf-8?B?dzdFbUZyQ09BWXMrQzF3WStZSnFsdUFYS0lWQVprb240SEpiNExIY1F0aWJo?= =?utf-8?B?QXJmRnpyVjJycUI0dFk4aG1zRTR4bVdZVDZGV1JBUkowaHlRSVlROHpHbW9X?= =?utf-8?B?eHZaem95WUxZK2pZYm9hN21RenpiQ2xTOVdCUStFK3ViK2hUbTc3eExnSGpS?= =?utf-8?B?RnU0N2VIM2lnUWp1Zk4xNEdEc1RiZzVOYW14V2tYN3BSWmNzbnZ0TnJrSDJT?= =?utf-8?B?YjliTEM4RUxjSnJTTitjdUx1QkpzL0xlVHM1elVUTzFVSEVUUTV4bFNJME0w?= =?utf-8?B?SzZrcmFNQ20zUjJLUlNlTW0wanZueGZDNG51Vjd3KzZWSkRLL3FmU1ZoZkYv?= =?utf-8?B?b1oxN2xCV2Nuc3lsaGdyR1V2SGhGYTNiMzhhOExlMlppMisvVmVjTUI1Rk9W?= =?utf-8?B?Sm9MdGxURHk5dGtGcXpCOWk3eG5FNHpsdkZUUllWdFlLd0lrQXRiUEFoL2Fi?= =?utf-8?Q?tkqXh4+zAuui8HuQ0MBUz+E=3D?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: c5e2adf3-8b26-4d16-c9e9-08da5e8aef29 X-MS-Exchange-CrossTenant-AuthSource: DM4PR12MB5745.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jul 2022 13:33:23.8899 (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: 1iF+VH6AI6JyX1XBJP7i0H2kZFh8pHmo6Zkez5LnMECjDHUs3bDgmRRV7TxUKVslNK0MuPDbfGUqkxh2K01rmQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR1201MB0270 X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, KAM_SHORT, KAM_STOCKGEN, NICE_REPLY_A, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org 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: , X-List-Received-Date: Tue, 05 Jul 2022 13:33:28 -0000 Hi Pedro, Thanks a lot for this. I find conventions you describe appropriate, and the guidelines will be useful as I always wonder how to properly indent lambdas in GDB codebase. I have updated the wiki to mention the rules you describe above: https://sourceware.org/gdb/wiki/Internals%20GDB-C-Coding-Standards#Indentation_of_lambdas_as_parameters If someone objects to the rules, we can always revert / update the wiki accordingly. Best, Lancelot. On 30/06/2022 19:43, Pedro Alves wrote: > [CAUTION: External Email] > > On 2022-06-17 17:09, Andrew Burgess via Gdb-patches wrote: > >>> /* Update the internal variables and value history when OBJFILE is >>> discarded; we must copy the types out of the objfile. New global types >>> will be created for every convenience variable which currently points to >>> @@ -2617,6 +2633,11 @@ preserve_values (struct objfile *objfile) >>> for (var = internalvars; var; var = var->next) >>> preserve_one_internalvar (var, objfile, copied_types.get ()); >>> >>> + /* For the remaining varobj, check that none has type owned by OBJFILE. */ >>> + all_root_varobjs ([&copied_types, objfile](struct varobj *varobj) >>> + { preserve_one_varobj (varobj, objfile, >>> + copied_types.get ()); }); >>> + >> >> I think the formatting here is a little off. Looking through other >> examples in GDB I think the most common layout would be: >> >> all_root_varobjs ([&copied_types, objfile] (struct varobj *varobj) >> { >> preserve_one_varobj (varobj, objfile, >> copied_types.get ()); >> }); > > For for-each-like functions that take a lambda, I like to indent the body > of lambda as-if you really had a for loop. Like: > > all_root_varobjs ([&copied_types, objfile] (struct varobj *varobj) > { > preserve_one_varobj (varobj, objfile, copied_types.get ()); > }); > > which looks similar to what you'd have if you had a real for, like: > > for (varobj *varobj: root_varobjs ()) > { > preserve_one_varobj (varobj, objfile, copied_types.get ()); > } > > > I'll give you at least a couple existing examples. E.g., in gdb/linux-nat.c: > > /* No use iterating unless we're resuming other threads. */ > if (scope_ptid != lp->ptid) > iterate_over_lwps (scope_ptid, [=] (struct lwp_info *info) > { > return linux_nat_resume_callback (info, lp); > }); > > and in gdbserver, any for_each_thread call, like: > > for_each_thread ([&] (thread_info *thread) > { > handle_qxfer_threads_worker (thread, buffer); > }); > > I've noticed that LLVM also uses this style. It is nicely described here: > > https://llvm.org/docs/CodingStandards.html#format-lambdas-like-blocks-of-code > > For the case where we have multiple lambdas in a single function call, or when the > lambda isn't the last argument, I agree with LLVM, adjusted for GNU style. As in, indent > like other parameters. An example for this is expand_symtabs_matching, which takes > several gdb::function_view arguments. Here's an example call: > > /* Look through the partial symtabs for all symbols which begin by > matching SYM_TEXT. Expand all CUs that you find to the list. */ > expand_symtabs_matching (NULL, > lookup_name, > NULL, > [&] (compunit_symtab *symtab) /* expansion notify */ > { > add_symtab_completions (symtab, > tracker, mode, lookup_name, > sym_text, word, code); > return true; > }, > SEARCH_GLOBAL_BLOCK | SEARCH_STATIC_BLOCK, > ALL_DOMAIN); > > I suggest we follow these conventions, and document it in the internals manual, > so we have a url we can point to the next time this comes up (it's not the first time).