From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by sourceware.org (Postfix) with ESMTPS id 56BA9385702E for ; Mon, 29 Aug 2022 20:28:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 56BA9385702E Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=oracle.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=oracle.com Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 27TKGJ68009001 for ; Mon, 29 Aug 2022 20:28:08 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : references : date : in-reply-to : message-id : content-type : mime-version; s=corp-2022-7-12; bh=exL6jBvcs0GCpqHzQ3Bqv9BFaxSfuysURrt7J28+XxA=; b=MeG7rx84OkY2IdIFSwXgTc7Xh80FyCsPc9fnZVHBPntHDZ2Yrxs+HdkJbqfHD+wppVgC gLA+bDXwuUA5DASoz85GUglGcFJlErlfnLFatkeVxGXd1Ax0ITm1ItqaztuiiaDiIvWj 7hGXFVpTEQxY5QgNuVPkazZ06vhF7mrunmrutgl4xKWQVWDm1cl1dJ/N2vG42vXJVFtN 4BahcSaTban0iRr9Vn0Xpq8cFJkTTrRM9GsVNAD8qhZ2iZnY0N84Ue+wTz3sUxA5QlQb UuTp0j7mjoq2263pcLg2EqRbYuByqZfYqoX3nbGxYv7BZaYNT9NSYedua3/euVCk0n8z Gw== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3j79pbvf1h-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Mon, 29 Aug 2022 20:28:08 +0000 Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 27THRfRe022051 for ; Mon, 29 Aug 2022 20:28:07 GMT Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2042.outbound.protection.outlook.com [104.47.66.42]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3j79q2xc3d-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Mon, 29 Aug 2022 20:28:06 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CFpnOZ2vf+dvh1FR0TkS3OmfFwg1zmuNDBXYBW6WFIcEbnW7B2ALwQQKQK6jVzjVixJtbrBVn+SLc01Q1Z4wpk3hckWSwHeBb5HvVhha6ZfvMi5/IJf6+MamDWS1CjFjg9SG1rOmbnPE0LPQqVyYggRsQVLCkRfDCF3KIwmvhQnTfIRY4HlmlNu/eHSfRffCKzKJkXcLXjs+hgkuT4bBuOOUBggLGFumQsbkmg1kdmH/QD34PWmYvIxKju2Rim9DUanmfWOfyaXsKFP/ZAyAJqkaye8HhjtEqjFDk5czANTSOH/QY6q9W0UV9DNaF92OwOcfYAztuUvX5BNMi54NxQ== 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=exL6jBvcs0GCpqHzQ3Bqv9BFaxSfuysURrt7J28+XxA=; b=JjbgfdNbB6j/CIiVmbG7iX0rxXHSn6GsPzN5XlmPO9kqr2QMeITkpFHBiy/9+fjYMSZA0zIAqXmLTDEb50YHu62YbMZGafso5o6se/YpYpzRuUvf8Pcx5F0TaGIhyj7x2dEgj+STfm7YETV1RTJ204Dq2vOxAMzYkDgsELeavMITiEr0v+Zxl6R3ujsQJhwNGUsP0TAGaOT72DDxI3aYHuVSXO9GeZEv7PUQJRgDhNoHd47S3HwdG3VYJjLSdGXZW2yQ5WTaUrI8W7qwAnLWARLxGGla40P5LvypttmVV2HAD410Dwpp2ZkaCLE16bu3eL08c2DtAcOUX8PNXmyvag== 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=exL6jBvcs0GCpqHzQ3Bqv9BFaxSfuysURrt7J28+XxA=; b=z9qLrUj6WwuAG317GSBLKxfxPEhrYepvbaG8ANN841oN20HxjNFk7WZRFuwNM+GBi8JrcsjOM+WLWtNUjMgHl021mHnA4EqvAsGTRW+nOKMApS/hv39j3xga799poBGkUZ//Fhu+CDDHR0j4mEeO76c0XYtsSLbzt/VulEdUeaM= Received: from BYAPR10MB2888.namprd10.prod.outlook.com (2603:10b6:a03:88::32) by DS7PR10MB5023.namprd10.prod.outlook.com (2603:10b6:5:38d::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5566.15; Mon, 29 Aug 2022 20:28:05 +0000 Received: from BYAPR10MB2888.namprd10.prod.outlook.com ([fe80::3151:a4b3:aec3:b3dc]) by BYAPR10MB2888.namprd10.prod.outlook.com ([fe80::3151:a4b3:aec3:b3dc%7]) with mapi id 15.20.5566.021; Mon, 29 Aug 2022 20:28:04 +0000 From: "Jose E. Marchesi" To: David Faust Cc: gcc-patches@gcc.gnu.org Subject: Re: [PATCH v2] bpf: handle anonymous members in CO-RE reloc [PR106745] References: <874jxuu8jx.fsf@oracle.com> <20220829201827.7419-1-david.faust@oracle.com> Date: Mon, 29 Aug 2022 22:27:26 +0200 In-Reply-To: <20220829201827.7419-1-david.faust@oracle.com> (David Faust's message of "Mon, 29 Aug 2022 13:18:27 -0700") Message-ID: <87pmgire1d.fsf@oracle.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) Content-Type: text/plain X-ClientProxiedBy: LO4P265CA0171.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:312::17) To BYAPR10MB2888.namprd10.prod.outlook.com (2603:10b6:a03:88::32) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6bb24422-a619-43c2-2389-08da89fcf9f9 X-MS-TrafficTypeDiagnostic: DS7PR10MB5023:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: UbDwO+fVJWTZ1GwdLFodGB/R8hFRcwhpmm9wOyx4aFJjNH+9MLYyjr3aQ0XrkwPjhWJprIVDRHj5ceMhTkEpSxKM9oWWTP6iw/pEvA0Yud7R7Y8f70nsR6kkKiRC0tgaYnQxapeC3k6cB/hojlmMRDqlF+AvfjMN/FeUsJW+vnVcDtv1HCPz7TdLjaLBF67B2LWb/HcuB48wxoVMaSxNrA7Ia4OwOaULf4pD+j1V01st9y2EFaDqV1/mgyg+Q4mrt//SeXdLDd0KylCDdBOidoUDDsEa2lNM0WtquouZEXj5/2KZF/vjsJzs4tnsnsL/S2nwbJ+kC624MI0f+6fqKlezODstJYtotZPAuKMt45TtLgbE1IEo0xKhMEwkdZAr6FaijoM/7ETggmkDjJ5OMfmjSG2NflRlDJdUXw7BkCvRC/6B4RyyDQrB6DIOzj0tHmSAJ0h4NgsJugsL0ahYpVmou2A4R0Dz7ErPcgP12x19d9D5YMuOVudVm5SaBg2QwPBenUgv5mrEGyXOXku595ULn6RgTzI2PMNfuLNPFMwsRRThBXw6mITf8IOOY9MJUYg4akUIkGGe3eYEd1BtEryjEvx7Z5hj6SQW6X8C/pkP3c/0NmQ86yEiztxDVDIWPw+QYW54uPMiSufnGyvY3Tm9+njWEkTmYoEzwlifoCtj9GkXxynSgmEM9Rh5VSiY331nlsG+sStAW23jkXIHT9yIww2fa0VgatR/MtfOIro= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR10MB2888.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(346002)(366004)(396003)(136003)(376002)(39860400002)(84970400001)(6862004)(86362001)(37006003)(316002)(38100700002)(6636002)(8936002)(186003)(66556008)(66946007)(2616005)(4326008)(8676002)(5660300002)(6666004)(66476007)(478600001)(83380400001)(6486002)(2906002)(41300700001)(26005)(6506007)(6512007)(36756003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?4DZAcYpVsEO5qjzVhY3oMX0QN3lGXdIrfBhngiA57JRovPSdoYxHUEjNl3l+?= =?us-ascii?Q?hLbO/YpdzwJmDNIGqtObYGhXcxQn6pXUF0nUyYC6hoF3KIB1u3YYzJ15gYUC?= =?us-ascii?Q?W4qATkMHojXTzOSFYOI50QX+bdtGxkUyl7lDmXSK7omhJfpqGs4AQKwUMXkQ?= =?us-ascii?Q?VkS+r5FTXgP2LB8va3M3zGr7yeCiLvuTw8A4eLzM1B8B0rEpSsB/pkFD+/1E?= =?us-ascii?Q?Z2FlCjpF1tOGHMIOtFlR/jNlPu9iKYAVFDuZnPqGhdD+od4HzG9DR1hwQDQC?= =?us-ascii?Q?/dfkbKtJxnEtImhvkWoSbPlclEKuzbl1AdL3qm3F2+mdtynhszIbfyF+5lpH?= =?us-ascii?Q?uUVEuJXi3+6YbI3n7DzfbpOhV6+v6L1LG1BWWF89O11vdzgRBQWtEoeX6CpC?= =?us-ascii?Q?1hFCxt9aJci+Fotfz91JA5U2+PKPC2H85rct/CbnzWyNo42LbuW7y49YRiGQ?= =?us-ascii?Q?LLGE+JyEESCW83xaBXuK3b5+jQsoUj7bRLfFacnOrIh7zS7daVba5R1PM1Wp?= =?us-ascii?Q?/q4znZZRkQCs8luyBziFFrC+RoUxzvFE+02oa43jHwvEZ0akOH1OE9yZI0lr?= =?us-ascii?Q?maNb1afKGpRGm/bpbzWNoR9ya1CsBGCQNfY1wijLEO4CzfwBOs915yv1aNHN?= =?us-ascii?Q?9mKnAW3lM2M0ENfOUOk8IlOqCUD5dakYT6axRx55lkVbU+LnrD/HBid03UwA?= =?us-ascii?Q?2KTiFMowd7NJJcBxy2BgqJtVtnF447pAilYsrdSrVFrtEAW5dRexVuDvatjL?= =?us-ascii?Q?G6X+VvVzV27N1V454rmLEdm6+r/U3LsIVAyxpKuvDK6Xw75aNKl3liV46cMF?= =?us-ascii?Q?G0NoYZi1e2PlzV6QPyIVsDZVIs5hsQq60J88s5ERkNAsNlAbq3PGHRltMPO+?= =?us-ascii?Q?iUjysfqfj7Wc+uBHk+/v2wDCwgFiqFA/Q1/g4I2eoNZB5DxdOUMzQIj1vGZt?= =?us-ascii?Q?rubSQ3AIwfbvZTxmNVjaj0bhdvUBYgxxP15anjAu1W9J1XGxPGiWUkeA2fwn?= =?us-ascii?Q?eWEtAj7HdqVZzVYZy0OMKjinpHonjhgPFDzPNJ7TWaSyuAkzOrDIeMopXrrg?= =?us-ascii?Q?WIeKkGHJwI3Rz7lBWY8ks7gl4MW39xQoytf2Y0e1lKsNAPP3XgP4z2LjzZPa?= =?us-ascii?Q?vVX/NTbHV0eYvWyyu30lBKHDClH3zzwd2/KcHmv3D5j3iusoieNJtjzmoWpr?= =?us-ascii?Q?vIZQVE8kdyLB0CjokS1ik0+6UDBMWX4hUJ6r+LE4LeGPszWzzLt7AVxpW6ir?= =?us-ascii?Q?0u2XKk3EVo+ZDuc50nt4m5RRd6b8iVS/QfT3HX2AFEB4LCtLnRHdXgFdJQdj?= =?us-ascii?Q?AlUzElszZopoUxeYo6aqj6UW/gADeGrXaYB2us9wxFMiNASDqqJY0oNYk7CN?= =?us-ascii?Q?AQP8ofdpU/mNn0gfqf1vKicbh1Uz81n1fs0PZ+JOpm9fXSBxg0/tjL0i+3DH?= =?us-ascii?Q?RtdlzEDdW7FenanF/Phd4Fvh4hHwri0MAo4e8mwE9oQ86fcfxsGdii70/KzP?= =?us-ascii?Q?DALl6CChShEz4RceNkpwLQUownNa/dR3843HF21VMQeKCNCurgJ7oznk5I2d?= =?us-ascii?Q?8pGQJ3Bbhx8S8oolMPta4kV1B1IoXcvfbpOGixJpKd3GvFwHGdn6NdFRs5+3?= =?us-ascii?Q?ZA=3D=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6bb24422-a619-43c2-2389-08da89fcf9f9 X-MS-Exchange-CrossTenant-AuthSource: BYAPR10MB2888.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Aug 2022 20:28:04.7777 (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: AP//rR87M3UkJYB1yO4Q3nPNxKq6lezzVNg67pnb/CPWMtxNmopNwV/ifPEkDuhM6/zfEy+HUy32CsbCmKVC3fiCRXxSISQeWOMYYETlUNs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR10MB5023 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.517,FMLib:17.11.122.1 definitions=2022-08-29_09,2022-08-25_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxscore=0 malwarescore=0 suspectscore=0 spamscore=0 adultscore=0 mlxlogscore=999 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2207270000 definitions=main-2208290092 X-Proofpoint-ORIG-GUID: bcdB5tGcuaMlQXhwtcJ60ri7E0D0E216 X-Proofpoint-GUID: bcdB5tGcuaMlQXhwtcJ60ri7E0D0E216 X-Spam-Status: No, score=-12.2 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_H2,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 List-Id: > [changes from v1: simplify the new conditional logic as suggested.] > > The old method for computing a member index for a CO-RE relocation > relied on a name comparison, which could SEGV if the member in question > is itself part of an anonymous inner struct or union. > > This patch changes the index computation to not rely on a name, while > maintaining the ability to account for other sibling fields which may > not have a representation in BTF. > > Tested in bpf-unknown-none, no known regressions. > OK? OK, thank you. > Thanks. > > gcc/ChangeLog: > > PR target/106745 > * config/bpf/coreout.cc (bpf_core_get_sou_member_index): Fix > computation of index for anonymous members. > > gcc/testsuite/ChangeLog: > > PR target/106745 > * gcc.target/bpf/core-pr106745.c: New test. > --- > gcc/config/bpf/coreout.cc | 16 +++++++---- > gcc/testsuite/gcc.target/bpf/core-pr106745.c | 30 ++++++++++++++++++++ > 2 files changed, 40 insertions(+), 6 deletions(-) > create mode 100644 gcc/testsuite/gcc.target/bpf/core-pr106745.c > > diff --git a/gcc/config/bpf/coreout.cc b/gcc/config/bpf/coreout.cc > index cceaaa969cc..8897a045ea1 100644 > --- a/gcc/config/bpf/coreout.cc > +++ b/gcc/config/bpf/coreout.cc > @@ -207,7 +207,6 @@ bpf_core_get_sou_member_index (ctf_container_ref ctfc, const tree node) > if (TREE_CODE (node) == FIELD_DECL) > { > const tree container = DECL_CONTEXT (node); > - const char * name = IDENTIFIER_POINTER (DECL_NAME (node)); > > /* Lookup the CTF type info for the containing type. */ > dw_die_ref die = lookup_type_die (container); > @@ -222,16 +221,21 @@ bpf_core_get_sou_member_index (ctf_container_ref ctfc, const tree node) > if (kind != CTF_K_STRUCT && kind != CTF_K_UNION) > return -1; > > + tree field = TYPE_FIELDS (container); > int i = 0; > ctf_dmdef_t * dmd; > for (dmd = dtd->dtd_u.dtu_members; > dmd != NULL; dmd = (ctf_dmdef_t *) ctf_dmd_list_next (dmd)) > { > - if (get_btf_id (dmd->dmd_type) > BTF_MAX_TYPE) > - continue; > - if (strcmp (dmd->dmd_name, name) == 0) > - return i; > - i++; > + bool field_has_btf = get_btf_id (dmd->dmd_type) <= BTF_MAX_TYPE; > + > + if (field == node) > + return field_has_btf ? i : -1; > + > + if (field_has_btf) > + i++; > + > + field = DECL_CHAIN (field); > } > } > return -1; > diff --git a/gcc/testsuite/gcc.target/bpf/core-pr106745.c b/gcc/testsuite/gcc.target/bpf/core-pr106745.c > new file mode 100644 > index 00000000000..9d347006a69 > --- /dev/null > +++ b/gcc/testsuite/gcc.target/bpf/core-pr106745.c > @@ -0,0 +1,30 @@ > +/* { dg-do compile } */ > +/* { dg-options "-O0 -gbtf -dA -mco-re" } */ > + > +struct weird > +{ > + struct > + { > + int b; > + }; > + > + char x; > + > + union > + { > + int a; > + int c; > + }; > +}; > + > + > +int test (struct weird *arg) { > + int *x = __builtin_preserve_access_index (&arg->b); > + int *y = __builtin_preserve_access_index (&arg->c); > + > + return *x + *y; > +} > + > + > +/* { dg-final { scan-assembler-times "ascii \"0:0:0.0\"\[\t \]+\[^\n\]*btf_aux_string" 1 } } */ > +/* { dg-final { scan-assembler-times "ascii \"0:2:1.0\"\[\t \]+\[^\n\]*btf_aux_string" 1 } } */