From patchwork Tue Aug 31 14:08:14 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Indu Bhagat X-Patchwork-Id: 1522667 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.a=rsa-sha256 header.s=default header.b=B13z3Th2; dkim-atps=neutral Received: from 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 RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4GzTcg4Dhwz9sRN for ; Wed, 1 Sep 2021 00:10:58 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 8BB30385843A for ; Tue, 31 Aug 2021 14:10:56 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 8BB30385843A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1630419056; bh=3yk8oEij/74etGvVLPCI0kOwl8nitouP4cNud8UzQKw=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=B13z3Th2De5Spk5qz36Z1YblgGFRg78y/e0amOYqYTPlUzkgtOmPc5oKehdFg9aPu SaHtExGID1WyrQ4ulu/hRYfC6IVq7yBq2ivmp/zPz/wRpXYr3O8kbfZaagXcinjj1M YCxMGQ2SxPhprrskkG0ZUmAUaTyFbCeb4c3t8DQQ= 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 BA3333858409 for ; Tue, 31 Aug 2021 14:08:27 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org BA3333858409 Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 17VDEbWC007616 for ; Tue, 31 Aug 2021 14:08:27 GMT Received: from userp3030.oracle.com (userp3030.oracle.com [156.151.31.80]) by mx0b-00069f02.pphosted.com with ESMTP id 3asdn1s95p-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Tue, 31 Aug 2021 14:08:27 +0000 Received: from pps.filterd (userp3030.oracle.com [127.0.0.1]) by userp3030.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 17VDuGVS020271 for ; Tue, 31 Aug 2021 14:08:26 GMT Received: from nam11-bn8-obe.outbound.protection.outlook.com (mail-bn8nam11lp2174.outbound.protection.outlook.com [104.47.58.174]) by userp3030.oracle.com with ESMTP id 3arpf4dn3y-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Tue, 31 Aug 2021 14:08:25 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YT2ZOuQOhAYySkyUkrNLP9reaZGq/myTWbzfGRocmdubf5ZNTTGbdYx8Y9xU7+l9R5MJmIV682MnGjdJJwFeN4k7LFYNjR3MF1dQnvHGo4A6mPgOTbk5jjDOu1K8UxocJC0eAGsNm1MPPiH/jjKMTPkvrU70xO8TH2omKm05Q8ibHGbKYQUvxQe9cZ8GP5AuCa5OpF/f5bWaQx3zzDc8TA4vOUoEYE65w4ZliFTG0wYK8k9boXBOsfFwW67+zO4I7E+Pmc5fFAsEmRaw3k77ehV6i6UMC7+DsIi3NFpnjT2UeWq2lNEBpPI3Fxg2Ow0fC/7juMdh4W5Dx7L5HvcVpQ== 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-SenderADCheck; bh=3yk8oEij/74etGvVLPCI0kOwl8nitouP4cNud8UzQKw=; b=Gyb4KRXIi27NeFJXFI6ByVQPNFYstcPLiXKQmYNkQ8bt0biGMNiuh0VIdC/SkeGRUlon2GjQi3siDpPSqhbc+nh11yJKX7vJbLS+4yCqDk4Ft1EFwKa41nguLYM4EAzhljHkHnxV2wkT96cRQjZgAqBMvRuVwTni6wJBm5JUHqKY19GGVgLle1q11Z2kkMEZkgq11GyMcervKMoTK2efdf+kQYUGa9poZtw9/8Ty7C9gIPOOezMtsiLO3K+B7/z92oQ0yWt/2XNi4YrNDU6hLsAmUfIJrVS6UMdDBJP2bq/rEg8on40kO2zVbt5coso8rbh3AchcUSa3zhCOZLkX1g== 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 Received: from MWHPR1001MB2158.namprd10.prod.outlook.com (2603:10b6:301:2d::17) by CO6PR10MB5556.namprd10.prod.outlook.com (2603:10b6:303:143::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4457.24; Tue, 31 Aug 2021 14:08:24 +0000 Received: from MWHPR1001MB2158.namprd10.prod.outlook.com ([fe80::c9ba:5127:fa3f:45cb]) by MWHPR1001MB2158.namprd10.prod.outlook.com ([fe80::c9ba:5127:fa3f:45cb%4]) with mapi id 15.20.4457.024; Tue, 31 Aug 2021 14:08:24 +0000 To: gcc-patches@gcc.gnu.org Subject: [PATCH,V3 2/3] bpf: Add new -mco-re option for BPF CO-RE Date: Tue, 31 Aug 2021 07:08:14 -0700 Message-Id: <1630418895-23520-3-git-send-email-indu.bhagat@oracle.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1630418895-23520-1-git-send-email-indu.bhagat@oracle.com> References: <1630418895-23520-1-git-send-email-indu.bhagat@oracle.com> X-ClientProxiedBy: SA9PR11CA0006.namprd11.prod.outlook.com (2603:10b6:806:6e::11) To MWHPR1001MB2158.namprd10.prod.outlook.com (2603:10b6:301:2d::17) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from ibhagatpc.us.oracle.com (137.254.7.187) by SA9PR11CA0006.namprd11.prod.outlook.com (2603:10b6:806:6e::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4457.21 via Frontend Transport; Tue, 31 Aug 2021 14:08:23 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 296336d1-60ea-456d-5999-08d96c88cbe3 X-MS-TrafficTypeDiagnostic: CO6PR10MB5556: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Q6QuXCPF0zXWkIPr8Pr599TO9BAOv4Ic63xfbFvX3jnjAuvp9YW/pvaBxtOBEtmBbd+znf5h5rWvChHr+Fbslk8Vy8VYEUjO6uCrZAxqyGyo+trg/TOpw99mxLOGvHQeC4mvs1IZedCGboHGznbZfY3CX+G98SgdCDTkudyF/bczBqGSlj8MPUi1qqJnWR2JbEzShEfkCes2Ee18ICA0xR7/0KlOz1s6KmC1fPvYUG8BmJnfpgnmM6SGstFRLa2s41+j5RDwB6RJKf7y+Z0IUipYCSfkOGtIJLLeZHVYgxRzF0EQFzRAvZo6XRxo9LMuX8jvCU0bLp8nr37nDhqLqQEY64RSofsr3cypj4ZbknPa8Ds46UQwfAlZH1/aIPGJdjbVcg990af931iz4+5HvZ6qGZ2vp3SI3LYfBxh/J039hb7XjGMEgi09S2qvLCCcD5BTYl3ROjVfbl70gWEQdYpDBVXgzTC9vse5OrlD/EgmPR+AA86dI6Bnd+qvdEKbmajVBHiHIDJjtVzDODkI9pjbMBtOwv0jT/FYlvaCqafcT+Eb0NaaKek3evIgKU97oa4bC847r5ltcO//u00PBQVGEHTM+aOvVvWZVs5UcMU7XV88UGhUVxYwjvveWx3hSbsy77lY3N/cpO7g/VhlrJ5TsfKvXTNiLYGaSycoUEeq273/lvPKkAocvFA4JSEaSHntX2WZgxUbc+ffmTl3BPKB/4EJPuBG8dQ/bkRrwtJsvcut7/5zZt0MFuIIgrHd1nxM+esYSQXlM8KrnkrbQf8iwyPcZ//NnA+oQvSRcE0= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MWHPR1001MB2158.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(366004)(66946007)(8676002)(36756003)(2906002)(86362001)(316002)(8936002)(26005)(956004)(38350700002)(38100700002)(5660300002)(83380400001)(2616005)(66556008)(44832011)(7696005)(52116002)(66476007)(186003)(6916009)(6486002)(6666004)(508600001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: fe+7TlTU+QbOx2VukZ5Xwx4t5cfMu/BsV4Fn2nn7SKeiomc3Q1SX3XqmvsYSmtIRWP3I0sDTGXa6dNLCBYxuR0OaltnE2tCfvlcQj5DqD/9a0ss/B69ojhQpytjSLAmP7Pw8bs9lUFkruZwJ7Ns9wBgmyDiWIge+9PM+dZjMwYjBFfGpAaA+SHTT3ojVldzfWZB4l7wakEDc0cGMcwsAd4h3GiqpFyddNrh1eH09KpUcXYAUPgaGx/QEM1R+tM79ouH5hS2nAu3j+njAC+fsx1C6rekGsw9qI3jh7qTS9ZqXO9YxDzfJ+OyMu4Sr1hWc08W+sPBXA5gX+QnaIsZC3W9JL90U8uzrQ+OUq+BcDHk/aZL8KqcLVFPZ/adC/GCK8yhazPqTn7YdOJWUAbgg9AH46rucHycVMF31fQ026WFqd0hVFBDlq/Ucr/d9YUe3cn5kd2n/sd73RuN4c7NCA7rICYk76QCkRyNENfYx4o8RC7Qv8i8y+S7z0VFkgFoAP4mZVTH3VZa+QygGQIDhgV0vM+GerTp76kuocmyvFxzvngniVj+aOQetIUIXl65E8uDcxMU4bzgqpbaOaJhYA/UmUwMhnLuge2qcjUCxARs8bnzOGiFLwdcagqJIQMALt3EPDNgrCcmUOiowvkjbzop4G08gpxY8j20Jc3I2pZIzZxlEtLwBYLiMuURT0F8otD3gvs6ngj9QyI66CAGJPdmkTdpdgqoZ0JwUqTEQJScqJ2uFdqnbOxi9+QZcCqtqA1/vuzLlgS54n8Z5wkeuv+DwfRSFa0y51iiWIHUUloTdfzhe3nWSDvsbqQMYt3FDzCwqCtYJgrrtGBaw5IiEz1GuwVHdaCCfTp47HJZFpwBL2rCyaFYjwgX2aZ6ERZcEKy81WaLLcUWTlwEvVyVNI2+HJ71iawYJlq7lQbUD9Db/E99cIWqcMmNXMIaeGnH3pZQmdbli31ZhcwqZEWmgBErUrxLVCEXd+3khOtTcKlVxJ/SvO5JjIGULhT+yx3Ihbyta+bXyzw1T8RTtmYHuwc/2IRKFWfXEEdQWj8NooELvEiRKnrAWZDS4Dja91nlfEJ6DauebUmGgpTnmG/w+9OlYQ0/88AnBh8I60dhL230HHYWnIDJMIg2hBbJ1BGT3zM/lA4G5wWGh5RfuJC5VUOKSJzkr6zW8v3OaGAqmF5KAy3YdJdyoPxcp3fPgZvkx0yvPLw+fsQZ1n3nph+DWZkR4+8iAjJVHrPRVrqqRr6hpQwiC00tc0s/JRe7UFkOR3hS3MIWVQ3FkZdapXqeLkTn2Ls+RSP6tH4YusaqS4vxqX4ErbLMNh1BOQY4CLyrh X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 296336d1-60ea-456d-5999-08d96c88cbe3 X-MS-Exchange-CrossTenant-AuthSource: MWHPR1001MB2158.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Aug 2021 14:08:24.3711 (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: u+Fvr89XM/oxfWQx3un7ade9OdRc6/fVLhW7NjG7haQlYV1Rg8z2VdsfYEqhdeIriFqiHsvVlybPp3GaWMr9pQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR10MB5556 X-Proofpoint-Virus-Version: vendor=nai engine=6300 definitions=10093 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 bulkscore=0 phishscore=0 spamscore=0 mlxlogscore=999 adultscore=0 suspectscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2107140000 definitions=main-2108310078 X-Proofpoint-ORIG-GUID: T3F-l4WoTIAPwzkwb__UvqujHkJM0ZJy X-Proofpoint-GUID: T3F-l4WoTIAPwzkwb__UvqujHkJM0ZJy 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, MSGID_FROM_MTA_HEADER, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Indu Bhagat via Gcc-patches From: Indu Bhagat Reply-To: Indu Bhagat Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org Sender: "Gcc-patches" -mco-re in the BPF backend enables code generation for the CO-RE usecase. LTO is disabled for CO-RE compilations. gcc/ChangeLog: * config/bpf/bpf.c (bpf_option_override): For BPF backend, disable LTO support when compiling for CO-RE. * config/bpf/bpf.opt: Add new command line option -mco-re. gcc/testsuite/ChangeLog: * gcc.target/bpf/core-lto-1.c: New test. --- gcc/config/bpf/bpf.c | 25 +++++++++++++++++++++++++ gcc/config/bpf/bpf.opt | 4 ++++ gcc/testsuite/gcc.target/bpf/core-lto-1.c | 9 +++++++++ 3 files changed, 38 insertions(+) create mode 100644 gcc/testsuite/gcc.target/bpf/core-lto-1.c diff --git a/gcc/config/bpf/bpf.c b/gcc/config/bpf/bpf.c index e635f9e..7228978 100644 --- a/gcc/config/bpf/bpf.c +++ b/gcc/config/bpf/bpf.c @@ -54,6 +54,7 @@ along with GCC; see the file COPYING3. If not see #include "builtins.h" #include "predict.h" #include "langhooks.h" +#include "flags.h" /* Per-function machine data. */ struct GTY(()) machine_function @@ -158,6 +159,30 @@ bpf_option_override (void) { /* Set the initializer for the per-function status structure. */ init_machine_status = bpf_init_machine_status; + + /* BPF CO-RE support requires BTF debug info generation. */ + if (TARGET_BPF_CORE && !btf_debuginfo_p ()) + error ("BPF CO-RE requires BTF debugging information, use %<-gbtf%>"); + + /* To support the portability needs of BPF CO-RE approach, BTF debug + information includes the BPF CO-RE relocations. */ + if (TARGET_BPF_CORE) + write_symbols |= BTF_WITH_CORE_DEBUG; + + /* Unlike much of the other BTF debug information, the information necessary + for CO-RE relocations is added to the CTF container by the BPF backend. + Enabling LTO adds some complications in the generation of the BPF CO-RE + relocations because if LTO is in effect, the relocations need to be + generated late in the LTO link phase. This poses a new challenge for the + compiler to now provide means to combine the early BTF and late BTF CO-RE + debug info, similar to DWARF debug info. BTF/CO-RE debug info is not + amenable to such a split generation and a later merging. + + In any case, in absence of linker support for BTF sections at this time, + it is acceptable to simply disallow LTO for BPF CO-RE compilations. */ + + if (flag_lto && TARGET_BPF_CORE) + sorry ("BPF CO-RE does not support LTO"); } #undef TARGET_OPTION_OVERRIDE diff --git a/gcc/config/bpf/bpf.opt b/gcc/config/bpf/bpf.opt index 916b53c..4493067 100644 --- a/gcc/config/bpf/bpf.opt +++ b/gcc/config/bpf/bpf.opt @@ -127,3 +127,7 @@ Generate little-endian eBPF. mframe-limit= Target Joined RejectNegative UInteger IntegerRange(0, 32767) Var(bpf_frame_limit) Init(512) Set a hard limit for the size of each stack frame, in bytes. + +mco-re +Target Mask(BPF_CORE) +Generate all necessary information for BPF Compile Once - Run Everywhere. diff --git a/gcc/testsuite/gcc.target/bpf/core-lto-1.c b/gcc/testsuite/gcc.target/bpf/core-lto-1.c new file mode 100644 index 0000000..927de23 --- /dev/null +++ b/gcc/testsuite/gcc.target/bpf/core-lto-1.c @@ -0,0 +1,9 @@ +/* Test -mco-re with -flto. + + -mco-re is used to generate information for BPF CO-RE usecase. To support + the generataion of the .BTF and .BTF.ext sections in GCC, -flto is disabled + with -mco-re. */ + +/* { dg-do compile } */ +/* { dg-message "sorry, unimplemented: BPF CO-RE does not support LTO" "" { target bpf-*-* } 0 } */ +/* { dg-options "-gbtf -mco-re -flto" } */