From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2085.outbound.protection.outlook.com [40.107.22.85]) by sourceware.org (Postfix) with ESMTPS id C35053858D35 for ; Thu, 1 Dec 2022 17:59:27 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org C35053858D35 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=XbzaykbX4K1Uzm7eU0Tk0ja1DNeCGQj/J+1M9hJ6DxqM3r2zr8knx2LBnFyaNdWdue9nUxNZ41wVXAVk4hkELZjYMG1ERh1qtk8DfXR0Tr9bxM4nvfb145ebqet3tqNvU0ilIDm+Vsh5nfG4wIngNNqKqNXdkN1qjrpc2+N1A6KtTlgjjJ+y5PUZjvcqhgoC9BGYPCF2vvkRKrvCQB7T5hMTy2HQ5ZneajSWH+2VY8uMJ3ibUuWcAi4w62604t6V/WMkoMpl2gRF8t0M2mMcVm2kZF2vvg7mvsVwQ3aAbOXlD921SOFs45A61P6od7NvoviI5I+IyLLKg7FeJAmohg== 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=ipdH2Vsasbs7TKUnGEsjI/q2MPVs2djgFVJTaq0mF7Y=; b=HFVyuMFZC1ZRVq9SSJf0S0UdNPSJx3z9/GFbQ80a55eegryAd+icjFDmf1jkxAPaplI4LntNjbPDP1PMYs/fM9TIYMkWtyAb74xiLNlPjy0v8i6dVxr1eoxgjMuk9rdd3+kCAHORsazRgeTZV9cfJEcmvVF/puSdJMMzpvzRAEizEoK31t6AztkgyGyl99Vyb0Jgm7Cqf8YqhSGmldQRN7/s4LfAGk3yBYoNqyoPwsAUjVMSnxS5rLYBe9O62/8S3t7xT49A1CQ+mmqxbmgGcQm3o6gjXVhidNMwG5psMaNPmjoJ8sABhdUhLScT4I2HCL/KrbzlBJEDMKLVpq2IUA== 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=ipdH2Vsasbs7TKUnGEsjI/q2MPVs2djgFVJTaq0mF7Y=; b=l1hZ8bdxxxVwxKkTVKWlHh0I951ID5XBQZB1M304huA4ZrB5J31eqG03IGEBNo4QWg2SH99NeZ5C9CvAuU2wEU+li9ZUrqKdq1tjXt7jhA9+0P2KMJ1BZJZdG/sCeDKdLRwvoVowEwxJ4IIDySKeZshMtMucEaUusKAoS9Uk3Mg= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from PAXPR08MB7201.eurprd08.prod.outlook.com (2603:10a6:102:20b::17) by DB8PR08MB5418.eurprd08.prod.outlook.com (2603:10a6:10:116::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5880.8; Thu, 1 Dec 2022 17:59:21 +0000 Received: from PAXPR08MB7201.eurprd08.prod.outlook.com ([fe80::40bc:b698:5059:f02]) by PAXPR08MB7201.eurprd08.prod.outlook.com ([fe80::40bc:b698:5059:f02%4]) with mapi id 15.20.5880.008; Thu, 1 Dec 2022 17:59:21 +0000 Date: Thu, 1 Dec 2022 17:59:17 +0000 From: Alex Coplan To: gcc-patches@gcc.gnu.org, richard.sandiford@arm.com Subject: Re: [PATCH] varasm: Fix type confusion bug Message-ID: References: Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: X-ClientProxiedBy: LO4P123CA0677.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:351::20) To PAXPR08MB7201.eurprd08.prod.outlook.com (2603:10a6:102:20b::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR08MB7201:EE_|DB8PR08MB5418:EE_ X-MS-Office365-Filtering-Correlation-Id: eb4a8b36-f0a7-4883-33f8-08dad3c5c55d NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: TlnDdPOtxG6FLzbqv6EQTxb7LLrHrAnkUJFdLdLWgyzhvnowNK0eqChsnohifu14yyG7m39xaIVJsYlaad8cYyzf4A8P9oLoTgiAYkVAxkgnrZFYM245OAk2rMoZwWz3B2yT2keiil3MOygtOnuN0XLmBLnCMGKcBityMHuoCmdtp67RPmw0ogqUvT+JpMVbZuwfFqOG3bNqoyaIy0k1Ger3g0LeIECBspJBMgLF+a6fCf2CLEQ3SiCDtkLivGcMzUVK1YRD8TI6ykOFkbgswGYtpMXAIjoK+Tu1FnzYxap27TIuK3zql/Yl+HJvU6EDfRR+uwvSftR2Y5hqzfjp7yjwxZmXD5MWyH5aJwDJPQ8yIlXXd7dauheVmI7qO3lFU8yZY7bODgHl8In3s2+XT0sj3ZnJMq7yXcVM8x8nuhd8j3eMRQdP9lmSwjIe21whXGl6xlcHVwVKAAXKu1ZNod15OBiPcAAJ4oA7S7aJ1Ob9D0k8rDO9XxMhq8e3LO17qEd5wf5i34/uno1ttCINUDIU6jkJNQfSetK2+TmIQEwB2pWA+zZocpCuiiO/wDpsgsi7TdsdwyZC1rPwZZdpMH2TAAOHLZb9BDHj74YeZV8BdkSsGAAIQyPmrfbO6Xu9ISg8Pgx0tEmNlHMw4XXsTQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR08MB7201.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(346002)(396003)(376002)(366004)(136003)(39860400002)(451199015)(86362001)(478600001)(6486002)(6666004)(2616005)(36756003)(2906002)(186003)(38100700002)(6512007)(53546011)(83380400001)(6636002)(5660300002)(26005)(316002)(6506007)(44832011)(66556008)(8676002)(66946007)(8936002)(66476007)(41300700001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Qlp3Wlk1N0lUMUlFTld5M1NVeDJMWTU4c0NZVnF4cGkrZ1JKbkJ1cFhPWW5C?= =?utf-8?B?V2J3RUh2RU91aDAzbDdEVlZ3RzYvVVNKMG9DNGVMRm5aWDZYaEdkdkVHTTlF?= =?utf-8?B?WkxybGhtenAvazI4TVBTbE5MclI1Tnc1VnNUVUUvWE55UzBYTW5EdXZ0RXpF?= =?utf-8?B?K0xPcUNlWEV2djZUQ0NURWRRMXVzTU9xSnB6dDZxdUZrOUVyZ1ZCQXMvOUxI?= =?utf-8?B?eXdWRUdHZGRmRmIvV3kzc3dmT05zR3VVTSs4VWVid0pld21lQzNaeTVHT0lM?= =?utf-8?B?MkJIQWx2MUVtR2I4NHpTRTUyOXkya0hZT09oeFNmdENlTm5sUFlQVFhKczZ5?= =?utf-8?B?VTJlTFVyaHMzaitBVk05aHFac25tWFYrUG5PdE04ZmFGVnRPdS9qbXM5UjJ6?= =?utf-8?B?T2phS0ZkREgydk4yQ090d1JTRmtKQnM4WkM2b2YzNHVhRkwzMHowSWFQZG9Q?= =?utf-8?B?RmZISlV1aWVxRmUvaG9EWHhBSGdkTHpobWpVMkluUWxQRUN3ckpWelJ1NUFC?= =?utf-8?B?SzFnTk90L3ZPL3VkMW1WdjkvVHJhT2tFS1Z4b3BjR1MvQTJRY3pTL0lvTWtp?= =?utf-8?B?NFNoZmlDZENDT3E1WlYrQ2dYTDZNMm9IYjk5Vk85MFZKbFVLM3crREx5R015?= =?utf-8?B?VDFIOGRTRzk0S0Z6dDZJVEhJSndMLzBsWnBYb0lYM3VldXljMVJkdG1TOEVZ?= =?utf-8?B?Y2s4YUg5NnBTQ01idXh5YU16WjZ1SnRlNmxRclZUaUxRWkpOTllqOHFaNXBJ?= =?utf-8?B?S2J3cG8xU2xuR0o5c3NSUkdwdHM1UEhtbjlZeVhlVUlxY0ZhRVFDcXRad2xK?= =?utf-8?B?QlFSb2paOVhqbTB3SitFNThFQWFNWEdSalAxS0VaUWFjbmZUU0t0WTYwdjdF?= =?utf-8?B?L2tlNjRKaURkWUppZFUveHc4bFZmTm54QjhlblZxRmViR04rNm9xZU9kM3dK?= =?utf-8?B?Ri82Z1B0ZmRQZGtqL0l1MGhvWmE4NVhxTDFpUUtGc1dsZWhFbEQ0SnB0T1dk?= =?utf-8?B?UnY0Mk0za0N4YVQ5d2RyYXVFWHpLaFdhN2liVkdFaEZsRko2OTJ1RWpHSlZj?= =?utf-8?B?T0NiRzQ1M3NLVVhFNlhhMnBOd2lZMXhrRFkwKzVJNVFRRXN5RUFCdkh2OTR5?= =?utf-8?B?Mk9EaXR6TE5ndmRNK0ZyRnZCcEgxeCtOU2pmQ09GTVUrTlFVQVdnc243bldM?= =?utf-8?B?bnRpcEljUjd5N25kL1dvaEJQa0hReEZKam5jdXhON1ZlWWJyU3Y0SGtXZ0Zv?= =?utf-8?B?V2lWZUpRMFNhbE8zb1dJL3FYMm95ZVQ5TzNKWnI4UmhiQ3BkSFh1b0doRWZx?= =?utf-8?B?U3cxQVI0MWNVZWlhOHVjYjhoYTRQNEdKSzVDMkFvdDB3ZVRPVHVPWTl2RnMv?= =?utf-8?B?SGp0d1lZM09wV1k2N290RUdQdHBEaWNuUWRTdGl5RmY5amVCUlJnZlFrVDF3?= =?utf-8?B?OHdzU0wrTnlPd09vOVNMK081Zkx6V3J0a0pwQWNNbXQ3NUpzTEZFemYzZ29Z?= =?utf-8?B?WmhsOTlkL1VXVFh6eTFUMWhuWmpvWkpWUlhEeGZjSTZlM3VlQmpkNUVGN3BR?= =?utf-8?B?QmVBckZ3L1JlQnZKZEh1cG1wZzZsZXpiQ3Njc0VEUnZxR1pUUCtZa0hYdU5K?= =?utf-8?B?ZnM1YUNqOEFaNWorYmlKNjhZWTczRWlxYmxxbzNHZkM5Ui80R0FlWUpFa1dh?= =?utf-8?B?b0l1Y1MrZG5ORnBIMkgwLzdhbWMyTUw0bmtOOGlFWXZUYk1QdzFCcHNyaGRC?= =?utf-8?B?V0hLbDlrNFM5TENJUGpPRXhzQUpHUk9LaU8rSmxxYUo3NFY4Sm1OdjhBSUR2?= =?utf-8?B?cHN5ZU5nU0Rvb0N6Q2lITjJBeTgzQVgvdmtQU0xVZnJJQ3M3aUVhQ1hucGJi?= =?utf-8?B?OEVCdjc0b2p4ZFdUdEVwMlhMYllGL3NnMnZpNk0ycHlxdzE2NURmQU5KNHpm?= =?utf-8?B?ZVZIOXhDTFVGYjBRc3hPcTZ6VklPazZCMzNMZmViWkN0dWtsbFVVNkVxbTZl?= =?utf-8?B?cEpKaDNBMFdmMEtCdE9aMWhNQ2ZYRUlEUGtZM2F3RkhFb3h0czMxNDFmK3dM?= =?utf-8?B?L2ZHb2FRQjZ6NktWUnRVTW83bHliOVNmR0dhVGFxZk5NS1FRcmFvTm1pbW5C?= =?utf-8?Q?PlEwxo6c2umvoXsrRZeMc3l/B?= X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: eb4a8b36-f0a7-4883-33f8-08dad3c5c55d X-MS-Exchange-CrossTenant-AuthSource: PAXPR08MB7201.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Dec 2022 17:59:21.5064 (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: EaTdNejO9W/PqzIr9rcdmIV3/AuQL8lxY6llUNBxDBFqmehdvRuHAyx6eltfIZLyga+M6XHDz0nWkBHBWL0VCw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR08MB5418 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,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 01/12/2022 16:12, Richard Sandiford wrote: > Alex Coplan via Gcc-patches writes: > > Hi, > > > > This patch fixes a type confusion bug in varasm.cc:assemble_variable. > > The problem is that the current code calls: > > > > sect = get_variable_section (decl, false); > > > > and then accesses sect->named.name without checking whether the section > > is in fact a named section. In the surrounding else clause, we only know > > that SECTION_STYLE (sect) != SECTION_NOSWITCH, so it is possible that > > the section is an unnamed section. > > > > In practice, this means that we end up doing a wild string compare > > between a function pointer and the string literal ".vtable_map_vars". > > This is because sect->named.name aliases sect->unnamed.callback in the > > section union. > > > > This can be seen in GDB with a simple testcase such as "int x;". > > > > This patch fixes the issue by checking the SECTION_STYLE of the section > > is in fact SECTION_NAMED before trying to do the string comparison. > > > > We drop the existing check of whether sect->named.name is non-NULL > > because this should presumably always be the case for a named section. > > > > Bootstrapped/regtested on aarch64-none-linux-gnu, OK for trunk? > > OK, thanks. I think it's OK for backports too if you like, > since it's a regression from around 2013. Thanks, I've pushed the patch to trunk, and will backport if there are no complaints after a week or so. Alex > > Richard > > > > > Thanks, > > Alex > > > > gcc/ChangeLog: > > > > * varasm.cc (assemble_variable): Fix type confusion bug when > > checking for ".vtable_map_vars" section. > > > > diff --git a/gcc/varasm.cc b/gcc/varasm.cc > > index 9dfbebbb915..6851201b6a2 100644 > > --- a/gcc/varasm.cc > > +++ b/gcc/varasm.cc > > @@ -2400,7 +2400,7 @@ assemble_variable (tree decl, int top_level ATTRIBUTE_UNUSED, > > else > > { > > /* Special-case handling of vtv comdat sections. */ > > - if (sect->named.name > > + if (SECTION_STYLE (sect) == SECTION_NAMED > > && (strcmp (sect->named.name, ".vtable_map_vars") == 0)) > > handle_vtv_comdat_section (sect, decl); > > else