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 46CBD392F7F8 for ; Fri, 9 Dec 2022 07:34:50 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 46CBD392F7F8 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 (m0333520.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 2B96xGsN015918 for ; Fri, 9 Dec 2022 07:34:49 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=xJpTJlgX70AFdWhzw64sp6HmxfdpYZXDy52/SA4/fmM=; b=U13w8KamOkT7ONA0yoO/9hd88tNsLasnlSYd2KOFsc8MJ6wmuGvppCa1iyxmxfaugXXP ApLRdwiDkXhmZZIAJbHp2MrlSvSO68ZXmaGVXbIruzRdXgY9mZ9+9ApsjMOOPVf1iM+q 96fi+k8lkWIs1zH2TMf4p5SjPfhVDYsYB/Ze36s2PRHfUg71b7wKmgv5mKFY/RhTwY0C Sbp0zSGcW/TajsUOjUYbvSqAkXSxkYRd2apkphJmxmKgLsaf0ju7j+frlUGTNYF3bZi5 VZzf5r2auZ0c/xn8ONlVGXbTX0zPc1ZY8LWB39ZVf1IvNg2R8ZQkjFKz0L8j8IkSxdqY CQ== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3mawj6un6m-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Fri, 09 Dec 2022 07:34:49 +0000 Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2B96e80F034632 for ; Fri, 9 Dec 2022 07:34:48 GMT Received: from nam04-bn8-obe.outbound.protection.outlook.com (mail-bn8nam04lp2049.outbound.protection.outlook.com [104.47.74.49]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3maa4tae5d-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Fri, 09 Dec 2022 07:34:48 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Jw6IEfFWVPYcjQjz+ppIjo01f/+ryHZWU8Pdg1jN/TF83WK3lpsS3v9wBdH1IrS6iOFjryio8/KlBFMPyagGYAkuT3xV7k7a6rf+0os32R1M89wyatC/rqTq/uMUb5ffD6OJd68MQit/fBj+CbGTPEF2xSe2/8IwjBGsqKzCH6FkhAxwviRl4nW/L/jxt/igCRvegWrbNVQlKR1zsqVWFqTlptQwBnTNOD+RhvyaRAExH6mGARabfuqmPU0yz9EVbQ+H0VG6Ym/fa7PUAymmFi3TjT2umQPi2PLWWfL02k1NZlSYT6hjXs58kVrOvj7m2P3b7B1FwY6sYUT63hi0Ig== 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=xJpTJlgX70AFdWhzw64sp6HmxfdpYZXDy52/SA4/fmM=; b=XjzrilQ26SppO71RxISD3tG/sywBcQhQyOf3ApevBYadh/LL8XYXE/sEQzu0H3i4CTcr8/wADZC8S+qVNdwbRlq7qvgznOYdv3sL1oL6+eAfuBzeRhtugnrVXvmpfrhxapR44SHR2KF+p1G09ElVK/mn+nqLQeady1+nPV1l4/iWjVkby/vsandJUOn2eduvVsq047i01jxb1zyYSt2peNgxLOKuXrWgBASgsfDNibb716SdKZmuhXyJRC4drpsRlAayXi0Lw0UfcahqYnmYL8vireftEoIM9Hsn36HU12VfluDyVnh1UJ+DjJbhfvrF4UpPEkRGmniso+oJvcD/qg== 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=xJpTJlgX70AFdWhzw64sp6HmxfdpYZXDy52/SA4/fmM=; b=s8I2Csu0BdzcyH9IoR+tSVweM38NefR/xsn1cqvHe8f6ECVsLtL/B7DYWl5oEkg1BlvL+X+qt6J66UQzex/mEpC90MmDenFXyO8nQ6blcXaHRVIaoxUcDwDQfvKDN/AYTTuDobAeGhMoROzCCDxP5goMXW63FTroMrJA6hHKNPI= Received: from BN6PR1001MB2147.namprd10.prod.outlook.com (2603:10b6:405:2e::26) by DM6PR10MB4297.namprd10.prod.outlook.com (2603:10b6:5:210::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5880.14; Fri, 9 Dec 2022 07:34:47 +0000 Received: from BN6PR1001MB2147.namprd10.prod.outlook.com ([fe80::a4df:bf4f:569b:7d16]) by BN6PR1001MB2147.namprd10.prod.outlook.com ([fe80::a4df:bf4f:569b:7d16%7]) with mapi id 15.20.5880.016; Fri, 9 Dec 2022 07:34:46 +0000 Message-ID: <32ac835c-6609-03fc-4dae-9cc4d1977a86@oracle.com> Date: Thu, 8 Dec 2022 23:34:43 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.1 Subject: Re: [PATCH 2/3] btf: fix 'extern const void' variables [PR106773] Content-Language: en-US To: David Faust , gcc-patches@gcc.gnu.org Cc: jose.marchesi@oracle.com References: <20221207205734.9287-1-david.faust@oracle.com> <20221207205734.9287-3-david.faust@oracle.com> From: Indu Bhagat In-Reply-To: <20221207205734.9287-3-david.faust@oracle.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: MW2PR2101CA0021.namprd21.prod.outlook.com (2603:10b6:302:1::34) To BN6PR1001MB2147.namprd10.prod.outlook.com (2603:10b6:405:2e::26) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN6PR1001MB2147:EE_|DM6PR10MB4297:EE_ X-MS-Office365-Filtering-Correlation-Id: 8d5973f6-aab9-4ae2-2d84-08dad9b7d8a9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 0fq9dvzO16jOaprChv0nA90xycPwoVs7BumMEAWJiuzyjhCJU/cOfMd/BFqfNOJH9qYUjgAfZbAuQxFJQ4+LQgkYzQndXzY/zJZLicz+73odUpQ1XqwGrxfGR/roIrTRf6V2TmMDqIEEBEXt5pdfcRAtJN5uwJxHQxdlxMa/O0Oe8NKe0eubi4fbSSpov9Esv7s7FANmRmdkAKnDi3ghYIiW2FvDw5Xu0RbL2x3bM5snz1srxV5cx03ogFG3OGQgX1+P//rd7eArSS7uxlkFI2ossDFSTCsY4hmVPisIyrtqRYPt7VNav19B9BD4cWLJ60D5zsHyMBqxsXiRS3f8AZixERVcLi6laUZD6dLq0t1+bfcYJQ+frPbBB8BK/bBuis5ient6vOWpEQXxRvpPMlAUVczEvWrdQFw9hGaXAL+8BcX8rmPfzgXM2oN0nrAQIrzIh3ASbzZqlo9NwokzfnZMRhZWA/tafRSTsw3uGjfcZIlM9v1b0EJ5IdtECADORAATun9SrIHI7HmFMkoKMHsq0BVaG5gMYdLrZud5w7o0b6Su9Xpz61EVoGlKQu4+R7Y3K58eYGAQ/qUpaica91vYP1TXRFOlkEbNeDreSPEE+z95JT/NiJWccOiJWh1st46DiF2ACTvy4OR9dGjaQ6FRw+WfJ+TC5Z5k1/I90pLP68NKDM0+DNb0g7WxQl6Wd14b8ZmAihSW000i07fHT+kJ5n+8i3IZVYSx2//OaZrhDfKcmQbTp3/jJxpfEk49 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN6PR1001MB2147.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(376002)(366004)(39860400002)(136003)(346002)(396003)(451199015)(316002)(66946007)(2906002)(44832011)(66556008)(4326008)(36756003)(6512007)(66476007)(8676002)(186003)(53546011)(6486002)(478600001)(2616005)(107886003)(38100700002)(31696002)(86362001)(6666004)(6506007)(8936002)(84970400001)(83380400001)(41300700001)(31686004)(5660300002)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?M3lFSUtXeWlvNEJHR0w4dyszaktGdDdqYVVNUFdqTEhLVjZmVXYyL3JpZmxw?= =?utf-8?B?ek8ya1ZiR2pQS0JCNmZXd0V6Rkx5NFgzbE02Yk5tZHcxaWFBNmlDTHh6ZnZ6?= =?utf-8?B?akt4YXc5OW5xdEZ3Q1MzWmpWL2tJTCtDek9QWTl5bE1ySGR5anlha211MXR3?= =?utf-8?B?OUxCdTh5OFZYa2dxUzJvbHRva1NlRzJqenkwQUdnNC9JS0VXTVQ3Rk13QmtZ?= =?utf-8?B?S0JaQ0JuWWVrYmVLY3ZMZ1BIS3lUTmcrVVlLdFo4MDQ3YU11MFR5L1pKMkZB?= =?utf-8?B?b0NzVXE1VlliTjdYZFRMQytKQ3FFcFNndGV4T3NJQ0M2T0oyMGorbkhlN0ZG?= =?utf-8?B?SVJsdnRHVkdsOEhxK0RWOHljbXJ2Z0xSaWkvUnlQanAwd0JSdkp6TGszYWJB?= =?utf-8?B?YklhQ3pqbVY3M244TmxLNTlVSkdNREVVSnJ1RXRNVmExQXB2UjNFYnl4bFA1?= =?utf-8?B?ZFZleWJKeEEvZm53dkl2eitrS282SnRkdy8yWHA2US9HSTl6VVlybzZXMHhh?= =?utf-8?B?SzNHNklXUi9rcEsvSlphSUUzNS81Z3k0eTcwTWE1eVpRa3pjd0RKMTEvZUZh?= =?utf-8?B?aFlxUjdKRGlZNkpFVXZSaEJCVDdZYnE1QU8vaVZUNWJYZVNaS3Q4eWFwZm4v?= =?utf-8?B?bmRZV0pDeloyV245VW83U2F5NzZYQ1c1TDJiZWdNYW54Z09EWlBhS0Z4dUZr?= =?utf-8?B?eEE2Q1Y4RnJLWitTcUk1b0pkaEF3SUg1WjNxTVlGZXhhS1lsNC8zd3FmQitE?= =?utf-8?B?TnRFemhMVW1PZVlLc2dJa0MwTWVMb1JFR21VcXhvT05GckZORjZrOHl0ak45?= =?utf-8?B?U2NEWjliTmJFNkY3eUJpM2xoMTRTdXhLTmprZStRZCtwZjdYVHFOZ01lazVO?= =?utf-8?B?SHo1dWFQRGVCRUg5YkQ2d0tXL2NUVFFLaTRCWXN6b3JrL1MrR2xBRWhwREps?= =?utf-8?B?VVhWbWJDYVZJa3NHczVHSDMrYzNMam5oTlNEQ09POG1iZVdNazZjUmVXNXpm?= =?utf-8?B?Q3E5NWtsdmJ2SW1MMWk3a1RsRWlmUEMzek5Sc3F3cU4vYTE1VzQyZXgxNlRJ?= =?utf-8?B?cGpObVR6L0FWVWNhTEV5bFpPUzlPZTgrNlVQaEpncHVrUmhVL3k3UldjbG1u?= =?utf-8?B?c2ttL2xwbnlPbFBlcytoNkdTVC9QTGpXd3ZpdGxhWURWWG43WWpCRTFiQ2JE?= =?utf-8?B?aGR3SU9iVUQ4WDI2TDlySU1IVTNoT1d4WWZPNG5mNFFVSVNLNFRaNUNOQmxj?= =?utf-8?B?bnRIdWoxVnJFUmEwYzg3RHpvcFFnZkIxOHZ4emVJa3JhOHBkbXFZc2RLS283?= =?utf-8?B?U3l0Ull0MTNVZ0JLbTV0Q3FIZUZPd3BYVVEvZDJaV0oxT1JPdjJDdUtubWpp?= =?utf-8?B?QnRYMUEvcEMwbzZqVmk1cGhjUTFTYkx5Q0ZIRFZUQUpXdDFIZ3B5SXQrZXBJ?= =?utf-8?B?RXJmRjZOcno1STZKUUYrSE1OTHZhcGxoNEtiUWVORlhZdGxnUmdhUy9TUFFH?= =?utf-8?B?c281WU9weXdJNHJIUlJINDVsN1VZM2pIMU84QlpxaTZ3QmpoQ3dpSWZoRFhS?= =?utf-8?B?dFFsTUpuTnlTQjhXd2RoSXRmNi8vb3kzOWVSanFPYnZUL0hyME9xZkpkRnBr?= =?utf-8?B?R3ZvZGU5NVhtUktjQmhPMS9aV3BtWWlhUGdxTDlBSGhDMnF0QWhaSWxNcmtP?= =?utf-8?B?TEhBTGxWK1ArZnY5SlpCOXVlQUsxa1VTL25NYjFMRnJ4ZUl1UFdPS1dPUTA4?= =?utf-8?B?bUFRWko5QWcrb205ZjNBTDRVdlhXVnJDT1V2VWk2blpnUzNsWnRHSjU2bUlo?= =?utf-8?B?WHhNRFVSRk1OZ3R6ZnJ4YmFOODlRTVdkRkxxNXJZY2ZFM2RlcVZKeC81ekZi?= =?utf-8?B?bm9FN3hZOGxOdDlGcGdIMUZ4Ly8vU2Y3K0RhaVc0S2VUSnZJM3QxVWtObUdT?= =?utf-8?B?VHgrdU9sT1NBZk5SWjBqTWFuRHNuNUxEQStQSlVRdDljamJkM1M2QWlqMXV6?= =?utf-8?B?RUVROXE3cGxzdGUyV3ZmZ1VaN0p5akxyMjB3Rm1tZVAxRzJYblh2a2xOUGNx?= =?utf-8?B?WE1HeHFGWDltZ2lOMW1MVFNBQ1U4VmE1azNLQnJQbkh5bnNGTVRUVmsvRjRa?= =?utf-8?B?UllON2cvUjNWSCtuelB4NUpDWnNKS3QxTEZ2RXI5ZW0ySVc3SVh3UVdRd0NG?= =?utf-8?Q?6MVnn6afsmbMNCPePH2iS+4=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8d5973f6-aab9-4ae2-2d84-08dad9b7d8a9 X-MS-Exchange-CrossTenant-AuthSource: BN6PR1001MB2147.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Dec 2022 07:34:46.6054 (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: dAxVEx8vkW32vIIKFZ/u8hAzTZFBbZb9LUsj9N2HPCwkqGKtQ7HcN2R2uJrUa+4Qf6ARwtdutUcgLrcp/bTY+Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR10MB4297 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.923,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-12-09_04,2022-12-08_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 suspectscore=0 mlxscore=0 spamscore=0 adultscore=0 bulkscore=0 phishscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2212090064 X-Proofpoint-GUID: HyU-V8d37nTiQzpdwAtEzZ8U0x0XcYOw X-Proofpoint-ORIG-GUID: HyU-V8d37nTiQzpdwAtEzZ8U0x0XcYOw X-Spam-Status: No, score=-13.5 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,NICE_REPLY_A,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE,TXREP 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: Looks OK to me overall. Minor comments below. Thanks On 12/7/22 12:57, David Faust wrote: > The eBPF loader expects to find BTF_KIND_VAR records for references to > extern const void symbols. We were mistakenly identifing these as > unsupported types, and as a result skipping emitting VAR records for > them. > > In addition, the internal DWARF representation from which BTF is > produced does not generate 'const' modifier DIEs for the void type, > which meant in BTF the 'const' qualifier was dropped for 'extern const > void' variables. This patch also adds support for generating a const > void type in BTF to correct emission for these variables. > > PR target/106773 > > gcc/ > > * btfout.cc (btf_collect_datasec): Correct size of void entries. > (btf_dvd_emit_preprocess_cb): Do not skip emitting variables which > refer to void types. > (btf_init_postprocess): Create 'const void' type record if needed and > adjust variables to refer to it as appropriate. > > gcc/testsuite/ > > * gcc.dg/debug/btf/btf-pr106773.c: New test. > --- > gcc/btfout.cc | 44 +++++++++++++++++-- > gcc/testsuite/gcc.dg/debug/btf/btf-pr106773.c | 25 +++++++++++ > 2 files changed, 65 insertions(+), 4 deletions(-) > create mode 100644 gcc/testsuite/gcc.dg/debug/btf/btf-pr106773.c > > diff --git a/gcc/btfout.cc b/gcc/btfout.cc > index a1c6266a7db..05f3a3f9b6e 100644 > --- a/gcc/btfout.cc > +++ b/gcc/btfout.cc > @@ -354,6 +354,8 @@ btf_collect_datasec (ctf_container_ref ctfc) > tree size = DECL_SIZE_UNIT (node->decl); > if (tree_fits_uhwi_p (size)) > info.size = tree_to_uhwi (size); > + else if (VOID_TYPE_P (TREE_TYPE (node->decl))) > + info.size = 1; > > /* Offset is left as 0 at compile time, to be filled in by loaders such > as libbpf. */ > @@ -439,7 +441,7 @@ btf_dvd_emit_preprocess_cb (ctf_dvdef_ref *slot, ctf_container_ref arg_ctfc) > ctf_dvdef_ref var = (ctf_dvdef_ref) * slot; > > /* Do not add variables which refer to unsupported types. */ > - if (btf_removed_type_p (var->dvd_type)) > + if (!voids.contains (var->dvd_type) && btf_removed_type_p (var->dvd_type)) > return 1; > > arg_ctfc->ctfc_vars_list[num_vars_added] = var; > @@ -1073,15 +1075,49 @@ btf_init_postprocess (void) > { > ctf_container_ref tu_ctfc = ctf_get_tu_ctfc (); > > - size_t i; > - size_t num_ctf_types = tu_ctfc->ctfc_types->elements (); > - > holes.create (0); > voids.create (0); > > num_types_added = 0; > num_types_created = 0; > > + /* Workaround for 'const void' variables. These variables are sometimes used > + in eBPF programs to address kernel symbols. DWARF does not generate const > + qualifier on void type, so we would incorrectly emit these variables > + without the const qualifier. > + Unfortunately we need the TREE node to know it was const, and we need > + to create the const modifier type (if needed) now, before making the types > + list. So we can't avoid iterating with FOR_EACH_VARIABLE here, and then > + again when creating the DATASEC entries. */ "Dot, space, space, new sentence." in 3 places. > + ctf_id_t constvoid_id = CTF_NULL_TYPEID; > + varpool_node *var; > + FOR_EACH_VARIABLE (var) > + { > + if (!var->decl) > + continue; > + > + tree type = TREE_TYPE (var->decl); > + if (type && VOID_TYPE_P (type) && TYPE_READONLY (type)) > + { > + dw_die_ref die = lookup_decl_die (var->decl); > + if (die == NULL) > + continue; > + > + ctf_dvdef_ref dvd = ctf_dvd_lookup (tu_ctfc, die); > + if (dvd == NULL) > + continue; > + > + /* Create the 'const' modifier type for void. */ > + if (constvoid_id == CTF_NULL_TYPEID) > + constvoid_id = ctf_add_reftype (tu_ctfc, CTF_ADD_ROOT, > + dvd->dvd_type, CTF_K_CONST, NULL); No de-duplication of the const void type. I assume libbpf will take care of this eventually. > + dvd->dvd_type = constvoid_id; > + } > + } > + > + size_t i; > + size_t num_ctf_types = tu_ctfc->ctfc_types->elements (); > + > if (num_ctf_types) > { > init_btf_id_map (num_ctf_types + 1); > diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-pr106773.c b/gcc/testsuite/gcc.dg/debug/btf/btf-pr106773.c > new file mode 100644 > index 00000000000..f90fa773a4b > --- /dev/null > +++ b/gcc/testsuite/gcc.dg/debug/btf/btf-pr106773.c > @@ -0,0 +1,25 @@ > +/* Test BTF generation for extern const void symbols. > + BTF_KIND_VAR records should be emitted for such symbols if they are used, > + as well as a corresponding entry in the appropriate DATASEC record. */ > + > +/* { dg-do compile } */ > +/* { dg-options "-O0 -gbtf -dA" } */ > + > +/* Expect 1 variable record only for foo, with 'extern' (2) linkage. */ > +/* { dg-final { scan-assembler-times "\[\t \]0xe000000\[\t \]+\[^\n\]*btv_info" 1 } } */ > +/* { dg-final { scan-assembler-times "\[\t \]0x2\[\t \]+\[^\n\]*btv_linkage" 1 } } */ > + > +/* { dg-final { scan-assembler-times "ascii \"foo.0\"\[\t \]+\[^\n\]*btf_string" 1 } } */ > + > +/* { dg-final { scan-assembler-times "0\[\t \]+\[^\n\]*bts_offset" 1 } } */ > +/* { dg-final { scan-assembler-times "1\[\t \]+\[^\n\]*bts_size" 1 } } */ > + > +extern const void foo __attribute__((weak)) __attribute__((section (".ksyms"))); > +extern const void bar __attribute__((weak)) __attribute__((section (".ksyms"))); > + > +unsigned long func () { > + unsigned long x = (unsigned long) &foo; > + > + return x; > +} > +