From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2088.outbound.protection.outlook.com [40.107.20.88]) by sourceware.org (Postfix) with ESMTPS id B3FB63875A22 for ; Mon, 25 Jul 2022 15:57:12 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org B3FB63875A22 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aWiawn3UJiWM8hRoADugQ6aou/tkef47TX05Sapo5rgpvntZx8f6BOrhfs1qxGJiS4e3I7CaKPFCe7pMvtaZoO4PG571CeP8zQ5XAa7BL8VnbREABorlku2Z/pCFIbjCH73SANHbC1zjxRKV3UYR+YeskLWqobZkumvVr9MKt2ePvjFt1lIVh9lRn3m/zUxqa7ubJrjMuQdliwBaD3QmasASLHcQ7aePNMbgfd4jtsRYExAmv/2/8isjALTPAcH+k0WfJ4YN32r8nUyT9n/Ob/kgrxuQVJvOa4Vlnx3v0Mth+0kkk4mp5/2VQK0N7UWOZkLkMa8bABY2KWOE2UTuvg== 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=RUSYaiW73GcTVXJfju330j8CjQ4l6HfpqPejbZsr/4U=; b=HLLw89iKS1HC/uzithy8rduaF1GhpEfAehOqKiCXrUoX6A8MwtXLXY0zj2k4GH/3czR9PO1WZ4Wf1cWBRJlay3nBAhDi3pu2g6m60fH4rjYo4s/8Dph/upVJuNCjthgsUjVAMRQPRCbmYyhVuajL+2HS1zqBJmoSjp4SoGx2dVTDi+XgNUIvdmB+Ztr0qQSaf8nkTlRLbvPbEVdyPLIRf5t0nWAdnqu2iXRgt0pj3pFat0I2x3CKpypOr9xwlj5P6NtYEwYkQyZ/lpk24VM3/y6BGuOMFz3uKRKHnec558pBlYaBKsJJWDiirtDOc+wDwYdV8AwU6tgaorNwz3dBxg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by HE1PR0401MB2393.eurprd04.prod.outlook.com (2603:10a6:3:23::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5458.24; Mon, 25 Jul 2022 15:57:08 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::d4c4:d01d:5d39:920c]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::d4c4:d01d:5d39:920c%7]) with mapi id 15.20.5458.019; Mon, 25 Jul 2022 15:57:08 +0000 Message-ID: <225e0c1c-03ed-3633-2fb4-1cb5eae04596@suse.com> Date: Mon, 25 Jul 2022 17:57:06 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Subject: Re: libiberty D tuple demangling Content-Language: en-US To: ibuclaw@gdcproject.org Cc: Ian Lance Taylor , "gcc@gcc.gnu.org" References: <168911bd-ba44-e197-ffd7-c687a6d7eb06@suse.com> <1048129500.281965.1658750733793@office.mailbox.org> <2c1ee0ba-0dd1-2c70-4bb7-697c551f113b@suse.com> <1574845149.11500.1658763923107@office.mailbox.org> From: Jan Beulich In-Reply-To: <1574845149.11500.1658763923107@office.mailbox.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: AM6PR0202CA0043.eurprd02.prod.outlook.com (2603:10a6:20b:3a::20) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b6d567a8-db91-47ed-34c8-08da6e565433 X-MS-TrafficTypeDiagnostic: HE1PR0401MB2393:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 7+vN+hGzUwaHSzPmKNofRmCEok1guKeHyNxENSOR8C18NL+CdXyVLUFAyxGGIa+bYsksHHhY6tYeynT4VZnuC4WNZ6osvFCNGD4d1RHhsQ6G9jAZUpPh4Mhfm62Ncy7SESRj3j0rZYwwokg1jZC4nsA69Y2lcTTklYo3KpbrZaGqB6U2qZ1Y/Kwu09D2PGCgkm9ZY+X2CNtBlYQlPPqwSIBdiAlbFqx4GylafenUrDiXps5AYvCmjHIZHNMTffbZvK3sTa2IQhDskeaJsZZ88AeU4PFerqGtj9T8q8/Nw8U13BCVPRS+AaAxKpxJHaxw97UCitEHce7cXHKNRl9xgqcSGUncwxrcHNrZkbNR//9T+LEWoLHL66rqQBxFASGzl6l1oMlE5L7RNzKFt61SYmsotrd630p5gqTpioj4WImXqJe/zRorrA1tyOR4DWwsBOADfkhFXl3R6don5+cIFtd04omr6OxlHqotB49iC3pqiSGI0nDazBH/aTaGmfdQ2b4yI6L4rFPGvfwCpcjS2naAbJKnXa+KJrdH9wv5wFivXZPTMbPrSNa6J/19gjOqAVcVqQEcQl7/fgeLAKhx3Fb1kgYrtK//tTi0iWPinPAnSbQrGLuf5kQH/b263ZXLOJBvICmfUjVXrdUZxH/0SrV8sS4H3zkSOlOGXOD3jJyCPf2IdyORUe3WyaMv/Ukqd/UejUJcRa6SbikyBZ2EJBU4IriqhM9PAVGoUhgTxbVMMfQA7SggUoenGozxaPTIVhu0tn8AyEEyfMm1yn0TaZOKrmv4d0soduwUNsefx5NXPczs/ZtAuHLTaXJnmH/3WKJfp1FTr81ZmTaeh5ZdZNABJ++GOkMcpzEtcRybvto= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VE1PR04MB6560.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(396003)(39860400002)(366004)(346002)(136003)(376002)(2616005)(41300700001)(66556008)(66946007)(4326008)(8676002)(66476007)(186003)(316002)(19627235002)(31686004)(31696002)(86362001)(36756003)(6506007)(6512007)(53546011)(8936002)(26005)(83380400001)(38100700002)(2906002)(6486002)(478600001)(966005)(6916009)(54906003)(5660300002)(3480700007)(43740500002)(45980500001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?QlhidnpJamF5eGcvMFZKNitJSndFUzRrUFE4Lzk4eEdiTHpGb3Uzdk52dWI4?= =?utf-8?B?T3pwakhNbWVuYk4xd09HbGROOGNXbWVrVXp4bTZMcjg0bkdIM0RLdzNIbS95?= =?utf-8?B?L1NnQmphNFFsRHhkQXJtL0FGejhFaDgrcWpWTURmRTMzWlNMQ1FqRC9qRU1n?= =?utf-8?B?emR4eDFFeTNnK25aTzJMbzZ2UGtHU2pqVmZyTkxCNmJiQ0xXaWxtNXE2dnk5?= =?utf-8?B?L04xMFE0TUZRUE1jSExTT0FmazRhMCtIeFFLUFZqSi9ZZ0lLcGU4TGJkVHA4?= =?utf-8?B?bGRoNEMzZjZjcVc4U3pnVEp4WUJUcFppem14STB5aWx3aDVOeEsrSWpNanVE?= =?utf-8?B?SjExWlpad055RXhUL2gzS2dxOFVjQlgrV3pVWEk4bStzMEcxeGZ4M1JLaFdj?= =?utf-8?B?ZWRMMzhBWS9lOXBGTm5PUkQxRUVjR3gwQWtmVCtBZ2xwb1NSMDRacUhzbFd2?= =?utf-8?B?SzhROGhvVVVmd3MwUGh2QkFBbXowREVxU0RKRnU3TVkyVXVBWFhUUWZYc3kr?= =?utf-8?B?YnQxdGRSTzRXMWxyT1FPT0tlQkxtRmZ6RFFLMno4TXZQL3kvR0djWWpRVElO?= =?utf-8?B?aDBYMUV4OWs4d2JtM1czdWhDWlZkeUZNc01OVUEwcllaR0FrUFZNWmMwdlEz?= =?utf-8?B?QTREaGVVdzFKejdkTWkxdHVlelJ2cmtIYWpxdE1RYzJvNzdOV3dWRzRjdGpX?= =?utf-8?B?bUlOaGVhb1Q2N0VIZ1lsaXdoeWZMM3FRUHpjdUk4MnNvc0wzZ2NsVkFEQTZ5?= =?utf-8?B?cWNkNy9NbllsbUhmdWh0c3dPNFFncVY1MlRCNmhMaU1rV0F0T3liQm9VK3E1?= =?utf-8?B?ZVhBeE1QSjFIOWZ2MUM4Nnk5WGZuS2cwdksxQk9EMjhGYVZkaE5lejM4aXdx?= =?utf-8?B?TjZsL0NwbFpxazhRaEZTNm1LVHJOd3prR0dvVVlNc2dvNm5XUlhwRU1iOUxG?= =?utf-8?B?OUgzQmR5UkFNeG1iOWV6VlhNLzFwS0hYbWsrWHFzYVIrMmtEQzhsaWwwdmlK?= =?utf-8?B?NkZ5NUs1Qmh1VEZtcExqcktvanNESHRNOWdOQm1zWExXM2FSMGpweUdXbWZl?= =?utf-8?B?Q0FMVXZ1WEdtRThRZE8zWHB2UGxMa2FpbURnSGE5TzBscmNXZlJMWEhZR2hn?= =?utf-8?B?YXNrOXhJVG5mQnNVNTRSZFl5OEhTaEtGRUZCdGhFZ2gwRktwSWJxVWtiL0FW?= =?utf-8?B?Zm1aak1nUm5NMjFDeG5hdnRZNFdURXlXY094NGxHMjNlQTBhb1diaVRtWVY3?= =?utf-8?B?ZEhZL3lQNGM3NHM3ZlVCbExmL3Zlem5JRE1COS9qZEtUZ2FCMXJrdlF5MVli?= =?utf-8?B?UTNmMWwvcE40SnRVcGdqZ0xHYWpOUWFTbGl4aVpDZUVabHl0OXRSQ09YZTQ3?= =?utf-8?B?bUlJOG1BZ1JnTXo0WEd1bzl5bkJiUEg1R0ZFMFpsS1V5SlRxeUo4cWc1YjRF?= =?utf-8?B?c1hCaVFnVTBPTWQzSGdZYWFJZ3JBSDJmZEpCTkxBWDZxWFNXeFUvOEw2TU5L?= =?utf-8?B?QktFbzRIdGVZclROWDd0cCtUTWlDUUYvWG9QMzA2SVdvanlVVjY2S2RXamwy?= =?utf-8?B?KzJIZjYyYWZjK2pzNnFiVnRQcDQ3eEdhSTNHM1V2alFld2ZiekRnZXh1dXlp?= =?utf-8?B?Y0dLYVBOak9RbDdPVU5WUDh2SFlyR2hyb0tvRHVYdHRkNyt6ODRYU0luRWVE?= =?utf-8?B?WHpVSWF4M2M1WlNmWlVCRm5vWEtmaFRvRVNnZXJTWVlSZDdPNkpxbHRqd1FU?= =?utf-8?B?WDd2dnhCNGhkWXNhaUVBWldpMHlZQkpJTmNWSjBkRDZmemlhK2pJSDIzd1Jj?= =?utf-8?B?b1hDY2NJMWlrWGFFWVZvNHBhR284UXlSTm80ZnV2Z2ZLM3pkL0VRendpUXhq?= =?utf-8?B?Tk4rTHBvcGc1YVk1UG13NW53cDMybWdtaDJ6UHdQSXFkWWIyRUo5eGNwQUlQ?= =?utf-8?B?ME1LaDZLbWkwWGtnVVR2MElpcUExVUJ6R0hlRzZYODBYWC9CL1o2STIyZ1Ur?= =?utf-8?B?am5naWt3SUNOVHk3emxzRVB2YmZVR1dvYkR3TmNrQmM3dUw0dVNSOHNQbTFu?= =?utf-8?B?MnFZMEpsczNSM3NkblFXQy9qNEd1L21SLzRtZ3YwRDNVdVdON2JwaDVnQXQ3?= =?utf-8?Q?iZZQunROyJrRGX9OzuMQq2DXy?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: b6d567a8-db91-47ed-34c8-08da6e565433 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jul 2022 15:57:08.7731 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ff9RVzYVjib8iY6Nbqut0zT3CypvMjpcoEgITGcMVMuWHDTHNKLSkuB6AX80/UAjsz1KSGfkXqsnO1xPavAR9A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0401MB2393 X-Spam-Status: No, score=-3030.6 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 X-BeenThere: gcc@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Jul 2022 15:57:14 -0000 On 25.07.2022 17:45, ibuclaw@gdcproject.org wrote: >> On 25/07/2022 14:13 CEST Jan Beulich wrote: >> >> >> On 25.07.2022 14:05, ibuclaw@gdcproject.org wrote: >>>> On 25/07/2022 08:45 CEST Jan Beulich wrote: >>>> while commit 3f30a274913b ("libiberty: Update D symbol demangling >>>> for latest ABI spec") mentions in its description that tuple encoding >>>> has changed, there's no real adjustment to dlang_parse_tuple() there, >>>> nor are there any new (or replaced) test cases for that. Was this >>>> simply overlooked? >>> >>> Is there any specific example that fails to demangle, or are you just skimming? >> >> I'm merely looking at the code alongside the ABI spec. >> >>> From what I recall, there is a couple places in the dlang_demangle parser that handle ambiguities in a mangled symbol. The ABI change only added a terminating 'Z', which makes said code that handles ambiguity redundant - but of course kept around so we handle both old and new symbols. >> >> It's not just the addition of Z at the end but also the dropping of the >> number of elements at the beginning, aiui. It's actually that aspect >> which caught my attention, since the ABI doesn't talk about any number >> there, but the code fetches one. >> > > Went to have a look at docarchives, but it appears to be down (that's on me, I have been meaning to migrate the service to new servers). > > Yes, your right, the number was indeed dropped too from the ABI. > > https://web.archive.org/web/20170812061158/https://dlang.org/spec/abi.html#TypeTuple > > TypeTuple: > B Number Parameters > > https://dlang.org/spec/abi.html#TypeTuple > > TypeTuple: > B Parameters Z > > However, it gets worse the more I stare at it. Looks like it was not understood what 'Number' meant in the old ABI. I assumed it was the encoded number of tuple elements - same as static arrays - however what I see in the front-end is instead an encoded buffer length. > > https://github.com/gcc-mirror/gcc/blob/releases/gcc-10/gcc/d/dmd/dmangle.c#L312-L313 > > So the loop should instead be more like: > --- > unsigned long len; > > mangled = dlang_number (mangled, &len); > if (mangled == NULL) > return NULL; > > string_append (decl, "Tuple!("); > > const char *endp = mangled + len; > int elements = 0; > while (mangled != endp) > { > if (elements++) > string_append (decl, ", "); > > mangled = dlang_type (decl, mangled, info); > if (mangled == NULL || mangled > endp) > return NULL; > } > > string_append (decl, ")"); > return mangled; > --- Oh. Then two of the testcases are actually wrong as well: _D8demangle4testFB2OaaZv _D8demangle4testFB3aDFZaaZv I would have assumed they had been taken from observable output of a compiler, ... > On top of that, TypeTuple is a compile-time-only type - it never leaks to the code generator - so the grammar entry in the ABI is frivolous (although internally, that it gets a mangle at all would save some memory as duplicated types are merged). ... but one way of reading this would make me infer that can't have been the case. Jan