From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by sourceware.org (Postfix) with ESMTPS id 0721C39730DF for ; Fri, 9 Dec 2022 06:55:20 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 0721C39730DF 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 (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 2B8MImqB021150 for ; Fri, 9 Dec 2022 06:55:19 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=QbeL3gN3T1/dIv2yL9l2zEIbpyg2qE+twqs+axJXxNU=; b=Pl4q8WCdcYablccFHYWp9MGOdpG9ay+SoDy9Jz9Y1Au91XEr1CjXBRtncQgP/GucSlhe xUd2iRuOv6oaekthyEpH+yX9ItpaINM4iAxe4ZvLZSD4LnZTM8lNBNk0KDHLjq5tsYmz yG6Zxb5MefbpBb4iQz81hPeG1Dx0B1J6flzcfxyy3T3nb8kjBkxzFj7ibQv58uBbfMH+ bdLxaDYrvfntB1x/K6LfbF+UEnSXN64nWt/ysUoHv+lij+ddROwngnWr4swGT0d25Evd ZeB+XstTfk2Z4JGx+GDvGJjjfxCRpipAGZRzX9uYNkC3mITbKLQq8EwAqtIFg4wltixA hA== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3maud74kvm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Fri, 09 Dec 2022 06:55:19 +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 2B95rOxi019613 for ; Fri, 9 Dec 2022 06:55:19 GMT Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2168.outbound.protection.outlook.com [104.47.55.168]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3maa8jxgpd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Fri, 09 Dec 2022 06:55:18 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QE5Q5+ZAp7OXqoUWxmCeTvfDWCHCeJ6/dY0GwGamnO7467OyLDSgo+P+3uX7ja8i0vZb66gWHIodXNG+PffRHotGphZ50kYbFhA6r/gmd6uHbz+Q21PwW6vJWqh58RxcGQ0M1GE5j/RLT3MjlQBwZBBEZ5eBvxG/u+IrT0MEheUz76a0LbLW85Ow2wSdProm+mKL30YjCIV3YW4KmHtOP4sWg/wEAK4/BrJvBys4ryg2kPGsF6NDD405EX3vhxldOC6GfYepGdAUBxymB0wpae5HrGFIDd+/d9/VoWHqsnZ/w66a6oPFXhOkyhXcWIS7Tmmqd0PwOqQe41XC97PtVw== 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=QbeL3gN3T1/dIv2yL9l2zEIbpyg2qE+twqs+axJXxNU=; b=H/oZ538jokool3n7aZr6frIcVhOS4eQHSCcEt8CtrTOgunkyxFU/eEan/TB5vmPgltAuQ/bLGit6KuV5KyD14+a0P+m9CTlPg8mdeuenKr0VYLc7kmTmLx/v5mje24415EnHeqFeCnc84kP56jjHT9q96oIUCen/bkdkJWwjqieY2uIsywq0giMQJft/ZQDAkDuSkj1tvCo9XZAaPdT5CC2bgq4ZLURV6wZDq1BY0p1pEshJAYK7hEP9D/vOcq1CbeZ7J1lr8wTezVNiD8spS3l329vliDapV8engMd9hRCZJwnUaLKAtQJMYAHRzBsdtPqmP5WXsnTXvi4uzBvpZw== 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=QbeL3gN3T1/dIv2yL9l2zEIbpyg2qE+twqs+axJXxNU=; b=o9oXdLcWk4iIpTTZ2504saRrP+JpIjuRLCiZHC4LTz/gkQDy+X/BVYCuUrGuA7+aE8MzMTLFfuFnOax965wWViXRJkLcw2ANAqSuIJ0vQywV39hGrLYUtbl5l9QwZztR52BILB8AZ+EKTdoB7D28VwQqMVi8MKOzHmfGSUfVQ14= Received: from MWHPR1001MB2158.namprd10.prod.outlook.com (2603:10b6:301:2d::17) by CH0PR10MB5097.namprd10.prod.outlook.com (2603:10b6:610:c2::5) 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 06:55:16 +0000 Received: from MWHPR1001MB2158.namprd10.prod.outlook.com ([fe80::ee70:1952:4416:1bdc]) by MWHPR1001MB2158.namprd10.prod.outlook.com ([fe80::ee70:1952:4416:1bdc%5]) with mapi id 15.20.5880.014; Fri, 9 Dec 2022 06:55:16 +0000 Message-ID: <3c332b0b-5193-48e7-7790-1b02d87f33a1@oracle.com> Date: Thu, 8 Dec 2022 22:55:14 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.1 Subject: Re: [PATCH 1/3] btf: add 'extern' linkage for 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-2-david.faust@oracle.com> From: Indu Bhagat In-Reply-To: <20221207205734.9287-2-david.faust@oracle.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: MW4PR04CA0146.namprd04.prod.outlook.com (2603:10b6:303:84::31) To MWHPR1001MB2158.namprd10.prod.outlook.com (2603:10b6:301:2d::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MWHPR1001MB2158:EE_|CH0PR10MB5097:EE_ X-MS-Office365-Filtering-Correlation-Id: b63a0e3f-2d02-45a1-6225-08dad9b253d0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: hnZuFZ0NRNesTpmjbJYfsBmjx+LiNwxP+Zq6YJXNwv/67WS2c9Gpf2xq9k/hiM5+sKd9E9a3UFQ73t77JvXtjVxNdmS6QDRCYP8RX8NGPMWh8bmnMPYsx+Qptv3gCVfKtWNJxkqtIPDdNc8m8JGBBemoQrpe9ZUSGrRcKixjDWOOksrOB/1TBVoTjEMcYkoYBVeUeYGFxIg7Yk1s9k7Bhlk4O/ktnaV/YnbYrKSrUmM5Tw/qkH2+hwNaOKwSRKevyXZi47AZVyTAdIRdmfVg7fkF8TZqBvTyfSoF5BmNl6jIjWFG6hEAHBjEsJfxt7klCmcJeCY3du86YDOSm6F5AhcdqfCbhm7GQdHBU6nnoWuZUioVQo+NhlxJMLDtitIL+a+G+FFoz2GNFa2znnhS4lrMlwtsr+bq/2eLbVvP6MrXs0nnMCdLUO8cjQQ7JHOi5vmlOubv2VbO8+lokzQBPhGP+WoobtXjuTsxkZ5yCERpvCB9V3OxgetCX0cREiCPWUeHDEhdtjjuUDvibtnonNofDzLS0IBCfKZOccw3tNZF74eF7B7xIqbZyB7J6066p/FDVjm+zdtxlZDBQW+Ufx/BAduvCeGVZ3AFUIi9PS7/h1oW6yORhxcUyMFuaAp+UMKnqVG814vfDJ/kpISIEfvC01a2yhoKfpSCXNA8x9E6lx2c2f82tMqJ97cw8R++MXfD9yQhnb6BXkN1aACC0nnRNVoDR7CSbq2rqnXzumjS4YM0t8D3x8WpdH60jz8q 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:(13230022)(39860400002)(396003)(136003)(376002)(366004)(346002)(451199015)(31696002)(84970400001)(36756003)(38100700002)(66476007)(41300700001)(8936002)(86362001)(2906002)(4326008)(44832011)(83380400001)(66556008)(8676002)(31686004)(6486002)(66946007)(2616005)(5660300002)(316002)(6512007)(107886003)(478600001)(53546011)(186003)(6506007)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bDg5M1dwMUFZWkJlL2JkeW1GSmJrazNXZDVEZVYrTWJVaWlrb2NyRlJEaEY2?= =?utf-8?B?SktnZXlNTzMzNTFLa0JDb0RpM2RhN2FpTWtFc0NOTTkvQUR2NGpNd3pUMDJw?= =?utf-8?B?S2phMGNMQS9RSncySXoyRGh2SzMzbjBvR3p4TkhkQ2FsSFVJeEJRcmRTY0JN?= =?utf-8?B?UWdxVno1aFZZSWl3MHNDdnFuVEpOR1pISEFVQndTeVRIWE1LZ21GSUFIeUxC?= =?utf-8?B?VFlkcnhwTitwcHY1cVRYb1RMOFpldG5ja0JlNjBxSFZGVnRBSkhYM3k1bnNt?= =?utf-8?B?djRKalVXeERLSWpmcHFhblVTMUk5NVRKSTRaUWV1bkZPdThFVko0RE9aWkwv?= =?utf-8?B?dG1kdGNSbHE0R3hoWXdqZ1N0V1VKcDU1bkJCSVIvaTE0bS8xMHEwbXhielZa?= =?utf-8?B?VUd0ZUtHT2Y0STljbFRmaytVSXlPSnVQS1p0YUhqT2Fva0M3VitOSkZjWHh1?= =?utf-8?B?TmgvcTJzbkVML3loc3V1SzRjU0dxMmpWZTFuUGJyMUppS2tmTGdnSXU0UFlU?= =?utf-8?B?TFA2WE8rUTI3WnlwdlBVU1EwN1hLdDBrUzdPYmtlbHl1RFB4YWszYzhwenR2?= =?utf-8?B?NXNvWThvUnpYZll1c01VUi9sYldrMnNXTmpzcVhlUXRLS21BUkF1OHNSaW1C?= =?utf-8?B?N1YyR0V0SWlhZExtUUJyVkdmd3o0aGtCazFDS05qNTNzcGttaGhJalRBUTRq?= =?utf-8?B?SG9VQWRkbTM0SUVFSDlTYVFCMFY4SVNodFJXVm5IamlXWXRGTWlGSWh3Vm1N?= =?utf-8?B?ekFSd3FZWjRsWmpKVWNpYVNNdjdTU0dTK2pnbDQzLzFNQUtIWm13elNMaVA3?= =?utf-8?B?WFgvUVdhQXFWTnVVWU1obGJLWUUzTlRQUFhZUCtFcHc2R0Y4QjIwd3NManQw?= =?utf-8?B?azY3Qi83QjNpNjJrMUk5UkU3QWNRY1Eza1BrY2h4VGdySVF2MkZXMWFIRVYy?= =?utf-8?B?R1VnNkxmWE1oSlhZSTliQlE5WXgwVXFaZy9pZDlQcFRTVzhTR2RlTDhPTEhM?= =?utf-8?B?aFNuSEpRSE5tVHJjQ1dDbDArQnAzdVFQMVg1N2pvU05lU2pnT29QcWJvYngv?= =?utf-8?B?czA5c2lJOXhabzBQUTJ0Ukt3WFZtYjFKeGI0TVM2Rk9VbWhvNFh6UTZUSmxM?= =?utf-8?B?TDZoYjdRNWhCeklMcTJsOVpJSnJmUXNhZ0FQZ0JiMDlRTDdiWGsrbUhTdENx?= =?utf-8?B?VmpONWFBUGZWZU1ZN1NmUlhyNjNSdVBMQUtSOTRsT1FySHUxazZjY1M0SnM2?= =?utf-8?B?ZnRXQmp2eEwydEJCdzdObHVZTU45V3ZYa2s2elR5UUwvc3hxWGl0SVczdmpu?= =?utf-8?B?TXFxeW1zVHF3N2VXcE1qcHJmcHhmdUJRbHlGZ2RvdUZKeTlBdFA3akg5Ti9Z?= =?utf-8?B?YkdYMWZIMFBjdjNVbElyeWVKVktDZGs2ei9yem5kb1Z4U1NaUkllcnhVOUFT?= =?utf-8?B?Y25jb3p4aXV6aGtSa2NjUXRwb0s0T0FwdzhCUk5VSkdMT3RLdWNpbk94MzZl?= =?utf-8?B?MEVydnlWSUJCTXV3YzFrVWp5ek9SbURweDRUQVNwbmhDSHZTV1lRQnRHVFlG?= =?utf-8?B?L0YxVG43Nm9CZVRpZGlLNDFoUTBYVGczeHd2ZnZ4RUVGenB4YldGR1lhd0Ez?= =?utf-8?B?R2xGcS8xS1BSMTNPb2pHbFJQOTNBdmZ6WFc0VmxxQjA5LzRuK0t3cFNKZGJj?= =?utf-8?B?WmNVenB3VS9WSkt5dUZQemU2K0ZGekgyVHpqRVc1ZnpvZGRJVW9FYjhUZWVa?= =?utf-8?B?OThEVjRnZTlPdWZ0SnI1WThRbVJYZU11WDVvZzJscGoyQnVqQU5Sb1Z1cFhQ?= =?utf-8?B?WGR5RGFlU2ZrbmF0ZWI0TTF2azgwaVg4SGR1b2JjbnJtUlFnRlZvYldFWUI0?= =?utf-8?B?L09xTVozMGNXUGFySjNNYVdYeU9EMDJmOGNJT21NRnE3cktxTHFNZHRIVTRN?= =?utf-8?B?Wm5aLzNONUhEOGU5YWlzMHQrVjRVcGZBVzBSMVg0c1k4alFLaGNNL2QyMm5X?= =?utf-8?B?LzdwcXg2a1NZQVNMWnhJNkhZVTVqOTJacVR1UUtJMFR3S0xnOHUxZHZ0bEF6?= =?utf-8?B?RkdZek1pTWdUQ1NlL25oYzdIQmdrMEUwMlBVUDFjbzZJTkJrMGJnUWgrb2pQ?= =?utf-8?B?Z0JVVzNKeEd6b296RHBJTTJqenRJeWNTbjlnMkd4cmt1QkFGcDJ4ejAwYVJZ?= =?utf-8?Q?wmMCxq2D54bHtw2Nilw33Mw=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: b63a0e3f-2d02-45a1-6225-08dad9b253d0 X-MS-Exchange-CrossTenant-AuthSource: MWHPR1001MB2158.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Dec 2022 06:55:16.1636 (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: 0Z8j5aHdvNHRus0sMvvHioVqXc7SZ4gOHgM0aQOPu3XP2vaGrZ+icFiqOarVQPfNUwHRFaA3nYrR1cWZdCOFyg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR10MB5097 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 bulkscore=0 suspectscore=0 phishscore=0 malwarescore=0 mlxscore=0 spamscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2212090059 X-Proofpoint-GUID: hFwHWuWiTUOWf4X5BnlbAfizn6ljaRCu X-Proofpoint-ORIG-GUID: hFwHWuWiTUOWf4X5BnlbAfizn6ljaRCu X-Spam-Status: No, score=-13.3 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: Hi David, On 12/7/22 12:57, David Faust wrote: > Add support for the 'extern' linkage value for BTF_KIND_VAR records, > which is used for variables declared as extern in the source file. > > PR target/106773 > > gcc/ > > * btfout.cc (BTF_LINKAGE_STATIC): New define. > (BTF_LINKAGE_GLOBAL): Likewise. > (BTF_LINKAGE_EXTERN): Likewise. > (btf_collect_datasec): Mark extern variables as such. > (btf_asm_varent): Accomodate 'extern' linkage. > > gcc/testsuite/ > > * gcc.dg/debug/btf/btf-variables-4.c: New test. > > include/ > > * btf.h (struct btf_var): Update comment to note 'extern' linkage. > --- > gcc/btfout.cc | 9 ++++++- > .../gcc.dg/debug/btf/btf-variables-4.c | 24 +++++++++++++++++++ > include/btf.h | 2 +- > 3 files changed, 33 insertions(+), 2 deletions(-) > create mode 100644 gcc/testsuite/gcc.dg/debug/btf/btf-variables-4.c > > diff --git a/gcc/btfout.cc b/gcc/btfout.cc > index aef9fd70a28..a1c6266a7db 100644 > --- a/gcc/btfout.cc > +++ b/gcc/btfout.cc > @@ -66,6 +66,10 @@ static char btf_info_section_label[MAX_BTF_LABEL_BYTES]; > > #define BTF_INVALID_TYPEID 0xFFFFFFFF > > +#define BTF_LINKAGE_STATIC 0 > +#define BTF_LINKAGE_GLOBAL 1 > +#define BTF_LINKAGE_EXTERN 2 > + I was about to suggest to rename these to use the same name as used in the kernel btf.h. What is used there is: BTF_VAR_STATIC = 0, BTF_VAR_GLOBAL_ALLOCATED = 1, BTF_VAR_GLOBAL_EXTERN = 2, But after looking at the Patch 3/3, I see you reuse these definitions for functions as well. I just find the names confusing on the first look - "BTF_LINKAGE_STATIC". Naming aside, what do you think about adding the defines to include/btf.h instead ? > /* Mapping of CTF variables to the IDs they will be assigned when they are > converted to BTF_KIND_VAR type records. Strictly accounts for the index > from the start of the variable type entries, does not include the number > @@ -314,6 +318,9 @@ btf_collect_datasec (ctf_container_ref ctfc) > continue; > > const char *section_name = node->get_section (); > + /* Mark extern variables. */ > + if (DECL_EXTERNAL (node->decl)) > + dvd->dvd_visibility = BTF_LINKAGE_EXTERN; > This made me think about the following case. extern const char a[]; const char a[] = "foo"; What is the expected BTF for this? Since BTF can differentiate between the non-defining extern variable declaration, I expected to see two variables with different "linkage". At this time I see, two variables with global linkage but different types: .long 0xe000000 # btv_info .long 0x4 # btv_type .long 0x1 # btv_linkage .long 0x1f # btv_name .long 0xe000000 # btv_info .long 0x7 # btv_type .long 0x1 # btv_linkage .long 0x60 # btt_name > if (section_name == NULL) > { > @@ -676,7 +683,7 @@ btf_asm_varent (ctf_dvdef_ref var) > dw2_asm_output_data (4, var->dvd_name_offset, "btv_name"); > dw2_asm_output_data (4, BTF_TYPE_INFO (BTF_KIND_VAR, 0, 0), "btv_info"); > dw2_asm_output_data (4, get_btf_id (var->dvd_type), "btv_type"); > - dw2_asm_output_data (4, (var->dvd_visibility ? 1 : 0), "btv_linkage"); > + dw2_asm_output_data (4, var->dvd_visibility, "btv_linkage"); > } > > /* Asm'out a member description following a BTF_KIND_STRUCT or > diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-variables-4.c b/gcc/testsuite/gcc.dg/debug/btf/btf-variables-4.c > new file mode 100644 > index 00000000000..d77600bae1c > --- /dev/null > +++ b/gcc/testsuite/gcc.dg/debug/btf/btf-variables-4.c > @@ -0,0 +1,24 @@ > +/* Test BTF generation for extern variables. */ > + > +/* { dg-do compile } */ > +/* { dg-options "-O0 -gbtf -dA" } */ > + > +/* Expect 4 variables. */ > +/* { dg-final { scan-assembler-times "\[\t \]0xe000000\[\t \]+\[^\n\]*btv_info" 4 } } */ > + > +/* 2 extern, 1 global, 1 static. */ > +/* { dg-final { scan-assembler-times "\[\t \]0\[\t \]+\[^\n\]*btv_linkage" 1 } } */ > +/* { dg-final { scan-assembler-times "\[\t \]0x1\[\t \]+\[^\n\]*btv_linkage" 1 } } */ > +/* { dg-final { scan-assembler-times "\[\t \]0x2\[\t \]+\[^\n\]*btv_linkage" 2 } } */ > + > +extern int a; > +extern const int b; > +int c; > +static const int d = 5; > + > +int foo (int x) > +{ > + c = a + b + x; > + > + return c + d; > +} > diff --git a/include/btf.h b/include/btf.h > index eba67f9d599..9a757ce5bc9 100644 > --- a/include/btf.h > +++ b/include/btf.h > @@ -182,7 +182,7 @@ struct btf_param > information about the variable. */ > struct btf_var > { > - uint32_t linkage; /* Currently only 0=static or 1=global. */ > + uint32_t linkage; /* 0=static, 1=global, 2=extern. */ > }; > > /* BTF_KIND_DATASEC is followed by VLEN struct btf_var_secinfo entries,