From patchwork Wed Mar 13 14:24:39 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cupertino Miranda X-Patchwork-Id: 1911736 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=oracle.com header.i=@oracle.com header.a=rsa-sha256 header.s=corp-2023-11-20 header.b=bRuZano2; dkim=pass (1024-bit key; unprotected) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-oracle-onmicrosoft-com header.b=tZBCBDgO; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Tvt9D4lhXz1yWn for ; Thu, 14 Mar 2024 01:26:08 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id CAFF63857BBC for ; Wed, 13 Mar 2024 14:26:05 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by sourceware.org (Postfix) with ESMTPS id 621293858C3A for ; Wed, 13 Mar 2024 14:25:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 621293858C3A Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=oracle.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=oracle.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 621293858C3A Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1710339940; cv=pass; b=CE4N7LJHhyyOHt6S/bSQ0nul/0PmFQaN/gpdHLWrROWPyzQZ/+foBMuH2dTZL1cO15IhIp1vOnU5BAQk5syekzUoNjtQR2ClvxIMivqEorg0ziUwVOfDRpNVqdFVIg1/xr+PnyQlaJ5c4jsjjOpEkVPk2K7t+XVOrr+cSp8mtX4= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1710339940; c=relaxed/simple; bh=y+Lg99wBI7g6ZfXSknrqTVbApioTjb8gYt90TT2gr7Q=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-Id: MIME-Version; b=TUkGKR1Py8UcqftLGFXj/R/egFadWm8fkLOQY0i7Rcici2hOOk7BCTb8FXk33WG77HT/JryNlDM/tX71NlKu4CuvW6JUBPwkpB4xIoWnAH5rEQW4RAhdpWhPwAuO+S8t1WQ3NEukyDgLNnwCS1rBNO2G7hvPD0HrEoHssvBM0+0= ARC-Authentication-Results: i=2; server2.sourceware.org Received: from pps.filterd (m0333520.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 42D8hrqp000680 for ; Wed, 13 Mar 2024 14:25:38 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : content-transfer-encoding : content-type : mime-version; s=corp-2023-11-20; bh=y2EuxRfqPMG5QkGo7gw+x+W39S0hjVC/y3sUD2o6mys=; b=bRuZano2TG/VRdDKfF334MDAsnfzgY9MvRhKfnoAbd+Hg8omP4cm2L95L1kV055YxVMA jbp4EsNKKr0cTWBR53qijd1HtUWxJP1cYAA2l9a7EBkujjedv1QVbC5OZmau0xsPK1xg pwhxU5MwdFvqAHFNDP6PDfbsLolokeRE6sRhJaJqbQ+LPLUzEvDkOg6IlXOjcOe4QhlK IwHfPKJhdjHvCLbskYxc1WYOgrLXFehxzkUPIovPs9NH9czuJzRRYswIu5YqwrmbxAiv xD9Whp1L6xAOIJLArR5ClXJsKoW5235CYo7Mn8e6SVvlrNhs02M0b78h+BYv4ZRycYZb Ag== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3wrftdh7b7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Wed, 13 Mar 2024 14:25:37 +0000 Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 42DE9UPZ033788 for ; Wed, 13 Mar 2024 14:25:35 GMT Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11lp2169.outbound.protection.outlook.com [104.47.57.169]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3wre78mmhm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Wed, 13 Mar 2024 14:25:35 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HzXYgauvSGW9gIhzbAfuf/FKzP1YG1DRO3EQ5EdrZVKcmy8ROmFM5iED8Hyp7XTM9Tiwl2aXs7ho6HK0ayMpAKBbxad2dmSG59xyOKl2ZJpyLGDxOC+ncbraemZ8IknNvisbOtxnYNUKlB+oQcnp051ixq21PSdJvV0nklmCntdElG3QvVCjKlh6PG/O85coGU7zwSndoz3PZ1kZzOECZxb961PfWgo4JfIXQKqQ54qtEe+C37cdYI1eCAAwicEC1vdu1l0md+IBsNX6Jyw4LFJFSzaaAZcy2xaq0d0ELES6heznuin2fADPFR3obhrUPwtAmQt/FUT/nETLzj4E6w== 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=y2EuxRfqPMG5QkGo7gw+x+W39S0hjVC/y3sUD2o6mys=; b=j30t6GdmsLoIQoDEiQJ1eMQne7OaF4+JoXP432tL3OE30QbosWdfgvZN9RXcZ4n9Kvm/kBsh5O7xcZc4omintf7pxF2zUQCbf5NZxnJ3GUTRy7/1l+YT0zmUGiBfkBGWaN5yyV0PX1Zv/nck8laNKeOTQGnJW7v5zwprcF9ALnBampAtmFSrcQBS0y3q0nEQeFNOQ9PW2qdUKCyXDufMvTnbkL7/64CMGQRO3vEkXEClAM488p4EV2+t11gCWJ8t5BOY5lLglN43qrNWa9TPLYHoIXys4qZLldYZ1b9qIMcGJfKR35t6BgzH0my+k+WewtD7So/sw5ewH5ETekMgXQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=y2EuxRfqPMG5QkGo7gw+x+W39S0hjVC/y3sUD2o6mys=; b=tZBCBDgOn97t0TvWOFk887KwppWgbWRG3vpUAZcnpa9WUUIN6Sr/MrEVdkoF7KOAlicOUaEOc3pbu68QH+73nXAyo90Vjc8a+bVkR4j8y1xHxOBUIwQP/P4NKlQCl0I7FGg7dK3r7Y91Hhqoz+FNXrYpxof39KK2T/OzBaQXTD8= Received: from MN2PR10MB4382.namprd10.prod.outlook.com (2603:10b6:208:1d7::13) by BN0PR10MB4888.namprd10.prod.outlook.com (2603:10b6:408:115::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.21; Wed, 13 Mar 2024 14:25:33 +0000 Received: from MN2PR10MB4382.namprd10.prod.outlook.com ([fe80::8aee:c094:84e2:9401]) by MN2PR10MB4382.namprd10.prod.outlook.com ([fe80::8aee:c094:84e2:9401%5]) with mapi id 15.20.7386.017; Wed, 13 Mar 2024 14:25:33 +0000 From: Cupertino Miranda To: gcc-patches@gcc.gnu.org Cc: jose.marchesi@oracle.com, david.faust@oracle.com, elena.zannoni@oracle.com, Cupertino Miranda Subject: [PATCH 1/3] bpf: Fix CO-RE field expression builtins Date: Wed, 13 Mar 2024 14:24:39 +0000 Message-Id: <20240313142441.180242-1-cupertino.miranda@oracle.com> X-Mailer: git-send-email 2.30.2 X-ClientProxiedBy: AM4PR0302CA0036.eurprd03.prod.outlook.com (2603:10a6:205:2::49) To MN2PR10MB4382.namprd10.prod.outlook.com (2603:10b6:208:1d7::13) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN2PR10MB4382:EE_|BN0PR10MB4888:EE_ X-MS-Office365-Filtering-Correlation-Id: 9e62bd44-9a09-498a-c67b-08dc4369714b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: CqDn7c+2Yk8n4Q9VRCBmks1/gEZqjTcBYrvCsjGDEwBNeeNUVXyi/qPaIWgLDQrtwqRJ3J59s/8dclZPTGUDbH9dcmtVN1FT9QdpKX/xT7Jba/Ss2PKqTXTs/jvQuRQTHt4LS8zoV/GVZC63vq77yve2mzoNtrVP7IUF82eclvrGo9cxHF9OeSWMNU8xKgIIleBYvCiIbXlfpueJM+KKRxefA9on5hgGrbycYn7HvvBKFYU7gj1Ry6nh8pvTQoXi4j8n6274G4qqI+1WmnNf3PkpeeX+Ea9MaO0JUqFT7hg8dggasgCbPDO0gWDXwVgFomBhp9XckTKDzrlxr1NJEztBi5pAsTdDE/iu6Fp1Mr85qsGuk45immztNa/bcCJ/KojuNOQzjyFRA88E/ZBxv5/GbFScG/bgdoKLodVc3I3qFjI1jD4I5C3M8Wn2HZCVTHJ6I2KYr1VfdFeDgM2Hq7Gua6Bt5YtfkhXAA4XDybW9SW0D9WdNiXocyONyyJ6GqSVjAf8Ld5zA3uSNLAif+N61CGRnm5qG7Y+unJxPXVU6saqJdBSCdwt3NwOJPxCVOtKnGAmvSnG7gbuqKNQvy9R+pjKnGgDrEP3wY8gvlSsfJZSC5ksh5aFLyGRHTykO X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR10MB4382.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(1800799015)(376005); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: CM55e5Yxn71EfwC3m2CN/ONuTvQcTBx3c/K6QNeRDWdoSjvmg/RJeSwuQ05w8Wih5qa8+dR3Wl8n2dvfQPx2mebY3pYCcdUZvDTMSdjw8MtnB/+PqYE1othCaPA0nfbzpqqwNRxivqC2z+9f0a7XGfpuVbz35SF1Pe3bcK/BYDlNcjBu9T2IRhFuUjASsPDcax4qfko2h6xqciGH+ix4XGFQ7qbz/n083tcKOltxcIcG5kZxxvc+P5whJTf5SeZDx7I3fxP9J1cHODebF6L62hsLhDmPhl4BRy0RCgslxvWXl9OJFukAmSt/E2adHZETqg8mrWttGS2BuQET7ERAJu3WWHm6GIYRSE+ugaBXmbT6o0ItCzeXq8zpZaKs2dNrT++oFndmemjnQt1cWuGomRaeZTECDE8tl9uZBgYVZm1aoQxAlP8BrPRHGcavJA1Ra2i1GszRECE9UaVnwT33ZeGfUKI2+ru1Kf/jdS5iZs9f4W5vVkerb0TcXL9nSvGovMXSsfTB1E5RPVwGYHtCmNoR1SsvaIFuGslBryN7eva2tKkLOVbz4YX7FMIhlAKDNT+HSK7GUt7tlr+YM9qZNiPPqLCX9oOxQJEq0nZn67NfC6dpFYXLUWI4z1ij28uzc/rBEa62/R9no8XY41yk+duBvOSw3nF3OSGq1cHmd4Fva1rufHPb6faibqjChmU9vVh20F6vzMNBzo8uJmMsPlgDvd8YBEIlfsn/hrUE8F8FDz4VE1bOU2bcMmNVDU0rJYw+pvrWw2FGnvIGtjbJ4GdULg3xv3Im2GmwNaNmBrEXlbBt59lgyJl9fqvek25sqZQhmtWWSjn7uRYJpTu46QgDL6aPVH6Q05fwTVD38sNG3wtISkkqCiQ48kpxyoVUU8BT9ox02Wj7TqCvmyqr0tPdX9jz5uCzrvKMmWnVWBpiOeA3WJjPOvl1dKf8ZnrqA8iq5kDM3zd7jP6RgpFsEiNFWlorMMXN4gQvuooWcuKUMi2bBzQa3Kk0ureYEdgZpkCx0IVDeP5qtLjX5xgEtKQRs3VHuie5q3Nyf7SYfRwm+WfCEvnpl12aiaV/fQGXRajCZCP0qkEkA/zmon8YWzhFOGBm7dlHMTVOWRUzyawwfTo2E1Bi+KuQK/rpUvRDSHs5iLOVqU6dLQaJyZNIImmpp1+exrHNfJsQB9hwpnSy73uVvU7QWcWUlYFDSNpiePsepf5Oa7axQyY3hFt3S35zsEov4K8kMgfBGjR8r3Xdp2hquRPC5q3dV4EmaUMl/cxUjYNbKSYtljiZ/quiy/FByY+3jjLWLozbXypPIB67dLIt69C2n5uFvTwQUNoJoeauxafMiMoExNyjQBnwfLVhwLqQamtBrRbxK5nJ2dUm1G/mEvphoqOdIk2C7R6g49xdFX1eC8a9QOiyf5Jn4l5Ls9LSxLQFZ+cZnyPpUZuqMIUj7iRjk3I+VmGMur0BdUe+Hfk2gYwGu7VSs4Lm3pc5WCqP8oADAdGHMzg7fKgcNFB18kBvdkgYwpSdNsZlnCpfDYBgYfzSf+WCBmuXOtTqvqUeB1/7PnSmsV0pZ/Wy9SQ3T2ZrqJfqroeZbm4SADKxvbAvdUJ/UU0I8PLCFk7LNDwf0hmcTMAMEcz42Ts= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: MI89FpHpwalNFhdRp1jVYuPr3Z92CDBTEEUgfHT5q6MZ7a0TVsKg94mR20i3dKOv5vpKx8ta3nt059Ox3HA+T4g0BBiO0aocVNfwywnUPcAQ3wLaoHZoGq8cAyVkeDvrJHxEb/merqQVuRYYNi5FDoj46RTj9TGHYQvZVXe4isL0CQ9q1IYwbXypLecNyzfccosN+wIHplGDBKbld9NbtVV6Fya0hKcCKsGDKcI43+fFMlhyBc5T0gKmg0opmzBPwDInpVgkyLQSD60Nl7KMENnQF+wGFH0k+SWADG4WTgkqnqREL4Y8z9FuFPTTRa+qFjSeC0oylsrzG1x+1AG0YANNGpvs7RsUrRqCTrSz/7JLirWTh5WL1PSmqMYqC0DhMusB9vLOSLXuVFMetOcOuA/bqfSUN8BqVWPz1PgwKQuuZVVwuthvb7ZilqaPUYVxoNZhnUG4CmorKTiYvATx9CO8cWJu7DzSRiXmr7pv44VvobboGjxfHJ6tvU8lxJOeK+UQqyOqqeceTirdioqwNdCVpq2xZ40BrkOQ/4+OyNJ8tFNsX2z8fo1E/GbJfW5Nn5chyF+gvRSUXXQ3Bc2emMm/0RRDFnUmf0J+UVMsFpU= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9e62bd44-9a09-498a-c67b-08dc4369714b X-MS-Exchange-CrossTenant-AuthSource: MN2PR10MB4382.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Mar 2024 14:25:33.3204 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: gnHXR/Yr5z11w6UjuXyjMP4OnB4xlGMoK9xlg4SAEBNCd5yvxnunoonQdp5vQgzXJPZ0Jwz0pNePGlJ8WecLlRXSJmdosqbtYyj5J9gk0cE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN0PR10MB4888 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-03-13_09,2024-03-12_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 phishscore=0 mlxlogscore=999 malwarescore=0 mlxscore=0 bulkscore=0 spamscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311290000 definitions=main-2403130108 X-Proofpoint-ORIG-GUID: uSxcP7nUlkX8GpJDgf070zESPtTgaSXq X-Proofpoint-GUID: uSxcP7nUlkX8GpJDgf070zESPtTgaSXq X-Spam-Status: No, score=-13.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE 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-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org This patch corrects bugs within the CO-RE builtin field expression related builtins. The following bugs were identified and corrected based on the expected results of bpf-next selftests testsuite. It addresses the following problems: - Expressions with pointer dereferencing now point to the BTF structure type, instead of the structure pointer type. - Pointer addition to structure root is now identified and constructed in CO-RE relocations as if it is an array access. For example, "&(s+2)->b" generates "2:1" as an access string where "2" is refering to the access for "s+2". gcc/ChangeLog: * config/bpf/core-builtins.cc (core_field_info): Add support for POINTER_PLUS_EXPR in the root of the field expression. (bpf_core_get_index): Likewise. (pack_field_expr): Make the BTF type to point to the structure related node, instead of its pointer type. (make_core_safe_access_index): Correct to new code. gcc/testsuite/ChangeLog: * gcc.target/bpf/core-attr-5.c: Correct. * gcc.target/bpf/core-attr-6.c: Likewise. * gcc.target/bpf/core-attr-struct-as-array.c: Add test case for pointer arithmetics as array access use case. --- gcc/config/bpf/core-builtins.cc | 54 +++++++++++++++---- gcc/testsuite/gcc.target/bpf/core-attr-5.c | 4 +- gcc/testsuite/gcc.target/bpf/core-attr-6.c | 4 +- .../bpf/core-attr-struct-as-array.c | 35 ++++++++++++ 4 files changed, 82 insertions(+), 15 deletions(-) create mode 100644 gcc/testsuite/gcc.target/bpf/core-attr-struct-as-array.c diff --git a/gcc/config/bpf/core-builtins.cc b/gcc/config/bpf/core-builtins.cc index 8d8c54c1fb3d..4256fea15e49 100644 --- a/gcc/config/bpf/core-builtins.cc +++ b/gcc/config/bpf/core-builtins.cc @@ -388,8 +388,8 @@ core_field_info (tree src, enum btf_core_reloc_kind kind) src = root_for_core_field_info (src); - get_inner_reference (src, &bitsize, &bitpos, &var_off, &mode, &unsignedp, - &reversep, &volatilep); + tree root = get_inner_reference (src, &bitsize, &bitpos, &var_off, &mode, + &unsignedp, &reversep, &volatilep); /* Note: Use DECL_BIT_FIELD_TYPE rather than DECL_BIT_FIELD here, because it remembers whether the field in question was originally declared as a @@ -414,6 +414,23 @@ core_field_info (tree src, enum btf_core_reloc_kind kind) { case BPF_RELO_FIELD_BYTE_OFFSET: { + result = 0; + if (var_off == NULL_TREE + && TREE_CODE (root) == INDIRECT_REF + && TREE_CODE (TREE_OPERAND (root, 0)) == POINTER_PLUS_EXPR) + { + tree node = TREE_OPERAND (root, 0); + tree offset = TREE_OPERAND (node, 1); + tree type = TREE_TYPE (TREE_OPERAND (node, 0)); + type = TREE_TYPE (type); + + gcc_assert (TREE_CODE (offset) == INTEGER_CST && tree_fits_shwi_p (offset) + && COMPLETE_TYPE_P (type) && tree_fits_shwi_p (TYPE_SIZE (type))); + + HOST_WIDE_INT offset_i = tree_to_shwi (offset); + result += offset_i; + } + type = unsigned_type_node; if (var_off != NULL_TREE) { @@ -422,9 +439,9 @@ core_field_info (tree src, enum btf_core_reloc_kind kind) } if (bitfieldp) - result = start_bitpos / 8; + result += start_bitpos / 8; else - result = bitpos / 8; + result += bitpos / 8; } break; @@ -552,6 +569,7 @@ bpf_core_get_index (const tree node, bool *valid) { tree offset = TREE_OPERAND (node, 1); tree type = TREE_TYPE (TREE_OPERAND (node, 0)); + type = TREE_TYPE (type); if (TREE_CODE (offset) == INTEGER_CST && tree_fits_shwi_p (offset) && COMPLETE_TYPE_P (type) && tree_fits_shwi_p (TYPE_SIZE (type))) @@ -627,14 +645,18 @@ compute_field_expr (tree node, unsigned int *accessors, switch (TREE_CODE (node)) { - case ADDR_EXPR: - return 0; case INDIRECT_REF: - accessors[0] = 0; - return 1; - case POINTER_PLUS_EXPR: - accessors[0] = bpf_core_get_index (node, valid); - return 1; + if (TREE_CODE (node = TREE_OPERAND (node, 0)) == POINTER_PLUS_EXPR) + { + accessors[0] = bpf_core_get_index (node, valid); + *access_node = TREE_OPERAND (node, 0); + return 1; + } + else + { + accessors[0] = 0; + return 1; + } case COMPONENT_REF: n = compute_field_expr (TREE_OPERAND (node, 0), accessors, valid, @@ -660,6 +682,7 @@ compute_field_expr (tree node, unsigned int *accessors, access_node, false); return n; + case ADDR_EXPR: case CALL_EXPR: case SSA_NAME: case VAR_DECL: @@ -688,6 +711,9 @@ pack_field_expr (tree *args, tree access_node = NULL_TREE; tree type = NULL_TREE; + if (TREE_CODE (root) == ADDR_EXPR) + root = TREE_OPERAND (root, 0); + ret.reloc_decision = REPLACE_CREATE_RELOCATION; unsigned int accessors[100]; @@ -695,6 +721,8 @@ pack_field_expr (tree *args, compute_field_expr (root, accessors, &valid, &access_node, false); type = TREE_TYPE (access_node); + if (POINTER_TYPE_P (type)) + type = TREE_TYPE (type); if (valid == true) { @@ -1351,6 +1379,8 @@ make_core_safe_access_index (tree expr, bool *changed, bool entry = true) if (base == NULL_TREE || base == expr) return expr; + base = expr; + tree ret = NULL_TREE; int n; bool valid = true; @@ -1365,6 +1395,8 @@ make_core_safe_access_index (tree expr, bool *changed, bool entry = true) { if (TREE_CODE (access_node) == INDIRECT_REF) base = TREE_OPERAND (access_node, 0); + else + base = access_node; bool local_changed = false; ret = make_core_safe_access_index (base, &local_changed, false); diff --git a/gcc/testsuite/gcc.target/bpf/core-attr-5.c b/gcc/testsuite/gcc.target/bpf/core-attr-5.c index e71901d0d4d1..90734dab3a29 100644 --- a/gcc/testsuite/gcc.target/bpf/core-attr-5.c +++ b/gcc/testsuite/gcc.target/bpf/core-attr-5.c @@ -63,5 +63,5 @@ func (struct T *t, int i) /* { dg-final { scan-assembler-times "bpfcr_astr_off \\(\"0:1:2\"\\)" 1 } } */ /* { dg-final { scan-assembler-times "bpfcr_astr_off \\(\"0:1:1:1\"\\)" 1 } } */ /* { dg-final { scan-assembler-times "bpfcr_astr_off \\(\"0:0\"\\)" 1 } } */ -/* { dg-final { scan-assembler-times "bpfcr_type \\(struct T \\*\\)" 4 } } */ -/* { dg-final { scan-assembler-times "bpfcr_type \\(struct U \\*\\)" 4 { xfail *-*-* } } } */ +/* { dg-final { scan-assembler-times "bpfcr_type \\(struct T\\)" 4 } } */ +/* { dg-final { scan-assembler-times "bpfcr_type \\(struct U\\)" 4 { xfail *-*-* } } } */ diff --git a/gcc/testsuite/gcc.target/bpf/core-attr-6.c b/gcc/testsuite/gcc.target/bpf/core-attr-6.c index 34a4c367e528..d0c5371b86e0 100644 --- a/gcc/testsuite/gcc.target/bpf/core-attr-6.c +++ b/gcc/testsuite/gcc.target/bpf/core-attr-6.c @@ -45,6 +45,6 @@ func (struct T *t, int i) /* { dg-final { scan-assembler-times "bpfcr_astr_off \\(\"0:3\"\\)" 2 } } */ /* { dg-final { scan-assembler-times "bpfcr_astr_off \\(\"0:1:2\"\\)" 1 } } */ /* { dg-final { scan-assembler-times "bpfcr_astr_off \\(\"0:0\"\\)" 1 } } */ -/* { dg-final { scan-assembler-times "bpfcr_type \\(struct T \\*\\)" 3 } } */ -/* { dg-final { scan-assembler-times "bpfcr_type \\(struct U \\*\\)" 2 } } */ +/* { dg-final { scan-assembler-times "bpfcr_type \\(struct T\\)" 3 } } */ +/* { dg-final { scan-assembler-times "bpfcr_type \\(struct U\\)" 2 } } */ diff --git a/gcc/testsuite/gcc.target/bpf/core-attr-struct-as-array.c b/gcc/testsuite/gcc.target/bpf/core-attr-struct-as-array.c new file mode 100644 index 000000000000..3f6eb9cb97f8 --- /dev/null +++ b/gcc/testsuite/gcc.target/bpf/core-attr-struct-as-array.c @@ -0,0 +1,35 @@ +/* Basic test for struct __attribute__((preserve_access_index)) + for BPF CO-RE support. */ + +/* { dg-do compile } */ +/* { dg-options "-O0 -dA -gbtf -mco-re" } */ + +struct S { + int a; + int b; + int c; +} __attribute__((preserve_access_index)); + +void +func (struct S * s) +{ + /* This test is marked as XFAIL since for the time being the CO-RE + implementation is not able to disambiguate between a point manipulation + and a CO-RE access when using preserve_access_index attribute. The + current implemetantion is incorrect if we consider that STRUCT S might + have different size within the kernel. + This example demonstrates how the implementation of preserve_access_index + as an attribute of the type is flagile. */ + + /* 2:2 */ + int *x = &((s+2)->c); + *x = 4; + + /* 2:1 */ + int *y = __builtin_preserve_access_index (&((s+2)->b)); + *y = 2; +} + +/* { dg-final { scan-assembler-times "ascii \"2:2.0\"\[\t \]+\[^\n\]*btf_aux_string" 1 { xfail *-*-* } } } */ +/* { dg-final { scan-assembler-times "ascii \"2:1.0\"\[\t \]+\[^\n\]*btf_aux_string" 1 } } */ +/* { dg-final { scan-assembler-times "bpfcr_type" 2 } } */ From patchwork Wed Mar 13 14:24:40 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cupertino Miranda X-Patchwork-Id: 1911737 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=oracle.com header.i=@oracle.com header.a=rsa-sha256 header.s=corp-2023-11-20 header.b=S3tbCCRd; dkim=pass (1024-bit key; unprotected) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-oracle-onmicrosoft-com header.b=STPoL+kt; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Tvt9G4sqHz1yWn for ; Thu, 14 Mar 2024 01:26:10 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 61B493857810 for ; Wed, 13 Mar 2024 14:26:08 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by sourceware.org (Postfix) with ESMTPS id 3F3253858427 for ; Wed, 13 Mar 2024 14:25:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 3F3253858427 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=oracle.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=oracle.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 3F3253858427 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1710339944; cv=pass; b=XMLBFZzLeE3EMwOavBkAqKarIps9W6dJZnsmvGr91yip+I38bS7ZxJB03+qAx5VOVx0iwxNd2GUwZYswKviDEJngndmQ2y5vQ3g2XYTKwF0IO1z7cuSZHALzqSFgI4DNAYpqzALWdMzOyr6+W7LofmHzoMoP6hpXHRgyTHWAP9I= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1710339944; c=relaxed/simple; bh=R0aB/MosbK0Rz1Bf42mpBtjxF4a/i3J5YawzQuSZ5VY=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-Id: MIME-Version; b=qtsmDHCGI3xQWRmF9nktQKYEuBvC5C8y5rx/6zg2J1HZQi5Jvt0UX2fIHzKqSuHXpuFpERQsIf1b3AK3UUmaXxae+y1m82H2Am5fpfRsY3Tc8NihD0PT86AlXf87oQJnJWTnE/TnC8fAx1KCZ16SdeoGzk6bCz/uGzV63Hfmid8= ARC-Authentication-Results: i=2; server2.sourceware.org Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 42D8hkcj004505 for ; Wed, 13 Mar 2024 14:25:41 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2023-11-20; bh=JA6u6xIAWbLF8ecUMqtaIU9z58/AQay9HZysMWr4Kts=; b=S3tbCCRdPTZ7ARSDuq3TevUQEx4iEEUDtdwuxNCl6JZe1+WYaWA4o6bdR2085xJyRTnp lyScSvoxloHeAcE0zjjzqs+2b0d/2W38S1XwCiKAln8ZZINVzC0jD/GTs5flVKRN7jpF DKUpRAcY40tExvoBJdic9RzdjJp6aUXetQo2opOJS+v3ejbNDjgG+cLWhhrE+dP1SJL5 E+hsIPCAewUL7FMDx72o1f0w1ehN8zeAX8t8nVYY9xo+ilFVAUnxYOanuDTdJeDpi9jY Zz9HD1D1tBUJdxiCQtQPfYk8+5StRyUBaEMeMS81gYeqcwpbab8FI1XGE7MfuB6aaqZy Ng== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3wre6eh2h5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Wed, 13 Mar 2024 14:25:41 +0000 Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 42DDNmka028499 for ; Wed, 13 Mar 2024 14:25:41 GMT Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11lp2169.outbound.protection.outlook.com [104.47.57.169]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3wre78w1sc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Wed, 13 Mar 2024 14:25:41 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=g265D2Ac86VckAkysRW886VSZjL3unvoYyCabcagBhVmDSPfiSSM80sP+wzvLuG7l/+OQxuRNRccPw7v98dL6xtwIb2z4NtXWQOrn+Pl/FGw2yiF+FmXPHOONf34UOHwQ+z3EN6+1yVQ0AarL2mv2+aFdc/Ro71Dx27q+XA1G8CdXHHKEwLLnmzoIUObyfkqPj3fsUPLgjb676uZplwtEnmKMbWfpM+Sd22BOntQRlc4WaRJ2kc1dEEx+yGo6VVZFkbLl/e/q+ndD2BXGBgTKdNX+N4x8L7LeD+0mI37OTRVgAD5QLhbsvIP0dtfm4x/L7vZwkFX5g/v/z7FTnu7xg== 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=JA6u6xIAWbLF8ecUMqtaIU9z58/AQay9HZysMWr4Kts=; b=T0QDVx3KasCxo1ljtnQeZXyWz3rXDRl3/H+i0WfwjXxFJIfMijD4qjjbY2a4FjBrXgyTWkYsy8A3M7UnhBfC9IrQhZH/O5556z+s9kCr44o+Sru0H9nQiaijovFuIHhjtp/pRI//zUqR2+4YSOFZblyO9NObZFS51at+2ww5ViLbFn7w9c0UPNO/VGY2gxndZRWjNC9tYVT0e6KJ28BHnt/PxOSGkjvZL/jGpQQsXjZzXkLm7bnKJ7rdIFy0cYLhNHiLLfOnNirzvpNlBQKG4s6rMk59g78kc9ffkOhNOy+AfjBl80kZECEK/dVNOCFFMzk1j5R6GIv4lh/3KUYqhQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JA6u6xIAWbLF8ecUMqtaIU9z58/AQay9HZysMWr4Kts=; b=STPoL+kt5sPYKdm9JmHA4J/Ceo1XXZXuPoE/yA5VOGa+wNhcsrmo/2kAFatuhHR2o5ChQG8l5+g3wz5Y8R7LqyrDJ6z598nlYjM6kjEjF9YESlDaWgE3wKdKSHOTg0awEO5nXilgCH0yIV/2Qoqjpt285RVRHQNP1c+P/xqP0OE= Received: from MN2PR10MB4382.namprd10.prod.outlook.com (2603:10b6:208:1d7::13) by BN0PR10MB4888.namprd10.prod.outlook.com (2603:10b6:408:115::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.21; Wed, 13 Mar 2024 14:25:39 +0000 Received: from MN2PR10MB4382.namprd10.prod.outlook.com ([fe80::8aee:c094:84e2:9401]) by MN2PR10MB4382.namprd10.prod.outlook.com ([fe80::8aee:c094:84e2:9401%5]) with mapi id 15.20.7386.017; Wed, 13 Mar 2024 14:25:39 +0000 From: Cupertino Miranda To: gcc-patches@gcc.gnu.org Cc: jose.marchesi@oracle.com, david.faust@oracle.com, elena.zannoni@oracle.com, Cupertino Miranda Subject: [PATCH 2/3] bpf: Fix access string default for CO-RE type based relocations Date: Wed, 13 Mar 2024 14:24:40 +0000 Message-Id: <20240313142441.180242-2-cupertino.miranda@oracle.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20240313142441.180242-1-cupertino.miranda@oracle.com> References: <20240313142441.180242-1-cupertino.miranda@oracle.com> X-ClientProxiedBy: LO2P265CA0023.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:62::35) To MN2PR10MB4382.namprd10.prod.outlook.com (2603:10b6:208:1d7::13) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN2PR10MB4382:EE_|BN0PR10MB4888:EE_ X-MS-Office365-Filtering-Correlation-Id: ce7737d0-b936-4e3a-2561-08dc436974b9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: AYSACH4IBZPuIAzip11Ts8MwjCsLzQLp2g8E4Str8qOcbFLABXcx5ugfDOhQE/aOJxRoq++otjqLVyZp6YgHHXrVn5bQ0HVBL7NQIz+pHiKhM0CcMVu53r+iQW+SqnbFFxryOaga2pb72p3Ddy7q9z127bttoZPUAUJxPdXfQwUd7dhEFcw4raYI6hF0EMTltFO13O1X0jIXcJ9dOlq8lsRf/MI6lTsLFEYQwOA+TY/AjQOsNuRkj55kASd9CRWeChSckx6IlOZ1kYXTyEEZS4InClgLLCPxuYLiuBrsXVGynUzg03TlJxg56uSaPurlCuyC+BO13Lwpwt3JXyRrNxzIdbyTRPMVpbMhWCWm8mv+Q/RjSzHQEcMOsKIX6K29PfU4c/GKLRPR9Cksy4fmOif+vHkAYNor/pWRrvKMTL/MxbAYZZnKs38rCBViJLgo7kMxFa3qhJSMT6eAFKE0uNqn3di5zR7gImCnxSjEnMc6DSCri0MIQk63B4jVwVfQ+w1HU+gWgVwHSsRodYt3HzB49rNHom3XeSIUT04YUwjW6Sx4UlPlhES6dGZQj5KH8FnIWFopoSigtXwckFzsG+DwsLepwn1xQyJRfgHlhy8BuN+5I8Zh9y5QYobvyzLL X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR10MB4382.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(1800799015)(376005); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 500eBcnza+UW04sU3mcrId4EXjEkN2hIA2bHiXynPIJsa7Y0hCYrnwocWDEMHBrEL8eWy2KFqc/SLS6ubWhMeFNkc6G75baaQULqmHwJX6KhiIXE73FuFdGlrf4MG4N/1oi4FNU8L/9RJLqlTCynk9o+Tj4rrMw1pk55qQ4z3JgqyiEVPwJ284eYU/Yh3tfDi5Gf/t+mhVji7K/dMVh6s9fK5w7BlLAPZL4AFmjLoX7xaomTBRRWadrDNyiEAtirMA5EBg8DTrBbp23VeNtna4+DJ4pRGz2TwLKR38s4bcoZy559eD3rJnZRr7oycSEG8LW011i9SsU2QYLFpCca5yqe8ceeoVFL9Io7eIaHDY7YekDFf3fGqceMXn5gx4UywdgElwKhh+QHT4y+HpLM7/neaM10U4VPZNv3I2o7izAQwyjlZoplq0w/CWe3GcagF/CbTJtBObQ8veCDH//Mgz67cyoQAtjtcHaYxrqkeYNkScQyjJ0sSEh/6ZFFKlvfaMI84z7aE0Vi9MksweTNfVP0bv3UjiNl8H5+UUzjBmx0DWdHwIF2Gd3SUdmRGXRFkh5w6t0XfuQrjyVq3gsy8OTUh0M7uDJTN31DHa0qT4gqWUaP0UwlEjV0ENFSMNS3MnzAh09xlwQgrVnpP9UtXmXDQZTYUGTRifeDfDZbUv3yVuyq3JU1I8EKOl3HijpMRKjvlivwph91Fv0XyOBDhyZqtOa7z9tYDlbzWOe04cDKFVPCC7SaMpiZ9+nMjnTpJezilw0QEk7aExaCn3Je4L+4wzsoB10JH8Ux8cTgYa08dkucWkLCkxXbrxwlY2gJ0Oat56n20lr2h4oMGN39xQxREoqyOkMRbmhGJOhBvcPDra3xSXTrtDpTuViJU7HQsdowfM2jUlTbgZpgFM2i431q/qZTyIgOoZRyxFAQnGVaQ2w6v9qImqtZzxBzVdAtpTJan9tFB6wizQZtkcyLaNqL4swP/IVejfK8rkvuo7mK0UQ1Nqbyda7IeGcpAmcTWO0gnirR6ly1n11eBCHyIfhVwzmRqLL7XimyeyCqp1GA+7BEVDVXbfj+GokTyyyfypyEViDSTxBkLWi1MSvWalcbiPkUYsmok6smwjNhhFqltOzzirXyUhlYYOMoJdk3rbsZ3gfoPRjzLZSnj9oJ+2P9BWq27ftKGN7rz+2cqM4J/+L0CiToTBiGafzf35s7Ny9nSLIRnTX83u6fd3wjK/3uOFFu9gb70l237d/3F2XIdYvXZ06KVw3HCDSMQ1Qx67fxlN7i7HHt9zkZTfra1i3QtJG3vVty2Q5M1d5rRFSR6vO+8xyIHRgJ3Rx+Md3I2RGIr+DV8sKx4Yh2eh/M4WXk+WVqTNjD+6IG9EAJMvH+w3rtG9o6jUYyfIvodVQRRfoTEyHMFHZdT+jMsnQWLgyEyyzH1xjhItAELqS4erbqHdRjAhPtmteK8M4iH/HgyPsoOpmDUfyUIuzY0D0HClNAl5eBAbk1Bh+QXdy60B3xxd2FChkbusbv09Vl/zc60YpB+uBM4umwtmaoJUTfADOwL0oBpr0/lG40jWZRNVtzhtX8s6IZTKbiF+lMfi/9ASFUcFEN4RiSRpTZxnX1sbLhFKMMLqLVjKwWszcMnVU= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: j614ReoJlQ87D/8zY3n9NLz5mPRzrVexuY7myYnog/qMmZhF2jq6uPynZRSOojY+I5FrcKpkNshOEmORGBJhND/I0iP5Nv+xBTbo/fXcbxgHKLEateXlYF2qSRd2K58fdFxsCksMNHpvl8hEaVK71x8LV4vRWdUvgylKkNkdEp+WKGS93djtVO58JrrDW+JAhuE+z74+Bz/cquHaEwRKJbBfhnsAbiF7dcgIN8xRgux7kNds0Z0HwYGHOG1LdcmQK0Prq7IMK1vv4taaaR2eaDTtnaw0hY9h237EDi3y9bAYMLullDCDoh4UeER1yVwy+bb6dTzY7gYmEEr53MA5PE4QrWvglG74MiRC3QRQtyjQc/84Y4zX22xVoiIwqOT4aWoc31PG1+AY7p8byQsg98wr+YEpAR2jCHza/OkqSHvUb7YPJZZcCwSte/RcBVEOx6SX2CaXoT38glInm0yRbZT8kRxQE5kyLLYPXr3FCM+DYZMYR5B56wNPXyKmODvhzAA+gYejeRSsajCvywpPeuEq2oN4yN1EeWOVA/gejVNiz8gpyD01r5lx8y8jTNdZ9+DMGSGiUDxU+aSum7FumvXSbNN1m2HD8vTu9aNjyiI= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: ce7737d0-b936-4e3a-2561-08dc436974b9 X-MS-Exchange-CrossTenant-AuthSource: MN2PR10MB4382.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Mar 2024 14:25:39.0215 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: FFLvnOROJHrJQPvAvZW6xJbk78rVr7RUOwkriEW8Lpn1UUWkXk/vBs23MjJQ2j0zVOVj1unrY1GfoiBidnYVXNIYFkCyOXjVX3OgunZfYLE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN0PR10MB4888 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-03-13_09,2024-03-12_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 bulkscore=0 adultscore=0 mlxscore=0 phishscore=0 spamscore=0 suspectscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311290000 definitions=main-2403130108 X-Proofpoint-GUID: FEFWpTxVJhkv2A0tvfzl4pSIpXG1Fu9f X-Proofpoint-ORIG-GUID: FEFWpTxVJhkv2A0tvfzl4pSIpXG1Fu9f X-Spam-Status: No, score=-13.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE 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-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org Although part of all CO-RE relocation data, type based relocations do not require an access string. Initial implementation defined it as an empty string. On the other hand, libbpf when parsing the CO-RE relocations verifies that those strings would contain "0", otherwise reports an error. This patch makes GCC compliant with libbpf expectations. gcc/Changelog: * config/bpf/btfext-out.cc (cpf_core_reloc_add): Correct for new code. Add assert to validate the string is set. * config/bpf/core-builtins.cc (cr_final): Make string struct field as const. (process_enum_value): Correct for field type change. (process_type): Set access string to "0". gcc/testsuite/ChangeLog: * gcc.target/bpf/core-builtin-type-based.c: Correct. * gcc.target/bpf/core-builtin-type-id.c: Correct. --- gcc/config/bpf/btfext-out.cc | 5 +++-- gcc/config/bpf/core-builtins.cc | 10 ++++++---- gcc/testsuite/gcc.target/bpf/core-builtin-type-based.c | 1 + gcc/testsuite/gcc.target/bpf/core-builtin-type-id.c | 1 + 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/gcc/config/bpf/btfext-out.cc b/gcc/config/bpf/btfext-out.cc index 57c0dc323812..ff1fd0739f1e 100644 --- a/gcc/config/bpf/btfext-out.cc +++ b/gcc/config/bpf/btfext-out.cc @@ -299,8 +299,9 @@ bpf_core_reloc_add (const tree type, const char * section_name, /* Buffer the access string in the auxiliary strtab. */ bpfcr->bpfcr_astr_off = 0; - if (accessor != NULL) - bpfcr->bpfcr_astr_off = btf_ext_add_string (accessor); + gcc_assert (accessor != NULL); + bpfcr->bpfcr_astr_off = btf_ext_add_string (accessor); + bpfcr->bpfcr_type = get_btf_id (ctf_lookup_tree_type (ctfc, type)); bpfcr->bpfcr_insn_label = label; bpfcr->bpfcr_kind = kind; diff --git a/gcc/config/bpf/core-builtins.cc b/gcc/config/bpf/core-builtins.cc index 4256fea15e49..70b14e48e6e5 100644 --- a/gcc/config/bpf/core-builtins.cc +++ b/gcc/config/bpf/core-builtins.cc @@ -205,7 +205,7 @@ struct cr_local /* Core Relocation Final data */ struct cr_final { - char *str; + const char *str; tree type; enum btf_core_reloc_kind kind; }; @@ -868,8 +868,10 @@ process_enum_value (struct cr_builtins *data) { if (TREE_VALUE (l) == expr) { - ret.str = (char *) ggc_alloc_atomic ((index / 10) + 1); - sprintf (ret.str, "%d", index); + char *tmp = (char *) ggc_alloc_atomic ((index / 10) + 1); + sprintf (tmp, "%d", index); + ret.str = (const char *) tmp; + break; } index++; @@ -987,7 +989,7 @@ process_type (struct cr_builtins *data) || data->kind == BPF_RELO_TYPE_MATCHES); struct cr_final ret; - ret.str = NULL; + ret.str = ggc_strdup ("0"); ret.type = data->type; ret.kind = data->kind; diff --git a/gcc/testsuite/gcc.target/bpf/core-builtin-type-based.c b/gcc/testsuite/gcc.target/bpf/core-builtin-type-based.c index 74a8d5a14d9d..9d818133c084 100644 --- a/gcc/testsuite/gcc.target/bpf/core-builtin-type-based.c +++ b/gcc/testsuite/gcc.target/bpf/core-builtin-type-based.c @@ -56,3 +56,4 @@ int foo(void *data) /* { dg-final { scan-assembler-times "0x8\[\t \]+\[^\n\]*bpfcr_kind" 13 } } BPF_TYPE_EXISTS */ /* { dg-final { scan-assembler-times "0x9\[\t \]+\[^\n\]*bpfcr_kind" 11 } } BPF_TYPE_SIZE */ /* { dg-final { scan-assembler-times "0xc\[\t \]+\[^\n\]*bpfcr_kind" 13 } } BPF_TYPE_MATCHES */ +/* { dg-final { scan-assembler-times "bpfcr_astr_off \[(\"\]+0\[(\"\]+" 37 } } */ diff --git a/gcc/testsuite/gcc.target/bpf/core-builtin-type-id.c b/gcc/testsuite/gcc.target/bpf/core-builtin-type-id.c index 4b23288eac08..9576b91bc940 100644 --- a/gcc/testsuite/gcc.target/bpf/core-builtin-type-id.c +++ b/gcc/testsuite/gcc.target/bpf/core-builtin-type-id.c @@ -38,3 +38,4 @@ int foo(void *data) /* { dg-final { scan-assembler-times "0\[\t \]+\[^\n\]*bpfcr_type" 0 { xfail *-*-* } } } */ /* { dg-final { scan-assembler-times "0x6\[\t \]+\[^\n\]*bpfcr_kind" 13 } } BPF_TYPE_ID_LOCAL */ /* { dg-final { scan-assembler-times "0x7\[\t \]+\[^\n\]*bpfcr_kind" 7 } } BPF_TYPE_ID_TARGET */ +/* { dg-final { scan-assembler-times "bpfcr_astr_off \[(\"\]+0\[(\"\]+" 20 } } */ From patchwork Wed Mar 13 14:24:41 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cupertino Miranda X-Patchwork-Id: 1911738 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=oracle.com header.i=@oracle.com header.a=rsa-sha256 header.s=corp-2023-11-20 header.b=QKBRqNXF; dkim=pass (1024-bit key; unprotected) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-oracle-onmicrosoft-com header.b=qyDC3VCy; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Tvt9N1lp9z1yWn for ; Thu, 14 Mar 2024 01:26:16 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 2B944385781C for ; Wed, 13 Mar 2024 14:26:14 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by sourceware.org (Postfix) with ESMTPS id 540283857828 for ; Wed, 13 Mar 2024 14:25:48 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 540283857828 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=oracle.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=oracle.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 540283857828 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1710339949; cv=pass; b=WzWb+kiFAhgh/Uon9H+7FdlBIm0HrRk19tibJDv/ymVUBBEdC5v93QG8wCsNeqv/8vEM4fltNjRc+ivU23MB9wxK4jXeYIlrr6uNzcC0jk+Eri+5SRXBCUm7RJGhsJE8JRxVRayBCRNv/FRLliiWGMaapc7N7zVMYqOWje22Jrg= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1710339949; c=relaxed/simple; bh=2aRWW+Ww1RRrIJtK5jm3HAP0Bb3vGzMrvIAJtw4WdH0=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-Id: MIME-Version; b=erdqzfkNcszvyXxL/HoKxoS2P/M2TmCh94JOgdas10XNhg+dxSgxhDutxSh3qc2KeKAcnEAQcfoWY5C9+fJRAbYWdANm8peglwCXnIFthlRm2/ARQtrZxsouaQlZgj9aWWtuLwbstc0aPZKx0xSmNCSpaJNNSg/VKIJlmWngd+c= ARC-Authentication-Results: i=2; server2.sourceware.org Received: from pps.filterd (m0333520.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 42D8hqP7000608 for ; Wed, 13 Mar 2024 14:25:48 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2023-11-20; bh=WpJNmM1vQAqtBUEpHF8hoeUwhfnCAAWqhsh2tx7Ybb8=; b=QKBRqNXFv674tYd5oE5B+8QsxHQzlcqUwyJiPCEfQt9kgDK4RwBMHXo+ePlb8LgKvfFa wTvLV+FrzfcdpRs7IQ5ar94Xbj0AWE5Zu4CNUjbG/J0kWWESD79DuaiD1D5w8U7YzAF+ 0aZJK4CyS/6jGwXP+5vX3Wducuip5VKIX893b936ksNnZzcDug4mMNrxprPaLiLezEdo eGw8xCojXmlAleEPiEHG0kaoubEQ07HvhbVHjVB/TIVUQz5B388TJbDl0flQfjVh2sEg Cp4UuqXbyBsT0ChXu6YbBMcAr7en/tzxbIFhied47/LuuFpt5gjABumvg2nAZYTqecF2 dg== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3wrftdh7c0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Wed, 13 Mar 2024 14:25:47 +0000 Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 42DDse8t019727 for ; Wed, 13 Mar 2024 14:25:46 GMT Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11lp2168.outbound.protection.outlook.com [104.47.57.168]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3wre78v64u-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Wed, 13 Mar 2024 14:25:46 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GW3aSopf03b5HyP3p+tyFpypkHP7G03iR930+U6BapKh/IwGjXnL+46zhKqYUC3WhvJ+w2KawrECR6DNgqU/aiOXwa+rG+sjXcM/tDIgZ/BhkC42PZJdppTEFF8FhDzABB+egYvVuyE2vYOL+teZkOudC9cZ2xlQr/8w+ELVgUmfs6xX93F+ZfywMFtp9RsI0a/jD8/zeBBflLPrcs79S9xMM9oSAzKikyJBfS0PgIMWZqwspCDWOrFZaxxKTG3SrllpJ3A8BN8W1iIwM2uU/zxUqvfvmT4weiQjkLmHDmEXGzJLl6nwvB1B5yAaA7Y7szTgm7xvVEhfih4yrdrkjQ== 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=WpJNmM1vQAqtBUEpHF8hoeUwhfnCAAWqhsh2tx7Ybb8=; b=ke8b4pWkzfgCPKIeULle+H6BajHtuJD1ILq/WGR9s33y+1LtHWxFdynB+6n+wBoHsEhlnoU0YK8fZ5PCBuePu5HJOK3h2AifNyFi82uhNhI8JvHah1miO4GpNmeqBVJYC7lxR9TVcI6OF4yfy6X3VfZMOLXoZ/qDCz0ZEzDvJBck4wklJHbklPGa0JDYS895h4WK+KKw26pXppuEvFYJhrtzOC6RI7PFsycIF6aLtZ7Pe2JT79QIe0+X8ol4TTPyCVz/emWwRJDTFAl5J9jyOs/HU5sZ7tzwgJfF4f29ZNMvN38hvDDmIqqGvV/Z7zxMErcOPUaaUIIm8MibCvHpvQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WpJNmM1vQAqtBUEpHF8hoeUwhfnCAAWqhsh2tx7Ybb8=; b=qyDC3VCyBc4F1GY9fmcdZquhMQr6wNgo8qGA+dtcKSUWtJFO0kvpRkz/IShiHOZubwGiVskGQK5i9Jc0w7TCsiM//OzD3oTxai3so75qAzBVC6zLVMAjw6LilyWgXUEoTSeQ46cg4etJ4zFlsOQiXUfp/upq29v+C3s7HVfG+9I= Received: from MN2PR10MB4382.namprd10.prod.outlook.com (2603:10b6:208:1d7::13) by BN0PR10MB4888.namprd10.prod.outlook.com (2603:10b6:408:115::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.21; Wed, 13 Mar 2024 14:25:43 +0000 Received: from MN2PR10MB4382.namprd10.prod.outlook.com ([fe80::8aee:c094:84e2:9401]) by MN2PR10MB4382.namprd10.prod.outlook.com ([fe80::8aee:c094:84e2:9401%5]) with mapi id 15.20.7386.017; Wed, 13 Mar 2024 14:25:43 +0000 From: Cupertino Miranda To: gcc-patches@gcc.gnu.org Cc: jose.marchesi@oracle.com, david.faust@oracle.com, elena.zannoni@oracle.com, Cupertino Miranda Subject: [PATCH 3/3] bpf: Corrected index computation when present with unnamed struct fields Date: Wed, 13 Mar 2024 14:24:41 +0000 Message-Id: <20240313142441.180242-3-cupertino.miranda@oracle.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20240313142441.180242-1-cupertino.miranda@oracle.com> References: <20240313142441.180242-1-cupertino.miranda@oracle.com> X-ClientProxiedBy: LO4P123CA0684.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:351::17) To MN2PR10MB4382.namprd10.prod.outlook.com (2603:10b6:208:1d7::13) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN2PR10MB4382:EE_|BN0PR10MB4888:EE_ X-MS-Office365-Filtering-Correlation-Id: 644c08e6-012c-4c63-a442-08dc4369778e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: hyaHZtViBqz3WKEzAWzobsngZC7xjD+U3dmczNrNvCiKvzFv7wj4PDzf/lxzWgVj6s4WbR08KIU6hY6uEfHRCOlBHZrfiA/DTHCZonnG+3LRHSl9dTdQRa5jT7M0YjNtaeAOpL3b2jdXhCFQhGfKgqUvTRfXRj6vhx4j+1URpnp+tg5G3ClTfLEenWW9p8s7LnN1iWiXnQ3gj3relZvSSYYEh+Q/Erf3fzl+RNCF018DaTV9OsoXrYO+wm1IA+n6QgThx/jQeo3Q4gRb/e8HxCCL7ywm0GziLFoXUHscImmV28G5Qh7Jm9aZaC28WiCcG7uXppvtxkSpAJfozS45smf1b46tHxDJnON9Oo8tmcQKtPb1G43bWlfwt5lUzVo42eam9hATCgQ34azIQ0+2IRwl4dEoFrQW4hCFkznXVueqGUQuQkkpLwdX168ZY79aE6NekJ5hsO+loDWVGVPE5uEmDqcYzU9GZnGVhuyOg9AgdPiYCKj5MRUc7kc4R69OiE+MgRnUV7hI40QWvz4mmNO/sphRO5/DOPWVT7L6QgOsxqt2aWOjSgtzS//DZxaZTJ1IIRaKJ/9GCrF24v+3zRyAPkVtliW31s8z1/jzJwY= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR10MB4382.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(1800799015)(376005); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Mxu1mlRWih8YPC2iwQXyGxMEifEslTYIMMjPC1E0keUDMVplUEBc1tCSrBhaJUpYu9P5IfRqLPxYELVCierRLOk/wVgeBLVWuCvFdwq5W95ind+f/yovJtB/qTF8J6BAfSXTbMPG7AF0Fp4Syu045zo5YELnJCOkURVFrKHJW0lELFrKDZ2coc8GuBY/L3Ab8hVrrLfg9JU7cvDtAFzTNgg0CkBssEeaq+//lxZwqKZOX9npi8WRm5kT62iCLgE2LDVs3D1gyrIz4fvaVSJS2K7QDWJ3iwGzgA9f6RCAc6bPK8JTU5+1wXaVsP8lEZqMAjIzxkR2cM+k+tTNg3sMEmn62SYi16QQdOEhia6qPqAXyPMCTd2RyEUUUeA1cHeM1GiKSfUtL/ualcqrkKbfNM9XKSJBh05GU2pWK7wc0nGzLevG7EckTEHT7eWIIpawThX4rqqkqYxb0Iohz7e+QD2BUKMCBm7pBFFYRF36KhMr+Uh97kaf6ROpZ5ihB0xOIVI6JxuezBS/UqarUwRQ7YQvuMsxipgdcaFX8Y6OzYfc4FXsAfOf/n0F3IN2FswhXo1c/Jt+1HHs+UDf0Z+9l74TkzK+9WJdTbFDRnulw65jhr4owRSnWhqcY3tGqBINLoK7Gz9d3+wOOAngxuJLyPSCZSF/sqgSKt08tmEUecdZlpm+EfLy0rVhQpNU2omUjsTctVP19/rdCHN/Nz4pH56uLhfHojklYFGD5NCVHxW35izOvrwquXQ45s57RTK+cG1aCt1mFbR4g3Ja8mKaEUXt/NKxn2qgNNkzWpgaMhr3JIfHOS5moS/8g2Ar0bWCI1jopBN4K8VHABFxr3U++79VakoCaiqIzPhypuqea/Fz3gGqn/oz5CuW0DAa7dfAuZQMY24hnw3BAD75vin/3PUbk9JPLXNtgFNW7WLnqPfQ2kJDlWbq8WcPNPyexGphuPt9a3J5u6/0wJpdYXavB/2kvD7X7xHZgNTHFpjFzcMXdOOg8eiIAltUGeIBLQ+Vbb1L8LuAwq4xqKkTx41RAJofQs41+THhQJwU9txADfZYrlIszCPeVJSUYTKiCShgsrdxDezomydsGTeCoyUIpsM9hbnTg1Tev1McD7pVjpKMmPOP87kY8ejFTDdc2l7/9TarZJPC9ULNXVFnEY88uUoCd8HenHqTQ9emndZ2GojI7SFxHc33uG0nco62jv4lmdQ5H04eDyck4djvOn+4bM2dTZsKxf6iECtg/jZcqK1wGI6W/tOWIk5wtiEfsIkGJJpstHD50Fp4OcjuRhec22Eqeh+0pK3NELcPmybAprB7/hp1Mo42PT4gnDUPyoKl7TvfnGiVIQNPkLa8bVPfChkIB+siBZYL340NZ7RNF2MR6uh4vEDx6mQEk8hScyDZNJfT62C3njTG2aak6/2CNbzaptJzEt5qoP1xP/G/eY6Qb//K9HYl6K/4p2LlgB4PguntrGswDQxymyHEYo7nnv3e/fPjDcfjpLv3msiAVwzd4cR+3fqKU5dmW88A5sJ30/5mSmcdRIvy3NVhhIk5zsTO8/LVujZDV+srTV2s5/2qRz3VdnwzT3Sorz9r1KkQ5p+xIpgzT+GReDxjjlQMQ1HG0S1JQn+6ax/lgnn50nQ= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: wUIufd5hSyhj6GUzGBffK4Pmg4tkB/2OnzbxmZJpOjhBKCVW0WXOVOK7DxPmusBdzDTvMXwAgI6pAnXdhFlISqHBFA6CXvyQ3tLZI0S5mmACdlzcyx1L2KC5MobhqouZxO21KR93jOAAED9VzjC7A6eC9M1bmy0h4u/7tP27ei18ydRUr4yMGHiXdvxtaY7o7eBbySUPBa9uHqCEEk8Somn959J7XyQ36/+mP6M9a7UgjiqEHdpMowRqDYW9U61MPqQBvsxxoPvH96UG7LuiqHextThvx2AnR57JCUoz/f7ZJiFYGPUTSieGyQ8AQNgtYOOEKKDMPPGDgAEa+s4T0moCbb51x1Qa/fDR5hccX+0p6kpsFCZaQOvPDVZkvFGk0bQ8590PxJUCxCf3wu1WyVXolcX37hz1OZodxev1ziDnV/cJuDnQmv70ht8YDcOYGfq4DFqke/MWDPztXfaGbCmvAw/lAO8sRIKCbm0b4FNQyAIRWt8klpU+2b7T5sD5fqe7Cn1RHRaN2F9L2V6rREwIlHUM2tMKXWt3+nfWHA0d1Fi1WP2II6Y8CTFBSW/J+bXUrhF5Fhq+LcZHKO7hT5vZWnokVCPtyue1aLGZ5WE= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 644c08e6-012c-4c63-a442-08dc4369778e X-MS-Exchange-CrossTenant-AuthSource: MN2PR10MB4382.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Mar 2024 14:25:43.8215 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Z6nyMKJ91mXSAGAx64MzzYRdSqqnigmXDML3P3Ug4vDhYqq0qOg+ndPGXDkcOehPOxQy6IxlS7epKsCGd09G0UcRPEtzDxCQp9yAGrcorfg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN0PR10MB4888 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-03-13_09,2024-03-12_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 mlxscore=0 spamscore=0 bulkscore=0 phishscore=0 malwarescore=0 suspectscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311290000 definitions=main-2403130108 X-Proofpoint-ORIG-GUID: KEy7uhyUTKbLXyneotwNCs_-Vy-iUrxx X-Proofpoint-GUID: KEy7uhyUTKbLXyneotwNCs_-Vy-iUrxx X-Spam-Status: No, score=-13.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE 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-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org Any unnamed structure field if not a member of the BTF_KIND_STRUCT. For that reason, CO-RE access strings indexes should take that in consideration. This patch adds a condition to the incrementer that computes the index for the field access. gcc/ChangeLog: * config/bpf/core-builtins.cc (bpf_core_get_index): Check if field contains a DECL_NAME. gcc/testsuite/ChangeLog: * gcc.target/bpf/core-builtin-fieldinfo-offset-1.c: Add testcase for unnamed fields. --- gcc/config/bpf/core-builtins.cc | 6 +++++- .../gcc.target/bpf/core-builtin-fieldinfo-offset-1.c | 10 ++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/gcc/config/bpf/core-builtins.cc b/gcc/config/bpf/core-builtins.cc index 70b14e48e6e5..8333ad81d0e0 100644 --- a/gcc/config/bpf/core-builtins.cc +++ b/gcc/config/bpf/core-builtins.cc @@ -553,7 +553,11 @@ bpf_core_get_index (const tree node, bool *valid) { if (l == node) return i; - i++; + /* Skip unnamed padding, not represented by BTF. */ + if (DECL_NAME(l) != NULL_TREE + || TREE_CODE (TREE_TYPE (l)) == UNION_TYPE + || TREE_CODE (TREE_TYPE (l)) == RECORD_TYPE) + i++; } } else if (code == ARRAY_REF || code == ARRAY_RANGE_REF || code == MEM_REF) diff --git a/gcc/testsuite/gcc.target/bpf/core-builtin-fieldinfo-offset-1.c b/gcc/testsuite/gcc.target/bpf/core-builtin-fieldinfo-offset-1.c index 27654205287d..8b1d8b012a2a 100644 --- a/gcc/testsuite/gcc.target/bpf/core-builtin-fieldinfo-offset-1.c +++ b/gcc/testsuite/gcc.target/bpf/core-builtin-fieldinfo-offset-1.c @@ -14,6 +14,9 @@ struct T { struct S s[2]; char c; char d; + int a: 1; + int:31; + int f; }; enum { @@ -38,7 +41,9 @@ unsigned int foo (struct T *t) unsigned e1 = __builtin_preserve_field_info (bar()->d, FIELD_BYTE_OFFSET); unsigned e2 = __builtin_preserve_field_info (bar()->s[1].a4, FIELD_BYTE_OFFSET); - return s0a1 + s0a4 + s0x + s1a1 + s1a4 + s1x + c + d + e1 + e2; + unsigned f1 = __builtin_preserve_field_info (t->f, FIELD_BYTE_OFFSET); + + return s0a1 + s0a4 + s0x + s1a1 + s1a4 + s1x + c + d + e1 + e2 + f1; } /* { dg-final { scan-assembler-times "\[\t \]mov\[\t \]%r\[0-9\],4" 2 } } */ @@ -65,5 +70,6 @@ unsigned int foo (struct T *t) /* { dg-final { scan-assembler-times "bpfcr_astr_off \\(\"0:1:1:4\"\\)" 1 } } */ /* { dg-final { scan-assembler-times "bpfcr_astr_off \\(\"0:2\"\\)" 1 } } */ /* { dg-final { scan-assembler-times "bpfcr_astr_off \\(\"0:3\"\\)" 2 } } */ +/* { dg-final { scan-assembler-times "bpfcr_astr_off \\(\"0:5\"\\)" 1 } } */ -/* { dg-final { scan-assembler-times "0\[\t \]+\[^\n\]*bpfcr_kind" 10 } } */ +/* { dg-final { scan-assembler-times "0\[\t \]+\[^\n\]*bpfcr_kind" 11 } } */