From patchwork Mon Jan 8 11:05:05 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cupertino Miranda X-Patchwork-Id: 83523 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id BE705385828F for ; Mon, 8 Jan 2024 11:06:01 +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 4D3FD3858CDB for ; Mon, 8 Jan 2024 11:05:30 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4D3FD3858CDB 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 4D3FD3858CDB 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=1704711932; cv=pass; b=NxFdQ7R3ibsp9o/NGl0d0zgRI2cVj40qd0fs5S3PCkrun8OQ5yVH5D2uLfejvULGp1beGcfc+tH4TeXvGWl6jLjdVDzo9K2NUYCmdjpR5Srj+CuJx0b0l6QtE4Nf/Qqd4UDSesJ32nn6RJAUdpOWsMi1NyfS36PRlIIRGGRjtps= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1704711932; c=relaxed/simple; bh=JwPH86kBgi6c8wnGfQiT0T/9jDGrCorRA5pgiNtazGw=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-Id: MIME-Version; b=UnIc8XGDUxD4xNiHw01QUMinxWYPJzceU/F/T6fw2qDboP8RflAiPhpee5pjVXCtRD+joRDgnnOiCxf5SrS4QB4LGdOLH1BgzykfQTzisJQtQXyPOaU/0LwR7iXAWhYs1pIy+J9vKTX/BvuKowSjRAEXDT4gI6HIGxbqMg1n18Q= 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 408B01sD021198 for ; Mon, 8 Jan 2024 11:05:29 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=CknS7QzGYjbfxTYbleF2oDhKN52BrpCAYN1nOUYKqAI=; b=Wono/vId7IbYqhtjWP8VwvzjUJZo0VOwNDWVKQlgb88kbaemXYrZ1z8iUyiZYpkiglHZ x3dPz80lZM7r+AD6HMN2p4Q98iLFw8T23lgjUFP7BBnuibpL37edTbzljNmV8RJzAodE hBRoeqwP30OXsH/3jYhO9PDvOZ5uUpYE7NkdyxY/xRwocFoa92FrkwBhN+Tfai8/nEsp SucvSKlyJ+zS9bvDqKy1enbLFrfv6VimtxAnc9W76ilFSt1kKZNPMzF4lpEvpgVuPHJr OfupTBco3iMXNZtsh3AzsEschk2CwoC0xjCm+j9256M2nDuM6UdjJauY1W1BVf3jUKQl CA== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3vgfser072-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Mon, 08 Jan 2024 11:05:29 +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 4089Yrnf008833 for ; Mon, 8 Jan 2024 11:05:28 GMT Received: from nam10-dm6-obe.outbound.protection.outlook.com (mail-dm6nam10lp2101.outbound.protection.outlook.com [104.47.58.101]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3vfuug7v9v-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Mon, 08 Jan 2024 11:05:28 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Jm9MytlUgomQK6R2ayfoNxUVQlDSYV/2b7fAjXVFDghvxJk4WtRlV3aNBp+nUUMve6+v/VZqYIFyjKcg85ksUI72jesxwdQCeA0JG9kY/HpD2QX5mFl0KjSUheI/9m3iK7ILTmiD1QKhmiqOF6EbeY9RaFkOwkxV7yULijjntFO3x2/9M3KeR3D4oYbrVaWu/GgMBrve4uCuewj0kvoSsgeqEUtAFhJltXnDDZXEQuULhwnyJuDUjBqalwOqaXOn9xOkuZYA7tjTdXwKqZLk8YuxB8UmC7XcEv6vAGEVYjmOGkhTY70KuyvMnn/okDJ5Zv1JLOMMMG6+4JSZSlpHRg== 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=CknS7QzGYjbfxTYbleF2oDhKN52BrpCAYN1nOUYKqAI=; b=cJq59KqACXtOB+OjmIIvMIFjzA5Rs5ochEGCloUeelexOcEteNnKnmzyd2etEiLibnMcECphDwCLp03ggRIkXB1Rg3M6D9SB4OMqlpdjc4n27gGQsQ78GQXrJyqNJ/MGHpazrgfJd+pvmzvzweAjvXKCZrCG/H86Ia84j9VNGWW7OpCgdJP87dCLcUEvRLwNk0E3Nu9JHbRGVJ/VN74fzWklNTwS6s/OfSwBoRvTGh1lPGt6z4ALcQ+znnSnnoa0k/+wqyUU0Ki25CBR+PWHJexQ1pVb+v6+y9ZPrKia8E+78xFXL/TDdssMlaC52pprfkb+7XszBm0fapunbOtYwA== 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=CknS7QzGYjbfxTYbleF2oDhKN52BrpCAYN1nOUYKqAI=; b=HSWMD4Rutf7/ApZ8Ma7TcJOPsT9iBRvRvkt5YJ7wUZcdXykvB05IlNWmAxm9AB+5ioP0k63f22weMysdQmv1e4yfX+ziIxkiDF0TN2lfZDMpP9Pg9KxRQ/9lsqNgIjJZv27ee/+wMKF7Drv0Ak5TfDsRIMbkyXU74locjqVZZYI= Received: from MN2PR10MB4382.namprd10.prod.outlook.com (2603:10b6:208:1d7::13) by IA0PR10MB7349.namprd10.prod.outlook.com (2603:10b6:208:40d::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23; Mon, 8 Jan 2024 11:05:26 +0000 Received: from MN2PR10MB4382.namprd10.prod.outlook.com ([fe80::5252:c588:583e:7da6]) by MN2PR10MB4382.namprd10.prod.outlook.com ([fe80::5252:c588:583e:7da6%5]) with mapi id 15.20.7159.020; Mon, 8 Jan 2024 11:05:26 +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] bpf: Correct BTF for kernel_helper attributed decls. Date: Mon, 8 Jan 2024 11:05:05 +0000 Message-Id: <20240108110505.715284-1-cupertino.miranda@oracle.com> X-Mailer: git-send-email 2.30.2 X-ClientProxiedBy: SG2P153CA0040.APCP153.PROD.OUTLOOK.COM (2603:1096:4:c6::9) To MN2PR10MB4382.namprd10.prod.outlook.com (2603:10b6:208:1d7::13) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN2PR10MB4382:EE_|IA0PR10MB7349:EE_ X-MS-Office365-Filtering-Correlation-Id: 96b06290-f8e1-42a7-67d9-08dc1039b781 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: qOSmWn5SoxAoceQuK5A1IikoEls7OCsn7Q0zxPT6fAAfDe6gcr3d96URYfIyApG1IJePzob1Tui1Kssi6H7maLH/yYJ3kWCycG5PBshvJ/aDwH9GQ1utxR4l6suFGyyyglGCa+VeD+jq4oCV1Q0aNFZ1xl6Jk8MgAxH7iZNTSZpLb2Nt3Pq2J3EsRg0kNFFsojf70B7ZdHJMPhSQzZfZlNE8f5jqm0cBHVGycLYFXaSww20rpoDsAOlQb6fajrJXyrNJFKdJ7ucJRCoBezQe5S/NxNhIZIhj1UnHYDsvE603xCGHBfM6/xER0tzEcGPc81SByYC8atxkjsu3JKZpdzO/+gkWT55riE19LWYM1GZ4NIE/TVLrupGA/7cXt7dedbfmMjvxQ8uu+3bemWyt0Nkk8Ft3fAGbRhmJAuM11AIPn3/K61XwyBmuefMpFazJyK7rr3dSvUWVFhw+BFX+wVrIKmJA90zTx5/TxUs9YblSzetHEyf02x1SwcJdTgz54uA4lAP8DiTvVbfD/kl6qX9GM8mOz+UvkXsrBm7gdn6RAXLIZl9gQC37+i3G35rsIGe9Yz5EUDgMrNYn64G2KYwu1PfaDD91PA7N31Rlm0EVt6VfuDP7d9ZByn30bBxU 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)(396003)(376002)(346002)(136003)(39860400002)(366004)(230922051799003)(230173577357003)(230273577357003)(1800799012)(451199024)(64100799003)(186009)(1076003)(2616005)(478600001)(966005)(6486002)(6506007)(6512007)(6666004)(83380400001)(107886003)(5660300002)(2906002)(41300700001)(66476007)(66556008)(66946007)(316002)(6916009)(44832011)(8936002)(8676002)(4326008)(38100700002)(36756003)(86362001)(84970400001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: RIdLKHXwG6qPKX/oy0z8atFo59Zeu33/ljjKal/rriVbkwS3pEAjQ+0oWGr6PlcC3ReFsk/el7R7QHkrVmdZ3n6JdTiPmruoGUWV1XQFi3EnohtaUKjrU0/x9N30n2ggdRLAB04OSthNlc50IYsZS9jmU4wdYGZN3ecttgICCu9vgozM25z+bFpG9VnL1UJox+ccJntA/gh80GEmFb5plOz6Abkw8MfsC3e81Vgfth713RTe8DhrRISv0PeMpJ8IrjJaLSF1D9YlvSKmwcpgwWRMGV6XKq8DXmyb+dr5OlFiexj8okolDQRClAZkwbUvxJ1JIX6Nv1LN5ASNarySv7we5pevqpDjObPM6QQ06YKR/4C8+Z96BBfJZwPXkITWZon2g6BSl1sLSlYeUoNPLwnUVa2gNKBWWmkLDSv1+xiHskRg+WoEk4CGX36isMr0NFz6pHamiTkyKm4uvLuSkOm1msj8M4ms9p5sF2z3bQdGhv4ECEmXj3H8NBU7wtuGo+O0OmRfzN3hjlc8kM+y+NkCeQbTl3HgiPS3a+T1qSnvDu7clc9rTttaQuqhgU+RSCQJJROf9cAoF51vqdcY2INYHqXfTCp1gLXUdIRQy/VymQkF6G+lIja3E5Lmfw/w2SLGwud26bp9thC0kAbTM6+e6CWjGAUHnc99kMB8mbPEEN5RFZHwla6ZtNA9DzQY/CL8JrEdPjUWtD2DJYGXQpDcDqG0NEo1cRJS+W2dfWCkMGnNKQUoZjtmowlqVcLF+zhIf5mbVVes4IG4VPXq7IGDABE/r4f2EhrVskxQ2l2bo9O+/X5dGBdNZnAv7k+87F6YFUWfGwaxXaZvAGV+53ouqtPDwhi2gTPQtZlHZWDunB7C5zaxpGZEGe+VbU9C/wiZbZQYAaSZbfbA+OQEZCymxDVpZjxXEbihORNXX6D0tLkrxelOidPZtaX32oGOei6/9uCxYz8oLJHmULjGgsKGJeByom7fi+qx6ROGqCAyCEpdN6UKLsM3gb8KoVtEMxcuIn7u8mnA5qJyPbDjRlT9Doj5R8Gm4jTqHyhfPL/UIkcSXPytob0bt50lhxfg3Up/vEU5RuKaX4WgdQaL0zT+AS5eCuEIY+s4IT7GasZUoqXVCaPeHk3hkF7GeYPmGRZj1OusrgIN2ZbGyUON1xDViGZ4QB6nr0Ee3P/Yo5ACocrTnbMA8QzB0m7mViZ+95YYihB2vKvFR1Kzi6cNEwlO/4P4Yg53JL17svRfbEzR0zvecHv3Rn9PxoW1rCK7mVyrszhYi01MEAQh9d+C6x0rEAznuM9c7/MJS0lMU4wCi3BQYsgtQg+XbheW2gObFr39WPsLvxhgUARNPDKsSLhylBHEbxt2C/VCVcqj0cI9jja5ZtpwEpgPZB/0C82TGMHlsRhMqHLf6cjRRQA7l4ta5YYXzu6Iqi4Bi45TwquEioOcgFKkVkvX5gBzrDLBhvIQ1QFViHDEElT8kpDuZCJww7abRmGU73Q7UX1AZt0d1ekFfjSnWlFWpzx+ht132RJPb9vX3yRC+ECUSFAmg5xFIjowuPouXqkw8E135wKNRG0AqM4kx/aqqu8pZBfmtAEaremywEmgiVMWyoG4lq4EI5ZiZCgpP2YyrclpcWEnRgfDEFVHeM3FgCFn3BZp X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: +UN200KUgb82ftQHnoQ9SGAzMeFQQZXGmTBLgOP3zCue1lGdoQx7te4E9wd4fPzdNpK+GLf303jo3RB4IlS9x5AHCb0ibWmOByo3BgF23hsr/X+AutZ4/YDBroSND30/zwL3I9lO/AuDlSDE02AV58HAQUG3DKvCfAS115oBt2I8naFP3zA9GyFkf9bYctW/MTSF1w9Edojq+ltrDE1fGVkIqbRM1X0QDfLS9BEW0FmzKm6YFszsWggR2EBK5GCEclSjTUqJjT5AAdz6R7n2nknSe2UB6uTbN1UYEtD9kMLbo3oP85ZXCFegWzM5qduCdbOtivLm2oE2DuDFYNU6cg1XmtShgFiCoYW2nnLJWmgEVYzFOP8R/u/oQJ+UG4GEiSFXU+Q/4C2/pDknUWL9//82W5CmUpJvBm4VCp3vNvWOq9ie6U8mm8SqFzbLiwSYowlgY5EBmoMcRRZL6RUwI0Qt8wyeO9w1yKWKIMVgqerAykNG04o8S/5U48SYg22RjVpxxL5PiWqPoceYqZmt+lIVqCpzQOtzjh8nxI7E5f37oNKpPl47duwGCe+GTj0JLGmXwSnlwBR3FbxbPO5Fq8CU7bVAgMYR3Bm5luneSuc= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 96b06290-f8e1-42a7-67d9-08dc1039b781 X-MS-Exchange-CrossTenant-AuthSource: MN2PR10MB4382.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jan 2024 11:05:26.0933 (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: c/Yuk6OwVAv8Xd0dnwO30mKh/yN1Su+gDQm+bHz4bp6FCEiobEuso0GlnbiXl5m/h07lYkK9mjhlwTZ7VvVjY+uCPVVhjwjwa2RHMEzLKHQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR10MB7349 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.997,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-01-08_02,2024-01-08_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 phishscore=0 mlxscore=0 spamscore=0 adultscore=0 malwarescore=0 suspectscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311290000 definitions=main-2401080094 X-Proofpoint-ORIG-GUID: EGqoqwxrAJaYLrGR8UnN_w9dPNrbJz-t X-Proofpoint-GUID: EGqoqwxrAJaYLrGR8UnN_w9dPNrbJz-t X-Spam-Status: No, score=-12.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H5, 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+patchwork=sourceware.org@gcc.gnu.org Hi everyone, This patch address the problem reported in: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113225 Looking forward to your review. Cheers, Cupertino This patch fix a problem with kernel_helper attribute BTF information, which incorrectly generates BTF_KIND_FUNC entry. This BTF entry although accurate with traditional extern function declarations, once the function is attributed with kernel_helper, it is semantically incompatible of the kernel helpers in BPF infrastructure. gcc/ChangeLog: PR target/113225 * btfout.cc (btf_collect_datasec): Skip creating BTF info for extern and kernel_helper attributed function decls. gcc/testsuite/ChangeLog: * gcc.target/bpf/attr-kernel-helper.c: New test. --- gcc/btfout.cc | 7 +++++++ gcc/testsuite/gcc.target/bpf/attr-kernel-helper.c | 15 +++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 gcc/testsuite/gcc.target/bpf/attr-kernel-helper.c diff --git a/gcc/btfout.cc b/gcc/btfout.cc index 04218adc9e66..39e7bec43bfb 100644 --- a/gcc/btfout.cc +++ b/gcc/btfout.cc @@ -35,6 +35,8 @@ along with GCC; see the file COPYING3. If not see #include "diagnostic-core.h" #include "cgraph.h" #include "varasm.h" +#include "stringpool.h" +#include "attribs.h" #include "dwarf2out.h" /* For lookup_decl_die. */ static int btf_label_num; @@ -429,6 +431,11 @@ btf_collect_datasec (ctf_container_ref ctfc) if (dtd == NULL) continue; + if (DECL_EXTERNAL (func->decl) + && (lookup_attribute ("kernel_helper", + DECL_ATTRIBUTES (func->decl))) != NULL_TREE) + continue; + /* Functions actually get two types: a BTF_KIND_FUNC_PROTO, and also a BTF_KIND_FUNC. But the CTF container only allocates one type per function, which matches closely with BTF_KIND_FUNC_PROTO. diff --git a/gcc/testsuite/gcc.target/bpf/attr-kernel-helper.c b/gcc/testsuite/gcc.target/bpf/attr-kernel-helper.c new file mode 100644 index 000000000000..7c5a0007c979 --- /dev/null +++ b/gcc/testsuite/gcc.target/bpf/attr-kernel-helper.c @@ -0,0 +1,15 @@ +/* Basic test for kernel_helper attribute BTF information. */ + +/* { dg-do compile } */ +/* { dg-options "-O0 -dA -gbtf" } */ + +extern int foo_helper(int) __attribute((kernel_helper(42))); +extern int foo_nohelper(int); + +int bar (int arg) +{ + return foo_helper (arg) + foo_nohelper (arg); +} + +/* { dg-final { scan-assembler-times "BTF_KIND_FUNC 'foo_nohelper'" 1 } } */ +/* { dg-final { scan-assembler-times "BTF_KIND_FUNC 'foo_helper'" 0 } } */