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 9FE7F3848E37 for ; Tue, 13 Dec 2022 18:44:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 9FE7F3848E37 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 2BDIiHPZ000427 for ; Tue, 13 Dec 2022 18:44:56 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=W4J7gIeizAAhXfflrY/7p03L/Sr4xMOVevjG00RSjVM=; b=tPFKUtmRZQChzsgYTy+orO3jXR3TQU9Z8N0LFmFuCSe+L2gJR3scTo3Bxxwee+/piXPv mvF4TR3HdxwzaFp/lW1CDhJbGutN8M2qSoVXc0o3RpaKftSsoO7//RXCX06leJOvZsvF WsR5/rYNJ9CaGVNfklBxSSy5WCHPvNzJhrIAf2Xmjrf2Yb7aA0am3OJeWgwMlvJC99mh tbbY4fTDVVU2lrrNeazAAZWX72lCLr+vddhxO8VEvDfRIl8lj1o3Iu8MQUwNjLhRVcCp i1ke1sR2uPKDLERA6TIpTbpE3P/ZaSP8i1VggDAh0pekCGnzrcJm8uHzdpdABMo1VKtb Qw== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3mcgq0e7cm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Tue, 13 Dec 2022 18:44:56 +0000 Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2BDI0M2B006615 for ; Tue, 13 Dec 2022 18:44:55 GMT Received: from nam10-mw2-obe.outbound.protection.outlook.com (mail-mw2nam10lp2101.outbound.protection.outlook.com [104.47.55.101]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3mcgj68y2q-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Tue, 13 Dec 2022 18:44:55 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=k8IXc1ONNSEjKs8VK1OBEQS/9mZ3QXd8z1ShSoNEGABUqzL/TvPxG7zs8utZDgsnsMPrrpeiSIekaTl5889N9eptNMXi5ES1GiUruBQx9GukgVz5gFSgKvJPekAHY6jpWDGRFsKLI/AI06k72JMh+88WmwUSJC/aU9U/CkYYZbGzaLFctYaRxwRUDhNiUFzFX0TtX0AvbDb52ZimojtktRw6yXy82Dsxo1oJAtLkTesk/sGzy7GySzMmhFqW0hqRAa35JH4k/R0r9tHS5OLvCtRXUEcpU2roBRDfN8UV1Jijr3DIo1DRfNe8I5GPRT9WtjQDV2WLQDtGNSL8NifgJw== 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=W4J7gIeizAAhXfflrY/7p03L/Sr4xMOVevjG00RSjVM=; b=INrWdoB9FDh5qBV3qLp6YD/6kORIX05Xg7EEaaHRA0tvpxJ702Zwui2tN7XDZBdFi/mTaWscIOq/pPKSASufu+WdH7jXfKIOW9tMNjwH2D7dYnjXXTidMEs+YUO9HBuSnXdDPGu8pEmWc5NhumVwYWXxkI+r4izVW6XviOQyo2AK1M2ZmHk9+ceudVJ3F4vK6TOkRjayF9mGNyu87nhHXB+4GSnJ984V/kJxHJ9yXOfOg87Ue04o7Ms5jO+tRhKmtZpnwxfJThyyXOUZBgAjW90CQW40Ye10SVPBtfrRzBsAuaGzTGQsYTiTIwyedb5p6XBQHQxd10DV/+57obWeXQ== 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=W4J7gIeizAAhXfflrY/7p03L/Sr4xMOVevjG00RSjVM=; b=eLYxVJ5W4ll7WY+pdZzmLvupQz8UHAEXRBMee92aFqqGYGA5k8mBuD+rmuFssHBLK4Wlm8+2mNk/QRIj+Tp6fRoyH0UQSbUxE1n9AODLAC72mKbrltoBv6rTaG7abB4tmDXCf4w9q0KyM15Pe0ffJMzIe+w69LTyvWD1EwO3DeQ= Received: from MN2PR10MB3213.namprd10.prod.outlook.com (2603:10b6:208:131::33) by CY8PR10MB6442.namprd10.prod.outlook.com (2603:10b6:930:62::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5880.19; Tue, 13 Dec 2022 18:44:53 +0000 Received: from MN2PR10MB3213.namprd10.prod.outlook.com ([fe80::dd41:a422:5763:8848]) by MN2PR10MB3213.namprd10.prod.outlook.com ([fe80::dd41:a422:5763:8848%7]) with mapi id 15.20.5880.019; Tue, 13 Dec 2022 18:44:53 +0000 From: David Faust To: gcc-patches@gcc.gnu.org Cc: indu.bhagat@oracle.com Subject: [PATCH v2 1/3] btf: add 'extern' linkage for variables [PR106773] Date: Tue, 13 Dec 2022 10:44:24 -0800 Message-Id: <20221213184426.8861-2-david.faust@oracle.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221213184426.8861-1-david.faust@oracle.com> References: <20221213184426.8861-1-david.faust@oracle.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: SJ0PR05CA0107.namprd05.prod.outlook.com (2603:10b6:a03:334::22) To MN2PR10MB3213.namprd10.prod.outlook.com (2603:10b6:208:131::33) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN2PR10MB3213:EE_|CY8PR10MB6442:EE_ X-MS-Office365-Filtering-Correlation-Id: e115277e-6d77-412e-af51-08dadd3a1f40 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: I1vvkcZMCmuEHZI5Bn7NnpXYN72UDgG5iBD7MITPKmhXNYMMsUOJf8r2GuLOytKEFPW45u5kHC1k3ii2Zd+abBtdhc32iwdzzHI82L6G56g2eh83GK3IXXV2vHQLCi1C1tGzcD0YxPofiovHsGKMKi73mXgoZVi594CC7kge9KhGMewpSCdZPADkPG3hTsv9eHCotNXwLK3i7sK/hP7DmHN+tKWJsPUH9UXhP8WQvQNzdqMTfrvHZcQvlNPGo69/SXvl1q4W1BOSzTFsyJlJG8ukh4/j+HP+2EY1EcP60SoTzYA51Pmx/k0i4eKsZmJBUgH8srmOjaKBUSV2YhrK7SlwY2TQV/YCjLxap2fLqN4ZpW5pIcxqZr9PNcx+qdJBwMhCD0ffHVA5IMn7CzBPDqw/WgbhoSZ9tcleasTnW45qKYXcQOqLYsoV9HTRTAW3suF++9ij4Z9jSUEGFHXMYL8jcdj9DW1/pTDfx2iFrkmGhEO0ksdUD3/TjLBfXPymlz6wzHU02IO5sSR9nSRqEyKXbiNnj2fTGpWJA6FLznJxLXLe6CwmkUUNqx2JxCABmomRrk5l1XmPQYj1Bn1e2Wecw03fF9wIp7x4TyxLOhrIDz3zWe/hnoFHAULDKZkT77tJ/AT6TJ//dfssueiFIN9rtWGbae6HGDqoreW6v0JTJvAeDhLul79pUhfFiH+Ub8LAItwUEO+GIGgn0sId4w== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR10MB3213.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(396003)(39860400002)(366004)(346002)(136003)(376002)(451199015)(83380400001)(66476007)(41300700001)(86362001)(8936002)(38100700002)(66556008)(4326008)(5660300002)(66946007)(8676002)(44832011)(316002)(2906002)(107886003)(186003)(26005)(6506007)(6916009)(1076003)(6666004)(2616005)(6512007)(6486002)(478600001)(36756003)(84970400001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?a4LqTQmc0ZWYBoOeVxap1pKDAJtwuXtve3HgSI4FjQwYLu5/LR3O6EWVguDr?= =?us-ascii?Q?WhceyWfxV9o6nKlyYE3GE+Pr5Z/Om5L6On0RvllA602MSv6wGnsDkudu0ixC?= =?us-ascii?Q?JC36pjnf3bTfDo9f/alymooVeNN9IXeW0ALMorYCd5Bi3HZZZSdVZMstAstn?= =?us-ascii?Q?+SfQADEvW67XawO6gzVia6nZ3TX1LeeZJJ06wVVL0K8MhoVTGA18S/p/eNUK?= =?us-ascii?Q?0tSxej+QbTGC/nXDCVgN0PHs1tYkaMV5M+MnDXSBMXzrNtiibjiA6H+Vo5Et?= =?us-ascii?Q?MnSLaGIm/qOCH/7eP4Pn7ZtcIwvGLw4+tNKAcyTVpOkEb9TvAZeVQighVeEt?= =?us-ascii?Q?ghDMHveCExi8YxdutIRQOLMixSLXsLgtNxGMu5UzWAFAtVM5vjoaYXJ4q9Zw?= =?us-ascii?Q?uxzzr2GlSLOZ4yJvRwyJJJrbJvUoCFQuCO1ajujYZSzmEBroqRd2qVUo78p5?= =?us-ascii?Q?0kmfoVfTVNzTuCxW92MBOlDHQVtZEBc8aBok2fxi8xHNVv6dK3wN5vWUIuDk?= =?us-ascii?Q?DbOKPQu0IGDPVK1JzJ71FooLKkM45ATkbyLFGaAYc7yNAgIxelLfhcI5n3iX?= =?us-ascii?Q?+Eat6a10Da9lSn3p6nvzZVhCXKSWwTsxlXBHSIQtYtcS/jkkLapDOWra5nPY?= =?us-ascii?Q?XSCnIliUbwXUHrsPHMRakYUsgXKIRxl2t5j6OSvQIrXX5ox+T68WCgHRSwXy?= =?us-ascii?Q?xfdlMS72a/h4Lzzz6K8tHBasfayo+esf/09/4mYvAX5/yABR16g6cX5ZVlkt?= =?us-ascii?Q?3b1kBxsnDiGI1zzmcrIXEWvhxEyOKSRneFAkVurgXuQg0WIQIah4/o4QI29O?= =?us-ascii?Q?/RTUS2ITE/vO3u3qxyFkcED/bC/CVmnTkrPuk/cXEwWuMWctjqbRm6WMhMF9?= =?us-ascii?Q?yn974Xe/lu7DlpwwJvbidFQLKa8GTXJz0ujw6BYLNJSRo5xNr1ASqZgSZ6sX?= =?us-ascii?Q?DC4Y/SnkmuYDTARzeRrdbB0ZFqG17RMu/zIb9oIYeF5ktk+MC5AQFTE44soX?= =?us-ascii?Q?Y3cs2SDp+nKiD56vjTPrkjXgkKkOKSOJQ9OMS2YvyGujcJan2m2rOiFyyDqU?= =?us-ascii?Q?qRUz1xW1gVZLsdszRHDuvb2FweWZk8FmdelazkPfTKGMsEWJlxW1bzdfcmz0?= =?us-ascii?Q?Hi8AP6DEk4e8Oj3Wx5zJYyYV9cmoYq5QS2gelegzspCT3AtlytsKtmT0pYt5?= =?us-ascii?Q?TMbPBV8LCi+kreLGy8IaA+3dxrC79io1+CGYHkR9Ame9CuosbK/LqBFPq0U/?= =?us-ascii?Q?2Okr9pXHxsIkDCfY/p+xYio/PGvRfY48r50WLIYxfyRB9uekQz866Lu1dkD3?= =?us-ascii?Q?j9lbm2n/Sb9NlgjZ4NQLvF4Fusg2++Z95MWkGbOMsaJhZqduvyd+zOoqBfn0?= =?us-ascii?Q?ezxflAUed3GCJOlB3AH2prMjIpcUyEdN0TC/WGiK7ZdK+Pt38/CtFrAKaZ6D?= =?us-ascii?Q?k4rgMCmX8JJVB7SgDucAlJVpOauli0XSxGt6v5RohCGhNJMWiT42orS6F/WC?= =?us-ascii?Q?L9UjNrtOTCYzdlPcZyHqRV66q1c8XcvVkB6tDHEEBAGQKBbl6Wr+Nl0uunxm?= =?us-ascii?Q?y8HgcuWSmS0XeVwDMHJUwAE6v1kD7WHsF6n8dc0b?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: e115277e-6d77-412e-af51-08dadd3a1f40 X-MS-Exchange-CrossTenant-AuthSource: MN2PR10MB3213.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Dec 2022 18:44:53.0239 (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: Ty+kPF+d0oVOk75J5tlB+DLku1lWm/zOuuWXnPKYGlDBuWNTqxAAvw85bQ1TaIREdr4e/iwelFm1XewLsTzYVw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR10MB6442 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-13_03,2022-12-13_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 spamscore=0 mlxlogscore=999 adultscore=0 malwarescore=0 phishscore=0 bulkscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2212130164 X-Proofpoint-ORIG-GUID: lCKeFLeWhI9USsTD2V7PfbOaupkEem-_ X-Proofpoint-GUID: lCKeFLeWhI9USsTD2V7PfbOaupkEem-_ 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,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: [Changes from v1: - Add enum btf_var_linkage in include/btf.h and use that instead of local #defines. - Fix BTF generation for extern variable with both non-defining and defining decls in the same CU. Add a test for this. ] Add support for the 'extern' linkage value for BTF_KIND_VAR records, which is used for variables declared as extern in the source file. This also fixes a bug with BTF generation for extern variables which have both a non-defining declaration and a defining declaration in the same CU. PR target/106773 gcc/ * btfout.cc (btf_collect_datasec): Mark extern variables as such. (btf_dvd_emit_preprocess_cb): Skip non-defining extern variable decl if there is a defining decl for the same variable. (btf_asm_varent): Accomodate 'extern' linkage. gcc/testsuite/ * gcc.dg/debug/btf/btf-variables-4.c: New test. * gcc.dg/debug/btf/btf-variables-5.c: New test. include/ * btf.h (enum btf_var_linkage): New. (struct btf_var): Update comment to note 'extern' linkage. --- gcc/btfout.cc | 11 ++++++++- .../gcc.dg/debug/btf/btf-variables-4.c | 24 +++++++++++++++++++ .../gcc.dg/debug/btf/btf-variables-5.c | 19 +++++++++++++++ include/btf.h | 11 ++++++++- 4 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/debug/btf/btf-variables-4.c create mode 100644 gcc/testsuite/gcc.dg/debug/btf/btf-variables-5.c diff --git a/gcc/btfout.cc b/gcc/btfout.cc index aef9fd70a28..677e8324424 100644 --- a/gcc/btfout.cc +++ b/gcc/btfout.cc @@ -314,6 +314,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_VAR_GLOBAL_EXTERN; if (section_name == NULL) { @@ -431,6 +434,12 @@ btf_dvd_emit_preprocess_cb (ctf_dvdef_ref *slot, ctf_container_ref arg_ctfc) { ctf_dvdef_ref var = (ctf_dvdef_ref) * slot; + /* If this is an extern variable declaration with a defining declaration + later, skip it so that only the defining declaration is emitted. + This is the same case, fix and reasoning as in CTF; see PR105089. */ + if (ctf_dvd_ignore_lookup (arg_ctfc, var->dvd_key)) + return 1; + /* Do not add variables which refer to unsupported types. */ if (btf_removed_type_p (var->dvd_type)) return 1; @@ -676,7 +685,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/gcc/testsuite/gcc.dg/debug/btf/btf-variables-5.c b/gcc/testsuite/gcc.dg/debug/btf/btf-variables-5.c new file mode 100644 index 00000000000..8aae76cacab --- /dev/null +++ b/gcc/testsuite/gcc.dg/debug/btf/btf-variables-5.c @@ -0,0 +1,19 @@ +/* Test BTF generation for extern variable with both non-defining and + defining declarations. + + In this case, only a single variable record should be emitted, + with 'global' linkage. However two array types will be generated. */ + +/* { dg-do compile } */ +/* { dg-options "-O0 -gbtf -dA" } */ + +/* Expect 1 variable with global (1) linkage. */ +/* { dg-final { scan-assembler-times "\[\t \]0xe000000\[\t \]+\[^\n\]*btv_info" 1 } } */ +/* { dg-final { scan-assembler-times "\[\t \]0x1\[\t \]+\[^\n\]*btv_linkage" 1 } } */ + +/* Expect 2 array types, one of which is unsized. */ +/* { dg-final { scan-assembler-times "\[\t \]0x4\[\t \]+\[^\n\]*bta_nelems" 1 } } */ +/* { dg-final { scan-assembler-times "\[\t \]0\[\t \]+\[^\n\]*bta_nelems" 1 } } */ + +extern const char FOO[]; +const char FOO[] = "foo"; diff --git a/include/btf.h b/include/btf.h index eba67f9d599..da621353aa1 100644 --- a/include/btf.h +++ b/include/btf.h @@ -178,11 +178,20 @@ struct btf_param uint32_t type; /* Type of parameter. */ }; +/* BTF_KIND_VAR records encode linkage information in a single + trailing struct btf_var. These are the supported values. */ +enum btf_var_linkage +{ + BTF_VAR_STATIC = 0, + BTF_VAR_GLOBAL_ALLOCATED = 1, + BTF_VAR_GLOBAL_EXTERN = 2, +}; + /* BTF_KIND_VAR is followed by a single struct btf_var, which describes 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, -- 2.38.1