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 76B003857016 for ; Mon, 29 Aug 2022 20:12:27 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 76B003857016 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 (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 27TIhciQ022364 for ; Mon, 29 Aug 2022 20:12:26 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=message-id : date : subject : to : cc : references : from : in-reply-to : content-type : content-transfer-encoding : mime-version; s=corp-2022-7-12; bh=lr8E3WMGFbNLb3f4+0TJgtKTisNWQrO4Q8Aq+UWozbo=; b=ss1cZCh0CSRwb75vByR1DFmo4OBoT/8UHaRiLiiO6eke/1TTOo+emQOD+uozOzk1kY7d VdOy5FZRKuP90lmXvSnfVxNr7pzPrpb1S0ggogYvzbimN1ePZbPieRmclHlmt7v4nTBT hzd5HbQO7e5PKgqlizrBQQQT6bChKEiwAFX25S6foDvJe2vM3tpKsfULSDSzhxl307ob jeE4V9G5UQKcYViraYVtpbz/niKkWNg8dzJAEfhyUfliCP2Z5R0TivBfwEQZyfLo1PM3 KdXZW5gjQPWEFsppFBbG3Gx+VSbktzPnxg0v7u4Y69H06vv2Hwk8pDdIcUfFtD5oaDDo Sw== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3j7a224g37-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Mon, 29 Aug 2022 20:12:25 +0000 Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 27THYf6H005261 for ; Mon, 29 Aug 2022 20:12:23 GMT Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2172.outbound.protection.outlook.com [104.47.55.172]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3j79q2wscu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Mon, 29 Aug 2022 20:12:23 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EzmsFyd1ZVZ0YGRJgEE+f25ScuEdYPUvzT8E6zsje414+smv9J7gNc3YxyN0Svbo3KRCI9L+rvGVwl+an/SmDYOI3e59SEtL1vgbFT6VyF7K6zc0wqEZysqiTZdOHXbLFYfF9rpx/msftnT/E4vLTlT3kCJZtD1qe0ReeYQtktgt1H7Of/y1dgOS2bRK6GjNRAQGgBrCr8cjRSFIAH8p+PwJLKJRr/Si33DCuN3/ay7HMkEc29h6obKA7GfifTopfzrJTdluaKLxUGFfvXo0lsZhvsEJx2YGV9levazQYmWX5AiCDTqLmoaO9R3Um+f75vANgas6WsSpnWDYABKB7Q== 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=lr8E3WMGFbNLb3f4+0TJgtKTisNWQrO4Q8Aq+UWozbo=; b=SRscc/bsIbOUYKWqsKP2kr80/H1qFVsB/6XtIJUjsqNvGrY8L7zhyE23ti8qPgT3JmIgVInct2JYG3naqsB+OU9KyY1uyB0Il7PDyyXIfJdksC4KMM6BkBGO7ReVJS7Lh+5TowfH9CclRCIbS7qu7Wf5ARAvub7obh16UZtIsRi/Ul3q+pN4pwcoEGVFGzG41nGQ1a4t5XYltLRDo+8fPHiW9CXPeHCaZZpn405mQfGpDBxcZEL0kRzAWHZf5Dm8TVBFvnakVO98eelJHnmHqFqewbmrPHtqj9sCJ5Vf5eRQmVO09ByDgt1dF8wENFmX+fB494m5yr/iG40m8PeKJg== 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=lr8E3WMGFbNLb3f4+0TJgtKTisNWQrO4Q8Aq+UWozbo=; b=Q/10ldseTzK0ipMAuv/fDBFuZUqUtiz9fb/e6H3+U3XkjkyaffRrKZRwy5T5ttkmvk2J2vkHMM4uIRv6vWhmFXKSJ2wTzvzb/GvGqVNoPSvlWaf/lUrYuNMHqgsQlrZ9hITxw4KNLoyxiP/eD0yIQYnixTBdoTfsWG1RWWv+rsk= Received: from MN2PR10MB3213.namprd10.prod.outlook.com (2603:10b6:208:131::33) by DM6PR10MB4379.namprd10.prod.outlook.com (2603:10b6:5:21e::15) 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:12:21 +0000 Received: from MN2PR10MB3213.namprd10.prod.outlook.com ([fe80::815f:640c:8792:186b]) by MN2PR10MB3213.namprd10.prod.outlook.com ([fe80::815f:640c:8792:186b%5]) with mapi id 15.20.5566.021; Mon, 29 Aug 2022 20:12:20 +0000 Message-ID: Date: Mon, 29 Aug 2022 13:12:18 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.12.0 Subject: Re: [PATCH] bpf: handle anonymous members in CO-RE reloc [PR106745] Content-Language: en-US To: "Jose E. Marchesi" Cc: gcc-patches@gcc.gnu.org References: <20220829185255.5550-1-david.faust@oracle.com> <874jxuu8jx.fsf@oracle.com> From: David Faust In-Reply-To: <874jxuu8jx.fsf@oracle.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: SJ0PR13CA0005.namprd13.prod.outlook.com (2603:10b6:a03:2c0::10) To MN2PR10MB3213.namprd10.prod.outlook.com (2603:10b6:208:131::33) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3ddf4fbe-fdc8-49e2-ae71-08da89fac775 X-MS-TrafficTypeDiagnostic: DM6PR10MB4379:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: e0TSBWUzf7ZAoK5yRN3GrSxqgdlio/Oz4NgwrNj3gjQ6YSBaAvUFwapjp2yJOCMcy2K7BH+z4MwxacjbpTCAZrUOLF7g1wHPE1benntcRdBZW2LqZn7GWg2Lhovvgupg4cVvxD7NnJXh4QKAmJvtY6NhhL+9PJacaZPBMmRaUQiEdQ752UnW/cRbKXcH/NMchwUb3Di5SydySYZhLnXl7ZQUyrD9gijXbHoCTQpwxF035fXXnK1N3CoVuPQ/1T/qwefVFHZK1m1ZXr14Dj3SMLMOusYMUY/9/Y7nXUdiNurmMHyTHuPmA7PVxMUzYTi/L0XJRe0Hk18j/k435ov9rdmBQbguoGJ1J+R9gso5h7X/KUsOV7fDW22BZpEE8QuU+NZQSoRwfGcl47l9O8FtUZ+7B4G3NIhtXoCjMBUl8Tw6e1cWVzMIAXXfkzNrzzTMvfM4T7Ni9ieiQL/TlLC/ylhKnijx4Cl/sTFw6baBlkv2c/69hoJZd6BFSqM+zN8AIznpzOAiSX3p2Ks4koF760WkWNnlJNL4Mjf7GcoSKRIQxc/S/w/TXOm5eTdiCgAfRb55LoUXkbGHCjs0xnbR0cGB7I2eSKdmnBBoGUTA4OgCa25WSpPRcok+h58f7TINGqRzCaYrh4ckaeU8SVlqaVoMLb05czccieQxxgjhP4EwUy+IXFqoekiSrSXm5yCUt8o+vj466SDRSmO3taa4e72pAfsYRPara8HEHu8x5YgkUHXQffu0ziYyUPbkKGoIByswaP8eGSwou0yY2QiG1HZyCU6CVTlp09W6Qp8cxN9M6WogMbD9IbjVBxbQIHelMgA6JOYirqZ+v77DWeVB+Q== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR10MB3213.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(136003)(39860400002)(376002)(396003)(346002)(366004)(37006003)(6636002)(2616005)(31686004)(316002)(36756003)(186003)(38100700002)(86362001)(31696002)(5660300002)(83380400001)(2906002)(53546011)(41300700001)(66946007)(66556008)(8676002)(4326008)(478600001)(6486002)(84970400001)(66476007)(44832011)(6512007)(6506007)(6862004)(8936002)(26005)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ZkRHWVkrcjRiNWRadnRjWlEvdzhya0hyV0xSZVhyRjlSSjJ3Q3hMVFpBMVhI?= =?utf-8?B?aWdkUEVPZW1rNHpKcUVUcmJpb29RQ0duQVUxNmdHYzNDZ2pJbnFudDExTVVn?= =?utf-8?B?ODN6NGlqek9kV2pQUmFyV0s1VGFxWEZYSVc3T2dWb21aWEI1OHgyT09mRHFM?= =?utf-8?B?emZ3Q1FyMy9BUncrM00zYkdKSi9EeDlVWVNrNjRjaEREQkhSamgzZFZkanRD?= =?utf-8?B?SVZVblhmVzBzdnEwc2lrUzltTWRzelAzeStqMEwvUW5QQTgwdUVSeXpYRG9S?= =?utf-8?B?NGpvT3ZJZDBVRzk5NjcxZ1JzRE9tTzdEalJvWXpZVTk5anVmdE0ydDZHdklY?= =?utf-8?B?MUZMMnNUVFQyUTBDQ01OMmF6d1h6SnB5aThDSnpYMU1vcFRjdE9qQ1Z0WFlr?= =?utf-8?B?anVCbGZTMm45M09PeHp4ZnlERHZYcEhpTERYQytDb1p6Y1g0bm9KTjBJS3hh?= =?utf-8?B?VEtzVWJxTU5GODVoMG9QZnpCelNpOXVTbDg1dHNTWEVXQngyWmp5c3Z4c0VP?= =?utf-8?B?UHlqUkJLVjBRVVNvV3R1ZVlKOWZvdnR6SG1UVXR4dm5hdnpoSnM1TS9uR2kw?= =?utf-8?B?c2R5SjEzZDg5NHhTUjRtai9zb3lGLzljTUd4RmF4Ny9wNmdNUVhkbzhOb1R3?= =?utf-8?B?N1V4eEpNTnQ5U01UdVhLVFpIYjBSK0djZ1ByTG9jb2MwV3ZUOVNsckRRQ3dy?= =?utf-8?B?aG9hQ2xpc1VaaEcxWWduNmE0bjZOaXhqNWZSR2N5cHV1VTh6MWxQOE9qOHhO?= =?utf-8?B?cXppOGs1THdQNVJzdWkxZ2FjVjdGa1lCZUovQWZQV2NUaHFpbEwvMDc4UWRI?= =?utf-8?B?OUJSLzJFOHhOb3BBcjI5WTRFeERndXp4QUtkSzFCV1pUcXJEY2x3eFZ0dGR0?= =?utf-8?B?NXlwQUN1ZEF4NklEVmRlNEs5aEEyR2czQmNucU9uc09qSlVuTEhzdGE5TEg0?= =?utf-8?B?N0FZVm9wa1VkejRsemhqejc3aGZLMFF1dW1YdXRvd2lPcVM0K3ZRR0NaNEdi?= =?utf-8?B?NVJlcGg4bGN1SEdSSVhRRC9RT1IyL2ZLRFBhRWtvVHAzbVhhUWpSUTBsUFhX?= =?utf-8?B?UTZQTFRaeUtKR3pESFY2U3Q3SEZlS212T2FYRkptNlJkY3FsbWdyNmgwRW11?= =?utf-8?B?aWs4WDFLVFFDRDRFSTdEUzJYMjVTVkpOcGxhekZraU9nak9sQ2FqMEVmQVcz?= =?utf-8?B?RjltM2xVRWhnWTBFMCtEVFRRaExqY0M2Q095Zk55ekZ6WGordDJCM2tCOVdQ?= =?utf-8?B?ek1rOFRrcnlITkZxL0Z6Yi9Qd29YRDJrUDJJMlA5V0cyc1JKbVl4RnlUYjRO?= =?utf-8?B?UkJkLy91OVhjUXpKWmgxTm1qSzFOUzJ1Szd3VmFyY1BwT2RVUkwvU2ZJMVlE?= =?utf-8?B?SFFZYzdWTWJKajk3cWc4R1RwK1BUVXNReTR0OFJ1THdaVC85bUxCbUtXZzdE?= =?utf-8?B?d00zUENpczFLYVlBZktuYjBEUnlTUlhDMUV3Qk02RWZCNXJMMEVWVEVQK3hH?= =?utf-8?B?NTQva3NxMDZ1ZkRLMG9CWWhHaytxUDBFNFNNVlJMZXJvc0lMWjNWekdtTzg2?= =?utf-8?B?M2lHM3ptM0NvblJmT0FpMnM5U3ZEeFVHQnUrTUpPUTcxL3JqRFk5MllTSTVJ?= =?utf-8?B?RStYTTVGNVJlRk9CVVJtb0x6UzY4aTdtbVN2MzFPNC9FUFFvZnhkampYTWRK?= =?utf-8?B?bDUyMjRKc25DVlg1SDkwWllzcUhUVjlyZnExQnBJRUNVNUIvS0tqNDNrbkNK?= =?utf-8?B?VEZ4SkE2Zit2U0dEb01TbjJOREtZcC9YVFZxT1U2WFFUcWxSb2xOYXJZMk9Q?= =?utf-8?B?ZkR2eVpOZU00VXdUUTkvVEgxTmg2cXYybmNmRG9NcVdrM0dqamk0QjJOK3Fy?= =?utf-8?B?S3pVTmtYRExMTjJ0ZnlJYWFlZlBIRVU0dk1ZdzZtVXlieC8ySy82dVhwSk53?= =?utf-8?B?ME1leDkwSzRCQlV5SFYyU055SEVSMjFESXQ0MmcwWTRlWmRFVWZmbm9PVWlu?= =?utf-8?B?aERFcjNSWHBXZ3EyazR6aU9aODJtS0kzS1dKSWJ5cTE2T09XMGR2b3pZR1hJ?= =?utf-8?B?RnJ5YjNYWWQxYysySjRISWNnWENib0U5QU50c3J6WjBNNkVsS0FNNkdVUStq?= =?utf-8?Q?PwIWW0lfz2bBGZ3nQwuEd9ahT?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3ddf4fbe-fdc8-49e2-ae71-08da89fac775 X-MS-Exchange-CrossTenant-AuthSource: MN2PR10MB3213.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Aug 2022 20:12:20.9272 (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: pKozks7TvtWE6QdVrHVT1se1Pq7EDi4bMQE7pzX1/a4RDrHVA9J3K0GaJzf/41YN0v7NUm6ySOJ895E2jKXg6Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR10MB4379 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 malwarescore=0 suspectscore=0 mlxlogscore=999 adultscore=0 phishscore=0 spamscore=0 bulkscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2207270000 definitions=main-2208290092 X-Proofpoint-GUID: Uj0jYDhFnknlya5RRPMTZzUiKTR1XF30 X-Proofpoint-ORIG-GUID: Uj0jYDhFnknlya5RRPMTZzUiKTR1XF30 X-Spam-Status: No, score=-12.9 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,NICE_REPLY_A,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: On 8/29/22 12:57, Jose E. Marchesi wrote: > > Hi David. > >> 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? >> >> 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 | 19 +++++++++---- >> gcc/testsuite/gcc.target/bpf/core-pr106745.c | 30 ++++++++++++++++++++ >> 2 files changed, 44 insertions(+), 5 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..caad4380fa1 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,26 @@ 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++; >> + { >> + /* This field does not have a BTF representation. */ >> + if (field == node) >> + return -1; >> + } >> + else >> + { >> + if (field == node) >> + return i; >> + i++; >> + } >> + >> + field = DECL_CHAIN (field); >> } > > I find the logic of the new conditional a little difficult to follow. > What about something like this instead: > > for (dmd = dtd->dtd_u.dtu_members; > dmd != NULL; dmd = (ctf_dmdef_t *) ctf_dmd_list_next (dmd)) > { > 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); > } > > WDYT? Thanks, that is certainly easier to follow. v2 coming shortly. > >> } >> 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 } } */