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 0ED2C3858C27 for ; Tue, 12 Jul 2022 23:12:07 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 0ED2C3858C27 Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 26CLDx2P003008 for ; Tue, 12 Jul 2022 23:12:06 GMT Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3h71r189h3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Tue, 12 Jul 2022 23:12:06 +0000 Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 26CNAm3h036221 for ; Tue, 12 Jul 2022 23:12:05 GMT Received: from nam02-sn1-obe.outbound.protection.outlook.com (mail-sn1anam02lp2045.outbound.protection.outlook.com [104.47.57.45]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com with ESMTP id 3h7043ydun-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Tue, 12 Jul 2022 23:12:05 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ezA9srQGHqIfSCpTd0I+rhB47glebiZPr8HV+wU7MGBQPyC8SCuNKmP1kIbvqvdmT8SbUHjjpSHxN82sp0aMhcg+WeGKwklPF1YB6t5zj252aspBCjhxy1V+lVem5V4lj7PwhehG2aktZX1PSLxdidGs5diy0QZWYtWu9u1MbrdxZzuEcaIq0hUnMSRnvG2Z04eT1PO9WlaiJCXvxFcYfq8wX8Ab08M05n6XLp4IVErgcRVW6OOXgvCMGpB+D3Gnn0kdcxG7VscVjVFeTJL7vvONNn9SDNwcozlre9MnUn2ymgCcDLFxAFeFJfG6wkhRyg0b9h7hIL3ViUH7TTHP5g== 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=a6GlOn/45fGIJAhXEHYXFEr+WPvoea6YQ17DL4sdfB8=; b=QhKlHLnzq6TrrfapB/oJIAKHLIdbNi9/sKBGf7bJ+5xx1RTXOpFWZwVbtVBozrVIK7LYqhX4gFMTimzGEmKvMx41UzABY5tXoO176r/nJU3WfjVLBn2A0Fbb9fnKqLjCdPNBG3sDfjFLnzZANZolRA8Zbe7ImzkdAxRbNpvREvCWa3SZWIy3j6DOXuWx+uI9C7zAP/1k6+3kGI4L7UBrOcYaVx5ClJXeRtJoBqV3Z4GvOPeZpt0M3zv4uRXlXdCwVxomcQFATorKLa6orO45HD6Jnz6FD7V7IVHP3lCmHNQ0VVhE6VMKUSjvSPeNUrgCrYa/xRoR2B9Yst8ZHX6n8w== 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 DM5PR1001MB2297.namprd10.prod.outlook.com (2603:10b6:4:31::35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5417.26; Tue, 12 Jul 2022 23:12:03 +0000 Received: from MWHPR1001MB2158.namprd10.prod.outlook.com ([fe80::65fb:fa92:9a15:f89b]) by MWHPR1001MB2158.namprd10.prod.outlook.com ([fe80::65fb:fa92:9a15:f89b%6]) with mapi id 15.20.5417.025; Tue, 12 Jul 2022 23:12:03 +0000 Subject: Re: [PATCH V2] btf: emit linkage information in BTF_KIND_FUNC entries To: "Jose E. Marchesi" , gcc-patches@gcc.gnu.org References: <87mtde2wl8.fsf@oracle.com> From: Indu Bhagat Message-ID: Date: Tue, 12 Jul 2022 16:11:59 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.6.1 In-Reply-To: <87mtde2wl8.fsf@oracle.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-ClientProxiedBy: SN7P222CA0014.NAMP222.PROD.OUTLOOK.COM (2603:10b6:806:124::8) To MWHPR1001MB2158.namprd10.prod.outlook.com (2603:10b6:301:2d::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 995d8f05-780c-485b-be0b-08da645bedff X-MS-TrafficTypeDiagnostic: DM5PR1001MB2297:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: tSQkWt+zpVZWV4Ovjd7BKDw9X3eoFfxuNgRFnFv77nEUt1mOTuBaYTOkZW3qsafyjHH5Cy5CU4P7ru0e6uZzWu9R0DaWiK8wuNXImp2y2gobzmLnvviBFXD/GNnya9b4GYmX39LLehq/fqvbElaiOMyn4eIC8QixeLAV/z7mS+Y6Ers7cqwszXGXF8M31NT8AsM0zmNWsNmOopbX98lcIiYVhP5Vip37YG1iDJMiADuF2DzQuSlP/iZaapyxKopUfwXLrFUgkHR3RBS4uMqCUTxYAO3sMy4aXIZE1r6HY/rZlL+Lx/mx0qaHiRZsw2VnvDzBKESoDL2zUcRbD30hjxw/2o39fjKEKApe1IeJB6tIFjrXmMtznC1ngalbp9eaKCKgpQ3V1Viv8+g+eKmg0DklqmYr4M6OZ5yXKqwKWcFf6i6dXcsv5ifXwRSzk7OPyhDt9/LCB0QkB3SxWwzJXYCt0mDaoJVpD+7CT251hc20Hvuqlo1JfsSS5mC1L8dUy9/5pGkdqAti6d6IIOlS0WYXRDDg1ehgjAHd4X6pnv2tL8RBIWWCK7hn4c+E+HkDoFRD3aAhOHYEHtS7+rVVej5ZqKJGGM+/2jwLms1YpJwEFh/Exg+Qxr4ojUT8X2uZqpMmjkvba5wxy/8zDPm8PHft12ZYd8iaZS+gG6lZD2OJq+dellZcT9HE3KdzOhwZPI1c7o3AJbDxcBLkdJPkmATMSIgtqxf2PE3SBtlGrRz0Td8DhGOLAWtcf6WbC0c3pUuvblx3RMOIP67Z5qQGfqH5OedAhYgHy0+Cm2/vdtil343eykX8caA19sWh3iZfkbHSdg0mlUpB/bARwD1TVW2KgbpMvt6bwWWDdZXvIet0l2aiFF6ObqUTbMpfsIdIQP3c+PTzbgWA6ILwxMDtuw== 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:(13230016)(39860400002)(376002)(346002)(136003)(396003)(366004)(38100700002)(6486002)(31696002)(36756003)(83380400001)(5660300002)(86362001)(84970400001)(66476007)(8676002)(41300700001)(66556008)(6666004)(316002)(478600001)(186003)(8936002)(2616005)(66946007)(6512007)(53546011)(31686004)(44832011)(2906002)(6506007)(43740500002)(45980500001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?akxjZHl6dkhkZDJMdk5UaE5abUwwMjN6eUt1a0RnVHI1L0hGbG0yM2lBZWdI?= =?utf-8?B?aW9MZ3VMelpqdE91TURaVDNLUHY2ZTREVVFiTm9wcy9QNkM1ZUl1YWhoYThR?= =?utf-8?B?ZUZWMEVpOTBKM01YWThjZ2JxTHdSTVY0RHFHQTBEUVRPcXpXVE1uekFkZCtj?= =?utf-8?B?bmIxKy93RkJvdklYQXdKcDZnSlpkK1lPMUJ1VTErcytaT3YzN2dibmRRQm1n?= =?utf-8?B?ZUlGZHlQM0pjUXdrZHJzV1NSQldhL00vUWloZUlMWUoyRUdZcEtlVHcvUHc4?= =?utf-8?B?WGlqeEpTdmFPVzJNbTBVMzcyWU9ad3NVbUdTMEcvTVpLL2ZyZ2tNSVRrZHNK?= =?utf-8?B?dWo3YVZiSW9CTExCY09FRmFHUFFDL0hpM05qRnBXU1NMbHh1R0FkaTQ5bzZW?= =?utf-8?B?ZmxMYnlZWC84TmdtZmtWRnU0YzVSQTZuZkZCaFpOWVBHeWE1UXc5MkVma1lP?= =?utf-8?B?S2pCVXdxbDhXMDRVYkt6bHFLVGdUL24rTGVvYXVFY3BxMk8wbFV5R2h1cmRi?= =?utf-8?B?WHdzUFBqZ1NkMTNKamVOUkRieEtZcWk3aTI5OGd0NnA3RVFKSE8yek5haGQ1?= =?utf-8?B?MVllTTg0NGQvL2xkTERDNVRwL0Jpem55d0VHL0pHc2Y2S0ZtNFVBL2RmTDJD?= =?utf-8?B?UnRPNkRtYVdCeVRhVXZiUWRMUWNMa043U2dUdFRvTTgrTWdESGpRMitKRjdh?= =?utf-8?B?c3RlQnZ2K24reGd4VWRMUXd5ak8yRWZtcE4zYWJGVEJQUlQyUHlkQXM0T21t?= =?utf-8?B?K2gvVW4yQlZFNVBURlpjaWRXNVlXdmxRTE9QeFFpaE8zUFFGcXJpV3d1UGR1?= =?utf-8?B?Tm9RWEV0MzVrSUpieUJmM0dNejBkNGYvUXpTdUpCTEdkMzBUQmsxTTZJVkNT?= =?utf-8?B?VUtJbmFBUUVSYzVDczNpRWp4RVRMSzIvYVA3TEhmM29NTUVqczVLZjlibnJZ?= =?utf-8?B?MDVJTGxMZU9WbTRET2cxemhXdzhyWG9KaFI4dE1pTlBwWE1yWTE1SjJVU3o2?= =?utf-8?B?M2JNOFpBTVVhMFJOZ2JPRFNlWlcxTFlxcDVNZkFNS1RiNTdtbWRScGhFTzBx?= =?utf-8?B?Vi9mcndZeEU0OWxtNHB6Tm5wTkNURWF6Ryt3UXBPbVBySmVsSGZBRHNaVytU?= =?utf-8?B?d3RpQmpPOXFzZE10WHBTdGY1WTRGYUlyckNsZVNrRmJUQUR3cHVQWXR3NU8y?= =?utf-8?B?S21HWjZIcE5vRHR1NnVDa2FYZDRqS0FGUis3aUdHaWhRKytwVFJEUTh3REJL?= =?utf-8?B?djAvSXM3N3R1SFZTamNuY0JjbmM4YTVzbVBONi9YV2JIaVRsVWN5ZmRXMjBk?= =?utf-8?B?NEg3VTdwRU8rMVNXT3ZkMmRnQ0tCNEtEYkFvZCtoNnFIcDdSd3B6TnJScVFw?= =?utf-8?B?L1UvTjROalRkbmJ2ejFxcHU2cWpWWmdRR3hFRWVBS3AvRCtrQTN5bTF3dEdY?= =?utf-8?B?ZzlISVJYdkxlWkd1MjJEYUc4bDQ0K01IOEp4NUxvZjdLUUFsVlNib0l1KzFq?= =?utf-8?B?VGVkbm8wNzl0MDd6UlNScFNjRzViK1NSUlN4SWZ5ay9vQ0hkeU82RVBXNGlo?= =?utf-8?B?cnBaVHhNbVJqaWtrZURaMTJjY1l3M3JEV3JqRUtjc3I5dTRrYk5oRk53TVE4?= =?utf-8?B?SHRCS2FCc29VelNTT3Jxc1Y5MEtJK2dXSXN5TnVqb0VzelE1bEtFVTJGalRz?= =?utf-8?B?Z3VRQ2k5UitUSlNyOStaNnpYc0VjQm9DWjEyb2RVQjgvamN0dk9vZjUvY2Fi?= =?utf-8?B?eXBueVNxdVVRaFpSYnhxb0VzdWZBc2orK0VFK2NUblNiNjFyOWVVNnNoT04v?= =?utf-8?B?RFNTWmlCRzZibW0zcjV3aVdOTTVJMm85WEphRVZXWVRxNVpkakVJK2RsMC8w?= =?utf-8?B?bm5zK1BpV0hYRWJoQ2lGbVY1SVkwelNESG03anFqY1RsOEZVUFNnMEM0WnVQ?= =?utf-8?B?Qnh6eStDaUczL2lBOExIYzA4NHhNNS9QRllldFkwNkZ1WFJSMnVud3B4RkN3?= =?utf-8?B?WlhOQ3owc3FaYWdLb1c2WWN2Q0pwbUxoM3Fld2RpbDRNSzh6NG9EeHU1czdK?= =?utf-8?B?M01YdWx0KzRsakw4YkpXRkxZUW9ubzVzazY5UzBjdStEWU5JUisrNmppbytw?= =?utf-8?B?NFBnTFBobzNlbDhpaVdsZTJoYnY1aXF2Z2t6RW5qSHRpcUtwMlB3ZXdPcFV3?= =?utf-8?B?eFE9PQ==?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 995d8f05-780c-485b-be0b-08da645bedff X-MS-Exchange-CrossTenant-AuthSource: MWHPR1001MB2158.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jul 2022 23:12:03.3951 (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: RearCmgyws0Mq+ewA1xwwLrkbdJVqRsTrq1w8kAtDUVC74o0ACDPtPzkZQssRAetjKnwro8MaQaFDn68QqmR8w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR1001MB2297 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.517, 18.0.883 definitions=2022-07-12_12:2022-07-12, 2022-07-12 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 mlxlogscore=999 mlxscore=0 suspectscore=0 phishscore=0 spamscore=0 malwarescore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2206140000 definitions=main-2207120095 X-Proofpoint-ORIG-GUID: aEa4T9_aPGSoJhIuxndKvLkoCxZOPH0Y X-Proofpoint-GUID: aEa4T9_aPGSoJhIuxndKvLkoCxZOPH0Y X-Spam-Status: No, score=-13.2 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, 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.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 Jul 2022 23:12:17 -0000 On 7/12/22 8:13 AM, Jose E. Marchesi via Gcc-patches wrote: > > The kernel bpftool expects BTF_KIND_FUNC entries in BTF to include an > annotation reflecting the linkage of functions (static, global). For > whatever reason they abuse the `vlen' field of the BTF_KIND_FUNC entry > instead of adding a variable-part to the record like it is done with > other entry kinds. > > This patch makes GCC to include this linkage info in BTF_KIND_FUNC > entries. > > Tested in bpf-unknown-none target. > I am not the maintainer of this functionality, but this version looks OK to me. Thanks > gcc/ChangeLog: > > PR debug/106263 > * ctfc.h (struct ctf_dtdef): Add field linkage. > * ctfc.cc (ctf_add_function): Set ctti_linkage. > * dwarf2ctf.cc (gen_ctf_function_type): Pass a linkage for > function types and subprograms. > * btfout.cc (btf_asm_func_type): Emit linkage information for the > function. > (btf_dtd_emit_preprocess_cb): Propagate the linkage information > for functions. > > gcc/testsuite/ChangeLog: > > PR debug/106263 > * gcc.dg/debug/btf/btf-function-4.c: New test. > * gcc.dg/debug/btf/btf-function-5.c: Likewise. > --- > gcc/btfout.cc | 6 +++++- > gcc/ctfc.cc | 3 ++- > gcc/ctfc.h | 3 ++- > gcc/dwarf2ctf.cc | 4 +++- > gcc/testsuite/gcc.dg/debug/btf/btf-function-4.c | 14 ++++++++++++++ > gcc/testsuite/gcc.dg/debug/btf/btf-function-5.c | 14 ++++++++++++++ > 6 files changed, 40 insertions(+), 4 deletions(-) > create mode 100644 gcc/testsuite/gcc.dg/debug/btf/btf-function-4.c > create mode 100644 gcc/testsuite/gcc.dg/debug/btf/btf-function-5.c > > diff --git a/gcc/btfout.cc b/gcc/btfout.cc > index 31af50521da..594cba84910 100644 > --- a/gcc/btfout.cc > +++ b/gcc/btfout.cc > @@ -463,6 +463,7 @@ btf_dtd_emit_preprocess_cb (ctf_container_ref ctfc, ctf_dtdef_ref dtd) > ctf_dtdef_ref func_dtd = ggc_cleared_alloc (); > func_dtd->dtd_data = dtd->dtd_data; > func_dtd->dtd_data.ctti_type = dtd->dtd_type; > + func_dtd->linkage = dtd->linkage; > > vec_safe_push (funcs, func_dtd); > num_types_created++; > @@ -740,7 +741,10 @@ static void > btf_asm_func_type (ctf_dtdef_ref dtd) > { > dw2_asm_output_data (4, dtd->dtd_data.ctti_name, "btt_name"); > - dw2_asm_output_data (4, BTF_TYPE_INFO (BTF_KIND_FUNC, 0, 0), "btt_info"); > + dw2_asm_output_data (4, BTF_TYPE_INFO (BTF_KIND_FUNC, 0, > + dtd->linkage), > + "btt_info: kind=%u, kflag=%u, linkage=%u", > + BTF_KIND_FUNC, 0, dtd->linkage); > dw2_asm_output_data (4, get_btf_id (dtd->dtd_data.ctti_type), "btt_type"); > } > > diff --git a/gcc/ctfc.cc b/gcc/ctfc.cc > index f24e7bff948..9773358a475 100644 > --- a/gcc/ctfc.cc > +++ b/gcc/ctfc.cc > @@ -777,7 +777,7 @@ ctf_add_function_arg (ctf_container_ref ctfc, dw_die_ref func, > ctf_id_t > ctf_add_function (ctf_container_ref ctfc, uint32_t flag, const char * name, > const ctf_funcinfo_t * ctc, dw_die_ref die, > - bool from_global_func) > + bool from_global_func, int linkage) > { > ctf_dtdef_ref dtd; > ctf_id_t type; > @@ -791,6 +791,7 @@ ctf_add_function (ctf_container_ref ctfc, uint32_t flag, const char * name, > type = ctf_add_generic (ctfc, flag, name, &dtd, die); > > dtd->from_global_func = from_global_func; > + dtd->linkage = linkage; > dtd->dtd_data.ctti_info = CTF_TYPE_INFO (CTF_K_FUNCTION, flag, vlen); > /* Caller must make sure CTF types for ctc->ctc_return are already added. */ > dtd->dtd_data.ctti_type = (uint32_t) ctc->ctc_return; > diff --git a/gcc/ctfc.h b/gcc/ctfc.h > index 001e544ef08..bcf3a43ae1b 100644 > --- a/gcc/ctfc.h > +++ b/gcc/ctfc.h > @@ -161,6 +161,7 @@ struct GTY ((for_user)) ctf_dtdef > ctf_itype_t dtd_data; /* Type node. */ > bool from_global_func; /* Whether this type was added from a global > function. */ > + uint32_t linkage; /* Used in function types. 0=local, 1=global. */ > union GTY ((desc ("ctf_dtu_d_union_selector (&%1)"))) > { > /* struct, union, or enum. */ > @@ -423,7 +424,7 @@ extern ctf_id_t ctf_add_forward (ctf_container_ref, uint32_t, const char *, > extern ctf_id_t ctf_add_typedef (ctf_container_ref, uint32_t, const char *, > ctf_id_t, dw_die_ref); > extern ctf_id_t ctf_add_function (ctf_container_ref, uint32_t, const char *, > - const ctf_funcinfo_t *, dw_die_ref, bool); > + const ctf_funcinfo_t *, dw_die_ref, bool, int); > extern ctf_id_t ctf_add_sou (ctf_container_ref, uint32_t, const char *, > uint32_t, size_t, dw_die_ref); > > diff --git a/gcc/dwarf2ctf.cc b/gcc/dwarf2ctf.cc > index a6329ab6ee4..397100004c2 100644 > --- a/gcc/dwarf2ctf.cc > +++ b/gcc/dwarf2ctf.cc > @@ -644,6 +644,7 @@ gen_ctf_function_type (ctf_container_ref ctfc, dw_die_ref function, > > ctf_funcinfo_t func_info; > uint32_t num_args = 0; > + int linkage = get_AT_flag (function, DW_AT_external); > > ctf_id_t return_type_id; > ctf_id_t function_type_id; > @@ -687,7 +688,8 @@ gen_ctf_function_type (ctf_container_ref ctfc, dw_die_ref function, > function_name, > (const ctf_funcinfo_t *)&func_info, > function, > - from_global_func); > + from_global_func, > + linkage); > > /* Second pass on formals: generate the CTF types corresponding to > them and add them as CTF function args. */ > diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-function-4.c b/gcc/testsuite/gcc.dg/debug/btf/btf-function-4.c > new file mode 100644 > index 00000000000..fd3124488f5 > --- /dev/null > +++ b/gcc/testsuite/gcc.dg/debug/btf/btf-function-4.c > @@ -0,0 +1,14 @@ > +/* Test BTF linkage for functions. > + > + We expect to see one BTF_KIND_FUNC type with static linkage encoded in the > + BTF type's vlen field. */ > + > +/* { dg-do compile } */ > +/* { dg-options "-O0 -gbtf -dA" } */ > + > +/* { dg-final { scan-assembler-times "btt_info: kind=12, kflag=0, linkage=0" 1 } } */ > + > +static int funfoo (void) > +{ > + return 0; > +} > diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-function-5.c b/gcc/testsuite/gcc.dg/debug/btf/btf-function-5.c > new file mode 100644 > index 00000000000..12ee97fb5e3 > --- /dev/null > +++ b/gcc/testsuite/gcc.dg/debug/btf/btf-function-5.c > @@ -0,0 +1,14 @@ > +/* Test BTF linkage for functions. > + > + We expect to see one BTF_KIND_FUNC type with global linkage encoded in the > + BTF type's vlen field. */ > + > +/* { dg-do compile } */ > +/* { dg-options "-O0 -gbtf -dA" } */ > + > +/* { dg-final { scan-assembler-times "btt_info: kind=12, kflag=0, linkage=1" 1 } } */ > + > +int funfoo (void) > +{ > + return 0; > +} >